Writing · 实操
eval harness 落地续集:给 Prompt 调试搭一个驾驶舱
上周我写了篇《agent eval harness 实操》,讲我给自己那个 AI 设计 agent 搭了把标尺。后台陆续有些私信的童鞋,要让我仔细讲讲,我思考了一下怎样才能用一种比较简单明了的方式讲清楚是怎样思考、怎样调的。当然我也不打算把项目放到 git 或者开源出来,里面有一些 know-how 和专业领域是和朋友一起完成的,并非我个人所有。
上一篇做的是"算分数的引擎"。刚好上周末我又折腾了一下,顺手把它扩成了一个完整的工作台——不光看分数,还能看 AI 一步步怎么想、在哪一步就地改指令重跑、最后把生成的图也拉进来对比。反正我自己是非常满意、用得很是顺手。这周末我打算再搞一搞,再完善一下。
我基于这套 eval 逻辑做了一个本地网页——我的 prompt 调试驾驶舱。直接在这个页面做 prompt 调试对比,哪版变好、哪版变差、贵了多少、图好不好看,全摆在一个页面上。我想了下,这个网页产品还是非常有助于初学者或者新手理解我的思考方式。
这篇文章就是把这个"调 system prompt 的驾驶舱"拆出来分享下,不是什么高精尖的操作,老实说这种交互可能在 agent 和 cli 交互下显得有些笨拙或者不够"AI 原生",但是在一个垂直领域的应用,要达到效果的确定性,我认为这是我自己实践下来最便捷、最清晰、驾驶感最好的一个操作交互。(有其他更好的交互经验的朋友,欢迎留言交流,学习无止境)
这篇文章,我会多贴一些截图,这样会更清晰。没看过上一篇的,可以先看上一篇。
一、上次留下的问题
先说一下我为什么要做这个网页,主要还是之前的交互和操作过于散点、不易于阅读,缺少 global view,作非程序员交互起来也不是特别友好。
- 上一篇里我把分数都存进了一张表,但每次想看对比和细节,得敲命令、跑一下脚本。可调指令本来就是"改一点、看一眼、再改一点"的高频动作。每看一眼都要敲一次命令,节奏全被打断了。CSV 在表格软件里打开后密密麻麻几十列,对比也着实不友好,特别是横向版本对比靠脑子记 v1、v2、v3 三版的数字分散在不同行,哪个指标涨了、哪个跌了,得自己在脑子里心算一遍,涨跌没有颜色、没有箭头,全是裸数字,容易看花眼。
- 另外麻烦的是图和量化数据无法直观地放在一起看。eval 的是图,但测评里主要还是量化分数,看不到图本身。不时遇到情况:这版分数更高,可我想眯眼看看图到底好在哪——结果还得另开文件夹一张张翻,再吃力地跟分数对回去。标尺是搭好了,但每次用标尺都像在翻一本没有图的说明书。
- 我这条流水线里,AI 出设计方案是分好几步走的——先分析款、再识别色、再规划、再设计。在 prompt 调试时,我希望已经跑过的推理在原 prompt 下直接使用 cache 不用再跑,这样时间和成本都更优,而从哪个节点开始 fork 我希望可以直观地做点选。
- 评测时,入参不是单一变量,而是组合变量,我希望可以便捷地管理测试夹具(fixtures),在不同版本间快速地选择 fixture 做对比。
二、我的驾驶舱长什么样
先给你看个整体,再拆细节。它就是一个跑在我自己电脑上的网页。本地的、不联网、不上传,数据都待在我自己的文件夹里。上一篇做的是"算分数的引擎"。这周我顺手把它扩成了一个完整的工作台——不光看分数,还能看 AI 一步步怎么想、在哪一步就地改指令重跑、最后把生成的图也拉进来对比。
它串起的是我这条完整流水线:明确要应用的趋势 → AI 给一个款式出好几个配色设计方案 → 批量生图。(一个款式通常要配好几个配色,我们管一个配色叫一个"色号"。)
这里要接一下上一篇的策略:上次我把"AI 出设计方案"那个原本巨大的单条指令,拆成了一串小环节——每个环节 AI 只干一件事(先分析款式、再识别颜色、再规划、再设计、最后自己审计一遍)。
拆开最大的好处:哪个环节出问题,能一眼定位,而不是整条流水线黑乎乎一锅端。这个网页就是给这条"拆开的流水线"配的仪表盘。
主要就是两个闭环:
调试闭环:工作台 → Prompt 版本 → Run 对比,对应"改指令 → 管版本 → 比指标"。
生图闭环:生图任务 → 生图对比,对应"出图 → 比图",再回到 prompt 调试持续优化。
一共有 6 个 tab,后面会分别讲一下基础逻辑。
三、6 个 tab,分别干嘛
【调试闭环 · Tab 1 工作台】:思考节点放出来,观测 AI 一步步想,还能就地改、就地重跑
这是我搞得最久的一页,也是整条管线跑起来的主场。直接解决开头说的两个别扭的体验。
- 亮点一:实时步骤树,解决"黑盒"问题。以前一条流水线跑完,我手里只有最终结果,中间 AI 怎么想的、在哪一步走歪的,全看不见。现在点"开跑",中间区域会实时展示"步骤树":AI 每做完一步就新增结果,成功变绿、失败变红,可以清晰地看到每个生产节点的耗时和 token。一个款式有几个色号、每个色号要识别颜色 + 单独设计,一次跑下来这棵树能长出二十多个 branch,点任意一个枝节点,最右侧就显示这一步 AI 收到的指令和吐出的结果。
- 亮点二:点中某一步就地改指令、只重跑改动那段,解决"迭代慢"。这个是非常非常重要的一个功能!管线完整跑一次要十几分钟。要是改一句指令就从头重跑,那 1 个小时试不了几版。现在,产品上点中某个环节 → 拉开指令编辑框 → 改一行 → 存成新版本 → 点"用这版重跑",它只重跑你改的那个环节,加上它下游;前面没动过的环节,直接拿上次结果用,不再花钱重算。所以我可以从任意节点上直接 fork,更改后续节点的系统提示词后 cache 前面的结果。
类似做菜,只把改了操作的那道环节重新炒一遍,前面备好的料直接端上来。效果很直接——原来改一句得陪跑整条十几分钟,现在只跑改动那段,几分钟就能有结果出来。
【调试闭环 · Tab 2 Prompt 版本】:所有指令的"版本仓库"
在工作台里改指令很爽,但改多了会乱,这个 Tab 就是来兜底的。它把流水线里那几段子指令,各自存成 current / v1 / v2 …,一段一段独立管理。
我能随时切回某个旧版本、把两版拉出来 diff(看清到底改了哪句),还能用一个"整组视图"一眼看明白:这一版,用的是哪几段指令、各自的哪个版本号的组合。从第三版开始,基本上人脑就记不清每个节点现在到底用的是哪套指令了。有了版本仓库,才敢大胆改、随时退。
【调试闭环 · Tab 3 Run eval 对比】:改完到底是真变好,还是错觉
这一块,才是上一篇那套 eval 真正长出来的"脸"。勾选两次或更多次跑出来的结果,它自动按 6 大类、30 多个指标算差值——涨的标绿、跌的标红,一整排扫过去就知道这版改动了哪些数。而且它会一并标出:每一次跑用的是哪一组指令版本。改了哪句、对应哪个数变了,对得上号。
它回答的就是调参时最容易自我欺骗的那个问题——这版改完,是真变好了,还是我的错觉,相当于把不同版本的成绩单放在一起看。
当对推理出的设计方案满意时,就进入生图环节"应用设计方案生图",直接看图片效果,基于实际图片结果做进一步优化:选方案 → 出图 → 全量归档,接下来就进入生图结果的管理和对比了。
【生图闭环 · Tab 4 生图任务】
前面三个 Tab 都在调 prompt、出生图方案(文本)考核,从这个 Tab 开始管"出图结果"考核。"成本 + 分数 + 图 + 指令差异"摆在同一个页面里,这个是用起来比较舒畅的地方,终于能"看着图调"了。
我选不同生图任务,直接对比它们生成的设计结果图,图片下方显示这不同任务的 prompt 版本,可以直接判断哪个版本出来结果更好。
以前我只知道"v3 分数更高",但高在哪我看不见。现在我能左右对照:左边这版花纹乱、配色脏,右边这版干净利落;再往下看指令差异——原来右边那版多加了一句"颜色要有系列感以胚衣主色为参考"。分数的涨跌,和我眼睛看到生图结果的变化、具体指令改变就能在这个页面对上了。调指令最大的黑箱,从来不是"分数为什么涨",而是"分数涨了,可我没看见东西到底哪里变好"。把图和指令差异摆在一起,这个黑箱才真的打开。
每一张图都配套存着它自己的完整生图指令 + 配色方案 + 子主题。所有生图任务进一个历史列表,点进去能看每个任务的全过程;单张不满意,还能原地重生一张。
后面我打算把这个页面做成一个投票交互,把人的主观判断也作为一路量化结果记录下来。这样图、方案版本、设计指令、成本也不再散落各处,在这个页面 all in 1 全局对比。
【调试闭环"地基" · Tab 5 测试夹具】:把测试打包固定
前面 Run 对比能横着比不同版本,比的两版,喂进去的输入必须一模一样。要是这版用的是"牛仔服 9 色 + 男女 1:1",下一版手滑换了别的款、别的性别比,那分数差异到底是 prompt 改好了,还是输入变了?根本说不清。
「测试夹具」就是来保障这件事的。一个夹具,就是一组冻结的输入快照——趋势报告 + 款号 + 性别比 + 每色方案数 K + 要测的配色范围,打包存成一条,给它起个名字。
以后不管我想用哪一版指令去跑,点一下这条夹具的「✓ 应用」,它就会跳回工作台、把这套输入自动填好,我只管换指令、点跑。说人话就是:像考同一套卷子。换不同的解法(prompt 版本),但卷子必须是同一张,分数才有可比性——这就是做对比实验最基本的"控制变量"。
存也简单:在工作台把表单填好,点一下「存为夹具」,它会提示"将保存当前这几项",确认就进了夹具列表。它是前面"Run 对比"那一切结论能成立的地基。没有固定的测试题,所有版本的分数都是耍流氓。
【系统 · Tab 6 设置:钥匙和开关】
最后这个 Tab 最简单,但少不了:填 API key、调运行参数,都在这一页。我把它单拎出来,是不想让"配置"散落在代码各处——要换 key、改参数,打开这页改完即走,不碰其它任何东西。
四、好玩在哪,要注意什么
先说好的。最大的改变是节奏。调参从"敲命令翻表格"变成了"看图点按钮",像玩游戏,反而愿意多调几版。其次是决策有据。枪毙一版本不再靠感觉,靠的是"它在散点图右下角,而且表里一整列红"。
还有就是复用前作成果。底层没重写,只加了界面,基座半天就搓出来了,不过后面还是花了点时间完善和打磨。
先有标尺,才配有驾驶舱。如果你还没有上一篇那套"算分数的引擎",那请先做引擎——没有数据,再漂亮的网页也是个空壳。
别一上来追求好看。先跑通能用,再调样式。很多人卡在"想做精致",结果第一版都没跑起来。本地够用,别急着上线。这是给我自己调参用的工具,跑在自己电脑上最省事,不用买服务器、不用部署。
它帮你看,不帮你拍板。图好不好、要不要上这版,最后一下还是人按。AI 给我摆好数据和图,按钮我自己按。
最后
这两篇连起来,其实是一件事。先把"判断好坏"变成数字,这是标尺;再把"看数字"变成顺手的动作,这是驾驶舱。普通人用好 AI 最快的方式,就是给自己搭工具,服务自己日常生活工作。一个人,半个周末,就能搓出一个以前得叫上前端加后端才有的小东西。
看看大家手头有没有一堆"每周都要重复看的任务"?看股票、店铺后台、广告投放?留言告诉我,我挑几个有意思的,下篇拆"怎么给它做个仪表盘"。
没看过上一篇《eval harness 实操》的,记得去补——这篇是它的续集。觉得有用就收藏,周末打算动手的时候,对着步骤搭一个。