GitCode PR 检视意见修复
name: pr-comment-fix
by autoxj · published 2026-04-01
$ claw add gh:autoxj/autoxj-pr-comment-fix---
name: pr-comment-fix
description: "按 GitCode PR 检视意见修改代码。需 GITCODE_TOKEN。Use when 用户要修改 PR 检视意见。"
metadata: {"openclaw": {"requires": {"env": ["GITCODE_TOKEN"]}, "primaryEnv": "GITCODE_TOKEN", "optional": true}}
---
# GitCode PR 检视意见修复
**执行顺序**:`fetch` 写出 JSON → 按模板汇总并请用户选范围 → 确认后再改代码 → 本地验证并输出修复总结表 → 用户需要时再 `reply` / `resolve`。
何时使用
认证
依赖
---
流程(严格顺序)
1. 拉取上下文 JSON(必须先做)
**SKILL_ROOT**:本 `SKILL.md` 所在目录。
python <SKILL_ROOT>/scripts/pr_comment_fix_tool.py fetch -o "<路径>/pr_comment_fix_context.json" --pr-url "<GitCode PR 完整 URL>"脚本写出 **`pr_comment_fix_context.json`**(或打印到 stdout),其中包含:
**筛选规则**:仅包含 **未解决** 行评(`resolved` 不为真;缺省视为未解决)。
若 JSON 含 **`warnings`**(如缺少 `discussion_id`),须告知用户:对应条目 **无法** 使用脚本的 `reply` / `resolve`。
---
2. 汇总并按模板输出、再确认范围(未收到明确答复前不得改代码)
1. 读取 JSON:以 **`unresolved_diff_comments`** 为准(可与 **`by_file`** 对照),统计条数 **N**。
2. **必须先**用下面表格向用户展示全部待处理项(**序号**与 JSON 中 **`seq`** 一致;**行号**取自接口字段,如 `line` / `original_line` / `position` 等,无则写「见讨论/无行号」;**问题**用 `body` 的简要概括或首行,勿整段粘贴):
| 序号 | 文件 | 行号 | 问题 |
|------|------|------|------|
| 1 | `diff_file` | … | … |
| … | … | … | … |
3. 询问用户处理范围:`全部`/`是`、部分序号如 `1,3`、`不修`/`跳过`。
4. 用户回复可解析后再进入步骤 3;不明则再问。发出表格与询问后**须等待用户下一条消息**,在此之前**不得**编辑代码。
5. 「不修」→ 结束,不改代码。
---
3. 按文件修复(仅在步骤 2 确认后执行)
依据 **`pr_comment_fix_context.json`** 中的 **`by_file`** 与 **`unresolved_diff_comments`** 修复:
1. **顺序**:以 **`by_file`** 为准;**同一文件内** 按数组顺序(已 **从后往前**)逐条处理,减少行号漂移。
2. **定位**:以 API 行号相关字段与 **`diff_file`** 为准;修改前 **先读当前文件对应行**,勿盲信过时行号。
3. **路径**:`diff_file` 相对仓库根解析;若找不到,再尝试去前缀或让用户确认根目录。
4. **大改**:单条预估改动 **>20 行**、或 **改签名/结构**、或 **跨 ≥2 个文件** → 先给 **修改方案**,用户确认后再动代码。
5. **合并同一次修改**:同一文件、同一意图的多条意见尽量合并为一次编辑。
---
4. 本地验证与修复总结
每批或全部修改完成后:
**必须先输出「修复总结表」**(与步骤 2 中条目对应;**处理方式**写本次实际做了什么;未动的项不要编造):
| 序号 | 文件 | 行号 | 问题 | 处理方式 |
|------|------|------|------|----------|
| 1 | … | … | (与步骤 2 对应) | (简述:如何改、是否仅说明未改) |
| … | … | … | … | … |
---
5. 修后闭环(仅当用户需要时)
**顺序固定为:**
1. **修改与验证完成后**,询问是否 **生成回复草稿**(针对已处理的条目)。
2. 若需要 → 生成草稿 → 用户确认 → 询问是否 **发送**。
3. 若发送 → 使用脚本 **`reply`**(见下)调用官方接口:[回复 Pull Request 评论](https://docs.gitcode.com/docs/apis/post-api-v-5-repos-owner-repo-pulls-number-discussions-discussions-id-comments)。
4. **发送完成后**,询问是否 **修改检视解决状态**;若需要 → 使用 **`resolve`** 子命令:[修改检视意见解决状态](https://docs.gitcode.com/docs/apis/put-api-v-5-repos-owner-repo-pulls-number-comments-discussions-id)。
**不得**在未获用户确认时代为发送评论或修改远端状态。
#### 回复单条讨论
python <SKILL_ROOT>/scripts/pr_comment_fix_tool.py reply -c "<pr_comment_fix_context.json>" --seq <seq> --body "<正文>"
# 或 --discussion-id <id> --body "..."#### 将讨论标为已解决
python <SKILL_ROOT>/scripts/pr_comment_fix_tool.py resolve -c "<pr_comment_fix_context.json>" --seq <seq> --resolved 1若 `resolve` 报错,对照官方文档核对请求体。
---
脚本子命令一览
| 子命令 | 作用 |
|--------|------|
| `fetch` | 拉取未解决 `diff_comment`,写上下文 JSON |
| `reply` | `POST .../pulls/{n}/discussions/{discussion_id}/comments` |
| `resolve` | `PUT .../pulls/{n}/comments/discussions/{id}` |
完整参数见:`python scripts/pr_comment_fix_tool.py --help`。
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...