【Harness Engineering】01_为什么需要给 AI 代理造一个驾驶舱
源码地址https://github.com/wquguru/harness-books如果你最近在关注 AI 编程工具一定听说过 Claude Code。很多人把它看作一个“能跟你聊天、顺手改代码的 CLI”。但如果只看到这一层就错过了它设计里最有价值的部分。真正让 Claude Code 区别于“挂了个工具调用的 ChatGPT”的是一整套看不见的控制结构。作者在源码里把它称为Harness Engineering——你可以理解为给 AI 代理造一个驾驶舱。本文从工程视角聊清楚一个核心判断代理系统的关键能力不是“模型有多聪明”而是“系统有多能约束执行”。一、问题本质1.1 核心矛盾一个 LLM 如果只能输出文本最坏的情况是“它说得不太对”。但当它能访问 Shell、Git、文件系统和网络时问题性质就变了——从“回答不够好”变成了“执行可能造成实际破坏”。Harness Engineering 要处理的就是这个底层现实模型天然不值得信任。这不是对 AI 的道德评判而是一个工程前提。忽视它的系统最后多半会在事故记录和回滚日志里付出代价。1.2 设计目标所谓 Harness Engineering就是把一个不稳定的核心部件约束成可管理系统的那一套制度化控制平面。它要处理的现实只有一条模型并不天然值得信任。这个判断未必轻松但通常有用。二、第一层 Harness分层控制结构很多人对“控制 AI”的理解还停留在写一段漂亮的 system prompt。但 Claude Code 在实现上把 prompt 放进了运行时的控制结构里——它不只是“告诉模型该怎么做”而是规定了执行边界、失败行为和报告责任。2.1 身份与运行时分离从源码的组织方式可以看得很清楚系统先定义身份和总任务再补上关于工具、权限、系统提醒和上下文压缩的系统级说明最后补上做任务时的工程约束比如不要越权改动、不要把验证说成已经完成这说明了一个朴素的工程事实一个真正可用的代理系统不能依赖一段“万能提示词”解决所有问题。它必须把控制拆成层把层次拆成职责。否则新增一条禁令和旧规则冲突时系统行为会变得不可预测。2.2 分段拼装与优先级规则代码里很清晰地展示了这一点系统提示词是分段拼装的静态部分和动态部分严格分离memory、language、output style、MCP instructions 等内容按段注入默认 prompt、自定义 prompt、agent prompt 和 append prompt 之间有明确的优先级规则2.3 不变式三条硬约束1. 身份 ≠ 运行时 —— prompt 的分层必须完整 2. 工具受调度 —— 任何工具调用前必须经过调度决策 3. 错误进主路径 —— 可恢复错误必须走规定的恢复或终止路径这三条一旦被越过后面所有关于循环、工具、上下文和恢复的机制都会变得不可靠。三、第二层 Harness持续循环状态如果说 prompt 规定了系统“应该成为什么样的东西”那么 query loop 规定了它“实际上如何运行”。3.1 状态跨轮次传递Claude Code 的核心不在某个单独的 API 调用而在一个持续运行的 query loop。这个循环把以下内容全部放进同一个跨迭代状态里messages消息历史toolUseContext工具使用上下文autoCompactTracking自动压缩追踪maxOutputTokensRecoveryCount输出令牌恢复计数turnCount轮次计数transition状态转换一旦这么设计就等于正式承认上一轮留下的问题会进入下一轮系统必须有能力持续处理。3.2 Harness 思维的核心问题真正的问题不在于模型能不能答对这一轮而在于系统能不能在连续多轮里保持行为一致有没有预算概念有没有恢复概念有没有上下文膨胀后的自救机制有没有在工具调用失败后继续推进任务的能力缺少这些结构所谓的“智能体”就只是一个不稳定的执行者。3.3 调用前收回控制权这个循环在每轮调用前还会处理消息裁剪工具结果预算历史片段微压缩上下文塌缩处理自动压缩这些实现细节共同指向一点Claude Code 在调用发生前就尽量把控制权收回到运行时一侧。这也是为什么 Harness Engineering 不能被看作 prompt engineering 的附属品——前者关心状态机后者关心措辞。措辞当然重要但状态机决定系统行为最终由谁负责。四、第三层 Harness工具调用调度模型一旦能调用工具风险就从修辞层面跳到执行层面。这时候最核心的问题是谁决定工具怎么跑4.1 并发调度纪律Claude Code 的答案很明确运行时会根据工具属性决定并发还是串行。工具调用先经过分组系统读取工具 schema判断一个工具是否适合并发执行能并发的归一批不能并发的按顺序逐个执行并发路径中上下文修改器会先缓存再按原始顺序回放4.2 核心原则这背后有一个重要原则工具没有被当成模型能力的自然延伸而是被当成需要调度纪律的受管执行单元。缺少调度纪律的工具系统只会把模型的不稳定性放大到外部世界。尤其是在涉及文件、终端和权限的场景里保守的调度策略往往比激进的并发更可靠。4.3 为何保守并发如果不受约束就会扩大事故半径。Claude Code 在这一点上采取了偏保守的策略——在会碰到文件、终端和权限的场景里这种保守通常更可靠。五、第四层 Harness高风险工具的高密度约束在所有工具里Bash 最值得警惕。它几乎不受领域边界约束可以直接接触文件、进程、网络和 Git 仓库还会带上重定向、管道等复杂 shell 语义。5.1 操作规约Claude Code 对 Bash 的态度体现在一段详细的操作规约里不要乱改 git config不要跳过 hooks不要随手git add .不要在 pre-commit 失败后用--amend连带修改上一条提交不要在没有明确要求时提交不要默认 push5.2 核心原则有人会觉得这些规则过于细碎。但高风险接口天然需要高密度约束。Bash 一旦进入真实工作流很多规则必须明确写出来不能靠模型的“常识”去判断。Harness Engineering 的一个重要原则就是能力越强控制越细。原因很简单外部世界不会因为模型语气坚定就自动原谅一次错误执行。六、第五层 Harness失败是主路径很多软件把失败路径看作“例外”把成功路径看作“正文”。代理系统不能这么做。6.1 失败稳定存在代理系统的失败是稳定存在的不是偶发的模型会超 token会触发prompt too long会撞上max_output_tokens会遇到工具拒绝、用户打断、API 重试还会遇到 hook 阻塞等各种中断6.2 结构化处理如果这些情况都只在最后用几个catch打发掉系统表面上在运行实际上只是不断把麻烦往后滚。Claude Code 在 query loop 里把失败当作结构性条件来处理——在调用发生前就尽量把控制权收回到运行时一侧。6.3 与普通助手的差别普通助手先回答错了再道歉Harness 先约束再执行出错按恢复路径处理不靠临场发挥补救。一个会道歉的系统不一定成熟。一个知道何时不该开始、何时该重试、何时该中止、何时该准确汇报失败的系统才更接近成熟。七、总结7.1 五个源码位置指向同一结论源码位置结论constants/prompts.tsprompt 是控制平面的一部分不是人格装饰utils/systemPrompt.ts系统行为必须有清楚的分层优先级query.ts代理运行依赖持续的循环状态不是单次问答services/tools/toolOrchestration.ts工具调用必须服从调度纪律tools/BashTool/prompt.ts高风险工具必须伴随高密度约束7.2 Harness Engineering 不神秘它只是坚持了几条常被忽视的工程常识模型会犯错工具会扩大错误后果上下文会膨胀状态会污染下一轮用户会打断你失败会反复出现7.3 最终结论系统不能靠“聪明”维持秩序只能靠结构维持秩序。结构不像聪明那样显眼但通常更可靠。

相关新闻

解决Codex/ChatGPT工具合并后中文界面丢失与插件拓展指南

解决Codex/ChatGPT工具合并后中文界面丢失与插件拓展指南

如果你最近在 Windows 上使用 Codex 或 ChatGPT 相关的开发工具,发现界面突然变成了英文,或者压根找不到切换语言的选项,先别急着怀疑自己的操作。这很可能不是你一个人的问题,而是近期一次服务端合并更新带来的“副作用”。 很多…

2026/10/4 16:06:42 阅读更多 →
闲置的Joy-Con别吃灰,一个开源驱动让它3分钟变身PC手柄

闲置的Joy-Con别吃灰,一个开源驱动让它3分钟变身PC手柄

闲置的Joy-Con别吃灰,一个开源驱动让它3分钟变身PC手柄 【免费下载链接】JoyCon-Driver A vJoy feeder for the Nintendo Switch JoyCons and Pro Controller 项目地址: https://gitcode.com/gh_mirrors/jo/JoyCon-Driver JoyCon-Driver 是一款免费开源的 Wi…

2026/10/12 23:23:54 阅读更多 →
DeepSeek-V4.5 671B 稀疏架构对后端推理网关容量模型的底层重构

DeepSeek-V4.5 671B 稀疏架构对后端推理网关容量模型的底层重构

DeepSeek-V4.5 671B 稀疏架构对后端推理网关容量模型的底层重构背景上周业务方提了一个需求:现有推理网关每天调用 DeepSeek 系列 API 的账单涨了 40%,但 QPS 只增长了 15%。排查下来发现,团队一直按"单模型均匀负载"的逻辑做容量规…

2026/10/4 14:35:01 阅读更多 →

最新新闻

fabric.js绘制直线:从基础到进阶实战

fabric.js绘制直线:从基础到进阶实战

1. 项目概述在Web前端开发中,Canvas绘图是一个非常重要的技能点。而fabric.js作为一款强大的Canvas库,能够大大简化我们操作Canvas的过程。今天我们就来聊聊如何使用fabric.js在画布上添加最基本的图形元素——直线。作为一个长期使用fabric.js的开发者&…

2026/10/14 13:32:31 阅读更多 →
阿里云部署Qwen-Image-2.1云端适配实战指南

阿里云部署Qwen-Image-2.1云端适配实战指南

1. 为什么“云端部署Qwen-Image-2.1”不是一句空话,而是必须重新定义的工程实践 你搜到这篇教程时,大概率正卡在三个地方:一是本地显存不够跑不动7B参数量的多模态模型,二是反复尝试Docker Compose拉镜像失败后看到报错 failed t…

2026/10/14 13:32:31 阅读更多 →
PyTorch显存泄漏定位与修复实战指南

PyTorch显存泄漏定位与修复实战指南

1. 这不是显存不够,是显存正在“悄悄逃跑”——为什么训练越跑显存越高?你有没有遇到过这样的场景:模型刚启动时,nvidia-smi 显示显存占用 3.2GB,一切正常;跑完第10个batch,涨到 4.1GB&#xff…

2026/10/14 13:32:31 阅读更多 →
Aspose.Words 文档自动化实战:模板填充、表格与性能优化

Aspose.Words 文档自动化实战:模板填充、表格与性能优化

1. 为什么文档自动化绕不开 Aspose.Words做过企业级系统开发的人都有一个共识:文档处理是最容易被低估的脏活累活。尤其是 Word 文档,业务部门的需求永远在变——今天要批量生成合同,明天要把数据库里的报表导出成带页眉页脚的正式文件&#…

2026/10/14 13:32:31 阅读更多 →
OpenClaw自动化框架:零代码构建工作流的实战指南

OpenClaw自动化框架:零代码构建工作流的实战指南

1. 项目背景与核心价值2026年的OpenClaw(Clawdbot)正在重新定义自动化工作流程的标准。这个开源机器人框架的最新迭代版本,通过模块化技能包(Skills)的即插即用特性,让非技术人员也能快速构建复杂的自动化任…

2026/10/14 13:32:31 阅读更多 →
家电品牌出海GEO优化公司推荐:家电品牌如何判断服务商实力

家电品牌出海GEO优化公司推荐:家电品牌如何判断服务商实力

家电品牌做 GEO,首先要解决的是信息能否被 AI 讲对。型号、容量、认证、安装和售后等内容,都需要按目标市场整理,并通过持续监测验证实际呈现。 家电品牌在评估广拓时代CantoTimes时,可以重点看其自研系统、产品资料整理、海外内容…

2026/10/14 13:31:30 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →