# RFC 0002：天工 CLI 完整 AI Agent 主线

- 状态：In Progress（进行中）
- 日期：2026-02-13
- 作者：Tiangong 工程组
- 关联文档：
  - `docs/requirements.md`
  - `PLAN.md`
  - `TODO.md`
  - `docs/rfc/0001-tiangong-desktop-agent-roadmap.md`（当前暂停）

## 1. 背景

当前 CLI 已具备基础对话能力，但仍属于“聊天终端”形态，不是完整 AI Agent 工作流。
对于工程任务，目标应是与 Codex 类似的 CLI Agent：可理解任务、规划步骤、调用工具、改动代码、执行检查，并输出可审阅结果。

因此，RFC 0002 明确以“生产型 CLI Agent”作为主线方向。

## 2. 目标

构建 `tiangong` 的完整 CLI Agent 能力闭环，使其可作为研发主入口。

必须达到：

- 支持自然语言任务到可执行计划的转换。
- 支持在工作区内安全执行工具链（读写文件、命令执行、差异展示）。
- 支持执行后验证（如 `cargo check` / `cargo clippy` / build）。
- 支持会话化、多轮上下文与任务状态追踪。
- 输出可审阅的变更说明与执行结果。

## 3. 非目标

- 本 RFC 不优先推进桌面 UI 新功能。
- 本 RFC 不引入多模型供应商并行路由。
- 本 RFC 不覆盖分布式执行与远程 Worker。

## 4. 产品形态

`tiangong` CLI 需要从“chat 模式”升级为“agent 模式能力”：

- `tiangong` 默认保持桌面 UI 入口，避免破坏现有使用习惯。
- Agent 主线能力通过显式子命令进入（`tiangong cli`）。
- CLI 用户交互焦点从“问答”转为“任务执行”。

## 5. 核心能力分解

### 5.1 任务理解与规划

- 输入：用户自然语言任务。
- 输出：可执行步骤计划（Plan），包含目标、步骤、风险、预期验证命令。
- 要求：计划可解释、可中断、可更新。

### 5.2 工具执行与代码改动

- 读操作：`list_dir`、`read_file`、代码检索。
- 写操作：定点修改、批量替换、补丁应用。
- 命令执行：在工作区内执行受控命令，必须带超时。
- 输出：结构化执行记录（命令、耗时、退出码、摘要）。

### 5.3 结果验证与收敛

- 按任务类型执行最小验证链（Rust 优先 `cargo check` / `cargo clippy`）。
- 验证失败时返回可操作的错误摘要，不隐藏失败。
- 最终输出包含：改动文件、关键差异、验证结果、剩余风险。

### 5.4 会话与状态管理

- 支持多会话、历史恢复、任务上下文延续。
- 单任务状态至少包含：`planning`、`executing`、`completed`、`failed`。
- 保证会话与任务数据可持久化恢复。

### 5.5 安全与边界

- 默认限制在工作区内操作。
- 高风险命令与破坏性操作需显式拦截。
- 工具和命令执行都需审计记录。

## 6. 里程碑

### M1：Agent 最小闭环

- 自然语言任务 -> 计划 -> 工具执行 -> 输出总结。
- 具备最小代码改动能力与差异展示。

### M2：工程可用

- 接入验证链路与失败回传。
- 完善会话状态管理与任务追踪。

### M3：质量增强

- 优化计划质量、错误恢复与中断控制。
- 加强安全策略与审计信息完整度。

## 7. 验收标准

达到以下条件视为 RFC 0002 完成：

- 可通过 CLI 完成一个真实工程任务的端到端执行（分析 -> 修改 -> 验证 -> 汇报）。
- 输出具备工程可审阅性（文件列表、差异摘要、命令结果）。
- 失败路径可解释且可复现（含失败命令与错误信息）。
- 会话重启后可恢复最近任务上下文。

## 8. 与 RFC 0001 的关系

- 2026-02-13 起，RFC 0001 保持暂停状态。
- RFC 0002 作为当前优先主线，先完成 CLI Agent 主能力闭环。
- RFC 0002 稳定后，再决定 RFC 0001 恢复顺序。
