做了一个月Skills,我才理解Agent可靠性的本质
文章核心探讨了AI模型的不稳定性并提出通过构建“Harness”挽具工程来提升AI系统的可靠性。文章强调模型本身不可靠需要通过工程结构来确保稳定运行。具体阐述了Agent层面的Harness设计包括心跳循环、权限系统、上下文治理等八个方面以及Skill层面的Harness设置即任务层的规范化工程设计。文章最后指出AI系统的可靠性不在于模型的表达能力而在于出错后的处理机制即Harness工程思维的应用。前面的文章写过我把模型比作一匹马agent就是马身上的缰绳和挽具。[Skill写得好好的换模型就翻车缺的不是能力是Harness]这套缰绳能够让马变得更稳定制作好这个harness核心由三块构成agent与模型的交互方式skill也就是可以内嵌MCP、CLI、function calling的任务能力上下文对模型做好上下文管控最近又看到新的观点把模型当做一个不稳定的组件围绕它对它做工程。提示词工程、上下文工程、Harness Engineering、Loop Engineering。每一个新概念的提出都像金字塔一样是对agent更深一层的提炼和理解。系统可靠的秘诀不在模型会不会说而在它出了岔子以后谁来收拾残局。01 核心前提模型是不稳定的部件模型不是你交代一个任务就稳稳当当给你做完的那种存在。它会忘事会编造会跑偏会在关键时刻掉链子而且犯错了不会主动告诉你甚至会真诚地相信自己是对的。它是一个不稳定的部件。所以问题从一开始就不是怎么让模型更聪明而是既然它不可靠我怎么在外面搭一层东西让它可靠起来这层外面的东西就是工程结构。用结构兜底不用信任兜底。02 Agent 工具自带Harness设计我们现在用的Codex和Claude Code本身已经带着不少Harness思想的影子。它们不是裸模型接口而是在模型外面包了一层工程结构。但我逐渐意识到工具给的是让你能搭出这套结构的底座真正完整的Harness得靠我们在使用和设计时一点一点落进去。在这类Agent系统里我所理解的Harness机制通常包含八个方面心跳循环系统持续运转不会死掉心跳循环就是Agent内部那个持续运转的执行循环。它不是一问一答的聊天机器人而是一个持续转动的机制接收任务整理上下文调用模型执行工具检查结果出错就恢复继续下一轮没有心跳循环Agent就是一次性问答。之前我写过从chatbot到agent的过程演变就是agent作为一个中介开始帮我们处理信息从而更好的干活。agent的这个设计就是工程架构。真实任务往往需要多轮执行改代码、跑测试、看结果、再调整。心跳循环让这些轮次能自动衔接不需要你每轮都重新启动。Codex和Claude Code在对话里天然就带着这个多轮循环的能力这是工具给我们最重要的基础设施之一。例子你让Codex修一个Bug。它不会只回你一句“建议修改某某文件”。它会读取文件、定位问题、修改代码、运行测试。测试失败后它会分析原因再次修改再次测试直到通过然后告诉你修好了。这一连串动作能在一次对话里自动完成靠的就是心跳循环在背后持续运转。你只发了一次指令它自己转了七八轮。权限系统会做不等于有权做权限系统把“模型能做什么”和“模型被允许做什么”分开。模型可能知道怎么执行某个命令但系统要在它执行之前拦一道检查这个操作是否被授权。结果通常有三种允许拒绝需要用户确认Codex和Claude Code对这一块提供了很实在的支持。危险操作会弹窗问你。模型没有判断力。它可能为了完成任务执行危险操作删文件、改配置、推送代码而且不觉得这有什么问题。权限系统是最后一道防线确保不会因为模型的一时冲动造成实际损失。例子你让Codex帮忙清理项目里无用的依赖。它分析完后决定运行npm prune和rm -rf node_modules。前者是常规操作系统可能直接放行。后者是危险命令系统会弹窗问你“Agent 想执行rm -rf node_modules确定吗”你必须点确认它才敢动。模型知道怎么删文件夹但它没有“擅自删文件夹”的权力。上下文治理工具提供自动压缩但分层约定得靠我们上下文治理是一套记忆管理机制。Codex和Claude Code在对话太长时会自动压缩历史腾出空间这部分是工具自己提供的基底。但真正让记忆系统变得可控的是我们主动在外部建立的一套分层约定。记忆分成四层各司其职防止上下文窗口被无用信息塞满。不同的agent工具可能叫法不同。层级载体作用规矩层CLAUDE.md硬约束每次加载必须短索引层MEMORY.md目录指针每次加载必须短正文层独立文件具体内容按需读取进度层Session Memory当前会话的连续性记录上下文窗口是有限的而且是要花钱的。如果什么都往里塞系统会变慢、变贵还会因为注意力分散而出错。更致命的是真正重要的信息可能被淹没在大量冗余内容里。工具自动压缩能救急但它不理解什么是“重要的”。真正能决定优先级和结构的是我们主动设计好的分层。例子假设你的项目有大量文档。如果不做分层你可能把所有文档全塞进上下文里部署文档、API文档、测试规范、历史变更记录。结果Agent一上来就吃了三万字还没开始干活窗口就快满了。上下文治理的做法是CLAUDE.md只写“部署前必须跑测试、不要手动改生产配置”这种硬规矩几行字。MEMORY.md只写“部署文档 →docs/deploy.md”、“API 文档 →docs/api.md”这种索引。Agent只有在需要部署时才去打开docs/deploy.md看具体步骤。不干活的时候那些正文文件不占窗口。错误恢复工具给了自动恢复的底子但要当主路径来设计错误恢复机制认为模型输出被截断、上下文爆了、工具调用失败、API超时这些不是意外是每天都在发生的事。所以恢复路径不是“异常处理”而是系统设计的主路径之一。Claude Code在上下文快满时自动压缩历史就是一个原生例子。但要真正接住所有意外单靠工具不够。需要在设计Skill时就预埋好恢复逻辑先试低成本的修复不行再加重手段。比如上下文快爆了先清理临时积压再压缩历史对话最后才剥掉更早的对话记录。例子你和Codex聊了很久改了好几个文件上下文窗口快满了。这时候Codex不会突然报错停下而是会在后台自动压缩前面的对话把你之前让它修登录Bug的详细过程压缩成一句“登录 Bug 已修复根因是token过期。”压缩完之后腾出了空间它继续听你的新指令。整个过程你可能完全没感知。这就是错误恢复在主路径里默默起作用。熔断机制工具没给得自己造熔断是给自动重试设上限的机制。当一个操作连续失败一定次数后系统停止重试汇报用户保留现场等待人工介入。Codex和Claude Code本身不会自动帮你熔断这个保护必须由我们在Skill里显式构建。自动重试如果没有上限会导致灾难。自动压缩连续失败会烧掉海量API费用。代码修改连续失败会让代码越来越乱。部署连续失败会污染部署历史。熔断的核心意义是承认当前手段已经失效了。继续重试不是坚持是浪费。例子Codex帮你修一个Bug。它修改代码跑测试失败分析原因再修改再跑测试又失败再修改再跑测试还是失败。这时候如果不停它会一直改下去每次都在烧token而且代码可能越改越乱。在Skill里设置的熔断会在第三次失败后叫停我已经试了三次都没通过。当前代码状态是 xxx测试失败的原因是 xxx需要你来决定下一步。它停下来等你而不是闷头继续。中断处理工具给基础我给闭环中断处理机制保证当用户打断Agent时系统能说清楚“刚才做了什么、什么没做、为什么停了”。工具允许你随时中断也允许继续。但要让未完成的工具调用被补齐一个“被中断”的结果不留悬空的执行记录这需要我自己在Skill流程里把账记清楚。Agent在执行过程中可能调用多个工具改文件、跑测试、查日志。如果你中途打断它有些工具可能已经执行了有些还没开始。如果不补齐记录系统就会留下一堆说不清的状态残片。下一次启动时它不知道哪些做了、哪些没做可能重复执行或者跳过关键步骤。例子你让Codex修改三个文件改到第二个时你发现问题不对按了停止。我会让Skill在这种时候做两件事把已经改完的第一个文件标记为“已完成”把改了一半的第二个文件标记为“被用户中断”把第三个文件标记为“未执行”下一轮对话开始时Codex知道第一个文件改完了第二个文件需要重新确认第三个文件还没动。账本是平的不会乱。验证独立工具不强制但我强制验证独立是一条硬原则写代码的 AI 不能给自己的代码打分。验证必须由独立的视角来执行。要么是独立的快模型要么是独立的验证流程。工具不会阻止你让一个Skill又干活又给自己鼓掌但我会主动拆开。模型会真诚地相信自己写的东西没问题。它太想让你满意了甚至会伪造验证结果生成一段“测试通过”的文本但实际根本没跑测试或者跑了但选择性忽略失败。让实现者验证自己的代码等于让考生给自己的卷子打分。例子你让Codex实现一个新功能。如果它自己实现、自己测试、自己汇报“完成了没问题”你其实不知道它到底测了没。我的做法是拆成两个环节一个Skill负责写代码另一个Skill负责验证。验证Skill不看实现过程只做三件事读最终代码diff实际运行测试把测试结果贴出来通过就通过不通过就给出具体反例。隔离机制工具没给围墙我主动砌墙隔离机制规定多Agent之间默认不共享可变状态。每个Agent有自己的文件读取记录、中断控制器、临时推理空间。只有明确标记为“完成”的结果才通过主Agent中转共享。工具本身没有禁止跨Skill的信息流动所以隔离是我在设计时强行划出来的边界。Agent是不稳定的。一个Agent的误判、幻觉、半成品推理如果自动进入另一个Agent的上下文会污染整个系统。隔离默认的好处是即使某个 Agent 跑偏了它的混乱也只关在自己房间里不影响其他 Agent。例子你让一个Agent研究“为什么登录接口响应慢”同时让另一个Agent研究“为什么支付接口偶尔报错”。如果不做隔离研究登录的Agent可能把它的半成品猜测自动传给研究支付的Agent导致支付那边的Agent也被带偏。它跑去查数据库连接池而实际问题在第三方支付网关。隔离机制确保它们各查各的。两边都出最终结论后由主Agent汇总登录慢是因为索引缺失支付报错是因为网关超时。两个问题不会在调查过程中互相污染。03 Agent 是全局结构的 Harness 设置上面这八个机制合在一起就是Agent层面的Harness思想。工具给我们提供了一些必要的基座心跳循环、权限确认、上下文自动压缩、中断基础支持。但真正让这些变成一套完整工程骨架的是我们自己在设计和使用时有意识地把权限边界、熔断上限、独立验证、状态隔离这些约束钉进去。以前我们在写系统提示词写的是“你是什么人”其实是不对的。系统提示词的作用不是写“你是一个什么样的人”而是写“你能做什么、不能做什么、做错了怎么办”。人设是给 AI 穿戏服戏服可以随时换、随时忘。边界是给 AI 画牢房牢房的墙是结构性的每次调用都在。判断标准很简单删掉这句话系统行为会不会出现结构性变化会就是边界不会大概率是装饰。Agent层面的Harness管的是所有任务通用的稳定性和安全性。它不关心你具体在修Bug还是写API它只管心跳别停权限别越上下文别爆出错别死中断有交代失败有熔断做和验分家隔离防污染所以Agent本身就是全局结构的Harness设置。系统可靠的秘诀不在模型会不会说而在它出了岔子以后谁来收拾残局。这个收拾残局的结构就是Agent内嵌的Harness。Agent是在为模型进行全局工程化设计Skill是在为模型执行任务层的规范化工程设计。也就是说agent需要harness工程思维skill也需要harness工程思维。相当于人在规划层上需要工程思维在执行层也需要工程思维。04 Skill 是任务层次的 Harness 设置光有全局还不够。大楼安全不代表你在楼里干什么都安全。修Bug可能改错文件部署可能推错分支写API可能动到不该动的配置。全局Harness不知道你具体在干什么它只能管通用安全管不了任务级别的细节。所以需要Skill。Skill就是给某个具体任务专门定一套规矩能动什么不能动什么先做什么后做什么做错了怎么收场做到什么程度算完成这套规矩的设计思路和Agent全局Harness完全一样有边界、有流程、有状态检查、有熔断、有恢复、有验证。只不过全局管所有任务Skill管一个任务。Skills管一群任务Skill就是任务层次的Harness设置。05 全局 Harness 的思想完全适用于 Skill 设计这是最核心的一点。Agent全局Harness里总结出来的每一条原则在设计Skill时我全部都用上了。心跳循环的思想Agent有心跳循环维持持续运转。Skill也有自己的“小循环”执行步骤、检查结果、失败重试、熔断退出。宏观循环维持系统不挂微观循环保证任务能继续。注我在Skill设计中会做降级处理。如果循环指定次数还是有问题就进行降级操作或者直接跳过最终记录并与用户说明情况原因。权限边界的思想Agent有权限系统把“会做”和“可以做”分开。Skill也要明确边界能动什么工具、不能动什么命令、动哪些文件、不动哪些文件。能力越强约束越细。注我在设计Skill的时候都会加红绿灯。红灯就是明确不能做的事情绿灯就是可以执行的事情。这是规范骨架中的约束。中断处理的思想Agent在中断时会补齐执行记录保证账本闭环。Skill也一样启动时先做状态检查判断当前做到哪一步了从断点继续不默认自己从零开始。关键步骤之间主动抛出进度状态让用户知道现在在哪、哪些已完成、哪些待执行。注我在Skill的设计中会增加遇到问题时向用户咨询并确认的路径设置。上下文治理的思想Agent把记忆分成规矩、索引、正文、进度四层入口文件必须短。Skill也一样。Skill文件本身要短只写流程和约束不堆示例代码。流程细节和示例代码放在独立文件里让Skill按需去读。规矩放CLAUDE.md细节放Skill文件对应的明细记录放独立文件索引放MEMORY.md四样东西各司其职。注Skill的渐进披露读取外面是汇总层包括SKILL.md、resource文件夹、script文件夹、template文件夹等。明细层就是resource文件夹里对Skill的规则明细。Skill在设计编排时工作流骨架会明确设计需要什么就去对应的明细中查找规则。熔断的思想Agent需要有熔断防止无限重试。Skill里有代价的写操作也必须设重试上限。修改代码跑测试三次不通过就熔断汇报用户保留现场等人决策。只读操作不需要熔断但写操作必须有限次。熔断是止损回退是修复这是两件事。验证独立的思想Agent系统里做和验分家实现者不能给自己打分。Skill也一样。重要任务拆成两个Skill一个负责实现一个负责验证。验证Skill不看实现过程只看代码diff和实际测试结果。注在设计Skills时我做编排会专门弄一个验收Skill执行验收审查的行为。隔离的思想多Agent之间应当默认隔离可变状态防止互相污染。Skill之间也一样。Skill A的中间产物不直接传给Skill B由主流程决定是否传递。半成品不能共享只有最终结论才被放行。注在设计Skill的过程中有时我会设置不同的子Agent分别执行不同任务在主Agent进行协调设置。对agent的harness思维的学习对我设计Skill的思路起到了非常大的作用。最近有个新词叫Loop Engineering也就是循环工程。Harness Engineering让不稳定的模型变得更稳定。而Loop Engineering我觉得就是让模型稳了之后还可以继续自己跑起来。06 Loop 工程让 Harness 自己转起来Harness管“每一步的安全与可靠”。Loop管“任务的推进与自主决策”。更精确地说Agent内部的执行循环也就是前面讲的心跳循环把Harness和Loop串在了一起。它让安全约束和决策轮转在一个永不停止的循环里落地。Harness 是地基确保单步不塌Loop 是引擎决定下一步往哪走心跳循环是执行器让两者持续运转。Loop Engineering的核心是五个动作的循环发现交付验证记下来决定下一步它让系统会自己醒、自己判断要不要继续、自己记录状态、自己决定下一轮干什么。Agent的设计中Harness Engineering负责单次运行的安全可靠Loop Engineering负责多次串联的自主演进。两层叠加Agent才真正从“一次性的工具”变成了“能自己运转、自我进化的工作系统”。这个Loop思维同样可以下放到Skill内部。把原来线性的执行步骤变成一个带判断、带记录、带熔断的活循环。Skill就不再是一条僵硬的流水线而是一个会自己判断、自己调整、自己记录的微型自动化系统。Skill 是“养”起来的。随着我们在使用过程中不断测试案例、记录问题、调整约束它会不断优化这个自动化系统。最终框架是Agent 和 Skill都同时包含 Harness 和 Loop 两层设计。Harness让单次执行稳定Loop让多次执行能自己迭代。同一套工程思想在两个维度落地全局和任务。07 对构建 Agent 的启发如果我们自己要设计或深度使用一个Agent系统这套理论至少给我以下几点启发。别把模型当人把模型当部件有句话说人需要担责但是模型不需要这是人的作用。Agent设计的第一原则是承认模型不可靠。不要把关键逻辑寄托在模型“应该会做对”上。权限、恢复、熔断、验证这些机制必须独立于模型存在不能依赖模型自觉。Prompt 是控制面不是人设系统级Prompt的核心作用不是塑造人格而是定义边界。什么能碰、什么不能碰、做错了怎么处理、做到什么程度算完成。人设可以省略边界不能省略。中断和失败必须当成主路径来设计不要只设计“正常情况下的流程”。模型输出被截断、上下文爆了、用户打断了、工具调用失败了这些不是意外是日常。从系统设计的第一天起恢复路径、熔断机制、中断收尾就要作为核心功能来设计而不是事后补丁。做和验必须分家写代码的那个 AI 不能给自己的代码打分。它太想让你满意了会真诚地相信自己写的东西没问题。Agent设计里必须有独立的验证机制要么是独立的快模型要么是独立的验证流程。判定“干完了没”的不能是干活那个。记忆系统必须分层入口必须瘦不能把所有记忆都堆在一个文件里。规矩、索引、正文、进度四层各司其职规矩CLAUDE.md索引MEMORY.md正文独立文件进度Session Memory入口文件每次加载必须控制在很短的范围内否则系统一开始就被自己的记忆拖垮。隔离是默认共享需要明确同意多Agent或多模块之间默认互不干扰。可变状态、中间产物、临时推理都不应该自动共享。只有明确标记为“完成”的结果才进入共享通道。这样可以防止一个模块的误判污染全局。Loop 能力要建立在 Harness 稳定的前提下在单次执行还不稳定的时候别急着上自动化循环。Harness是地基Loop是引擎。地基不稳引擎越强越危险。Loop能放大效率也能放大错误。自动化越强人的判断力越不能丢Agent设计得越好转得越自动人越容易照单全收。所以系统必须留下可追溯的执行轨迹让人随时能审计“它到底做了什么、为什么这么做”。工程师的价值不在亲手写每一行代码而在设计一个能把不稳定性管理起来的系统并且始终保持对这个系统的理解和控制。08 对构建 Skill 的启迪如果说Agent层面的Harness和Loop是系统设计者的事那Skill层面的这些思想是我们在写Skill时真能用上的。具体来说有这几条。Skill 不是长 prompt是微型约束系统别把Skill写成“你是一个什么什么样的专家”。Skill的本质是边界定义能动什么、不能动什么、先做什么、后做什么、做错了怎么收场。和系统设计者写Prompt的思路完全一样只是范围缩小到了一个任务。Skill 必须有状态检查Skill不能假设自己每次都是从零开始。它可能被用户打断、被上下文压缩打断、被错误中断。所以Skill启动时的第一个动作应该是检查当前状态做到哪了、上次遗留了什么、这次从哪继续。这个步骤写进Skill里比后面所有执行步骤加起来还重要。Skill 必须有熔断机制有代价的操作比如修改代码、执行命令、推送必须设置重试上限。三次改不对就停汇报用户保留现场等人决策。只读操作不需要熔断但写操作必须有。熔断是止损回退是修复两件事要分开。Skill 的关键节点要抛状态Skill执行过程中关键步骤之间应该主动输出进度。让用户知道现在在哪、哪些已完成、哪些待执行。这样即使被打断用户也知道发生了什么。沉默的Skill是黑箱有状态输出的Skill是可控的流程。验证逻辑要独立于执行逻辑重要任务拆成两个Skill。一个实现一个验证。验证Skill不看实现过程只看代码diff和实际测试结果。如果拆不开至少在同一个Skill内部明确切换为“验证模式”用独立标准而不是执行的同一套逻辑来评判自己。Skill 内部可以嵌入 Loop 思维把原来的线性执行步骤升级为一个小循环发现状态检查交付核心执行验证独立标准记下来写进度到外部文件决定下一步通过就停不通过且没到上限就回到交付到了上限就熔断这样Skill就不是一条直线而是一个会自己判断、自己调整、自己记录的活循环。Skill 文件本身要瘦流程细节和示例代码放在独立文件里让Skill按需去读不要全塞进Skill文件本身。能加载不等于应该加载。Skill是入口入口必须瘦。设计 Skill 时先想“断了怎么办”再想“怎么做”设计顺序应该是先想边界和失败处理再想正常流程。正常流程谁都会写但区别一个Skill靠不靠谱的永远是它出错之后的行为。最后我在一线科技企业深耕十二载见证过太多因技术更迭而跃迁的案例。那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我整理出这套 AI 大模型突围资料包✅AI大模型学习路线图✅Agent行业报告✅100集大模型视频教程✅大模型书籍PDF✅DeepSeek教程✅AI产品经理入门资料完整的大模型学习和面试资料已经上传带到CSDN的官方了有需要的朋友可以扫描下方二维码免费领取【保证100%免费】为什么说现在普通人就业/升职加薪的首选是AI大模型人工智能技术的爆发式增长正以不可逆转之势重塑就业市场版图。从DeepSeek等国产大模型引发的科技圈热议到全国两会关于AI产业发展的政策聚焦再到招聘会上排起的长队AI的热度已从技术领域渗透到就业市场的每一个角落。智联招聘的最新数据给出了最直观的印证2025年2月AI领域求职人数同比增幅突破200%远超其他行业平均水平整个人工智能行业的求职增速达到33.4%位居各行业榜首其中人工智能工程师岗位的求职热度更是飙升69.6%。AI产业的快速扩张也让人才供需矛盾愈发突出。麦肯锡报告明确预测到2030年中国AI专业人才需求将达600万人人才缺口可能高达400万人这一缺口不仅存在于核心技术领域更蔓延至产业应用的各个环节。资料包有什么①从入门到精通的全套视频教程⑤⑥包含提示词工程、RAG、Agent等技术点② AI大模型学习路线图还有视频解说全过程AI大模型学习路线③学习电子书籍和技术文档市面上的大模型书籍确实太多了这些是我精选出来的④各大厂大模型面试题目详解⑤ 这些资料真的有用吗?这份资料由我和鲁为民博士共同整理鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。所有的视频教程由智泊AI老师录制且资料与智泊AI共享相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念通过动态追踪大模型开发、数据标注伦理等前沿技术趋势构建起前沿课程智能实训精准就业的高效培养体系。课堂上不光教理论还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作把课本知识变成真本事如果说你是以下人群中的其中一类都可以来智泊AI学习人工智能找到高薪工作一次小小的“投资”换来的是终身受益应届毕业生无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界。业务赋能 突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型。获取方式有需要的小伙伴可以保存图片到wx扫描二v码免费领取【保证100%免费】**