AI 工具使用指南

只按用户的目标和授权范围操作。工具名称、参数及限制以当前已加载的 tools/list 为准;包内 tools.json 是该发行版的对应参考。无需预读全部工具或所有文档。

每个任务按这条顺序

  1. 调用 ssh_list_servers,找到用户指定的目标,复用返回的 name。不要从本机 .ssh、旧笔记、猜测的 IP 或其他机器替代它。
  2. 按下面的选用表选择工具,读取该工具的用途、Inputs、Result 和字段说明。
  3. 先拿到所需服务器名、路径、设备 ID、当前 revision 或上一步回执,再填写参数。示例值只展示格式,不能直接当作真实目标。
  4. 调用后先判断失败、部分成功、排队或未知状态,再决定下一步。不要看到 MCP 请求返回就说业务完成。
  5. 完成实际目标验证,关闭这次创建且已经用完的命令上下文和临时隧道。保留用户原有会话、文件、身份和无关配置。

按需求选工具

用户要做什么 选哪个 容易选错的边界
查有哪些服务器 ssh_list_servers 只列目录,不证明 SSH 可登录
一台机器执行命令 ssh_execute server 是目录名称;命令使用目标系统的 shell
多台机器执行同一命令 ssh_execute_group 独立任务用 parallel;有依赖才串行;逐台判断结果
从本机传一个已有文件 ssh_upload localPath 属于运行连接器的电脑
同一目标传多个已有文件 ssh_upload_batch 每文件原子替换,整个批次不回滚
下载到本机保存 ssh_download remotePath 是源;localPath 是本机完整目标文件名
只看远端文本 ssh_read offset 从第 1 行开始;不是字节偏移
改远端文件中的一段 ssh_edit 先读取;精确文本匹配;不带显示出来的行号
创建或覆盖整份文本 ssh_write content 是全文件内容,不是追加片段
分发目录或双向同步 ssh_sync 每端明确 server/root,先 dryRun;删除默认关闭
查连接故障或更新状态 ssh_connection_status 强制 reconnect/disconnect 影响共享池,状态查询优先
查或修复路径、跳板、受管资源 ssh_route_inspect → ssh_route_plan → ssh_route_apply 计划保存不等于已应用;应用失败先查同一 planId 回执
部署或配对原生节点 ssh_node_manage inspect 身份后再配权限;保存与加载版本分别检查
临时 SSH 端口转发 ssh_tunnel_create 隧道归当前客户端;持久受管转发走节点/路由工具
集群持续观测或自动选路 ssh_cluster_* 先配置执行器与观测;自动改路/repair 默认不授权

Windows 目标的通用操作使用 ssh_execute 配合 PowerShell。systemctl、ps、tar、cron 和数据库 CLI 包装依赖远端 POSIX 环境及已有程序,不能因工具存在就假设 Windows 也能执行。

路径、ID 和单位

值 属于哪一端 / 从哪里取得
localPath / 部署 files[].local 运行 MCP 连接器的电脑。Windows 示例 C:/Users/me/file.txt
remotePath / cwd / 部署 files[].remote server 所指的远端机器
同步端点 root 同一个端点对象的 server;必须为绝对目录
@local 仅在明确支持它的节点/同步字段中表示当前连接器;不是通用 SSH 服务器名
device / sourceDevice 节点 inspect/discover 返回的设备 UUID;不是服务器显示名
sessionId / id / planId / jobId 对应创建/查询工具的返回值,不能互换或自行编造
expectedRevision 对应对象最近 inspect 或 plan 返回的版本;创建某些对象用 0,按工具说明执行
timeout 毫秒:10000 = 10 秒,30000 = 30 秒。普通命令的 0 会关闭命令期限,连接建立仍有独立限制;通常省略以使用默认值
同步超时 options.timeout,整个同步操作的毫秒期限;不要写到根层;0 无效
探测 RTT 微秒;样本时间/周期通常为毫秒,文件授权 expiresAt 明确为 Unix 秒

中心只协调目录。文件仍沿当前设备配置的直连、跳板或原生路径传输。中心模式下,目录的 key_path 在中心一侧解释;不能把新电脑上的文件路径当作中心能读取的路径。ssh_key 是旧版路径别名,不是私钥正文。

如何判断结果

返回状态 正确的下一步
isError=true、success=false 或非零 code 看具体错误与已产生的效果;修复该原因,不把 RPC 返回当成功
批量操作有成功也有失败 检查每项,只重试确实失败且状态已明确的目标;成功项可能已经改变
超时、断开、unknown / 结果未知 先查远端状态或回执;部署、导入、写入不能盲目重放
saved / 安装或配置已写入 再查 loaded、实际进程/版本和一次真实目标操作
返回 planId 仅生成计划;审阅后才 apply,不提前宣称路由已变
返回 jobId / queued 去 cluster inspect 的 jobs 查看终态;排队不是执行完成
deferred 更新等待业务空闲;结束自己已用完的上下文/隧道,不强杀用户应用
stale / unknown 观测 缺少新鲜证据;与一次真实失败分开处理
服务查询 success=true,但 output 为 inactive/failed 查询本身成功,服务没有正常运行

content[].text 有时是可解析 JSON,有时是普通文本。只有实际存在的字段才可读取;不要假设所有工具都返回同一 JSON 结构。文件写入、服务启动和用户实际功能正常是不同验收层。

几项旧接口的实际能力

原生节点/跨机同步的详细前置读 NATIVE_SYNC.md,集群任务读 CLUSTERS.md,安装和版本更新读 UPDATES.md。遇到真实 NAT 不可达、缺权限或缺必要资料时,明确说明实际阻塞,不承诺自动穿透或擅自扩大授权。