
起因
上周读到 Daniel Warfield 的 《Agent Harnesses:现代 AI Agent 开发的新标准》(原文 Daniel Warfield,Medium/Substack)。核心观点:
Harness = 角色 + 上下文 + Skills + References 的结构化打包,让通用 Agent 在具体任务中稳定、可复用、可维护地工作。
三层结构:
HARNESS.md—— 入口地图skills/—— 能力包references/—— 环境手册
设计原则:Progressive Disclosure(渐进披露)——先读入口,按需加载,别一次性塞满上下文。
对照 Hermes:它本质上已经是 Harness
读完后我没急着加文件,先把 Hermes 现有架构拆开对照:
| Harness 概念 | Hermes 对应 | 判断 |
|---|---|---|
SKILL.md + scripts/references/assets | ~/.hermes/skills/ 99 个 skill,完整目录结构 | ✅ 一致 |
| Skills 目录 | 已按 category 分子目录(devops/、creative/ 等) | ✅ 更成熟 |
| References | 每个 skill 内 references/(如 hugo-blog 有 31 个) | ✅ 已有 |
| Progressive Disclosure | system prompt 只注入 skill name+desc → skill_view(name) 加载全文 → skill_view(name, file_path) 加载单个 reference | ✅ 三层已实现 |
| 角色约束 | MEMORY.md + USER.md + system prompt 身份注入 | ⚠️ 隐式实现 |
| 可版本化 | skills/ 有 git + curator 生命周期 | ✅ |
| 子目录导航 | category 分层 + system prompt 缩进列表 | ✅ |
结论:Hermes 不需要引入 Harness 标准——它已经是 Harness 思想的另一种实现。区别只是组织方式不同:
Harness 标准: HARNESS.md → skills/ → references/
Hermes 实际: system prompt → MEMORY.md/USER.md → skills_list → skill_view → skill_view(file_path)
真正的改善:3 点,零新文件格式
既然已有机制,就用好它们。
1. MEMORY.md 加核心 skill 索引
痛点:99 个 skill 平铺在 system prompt 里,每次 session 开局 agent 都要从头猜「该加载哪几个」。
改善:在 MEMORY.md(每 session 自动注入)加一行:
Core skills per session: hugo-blog, cloudflare-api-deploy, hermes-agent, cron-reminder-debugging, daily-execute-blocks, systematic-debugging.
效果:session 启动即知道最常用的 6 个 skill,不用靠 99 个列表猜。
2. STATE.md 高信号搬家
痛点:按 Fable 5 框架建的 ~/.hermes/STATE.md 很完整,但 Hermes 没有自动注入机制——它永远不会被 session 读到。
改善:把高信号内容搬进 MEMORY.md(自动注入):
- cron 双通道已解决、[SILENT] 规则已移除、AGENTS.md 位置
- 约束行更新(如
delegation.model待设置轻量模型)
STATE.md 保留为诊断日志(§3 Open Failures、§4 Lessons Learned),定位正确。
3. /root/hugo-blog/AGENTS.md 项目级 Harness
痛点:写博客、部署、跑 cron 时,agent 要么手动 skill_view,要么凭记忆找部署命令。
改善:在项目根目录放 AGENTS.md。Hermes 的 terminal(workdir=...) 和 cron workdir=... 会自动加载该目录下的 AGENTS.md / CLAUDE.md 到 system prompt。
内容包含:
- 角色定义:NFY 的个人 AI 助手,主域 Hugo 博客发布 + CF 部署
- 部署 SOP(4 步标准化)
- 6 个核心 skill + 5 个关键 reference 索引表
- 写作规则(日期不超前、本地配图、YAML frontmatter)
- 常见坑表(7 项,如 baseURL、TOML/frontmatter、Vercel 反射性触发等)
现在 terminal(workdir=/root/hugo-blog) 一跑,上下文全在了。
关键设计原则:不引入新标准
这 3 件事没有新增任何:
- ❌ 新文件格式
- ❌ 新注入机制
- ❌ 新目录结构
- ❌ 新工具
全部利用 Hermes 已有的注入链路:
| 改善 | 利用的既有机制 |
|---|---|
| MEMORY.md 索引 | memory 工具 → 每 session 自动注入 |
| STATE.md 搬家 | 同上 |
| AGENTS.md | workdir 参数 → 自动读取项目级上下文 |
Harness 标准里的 HARNESS.md、SKILLS.md、REFERENCES.md 文件,在 Hermes 里分别对应 MEMORY.md、system prompt available_skills、skill 内部 references——不用重复造轮子。
部署验证
cd /root/hugo-blog
hugo --gc --minify
# baseURL ok ✅ | article rendered ✅
CLOUDFLARE_API_TOKEN=*** node /root/.hermes/node/lib/node_modules/wrangler/bin/wrangler.js \
pages deploy public/ --project-name=ningop-blog --branch=main --commit-dirty=true
# Deployed ✅
curl -sI https://ningop.com/posts/weekly-2026-w28/ | head -3
# HTTP/2 200 ✅
下周关注
delegation.model设置轻量模型 —— 子代理不再继承主模型(z-ai/glm-5.2),落地模型分工降本- cron 任务验收 —— 观察 14 个提醒在双通道下的送达率
- AGENTS.md 实战 —— 下次写博客/部署时看
workdir自动注入的效果