最近给我的web 自动化开发方案做了一点增强,让 issues 提交了以后可以自动去修复,修复好了提交一个 PR 出去,人类做一下确认是否可用即可。 但是这里主要是线性的,不采用同时开发,避免大量的需要处理代码合并问题
具体的方案代码如下
graph TD
%% 样式定义
classDef init fill:#3b82f6,stroke:#fff,stroke-width:2px,color:#fff;
classDef git fill:#f97316,stroke:#fff,stroke-width:2px,color:#fff;
classDef ai fill:#8b5cf6,stroke:#fff,stroke-width:2px,color:#fff;
classDef build fill:#eab308,stroke:#fff,stroke-width:2px,color:#fff,color:#000;
classDef github fill:#10b981,stroke:#fff,stroke-width:2px,color:#fff;
classDef endNode fill:#6b7280,stroke:#fff,stroke-width:2px,color:#fff;
%% 阶段一:准备与拉取
Start((启动脚本)):::init --> CheckDeps[检查依赖: gh, claude, git, pnpm]:::init
CheckDeps --> FetchIssues[从远端拉取 Bug Issues]:::init
FetchIssues --> BuildTodo[生成待办队列 TODO.json]:::init
%% 阶段二:串行处理队列
BuildTodo --> QueueCheck{队列中还有\nPending Issue吗?}
%% 阶段三:单个Issue处理流程
QueueCheck -->|Yes| BranchPrep[创建/切换工作分支\nautofix/issue-N]:::git
BranchPrep --> AIFix[Claude AI 生成修复代码]:::ai
%% 构建与验证循环
AIFix --> BuildVerify{运行 pnpm build\n验证代码}:::build
BuildVerify -->|失败 Fail| RetryCheck{达到最大重试\n次数了?}:::build
RetryCheck -->|No| AIRetry[Claude AI 根据报错\n日志进行二次修复]:::ai
AIRetry --> BuildVerify
RetryCheck -->|Yes| MarkFail[标记 Issue 失败\nFailed]:::endNode
MarkFail --> QueueCheck
%% Git与PR提交流程
BuildVerify -->|成功 Pass| GitCommit[Git Commit 并\nPush 到远端分支]:::git
GitCommit --> CheckDiff{有代码变更吗?}:::git
CheckDiff -->|No| MarkCompleteNoPR[标记完成\n跳过PR]:::endNode
CheckDiff -->|Yes| CreatePR[GitHub CLI 创建\nPull Request]:::github
%% 后续动作
CreatePR --> IssueComment[在原 Issue 下\n自动评论 PR 链接]:::github
IssueComment --> MarkSuccess[标记 Issue 成功\nCompleted]:::endNode
MarkSuccess --> QueueCheck
MarkCompleteNoPR --> QueueCheck
%% 阶段四:结束
QueueCheck -->|No| GenerateReport[生成运行汇总报告]:::init
GenerateReport --> End((结束)):::init
下面是代码
gist.github.com https://gist.github.com/huifer/7f5d853f5c94b1b2fe3267c4c35bc4a0 gistfile1.txt#!/usr/bin/env bash
# 开发方: https://tanstackship.com/
# 拉取远端 GitHub bug issues,串行执行:claude -p 修复 → pnpm build → 通过则 commit 并标记完成。
#
# 依赖: gh, claude, jq, git
#
# 用法:
# ./scripts/fix-remote-bug-issues.sh --run-all # 推荐:一次命令串行处理全部 bug issues
# ./scripts/fix-remote-bug-issues.sh # 拉取 issues 并串行处理全部 pending(失败继续下一条)
# ./scripts/fix-remote-bug-issues.sh --fetch-only # 仅同步 todo JSON
此文件已被截断。 显示原始文件
github-issues-bug-autofix-for-pr
#!/usr/bin/env bash
#
# 拉取远端 bug issues,串行修复后通过 Pull Request 提交(每条 issue 一个 PR)。
# 与 fix-remote-bug-issues.sh 独立:不修改原脚本,使用独立 todo / 日志。
# 开发方: https://tanstackship.com/
# 流程(每条 issue):
# 基于 PR base 建分支 autofix/issue-N → claude -p → pnpm build
# → commit (Fixes #N) → push → gh pr create → Issue 评论附 PR 链接
#
# 依赖: gh, claude, jq, git, curl
此文件已被截断。 显示原始文件
1 个帖子 - 1 位参与者