CLI 智能体

启动、监督并审阅你的外部 CLI 编码智能体——预设、状态推断、diff 与通知。

Cordy 编排你已经在用的外部 CLI 编码智能体。它把它们启动进工作区终端,从它们的输出中推断状态,收集它们所做的改动,并在它们需要你关注时通知你。AI 本身的工作它一概不做:每个智能体都在各自的进程中、用各自的密钥,与各自的提供商通信。Cordy 不持有任何 API 密钥,也从不读取智能体的 prompt 或响应。

自带你的智能体

Cordy 不捆绑也不安装任何智能体。请完全按照各智能体自身文档的说明来安装并认证它——用它自己的账户、提供商、模型与密钥——使得在终端里运行它的命令本就可行。然后 Cordy 便能替你启动它。

Cordy 开箱内置六个智能体的预设:

智能体预设命令
Claude Codeclaude
Codex CLIcodex
Cursor Agentcursor-agent
Gemini CLIgemini
Copilotcopilot
OpenCodeopencode

每个预设都以默认参数启动其命令,并以工作区的 CodeTarget 作为工作目录。有些预设会传入较为宽松的默认参数,使智能体能在更少打断的情况下工作——例如 Claude Code 以 claude --permission-mode acceptEdits 启动。你可以查看并修改某个预设的参数,以匹配你愿意授予多大的自主权。若某个智能体的命令不在你的 PATH 上,启动会像你自己运行它一样在终端里失败——安装或认证该智能体后再试。

启动一个智能体

启动智能体有两种方式,它们的行为并不相同。

受监督的启动(tracked launch)

受监督的启动会经过 Cordy 的运行时监督器,因此智能体会获得状态徽章、活动面板与通知。可从以下任一入口发起:

  • 工作区标题栏中的 Agent 按钮,它会打开预设选择器;
  • 启动智能体选择器 快捷键 Cmd/Ctrl+Shift+A;或
  • 命令面板Cmd/Ctrl+K)→ Agent 分组 → "Launch <智能体>"。

智能体运行在一个工作区终端会话中,其工作目录设为该工作区的代码路径。由于每个基于 worktree 的工作区都是隔离的,把智能体分别启动进不同的工作区,就能让它们并行工作而互不冲突——见 核心概念

从终端预设条快速启动

终端标签栏上还有一条预设条,是一排快速启动按钮。点击其一会打开一个新的终端标签页,并替你输入生成好的命令。这是一种快速起步的便利方式——它受监督,因此没有状态徽章、活动面板或通知。当你希望 Cordy 观察智能体时,请使用受监督的启动。

实时状态

对于受监督的启动,Cordy 通过监视智能体终端输出中的模式来推断其状态,并以徽章形式展示:

状态徽章含义
launchedAgent: launched进程已启动;尚未见到决定性输出。
runningAgent: running智能体正在活跃地产生输出——工作中。
waiting_for_inputAgent: waiting for input智能体正在向你提问,被你的回应所阻塞。
idleAgent: idle仍在运行,但已安静一段时间(在预设的空闲窗口内无输出)。
exitedAgent: exited进程已结束。
failedAgent: failed匹配到失败模式(例如认证或配额错误)。

状态跃迁由模式匹配与超时驱动:running 模式将 launched → runningwaiting 模式将 running → waiting_for_input;任何新输出都会把 waiting_for_inputidle 拉回 running;超过空闲窗口的静默将 running → idlefailure 模式转为 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,直到它退出,而不会经历 runningwaiting_for_input 的跃迁。内置预设则具备完整的状态推断。

Cordy 不做什么

为把边界讲清楚:

  • Cordy 内嵌聊天机器人,也调用任何语言模型。
  • Cordy 持有你的提供商 API 密钥——每个智能体从各自的环境或配置中读取自己的密钥。
  • Cordy 读取、存储或代理智能体的 prompt 或响应。
  • Cordy 拦截智能体自身的批准提示(对文件写入、shell 命令或工具调用的批准)。那些完全留在智能体内部、经由它自己的终端进行。Cordy 自己的确认仅覆盖 Cordy 层面的操作——启动自定义命令、运行工作区 setup/teardown 脚本,以及提交或丢弃改动。

完整的数据边界见 隐私,启动智能体的进程监督器见 运行时

相关页面

  • 核心概念——隔离智能体的工作区与 CodeTarget。
  • 工作区——Git 面板与 diff 审阅。
  • 快捷键——智能体选择器快捷键与命令面板。
  • 隐私——密钥、prompt 与证据。