Harness 工程宣言
什么是 Harness,为什么这个项目是 Harness 2026-06-12 · 最终确认
一、这是 Harness 吗?
是的,这个项目是 Harness。
Harness 的定义
Harness(马具)在软件工程中是一种骨架型基础设施——它不产生业务价值,而是协调多个独立组件协同工作。
判断标准
| 特征 | 本项目 | 说明 |
|---|---|---|
| 不写业务代码 | ✅ | 不实现 JWT、不写 CRUD、不做 UI |
| 只搭协作框架 | ✅ | STATUS.md 协议 + n8n 路由 + SKILL.md |
| 协调多个进程 | ✅ | Hermes → CC → Codex 三 Agent |
| 各层可独立替换 | ✅ | 路由层/会话层/协议层解耦 |
| 体积小、模块化 | ✅ | 整套在 project-archive 项目内,不侵入业务项目 |
| 定义通信协议 | ✅ | STATUS.md 读写规范 + commit 消息约定 |
二、跟传统框架的本质区别
| 维度 | 框架(Framework) | Harness(马具) |
|---|---|---|
| 立场 | "你的代码按我的方式写" | "你的代码继续你的方式,我只管通信" |
| 侵入性 | 需要 import / 继承 | 零侵入(文件协议) |
| 升级 | 框架大版本可能有 breaking change | 不改协议就不受影响 |
| 心智负担 | 高(学 API / 注解 / 生命周期) | 低(一个文件 + 几条规则) |
| 调试 | 黑箱,框架内部不可见 | 全透明,STATUS.md 就是日志 |
| 可替换性 | 切框架等于重写 | 换路由层不改协议 |
三、Agent 的商品化
这个 Harness 的设计前提:
Agent 是商品,Harness 是差异化的。
- Claude Code 会变,Codex 会变,模型会变
- 但 CC 写代码 → Codex 审查 → 循环直到通过 这个模式不会变
- Harness 就是把这个模式固定下来,让底层 Agent 可替换
现在用的是 CC + Codex,明天换了 OpenCode + Claude Code 3?Harness 不变,改 SKILL.md 里的触发命令就行。
四、三层架构的可替换性
┌──────────────┐
│ 路由层 │ n8n → Dify → LangGraph → 自建脚本
├──────────────┤ 都行,只要做好一件事:收到事件 → 决策 → 注入
│ 会话层 │ Windows终端 → WSL tmux → Docker exec
├──────────────┤ 都行,只要 Agent 能收到命令
│ 协议层 │ STATUS.md → JSON → 数据库
└──────────────┘ 都行,只要 Agent 能读能写每一层都是一个协议接口。不改协议就能换实现。
五、跟 LangGraph 的对比
LangGraph 是多 Agent 图编排框架,跟本 Harness 是两回事:
| 维度 | LangGraph | 本 Harness |
|---|---|---|
| 通信 | Python 函数调用 | 文件系统(STATUS.md) |
| Agent 运行 | 子进程/线程 | 持久终端窗口 |
| 状态 | 内存 graph_state | 磁盘文件 |
| 可调试 | 断点 + print | 直接看文件 + git log |
| 耦合 | 代码级耦合 | 协议级耦合 |
| 上手成本 | 学 LangGraph API | 知道 STATUS.md 怎么写就行 |
LangGraph 适合: 纯代码内编排、函数级的 Agent 调用 本 Harness 适合: 独立 CLI Agent 窗口、文件系统协议、事件驱动
六、为什么不做成框架
用户说过一句话:
"不灵活你知道吗,我如果修改节点又做不到了,只能靠跟你吵架。我不能手动修改。"
Harness 的设计目标就是不让用户吵架。 所有文件都是:
- 打开的(TXT/MD,不是二进制)
- 可读的(中文说明 + 表格)
- 可改的(记事本就能改)
不依赖我,不依赖任何 Agent,一个人一把记事本就能看懂全部。
七、最终架构图
用户需求
│
┌────┴────┐
│ Hermes │ 规划 + 终审
└────┬────┘
│ STATUS.md
▼
┌──────────────────────────────────────────┐
│ n8n 路由层 │
│ git commit → webhook → 决策 → inject │
└────┬──────────────────────────────┬──────┘
│ tmux send-keys │ tmux send-keys
▼ ▼
┌────────────┐ ┌────────────┐
│ CC │ │ Codex │
│ 发散·实现 │◄────STATUS.md──► 收敛·审查 │
└─────┬──────┘ 文件协议 └─────┬──────┘
│ git commit │ git commit
│ curl POST n8n │ curl POST n8n
└──────────────┬────────────┘
│ 循环
▼
REVIEW-PASS
│
┌────┴────┐
│ Hermes │ 归档
└─────────┘这是 Harness,不是框架。