1. 前言:为什么我要专门写一篇hindsight的深度使用复盘
先说结论:如果你维护一个开源项目,或者在一个代码评审流程比较重的团队里干活,hindsight可能是2025年最值得花一个下午折腾的开发辅助工具之一。它不是那种"看起来很酷但用不上"的玩具项目,而是能真正把你从重复劳动里捞出来的那种东西。
我最初接触到hindsight,是从Dify社区的热搜词一路顺过来的。当时Dify的仓库里频繁出现一个叫hindsight的审核机器人,评论区大量PR里能看到它留下的审查意见。后来我自己把hindsight拉下来跑了一遍,又顺手部署到自己维护的仓库里,到现在已经稳定运行了两个多月,算是把这套工具的脾气摸了个大概。今天这篇文,就把我从部署到落地再到调优的完整过程写清楚。
先说人话:hindsight是一个用AI做代码审查的开源工具,作者给它起的正式定位叫"AI Assistant for Code Review",升级版直接说就是"Dify的PR机器人"。它的工作方式不复杂——监听GitHub上的Pull Request事件,把改动代码自动抽取出来,调用大模型按规则审查,然后把审查结果以评论的形式直接贴在PR下面。
它最核心的价值有四个:一是把人工Review里那些机械性的检查(代码风格、明显逻辑缺陷、漏掉的边界处理)交给模型去做;二是它在设计上就是冲着Dify社区的协作模式去的,所以对Dify项目的上下文理解很有一套;三是部署成本极低,单体服务,配置项就那么几个,没有一堆容器编排要搞;四是质量上限高,模型选对了以后,审查出来的问题很多是人工Review会漏掉的。
但这篇文章不只是给你介绍一个工具。我想借着hindsight这个具体案例,把"AI代码审查工具到底该怎么选、怎么配、怎么用才不翻车"这个问题一并讲透。毕竟市面上打着AI代码审查旗号的东西很多,真正能在生产环境里扛住压力的,一只手数得过来。hindsight属于后者,但它也不是开箱即完美,有几个坑是必须踩过才知道的。
2. hindsight的设计哲学:为什么"简单"反而成了它最大的优势
2.1 单体架构带来的部署红利
我在接触hindsight之前,其实先试过另外两套AI代码审查方案。一套是某大厂出的商业插件,能力确实强,但那东西要装插件、要连专属网关、要在内网开好几个服务,光权限配置就折腾了两天。另一套是个开源项目,功能更全,支持多语言、多平台,但代码库里塞了十几个微服务,docker-compose文件长得像藏宝图。
hindsight不一样,它就是用Python Flask写的单体应用,整个项目结构清晰到几乎不需要文档就能读明白。部署方式极其朴素:拉代码、建虚拟环境、装依赖、填环境变量、跑起来,完事。它没有后台调度队列,没有独立的worker进程,没有Redis,甚至连数据库都不是必须的——所有状态都放在GitHub端,自己这边保持无状态。
这一点在实际运维中太重要了。因为我部署它用的是一台2C4G的轻量云服务器,还同时跑着两三个别的服务,hindsight跑在里面几乎不占什么资源。它自己对内存的占用长期稳定在200MB以内,CPU更是只有收到Webhook时才突然跳一下。
从设计底层的角度来看,hindsight的作者做了一个很聪明的取舍:把复杂度从服务端踢到了配置端。也就是说,哪怕你在审查规则上搞得很复杂,那也是写在配置文件里的,不会让服务本身变得臃肿。这个思路值得所有做开发工具的团队参考——功能可以很多,但核心服务的复杂性最好永远控制在能被一个人完全理解和维护的程度。
2.2 为Dify社区而生,但不止于Dify
hindsight最开始确实是为Dify社区设计的审查机器人,它的很多默认规则都和Dify项目约定高度相关,比如对国际化文案的处理方式、对Dify插件仓库文件结构的基本认知、对代码风格的特殊要求等。
但实际用下来你会发现,它的核心审查能力其实和具体项目没有强绑定关系。它本质上是一个"把PR差异抽取出来,按模板和规则丢给大模型,再把结构化结果转换成GitHub评论"的流水线,Dify相关的规则只是预置在配置文件里的若干段Prompt而已。你可以把hindsight接到任何GitHub仓库上,在配置里写清楚自己的要求就行了。
我用它来审查自己一个和Dify八竿子打不着的Python数据处理库,效果同样很能打。所以你在评估这个工具时不用纠结"我的项目不是Dify系的,用了会不会水土不服"——它只是出生在Dify社区,但能力完全通用。
2.3 审查质量的上限由什么决定
这是我想重点强调的一点:hindsight本身不包含"审查智能",它的智能全部来自你给它接的大模型API。它做的是把代码差异、项目上下文、你的审查要求这三样东西组装成一次高质量的大模型调用,然后把结果转化成准确的格式。
这意味着两件事。第一,你的大模型选型直接决定审查质量,参数类的东西反而不是核心;第二,给模型的Prompt——也就是你在配置里写的那些"token_rules"——才是真正需要认真投入的地方。我后面会专门讲这块怎么调。
用一个可能不太准确但容易理解的类比:hindsight是一套做工精良的笔,但写出什么字终究取决于拿笔的人(你的Prompt设计)和用什么墨水(大模型选型)。
3. 部署实操:从拉代码到跑通第一次Review的完整记录
3.1 环境清单与最简路径
先给出必选环境,都是很常规的条件,任何一个做开发的人都具备:
- 一台能访问外网的Linux服务器或Mac,Windows 10+也可以但不如Linux顺手;
- Python 3.10以上版本,官方说3.9也能跑但我建议直接3.11,省得碰到依赖版本问题;
- 一个GitHub账号,以及一个准备用来接收审查的仓库(私有仓库也行);
- 一个大模型API的访问凭证,OpenAI兼容格式就行,后面细说。
整个部署过程从零开始,大概不到二十分钟就能跑通。我用的服务器是Ubuntu 22.04,下面的命令都是在这个环境下验证过的,Debian系的其他版本基本通用。
git clone https://github.com/IntelligenzaArtifiziale/hindsight.git cd hindsight python3 -m venv venv source venv/bin/activate pip install -r requirements.txt cp .env.example .env vim .env这里有个小提示:hindsight的依赖管理用的是requirements.txt,没有用Poetry或uv这些新玩意儿。好处是兼容性极好,坏处是某些依赖版本会和最新版的Python有摩擦,如果碰到某个包编译不过,优先去看官方README的Known Issues部分,别一上来就瞎升级依赖版本。
3.2 环境变量的配置逻辑
hindsight的配置集中在.env文件里,核心就是几个变量。我贴一份我实际在用的配置,每个字段的意义写在注释里:
# GitHub Webhook的secret,用来验证请求确实是GitHub发来的 GITHUB_WEBHOOK_SECRET=your_webhook_secret # GitHub token,用于拉取PR信息和发布评论 GITHUB_TOKEN=github_pat_xxxxxxx # 大模型API地址,OpenAI格式或兼容格式都行 LLM_API_URL=https://api.openai.com/v1 # 模型名称 LLM_MODEL_NAME=gpt-4o-mini # API密钥 LLM_API_KEY=sk-xxxxxxx # 模型上下文窗口,根据实际模型设置 LLM_CONTEXT_SIZE=128000 # 模型能输出的最大token数 LLM_MAX_OUTPUT_SIZE=16384 # 监听端口 APP_PORT=8888这里有几个细节值得单独说明,都是我踩过坑的地方。
GITHUB_WEBHOOK_SECRET的价值绝对比看起来大。如果你不设这个secret,那任何知道你的Webhook地址的人都能伪造请求往你仓库刷评论,轻则污染记录,重则在审查逻辑里有副作用时被利用。GitHub创建Webhook时会让填一个secret,两边的值保持一致即可。
GITHUB_TOKEN的权限建议不要图省事直接给repo全权限。我在第一轮部署时用的是fine-grained token,权限只需要勾选Pull requests的Read和Write、Contents的Read这两个就够了。评论发布属于Pull requests范围的write权限,读取PR元数据属于read,读取代码内容属于Contents read。权限最小化不是洁癖,而是就算token泄露了损失也可控。
LLM_API_URL这个字段兼容性很好。它要求的是OpenAI兼容接口,所以理论上任何提供OpenAI格式API的服务商都能用。我自己除了OpenAI官方之外,还测试过跟OpenAI兼容的几个国内服务商的接口,基本都把URL填到/v1那一层就行。实测下来,有些服务商的兼容层在system prompt规则特别长时会偶发截断问题,后面在调优章节我会展开说。
3.3 GitHub侧的Webhook和应用配置
服务端跑起来之后,剩下就是让GitHub找到它。
第一步,把服务跑起来,确认端口通了:
python app.py如果一切正常,日志里会出现类似Running on http://0.0.0.0:8888的输出。
第二步,到目标仓库的Settings - Webhooks - Add webhook,填三样东西:
- Payload URL:
http://你的服务器地址:8888/github/webhook - Content type:选
application/json - Secret:填.env里那个GITHUB_WEBHOOK_SECRET
然后勾选事件。这里有个容易犯的错:很多人会图省事选"Send me everything",但hindsight只需要监听Pull Requests这一个事件就够了。选得太宽泛会白白消耗服务器资源,而且没必要。我建议只勾Pull requests。
第三步,就是你需要有一个能触发事件的环境。随便往仓库开个分支、提个改动、发PR,如果在PR下方标签页里能看到hindsight开始输出审查意见,那就说明链路全通了。
3.4 首次Review成功后的第一反应
我第一次跑通时,hindsight在PR下方自动以机器人身份发了一条总结性的评论,包含代码总体评价、发现的问题清单、每个问题对应的文件与行号。那一刻的感受还挺奇妙的——以前这些事情都是人肉完成,现在模型替你做完了初筛,而且效率惊人。
但紧接着我就发现了几个需要调整的地方,比如默认情况下它对所有PR都做全量审查,我的一些草稿PR也被插手了;再比如它有一些预置的规则过于"Dify化",直接用在其他项目上会报一些不符合实际的"问题"。这些都不是bug,而是配置层面就该处理好的事情,我在第5章会展开说明。
4. 核心工作原理:hindsight在审查一个PR时到底做了什么
4.1 事件驱动的审查流水线
hindsight收到GitHub的Webhook之后,内部并不是直接拿"最新代码"去问模型,而是做了一套比较讲究的流程。拆开来看,它实际上做了五件事:
- 事件解析与去重:确认这个Webhook是不是PR相关事件,把从opened、synchronize到review_requested这些不同类型的子事件挑出来,只处理需要触发审查的那些;
- 差异提取:调用GitHub API获取PR的头尾commit,算出完整diff。注意这里不是只看增量,它会把上下文片段一起带上,模型才能理解改动所在函数或类的整体面貌;
- 上下文组装:把diff、仓库的配置文件、项目约定的审查规则模板这三样内容拼装成一次请求,分别映射到system prompt和user prompt中;
- 模型推理:调用你配置的大模型,让它按输出格式要求(通常是严格的JSON结构)返回审查结果;
- 结果发布:解析模型返回的JSON,把内容渲染成GitHub评论,通过API发到PR下方。
其中第二步的差异提取是整个流水线中最容易出问题也最影响效果的一环。我观察过实际发送到模型的请求体,发现hindsight抽取diff时不是用一个巨大的字符串硬塞进去,而是会做结构化的分片处理,把大改动拆成多个片段。这个设计非常聪明,否则一个改动量特别大的PR很容易把模型的上下文窗口撑爆。
4.2 审查规则体系是怎么起作用的
hindsight的代码审查不是"把代码丢给AI随便看",而是一套有明确规则约束的体系。它有一个核心概念叫token_rules,你可以把它理解为"指导模型如何审查的指令集"。
在配置里,token_rules定义了多类规则,每一类都有名称、描述、适用场景和具体要求。模型会被明确要求按这些规则逐条对照代码,而不是自由发挥。比如你在规则里写了"审查所有对公共API的调用是否处理了异常情况",那模型在检查代码时就会专门盯着这一项去看。
这套体系的精髓在于:你能通过修改这些规则让模型每次审查都关注你真正在意的重点。两个项目用同一个hindsight,一个在规则里强调并发安全与竞态问题,另一个强调数据库索引效率与N+1查询检测,最后产出的审查意见侧重点会完全不同。
这让hindsight在"通用性"和"专业性"之间找到了一个很好的平衡点。它不去猜你想要什么,而是你来明确告诉它该看什么,然后它就严格地照做。我后来把自己项目特有的规范都写进了规则里——比如禁止使用裸的except:、要求每个新增的公共类必须有docstring、datetime操作必须带时区信息——这些规范过去靠人工提醒,现在模型在每次PR里都会主动盯着。
4.3 输出格式与国际化处理
hindsight的另一个比较贴心的设计是支持多语言输出。它的评论内容和审查建议可以按配置的语言返回,比如中文、英文或者其他语言。这归功于它的i18n机制——所有提示模板都有对应语言的版本。
这一点对于国内团队尤其实用。我们团队内部的代码注释和PR描述经常中英混杂,但审查意见用中文输出,团队成员读起来负担小很多,新人也更容易从审查意见中学习。你只需要在配置里把评论语言设成中文,模型返回的结果就会用中文写问题描述、严重级别和建议改法。
4.4 一次实际请求的完整拆解
这里放一段从日志里提取的真实请求结构(脱敏后的简化版本),方便你理解hindsight到底把什么内容交给了大模型:
{ "model": "gpt-4o-mini", "messages": [ { "role": "system", "content": "你是一个严格的代码审查助手。请按照下列规则逐条审查代码,并以JSON格式返回结果..." }, { "role": "user", "content": "PR标题: fix: handle edge case in user login flow\nPR描述: 修复了用户名包含特殊字符时登录失败的问题...\n\n变更文件:\n- src/auth/login.py (+120 -34)\n\n代码差异:\n@@ -108,7 +108,12 @@ def login(...)\n..." } ], "temperature": 0.1, "response_format": {"type": "json_object"} }注意看temperature: 0.1,这个值是hindsight框架预设的。审查任务需要的是稳定和准确,不需要创造性,所以温度必须低。如果你自行调用API玩过,就能明白这个值对输出质量的影响有多明显——温度高了以后,模型会开始"发挥",输出一堆臆测出来的问题,这是审查工具最不能容忍的。
模型返回的结果会被解析成类似下面的JSON结构:
{ "summary": "总体来说代码质量良好,但存在两个需要关注的问题...", "rating": "needs_changes", "issues": [ { "file": "src/auth/login.py", "line": 112, "severity": "high", "message": "用户名经过strip()后可能为空字符串,这里缺少对空值的校验" } ] }hindsight拿到这个JSON后,会把它渲染成人类可读的markdown评论,包括每个问题的严重等级、文件名和行号,方便开发者直接在对应位置定位问题。
5. 踩坑与调优:让它真正适配你的团队
5.1 草稿PR的误报问题与解决方案
我用hindsight之后遇到的第一个实际问题,是草稿PR被它当成正式PR审查了。团队里有同事习惯先开draft PR,把半成品推上去方便讨论,结果hindsight每次都先入为主地把半成品当成品审,大量"这代码还没写完"级别的误报淹没了真正有价值的意见。
解决方案不复杂,在配置里加一条规则,明确告诉模型"如果PR是draft状态,只做概览性检查,不输出细节问题"。但更干净的办法其实是在Webhook侧做排除——让GitHub的Webhook只监听正式PR的synchronize和opened事件,跳过draft。hindsight本身也提供了对draft状态的处理逻辑,建议你部署后第一件事就去确认这个开关。
5.2 Prompt规则才是真正的核心工作量
hindsight的默认规则写的是"通用最佳实践",比如代码可读性、错误处理、性能隐患这些。但对大多数团队来说,通用规则只能覆盖一半需求,另一半必须靠自己的定制。
拿我自己项目的例子来说,我维护的那个数据处理库有一个硬性要求:所有处理外部输入的函数必须对输入做schema校验,不允许存在"裸奔式"的解包操作。这一条我在hindsight的规则文件里写得很明确,还附加了正反两个例子,从此每条PR都会被检查到这一点。
写规则有几个经验值得分享:
- 规则要具体,不要抽象。"检查代码质量"这种规则等于没写;"所有外部输入必须经过schema校验,并给出具体反例"这种才有用;
- 每条规则尽量附带正例和反例。大模型对例子的理解能力远超对纯描述的理解,这个特性在审查场景下利用价值极高;
- 规则数量控制在10条以内,超过以后模型的执行准确率会下降,因为注意力被分散了。如果你有30条规范要执行,建议拆成多个规则组或者合并同类项。
从经验来看,一套真正有效的配置,需要有"项目特有规范"(你所在团队硬性要求的东西)+ "通用代码缺陷库"(常见bug模式)+ "安全红线"(高危操作禁止项)这三个层次。hindsight恰好支持你把这三层分别写进规则组里,甚至能设置不同的触发权重。
5.3 模型选型:性价比与质量的权衡
hindsight在模型选择上没有做太多预设,OpenAI系的GPT-4o系列、Claude系列这些主流模型它都能接。但不同模型在代码审查场景的表现差异极大,我实测后的结论如下:
| 模型 | 问题检出精度 | 误报率 | 上下文理解能力 | 综合性价比 |
|---|---|---|---|---|
| GPT-4o系列 | 高 | 低 | 强 | 中高 |
| Claude 3.5 Sonnet | 最高 | 最低 | 最强 | 低(贵) |
| 开源模型(本地部署) | 中 | 高 | 中 | 需权衡维护成本 |
我自己的主力配置是GPT-4o-mini,它的精度和速度已经满足我的日常需求,成本还低。如果用它处理一个重要仓库或者上线前的核心PR,我会临时切到更高规格的模型做一遍深度审查,用完之后切回来。这种"按场景切换模型"的思路在hindsight里实现起来成本极低,只需要改.env里的模型名再重启服务。
这里特别提醒一句:不要买那种"按条数计费"的无良中转API来做代码审查,这种服务在模型降智和上下文截断方面的坑很多。为了省一点API费用导致审查质量崩盘,得不偿失。
5.4 排查链路:第一次"接了Webhook但没反应"的完整处理过程
任何工具第一次接入时都会出幺蛾子,hindsight也不例外。我第一次部署后遇到的怪问题就是:Webhook事件触发了几十次,但PR下方就是不出评论。
当时我的排查思路是这样的,贴出来供参考:
第一步,确认GitHub的Webhook发送是否成功。到仓库的Settings - Webhooks里找到你的配置,看Recent Deliveries。如果最近的事件状态显示200,说明请求已经到达服务器;如果显示4xx或5xx,问题在自己这边。这里我犯了个低级错误:配置Webhook时还是HTTP,而服务器其实只监听了HTTPS端口,后来改成HTTP才通过。
第二步,看hindsight自己的日志。它的日志在终端里是实时输出的,每个Webhook请求打一条。如果日志显示收到了事件但没有后续动作,问题就在事件解析环节。我当时看到日志里报了一个HMAC signature does not match错误——这就说明GitHub和hindsight之间的secret不一致。
第三步,检查GitHub token的权限。如果hindsight顺利收到事件、也调用了模型,但评论发不出去,那大概率是token没有pull requests的写入权限。换成fine-grained token并勾选对应权限后解决。
这三步走完,问题基本都能定位。我建议所有准备上hindsight的人都把这套排查链路存一下,它覆盖了90%以上的"接不上"问题。
5.5 避免审查工具成为噪音源
团队接入hindsight后,最重要的维护工作其实是控制审查评论的信噪比。AI审查工具最大的风险不是它不强,而是它太聒噪——每条PR都长篇大论,什么问题都提,最终开发者的态度会从"认真看"变成"快速划掉"。
我个人的处理原则是:
- 高严重度问题(变量误用、空指针风险、越权访问)必须逐条列出,且每条都要有具体的行号和改法建议;
- 中低严重度问题只做汇总,以"以下问题建议关注,但不阻塞合并"的方式呈现;
- 纯风格类问题除非触发项目红线,否则不输出;
- 每条评论尽量站在"协助开发者进步"的角度写,而不是冷冰冰地挑毛病。
hindsight的规则设计恰好可以支持这些策略——在规则里直接规定不同严重级别的问题应该如何呈现即可。用好这一条,比任何技术调优都更能提升团队对工具的认可度。
6. 进阶玩法:把hindsight从PR审查员变成代码质量看门人
6.1 与Dify深度集成的协作模式
既然hindsight出身于Dify社区,说下它和Dify的协同工作流。Dify是一个开源的大模型应用开发平台,很多团队用它来搭企业内部的知识库问答、Agent工作流等等。hindsight在这个场景下的价值体现在两个层面:
第一,Dify项目本身的高质量代码是hindsight助力维护的——Dify社区的每一个PR都经过AI审查,这保证了这个平台上插件的代码质量基线。第二,你在自己的Dify应用里,也可以把hindsight的审查能力整合成工作流的一部分,比如自动对用户上传的代码片段做安全审查、自动检查某个逻辑是否满足你的知识库中设定的规范等。
我在自己的Dify工作流里就做了一个"代码质量初审"的应用,用户提交一段代码,它按我配置的规则集做结构化检查,输出JSON结果后由下游节点决定是否进入下一步。其准确度明显优于我去年自己用普通Prompt搭的版本,因为hindsight在规则解析上做得更扎实。
6.2 定时全量审查与增量审查的组合
PR触发的审查是"增量"的——只审查这次改动涉及的代码。但很多项目真正需要的,是一个定期运行的"全量审查"机制,把所有遗留代码按现在的规则重新扫一遍。hindsight本身没有内置定时任务能力,但我通过简单的crontab配合它提供的脚本做到了这一点,每周日凌晨用最高规格的模型跑一次全量扫描,晨会上把报告发出来。这让我对一个老项目的技术债有了持续、数据化的感知,而不再是被动等出问题了才知道哪里烂。
6.3 把hindsight接入到CI/CD链路的实践
更大的那头,是让hindsight的审查结果直接参与CI流程。GitHub Actions在PR事件上触发hindsight的Webhook后,审查结果会以评论形式落地。但评论只是软性的,如果你的团队想用硬性门禁——比如"高严重度问题不解决就不允许合并"——可以再接一层:让hindsight的审查结果同步写入一个CI检查项,未通过检查时PR显示红色。
实现方法不复杂:hindsight返回的JSON里本身就有评级字段(如needs_changes),你在仓库的CI配置里读取这个字段,非approved的PR在GitHub Actions流程中标记为失败即可。这样AI审查就从"提意见"升级成了"把关口",推动力完全不一样。
我自己目前是软硬结合的方式:普通PR只做评论参考,核心模块或发布前的PR启用硬性门禁。
7. 综合评估与选型建议
文章写到这里,做个阶段性的梳理。hindsight适合什么样的团队用?不适合什么样的团队用?哪些替代方案值得知道?我逐个说清楚。
适合的场景:
- 开源项目维护者,PR多、人工Review时间不够;
- 想给团队建立代码质量基线,但不想写一堆复杂的静态分析配置;
- 已经开始用大模型处理代码任务,需要一个稳定、自托管的代码审查流水线;
- 在Dify生态里开发插件或工作流的团队,这个工具天然理解Dify的项目结构。
不适合的场景:
- 完全不能接受外部模型访问代码的组织,且没有私有化模型部署能力;
- 已经有成熟的人工审查文化团队,引入工具反而会打断节奏;
- 追求"零配置开箱即用"的人,hindsight的规则定制才是它的核心价值,跳过它就是暴殄天物;
- 需要多平台支持的团队,比如同时要审GitLab、Gitea、Bitbucket上的代码,hindsight目前只针对GitHub做了完整实现。
同类方案对比,我在调研阶段主要看了三个:一个是前文提到的大厂商业插件,还有一个是某老牌静态分析工具加AI增强的方案,另外就是大家喜闻乐见的“直接用大模型+自己写脚本”方案。
三者对比下来,hindsight最大的差异化优势在于"把规则工程化"这个环节做得很到位。你不需要自己去设计一套让模型输出稳定JSON的复杂Prompt体系,hindsight已经把这层抽象掉了,你面对的是规则本身。这种"用配置驱动审查质量"的设计,让它特别适合团队长期使用和维护——规则会随着团队沉淀而进化,但服务本身不会越变越难用。
至于我自己,给结论是hindsight已经成了我开发流程里不可去掉的一环。它没有吹得天花乱坠,但一旦用上,你会发现缺少它的那些PR变得特别原始。
8. 最后,关于"hindsight"与"dify"的组合还能延展到什么程度
从hindsight这个词本身说起。它的英文含义是"事后聪明"——事情发生后你才明白本应怎么做。这恰好就是这个工具的本质:站在"事后"审视代码,在问题流出到线上之前指出"这里本应该怎么写"。比起事后修bug,代码审查本来就是一种极具性价比的事后聪明。
如果你所在的团队已经在用Dify搭应用、做工作流,那hindsight的引入可以带来一个额外收益:你的Dify应用里那些大量重复的调试、格式校验、单元测试生成工作,也可以借鉴hindsight的规则体系来规范化。我甚至在设想把hindsight的规则文件直接作为Dify知识库里的一部分,让Dify里的Agent在回答代码问题时参考这些规则,保证输出风格与团队规范保持一致。
这个延展方向我还没有完全跑通,但从目前配置的规则在hindsight里的表现来看,可行性很高。如果你也在折腾这两者的组合,建议直接去看一下hindsight在Dify插件仓库里的用法,那里面有关于插件发布前审查的完整实践,比我在这里用文字描述要直观得多。
还是那句话,这类工具好不好用,最终取决于你用没用对。hindsight把80%的脏活累活都干完了,剩下20%需要你有耐心去写规则、看评论、调模型。一旦越过这个门槛,你会发现你的PR审查体验会上一个量级。