Install
openclaw skills install pr-comment-fix按 GitCode PR 检视意见修改代码。需 GITCODE_TOKEN。Use when 用户要修改 PR 检视意见。
openclaw skills install pr-comment-fix执行顺序:fetch 写出 JSON → 按模板汇总并请用户选范围 → 确认后再改代码 → 本地验证并输出修复总结表 → 用户需要时再 reply / resolve。
--pr-url);不支持仅填 owner/repo/编号,不做基于 git 的自动匹配。GITCODE_TOKEN 环境变量,或用户消息中提供;也可用脚本参数 --token。PRIVATE-TOKEN(与现有 GitCode skills 一致)。scripts/pr_comment_fix_tool.py)。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>"
fetch 仅接受 --pr-url:URL 路径含 /pull/、/pulls/ 或 merge_requests/ 均可解析。请从浏览器复制 PR 所在仓库 的页面链接(fork 场景下一般打开上游仓库里的 PR)。脚本写出 pr_comment_fix_context.json(或打印到 stdout),其中包含:
owner、repo、pr_number、pr_html_urlunresolved_diff_comments:每条含 seq、discussion_id、body、diff_file、resolved 等 API 原始字段(须保留 discussion_id 供后续回复/改状态)by_file:按文件分组,同一文件内评论已按 行号相关字段从大到小 排序(便于从文件末尾往前改)筛选规则:仅包含 未解决 行评(resolved 不为真;缺省视为未解决)。
若 JSON 含 warnings(如缺少 discussion_id),须告知用户:对应条目 无法 使用脚本的 reply / resolve。
fetch 成功并已有 pr_comment_fix_context.json 后,下一步只能是步骤 2(汇总并按模板输出、再询问用户)。不得直接进入读文件、打补丁或「顺手改一处」。读取 JSON:以 unresolved_diff_comments 为准(可与 by_file 对照),统计条数 N。
必须先用下面表格向用户展示全部待处理项(序号与 JSON 中 seq 一致;行号取自接口字段,如 line / original_line / position 等,无则写「见讨论/无行号」;问题用 body 的简要概括或首行,勿整段粘贴):
| 序号 | 文件 | 行号 | 问题 |
|---|---|---|---|
| 1 | diff_file | … | … |
| … | … | … | … |
询问用户处理范围:全部/是、部分序号如 1,3、不修/跳过。
用户回复可解析后再进入步骤 3;不明则再问。发出表格与询问后须等待用户下一条消息,在此之前不得编辑代码。
「不修」→ 结束,不改代码。
依据 pr_comment_fix_context.json 中的 by_file 与 unresolved_diff_comments 修复:
by_file 为准;同一文件内 按数组顺序(已 从后往前)逐条处理,减少行号漂移。diff_file 为准;修改前 先读当前文件对应行,勿盲信过时行号。diff_file 相对仓库根解析;若找不到,再尝试去前缀或让用户确认根目录。每批或全部修改完成后:
python -m py_compile)。ruff / eslint / make test 等),在可行时执行。必须先输出「修复总结表」(与步骤 2 中条目对应;处理方式写本次实际做了什么;未动的项不要编造):
| 序号 | 文件 | 行号 | 问题 | 处理方式 |
|---|---|---|---|---|
| 1 | … | … | (与步骤 2 对应) | (简述:如何改、是否仅说明未改) |
| … | … | … | … | … |
顺序固定为:
reply(见下)调用官方接口:回复 Pull Request 评论。resolve 子命令:修改检视意见解决状态。不得在未获用户确认时代为发送评论或修改远端状态。
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。