Files
JARVIS/development-doc/plan/code-update/checklist.md

216 lines
5.8 KiB
Markdown
Raw Normal View History

# 代码指挥官实施清单(可勾选执行版)
日期2026-04-04
状态:执行清单
适用范围:基于 `phase-1` ~ `phase-5` 整理
---
## 使用说明
- 完成前使用 `- [ ]`
- 完成后改成 `- [x]`
- Day 1-3 为后端基础设施
- Day 4-5 为后端执行引擎
- Day 6 为 Agent 集成
- Day 7-8 为流式交互
- Day 9-10 为前端集成
---
## Day 1State + Prompt + 注册
Day 1 目标:完成代码指挥官 Agent 的基础架子
- [x] 新增 `CODE_COMMANDER = "code_commander"``AgentRole` 枚举
- [x] 新增 `CodeCommanderState` TypedDict包含 task_type, ai_provider, sandbox_mode 等)
- [x] 新增 `CODE_COMMANDER_SYSTEM_PROMPT` 系统提示
- [x] 新增 `SANDBOX_EXECUTION_PROMPT` 沙盒执行说明
- [x] 新增 `DIRECT_EXECUTION_PROMPT` 直接执行说明
- [x]`SUB_COMMANDER_TOOLSETS` 中注册 `CODE_COMMANDER_TOOLSET`
- [x] 新增 `CodeCommanderManifest``AGENT_MANIFESTS`
- [ ] 补 Phase 1 单元测试
**验收:确认 `AgentRole.CODE_COMMANDER` 存在且值正确**
---
## Day 2AI CLI Adapter统一接口
Day 2 目标:实现适配不同 AI CLI 的统一接口
- [x] 新增 `AICLIAdapter` 抽象基类
- `cli_name` 属性
- `requires_workspace` 属性
- `build_command()` 方法
- `parse_output()` 方法
- `is_installed()` 方法
- [x] 新增 `ClaudeAdapter` 实现
- [x] 新增 `GeminiAdapter` 实现
- [x] 新增 `CodexAdapter` 实现
- [x] 新增 `OpenCodeAdapter` 实现
- [x] 新增 `CodeExecutionResult` 数据类
- [ ] 补 Day 2 单元测试
**验收:`AICLIAdapter` 可以正确识别 4 种 CLI**
---
## Day 3Security Classifier + Direct Executor
Day 3 目标:实现安全分级和直接执行器
- [x] 新增 `RiskLevel` 枚举LOW/HIGH
- [x] 新增 `SecurityClassifier`
- `HIGH_RISK_KEYWORDS` 列表
- `LOW_RISK_KEYWORDS` 列表
- `classify()` 方法实现
- `_is_project_path()` 方法实现
- [x] 新增 `DirectExecutor`
- `execute()` 方法(异步)
- 超时控制
- `is_installed()` 检查
- [ ] 补 Day 3 单元测试
**验收:`SecurityClassifier` 能正确分类高低风险**
---
## Day 4Sandbox Environment + Sandbox Executor
Day 4 目标:实现沙盒执行器
- [x] 新增 `SandboxEnvironment`
- `create()` 静态方法(创建临时目录)
- `cleanup()` 方法
- `workspace_path` 属性
- `session_id` 属性
- [x] 新增 `SandboxExecutor`
- `execute()` 方法异步yield 流式输出)
- `cleanup_session()` 方法
- `_list_created_files()` 方法
- [x] 实现超时控制
- [ ] 补 Day 4 单元测试
**验收:`SandboxExecutor` 能创建、执行、清理沙盒**
---
## Day 5执行引擎集成测试
Day 5 目标:确保执行引擎各组件协同工作
- [ ] 集成测试:`SecurityClassifier` + `DirectExecutor`
- [ ] 集成测试:`SecurityClassifier` + `SandboxExecutor`
- [ ] 集成测试4 种 `AICLIAdapter``build_command()`
- [ ] 端到端测试:低风险任务直接执行
- [ ] 端到端测试:高风险任务沙盒执行
- [ ] 确认沙盒目录创建和清理正常
**验收:所有执行器支持流式输出,且正确路由**
---
## Day 6Graph 节点 + 边路由
Day 6 目标:将代码指挥官接入 LangGraph
- [x] 新增 `code_commander_node` 函数
- 获取用户需求和 AI 提供商
- 调用 `SecurityClassifier`
- 根据风险等级选择执行器
- 返回执行结果
- [x]`NODES` 字典中注册 `code_commander`
- [x] 新增 `_should_route_to_code_commander()` 路由函数
- [x]`graph.py` 中添加条件边
- [x] 新增 `CodeTask`, `CodeExecutionResult` 模型到 `schemas/task.py`
- [ ] 补 Day 6 单元测试
**验收:高风险任务路由到沙盒,低风险路由到直接执行**
---
## Day 7PTY Terminal Engine
Day 7 目标:实现 PTY 终端管理
- [x] 新增 `PTYSession` 数据类
- [x] 新增 `PTYManager`
- `spawn()` 方法
- `write()` 方法
- `read()` 方法(异步生成器)
- `resize()` 方法
- `kill()` 方法
- [x] 实现 `asyncio.subprocess` 进程管理
- [x] 实现输出队列
- [ ] 补 Day 7 单元测试
**验收PTY 会话可以启动、读写、终止**
---
## Day 8WebSocket + 流式输出
Day 8 目标:实现 WebSocket 端点和流式输出
- [x] 新增 `ConnectionManager`
- [x] 新增 `/ws/terminal/{session_id}` WebSocket 端点
- [x] 实现连接管理connect/disconnect
- [x] 新增 `StreamOutput`
- [x] 实现 `stream_execution()` 方法
- [x] 新增 `InteractiveInputHandler`
- [x] 实现用户输入传递到 PTY
- [ ] 补 Day 8 集成测试
**验收WebSocket 连接正常,输出实时推送**
---
## Day 9Vue 页面组件
Day 9 目标:前端代码指挥官主页面
- [x] 新增 `CodeCommander.vue` 页面组件
- AI 提供商选择器
- 任务输入框
- 执行按钮
- 终端显示区域
- 交互输入框
- 下载/清理按钮
- [ ] 补 Day 9 组件测试
**验收:用户可以选择 AI 提供商并输入任务**
---
## Day 10TerminalDisplay + WebSocket 服务 + 路由
Day 10 目标:完成前端集成
- [x] 新增 `TerminalDisplay.vue` 组件xterm.js
- 终端渲染
- ANSI 颜色支持
- 用户输入处理
- [x] 新增 `terminalWs.ts` WebSocket 服务
- 连接管理
- 自动重连
- 消息处理
- [x]`router/index.ts` 新增 `/code-commander` 路由
- [ ] 端到端测试:完整执行流程
- [ ] 确认前端与后端 WebSocket 通信正常
**验收:用户可以在前端看到实时终端输出并交互**
---
## 最终验收
- [x] 用户可以选择 AI 提供商Claude/Gemini/Codex/OpenCode
- [x] 低风险任务(如贪食蛇 demo直接执行
- [x] 高风险任务在临时目录沙盒执行
- [x] 终端输出实时流式显示
- [x] 用户可以中途输入交互(如 "y" 确认)
- [x] 临时目录执行后正确清理
- [x] 前端页面正常展示
- [ ] 回归测试通过(现有功能不受影响)