CLI 智能体
启动、监督并审阅你的外部 CLI 编码智能体——预设、状态推断、diff 与通知。
Cordy 编排你已经在用的外部 CLI 编码智能体。它把它们启动进工作区终端,从它们的输出中推断状态,收集它们所做的改动,并在它们需要你关注时通知你。AI 本身的工作它一概不做:每个智能体都在各自的进程中、用各自的密钥,与各自的提供商通信。Cordy 不持有任何 API 密钥,也从不读取智能体的 prompt 或响应。
自带你的智能体
Cordy 不捆绑也不安装任何智能体。请完全按照各智能体自身文档的说明来安装并认证它——用它自己的账户、提供商、模型与密钥——使得在终端里运行它的命令本就可行。然后 Cordy 便能替你启动它。
Cordy 开箱内置六个智能体的预设:
| 智能体 | 预设命令 |
|---|---|
| Claude Code | claude |
| Codex CLI | codex |
| Cursor Agent | cursor-agent |
| Gemini CLI | gemini |
| Copilot | copilot |
| OpenCode | opencode |
每个预设都以默认参数启动其命令,并以工作区的 CodeTarget 作为工作目录。有些预设会传入较为宽松的默认参数,使智能体能在更少打断的情况下工作——例如 Claude Code 以 claude --permission-mode acceptEdits 启动。你可以查看并修改某个预设的参数,以匹配你愿意授予多大的自主权。若某个智能体的命令不在你的 PATH 上,启动会像你自己运行它一样在终端里失败——安装或认证该智能体后再试。
启动一个智能体
启动智能体有两种方式,它们的行为并不相同。
受监督的启动(tracked launch)
受监督的启动会经过 Cordy 的运行时监督器,因此智能体会获得状态徽章、活动面板与通知。可从以下任一入口发起:
- 工作区标题栏中的 Agent 按钮,它会打开预设选择器;
- 启动智能体选择器 快捷键
Cmd/Ctrl+Shift+A;或 - 命令面板(
Cmd/Ctrl+K)→ Agent 分组 → "Launch <智能体>"。
智能体运行在一个工作区终端会话中,其工作目录设为该工作区的代码路径。由于每个基于 worktree 的工作区都是隔离的,把智能体分别启动进不同的工作区,就能让它们并行工作而互不冲突——见 核心概念。
从终端预设条快速启动
终端标签栏上还有一条预设条,是一排快速启动按钮。点击其一会打开一个新的终端标签页,并替你输入生成好的命令。这是一种快速起步的便利方式——它不受监督,因此没有状态徽章、活动面板或通知。当你希望 Cordy 观察智能体时,请使用受监督的启动。
实时状态
对于受监督的启动,Cordy 通过监视智能体终端输出中的模式来推断其状态,并以徽章形式展示:
| 状态 | 徽章 | 含义 |
|---|---|---|
launched | Agent: launched | 进程已启动;尚未见到决定性输出。 |
running | Agent: running | 智能体正在活跃地产生输出——工作中。 |
waiting_for_input | Agent: waiting for input | 智能体正在向你提问,被你的回应所阻塞。 |
idle | Agent: idle | 仍在运行,但已安静一段时间(在预设的空闲窗口内无输出)。 |
exited | Agent: exited | 进程已结束。 |
failed | Agent: failed | 匹配到失败模式(例如认证或配额错误)。 |
状态跃迁由模式匹配与超时驱动:running 模式将 launched → running;waiting 模式将 running → waiting_for_input;任何新输出都会把 waiting_for_input 或 idle 拉回 running;超过空闲窗口的静默将 running → idle;failure 模式转为 failed;进程结束则转为 exited。该设计有意宁可漏判一次跃迁,也不做错误跃迁,因此请把状态当作有用的提示,而非契约。
活动面板
智能体活动面板会显示运行中智能体的预设、进程 id、终端会话,以及一小段证据——具体匹配到的行、启发式原因,或退出码,用以解释 Cordy 为何判定为当前状态。它还带有一个 Kill agent(终止智能体) 控件。该面板从不展示智能体的原始输出:只展示每次状态变化背后的那一小片证据,且这些证据保存在内存中、绝不写入磁盘。见 隐私。
审阅智能体的改动
由于惯例是"每个智能体占一个基于 worktree 的工作区",一个智能体的工作会体现为该工作区 CodeTarget 的 Git 改动。Git 面板会聚合这些改动,让你把它们作为一个整体来审阅:
- 跨已暂存、未暂存与未跟踪文件的 +/− 汇总;
- Staged Changes(已暂存)、Changes(改动) 与 Untracked Files(未跟踪) 分区;
- 每个文件的 打开 diff、暂存 / 取消暂存 与 丢弃;
- diff 查看器内的逐块(hunk) 暂存与丢弃,以及一个内联提交表单;以及
- 针对同一 worktree 的 fetch / pull / push。
Cordy 会监视该 worktree 的改动并自动刷新。完整的 Git 工作流见 工作区。
通知
当某个智能体在你注意力不在时改变了状态,Cordy 会通知你:
| 事件 | 通知 | 级别 |
|---|---|---|
| 智能体开始等待输入 | "Agent needs input" | warning |
| 智能体匹配到失败模式 | "Agent failed" | error |
| 智能体在运行至少约 30 秒后退出 | "Agent finished" | info |
在约 30 秒内就退出的智能体不会产生"已完成"通知,以抑制来自快速失败启动的噪声。针对同一智能体的通知会被限流为每隔几秒至多一条。
通知以何种方式送达,取决于 Cordy 的窗口焦点:
- 只要 Cordy 处于打开状态,每条通知都会以应用内 toast 的形式出现,无论是否聚焦。
- 只有当 Cordy 窗口未聚焦时——隐藏、最小化,或(在 Windows 上)收起到托盘——才会发送操作系统系统通知。
若操作系统拒绝通知(权限被拒),Cordy 会展示一次性的应用内警告;只要应用处于打开状态,你仍能收到应用内 toast。通知会标识对应的智能体运行,但点击通知目前并不会带你跳转到该智能体或工作区。
自定义预设
你可以为任意命令注册自己的预设——另一个智能体、一个包装脚本,或某个内置智能体的特定调用方式。从智能体选择器中打开 Register custom preset(注册自定义预设)(或在设置中新增一个),并提供:
- 一个显示名称与要运行的命令;
- 可选的默认参数(每行一条)与环境变量覆盖(键/值对);
- 可选的状态检测模式——running、waiting-for-input 与 failure 模式,外加一个空闲超时;以及
- 工作目录,它始终是工作区的代码目标。
由于预设会以你的完整用户权限、在没有沙箱的情况下运行真实命令,Cordy 会把确切的命令行展示给你确认——批准文案为"I authored this preset and own the command(我编写了该预设并对该命令负责)"。自定义预设存储在你本地的用户数据目录中。
当前限制。 自定义预设会以你的命令、参数与环境启动,但其状态检测模式尚未应用于实时推断。因此,以自定义方式启动的智能体会一直显示为
launched,直到它退出,而不会经历running与waiting_for_input的跃迁。内置预设则具备完整的状态推断。
Cordy 不做什么
为把边界讲清楚:
- Cordy 不内嵌聊天机器人,也不调用任何语言模型。
- Cordy 不持有你的提供商 API 密钥——每个智能体从各自的环境或配置中读取自己的密钥。
- Cordy 不读取、存储或代理智能体的 prompt 或响应。
- Cordy 不拦截智能体自身的批准提示(对文件写入、shell 命令或工具调用的批准)。那些完全留在智能体内部、经由它自己的终端进行。Cordy 自己的确认仅覆盖 Cordy 层面的操作——启动自定义命令、运行工作区 setup/teardown 脚本,以及提交或丢弃改动。