Claude/Codex 作为执行引擎 + Orchestrator 作为调度中枢 + tmux 作为运行容器
版本:V1.5 | 日期:2026-04-26
一个以 Claude/Codex 为执行引擎的 多 Agent 自动调度系统,实现"公司自己运转"。
┌─────────────────────────────────────────────────────────────┐
│ 管理层:Hermes Company OS(我们的) │
│ ├── 管 Agent 身份(profile) │
│ ├── 管任务票(tasks/todo → doing → review → done) │
│ ├── 管公司规则(company/) │
│ ├── 管记忆归档(memory/) │
│ └── 管交付物验收(outbox/) │
├─────────────────────────────────────────────────────────────┤
│ 调度层:Orchestrator(我们的) │
│ ├── 扫描 todo 任务 │
│ ├── 匹配 Agent 能力 │
│ ├── 锁定任务 → 移动到 doing │
│ ├── 管理 tmux session/pane │
│ ├── 监控执行状态(心跳、超时、完成信号) │
│ └── 回收结果 → 移动到 review │
├─────────────────────────────────────────────────────────────┤
│ 容器层:tmux │
│ ├── 多 Agent 并行运行 │
│ ├── 实时可观察(tmux attach) │
│ └── 持久化运行(断线不中断) │
├─────────────────────────────────────────────────────────────┤
│ 执行层:Claude Code / Codex(最强 LLM) │
│ ├── 每个 Agent = 一个独立的 Claude/Codex 会话 │
│ ├── 自带文件读写、终端执行、网络搜索等工具 │
│ ├── YOLO 模式无人值守执行 │
│ └── 通过 prompt 注入公司规则、任务上下文、输出规范 │
└─────────────────────────────────────────────────────────────┘
Nous Hermes Agent(118k stars)是一个优秀的参考系统。我们不直接使用它作为执行引擎,但借鉴其核心设计理念:
| Nous Hermes 理念 |
我们的实现方式 |
| 记忆系统 |
memory/{agent}/ 目录 + 任务上下文中注入历史经验 |
| 技能系统 |
company/skills/ 共享技能库 + prompt 注入 |
| 学习循环 |
任务完成后归档经验到 memory,下次任务注入相关记忆 |
| 工具系统 |
依赖 Claude/Codex 自带工具(文件、终端、搜索、浏览器) |
| 模型无关 |
每个 Agent 可配置 Claude 或 Codex |
核心差异:Nous Hermes 是单体 Agent 应用,我们是多 Agent 调度系统。两者解决不同层面的问题。
| 维度 |
Claude/Codex |
Nous Hermes Agent |
| 代码能力 |
最强(Claude Sonnet 4 / Opus 4) |
依赖底层模型,需自行配置 |
| 工具质量 |
高质量内置工具(文件、终端、搜索、浏览器) |
47 个工具但质量参差不齐 |
| 上下文理解 |
200K+ 上下文,深度理解复杂任务 |
取决于配置的模型 |
| 零配置 |
claude code 一行启动 |
需要安装、配置模型、配置工具 |
| 成熟度 |
Anthropic 官方产品,持续迭代 |
开源项目,需自行维护 |
| 安全性 |
内置权限审批机制 |
需自行配置 approval 模式 |
Nous Hermes 有而我们缺少的能力,通过公司系统层面弥补:
| Nous Hermes 能力 |
我们的弥补方式 |
| 持久记忆 |
memory/{agent}/ + 任务注入相关历史 |
| 技能系统 |
company/skills/ + prompt 注入技能文档 |
| 学习循环 |
任务完成后 Orchestrator 归档经验到 memory |
| 跨会话搜索 |
Orchestrator 在分配任务时搜索相关记忆并注入 |
| 用户建模 |
agents/{name}/profile.md 定义角色和能力 |
| Agent 角色 |
推荐引擎 |
理由 |
| 全栈工程师 |
Claude Code |
代码能力最强,文件操作精准 |
| 内容创作 |
Claude Code |
文案质量高,理解力强 |
| 市场调研 |
Claude Code + web 工具 |
搜索 + 分析能力强 |
| 代码审查 |
Claude Code |
代码分析能力顶尖 |
| 批量任务 |
Codex |
成本低,适合简单重复任务 |
hermes-company/
├── company/ # 公司制度(我们的)
│ ├── AGENT_WORK_RULES.md # Agent 执行规范
│ ├── SECURITY_RULES.md # 安全约束
│ ├── COMPANY.md # 公司愿景与规则
│ └── skills/ # 共享技能库(借鉴 Nous 理念)
│ └── {skill_name}.md # 可复用技能文档
│
├── orchestrator/ # 调度器(我们的)
│ ├── main.py # 主循环
│ ├── tmux_manager.py # tmux 会话管理
│ ├── task_scanner.py # 任务扫描
│ ├── task_assigner.py # 任务分配与锁定
│ ├── agent_launcher.py # Agent 启动(启动 Claude/Codex)
│ ├── monitor.py # 状态监控
│ ├── memory_injector.py # 记忆注入(搜索相关经验并注入)
│ └── config.py # 配置
│
├── agents/ # Agent 配置
│ └── {agent_name}/
│ ├── profile.json # 公司定义的身份
│ │ {
│ │ "name": "laohuang",
│ │ "role": "fullstack_engineer",
│ │ "engine": "claude-code",
│ │ "skills": ["nextjs", "api_design", "db_modeling"]
│ │ }
│ ├── profile.md # 详细角色描述(注入给 Claude 的 SOUL)
│ └── runtime.json # 运行时状态(Orchestrator 管理)
│ {
│ "agent": "laohuang",
│ "engine": "claude-code",
│ "container": "tmux",
│ "tmux_session": "hermes",
│ "tmux_window": "agent_laohuang",
│ "status": "idle",
│ "current_task": null,
│ "last_heartbeat": "2026-04-26 13:30:00"
│ }
│
├── tasks/ # 任务系统(我们的)
│ ├── todo/
│ ├── doing/
│ ├── blocked/
│ ├── review/
│ └── done/
│
├── memory/ # 公司级记忆(借鉴 Nous 理念)
│ └── {agent_name}/
│ ├── experiences/ # 任务经验归档
│ │ └── {task_id}.md # 任务执行经验
│ ├── patterns/ # 发现的模式和最佳实践
│ └── lessons/ # 教训和踩坑记录
│
├── logs/ # 公司级日志
│ └── {agent_name}/
│ └── YYYY-MM-DD.md # 每日工作日志
│
├── outbox/ # 交付物
│ └── {agent_name}/
│ └── {task_id}/
│ ├── summary.md
│ ├── result files
│ └── DONE
│
└── runners/ # 启动模板
├── claude_runner.md # Claude Code 执行 prompt 模板
└── codex_runner.md # Codex 执行 prompt 模板
tmux pane: agent_laohuang
│
├── 运行命令: claude code --dangerously-skip-permissions
│ (或 codex --approval-mode=auto)
│
├── Claude/Codex 能力:
│ ├── 文件读写(read_file, write_file, patch)
│ ├── 终端执行(run commands)
│ ├── 网络搜索(web search)
│ ├── 浏览器自动化(browser tools)
│ └── 代码理解与生成
│
└── 公司注入上下文(通过 prompt):
├── Agent 身份(agents/laohuang/profile.md)
├── 任务文件(tasks/doing/TASK-xxx.md)
├── 公司规则(company/AGENT_WORK_RULES.md)
├── 相关记忆(memory/laohuang/experiences/ 中相关内容)
├── 相关技能(company/skills/ 中相关技能文档)
└── 输出规范(outbox 格式要求)
1. 人类创建任务
hermes-company CLI → tasks/todo/TASK-001.md
2. Orchestrator 扫描
读取 tasks/todo/ + agents/*/profile.json + agents/*/runtime.json
匹配:task.owner = laohuang && laohuang.status = idle
3. Orchestrator 搜索相关记忆
搜索 memory/laohuang/ 中与任务相关的经验
准备注入上下文
4. Orchestrator 锁定任务
任务文件写入 runtime.locked_by = "orchestrator"
移动:tasks/todo → tasks/doing
5. Orchestrator 启动/复用 tmux pane
tmux new-window -t hermes -n agent_laohuang
(如果 pane 已存在,复用)
6. Orchestrator 注入任务到 Claude/Codex
通过 tmux send-keys 发送完整 prompt:
┌─────────────────────────────────────────────┐
│ 你是 Hermes 公司中的 Agent:laohuang │
│ 你的角色:全栈工程师 │
│ │
│ ## 当前任务 │
│ 文件:tasks/doing/TASK-001.md │
│ 请读取并执行该任务。 │
│ │
│ ## 相关经验(来自历史任务) │
│ - 上次做类似任务时,使用了 Next.js App Router │
│ - 注意数据库迁移要先于代码部署 │
│ │
│ ## 公司规则 │
│ - 遵守 company/AGENT_WORK_RULES.md │
│ - 完成后写入 outbox/laohuang/TASK-001/ │
│ - 必须创建 summary.md 和 DONE 标记 │
│ │
│ ## 可用技能 │
│ - nextjs_deployment(见 company/skills/) │
│ - api_design_patterns │
└─────────────────────────────────────────────┘
7. Claude/Codex 执行任务
├── 读取任务文件
├── 使用自带工具执行(文件、终端、搜索、浏览器)
├── 参考注入的经验和技能
├── 记录工作过程
└── 生成结果
8. Claude/Codex 提交结果
├── 写入 outbox/laohuang/TASK-001/summary.md
├── 写入 outbox/laohuang/TASK-001/DONE 标记
└── 写入 logs/laohuang/YYYY-MM-DD.md
9. Orchestrator 检测完成
轮询检测 DONE 文件
移动:tasks/doing → tasks/review
更新:runtime.json status = idle, current_task = null
10. Orchestrator 归档经验(学习循环)
读取 outbox/laohuang/TASK-001/summary.md
提取关键经验 → memory/laohuang/experiences/TASK-001.md
如有可复用模式 → company/skills/ 新增或更新技能
11. 人类验收
查看 outbox/laohuang/TASK-001/summary.md
验收通过 → tasks/review → tasks/done
验收不通过 → tasks/review → tasks/doing(重新执行,附带反馈)
# runners/claude_runner.md
你是 Hermes 公司中的 Agent:{{agent_name}}
## 身份
{{agent_profile}}
## 当前任务
请读取并执行:tasks/doing/{{task_id}}.md
## 相关经验
{{injected_memories}}
## 公司规则
严格遵守 company/AGENT_WORK_RULES.md 中的所有规范。
## 输出要求
1. 工作日志写入:logs/{{agent_name}}/{{today}}.md
2. 交付物写入:outbox/{{agent_name}}/{{task_id}}/
3. 完成后必须创建:outbox/{{agent_name}}/{{task_id}}/DONE
4. 完成后必须创建:outbox/{{agent_name}}/{{task_id}}/summary.md
## summary.md 格式
- 任务 ID 和标题
- 执行步骤摘要
- 产出物清单
- 遗留问题(如有)
- 建议下一步
## 禁止行为
- 删除 tasks/、agents/、orchestrator/ 目录
- 修改 company/ 下的任何文件
- 执行 rm -rf 或类似高危命令
- 修改其他 Agent 的文件
现在开始执行任务。
# orchestrator/memory_injector.py
class MemoryInjector:
def inject(self, agent_name: str, task: Task) -> str:
"""搜索并注入相关记忆"""
memory_dir = f"memory/{agent_name}"
memories = []
# 1. 搜索相关经验
for exp_file in glob(f"{memory_dir}/experiences/*.md"):
content = read_file(exp_file)
if self.is_relevant(content, task):
memories.append(f"- {exp_file}: {summarize(content)}")
# 2. 搜索相关技能
for skill_file in glob("company/skills/*.md"):
content = read_file(skill_file)
if self.is_relevant(content, task):
memories.append(f"- 技能:{skill_file}")
# 3. 搜索教训
for lesson_file in glob(f"{memory_dir}/lessons/*.md"):
content = read_file(lesson_file)
if self.is_relevant(content, task):
memories.append(f"- 教训:{summarize(content)}")
return "\n".join(memories) if memories else "(暂无相关经验)"
def is_relevant(self, content: str, task: Task) -> bool:
"""简单关键词匹配,后续可升级为向量搜索"""
task_keywords = extract_keywords(task.title + task.description)
return any(kw in content for kw in task_keywords)
# orchestrator/main.py
class Orchestrator:
def run(self):
while True:
# 1. 扫描待分配任务
todos = self.scan_todo_tasks()
# 2. 扫描可用 Agent
idle_agents = self.get_idle_agents()
# 3. 匹配任务与 Agent
assignments = self.match_tasks_to_agents(todos, idle_agents)
# 4. 执行分配
for task, agent in assignments:
self.assign_task(task, agent)
self.launch_or_resume_agent(agent, task)
# 5. 监控执行中的任务
self.monitor_doing_tasks()
# 6. 回收完成的任务
self.collect_completed_tasks()
# 7. 归档经验(学习循环)
self.archive_experiences()
# 8. 处理超时和失败
self.handle_timeouts_and_failures()
# 9. 生成状态报告
self.generate_status_report()
# 10. 等待下一轮
sleep(self.config.poll_interval) # 默认 5 秒
def launch_agent(self, agent_name: str, task: Task):
"""启动或复用 Agent 的 tmux pane"""
# 1. 确保 tmux session 存在
if not self.tmux.session_exists("hermes"):
self.tmux.new_session("hermes")
# 2. 检查 pane 是否存在
pane_name = f"agent_{agent_name}"
if not self.tmux.window_exists("hermes", pane_name):
self.tmux.new_window("hermes", pane_name)
# 启动 Claude Code
cmd = f"claude code --dangerously-skip-permissions"
self.tmux.send_keys("hermes", pane_name, cmd)
# 等待 Claude 启动
sleep(3)
# 3. 构建注入 prompt
prompt = self.build_injection_prompt(agent_name, task)
# 4. 发送任务
self.tmux.send_keys("hermes", pane_name, prompt)
# 5. 更新运行时状态
self.update_runtime(agent_name, status="busy", current_task=task.id)
| 方案 |
实现 |
优点 |
缺点 |
推荐度 |
| tmux send-keys |
直接发送 prompt 到 pane |
简单直接,无需额外依赖 |
需要 Claude 在等待输入状态 |
⭐⭐⭐⭐⭐ |
| Agent 轮询 |
Claude 定时检查 tasks/doing/ |
不依赖注入时机 |
浪费 token,延迟高 |
⭐⭐⭐ |
| 文件触发 |
写入任务文件,Claude 监控 |
解耦 |
Claude 不支持文件监控 |
⭐⭐ |
推荐方案:tmux send-keys
- Claude 在 YOLO 模式下会等待用户输入
- Orchestrator 通过 send-keys 发送任务 prompt
- Claude 接收后自动开始执行
def check_task_completion(self, agent_name: str, task_id: str):
"""检测任务是否完成"""
outbox_dir = f"outbox/{agent_name}/{task_id}"
# 方案 1:DONE 标记文件(最快)
if os.path.exists(f"{outbox_dir}/DONE"):
return "completed"
# 方案 2:summary.md 存在
if os.path.exists(f"{outbox_dir}/summary.md"):
return "completed"
# 方案 3:心跳检测
heartbeat = self.read_heartbeat(agent_name)
if heartbeat and time.now() - heartbeat < 60:
return "running"
# 方案 4:超时检测
task_start = self.get_task_start_time(task_id)
if time.now() - task_start > self.config.timeout:
return "timeout"
return "unknown"
┌─────────────────────────────────────────────────────┐
│ 公司级学习循环 │
│ │
│ 任务完成 → Orchestrator 读取 summary │
│ ↓ │
│ 提取关键经验 → memory/experiences/ │
│ ↓ │
│ 识别可复用模式 → company/skills/ │
│ ↓ │
│ 记录踩坑教训 → memory/lessons/ │
│ ↓ │
│ 下次任务 → MemoryInjector 搜索并注入相关记忆 │
│ ↓ │
│ Agent 执行时参考历史经验 → 更强 │
└─────────────────────────────────────────────────────┘
# memory/laohuang/experiences/TASK-001.md
## 任务
开发知识库商品落地页
## 关键决策
- 使用 Next.js App Router 而非 Pages Router
- 数据库迁移使用 Drizzle ORM
- 部署到 Vercel,环境变量通过 Dashboard 配置
## 踩坑
- Vercel 构建超时:需要增加 timeout 配置
- 图片优化:使用 next/image 而非原生 img
## 可复用模式
- 落地页模板结构(见 company/skills/landing_page_template.md)
- Vercel 部署 checklist
## 日期
2026-04-26
# company/skills/landing_page_template.md
## 适用场景
需要快速搭建产品落地页时
## 技术栈
- Next.js App Router
- Tailwind CSS
- Vercel 部署
## 标准结构
/app
/page.tsx # 主页面
/layout.tsx # 布局
/components
/Hero.tsx # 首屏
/Features.tsx # 功能介绍
/Pricing.tsx # 价格
/Footer.tsx # 页脚
## 部署 checklist
- [ ] 配置 Vercel 项目
- [ ] 设置环境变量
- [ ] 配置自定义域名
- [ ] 启用 Analytics
| 约束 |
值 |
说明 |
| 最大 Agent 数 |
3-5(V1) |
受限于 token 成本和 tmux 管理 |
| 每 Agent 同时任务数 |
1 |
避免上下文混乱 |
| 调度策略 |
FIFO + owner 优先 |
简单可预测 |
| 任务锁 |
文件锁(flock) |
防止竞态 |
def lock_task(self, task_path: str, agent_name: str) -> bool:
"""原子锁定任务"""
lock_path = f"{task_path}.lock"
try:
with open(lock_path, 'w') as f:
fcntl.flock(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
f.write(json.dumps({
"locked_by": "orchestrator",
"locked_at": now(),
"agent": agent_name
}))
doing_path = task_path.replace("/todo/", "/doing/")
shutil.move(task_path, doing_path)
return True
except BlockingIOError:
return False
| 机制 |
说明 |
| 权限审批 |
--dangerously-skip-permissions 仅用于受控环境 |
| 目录保护 |
通过 prompt 明确禁止修改核心目录 |
| 命令白名单 |
可在 AGENT_WORK_RULES.md 中定义允许的命令 |
| 超时控制 |
30 分钟未完成自动标记 blocked |
# company/AGENT_WORK_RULES.md
## 禁止行为
1. 删除 tasks/、agents/、orchestrator/ 目录
2. 修改 company/ 下的任何文件
3. 修改其他 Agent 的目录
4. 执行 rm -rf / 或类似高危命令
5. 无限循环执行(超过 30 分钟自动标记 blocked)
## 必须行为
1. 任务完成后必须写入 outbox/{agent}/{task_id}/summary.md
2. 必须创建 outbox/{agent}/{task_id}/DONE 标记
3. 必须记录工作日志到 logs/{agent}/YYYY-MM-DD.md
4. 遇到无法解决的问题必须标记 blocked 并说明原因
## 输出格式
summary.md 必须包含:
- 任务 ID 和标题
- 执行步骤摘要
- 产出物清单
- 遗留问题(如有)
- 建议下一步
| 任务 |
产出 |
验收 |
| 创建目录结构 |
所有目录就位 |
权限正确 |
| 配置 Agent Profile |
agents/{name}/profile.json + profile.md |
每个 Agent 身份定义完整 |
| 编写公司规则 |
company/AGENT_WORK_RULES.md |
包含安全约束和输出规范 |
| 编写任务模板 |
tasks/todo/TASK-001.md 示例 |
字段完整 |
| 编写 Runner 模板 |
runners/claude_runner.md |
prompt 模板可用 |
| 任务 |
产出 |
验收 |
| tmux 管理模块 |
tmux_manager.py |
能创建/销毁 session 和 window |
| 任务扫描器 |
task_scanner.py |
能读取 todo 任务 |
| 任务分配器 |
task_assigner.py |
能原子锁定并移动任务 |
| Agent 启动器 |
agent_launcher.py |
能启动 Claude 并注入任务 |
| 记忆注入器 |
memory_injector.py |
能搜索并注入相关记忆 |
| 状态监控器 |
monitor.py |
能检测 DONE、超时、心跳 |
| 经验归档器 |
experience_archiver.py |
能从 summary 提取经验 |
| 主循环 |
main.py |
完整调度循环运行 |
| 任务 |
验收 |
| 创建测试任务 |
手动创建 TASK-001.md |
| 启动系统 |
python orchestrator/main.py |
| 观察自动执行 |
tmux 中 Claude 开始工作 |
| 检查结果 |
outbox 中有 summary.md 和 DONE |
| 验证状态流转 |
todo → doing → review |
| 验证学习循环 |
memory/ 中有经验归档 |
| 任务 |
说明 |
| 向量搜索记忆 |
用嵌入模型替代关键词匹配 |
| 技能自动提取 |
从 summary 自动识别可复用模式 |
| 多引擎支持 |
同时支持 Claude 和 Codex |
| Docker 沙箱 |
Agent 在容器中执行 |
| Web Dashboard |
任务看板 + 实时监控 |
我只创建任务
↓
Orchestrator 自动分配给 Agent
↓
Claude/Codex 自动执行(使用工具、参考记忆)
↓
outbox 中看到结果 + DONE 标记
↓
经验自动归档到 memory/
↓
下次类似任务能注入相关历史经验
- 还需要手动启动 Claude
- 还需要手动复制任务给 Agent
- 没有 outbox 输出
- 任务完成后没有经验归档
- 下次任务没有注入历史经验
| 决策点 |
选择 |
理由 |
| 执行引擎 |
Claude Code / Codex |
最强代码能力,零配置 |
| 任务注入 |
tmux send-keys |
简单直接,Claude 等待输入 |
| 完成信号 |
DONE 标记文件 + summary.md |
简单可靠 |
| 并发控制 |
文件锁(flock) |
V1 够用,无额外依赖 |
| 每 Agent 任务数 |
1 |
避免上下文混乱 |
| 最大 Agent 数 |
3-5 |
受限于成本和复杂度 |
| 记忆实现 |
文件系统 + 关键词搜索 |
V1 简单,后续可升级向量搜索 |
| 学习循环 |
Orchestrator 归档 + 注入 |
公司层面实现,不依赖执行引擎 |
| 风险 |
影响 |
缓解措施 |
| Claude 会话崩溃 |
Agent 停止工作 |
tmux 自动重启 + Orchestrator 检测 |
| 任务丢失 |
任务未执行 |
任务锁 + 轮询兜底 |
| Token 成本超支 |
费用失控 |
每 Agent 配置模型上限 + 监控 |
| Prompt 注入失败 |
Agent 不理解任务 |
验证 prompt 格式 + 重试机制 |
| 记忆膨胀 |
搜索变慢 |
定期清理 + 摘要压缩 |
| 并发竞态 |
多 Agent 抢任务 |
文件锁 + Orchestrator 集中分配 |
| 维度 |
Nous Hermes Agent |
我们的方案 |
| 执行引擎 |
自有 AIAgent 循环 |
Claude/Codex |
| 多 Agent |
子 Agent 委托 |
tmux 多实例并行 |
| 记忆 |
SQLite + FTS5 |
文件系统 + 关键词搜索 |
| 技能 |
自动创建 + 进化 |
手动归档 + 共享库 |
| 学习循环 |
内置 |
公司层面实现 |
| 工具 |
47 个内置 |
Claude/Codex 自带 |
| 调度 |
无 |
Orchestrator 集中调度 |
| 可观察性 |
日志 + CLI |
tmux 实时可见 |
| 成熟度 |
118k stars |
概念阶段 |
核心定位差异:
- Nous Hermes = 一个强大的单体 Agent
- 我们的方案 = 多个 Agent 的公司操作系统
文档生成时间:2026-04-26
版本:V1.5 集成架构设计
- Hermes 作为核心执行引擎,结合 Orchestrator 的调度能力,实现多 Agent 并行执行、任务自动分派和产出封装的闭环流程。<br>
- 通过 tmux 容器,在同一主机上可观测地运行多个 Agent 实例,提升吞吐与可见性。<br>
- 任务的输入/输出格式标准化:任务票(tasks/),交付物(outbox/),日志(logs/),记忆与技能按代理/公司维度分区存储,便于追踪与审计。<br>
- 引入公司层面的记忆归档和技能共享机制,降低单点知识依赖,利于后续迭代扩展。<br>
- 提供渐进式集成路径:从半自动任务创建到全自动任务执行,逐步将人机协作推向无人值守闭环。
- 依赖 Claude/Codex 的成本与速率:执行层依然高度依赖外部模型,成本与 API 限制可能成为制约点;需要明确的限额与预算策略
- 安全与权限风险:高危操作的执行需要严格的审批、最小权限及审计日志;若未充分控制,可能造成数据暴露或系统破坏
- 记忆与隐私:本地记忆文件与凭证需加密、妥善管理,避免敏感信息泄露
- 并发与一致性:多 Agent 并行时需强原子性保障,避免重复执行或输出写入冲突
- 调试与运维成本:多 Agent/多 Pane 带来调试复杂性,需要统一日志/追踪与错误回放工具
- 兼容性与扩展性:MCP、插件、外部工具接入点增多,需要接口契约与版本管理
- 恢复与容错:需要明确的灾难恢复策略(日志、快照、输出重放)
- 自动化完成率:无需人工干预完成的任务比例,初期目标 ≥ 60%,逐步提升
- 交付物完整性:每个任务产生 summary.md、DONE、outbox 条目,且可追溯
- 吞吐与耗时:平均完成时间下降,在高并发场景下保持稳定
- 记忆与技能增长:memory 与 company/skills 的新增/改进体现学习效果
- 安全合规性:无敏感数据泄露,日志可审计,关键操作有记录
- 可靠性:崩溃后能快速恢复运行,最小化人工干预
- 用户体验:仪表板/看板提升可观测性和可控性
- 扩展安全边界:增强 AGENT_WORK_RULES.md,加入审批、日志、回滚策略
- 提升并发与可靠性:实现更健壮的锁、幂等性、重试与回滚
- 加强记忆与技能能力:引入跨任务记忆检索、向量化记忆草案、技能跨 Agent 复用
- 增强观测性:开发实时看板、任务流/行为流/产出流的可视化面板
- 确定阶段性验收标准和回滚计划,确保逐步交付与回退能力
- 单个 Claude/Codex 实例可以自由选择或指定参数使用不同的技能包来开发项目,涵盖如 Superpowers、gsd、ecc、gstack 等组合,提升灵活性与适配性。
- 调用方式(示例)
- 全局配置方式:在 Agent 配置中增加字段
skills_pack: ["superpower", "gsd"],执行引擎在调用时自动按需装载对应技能模板。
- prompt 指定方式:在任务 prompt 内明确声明如 "使用技能包: superpower, gsd",执行时按该集合加载策略与工具集。
- API/任务参数方式:任务对象加入字段
skill_pack: ["ecc", "gstack"],在执行时解析并装载。
- 支持的技能包示例
- Superpowers:完整的快速设计、计划与执行工作流,强规则约束与可追踪性
- gsd:研究/计划/实现的综合工作流
- ecc(Everything Claude Code):工具集、执行模板、合规检查等
- gstack:组合化工作流栈,跨工具协同能力
- 注意事项
- 成本与性能:不同技能包组合会影响模型调用成本与延迟,应结合预算约束进行负载规划
- 安全性:某些技能包可能赋予更高的写入/执行权限,需要额外的审批与日志
- 版本与兼容性:技能包版本需要与模型/工具版本保持一致,避免兼容性问题
- 追踪与审计:切换技能包应产生清晰日志并更新记忆/技能上下文
- Hermes Company OS 的数据入口仍然是文件系统为主,结合 Hermes 的走向,未来可逐步引入事件总线和 API 对外暴露。
- 任务、记忆、交付物等路径保持向后兼容性,确保逐步迁移无缝进行。
- 记忆与技能的生命周期需要明确的版本控制和回滚策略,确保系统稳定性。
文档生成时间:2026-04-26
版本:V1.5 集成架构设计