最近在试Cursor和Claude的Agent模式,想让它帮我写一个自动整理项目里未使用的import语句的小脚本。我给了很具体的需求:扫描.py文件,用ast库分析,然后输出一个删除建议列表。结果Agent生成的代码要么漏掉了文件递归,要么把__init__.py给误删了。我改了好几版prompt,甚至把ast的官方文档片段贴进去,还是不太稳定。想问下大家,这种偏逻辑判断的任务是不是AI Agent本来就不太擅长?还是说我应该换个方式描述需求,比如先让它画流程图再写代码?有点迷茫,求指点。
用AI Agent写Python脚本,总改不对逻辑,是我prompt没写好还是工具本身局限?
全部回复
共 168 条这种逻辑判断型的任务Agent确实容易翻车,我试过类似的AST相关需求,它经常在边界条件上犯错。我的经验是别把需求一次性丢给它,拆成小步骤问,比如先让它只处理单文件的import分析,确认逻辑对了再加递归目录和__init__.py的特殊处理。另外让它先写测试用例再写实现,比单纯贴文档有效得多,因为测试逼着它把边界想清楚。流程图那招我也用过,对简单任务有用,但复杂逻辑它画的图本身就可能漏东西。
这种逻辑分支多、边界条件碎的任务确实容易翻车,我也踩过类似的坑。我的经验是别指望一把梭,先让它把递归遍历和ast解析拆成两步单独验证,跑通了再拼起来。init.py被误删这种问题,其实可以在prompt里直接列清楚排除规则,比贴文档管用。另外可以先让它写几个测试用例,用测试驱动的方式逼它把逻辑想清楚,比画流程图实在。
这种带明确逻辑边界的任务,Agent确实容易翻车,不是你的prompt问题。我试过类似的,发现它特别爱“自作主张”补逻辑,比如__init__.py这种边界情况它压根没概念。后来我的做法是先让它只输出伪代码和判断分支,确认没问题再让它填实现,稳很多。也可以拆成两步:先写扫描+ast解析的骨架,跑通了再让Agent补删除建议那块。别指望一次生成完整脚本,把它当个需要review的实习生用就行。
这种逻辑活Agent确实容易翻车,我一般先让它写伪代码确认思路再让它填代码。
先让它画流程图这招靠谱,逻辑拆清楚再写代码,比硬改prompt管用。
这种涉及边界条件的逻辑任务,Agent确实容易翻车,ast分析本身不难,难的是它得同时记住递归、跳过__init__、还要输出可读建议,稍微漏一个约束就跑偏。我的经验是别指望一次prompt搞定,先把需求拆成几步让它分步确认,比如先只做扫描、再加过滤、最后拼输出,每一步都跑一遍测试再往下走。另外可以让它先写几个边界用例当“验收标准”,它自己对着用例改比对着文字描述改靠谱多了。至于流程图,我觉得用处不大,Agent缺的不是思路,是对细节约束的稳定执行。
写得挺好,建议补充一些性能数据。
我最近也在用Cursor的Agent模式搞类似的事,感觉你这个情况不完全是prompt的问题。像“递归扫描目录”和“跳过__init__.py”这种细节,其实属于隐式的边界条件,你prompt里没明说它就默认按最常见的方式处理了,而ast分析本身又牵扯到作用域判断,Agent很容易在“看起来对”和“真的对”之间翻车。我的经验是别指望它一次写对,而是把任务拆成几步:先让它只写遍历文件的部分,你跑通了再让它加ast分析,最后单独处理__init__.py这类排除规则,每步都让它解释一下思路,比一次性丢个大需求稳得多。至于先画流程图再写代码,我觉得有点用但别太迷信,流程图它画得挺漂亮,落到代码照样可能漏分支,关键是你要给它可验证的中间产物,比如让它先输出每个文件的import清单,你肉眼扫一遍再继续。另外这种逻辑判断任务确实不是Agent的强项,它更擅长写模板化的东西,真正涉及“哪些该删哪些不该删”的语义判断,最好你自己把关,让它干体力活而不是做决策。换个思路,你不如让它生成一个带dry-run和详细日志的版本,你先看日志再决定删不删,比纠结prompt本身实在。