Skip to content
Stack Ashes
Go back

11373 条 prompt 的复盘:我以为自己在用 Agent,其实是在用搜索框

11373 条 prompt 的复盘:我以为自己在用 Agent,其实是在用搜索框

过去 8 个月,我和 Claude Code、Codex 的全部对话都躺在硬盘上,3.3 GB,3418 个会话。我一次都没打开过。

这次我让 Agent 把它们全读了一遍,但只看一种东西:我自己敲进去的字。不看它回了什么,不看代码改了什么,只看我说了什么、怎么说的、说完之后又说了什么。

一开始我想验证的假设很朴素:我 prompt 写得太短,所以返工多。数据说这个假设不成立。真正的问题比”写短了”难看。

太长也要读

一、数据从哪来

本机两份原始记录:Claude Code 的 ~/.claude/projects/,Codex 的 ~/.codex/sessions/,都是 JSONL。我用 funes 索引成可检索的记忆,再写脚本只抽 role=user 且来源是真人输入的消息,过滤掉系统注入、工具回传和子 agent 的任务书。

指标数值
时间范围2026-01-05 到 09-12,140 个活跃日
有真人输入的会话978(总 3418,其余是自动化流水线)
prompt 数11373(Claude Code 4936,Codex 6437)
我的输入约 560 万字
模型输出约 1.25 亿 token(Claude 6980 万,Codex 5500 万)
手动中断158 次,8 月占 99

2026 年 3 到 9 月每月 prompt 数与中位长度

8 月是分水岭:5821 条,是 7 月的 7 倍。那个月我开始在多个终端面板里同时跑多个 Agent。量涨了 7 倍,每条 prompt 的中位长度从 4 月的 91 字掉到 20 字,10 字以内的占比从 16% 涨到 29%。

看到这张图的时候,我以为故事已经讲完了:并行导致注意力稀释,prompt 变短,返工变多。然后我去验证,发现后半句是错的。

二、我的纠正率是常数

我把所有带纠正意味的 prompt 挑出来(“不对""你理解错了""我的意思是""还是不行""为什么没有”),算它们在不同条件下的占比:

切法纠正率
一天只开 1–2 个会话3.8%
一天开 10 个以上会话3.5%
会话里短 prompt 少于 15%4.4%
会话里短 prompt 超过 45%3.3%
上午 9–12 点5.1%
深夜 23 点到 4 点3.3%

几乎是一条直线。prompt 写得再短、会话开得再多、熬得再晚,我发现错误的比例都不变,甚至深夜和高并发时还略低。

只有一种解释说得通:我能发现的错误数量,受限于我愿意花在核对上的注意力。我每天分给”检查”的预算是固定的,Agent 产出多少,我就按这个预算抽查多少。产出翻 7 倍,抽查比例就降到七分之一。

这也解释了为什么短 prompt 看起来”没有代价”。代价是沉默的接受。我用”实施”批准了一个方案,没有说做完该长什么样,那么它做出来的任何东西我都没有依据说”不对”。

这个发现把我原来想写的”六个坏习惯”重新排了一遍。它们是三处错位的不同表现:我在规格、判断、学习这三件事上都用了旧的方式,而 Agent 恰恰把这三件事变成了人唯一还需要做的事。

三、错位一:执行免费了,我却在规格上省字

Agent 出现之前,一个任务的成本大头在执行。写清需求花 10 分钟,实现花两天,所以”需求写清楚”这件事有天然的压力:写不清楚,两天就白费。

现在实现是几分钟到几小时,还不用我动手。执行变便宜了,规格和验收成了整个链条里唯一由我提供的输入。按理说我应该把省下来的时间全砸在这两件事上。数据说我做了相反的事:

还有一个我一直误判的案例。9 月 5 日晚上我说”这里面的中文输入有问题,帮我分析下”。这个会话跑了 1400 多轮、13 个小时,中途换了两次 UI 组件库,做了一次整体重设计,最后一条是我自己说的”还是按照终端的方式,不要分别处理了”。

我原来把它归为”会话太长、话题漂移”。现在看,根子在第一句话。“帮我分析下”是一个开放任务,没有边界,没有验收。Agent 对开放任务的默认行为就是把它拆到不能再拆,能做就继续做。它每一步都在认真回应我上一句话,没有任何一步是”跑偏”,只是从头到尾没人说过”够了”长什么样。派任务要分封闭任务和开放任务,开放任务必须附带边界和停止条件。我给了一个开放任务,然后指望它自己知道边界。

规格上省的每一个字,都会在验收上以”没法判断”的形式还回来。“没法判断”不报警,所以我一直觉得自己很高效。

四、错位二:我怀疑它的结论,但不怀疑自己的前提

有两组句式我分别统计了逐月占比:

月份怀疑句(你确定吗 / 真的吗 / 对抗式审查 / 证伪)引导句(对吧 / 对不对 / 是不是更好)
3 月0.0%0.7%
5 月2.0%2.7%
8 月1.6%3.2%
9 月2.0%3.7%

两条曲线一起往上走。我越来越会要求”给我反驳理由""对抗式审查一下”,也越来越多地用”肯定是 1 啊对不对……是合理的啊对吧”这种句子收尾。总共 354 条 prompt 以引导句结束。

这两件事同时增长,说明它们针对的对象不同。怀疑是冲着 Agent 的方案去的:你给的结论,我要你证明。引导是冲着我自己的想法去的:我已经有答案了,你来确认。我建了一套对 Agent 结论的质疑机制,却把自己的前提排除在外。

模型面对引导句的默认行为是顺着说。它的目标函数是让对话方满意,而我递给它的满意信号是”同意我”。于是我得到的是回声,还以为得到了第二意见。

更麻烦的是这两种句式的分工恰好反了。我对 Agent 的方案怀疑,但它的方案是读过代码之后给的;我对自己的前提不怀疑,但我的前提往往是没读代码就有的直觉。质疑应该落在证据更少的那一边。

情绪化连问也是这条错位的一个变体。9 月 8 日我连着问了四遍”为什么没有发现”,最后一句是”所以到底发没发现?你给我说出最核心的一句话就行了,我也没有耐心看”。前三遍是同一个问题换语气重发,第四遍才第一次说出我要什么。第四遍之前我根本不知道自己要的是一句话结论。情绪是需求还没说出来的信号。

五、错位三:解释免费了,理解反而更少发生

393 条 prompt 在问”这是什么 / 什么意思 / 帮我理解 / 大白话说下”。把它们按主题归类之后,几类东西很刺眼。

每天在用的工具的基础词。 用了几个月的代码评审平台,8 月底问”PHID 是什么意思”,9 月初问”LGTM 是什么意思”,还有”e2e 是什么""orchestrator 是什么”。这些词一天出现几十次,我一直靠上下文猜着用,因为每次都能猜出个大概,从来没有卡到必须查的地步。

核心领域的密码学。 门限签名(MPC/TSS)是我这个方向的地基。4 月 Agent 解释过一遍私钥分片,9 月 7 日我又问”MPC 是什么,帮我理解”,9 月 9 日我写下这句话:

我对于这个 mpc 的技术实现我还是不理解 为什么可以分成多个私钥以及在签名的时候为什么不会合成一个私钥

三次解释,每次都听懂了,每次都没留下。

认知心理学里的生成效应说,自己生成过的东西记得住,读到的东西记不住。Agent 把”读到”的成本压到了零,我每次的动作都是:问,看一遍解释,觉得懂了,关掉。没有一次是我先写下自己的理解再让它挑错。“查到”取代了”想通”,而两者在当时的感受是一样的。

同类证据还有一条。“根本原因是什么”在 8 个不同的日子里被我问过。我一直以为这是个好习惯,追根因。但换个角度看:8 次我都没有先说”我猜根因是 X,你验证”。每一次都是空手去要答案。要来的答案当天有用,第二天遇到相似的问题我还是空手。

自己设计的系统,自己看不懂。 “大白话说下”出现了 23 次,大多是在读 Agent 对我自己项目的输出。“这个命名是什么意思,别人一眼能看懂吗""这些是什么意思,我没有理解”。这一类是设计问题:抽象层太多、命名太晦涩,连作者都需要翻译。它和上一条共享同一个根:那些抽象是 Agent 生成、我”看懂”之后批准的,从来没有被我用自己的话复述过一遍。

六、把三件事连起来:同一个 bug

现在回到开头那条”两天前的复盘”。

9 月 10 日我做过一次小范围的同类分析,Agent 给出四条改进规则,写好了可以直接粘进 ~/.claude/CLAUDE.md 的文本,并问我”要不要我直接写进去”。我没有回答。今天检查,那个文件的修改时间停在 9 月 6 日,Codex 的全局 AGENTS.md 是 0 字节。

我读完那份复盘的感受和读完 MPC 解释的感受一模一样:懂了,有道理,关掉。

于是三件事对上了:

它们是同一个动作:用”读”替代了”做”,并且在读完的那一刻感受不到区别。

这个 bug 人一直都有。Agent 把它放大了:以前”看懂”需要先花力气找到解释,这个力气本身就是一层过滤,让我至少在少数问题上不得不自己想。现在解释无限供给,1.25 亿 token 的输出里每一段都写得清楚、顺滑、像已经被消化过。我每天读到的”懂了”是以前的几十倍,而真正生成过的东西没有增加。

8 月那 5821 条 prompt 就是放大器开到最大的样子。产出感来自 token 数,而我在规格、判断、学习三件事上投入的字数在同步下降。

七、做对的事,以及它们为什么有效

数据里也有好东西,而且都是这几个月新长出来的:

回头看,它们有效的原因是同一个:每一条都在”读”和”做”之间强行插了一个动作。“先聊清楚”是在执行前插入规格;“复述”是让 Agent 生成一次,我来核对;“对抗式审查”是在批准前插入一次证伪;“零上下文推演”是让文档接受一次不依赖我脑内上下文的测试。它们都在阻止我用”看懂了”直接跳到”做到了”。

改法就是把同样的动作补到剩下的地方。

八、接下来 30 天的规则

写进配置,能测量的才算:

  1. 每条 prompt 带对象、动作、验收。“实施”必须扩成”实施,做完的标志是 X”。
  2. 派长任务时定义完成信号和汇报节奏,我不再问”做的咋样了”。
  3. 自己已经有答案的问题,先写下我的答案,再让 Agent 找两条反对理由。这条同时治引导式提问和”空手要根因”。
  4. 一个问题一个会话。开放式的”帮我分析下”必须附带边界:“只看输入法,不碰其他”。超过 100 轮先写 HANDOFF.md
  5. 同一问题第二遍,必须附带新证据或明确输出格式。
  6. 问过”这是什么”的概念,当天用自己的话写 3 行进概念清单,周末让 Agent 出题考我。9 月 9 日我试过一次”你是面试官,问一个能分辨出我到底懂不懂的问题”,那次很有效,只是没有第二次。
  7. 任何”以后注意”的结论,当天进 CLAUDE.md / AGENTS.md。不写,复盘就不算结束。
  8. 每周跑一次这套脚本,只看三个数:带验收标准的 prompt 占比(现在 1.8%)、一字批准次数(现在 301)、引导句占比(现在 3.7%)。纠正率不用看,上面已经证明它不动。

九、怎么复现

  1. 安装 funes,索引 ~/.claude/projects~/.codex/sessions。它提供按语义找(recall)、按字面搜(scan)、按会话读(getsketch)几个接口。
  2. 写脚本遍历原始 JSONL,只留真人输入。Claude Code 看 type == "user"origin.kind == "human";Codex 看 response_itemrole == "user"input_text,再按 originator 过滤自动化任务。
  3. 先算长度分布和逐月趋势,再算几组句式的占比:纠正句、引导句、怀疑句、一字批准、带验收的。关键一步是把纠正率按不同条件切开看,它不动,才有后面的所有推论。
  4. “是什么”类 prompt 单独拉出来按主题归类,让 Agent 归。
  5. 挑最长的几个会话用 sketch 看头尾。

这些记录本来就在硬盘上,免费。我以前没打开过,是因为我觉得自己知道自己是怎么用 Agent 的。下周同一时间再跑一次脚本,看第八节那三个数有没有动。


Share this post on:

Next Post
339 个子代理烧光额度后,我发现 AI Agent 真正缺的不是模型