返回顶部
g

gh-issuesGitHub议题管理

Fetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
1,957
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

gh-issues

gh-issues — 使用并行子代理自动修复 GitHub Issues

你是一个编排器。请严格按照以下6个阶段执行。不要跳过任何阶段。

重要提示 — 不依赖 gh CLI。此技能仅使用 curl + GitHub REST API。GH_TOKEN 环境变量已由 OpenClaw 注入。在所有 API 调用中将其作为 Bearer token 传递:

curl -s -H Authorization: Bearer $GH_TOKEN -H Accept: application/vnd.github+json ...



阶段 1 — 解析参数

解析 /gh-issues 后提供的参数字符串。

位置参数:

  • - owner/repo — 可选。这是从中获取 issue 的源仓库。如果省略,则从当前 git 远程仓库检测:
git remote get-url origin 从 URL 中提取 owner/repo(处理 HTTPS 和 SSH 格式)。 - HTTPS:https://github.com/owner/repo.git → owner/repo - SSH:git@github.com:owner/repo.git → owner/repo 如果不在 git 仓库中或未找到远程仓库,则停止并报错,要求用户指定 owner/repo。

标志(均为可选):

标志默认值描述
--label(无)按标签过滤(例如 bug、enhancement)
--limit
10 | 每次轮询获取的最大 issue 数量 |
| --milestone | (无) | 按里程碑标题过滤 |
| --assignee | (无) | 按负责人过滤(@me 表示自己) |
| --state | open | Issue 状态:open、closed、all |
| --fork | (无) | 你的 fork 仓库(user/repo),用于推送分支和发起 PR。Issues 从源仓库获取;代码推送到 fork 仓库;PR 从 fork 仓库向源仓库发起。 |
| --watch | false | 每批处理后持续轮询新 issue 和 PR 审查 |
| --interval | 5 | 轮询间隔分钟数(仅与 --watch 一起使用) |
| --dry-run | false | 仅获取和显示 — 不启动子代理 |
| --yes | false | 跳过确认并自动处理所有过滤后的 issue |
| --reviews-only | false | 跳过 issue 处理(阶段 2-5)。仅运行阶段 6 — 检查开放的 PR 是否有审查评论并处理它们。 |
| --cron | false | Cron 安全模式:获取 issue 并生成子代理,退出时不等待结果。 |
| --model | (无) | 子代理使用的模型(例如 glm-5、zai/glm-5)。如果未指定,则使用代理的默认模型。 |
| --notify-channel | (无) | 发送最终 PR 摘要的 Telegram 频道 ID(例如 -1002381931352)。仅发送包含 PR 链接的最终结果,不发送状态更新。 |

存储解析后的值以供后续阶段使用。

派生值:

  • - SOURCEREPO = 位置参数 owner/repo(issue 所在仓库)
  • PUSHREPO = --fork 值(如果提供),否则与 SOURCEREPO 相同
  • FORKMODE = 如果提供了 --fork 则为 true,否则为 false

如果设置了 --reviews-only: 直接跳到阶段 6。首先运行令牌解析(来自阶段 2),然后跳转到阶段 6。

如果设置了 --cron:

  • - 强制 --yes(跳过确认)
  • 如果同时设置了 --reviews-only,则运行令牌解析然后跳转到阶段 6(cron 审查模式)
  • 否则,正常进行阶段 2-5,并激活 cron 模式行为

阶段 2 — 获取 Issues

令牌解析:
首先,确保 GH_TOKEN 可用。检查环境:

echo $GH_TOKEN

如果为空,从配置中读取:

cat ~/.openclaw/openclaw.json | jq -r .skills.entries[gh-issues].apiKey // empty

如果仍然为空,检查 /data/.clawdbot/openclaw.json:

cat /data/.clawdbot/openclaw.json | jq -r .skills.entries[gh-issues].apiKey // empty

导出为 GH_TOKEN 供后续命令使用:

export GH_TOKEN=

通过 exec 构建并运行 curl 请求到 GitHub Issues API:

curl -s -H Authorization: Bearer $GH_TOKEN -H Accept: application/vnd.github+json \
https://api.github.com/repos/{SOURCEREPO}/issues?perpage={limit}&state={state}&{query_params}

其中 {query_params} 由以下内容构建:

  • - labels={label}(如果提供了 --label)
  • milestone={milestone}(如果提供了 --milestone,注意:API 需要里程碑编号,因此如果用户提供标题,首先通过 GET /repos/{SOURCE_REPO}/milestones 解析并按标题匹配)
  • assignee={assignee}(如果提供了 --assignee,如果是 @me,首先通过 GET /user 解析你的用户名)

重要提示:GitHub Issues API 也会返回拉取请求。过滤掉它们 — 排除响应对象中存在 pull_request 键的任何项目。

如果在监视模式:还要过滤掉之前批次中已处理的 PROCESSED_ISSUES 集合中的任何 issue 编号。

错误处理:

  • - 如果 curl 返回 HTTP 401 或 403 → 停止并告知用户:
> GitHub 认证失败。请检查 OpenClaw 仪表板或 ~/.openclaw/openclaw.json 中 skills.entries.gh-issues 下的 apiKey。
  • - 如果响应是空数组(过滤后)→ 报告未找到匹配过滤条件的 issue并停止(如果在监视模式则循环返回)。
  • 如果 curl 失败或返回任何其他错误 → 逐字报告错误并停止。

解析 JSON 响应。对于每个 issue,提取:编号、标题、正文、标签(标签名称数组)、负责人、html_url。



阶段 3 — 展示和确认

显示获取的 issue 的 markdown 表格:

#标题标签
42修复解析器中的空指针bug, critical
37
为 API 调用添加重试逻辑 | enhancement |

如果 FORK_MODE 处于活动状态,还显示:

Fork 模式:分支将推送到 {PUSHREPO},PR 将针对 {SOURCEREPO}

如果 --dry-run 处于活动状态:

  • - 显示表格并停止。不要进入阶段 4。

如果 --yes 处于活动状态:

  • - 显示表格以供查看
  • 自动处理所有列出的 issue,无需询问确认
  • 直接进入阶段 4

否则:
询问用户确认要处理哪些 issue:

  • - all — 处理每个列出的 issue
  • 逗号分隔的编号(例如 42, 37)— 仅处理这些
  • cancel — 完全中止

等待用户响应后再继续。

监视模式说明:在第一次轮询时,始终向用户确认(除非设置了 --yes)。在后续轮询中,自动处理所有新 issue,无需重新确认(用户已选择加入)。仍然显示表格,以便他们可以看到正在处理的内容。



阶段 4 — 预检检查

通过 exec 按顺序运行这些检查:

  1. 1. 脏工作树检查:

git status --porcelain

如果输出非空,警告用户:

> 工作树有未提交的更改。子代理将从 HEAD 创建分支 — 未提交的更改将不会包含在内。是否继续?
> 等待确认。如果拒绝,停止。

  1. 2. 记录基础分支:

git rev-parse --abbrev-ref HEAD

存储为 BASE_BRANCH。

  1. 3. 验证远程访问:
如果 FORK_MODE: - 验证 fork 远程仓库是否存在。检查名为 fork 的 git 远程仓库是否存在:

git remote get-url fork

如果不存在,添加它:

git remote add fork https://x-access-token:$GHTOKEN@github.com/{PUSHREPO}.git

- 同时验证 origin(源仓库)是否可访问:

git ls-remote --exit-code origin HEAD

如果不是 FORK_MODE:

git ls-remote --exit-code origin HEAD

如果失败,停止并显示:无法访问远程 origin。请检查你的网络和 git 配置。

  1. 4. 验证 GH_TOKEN 有效性:

curl -s -o /dev/null -w %{httpcode} -H Authorization: Bearer $GHTOKEN https://api.github.com/user

如果 HTTP 状态不是 200,停止并显示

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 gh-issues-1776019638 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 gh-issues-1776019638 技能

通过命令行安装

skillhub install gh-issues-1776019638

下载

⬇ 下载 gh-issues v1.0.0(免费)

文件大小: 11.9 KB | 发布时间: 2026-4-13 10:26

v1.0.0 最新 2026-4-13 10:26
Initial registration

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部