Files

388 lines
12 KiB
Markdown
Raw Permalink Normal View History

# 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*