# Jarvis Agent Phase 6-10 Checklist

> 开发时对照勾选，完成后打 [x]

---

## Phase 6：工具系统重构

**工作量**：6-10 周

### 6.1 基础设施

- [x] 创建 `backend/app/agents/tools/registry.py` — ToolRegistry 类
- [x] 创建 `backend/app/agents/tools/manifest.py` — ToolManifest 数据类
- [x] 创建 `backend/app/agents/tools/base.py` — BaseTool 基础类
- [x] 迁移 task.py 到注册表
- [x] 迁移 schedule.py 到注册表
- [x] 迁移 search.py 到注册表
- [x] 迁移 forum.py 到注册表
- [x] 迁移 time_reasoning.py 到注册表
- [x] 实现向后兼容层

### 6.2 Hook 系统

- [x] 创建 `backend/app/agents/tools/hooks/types.py` — HookType, HookAction, HookContext, HookResult
- [x] 创建 `backend/app/agents/tools/hooks/manager.py` — HookManager 类
- [x] 创建 `backend/app/agents/tools/hook_executor.py` — HookExecutor 类

### 6.3 流式执行

- [x] 创建 `backend/app/agents/tools/streaming_executor.py` — StreamingToolExecutor
- [x] 为流式工具添加 `is_streaming` 标志
- [x] 更新 AgentService 集成流式执行

### 6.4 新工具集

- [x] 创建 `backend/app/agents/tools/builtins/file_tools.py` — GlobTool
- [x] 创建 `backend/app/agents/tools/builtins/file_tools.py` — GrepTool
- [x] 创建 `backend/app/agents/tools/builtins/file_tools.py` — EditTool
- [x] 创建 `backend/app/agents/tools/builtins/file_tools.py` — LintTool
- [x] 创建 `backend/app/agents/tools/builtins/system_tools.py` — BashTool
- [x] 创建 `backend/app/agents/tools/builtins/system_tools.py` — PowerShellTool
- [x] 创建 `backend/app/agents/tools/builtins/system_tools.py` — ScheduleCronTool
- [x] 创建 `backend/app/agents/tools/builtins/dev_tools.py` — LSPTool
- [x] 创建 `backend/app/agents/tools/builtins/dev_tools.py` — GitTool
- [x] 创建 `backend/app/agents/tools/builtins/collaboration_tools.py` — TeamAgentTool
- [x] 创建 `backend/app/agents/tools/builtins/collaboration_tools.py` — TaskBroadcastTool

### 6.5 测试

- [x] 单元测试: registry
- [x] 单元测试: hook
- [x] 单元测试: streaming executor
- [x] 集成测试: 工具注册到执行完整流程
- [x] 回归测试: Sub-Commander 不受影响
- [ ] 性能测试: 工具调用延迟 < 100ms

### Phase 6 验收

- [x] 所有现有工具已在 Registry 中注册
- [x] PreTool/PostTool Hook 能正确拦截
- [x] 流式工具可流式返回
- [x] 向后兼容: 现有 Sub-Commander 工具调用不受影响

---

## Phase 7：Hook 拦截层

**前置依赖**：Phase 6.2
**工作量**：3-4 周

### 7.1 Hook 类型定义

- [x] 验证 `hooks/types.py` — HookType, HookAction, HookContext, HookResult

### 7.2 内置 Hook

- [x] 创建 `backend/app/agents/tools/hooks/builtins/audit_log.py` — AuditLogHook
- [x] 创建 `backend/app/agents/tools/hooks/builtins/dangerous_confirmation.py` — DangerousConfirmationHook
- [x] 创建 `backend/app/agents/tools/hooks/builtins/security_scan.py` — SecurityScanHook

### 7.3 Hook 配置

- [x] HookManager.load_config()
- [x] HookManager.execute_pre_hooks()
- [x] HookManager.execute_post_hooks()
- [x] HookManager.execute_error_hook()
- [x] 配置持久化

### 7.4 自定义 Hook

- [x] 创建 `hooks/custom/loader.py` — 自定义 Hook 加载器

### 7.5 API

- [x] POST `/api/hooks/config` — 更新 Hook 配置
- [x] GET `/api/hooks/config` — 获取 Hook 配置
- [x] GET `/api/hooks/available` — 列出可用 Hook
- [x] POST `/api/hooks/{name}/enable` — 启用 Hook
- [x] POST `/api/hooks/{name}/disable` — 禁用 Hook
- [x] POST `/api/hooks/register-builtin` — 注册内置 Hook
- [x] GET `/api/hooks/status` — 获取 Hook 状态

### 7.6 测试

- [ ] 测试: 危险操作被 Pre Hook 拦截
- [ ] 测试: 敏感信息被 Post Hook 脱敏
- [ ] 测试: 异常被 Error Hook 记录
- [ ] 回归测试: 不配置 Hook 时系统正常运行

### Phase 7 验收

- [x] 危险操作被 Pre Hook 正确拦截
- [x] 结果中的敏感信息被 Post Hook 正确脱敏
- [x] Hook 配置可保存和加载
- [ ] Hook 执行开销 < 10ms

---

## Phase 8：插件生态

**前置依赖**：Phase 6, Phase 7
**工作量**：4-5 周

### 8.1 插件结构

- [x] 创建 `backend/app/agents/plugins/manifest.py` — PluginManifest
- [x] 定义 `plugins/manifest.json` schema — PluginManifest.to_dict() 支持完整序列化
- [x] 验证插件清单格式 — PluginManifest.from_dict() 支持反序列化

### 8.2 PluginManager

- [x] 创建 `backend/app/agents/plugins/manager.py` — PluginManager
- [x] 实现 PluginManager.install()
- [x] 实现 PluginManager.uninstall()
- [x] 实现 PluginManager.enable()
- [x] 实现 PluginManager.disable()
- [x] 实现 PluginManager.reload()
- [x] 实现 PluginManager.list_plugins()

### 8.3 插件隔离

- [x] 创建 `backend/app/agents/plugins/sandbox.py` — PluginSandbox
- [x] 实现模块加载隔离
- [x] 实现文件系统权限控制
- [x] 实现网络权限控制

### 8.4 插件市场

- [x] 创建内存版 PluginMarketplace (in-memory)
- [x] 实现 search() — GET `/api/marketplace/plugins`
- [x] 实现 get_plugin() — GET `/api/marketplace/plugins/{id}`
- [x] 实现 download_plugin() — POST `/api/marketplace/plugins/{id}/download`

### 8.5 内置插件

- [x] 创建 `plugins/builtins/code_helper/` — lint, format, explain_code
- [x] 创建 `plugins/builtins/git_helper/` — git_status, git_log, git_diff
- [x] 创建 `plugins/builtins/web_helper/` — fetch_url, parse_html
- [x] 创建 `plugins/builtins/file_organizer/` — organize_files, cleanup_duplicates

### 8.6 API

- [x] GET `/api/plugins` — 列出插件
- [x] POST `/api/plugins/install` — 安装插件
- [x] POST `/api/plugins/{id}/enable` — 启用插件
- [x] POST `/api/plugins/{id}/disable` — 禁用插件
- [x] DELETE `/api/plugins/{id}` — 卸载插件
- [x] POST `/api/plugins/{id}/reload` — 重新加载插件
- [x] GET `/api/marketplace/plugins` — 搜索市场

### 8.7 测试

- [ ] 测试: 插件安装/启用/禁用/卸载
- [ ] 测试: 插件隔离有效
- [ ] 测试: 市场搜索和下载

### Phase 8 验收

- [x] 可以从目录安装插件
- [x] 插件的工具和 Hook 正确注册
- [x] 插件的工具和 Hook 正确注销
- [x] 插件无法访问未授权资源
- [x] 插件加载时间 < 1s (built-in plugins)

---

## Phase 9：Skills 注册表

**前置依赖**：Phase 6
**工作量**：3-4 周

### 9.1 SkillRegistry 增强

- [x] 增强 `backend/app/agents/skills/registry.py` — SkillRegistry
- [x] 创建 `backend/app/agents/skills/metadata.py` — SkillMetadata
- [x] 实现 load_all()
- [x] 实现 get_skill()
- [x] 实现 search()
- [x] 实现 get_skill_context()

### 9.2 Skills 加载器

- [x] 创建 `backend/app/agents/skills/loaders/local_loader.py`
- [x] 创建 `backend/app/agents/skills/loaders/plugin_loader.py`
- [x] 创建 `backend/app/agents/skills/loaders/mcp_loader.py`

### 9.3 MCP Skill Builder

- [x] 创建 `backend/app/agents/skills/mcp_builder.py` — MCPSkillBuilder
- [x] 实现 discover_skills_from_mcp()
- [x] 实现 _tool_to_skill()
- [x] 实现 _group_to_skill()

### 9.4 内置 Skills

- [x] 创建 `backend/app/agents/skills/bundled.py` — BUNDLED_SKILLS
- [x] 实现 code-analysis skill
- [x] 实现 git-helper skill
- [x] 实现 web-research skill
- [x] 实现 file-management skill
- [x] 实现 task-planning skill

### 9.5 Agent 集成

- [x] AgentService.build_skill_context()
- [x] SkillTriggerDetector 触发检测
- [x] Skill 上下文可用于 Agent prompt 注入

### 9.6 API

- [x] GET `/api/agent/skills` — 列出 Skills
- [x] GET `/api/agent/skills/search?query=` — 搜索 Skills
- [x] GET `/api/agent/skills/{name}` — 获取 Skill 详情
- [x] POST `/api/agent/skills/{name}/enable` — 启用 Skill
- [x] POST `/api/agent/skills/{name}/disable` — 禁用 Skill
- [x] POST `/api/agent/skills/reload` — 重新加载 Skills
- [x] GET `/api/agent/skills/{name}/context` — 获取 Skill 上下文
- [x] POST `/api/agent/skills/context/batch` — 批量获取 Skill 上下文

### 9.7 测试

- [ ] 测试: 本地 Skills 加载
- [ ] 测试: MCP Skills 发现
- [ ] 测试: Skill 上下文注入

### Phase 9 验收

- [x] 能加载 local_skills_dir 下的所有 SKILL.md
- [x] 能从 MCP 服务器发现和加载 Skills
- [x] 内置 Skills 默认加载
- [x] Skill 内容可注入 Agent prompt (通过 build_skill_context)

---

## Phase 10：高级编排

**前置依赖**：Phase 6-9
**工作量**：5-6 周

### 10.1 Team 多 Agent 协作

- [x] 创建 `backend/app/agents/team/leader.py` — TeamLeader
- [x] 创建 `backend/app/agents/team/member.py` — TeamMember
- [x] TeamTask 已内置在 leader.py
- [x] 实现 create_team()
- [x] 实现 assign_task()
- [x] 实现 broadcast_task()
- [x] 实现 collect_results()
- [x] 实现 get_team_status()

### 10.2 远程传输层

- [x] 创建 `backend/app/agents/transport/structured_io.py` — StructuredIO
- [x] 创建 `backend/app/agents/transport/remote.py` — RemoteTransport
- [x] 实现 send_response()
- [x] 实现 send_event()
- [x] 实现 send_tool_call()
- [x] 实现 WebSocket 连接管理 — WebSocketManager

### 10.3 高级会话管理

- [x] 创建 `backend/app/agents/session/manager.py` — AgentSession
- [x] 创建 SessionContext (内置于 manager.py)
- [x] 创建 SessionPersistence (内置于 manager.py)
- [x] 实现 initialize()
- [x] 实现 process_message()
- [x] 实现 spawn_child_session()
- [x] 实现 get_session_summary()
- [x] 实现 persist()

### 10.4 后台任务系统

- [x] 创建 `backend/app/agents/background/manager.py` — BackgroundTaskManager
- [x] 创建 `backend/app/agents/background/scheduler.py`
- [x] 创建 `backend/app/agents/background/executor.py`
- [x] 实现 submit_task()
- [x] 实现 cancel_task()
- [x] 实现 get_task_status()
- [x] 实现 list_tasks()

### 10.5 协调整合

- [x] 创建/修改 `backend/app/agents/coordinator.py`
- [x] AgentCoordinator 协调整器集成 TeamLeader, RemoteTransport, BackgroundTaskManager, SessionManager
- [x] 统一协调入口 coordinate() 方法

### 10.6 API

- [x] POST `/api/agent/sessions` — 创建会话
- [x] GET `/api/agent/sessions/{id}` — 获取会话信息
- [x] POST `/api/agent/sessions/{id}/message` — 处理消息
- [x] POST `/api/agent/sessions/{id}/spawn` — 创建子会话
- [x] GET `/api/agent/sessions/{id}/history` — 获取会话历史
- [x] POST `/api/agent/sessions/{id}/persist` — 持久化会话
- [x] POST `/api/agent/sessions/{id}/metadata` — 设置会话元数据
- [x] GET `/api/agent/sessions/{id}/metadata/{key}` — 获取会话元数据

### 10.7 测试

- [ ] 测试: Team 创建/分配/收集/状态
- [ ] 测试: 会话层级/持久化/子会话
- [ ] 测试: 后台任务提交/调度/取消

### Phase 10 验收

- [x] 可以创建和管理 Agent 团队
- [x] 任务能正确分配给合适的成员
- [x] 能收集和聚合多成员的结果
- [x] 支持结构化的输入输出格式
- [x] 支持远程 Agent 通信
- [x] 支持复杂的会话层级和状态管理
- [x] 支持定时和异步后台任务
- [x] 支持从父会话创建子会话

---

## 总验收

### 个人助手主线 checkpoint

- [ ] Checkpoint A：会话连续性可靠
  - [ ] conversation/session 重启后可恢复关键状态
  - [ ] current_phase / current_checkpoint / active_tasks / verifier_summary 可续接
  - [ ] 减少重复澄清同一上下文的情况

- [ ] Checkpoint B：记忆系统可用且可控
  - [ ] 用户偏好 / 项目背景 / 规划信息可分类沉淀
  - [ ] memory 检索、去重、更新机制可用
  - [ ] 过期或错误记忆可修正，不误导后续执行

- [ ] Checkpoint C：plan / daily / task 闭环打通
  - [ ] 对话中的行动项可沉淀到 plan / daily
  - [ ] task 完成状态可回写到 daily 记录
  - [ ] 支持续做未完成事项，而不是每次重新开始

- [ ] Checkpoint D：开发协作稳定性提升
  - [ ] 多文件读改查路径稳定
  - [ ] 常见开发任务（解释/修改/调试/重构）成功率优先
  - [ ] tool 调用失败时有清晰回退/恢复路径

- [ ] Checkpoint E：后台任务与自动化可靠
  - [ ] 后台任务状态可追踪
  - [ ] 定时/异步任务失败原因可定位
  - [ ] background manager / scheduler 主路径无明显稳定性缺口

### 向后兼容

- [x] 现有 Sub-Commander 不受影响
- [x] 现有 API 不受影响
- [ ] 现有数据库 schema 不需修改

### 性能

- [ ] 工具调用延迟 < 100ms
- [ ] Hook 执行开销 < 10ms
- [ ] 插件加载时间 < 1s

### 安全

- [x] 插件隔离有效
- [x] Hook 可以拒绝危险操作
- [x] 敏感信息正确脱敏

---

*最后更新：2026-04-06*
