Files
JARVIS/development-doc/plan/hermes-update/phase-h1-agent-service-inversion.md

83 lines
2.2 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.
# H1 AgentService 架构倒置
## 1. 目标
`AgentService` 从“Jarvis runtime 本体”重构成“Jarvis 产品层编排器”。
也就是说,`AgentService` 只做三件事:
1. request assembly
2. runtime dispatch
3. finalization
## 2. 当前问题
当前 `backend/app/services/agent_service.py` 同时承载:
- memory / retrospective / skills / task graph 装配
- Jarvis graph 执行
- Hermes runtime dispatch
- SSE 流组装
- message / agent_state / observability 持久化
这导致:
- Hermes 只能是分支,不是核心
- Jarvis runtime 难以真正 adapter 化
- 后续 fallback / rollout 容易继续堆在一个文件里
## 3. 目标结构
```text
conversation router
-> AgentService
-> assemble runtime request
-> resolve runtime via registry/factory
-> dispatch to runtime adapter
-> finalize persistence and observability
```
## 4. 关键动作
### 4.1 Request Assembly
保留在 Jarvis product shell
- memory context
- retrospective
- skill shortlist
- task graph
- time context
- conversation continuity load
### 4.2 Runtime Dispatch
- 建立 runtime registry / factory
- `JarvisRuntimeAdapter` 正式承接旧 graph 路径
- `HermesRuntimeAdapter` 成为默认目标 runtime
- 避免 `if runtime == ...` 继续扩散
### 4.3 Finalization
- assistant message 落库
- attachments/runtime metadata 落库
- `Conversation.agent_state` 更新
- runtime observability report 持久化
## 5. 推荐文件变更
- `backend/app/services/agent_service.py`
- `backend/app/services/agent_runtime/base.py`
- `backend/app/services/agent_runtime/jarvis_runtime.py`
- `backend/app/services/agent_runtime/hermes_runtime.py`
- 可选新增:`backend/app/services/agent_runtime/registry.py`
## 6. 设计约束
1. 不破坏 router / API 路径。
2. 不改变前端 SSE 事件名。
3. Jarvis graph 在本阶段仍保留为 fallback。
4. 先把职责边界立住,再调整默认 runtime。
## 7. 完成标准
- [ ] `AgentService` 明确分为 assembly / dispatch / finalization
- [ ] Jarvis runtime 被正式 adapter 化
- [ ] Hermes path 不再只是散落的 if-branch
- [ ] 为 H2/H3 continuity 与 session lifecycle 留出清晰边界