跳到主要内容

deepcode-cli v0.1.27 发布 —— 一条 prompt 解决代码修改匹配问题,顺便给 agent 喂了份 Karpathy 配方

· 阅读需 3 分钟

edit 工具的逻辑通常是:你在代码里找一段文本让 agent 替换。但它匹配不到原文的时候怎么办?各家策略不同——有的直接放弃报错,有的硬找一个近似的。deepcode-cli 之前走的是「找最接近的匹配」路线,用 findClosestMatch 算编辑距离。看起来合理,但实际效果一言难尽:编辑距离最近的那段代码,语义上可能完全不相关。你让它在某个函数里改个变量名,结果它在另一个毫不相关的函数里找到了相似字符串,直接动错了位置。

deepcode-cli v0.1.27 封面

把「猜匹配」换成「问模型」

v0.1.27 的改动很简单:删掉了 findClosestMatch,改成直接让 LLM 自己判断「你找不到的那段原文在哪?」。做法是写了一个 inferOldStringNotFoundReasonWithLLM 函数——把原文、改动目标、上下文一起发给模型,让模型自己分析「原文变了还是我理解错了?」。模型而不是编辑距离来做这个判断,正确率要高得多。

这个改动表面上是修了一个匹配函数,本质上是在打破「规则匹配」的瓶颈。编辑距离再优化,也不会理解语义。模型虽然更慢,但更准确——而且它「慢」的几秒钟,比起改错文件后花 30 分钟回滚,已经算快了。

Karpathy 的 prompt 技巧被写进了系统提示

这次还做了一件事:把 Andrej Karpathy 总结的一套 agent 通用指南(karpathy-guidelines)写进了系统提示词。

Karpathy 的 guidelines 包含什么?几条极简原则:写到死循环里了要主动停而不是硬跑下去、发现 LLM 输出明显偏离预期时调整策略而不是继续、先理解问题再看代码——听起来都是常识,但 agent 在实际跑任务时不具备这些「常识」。不加这些,agent 遇到上下文断层往往会继续硬推下去,直到超时或报错什么都跑不出来。

v0.1.27 验证下来,加了这些指南之后,复杂任务的完成率确实提升了(项目自己的测试结论是「显著提升成功率」)。没有花哨的 prompt engineering 技巧,就是让 agent 多一种「承认自己卡住了」的能力。

其他更新

两个依赖和文案层面的小改:ink-gradient 更新到了 4.0.1(终端渐变颜色库),以及 API Key 找不到时的提示信息做了中文优化。

升级

npm install -g @vegamo/deepcode-cli

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。

#deepcode #AI编程 #开源CLI #开发者工具 #Karpathy