- URL: https://newsletter.pragmaticengineer.com/p/two-years-of-using-ai
- Added At: 2025-06-24 14:59:12
AI工具在软件工程中从代码建议发展为监督式代理(如Aider)和自主代理(如Devin),助力开发效率提升,但需警惕过度依赖、认知偏差等风险。建议通过任务拆分、明确指令及短反馈循环控制质量,优先使用监督式代理并关注工具生态演进。
AI工具在软件工程中的发展与应用关键总结如下:
- 从增强自动完成功能到AI代理
- 早期以GitHub Copilot为代表的工具提供基于上下文的代码建议,但输出不可靠需频繁审查。
- 后期发展出监督式代理(如Aider、Cline)和自主背景代理(如Devin、Cursor背景代理)两类工具。监督式代理需要开发者介入引导,自主代理可独立执行任务并生成代码,但尚不成熟。
- 集成进步:工具与IDE深度结合(如快速修复、内联聊天),支持终端命令执行和外部数据源(通过MCP协议)。
- AI作为“团队成员”:将其拟人化为“热心但缺乏经验、容易固执且过度自信的队友”,需平衡信任与主动判断。
- 认知偏差风险:
- 自动化偏见:过度依赖AI输出而忽视正确信息。
- 框架效应:被AI表述的措辞影响判断(如“最佳实践”标签)。
- 锚定效应:AI提案可能限制开发者创造力,或帮助打破原有思维定式。
- 沉没成本谬误:对AI生成的低效代码犹豫不决,因误判其价值耗时过多。
- 实用原则:
- 反馈循环:通过单元测试、静态分析等快速验证AI代码质量。
- 及时回退:若方案失控,立即回退更改并重新规划。
- 上下文控制:明确工具可访问的数据范围(如代码库、文档),保障供应链安全。
- 任务拆分:按小步骤引导AI,避免大范围代码一次性生成。
- 具体指令:避免模糊需求,明确功能实现路径(如“添加数据库字段并关联API”)。
- 记忆管理:通过文档存储任务上下文,减少重复指令。
- 交付速度提升:AI工具显著加速开发过程,尤其对不熟悉的技术领域。
- 质量与监督矛盾:未经严格审查可能导致代码质量下降,需结合人工审核。
- 团队动态变化:快速引入AI可能引发协作方式调整、角色分工争议及认知负担。
- LLM并非编译器替代品:其价值在于辅助而非替代确定性工具,需探索适配场景。
- 发展不均衡:监督式代理已成主流,自主代理需改进以扩大适用范围。
- 技术债务累积:探索AI工具应用过程中的试错成本需系统化管理。
- 优先使用监督式代理,确保对代码流程的控制。
- 结合定制化规则和分阶段规划提升AI协作效果。
- 通过短反馈循环、小任务模式、明确指令降低使用风险。
- 持续关注工具生态(如MCP协议)和模型演进,但不过度依赖单一技术。