Notes · 2025.10.04
Cursor 和手写的边界
工具会用,边界要自己划。
简历技能里写了 Cursor、Claude Code、Codex。写上去的那天我就知道,会有人把这三行理解成作业是模型交的。我自己也差点这么理解。工具一上手,改文件的速度会把判断挤到后面。边界如果不先划,后面补就来不及。我后来把这条写进本机约定,不是为了骂工具,是为了下一周的自己还记得:加速打字可以,加速「报完成」不行。报完成要有现场、有检查、有数字来源。三样缺一,技能栏里那三行就只是软件名单。
会用和替我交作业
第一次认真用 Cursor,是改一个前端筛选。提示词写清楚,它能把列表、空状态、错误提示一起改完。我当时觉得这就是速度。过了两天答辩彩排,评委点一个筛选项,页面空白。我回去对 diff,发现它顺手把一个接口字段改名了。本地 mock 还活着,真接口已经对不上。
那次之后我把「会用」拆开。会用是:我能读它的补丁,能指出哪一行不该动,能在仓库自己的命令上验证。替我交作业是:我只看界面绿了,就把这段话贴进报告。简历上那三行技能,我只承认前一种。
Claude Code 和 Codex 也一样。它们擅长在已经存在的结构里填代码。仓库习惯、锁文件、验收口径,它们不会替我记。我把这些写进本机约定,就是怕下一轮会话把 pnpm 仓库用 npm 装一遍。
课设拿 100 分那天,演示数据是我冻住的。后来工具再快,我也先问:这条用户路径还在不在。路径不在,补丁再漂亮我也不收。
改代码前先读现场
我现在的顺序很死。先确认当前目录是不是目标仓库。home 里开着会话去改项目,搜索会扫到整个家目录,项目自己的说明也加载不到。然后读这个仓库的 README、锁文件、已有脚本。有 pnpm-lock.yaml 就 pnpm,有 uv.lock 就 uv。不要用我更熟的栈替换仓库的栈。
读现场还包括读将要改的文件,以及它调用的邻接代码。对着文件名猜 API,是我用工具之后最常见的偷懒。工具加速的是打字,不加速的是这个函数到底接什么。
有一次我让它给检测平台加超时。它加了,路径也对。我没读调用链,不知道上游已经有一层超时。两层叠在一起,评委还没点完,接口先断。现场读十分钟,能少掉后面一小时的互相指责。
智链 3.0 的列表筛选也是。Vue3 页面看起来改完了,真正决定空状态的是接口字段。工具改了前端,没改联调约定,我点了三轮才发现。读现场的意思是:页面、接口、仓库脚本,至少看同一条链。
报完成之前要有一条会失败的检查
「能启动」对我不够。命令打印了 --help,只说明入口还在。我要求至少有一条检查:我把实现写错,它会红。空断言、跳过失败项、把测试删掉,都是给自己看的绿色。
后来做检测接口,我先写超时和空结果,再写成功路径。成功路径工具最会写。失败路径要我点名它才写。点名之前,我不说做完了。
工具生成的测试我更不放心。它喜欢测自己刚写的那条路。权限、空列表、代理没挂上,这些它默认不碰。我若跟着说「测试过了」,站点上就会留下一句经不起抽问的话。
数字从哪来,工具不管
检测和评测里,我最怕的句子是「结果提升了」。提升了多少、相对哪次 run、seed 是什么、划分有没有漏,工具不会问。它会把表格填漂亮。我如果跟着填,站点上就会出现指不回产物的数字。
我参与 TextGuard 相关工作,对外只写参与。NeurIPS 2026、AAAI 2027 的状态是 Under Review。这些句子工具经常想帮我写得更满。满了就是假的。所以边界还有一条:论文状态、指标、贡献署名,不交给补全。
LPP、MCC Decay、MRS、OOD 这些名字可以出现在笔记里,前提是简历和稿子里已经有。工具新编一个「更强的模块名」,我直接丢掉。
我还没划清的地方
这条边界对小改动有效。大重构时,工具会一次改很多文件,我读不完每一行。我现在的办法是把请求收成一块,一块做完再下一块。仍然会漏。漏了就写进当天的笔记,不写成流程已经稳定。
手写也不是美德。重复样板、改类名、补导入,我愿意交给工具。我不肯交出去的是:这个仓库怎么构建、这条检查凭什么算过、这个数字从哪来。工具会继续更快。我划的线是打字可以快,现场、检查、数字来源,不能外包。
课设、智链筛选、检测接口,三次都证明同一件事:工具把补丁写完的那一秒,我最容易宣布结束。结束要留给冷启动、留给一条会红的检查、留给我能指回的产物。指不回就还在草稿。草稿可以留在对话里,不要留在简历技能栏对得上的那句「会用」。会用的证据是我划过的边界还在,并且我下次仍会先读现场。