找回密码
 立即注册
首页 业界区 业界 Harness Engineering 学习与实践

Harness Engineering 学习与实践

任修 昨天 21:39
原文:https://openai.com/index/harness-engineering/
一、核心含义

Harness 的英文原意是“马具”(包括缰绳、鞍具等),用来控制马匹的方向和力量。借用到AI领域,Harness Engineering 就是为AI Agent“套上缰绳”、构建控制系统的工程实践。
它强调:不是去进一步优化AI模型本身(Model),而是优化模型运行的“环境”(Harness),让Agent在人类设定的边界内自主、可靠、可持续地工作。
核心理念一句话总结:“Humans steer, Agents execute”(人类掌舵,智能体执行)。工程师的角色从“手动写代码”转变为“设计AI的工作系统、环境和控制机制”。
二、为什么会出现 Harness Engineering?

随着AI模型(如Claude、Codex等)能力大幅提升,能自主生成大量代码(甚至百万行代码的项目),传统 Prompt Engineering(提示工程)或单纯的 Context Engineering(上下文工程)已不够用。问题包括:
Agent容易“跑偏”、幻觉、陷入循环或犯重复错误。
长时任务、复杂项目中,上下文窗口有限、记忆不持久。
缺乏可靠的反馈、验证和纠错机制,导致输出不可控或质量不稳定。
OpenAI 等公司在内部实验中发现:当完全不让人手写一行代码、全部靠Agent完成百万行代码项目时,关键不是换更强的模型,而是重新设计Agent运行的环境。于是 “Harness Engineering” 这个术语被正式提出和推广。
三、Harness Engineering 的主要组成部分

一个完整的 Harness 通常包括以下几个关键模块(不同资料表述略有差异,但核心一致):
约束机制(Guardrails / Constraints):定义规则、架构边界、权限控制,避免Agent做危险或无关操作。
反馈回路(Feedback Loops):实时验证、测试、观测(Observability),让Agent自我纠错或人类干预。
上下文管理(Context Engineering):动态提供知识库、文档、当前状态,确保Agent“知道自己在哪、该做什么”。
工作流控制与工具集成(Workflows & Tools):编排多步任务、调用外部工具、内存/状态管理。
持续改进与垃圾回收(Continuous Improvement & Entropy Management):清理无效上下文、积累经验、防止系统“熵增”(混乱积累)。
本质上,Agent = Model(大脑) + Harness(操作系统/缰绳)。Harness 决定了模型的智能能否真正转化为可靠的生产力。
与相关概念的区别
Prompt Engineering:关注单次输入提示的优化(已较早期)。
Context Engineering:更广义地管理Agent看到的上下文(Harness 的子集或前身)。
Harness Engineering:上升到系统级、全生命周期的工程实践,包含架构约束、反馈闭环、环境设计等,更注重长期可靠性与规模化。
实际意义与应用
在软件开发中:工程师设计规格、架构文档、验证流程,让AI Agent 自动写代码、跑测试、修复 Bug。
企业/团队层面:从“AI辅助编程”进化到“AI主导执行,人类主导设计”。
未来趋势:被视为AI Agent 时代软件工程的新范式,已有相关实践、工具和讨论在硅谷、OpenAI 等快速传播。
简单来说,Harness Engineering 解决的核心问题是:如何让强大的AI不失控地、稳定地完成复杂真实工作,而不是单纯追求模型参数更大或提示词更巧妙。
四、使用Ralph实践

1.创建AGENTS.md

如果使用Claude需要添加软链接(ln AGENTS.md CLAUDE.md),或者重命名为CLAUDE.md
  1. 你是一个经验丰富的 Harness Engineering 专家,正在使用 Ralph Wiggum Loop(snarktank/ralph)从零搭建项目。
  2. 当前项目是全新的 git 仓库,刚刚做了 initial commit。
  3. ## 你的唯一任务(只做这一件事,不要开始实现任何业务功能):
  4. 理解我对项目的整体需求(见下方描述)。
  5. 使用 PRD Creator 的思维方式,生成一个**结构化、细粒度、可执行**的 PRD。
  6. 将 PRD 拆解成多个小用户故事(user stories),每个故事要足够小(理想情况下 1-2 个小时内可完成)。
  7. 输出 `scripts/ralph/prd.json` 文件,格式严格遵循 snarktank/ralph 的要求(包含 id、title、description、priority、passes: false、branchName 等字段)。
  8. 同时创建或更新以下文件:
  9.    - `PRD.md` 或 `docs/prd.md`(人类可读版本)
  10.    - `progress.txt`(初始为空或只有 header)
  11.    - `AGENTS.md`(写入项目约定、编码规范、架构决策、质量门控规则等)
  12. 最后,创建一个 `setup.sh` 或 `dev.sh` 脚本,用于启动开发服务器、运行测试等。
  13. 项目需求描述:
  14. [在这里详细写你的项目一句话或多句话描述,例如:
  15. “构建一个简洁的个人任务管理工具(Todo App),支持用户注册/登录、创建/编辑/删除任务、任务优先级和截止日期、简单的看板视图。使用 Next.js 15 + TypeScript + Tailwind + shadcn/ui + Supabase 作为后端。需要移动端友好,支持暗黑模式。”]
  16. 严格规则:
  17. - 每次只完成一个小步骤,不要一次性做完所有事。
  18. - 完成后请 commit 更改,并输出总结:“PRD 和初始 harness 已准备好,可以开始运行 ./scripts/ralph/ralph.sh 进入自主循环。”
  19. - 优先级从高到低排序核心 MVP 功能。
  20. - 强调质量门控:每个故事完成后必须能通过 build / test / lint。
  21. 现在开始工作。
复制代码
2.初始化仓库
  1. git init
复制代码
3.安装Ralph

仓库地址:https://github.com/snarktank/ralph
有三种方式:

  • 下载Ralph仓库文件复制到当前项目
  • 下载Ralph仓库文件复制到 Amp/Claude Code 的全局配置目录
  • 使用Claude插件市场添加,一键安装所有技能
本人使用方式三
  1. # 添加插件市场
  2. /plugin marketplace add snarktank/ralph
  3. # 安装Ralph
  4. /plugin install ralph-skills@ralph-marketplace
  5. # 刷新插件
  6. /reload-plugins
  7. # 如果没有 /ralph命令就退出重新启动claude
  8. /exit
  9. claude
复制代码
4.执行Ralph

通过内置 /prd 技能,由 AI 生成结构化的 Markdown 格式 PRD,需回答 AI 的澄清问题,文件保存至tasks/prd-[feature-name].md
通过 /ralph 技能,将 Markdown PRD 转换为 JSON 格式的prd.json,该文件包含带优先级、完成状态的用户故事,是 Ralph 的核心执行依据
生成如下文件表示成功:
1.png


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册