第六阶段 · 可扩展 Agent 平台第 26 / 30 章
本章目录

第 26 章 · CLI、IDE、App、Cloud 与 SDK

本章目标:理解 Codex 或 Claude Code 为什么同时出现在终端、编辑器、桌面应用和云端。它们不是五套 Agent,而是同一内核面对不同上下文、执行环境与人类控制面的产品形态。

1. 先把内核与外壳分开

无论界面是什么,核心仍然是 Thread、Turn、工具调用、权限请求、执行结果和状态事件。CLI 把事件渲染为终端文本;IDE 把当前文件、选区、诊断和 diff 接进来;桌面 App 管理多个任务、worktree、浏览器和审查界面;Cloud 把执行环境搬到隔离容器;SDK 则让其他程序直接订阅事件并控制循环。

如果 Agent 内核直接依赖按钮或终端颜色,就很难复用。更好的架构是内核产生结构化事件,客户端决定怎样显示和交互。

2. CLI:离代码和 Shell 最近

CLI 的优势是启动快、工作目录明确、能复用用户已有命令和环境。它适合短反馈循环、Git 工作流、服务器环境和脚本化运行。交互模式可以在工具调用间询问,非交互模式则需要预先设置权限、最大轮数、输出格式和退出码。

一个可靠的 headless 命令不只打印自然语言。它应支持 JSON 或 JSONL 事件、结构化最终输出、明确退出码、超时和不可交互时的权限策略。CI 才能据此判断成功或失败。

3. IDE:把编辑现场接入上下文

IDE 能提供当前文件、光标、选区、打开标签、类型错误、定义和引用。模型不必靠纯文本搜索猜符号关系,也能把修改直接显示为可审查 diff。

但 IDE 上下文并非越多越好。十几个打开标签不一定都相关;未保存内容与磁盘文件可能不同;编辑器诊断可能滞后。适配层需要标记来源和版本,并避免把整个工作区无差别注入。

4. Desktop App:任务成为一等对象

桌面应用适合同时管理本地任务、独立 worktree、云任务、浏览器验证、计划和审查。它需要任务列表、后台终端、文件预览、审批中心和恢复能力。用户关注的不再只是当前终端行,而是多个长期任务的状态。

桌面 App 还可以把 Browser、Computer Use、文档和连接器变成工具。能力越广,权限提示、可见状态和审计越重要。

5. Cloud:环境可复制,宿主被隔离

云任务通常创建容器、检出指定提交、运行 setup,再让 Agent 在受控网络和秘密策略下工作。优势是可以离线运行、并行多个任务、复现环境,也不会直接触碰用户电脑上的其他文件。

代价是本地未提交变化、私有凭据和特殊工具不会自动出现。环境配置、setup script、依赖缓存和仓库基点成为任务输入。Cloud 不是“更聪明”,而是执行环境和调度方式不同。

6. SDK 与 App Server

SDK 适合程序化启动任务、传入配置、订阅流式消息和接管权限。App Server 往往暴露 thread/start、turn/start、turn/interrupt、approval、review 和 fs 等协议,让自定义客户端不用重新实现 Agent 内核。

稳定 SDK 要把协议版本、事件顺序、取消、重连和兼容性当作产品契约。只封装一个 ask(prompt) 函数,无法承载长任务和真实工具生命周期。

7. 选择产品面

场景 更合适的表面
当前仓库快速修改 CLI 或 IDE
多任务、worktree、视觉验收 Desktop App
离线并行、PR 自动化 Cloud
CI 与脚本 非交互 CLI
自建工作台或内部平台 SDK / App Server

架构抓手

产品表面改变的是上下文来源、执行位置和人类控制方式;loop、tool、state、verification 与 permission 仍是同一组底层问题。