您让 Claude 做一件事:"加一个 locale 列表,一个搜索,一个按国家的过滤器,再刷新一下样式"。智能体改了好几个文件,说完成了,乍一看页面也不错。但输入查询词之后,您要找的那条记录不见了。清空输入框,它也没回来。
到底哪里坏了?搜索、过滤器,还是列表本身?所有东西都是一起冒出来的,您还没单独见过任何一部分能正常工作。让它修一下搜索,又是一轮新的改动,又得把整个页面重新看一遍。活是在干,但对结果的把握却越来越小。
为了不必一次性理清好几处改动,把请求拆成一个个能单独验证的小步骤。先拿到列表,核对记录。再加搜索,用这个列表验证它。然后再做过滤器,样式的改动单独留作一步。出错的可能性依然存在,但您手里会有一个已经验证过的起点,以及范围清楚的最近几处改动。下面讲讲怎样挑出这样的步骤,以及怎样把它们交给智能体。
左边是一次改完的所有改动。右边是那个共同的症状,它本身还指不出具体是哪里出了问题。如果逐个验证各部分,把错误和最近一次改动对上号就容易多了。
选出下一个结果
任务拆分就是把一个任务分成几个部分。跟智能体一起干活的时候,最好挑那种结果能单独验证的部分。比如,先把列表显示出来,再给它加搜索,然后是过滤器。
如果列表已经能用了,就没必要重做一遍。从下一个还缺的行为开始。要是不确定它现在到底能不能用,先打开页面看一眼。从哪儿开始,取决于项目现在的状态,而不是一份好看的计划。
"先写 HTML,再写 JavaScript"这句话也是在拆分工作,但未必能帮您验证结果。要让搜索真正能用,可能得同时改 HTML 里的输入框和 JavaScript 里的处理逻辑。这其实是一个清晰的步骤,哪怕涉及两个文件。
按行为拆分请求
示例用的参考表里有四条记录。locale 代码、语言和国家列在下面,后面验证的时候会用到这份数据。
| 代码 | 语言 | 国家 |
|---|---|---|
| en-US | English | United States |
| de-DE | German | Germany |
| fr-CA | French | Canada |
| ja-JP | Japanese | Japan |
现在每个步骤都能说清结果和验证方式了:
| 步骤 | 会得到什么 | 怎么验证 |
|---|---|---|
| 显示列表 | 页面上能看到四条记录 | 把每一行的代码、语言、国家和上面的表格核对一遍 |
| 加搜索 | 按代码或语言能筛出记录 | German 和 de-DE 都能找到 de-DE;zzz 什么都找不到;空查询返回全部四条 |
| 加过滤器 | 按国家筛选能和搜索配合工作 | Canada 只剩下 fr-CA;搜索词是 German 时列表为空;清空搜索和国家后返回全部四条 |
- 列表和验证
- 搜索和验证
- 过滤器和验证
箭头表示验证通过之后再往下走。搜索和过滤器的顺序可以互换,但两者都需要列表。整体换样式留到单独一步:等主要功能都能用了,再判断它的效果会容易得多。
说清步骤的边界
假设列表已经做好了。让 Claude 加搜索,并且明确说清现在必须保持不变的东西。在这个例子里,数据和页面行为放在 app.js 里,HTML 结构放在 index.html 里。到您自己的项目里,换成真实的路径。
读一下 @index.html 和 @app.js。
四个 locale 的列表已经能用了。
加一个按 locale 代码或语言名称搜索的输入框。
保留原有的记录、它们的字段和样式。
可以加搜索需要的元素。
先别做按国家的过滤器。
验证:German 和 de-DE 都能找到 de-DE;
zzz 找不到任何记录;空查询返回全部四条。
先说明你打算改什么,文件先别动。看一下智能体的回复。如果里面冒出了新数据、换了页面主题,或者提到了过滤器,就在动手之前把边界再说清楚。要是一切都和请求相符,就让它去做这一步。用文字提前划边界能帮您把方向定住,但边界有没有守住,还是得靠结果来验证。
也不是所有额外动作都算多余。搜索确实需要一个输入框。整体换配色就是另一回事了。有个好用的问题可以自问:去掉这处改动,选定的结果还能不能拿到?
不知道从哪里下手的时候
在别人的项目里,可能得先读代码。如果您还不知道记录从哪儿来、哪个文件负责显示列表,就先别急着让它加搜索。
找一下页面从哪里获取记录,又是在哪里显示列表的。
读两三个关键文件,够用就行。
列出找到的路径,并建议第一个小步骤。
如果信息不够,说清楚还需要读什么。
文件先别动。这一步的结果,是找到的文件加上对它们作用的说明。把回答和它指出的那些片段对一下。这里的"两三个"只是个起步的大致数字,不是说不让读其他必要的代码。
进入下一步之前先验证
一句"搜索做好了"并没说清楚到底验证了什么。打开页面,把请求里提到的例子都跑一遍:能匹配上的、匹配不上的、清空输入框。顺便确认一下原有的记录和它们的字段有没有保留下来。
如果清空之后只剩三行,先别急着往下走,继续盯着搜索。把动作、期望结果和实际结果告诉智能体:"清空了输入框。期望是四条记录,看到的是三条。"这时候再加过滤器,只会让找原因变得更麻烦。
有时候步骤还得再缩小一点。比如记录根本一条都不显示,那就先把列表恢复过来,验证它。至于排序这个新想法,单独记一笔就行,别让它跑丢,也别让它把当前这处改动越撑越大。
左边这条分支会一直把您带回搜索,直到它的行为和请求相符为止。右边这条在验证通过之后才打开。加了过滤器以后,既要验证过滤器本身,也要验证它和搜索配合得好不好:新的一步有可能影响到原本已经能用的行为。
结合 Claude Code 使用
动手改之前,先说清三件事:现在应该做出什么结果、什么必须保持不变、怎么看到结果。把需要的文件给智能体,确认好下一步,交给它去做。验证完之后,再往下走,或者进一步调整这一处改动。
一个步骤可能要来回好几条消息才能完成。更重要的是,不管什么时候,您都能说清楚:"现在在加搜索,列表已经验证过了,过滤器还没轮到。"
GO TO FULL VERSION