dg 是一个代码审查技能,以《硅谷》剧集中的 Dinesh 与 Gilfoyle 为角色原型,通过两个智能体的对抗式辩论来完成审查。Gilfoyle 负责以犀利的技术视角攻击代码,Dinesh 负责辩护;调侃是形式,目的是让审查更有趣且更彻底,最终仍需落到可执行的结论上。\n\n用途与调用方式\n通过 /dg 命令触发。支持四种参数形式:不带参数时审查 git diff(已暂存与未暂存)并默认最多 5 轮;只给数字时审查 git diff 并以该数字为轮数上限;只给路径时审查该路径并默认 5 轮;路径加数字时审查该路径并以数字为轮数上限。\n\n主要能力\n1. 代码收集:若目标为 git diff,则合并 git diff HEAD 与 git diff --staged 的结果,两者皆空时提示无内容可审;若为文件或目录,则读取目标文件或目录内全部源文件。\n2. 依赖上下文:自动查找项目根目录下的依赖文件并纳入上下文,供 Gilfoyle 做依赖漏洞扫描,覆盖 Node.js(package.json、lock 文件)、Python(requirements.txt、pyproject.toml、Pipfile.lock)、Go(go.mod、go.sum)、Java(pom.xml、build.gradle)、Ruby(Gemfile 等)、Rust(Cargo.toml、Cargo.lock)、PHP(composer.json、composer.lock)。\n3. 辩论流程:每轮先派发 Gilfoyle 输出审查意见并展示,检查其发现是否全为重复项以判定收敛;再派发 Dinesh 进行辩护并展示,若其所有要点均为让步则判定收敛。两位智能体均被限定为只做研究、只读代码、不修改任何文件。\n4. 轮数控制:达到上限时询问用户是否继续,选择继续则按原上限延长后接着辩论,否则进入综合阶段。\n5. 最终审查:从完整辩论记录中整理出最佳交锋片段、分类结论(Critical 为 Dinesh 无法辩护的真实问题、Important 为辩论后 Gilfoyle 胜出、Contested 为 Dinesh 成功守住、Dismissed 为双方均认为不重要)、优势项、双方比分以及纯操作性的推荐修改清单。\n6. 漫画条(可选):审查结束后可询问是否生成漫画条,选择生成则填充内置 HTML 模板并输出到 /tmp 下的时间戳文件并在浏览器打开;选择发布到 PR 时,会尝试用 puppeteer、wkhtmltoimage 或 Safari 将 HTML 转为 PNG,再检测当前 PR 并将评论发布上去;若截图工具不可用,则提示用户手动截图。\n\n适用场景\n适合希望在代码审查中获得多角度对抗性意见、同时接受一定娱乐化表达的开发者,尤其是需要借助“辩护失败”这一信号识别真实问题的场景。\n\n限制\n- 效果依赖所选模型与代码上下文,资料未提供具体质量保证。\n- 是否收费、价格、支持平台等事实暂未提供。\n- PR 评论流程依赖 gh 命令行与本地截图工具,资料未说明在各类环境下的可用性。\n- 辩论轮数上限与依赖文件识别范围以资料所述为准,其他扩展能力暂未提供。
dg
编程与开发
更新于 10-23 16:17