跳到主要内容

1 篇博文 含有标签「编码工具」

查看所有标签

软件开发代理

· 阅读需 3 分钟

软件的影响

  • 软件正在改变各个行业,正如 Marc Andreessen 在 2011 年所预测的那样。
  • 使每个人都能编写软件以实现其目标的潜在影响。

软件开发工作流程

  • 时间分配:
    • 17% 编码
    • 36% 修复错误
    • 10% 测试
    • 8% 文档/评审
    • 14% 沟通
    • 15% 其他任务

开发工具

  • Copilots
    • 编写代码的同步支持(例如,GitHub Copilot)。
  • 开发代理
    • 用于编码的自主工具(例如,SWE-Agent,Aider)和更广泛的任务(例如,Devin,OpenHands)。

编码代理的挑战

  • 定义环境。
  • 设计观察/行动空间。
  • 文件定位和代码生成。
  • 规划、错误恢复和确保安全。

软件开发环境

  • 实际环境
    • 源代码库、任务管理软件、办公工具、沟通工具。
  • 测试环境
    • 专注于编码,有时包括浏览任务。

指标和数据集

  • Pass@K (Chen et al., 2021):衡量生成代码通过单元测试的成功率。
  • 语义重叠指标
    • BLEU, CodeBLEU, CodeBERTScore。
  • 关键数据集
    • HumanEval, ARCADE, SWEBench, Design2Code。

文件定位的解决方案

  1. 用户输入:依赖有经验的用户指定文件。
  2. 搜索工具:集成搜索功能(例如,SWE-Agent)。
  3. 库映射:预构建的映射(例如,Aider repomap)。
  4. 检索增强生成:结合检索到的代码和 LMs。

规划和恢复

  • 硬编码流程:文件定位、补丁生成等的预定义步骤。
  • LLM 生成的计划:使用 LMs 进行规划和执行(例如,CodeR)。
  • 重访错误:基于错误信息的自动修复(例如,InterCode)。

安全措施

  1. 沙盒:限制执行环境(例如,Docker)。
  2. 凭证管理:最小特权原则。
  3. 事后审计:使用 LMs 和其他工具进行安全分析。

未来方向

  • 增强代理训练方法。
  • 扩展人机协作方法。
  • 解决超越编码的更广泛软件任务。

资源