核心功能
做过代码审查的人都懂那种痛苦——PR里几十条review comments,哪些已经处理了,哪些还悬着没动?一条条翻简直是折磨。fetch-unresolved-comments这个Skill专门解决这个问题,通过GitHub GraphQL API精准抓取PR中未解决的review thread,自动过滤掉已resolved和outdated的反馈,让你只看真正需要处理的内容。
它的核心逻辑很清晰:给一个PR链接,返回按文件分组的未解决评论列表,包含thread ID、代码行号、diff上下文、评论内容和作者信息。不多不少,刚好够用。
适用平台
fetch-unresolved-comments作为一个标准Skill,可以无缝接入主流AI编程助手的工作流。无论你用的是Cursor、GitHub Copilot、Claude Code,还是OpenAI Codex、Gemini Code Assist,甚至国内的文心快码、腾讯云CodeBuddy、华为云CodeArts,都可以把这个Skill挂进去。
特别是在Claude Code或Cursor里,把这个Skill配合AI上下文使用,AI能直接读取未解决的review comments,然后帮你逐条分析、生成修改建议,甚至直接写出对应的代码改动。这才是AI辅助代码审查该有的样子。
实操代码示例
使用方式非常简单,两步搞定:
第一步,确认PR地址。如果设置了环境变量可以自动构建:
export PR_NUMBER=18327export GITHUB_REPOSITORY=mlflow/mlflow
第二步,直接跑Skill:
uv run skills fetch-unresolved-comments https://github.com/mlflow/mlflow/pull/18327
GitHub token会自动从GH_TOKEN环境变量读取,或者通过gh auth token命令获取,不需要手动传参。返回的JSON结构按文件分组,每个thread包含完整的diff上下文和评论链,一目了然。
优势分析
市面上大多数工具要么拉全量comments(噪音太多),要么只显示comment数量(没有上下文)。fetch-unresolved-comments的差异化在三个点:
- 精准过滤:只返回unresolved状态的thread,resolved和outdated的全部排除,零噪音。
- 结构化输出:按文件分组,带diffHunk上下文,AI或脚本可以直接消费,不需要二次解析。
- 零配置鉴权:自动读取gh CLI的token,不用额外配置,开箱即用。
应用场景
场景一:AI辅助批量处理review。把这个Skill的输出喂给Claude Code,让AI逐条分析每个未解决的comment,生成对应的代码修改方案。一个中等规模的PR,原本需要半小时的review处理,可以压缩到10分钟以内。
场景二:CI/CD流水线集成。在合并前的检查步骤里加一个断言:如果fetch-unresolved-comments返回的total大于0,阻断合并。强制要求所有review comments处理完才能进主干,代码质量管控更严格。
场景三:每日站会准备。早上开站会前跑一遍,快速汇总所有待处理的review反馈,按文件维度汇报进度,比手动翻GitHub界面快多了。
场景四:多PR并行管理。同时维护多个feature branch的团队,可以写个脚本批量调用这个Skill,生成全团队的未解决review汇总报告,项目经理和tech lead都爱看。
最佳实践
几个用起来更顺手的小技巧:
- 环境变量优先:在CI环境里,
PR_NUMBER和GITHUB_REPOSITORY通常由平台自动注入,直接用就行,不需要硬编码PR URL。 - 结合jq做二次过滤:如果只想看特定文件的comments,可以用
jq '.by_file["src/main.py"]'快速提取,不用改Skill本身。 - token权限最小化:GH_TOKEN只需要
repo读权限,不要用全权限token,安全第一。 - 输出缓存:在自动化脚本里,建议把输出结果写到临时文件,避免同一个PR重复调用API,节省rate limit配额。
- 与git hooks配合:在pre-push hook里调用,提交前先确认自己的PR没有遗漏的review反馈,养成好习惯。
如果你的团队在用AI编程助手做代码审查,这类Skill的价值会被放大好几倍。Skill优仓上还有很多类似的工程化Skill,专门为AI辅助开发工作流设计,覆盖从代码生成到测试、部署的完整链路。有需要的话去Skill优仓逛逛,说不定能找到几个直接能用的。








暂无评论内容