概述

本文记录了在部署和使用 SWE-smith(一个用于生成软件工程任务的工具)过程中遇到的各种技术问题及其解决方案。SWE-smith 是一个复杂的系统,涉及多个组件:bug生成、验证、收集、issue生成等。

遇到的问题与解决方案

1. Git推送权限问题

问题描述:
在执行 python -m swesmith.harness.gather 命令时,遇到以下错误:

subprocess.CalledProcessError: Command 'git push origin catchorg__Catch2.9b3f508a.func_pm_ctrl_invert_if__7p0kyikq' returned non-zero exit status 128.
ERROR: Permission to swesmith/catchorg__Catch2.9b3f508a.git denied to fredsun02.

根本原因:

  • 原始代码配置将镜像仓库创建在 swesmith 组织下
  • 当前用户的GitHub Token没有推送到该组织的权限
  • 用户 fredsun02 不在 swesmith 组织中

解决方案:
修改 swesmith/constants.py 文件中的组织配置:

# 原来
ORG_NAME_GH = "swesmith"

# 修改为
ORG_NAME_GH = "fredsun02"

这样所有镜像仓库都会创建在用户的个人GitHub账户下,避免了组织权限问题。

2. 内存不足问题

问题描述:
在执行issue生成时,系统内存不足导致进程被杀死:

exit code 137  # 通常表示内存不足

根本原因:

  • 系统只有1.9GB内存
  • 代码尝试加载大型数据集(SWE-bench_VerifiedSWE-bench/SWE-smith
  • 本地模型加载需要大量内存

解决方案:

2.1 使用API替代本地模型

创建简化的配置文件 configs/issue_gen/ig_api.yaml

model: anthropic/claude-3-5-sonnet-20241022
system: |-
  You are a software engineer helping to create a realistic dataset of synthetic GitHub issues.
  # ... 系统提示词
demonstration: ""  # 不使用演示数据

2.2 优化代码逻辑

修改 swesmith/issue_gen/generate.py

  • 延迟加载 SWE-bench_Verified 数据集
  • 只在需要时才加载大型数据集
  • 对于本地数据集,跳过不必要的过滤

3. 包版本兼容性问题

问题描述:

ImportError: cannot import name 'ResponseTextConfig' from 'openai.types.responses.response'

根本原因:
litellmopenai 包版本不兼容

解决方案:
升级相关包到兼容版本:

pip install --upgrade openai litellm

4. 代码导入错误

问题描述:
在运行静态issue生成时遇到导入错误:

ImportError: cannot import name 'PM_TECHNIQUES_CLASSES' from 'swesmith.bug_gen.procedural.generate'

根本原因:
代码中引用了不存在的常量

解决方案:
修改 swesmith/issue_gen/get_static.py

# 原来
from swesmith.bug_gen.procedural.generate import (
    PM_TECHNIQUES_CLASSES,
    PM_TECHNIQUES_FUNCS,
)

# 修改为
from swesmith.bug_gen.procedural import MAP_EXT_TO_MODIFIERS

5. 函数参数错误

问题描述:
在运行F2P方法时遇到函数调用错误:

TypeError: run_command_in_container() missing 1 required positional argument: 'rp'

解决方案:
修复 swesmith/issue_gen/get_from_tests.py 中的函数调用:

# 原来
test_output = run_command_in_container(instance, cmd)

# 修改为
test_output = run_command_in_container(instance, cmd, rp)

最终工作流程

经过修复后,完整的SWE-smith工作流程如下:

  1. Bug生成

    python -m swesmith.bug_gen.procedural.generate --repo catchorg/Catch2 --n_instances 10
  2. 验证

    python -m swesmith.harness.validate --dataset_path logs/bug_gen/catchorg__Catch2.9b3f508a_all_patches.json
  3. 收集补丁

    python -m swesmith.harness.gather logs/run_validation/catchorg__Catch2.9b3f508a/ --debug_subprocess
  4. Issue生成

    • API方法:python -m swesmith.issue_gen.generate -d logs/task_insts/catchorg__Catch2.9b3f508a.json -c configs/issue_gen/ig_api.yaml -w 1
    • 静态方法:python -m swesmith.issue_gen.get_static logs/task_insts/catchorg__Catch2.9b3f508a.json
    • F2P方法:python -m swesmith.issue_gen.get_from_tests logs/task_insts/catchorg__Catch2.9b3f508a.json

技术要点总结

1. 权限管理

  • 在多人协作的项目中,确保GitHub Token有足够的权限
  • 考虑使用个人账户而非组织账户来避免权限复杂性

2. 资源优化

  • 对于内存受限的环境,优先使用API而非本地模型
  • 实现延迟加载和按需加载来减少内存使用

3. 版本兼容性

  • 定期更新依赖包以保持兼容性
  • 在部署前测试所有依赖的版本组合

4. 代码维护

  • 及时修复过时的导入和函数调用
  • 保持文档与代码的同步

成本分析

使用API方法的成本:

  • 处理9个实例
  • 总成本:约$0.152
  • 平均每个实例:约$0.017

结论

通过系统性的问题诊断和解决,我们成功部署了SWE-smith系统。主要挑战集中在权限管理、资源优化和代码兼容性方面。这些解决方案为类似项目的部署提供了有价值的参考。

最终,我们成功生成了:

  • 10个bug分支并推送到GitHub
  • 9个高质量的GitHub issue
  • 完整的任务实例数据集

这个经验表明,在部署复杂的AI系统时,需要综合考虑技术、权限、资源和成本等多个方面。

标签: none

已有 9 条评论

  1. 新盘首开 新盘首开 征召客户!!!

  2. 新车首发,新的一年,只带想赚米的人

  3. 2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
    新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
    新车首发,新的一年,只带想赚米的人coinsrore.com
    新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
    做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
    新车上路,只带前10个人coinsrore.com
    新盘首开 新盘首开 征召客户!!!coinsrore.com
    新项目准备上线,寻找志同道合的合作伙伴coinsrore.com
    新车即将上线 真正的项目,期待你的参与coinsrore.com
    新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
    新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com

  4. 2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
    新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
    新车首发,新的一年,只带想赚米的人coinsrore.com
    新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
    做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
    新车上路,只带前10个人coinsrore.com
    新盘首开 新盘首开 征召客户!!!coinsrore.com
    新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
    新车即将上线 真正的项目,期待你的参与coinsrore.com
    新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
    新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com

  5. 华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
    华纳公司合作开户所需材料?电话号码15587291507 微信STS5099

  6. 华纳企业开户所需材料?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】

  7. 华纳东方明珠客服电话是多少?(??155--8729--1507?《?薇-STS5099】【?扣6011643?】
    华纳东方明珠开户专线联系方式?(??155--8729--1507?《?薇-STS5099】【?扣6011643?】

  8. 新盛客服电话是多少?(?183-8890-9465—《?薇-STS5099】【
    新盛开户专线联系方式?(?183-8890--9465—《?薇-STS5099】【?扣6011643??】
    新盛客服开户电话全攻略,让娱乐更顺畅!(?183-8890--9465—《?薇-STS5099】客服开户流程,华纳新盛客服开户流程图(?183-8890--9465—《?薇-STS5099】

  9. 新盛客服电话是多少?(?183-8890-9465—《?薇-STS5099】【
    新盛开户专线联系方式?(?183-8890--9465—《?薇-STS5099】【?扣6011643??】
    新盛客服开户电话全攻略,让娱乐更顺畅!(?183-8890--9465—《?薇-STS5099】客服开户流程,华纳新盛客服开户流程图(?183-8890--9465—《?薇-STS5099】

添加新评论