主 题: AI 辅助开发时,陆续遇到几个比较明显的问题
发 布 者:GJG
标签分类: 技术
时 间:2026-10-26 08:54:34
内容预览:其中有些问题感觉现在也没有特别好的解决办法,大家有经验的可以一起建楼讨论1. 重复造轮子AI 生成代码时很容易重复造轮子。一个本来可以作为通用能力、和具体业务无关的工具函数或私有方法,AI 往往会直接塞进当前业务模块里,连存放位置和命名都和业务强绑定。结果就是,同样的功能在不同模块里重复实现。我觉得根本原因还是上下文不足。Codex、Claude Code 这类 Agent 面对大型项目时,不可能每次读取整个代码仓库,只能优先读取当前文件、附近代码以及它认为相关的内容。修改已有功能时还好,但新增功能时,它很可能根本不知道项目其他地方已经存在类似实现,于是自然会重新写一遍。说到底,AI 生成代码时并不知道整个项目是什么样子,只能在自己认为相关的“一亩三分地”里刨地。你可以告诉它“先搜索已有实现”“优先复用公共能力”,但如果相关代码根本没有进入它的上下文,再好的规则也没用。这也是 AI 最容易把大型项目慢慢写成“屎山”的原因之一:它非常擅长解决局部问题,但缺乏对整个代码库的全局认知。2. 过度防御AI 生成的代码往往带着一种非常明显的“防御性风格”:到处判空、到处加默认值、到处 try-catch,读取环境变量和配置时还特别喜欢 .trim()、fallback 和各种兜底。这些代码表面上看更加安全,实际上很多时候是在“和稀泥”。一个配置本来就必须存在,没有配置就应该直接报错,AI 却喜欢给一个默认值;一个参数明明已经在上游校验过,它还会在下游再判一次 null;一个异常本来应该交给 Global Exception Handler 统一处理,它却自己先 catch 掉。最后代码确实“不容易报错”了,但真正的问题也被掩盖了。我觉得主要有两个原因。第一还是上下文缺失导致的局部自保。Agent 不知道项目有没有统一异常处理、不知道参数是否已经校验、不知道数据库是否已经保证字段非空,
直达链接: https://www.nodeseek.com/post-1008665-1
发 布 者:GJG
标签分类: 技术
时 间:2026-10-26 08:54:34
内容预览:其中有些问题感觉现在也没有特别好的解决办法,大家有经验的可以一起建楼讨论1. 重复造轮子AI 生成代码时很容易重复造轮子。一个本来可以作为通用能力、和具体业务无关的工具函数或私有方法,AI 往往会直接塞进当前业务模块里,连存放位置和命名都和业务强绑定。结果就是,同样的功能在不同模块里重复实现。我觉得根本原因还是上下文不足。Codex、Claude Code 这类 Agent 面对大型项目时,不可能每次读取整个代码仓库,只能优先读取当前文件、附近代码以及它认为相关的内容。修改已有功能时还好,但新增功能时,它很可能根本不知道项目其他地方已经存在类似实现,于是自然会重新写一遍。说到底,AI 生成代码时并不知道整个项目是什么样子,只能在自己认为相关的“一亩三分地”里刨地。你可以告诉它“先搜索已有实现”“优先复用公共能力”,但如果相关代码根本没有进入它的上下文,再好的规则也没用。这也是 AI 最容易把大型项目慢慢写成“屎山”的原因之一:它非常擅长解决局部问题,但缺乏对整个代码库的全局认知。2. 过度防御AI 生成的代码往往带着一种非常明显的“防御性风格”:到处判空、到处加默认值、到处 try-catch,读取环境变量和配置时还特别喜欢 .trim()、fallback 和各种兜底。这些代码表面上看更加安全,实际上很多时候是在“和稀泥”。一个配置本来就必须存在,没有配置就应该直接报错,AI 却喜欢给一个默认值;一个参数明明已经在上游校验过,它还会在下游再判一次 null;一个异常本来应该交给 Global Exception Handler 统一处理,它却自己先 catch 掉。最后代码确实“不容易报错”了,但真正的问题也被掩盖了。我觉得主要有两个原因。第一还是上下文缺失导致的局部自保。Agent 不知道项目有没有统一异常处理、不知道参数是否已经校验、不知道数据库是否已经保证字段非空,
直达链接: https://www.nodeseek.com/post-1008665-1