Skip to content

Latest commit

 

History

History
55 lines (41 loc) · 4.2 KB

File metadata and controls

55 lines (41 loc) · 4.2 KB

How I program with Agents

TL;DR

文章提出通过编程代理结合工具链与环境反馈提高开发效率,其优势包括减少错误、优化API适配及处理复杂变更,但面临耗时、成本高昂和安全风险。容器化方案可隔离环境并支持并行任务,未来IDE或整合差分编辑以促进“代理优先”模式。作者认为代理虽不完善但潜力巨大,需工具改进与开发者适应以推动效率变革。

Summary

文章探讨了使用编程代理(Agents)提升开发效率的方法,并通过实例和对比分析了其优势与局限性:

定义代理

  • Agent本质:由包含LLM调用的for循环构成的环境反馈机制。LLM可通过工具(如bashgreppatchcodereview等)与环境交互并迭代改进代码。
  • 核心工具:包括bash(cmd)执行命令、patch(hunks)修改代码、keyword_search(keywords)搜索关键词、web_nav浏览网页等,帮助LLM像人类程序员一样操作项目环境。

Agent驱动编程的优势

  1. 减少错误:通过实时编译反馈、测试执行和日志分析,显著降低语法错误和依赖管理问题。
  2. 提升API使用能力:利用curl获取文档,快速适配项目依赖的具体版本(仍有不足,需依赖更新)。
  3. 处理复杂变更:能根据需求修改代码、修复漏洞并回写测试,甚至模拟用户界面(如调整CSS并查看截图结果)。
  4. 保持续航:通过快速生成基础版本(如GitHub认证逻辑),让开发人员无需中断当前任务即可推进项目进度,节省时间。

实例分析

  1. GitHub认证实现
    • 初次生成代码因忽视安全限制导致漏洞(用户可见未授权仓库),但通过反馈快速修复。
    • 后续因性能问题(多次API调用)调整策略,最终通过允许保存用户令牌优化了执行效率。
  2. SQL表设计规则
    • 初期Agent对自定义的JSON列规范(每表仅存JSON列,其他列由索引生成)执行不一致,添加注释说明后显著改善。

局限与挑战

  • 时间成本:单次查询需多次工具调用和测试,耗时数分钟且成本较高(如单次提交花费$1.15 API费)。
  • 模型迭代:早期语言模型不擅长与工具交互,2025年模型经过优化后已能有效调用工具。
  • 环境与扩展性:在本地运行时存在安全风险(如意外访问生产凭证),且难以并行执行多个代理任务。

解决方案:容器化开发环境

  • 隔离与安全:通过容器复制项目环境供代理沙盒运行,避免直接访问本地敏感信息。
  • 并行执行:在容器中可同时运行多个代理任务,提升效率。
  • 交互支持
    • 允许用户通过SSH或终端访问容器进行调试、测试。
    • 提供基于diff的编辑界面,支持直接修改代码、解决冲突,甚至通过代码评审式注释反馈给代理。

IDE未来形态

  1. 差分编辑:可在代理生成的diff右侧直接修改代码,自动提交。
  2. 无缝集成:容器化环境与传统IDE(如VS Code)结合,适应复杂任务需求。
  3. 代码评审改革:Agent生成代码后,通过差分界面反馈评审意见,取代现有低效的评审流程。

作者观点

  • 范式转变:Agent改变了编程核心流程,但需重新设计开发工具和团队协作模式。
  • 实用价值:对短期项目或小规模开发极有价值,大幅降低低效劳动的负担;对大型项目仍需人工干预,但可显著加速开发。
  • 需突破的障碍:当前工具尚需改进(如模型对工具的适配、成本优化),开发者需保持对技术变革的开放态度。
  • 行业影响:传统开发习惯(如工具链、协作方式)需调整,容器化、可编辑的差分界面等设计是向“代理优先”开发模式的关键转变。

文章最后强调:尽管存在缺陷,代理技术已展现出重塑编程效率的潜力,开发者应避免过度依赖现有工具逻辑,积极适应这一变革。