# Hermes Agent 深挖笔记(第二层) > 2026-05-31 下午 > 重点:委派系统 / Curator / Kanban / 记忆插件实现 ## 1. 委派(Subagent)系统 — delegate_tool.py **设计思想:** - **嵌套深度控制**(max_spawn_depth = 1-3),防止无限递归委派 - **Orchestrator 角色**:深度-1 的子 Agent 也可以产生自己的 Worker - **心跳监控**:每 30s 父进程检查子 Agent 活跃状态,450s 空闲或 1200s 卡住一个工具 → 标记为 stale - **受限工具集**:子 Agent 永远不能访问 delegate_task / clarify / memory / send_message / execute_code - **工具集继承+扩展**:父工具的 composite toolset 自动展开匹配子任务请求 - **ThreadPoolExecutor** 实现并行执行 **迁移价值**:高。这是真正的多 Agent 协作模式,比我的简单"拆解"更深一层——它明确了 Agent 间的信任边界和监控机制。 ## 2. Curator 后台维护系统 — agent/curator.py **设计思想:** - **空闲触发**(不是 cron 定时),Agent 空闲时自动运行 - **Skill 生命周期管理**:pin(固定)/ archive(归档)/ consolidate(合并)/ patch(打补丁) - **永不删除** — 只归档,可恢复 - **独立客户端** — 不接触主会话的 prompt cache,用 auxiliary client - **持久状态** — last_run_at、时长、summary 存储在 `.curator_state` **迁移价值**:中高。后台维护模式很适合"自改进循环"的自动化。 ## 3. Kanban 项目追踪系统 — hermes_cli/kanban_db.py **设计思想:** - **SQLite 多板** — 不同项目用不同 board,完全隔离 - **CAS 并发控制**(Compare-and-Swap)— WAL 模式 + BEGIN IMMEDIATE,多 Worker 同时认领任务不会冲突 - **多 Profile 协调** — 不同 Hermes profile 共享同一个 board - **Env 解析链**:参数 > 环境变量 > 配置文件 > 默认值 - **Worker 隔离** — 子 Agent 只看到自己的 board **迁移价值**:中。对于大项目的进度追踪很有参考价值。 ## 4. 真实记忆插件实现 — plugins/memory/ **验证了 MemoryProvider 抽象基类模式:** | 插件 | 特点 | 数据存储 | |------|------|----------| | Honcho | AI-native 记忆,语义搜索、peer profile、dialectic Q&A、conclusions | 远程 API | | Hindsight | 基于时间线的记忆回顾 | SQLite 本地 | | Mem0 | 新一代 AI 记忆 | 远程 API | | Supermemory | 记忆管理 | 本地文件 | | Byterover | 字节级记忆 | 自定义格式 | | OpenViking | 维京记忆系统 | SQLite | | RetainDB | 持久化数据库 | SQLite | | Holographic | 全息记忆(向量存储 + 检索) | 本地 + 向量 | **共同模式:** - 都实现了 MemoryProvider ABC(initialize / prefetch / sync_turn / get_tool_schemas / shutdown) - 配置解析链:profile-local > global > env var - Profile 隔离:每个 Hermes profile 有独立身份 **迁移价值**:高。验证了我的记忆系统插件化方向是对的。 ## 5. 值得移植到我的系统的模式 1. **子 Agent 心跳监控** — 委派任务不应盲目等待,需要超时 + 活跃检测 2. **Orchestrator 角色** — 不是所有 Agent 都平级,可以有"组长 Agent"来协调 3. **空闲触发后台任务** — 不是所有维护都需要定时,空闲时运行更省心 4. **永不删除只归档** — 技能、记忆、项目的安全策略 5. **CAS 并发控制** — 多 Agent 同时操作同一资源时的协调模式 6. **配置解析链** — 参数 > 环境变量 > 文件 > 默认,确定的优先级