一个可落地的 AI 研发助理项目:读取 Issue / 工单描述,检索本地代码仓库上下文,调用 GPT 系列模型生成修复方案、统一 diff patch、测试建议和 PR 文案。适合放到 GitHub 作为“使用 Agent 或 AI 驱动构建的具体成果”。
定位:工程师辅助工具,不是无人值守自动合并机器人。它会生成 patch 和 PR 草稿,但默认不直接改代码,除非你显式加
--apply。
- 从本地仓库读取代码树和相关文件上下文
- 根据 Issue / Bug 描述生成:
- 问题摘要
- 修改计划
- unified diff patch
- 测试命令建议
- 风险点
- PR 标题和 PR 描述
- 支持 dry-run 和自动应用 patch
- 支持运行测试命令并返回测试结果
- 提供 CLI 和 FastAPI 两种使用方式
- 内置单元测试、CI、Dockerfile、Makefile
dev-agent-prilot/
├── src/issuefix_agent/ # 核心 Agent 代码
├── tests/ # 单元测试
├── examples/ # 示例 issue
├── docs/ # 架构说明
├── .github/workflows/ci.yml # GitHub Actions
├── pyproject.toml # Python 项目配置
├── Dockerfile
├── docker-compose.yml
├── Makefile
└── README.md
git clone <your-repo-url>
cd dev-agent-prilot
python -m venv .venv
source .venv/bin/activate
pip install -e '.[dev]'cp .env.example .env
# 编辑 .env,填入 OPENAI_API_KEY.env 示例:
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-5.2issuefix-agent analyze \
--repo /path/to/your/repo \
--issue-file examples/issue.md \
--test-command "pytest"默认只输出方案和 patch,不修改代码。
issuefix-agent analyze \
--repo /path/to/your/repo \
--issue-file examples/issue.md \
--apply \
--test-command "pytest"uvicorn issuefix_agent.api:app --reload请求示例:
curl -X POST http://127.0.0.1:8000/analyze \
-H 'Content-Type: application/json' \
-d '{
"repo_path": "/path/to/your/repo",
"issue_text": "修复登录接口在 token 过期时返回 500 的问题",
"apply_patch": false,
"test_command": "pytest"
}'issuefix-agent analyze --help
issuefix-agent tree --repo /path/to/repo
issuefix-agent search --repo /path/to/repo --query "token expired"- 默认安全:默认 dry-run,不直接改代码。
- 上下文可控:只读取必要文件,限制上下文大小,避免把整个仓库塞进模型。
- 人类审查优先:生成的 diff 必须由工程师 review。
- 可替换模型层:LLM 调用封装在
llm.py,后续可以接 Claude、Gemini、DeepSeek、本地模型或企业内网模型。
我基于 GPT 系列模型构建了一个研发工单自动分析与代码修复 Agent。它可以读取 Issue、错误日志和本地代码仓库上下文,自动定位相关文件,生成修复计划、unified diff patch、测试建议和 PR 文案。核心流程覆盖“理解问题—检索代码—生成修改—运行校验—输出 PR 草稿”。项目提供 CLI 和 FastAPI 两种使用方式,默认 dry-run,只有显式启用时才会应用 patch,确保工程师保持最终控制权。
- 不要把
.env或OPENAI_API_KEY提交到 GitHub。 - 第一次接入真实仓库时,请先只使用 dry-run。
- 对安全、支付、权限、数据迁移等高风险代码,不要让 Agent 自动应用 patch。
- 生成结果可能错误;必须 code review。
MIT