从原型到审查的Agent工作流,吃透Harness
每天都有新工具、新 MCP、新模型、新 skill、新工作流,社交媒体上永远有人在喊「我用这一条提示词彻底搞定了 AI」。
我不信。
天天用 AI 干活之后,我得出的结论是反的:拉开差距的从来不是你装了什么、配了什么、用什么花招把 agent 骗着干活。那些挺好玩,但更像杂耍。真正让效率上去的只有一件事,就是你对 harness 本身有多熟。
所谓 harness,就是你和模型之间那层壳:会话怎么管、权限怎么给、计划怎么走、子 agent 怎么调度、上下文怎么进出。它不是模型,也不是插件,是把这些东西缝在一起的那套机制。下面这套工作流全部只用 harness 自带的功能,没有秘密提示词。
01
PART
先说清楚这套流程长什么样
OVERVIEW · EIGHT-STEP MAP
八步,但真正需要你动脑的只有第三步和第六步:
| 步骤 | 你做什么 | harness 做什么 |
|---|---|---|
| 1 选定工具 | 挑一个,别换 | — |
| 2 放开权限 | 进沙箱,开全权 | 不再逐条问你 |
| 3 出原型 | 看,然后挑 | 一次生成多个变体 |
| 4 做规划 | 回答它的提问 | 把边界情况问出来 |
| 5 自动实现 | 等 | 循环执行+自校验 |
| 6 人工验收 | 挑刺,死磕 | 改 |
| 7 交叉审查 | 决定要不要 | 换个模型家族来挑毛病 |
| 8 收尾 | 提交、换会话 | — |
— Harness 八步 Agent 工作流
02
PART
选定一个工具,然后别换
FOCUS · ONE HARNESS
STEP 01
固定入口,练熟同一套交互
这条听着像废话,但入口是真的多:CLI、桌面应用、VS Code、JetBrains,同一个产品家族内部就有五六种。
好消息是这些体验正在往同一个 harness 上收敛。细节各有差异,核心流程是一致的,学一次就能到处用。
如果你刚上手,我建议从CLI 开始。终端界面只有文本,没什么 UI 要学,你输入提示词,agent 开始干活。交互更直接,也更容易看清它到底在干嘛。而看清它在干嘛,正是这个阶段你要练的东西。图形界面会替你把一部分过程收起来,对熟手这是省事,对新手就成了隔阂。
03
PART
放开权限,但别在本机放
PERMISSION · SANDBOX FIRST
STEP 02
先隔离环境,再开放全权
也就是俗称的YOLO 模式、Allow All。不同工具叫法不同:Copilot 里是 /allow-all,Claude Code 里是 --dangerously-skip-permissions 或者把权限模式切到 bypass,Codex 里对应 full-auto。
为什么必须开:如果每一步都要你点同意,你不如自己动手。而且点得多了会养出一个坏习惯,你根本不看自己在同意什么。那这道防线就白设了。
为什么不能在本机开:它删错东西的时候不会先问你,而删错这件事跟你水平高不高没关系。公司环境里尤其如此,数据是组织的,误删的代价你担不起。
所以配套动作是沙箱。最容易上手的是 Codespaces 或者 dev container,本地跑 Docker 也行。顺序是先有沙箱,再开全权,别反过来。
— 先有沙箱,再开放 Agent 全权
04
PART
从原型开始,而不是从代码开始
PROTOTYPE · SEE BEFORE BUILD
STEP 03
先生成一批粗糙变体
这是整套流程里性价比最高的一步。
以前原型是项目里一个独立阶段,很多时候甚至算奢侈品。现在一句话就能出一批。
拿日期选择器举例。听起来简单,实际相当麻烦,你得先想清楚:组件内部怎么导航?选中的日期长什么样?选中一个区间呢?用户怎么在日、月、年之间切换?
与其空想,不如先要一批看看:
…PROMPT
Give me 20 mocks for a date picker web component. Put them all in an HTML file so I can compare.
二十种布局里,有一个默认从「年」视图开始。这个我原本没想到,但看到之后立刻觉得对:我要的就是从年缩放到月、再到日。这类判断,不看到实物是做不出来的。
图像、形状、布局这些东西,人扫一眼就有反应,读一段密集的文字却要慢慢解析。早期花几分钟做几个粗糙原型,能把「我到底想要什么」这个问题提前解决掉。
非视觉的活儿同样适用。要加一个 API 端点,我照样先出图:
…PROMPT
Create a visual mockup of the API for this project. Add five options for how we could handle a new API endpoint that allows the user to download their analytics data.
如果你的 harness 支持 Mermaid,它会直接渲染成图,把五条实现路径摊开。五条里通常有一条是你没想过但更合适的。
✦ 省钱习惯
选一个中等规模的模型、中等推理档位就够日常用了,然后在同一个特性或 bug 的整个周期里别换。提示词缓存只在模型和推理档位都不变时命中,换一次就等于把前面的对话全部重新计费。
05
PART
规划阶段:让它把你没想到的问出来
PLAN · SURFACE EDGE CASES
STEP 04
让模型提前暴露边界情况
现在你知道自己真正想要什么了,可以开始规划实现。
关键动作:在同一个会话里切到 plan 模式,不要另起炉灶。前面原型阶段积累的上下文,正是规划要用的东西。
…PLAN
/plan Build a date picker web component. I want the user to be able to zoom in and out of years, months, and days.
这提示词其实相当含糊。没关系,这一步存在的意义就是把它补齐。
理论上你能构造出完美的提示词、完美的上下文、完美的顺序,让模型一次成功。理论上。实际没人做得到,我也不行。规划的作用是逼近它,把那些你如果手工实现、迟早也得自己回答的问题,提前抛到你面前:
开始日期和结束日期可以是同一天吗?
部分选择算有效吗?
用户可以清空日期吗?
「今天」是否要始终可见?
允许手动输入吗?允许粘贴吗?
日期以什么格式存储?
这个清单可以一直列下去。你穷举不完,模型也穷举不完,但它能捞出你想不到的那一批。
想让它问得更狠,可以叠一个专门用来抬杠的 skill,比如 Matt Pocock 的 grill-me:
…PLAN + SKILL
/plan /grill-me Build a date picker web component. I want the user to be able to zoom in and out of years, months, and days.
这里有个反直觉的地方:这一步最容易被做废,而做废的方式恰恰是你把它的每条建议都点了同意。那样等于把规划的价值全部退回去了。
你要做的是跟它吵。它问「非连续日期怎么处理」,我大概知道它指什么,但我还是让它先解释清楚,确保我俩说的是同一件事。提问不会打断规划,它会一边答一边继续往下推。
06
PART
交给自动循环去实现
AUTOPILOT · EXECUTE AND VERIFY
STEP 05
让执行循环自己跑到底
计划定稿之后,让 harness 进入自动执行模式(Copilot 叫 Autopilot,Claude Code 里对应的是让它按 todo 列表跑到底)。
它的核心不是「一直生成」,而是一个带自校验的循环。
每轮结束都要对照计划检查有没有真的做完,没做完就继续。这比你手动催「继续」要靠谱,因为模型很擅长声称自己完成了。
这个阶段 harness 通常会自动做编排调度:读代码这类活派给轻量的探索型子 agent 配小模型,复杂改动派给通用子 agent 配大模型。你可以用自定义 agent 和 instructions 去精细控制,但不做任何配置也能吃到多模型分工的好处。很多人不知道这层存在,照样在受益。
— Autopilot 执行、自校验与人工验收循环
07
PART
人工验收:这一步没法外包
REVIEW · HUMAN JUDGMENT
STEP 06
用你的判断力把产出磨到位
终于能看到东西了。
大概率不是你想要的。这很正常。模型读不了你的心,而且它会错。接下来就是迭代。
我拿到的第一版,扫一眼就四个问题:动画不一致;悬停在选中日期上时对比度太低,字看不清;顶部没必要写「12 YEARS」;在月视图或年视图点「今天」,不跳到日视图。
另外整体设计我也不喜欢,看着太像 AI 做的了。它确实就是。
修法很土:给它一个CSS 框架当约束。我用的是自己写的 Postrboard,做成 skill 指向 CSS 文件并说明用法,你换成任何现成框架都行。给模型一点设计边界非常管用,多数时候一个框架就够。
…PROMPT
ok - we don’t need a landing page here - just the component, output and settings panel in a minimal setting. Use the /postboard skill for the design and colors.
然后是一串琐碎修改,我基本是想到哪说到哪:点到「日」这层不该再尝试放大,因为没得可放;顶部不需要「Zoom Out」;鼠标划过包含选中日的月份或年份时悬停文字读不清;点「今天」不管在哪一层都该跳到那天;月份下面不需要数字也不需要方框,年份同理。
注意这有多口语化。修一堆小毛病的时候别组织语言,脑子里有上下文,你就已经有提示词了。
真正要守住的是这条
别接受「差不多能用」的产出。
这部分外包不掉,能分辨好和不好就是你的价值所在。
08
PART
换个模型家族来挑毛病
CROSS-REVIEW · SECOND PAIR OF EYES
STEP 07
用不同训练盲区互相补位
满意之后,做最后一轮。
方法叫橡皮鸭审查,直接开口要就行:
…PROMPT
Perform a rubber duck review on this date picker component implementation
它会请一个不同模型家族的模型来评审。比如全程用 GPT 的话,就请 Claude 来审。不同模型训练数据不同,盲区也不同,所以能捞出单模型漏掉的东西。原理很朴素,效果意外地好。
这个动作不限于收尾,原型可以审,计划也可以审,看你想不想要第二双眼睛。
想更狠一点,把它塞进自动循环,让两个模型互相磨到收敛:
…AUTOPILOT
/autopilot rubber duck this date picker implementation. When you have the result, review it carefully and make any necessary adjustments. Repeat the rubber duck review until both you and the reviewing model agree that the only items that remain have diminishing returns.
这一步更烧 token,值不值得看情况:要长期维护的东西我一般会跑,一次性脚本就算了。
— 不同模型家族进行交叉审查的闭环
09
PART
收尾和会话卫生
CLEANUP · SESSION HYGIENE
STEP 08
提交,然后为新主题开新会话
到这里可以提交了,或者继续在这个 PR 里加下一个特性。
一个习惯:接下来只要做的事跟当前主题无关,就新开会话。把会话当成按主题划分的容器,一旦话题明显发散就换。你自己的注意力窗口也是有限的,会话越杂,你越记不清哪个 agent 在什么状态。
///
LAST
简单是有代价的,但值
CONCLUSION · MASTER THE HARNESS
这套流程对多数人够用了。它还有个附带好处:简单才好并行。流程越简单,你越容易同时盯几个 agent 而不搞混。
AI 这边现在能折腾的东西没有上限:加 MCP server、加 skill、加 instructions、做自定义 agent,搭工作流和循环,让 agent 去驱动 agent,攒一整支虚拟研发团队。这些我也在试,有些确实有用。
但有件事我想说清楚:现在没人真的知道自己在干什么,包括写这篇的我。我们都是边做边猜。今天被当成神咒的用法,明天很可能变成反模式。上面这八步里,第三步和第七步我比较确定,第二步的权限尺度我到现在也没完全想明白该放多开。
所以先把 harness 摸熟,剩下的边跑边调。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋
📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~