迈向自修复、可重复的 AI 系统
Agent Harnesses 标准的最新进展
AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo
我已经在 Agent Harnesses 标准上工作了几个月,并用它来自动化我工作流中的关键任务。我想分享我是如何使用它的、我围绕它构建的工具、这些工具的特性,以及以标准化方式定义智能体角色所带来的实际影响。
1、Agent Harnesses 标准的目标
从根本上说,这个想法是把整个文件夹层级中信息的组织方式标准化,让信息更容易被 Claude 这类 AI 系统发现。随着项目逐渐成熟,这个目标开始结晶为一组子目标:
- 人们每天会借助智能体完成多项任务。当智能体需要同时协调多个角色时,它们常常会感到困惑。Agent Harnesses 标准的目标之一,就是让这些角色的创建、维护和隔离变得更加容易、更加直观。
- 当一个智能体被设计来处理一个包含多重职责的复杂角色时,履行该角色所需的上下文和工具会变得非常多。这可能导致关键工具被误用。Agent Harnesses 标准的另一个目标,是让上下文和工具得到更好的组织。
- 无论信息的组织模式如何,如果智能体无法高效地找到这些信息,一切都是无用的。Agent Harnesses 标准的另一个目标,是以一种能被 AI 系统有效、高效且低成本理解的方式,来组织履行某个角色所需的上下文和信息。
- 如果放任智能体系统自我更新,它们很快就会偏离人类的理解。Agent Harnesses 标准的一个目标是:鼓励 AI 系统遵循人类能够轻松理解、编辑、调整并就其与智能体对话的结构,从而保留人类的可理解性。
我认为这些问题都还没有得到彻底解决,但 Agent Harnesses 标准是一个有用的框架,让我能够迭代这些难题,并且明显更容易地驾驭它们。我想先简要描述这个标准,然后再介绍一些我为加速相关工作流而构建的工具。
2、标准概要
Agent Harnesses 标准本质上是对技能标准(skills standard)的扩展。
如果你熟悉技能标准,它归结为使用一个名为 SKILL.md 的单一 markdown 文件,该文件描述智能体可以用来做事的上下文和工具。你可能有一个名为 send-email 的目录,里面包含一个描述该技能的 SKILL.md 文件,以及一些智能体可以执行以发送邮件的代码。
send-email/
├── SKILL.md
└── scripts/
└── send_email.py
实际的 SKILL.md 文件包含 send-email 目录中所有脚本和引用的信息,让智能体只需读取一个 markdown 文件就能了解如何使用技能中的资源,而不必阅读所有文件、理解所有代码。这节省了时间,也让技能的执行更加一致。如果你想了解更多细节,我专门写过一篇关于这个主题的文章。
Agent Skills - Intuitively and Exhaustively Explained - 为智能体系统定义可复用的计划
这个标准很简单,但很棒。它之所以出色,是因为它实现了几个关键的事情:
- 高效抽象大批量信息,让 AI 模型能快速理解复杂的功能。
- 单一入口点。你知道智能体在用它做其他事情之前会先查看
SKILL.md,所以你可以恰到好处地引入关键的提示信息,而不是试图让智能体在系统提示中理解整个项目的一切。 - 共享标准。技能不依赖于特定模型或提供商,为一个智能体定义的技能很可能也能用于另一个智能体,因为技能标准已被广泛采用。
然而,技能并非完美无缺。
例如,Claude 将技能组织成扁平目录结构。如果你只有少数几个技能,这没问题;但如果技能很多,或者技能需要存在于某种顺序工作流中,要让模型始终如一地执行高级任务就会很麻烦。你可能有 send-email、look-up-user-preferences 和 view-purchasing-history 这些技能,但如果你想以特定方式让模型执行这些技能,比如在发送邮件前先查找用户并查看其购买历史,就没有标准方式来定义这种意图。Agent Harnesses 标准试图通过层级组织结构来解决这个问题。
Agent Harnesses 标准允许你在层级结构中指定技能,并创建关键的路由文档,向智能体描述信息应如何使用。例如,我们可以有以下结构:
email-client/
├── EMAIL-CLIENT.md
├── send-email/
├── look-up-user-preferences/
└── view-purchasing-history/
其中 send-email、look-up-user-preferences 和 view-purchasing-history 都是带有各自 SKILL.md 文件的技能文件夹。EMAIL-CLIENT.md 文件来自 Agent Harnesses 标准,被称为"路由文件"(routing file)。它充当入口点,让智能体理解在与客户邮件沟通的上下文中应如何使用这些技能。
这些组织可以采用高阶结构。假设你还需要给客户打电话或寄送实体邮件。这些可以是各自的目录,每个目录都带有路由文件,让 AI 系统能快速理解这些高级功能及其各自的技能应如何、何时使用。
interactin-skills/
├── INTERACTION-SKILLS.md
├── email-client/
| ├── INTERACTION-SKILLS.md
| ├── send-email/
| ├── look-up-user-preferences/
| └── view-purchasing-history/
├── call-client/
| ├── INTERACTION-SKILLS.md
| ├── send-call/
| └── look-up-number/
└── mail-client/
├── INTERACTION-SKILLS.md
├── send-mail/
└── look-up-address/
如何组织一个 harness 完全取决于你自己,应该根据你所做的项目以及你希望 Claude 这类智能体在该项目中做什么来设计。
你可能会注意到,每个技能都有一个 INTERACTION-SKILLS.md。为了让路由决策对智能体和人类都更明显,子目录中的每个路由文件都继承了顶层子目录的名称。interactin-skills/ 中的所有路由文件都是 INTERACTION-SKILLS.md。下面是 agent harnesses 文档中一个更复杂的例子,它有两个顶层子目录。
my-harness/
├── HARNESS.md
├── tools/
│ ├── TOOLS.md
│ ├── backend/
│ │ ├── TOOLS.md
│ │ └── create-api/
│ └── frontend/
│ ├── TOOLS.md
│ └── build-ui/
└── data/
├── DATA.md
├── schemas/
│ ├── DATA.md
│ └── table-definitions.md
└── quirks/
├── DATA.md
└── known-issues.md
在 harness 的最顶层有一个 HARNESS.md 文件,它是整个 harness 的入口点。就像 SKILL.md 是技能的单一入口点一样,HARNESS.md 是 harness 的单一入口点,可以提供顶层路由信息,让智能体从某个特定起点导航整个 harness。
自从定义了 agent harnesses 标准的结构后,我一直在改进工具,让 Claude 能够高效地交互并管理这种结构。接下来,我想谈谈这些工具,以及我如何使用它们。
3、工具与工作流
我最近做出的最大的生活质量改进之一,是一个名为 ahar 的工具,它可以初始化遵循 agent harnesses 标准的仓库。可以通过以下方式用 pip 安装:
pip install agentharnesses-cli
这会安装 ahar,它可以用来做各种各样的事情。主要是初始化一个 agent harnesses 标准目录。
ahar init
目前,这会创建以下结构。你可以根据项目的性质修改它——agent harnesses 标准对文件夹名称不敏感,不过我发现在 HARNESS.md 之外再设置 skills/ 和 references/ 目录对我很有效。
my-harness/
├── HARNESS.md # entry point and agent identity
├── README.md # human-facing description
├── .gitignore
├── .claude/settings.json # registers the harness as a Claude Code plugin
├── skills/
│ └── SKILLS.md # skill index
└── references/
└── REFERENCES.md # reference index
如果你在配置中输入 claude,它还会创建"agent harnesses 元技能"(metaskill),这是一个 Claude 可以用来与 harness 交互的技能。
├── .claude/skills/agent-harnesses/ # metaskill for progressive harness exploration
└── skills/
└── maintenance/
├── SKILLS.md
└── modify-harness/
└── SKILL.md
现在,几乎每次我启动一个新仓库,我都会:
- 执行 git 初始化
- 调用
ahar init并指定 claude - 然后在命令行中运行
claude
当 Claude 运行时,我只需告诉它 load harness,它就会加载元技能,观察到 harness 是空的,然后询问我是否想做点什么。接着我告诉它我在做什么,它就开始为我搭建项目结构。
因为 Claude 通过元技能了解 agent harnesses 标准,它理解路由文件背后的意图,并拥有以编程方式与之交互的工具。这使 Claude 能够做到:
- 用单个命令行参数生成整个项目结构的高效摘要(借助元技能),让 Claude 一眼就能理解整个项目。
- 追踪整个项目层级中功能的引用,并根据用户反馈调整这些引用,使修改在跨会话中仍然可被发现,从而提高一致性。
- 以层级方式组织和结构化信息,这意味着我可以让 Claude 做大幅度的修改,而结果往往既合理又容易被我所理解。
Claude 在这方面的能力让我相当印象深刻。它与这个标准配合得很好,而且我发现它能高效地创建经过深思熟虑的组织系统。这让我能够启动多个子智能体、更新提示信息,并在这些路由文档中缓存关键信息,使 Claude 在不同会话中的行为更加一致。我认为最大的好处是分层缓存关键提示信息,这让系统实现了标题中提到的"自修复、可重复"的特性。
4、结束语
我很喜欢 Agent Harnesses 标准。无论它是否会得到广泛采用,它都显著提升了我的生产力,我会继续完善它。如果你感兴趣,不妨去看看。
原文链接: Towards Self-Repairing and Repeatable AI Systems
汇智网翻译整理,转载请标明出处