执行顺序: 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 所在目录。
bash
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 的简要概括或首行,勿整段粘贴):
序号文件行号问题1diff_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 子命令: 修改检视意见解决状态。不得 在未获用户确认时代为发送评论或修改远端状态。
bash
python <SKILL_ROOT>/scripts/pr_comment_fix_tool.py reply -c "<pr_comment_fix_context.json>" --seq <seq> --body "<正文>"
# 或 --discussion-id <id> --body "..."
bash
python <SKILL_ROOT>/scripts/pr_comment_fix_tool.py resolve -c "<pr_comment_fix_context.json>" --seq <seq> --resolved 1
若 resolve 报错,对照官方文档核对请求体。
子命令作用fetch拉取未解决 diff_comment,写上下文 JSONreply``POST .../pulls/{n}/discussions/{discussion_id}/comments``resolve``PUT .../pulls/{n}/comments/discussions/{id}
完整参数见: python scripts/pr_comment_fix_tool.py --help。