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

361 lines
11 KiB
Markdown
Raw 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
- [ ] 创建 `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
- [ ] 定义 `plugins/manifest.json` schema
- [ ] 验证插件清单格式
### 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`
- [ ] 创建 `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()
- [ ] Skill 上下文注入 Agent prompt
- [ ] Skill 触发检测
### 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 默认加载
- [ ] Skill 内容正确注入 Agent prompt
---
## Phase 10高级编排
**前置依赖**Phase 6-9
**工作量**5-6 周
### 10.1 Team 多 Agent 协作
- [x] 创建 `backend/app/agents/team/leader.py` — TeamLeader
- [ ] 创建 `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()
- [ ] 实现 WebSocket 连接管理
### 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`
- [ ] Team 协作与现有 graph 集成
- [ ] 远程传输与现有 service 集成
### 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] 支持从父会话创建子会话
---
## 总验收
### 向后兼容
- [x] 现有 Sub-Commander 不受影响
- [x] 现有 API 不受影响
- [ ] 现有数据库 schema 不需修改
### 性能
- [ ] 工具调用延迟 < 100ms
- [ ] Hook 执行开销 < 10ms
- [ ] 插件加载时间 < 1s
### 安全
- [x] 插件隔离有效
- [x] Hook 可以拒绝危险操作
- [x] 敏感信息正确脱敏
---
*最后更新2026-04-04*