TDSF Terminal Agent

Terminal · SSH · AI Agent

AI Agent 在真实终端
每一步都可核对

本地 / SSH / WSL 终端与 AI 运维 Agent 在同一个工作台。命令按人味节奏逐字写入真实 shell、 在提示符处回显,终端输出回流到对应工具卡;写操作过影响分级与人工审批,你敲任意键立刻接管。

25
内置运维工具
8
内置 Linux 运维技能
15
深浅色终端主题

Execution Loop

从一句话到一条真实命令,中间没有黑盒

Agent 不是"生成命令让你复制"。它把命令写进当前会话的 PTY / SSH 通道,由远端 shell 自行回显, 再把真实结果关联回对应的工具卡。

01 / 感知

先确认环境

当前工作区、连接的主机、发行版家族、终端最近的输出与命令块,在每轮对话前进入上下文。

02 / 思考

规划可见

多步任务先建任务清单并实时同步到对话顶部;循环期间显示"第 N 轮 · 已用工具 M"。

03 / 行动

写进真实 shell

可视模式下命令逐字符写入终端,在提示符处回显;也可选择后台 SSH 通道执行。

04 / 验证

写后必核

写操作后要求只读复核;输出、退出码与耗时进入证据链,非零退出码一律按失败上报。

05 / 记忆

沉淀到工作区

同一工作区内的对话共享长期记忆:会话摘要与排障案例写回知识库,同类问题自动召回。

Trust Modes

一个开关,决定 Agent 能动手到什么程度

模式不只是提示词约束:观察模式在 schema 层移除写类工具,模型无法调用它从未拿到的工具。

模式 Agent 能做什么 适用场景
观察 只读分析;写类工具从工具集中移除 生产巡检
确认默认 全量工具;已识别的只读查询直接执行,未知与状态变更类逐条弹出审批卡 日常运维,人在回路
自动 低危(L0–L2)直接执行;L3/L4 高危仍需审批,硬底线不可绕过 可信沙箱
教学 观察模式权限 + 教学界面;单步命令卡,一次一条,真实结果返回后继续 课堂与自学

Capabilities

运维要用的部分,都在同一个窗口里

终端、远程主机、AI 助手、知识库与教学流程共享同一份环境上下文,不需要在工具之间搬运信息。

01

Agent 运行时

  • Strands Agents 驱动的唯一 main Agent;工具注册表是实现、Schema 与策略的单一真源
  • 25 个内置工具:SSH 执行、远程文件读写、日志分析、进程检查、网络诊断、服务 / 软件包 / 防火墙管理、安全审计、性能分析、知识检索、配置比对、备份恢复、Python 执行等
  • 单轮工具调用上限 50 次 + 连续失败 3 次熔断
  • LLM 不可用时降级为只读提示;10 分钟无输出自动中止本轮,会话可继续
02

SSH 服务器管理

  • 纯 Rust SSH 客户端(russh);密码 / 公钥认证,凭据存入系统密钥库
  • TOFU 主机密钥校验:未知主机弹审批,密钥变更告警
  • SFTP 浏览与编辑、拖拽上传、跟随 cwd 的远程文件树
  • 本地 / 远程 / 动态(SOCKS5)端口转发;服务器实时监控(CPU、内存、磁盘、网络、进程)
03

安全边界

  • 当前使用 L0 / L2 / L3 / L4 影响分级(L1 保留兼容);未识别命令按高危险处理
  • 灾难性操作硬底线黑名单:直接拦截,不提供审批选项
  • 同会话审批 FIFO:上一条命令未返回前不展示下一条审批卡
  • 输出脱敏后才进入界面、模型上下文与日志;SSH 退出码作为结果硬边界
04

本地知识检索

  • 索引本机已有或用户导入的文档与笔记,内容量以设备上的实际数据为准
  • 会话摘要与成功排障案例可按工作区标签保存,并供后续检索
  • SQLite FTS5 关键词 + sqlite-vec 向量语义混合检索,RRF 融合排序
  • 检索在本地运行;Agent 推理仍依赖配置的模型服务,本地模型除外
05

工作区与会话

  • 工作区是隔离单元:每个工作区保存自己的窗口、标签页与环境(本地 / WSL / SSH)
  • Agent 按工作区隔离:对话只看到所属工作区的环境与主机
  • 本地记忆按工作区标签隔离,后续对话可检索已保存的摘要与成功案例
  • 未绑定工作区时 Agent 不运行,先建工作区再开对话
06

终端与编辑器

  • 本地 PTY / WSL / SSH 终端共用 xterm.js 渲染池,支持分屏与多标签
  • 命令预测:内置 spec 索引 + carapace 参数补全 + 中文 tldr 描述 + 远端命令集
  • CodeMirror 6 编辑器 + LSP、远程文件编辑
  • 离线选词翻译、命令片段(Snippets)、15 套内置主题

Safety Model

"AI 说它成功了"不作为事实

拦截、审批、熔断与脱敏是四条独立防线,任何一条都不依赖模型的自觉。

  • 硬底线优先:黑名单命中即拦截,无法通过换写法绕过。
  • 确认模式默认开:写操作逐条审批,审批卡展示真实命令、用途与影响分级。
  • 退出码即事实:非零或缺失退出码按失败上报,不谎报成功。
  • 证据可核验:工具调用按"收集 → 执行 → 验证"分组展示,证据来自真实工具事件。

In Action

完整链路演示

连接服务器 → Agent 逐字写入命令 → 审批放行 → 真实输出回流工具卡 → 教学模式单步执行。

演示视频位
把视频放到 website/assets/video/demo.mp4 即可在此播放
  1. 新建 SSH 工作区并连接服务器
  2. 对 Agent 提出排障需求,命令逐字写入真实终端
  3. 审批卡出现 → 确认执行
  4. 远端输出回流到工具卡
  5. 资源树跟随 cwd、拖拽上传文件
  6. 切换教学模式,单步命令卡执行

视频与封面放置说明见 website/assets/video/README.md。

Architecture

三进程分离,各管一层

系统级能力留在 Rust,交互留在前端,AI 推理与知识检索放在可独立重启的 Python 进程。

React 19 Agent 面板 · 终端 · 工作区 · 编辑器(TypeScript · Vite · Tailwind v4 · zustand) 交互与可视化
│ Tauri invoke / events
Rust(Tauri 2) PTY · SSH / SFTP · 端口转发 · 打字机引擎 · sidecar 监管 唯一系统执行面
│ JSON-RPC over stdio
Python sidecar Strands Agent · 工具注册表 · 审批 · 知识库 · 证据链 可独立重启
Tauri 2 React 19 TypeScript xterm.js CodeMirror 6 russh russh-sftp portable-pty keyring Strands Agents SQLite FTS5 sqlite-vec

Verification

自动化门禁与原生验收分开

测试数量会随实现变化,不把某一次运行的固定数字当成功能指标。

门禁 范围 发布要求
pytestPython sidecar(Agent、工具、审批、知识库)完整套件通过
vitest前端状态、交互与渲染契约完整套件通过
cargo testRust 壳(PTY、SSH、打字机、隧道)完整套件通过
tsc / eslint类型与静态检查零错误、零警告
待原生桌面验收(需要真实 SSH 服务器与已保存的连接配置): 连接与历史恢复、同会话审批 FIFO、教学命令的成功 / 非零退出 / 超时 / 并发卡片闭环、发行版感知补全。

Get Started

从源码运行

环境要求:Node.js ≥ 20、pnpm ≥ 9、Rust stable、Python ≥ 3.12。

# 1. 安装前端依赖
pnpm install

# 2. 启动桌面应用(首次编译 2–5 分钟)
pnpm tauri:dev

# Windows 用户可直接双击
启动.bat
  1. 配置模型:设置 → 模型,填入 API Key(DeepSeek / 智谱 / 通义 / Kimi / 豆包 / Ollama / 自定义 OpenAI 兼容端点)。
  2. 新建工作区:本地、WSL 或 SSH 服务器;SSH 凭据保存在系统密钥库。
  3. 在工作区内新建对话:Agent 只看到该工作区的环境;同工作区的对话共享记忆。

当前提供源码运行方式;打包好的安装包尚未发布,请在 GitHub 仓库 关注后续发布。