# H4 Product Shell Assembly ## 1. 目标 固化 Jarvis 在 Hermes-first 架构中的角色:Jarvis 不是 runtime 本体,而是 **pre-runtime product shell**。 ## 2. 为什么保留 Jarvis Product Shell 如果直接把 memory / skill / task graph 也推给 Hermes: - Jarvis 已有产品价值会丢失 - 业务能力会进入黑盒 - 回滚与可观测性会变差 所以 Hermes-first 不等于“Jarvis 退化成纯 UI”。 ## 3. 保留的装配能力 ### 3.1 Memory Assembly - `backend/app/services/memory_service.py` 继续负责: - recalled memory - conversation summary - user memory - knowledge brain 注入 ### 3.2 Skill Shortlist - `backend/app/agents/skills/retriever.py` 继续负责: - request 相关 skill shortlist - 激活建议 ### 3.3 Task Graph / Runtime Request Context - `backend/app/agents/orchestration/task_graph.py` - `backend/app/agents/schemas/orchestration.py` 继续负责: - bounded task graph - parallel worthiness - runtime request summary ### 3.4 Retrospective / Product Guardrails - `backend/app/agents/learning/*` - `backend/app/agents/tools/time_reasoning.py` 继续负责: - retrospective 注入 - 时间上下文 - 产品级指令与 guardrails ## 4. 目标数据流 ```text router -> AgentService -> load conversation/product continuity -> assemble memory/skills/task graph/retrospective/time context -> build RuntimePreparedContext -> dispatch to Hermes runtime -> map events and finalize persistence ``` ## 5. 关键原则 1. Hermes 接收的是已组装好的 Jarvis product context。 2. Jarvis 保留用户级/产品级理解能力。 3. 不把 Hermes 当作唯一知识与策略拥有者。 4. 装配层必须可测试、可观察、可回滚。 ## 6. 推荐文件变更 - `backend/app/services/agent_service.py` - `backend/app/services/memory_service.py` - `backend/app/agents/skills/retriever.py` - `backend/app/agents/orchestration/task_graph.py` - `backend/app/services/agent_runtime/base.py` ## 7. 完成标准 - [ ] Jarvis product shell 的装配职责被明确固化 - [ ] Hermes 收到的是统一的 prepared context - [ ] memory / skills / task graph 不被直接塞回 Hermes 黑盒内部