Files
JARVIS/development-doc/plan/agent-update/phase-6-10-checklist.md

388 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 7Hook 拦截层
**前置依赖**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 9Skills 注册表
**前置依赖**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 Cplan / 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*