拓冰建站拓冰建站
首页 / 资讯中心 / 正文

PostHog ReviewHog 评估实验中的运行报告深度解析:以 `A-sonnet5-xhigh-1` 为例的 Reviewer 模型质量评测方法

PostHog ReviewHog 评估实验中的运行报告深度解析以A-sonnet5-xhigh-1为例的 Reviewer 模型质量评测方法【免费下载链接】posthog:hedgehog: PostHog is the leading platform for building self-driving products. Our developer tools – AI observability, analytics, session replay, flags, experiments, error tracking, logs, and more – capture all the context agents need to diagnose problems, uncover opportunities, and ship fixes. Steer it all from Slack, web, desktop, or the MCP.项目地址: https://gitcode.com/GitHub_Trending/po/posthog导读本文围绕 PostHog 开源仓库中 products/review_hog/eval/experiments/2026-07-reviewer-model-glm52/runs/A-sonnet5-xhigh-1.md 这一份完整的 reviewer 质量评估运行报告展开系统讲解 ReviewHog 自动化 PR 审查系统如何设计并执行「评审模型对比实验」、如何解读一份 run dump 中的每个指标漏斗、缓存感知成本、阶段耗时、单审查单元分解以及如何通过 validator 判定 对抗式验证来从噪声中沉淀真正值得修复的问题。读者读完后将能够独立读懂该实验目录下任意一份*-xhigh-*.md运行报告理解其成本核算方法与发现判定标准并掌握在本地复现此类评估运行的关键步骤。一、实验背景为什么需要一个「运行报告」ReviewHogproducts/review_hog是 PostHog 的自动化 GitHub PR 代码审查器拉取 PR → 切分 chunk → 按视角perspective并行审查 → 合并去重 → 验证 → 渲染并发布审查评论。其审查质量直接取决于执行「视角审查」perspective review的 LLM 模型。2026-07 的2026-07-reviewer-model-glm52实验要回答的核心问题是见 PLAN.mdcf/zai-org/glm-5.2是否比claude-sonnet-5更擅长应用 ReviewHog 的审查视角其余条件全部保持恒定。实验设计为 A/B 双臂A 臂基线 生产配置为claude-sonnet-5xhighB 臂为cf/zai-org/glm-5.2MAX。为了确保可比性一批变量被刻意冻结验证阶段统一用claude-opus-4-8 xhighchunking / 视角选择 / 去重等一次性调用统一用claude-sonnet-5 xhigh所有提示与技能skill重置为默认目标 PRPostHog/posthog#72680在实验期间冻结在 head1341596e不做任何推送。每轮运行结束后通过 dump_result.py 把数据库中的ReviewReport及其 artefact 导出为一份 Markdown 运行报告——即本文解析的这份A-sonnet5-xhigh-1.md。注意报告多处注明 PR head1341596e不在当前 checkout 中如 migration 0019、queue_inbox_pr_review等改动均不存在因此对 PR 内容的分析只能基于基线代码这一点在解读「发现的判定」部分时需要记住。二、Config snapshot一次运行在什么配置下发生运行报告头部是「Config snapshot」它声明了本次运行的模型与管线常量runtime / model / effortclaude/claude-sonnet-5/xhigh—— 即 A 臂的基线配置。在真实代码中这些值对应 constants.py 中的REVIEW_RUNTIME_ADAPTER/REVIEW_MODEL/REVIEW_REASONING_EFFORT常量当前 master 上这些常量已是实验结论落地后的gpt-5.6-sol说明实验完成后默认评审模型已被替换。single-chunk gate / chunk target / soft-max additions 400 / 300 / 600—— 对应 constants.py 中的SINGLE_CHUNK_GATE_ADDITIONS≤400 行新增走单 chunk 路径不调用 chunking LLM、CHUNK_TARGET_ADDITIONSLLM 切分器瞄准的每 chunk 新增行数、CHUNK_SOFT_MAX_ADDITIONS软上限不强制。本报告最终产出 4 个 chunk说明该 PR约 742 行可审查新增走的是 LLM 语义切分路径。实验还记录了每条运行的环境前置条件PLAN.md Preflight 章节Temporal worker 与 backend 进程运行中、三个 ngrok 隧道django→:8010、gateway→:3308、mcp→:8787可用、网关 allowlist 已加入 GLM 模型、本地$ai_generation遥测链路打通LLM_GATEWAY_POSTHOG_AI_LANE_CAPTUREfalse等——这些是任何本地评估运行的硬前提。三、Funnel cost从原始问题到有效发现的数量漏斗报告的「Funnel cost」表给出了本次运行的核心产出chunksreview unitsraw issuesafter deduppassed validator41325203漏斗含义对应 ARCHITECTURE.md 的流水线raw issues25所有(perspective|blind-spot) × chunk沙箱审查单元产出的原始问题总数。after dedup20经过 combine scope-clean 去重后保留的问题。去重先跑确定性位置预过滤_select_dedup_candidates只有文件相同且行区间重叠的问题才可能重复碰撞候选才交给 LLM 去重调用。passed validator3通过 validatorclaude-opus-4-8 xhigh 的按 chunk 多轮验证会话判定为is_valid的问题。报告特别强调review units 每个 (perspective|blind-spot × chunk) 沙箱审查单元 模型保持恒定的成本代理。A1 共运行 13 个单元——3 个视角 × 3 个 chunk9 个视角单元 4 个 blind-spot 单元每个 chunk 一个。3.1 缓存感知成本cache-aware spendnaive 计价的 4.4 倍虚高报告的第二张表是「Cache-aware spend」这是本实验成本核算的核心方法。它按model × stage统计每次生成的 token 拆分modelstagegensfresh incache writecache readoutput200K genstrue $gw $claude-opus-4-8validation126109,152766,56414,950,199184,0828$17.41$17.41claude-sonnet-5review156238,9371,803,70718,016,362282,22910$11.41$11.41…………………………total452500,1734,356,81253,713,381707,88621$46.52$46.52关键事实与解读true $ 列表价回算fresh input × 1.0 cache write × 1.25 cache read × 0.1 output。该公式在 dump_result.py 的_spend_report中实现每个 gen 的输入 token 被拆成fresh input − read − write三部分分别计价。gw $ 网关$ai_total_cost_usdLiteLLM 计算。本次两种口径完全一致Δ 0.0%互相交叉验证通过。naive 方法全部 prompt token 按输入价计价为 $203.82是真实成本的 4.4 倍——报告明确警告「never gate on it」。原因在于$ai_input_tokens包含 cache read/write而 cache read 只按 0.1× 计价$53.7M 的 cache read 实际只值约 $17.84。这是 POTENTIAL_EXPERIMENTS.md 中反复强调的「scary input token 数字 ~90% 是廉价缓存读取」的具体实例。unpriced 模型cf/zai-org/glm-5.2只有 1 次 genother阶段网关对其计价为 $0.00true $总计中排除该模型。这正是 FINAL_REPORT.md 提到的「GLM 成本没有网关定价」问题的表现——GLM 臂的成本只能按 token 数 × LiteLLM CF 定价手工推算。21 个 gen 的 prompt 超过 20 万 token_LONG_CTX_TOKENS阈值网关对这组模型按平价格计价故两列都不含长上下文溢价——该列只是诊断计数不是定价输入。跨端交叉校验输入侧fresh cache write cache read$35.4477其中 cache read $17.8399、cache write $16.2597、fresh推导$1.3481输出侧 $11.0685——与true $逐项对账一致Δ 0.0%。这些数据的来源是本地 ClickHouse 的$ai_generation事件dump_result.py 的_spend_rowsSQL 查询FROM events WHERE event $ai_generation按task_title中的[sandbox_prompt:step]前缀归类到 review / blind-spot / validation / chunking / dedup / warmup 各阶段。3.2 Turn-1 缓存读取跨沙箱缓存共享的「绊线」报告的第三张表列出每个沙箱单元第一轮 gen 的 cache read / cache write 与模型列表其用途是探测跨沙箱缓存共享是否存在表中 18 个单元里 14 个 turn-1 cache_read 014/18说明多数单元的第一轮 prompt 命中了其他沙箱写入的缓存前缀。3 个单元…33a62b9f、…a7859b17、…06074ce8标记为⚠️SWITCHED——会话中途从claude-sonnet-5切到了claude-opus-4-8。这是 Claude SDK 的fallbackModel「过载救援」机制导致的FINAL_REPORT.md 称 Sonnet 臂约 20% 的 finder gens 被 Opus 4.8 污染。对这些单元缓存共享与成本钉扎cost pinning都是失效的dump 工具会在模型集合 1 时自动打上 SWITCHED 标记_spend_report中len(models) 1的判断。报告提醒「report the distribution, not a median」——即不要用中位数概括这个分布而应报告有多少单元命中了缓存、多少发生了切换。四、Stage timing哪个阶段吃掉了墙钟时间「Stage timing」表按 artefactcreated_at推导各阶段墙钟耗时只有在全新、非恢复non-resumed的运行中才有意义stagedurationfetch snapshot0schunking0sperspective selection22sreview wave (perspectives)22m 19sblind-spot sweep22m 18sdedup (incl. combine/clean)1m 36svalidation20m 10sReview stage totalselection → last finder unitwave blind-spot 44m38s——这是报告明确标注的「reviewer-model speed comparison number」即比较不同评审模型速度的头号指标。GLM 臂的对应数字是 42m41s / 65m39sOpus 4.8 臂则只要 24–26 分钟见 FINAL_REPORT.md。阶段耗时来自 artefact 的created_atdump_result.py 的_stage_secs因此恢复resume过的运行会因复用旧 artefact 而扭曲耗时数据。本次运行总墙钟 4044 秒67.4 分钟。其中审查 验证占绝大多数时间符合 POTENTIAL_EXPERIMENTS.md 中「review blind-spot ≈ 80% 运行成本」的经验结论。五、Chunking 与 Per-review-unit breakdown审查工作量的分解5.1 本次的 4 个 chunk报告列出本次运行实际采用的 4 个 chunk该切分随后被固定为整个实验的 pinned chunks供其余 7 次运行复用chunk 18 文件products/review_hog/backend/models.py、migration0019_reviewusersettings_stamphog_review_inbox_prs.py、backend/api/settings.py、backend/receivers.py以及 review_hog 前端与 MCP 的生成类型文件CodeReviewScene.tsx、api.schemas.ts、api.zod.ts、services/mcp/src/api/generated.tschunk 28 文件stamphog 后端 facadefacade/api.py、facade/inbox_hooks.py、任务tasks/tasks.py、temporal/activities.py、logic/reviewer.py、tasks 产品 facadefacade/api.py、facade/contracts.py与tach.tomlchunk 34 文件tools/pr-approval-agent/下的review_pr.py、review_local.py、reviewer.py、version.py注该目录不在当前 checkout 中chunk 42 文件products/stamphog/AGENTS.md与README.md5.2 13 个审查单元如何组成「Per-review-unit breakdown」把 13 个单元逐一列明pass 1/2/3 分别对应三个视角contracts-security、logic-correctness、performance-reliability在 chunk 1–3 上的 9 个单元pass 1000 是 blind-spots-general 在每个 chunk1–4上的 4 个盲区扫描单元。这与 constants.py 中BLIND_SPOT_PASS_NUMBER 1000的保留 pass 号约定完全吻合——盲区单元使用远高于任何视角枚举的固定 pass 号确保持久化的(pass, chunk)恢复键不会与视角 wave 冲突。视角与盲区技能分别位于 skills/ 目录如review-hog-perspective-contracts-security/SKILL.md、review-hog-blind-spots-general/SKILL.md。六、Findings with validator verdict本报告最有价值的部分报告主体是 15 条去重后的发现findings每条都附带完整的 Problem → Suggestion → Validator 三段式结构。最终判定为 3 条✅ VALID、13 条❌ dismissed——与漏斗中「passed validator: 3」吻合。6.1 两条 VALID 发现安全/性能发现一securitymust_fix → validator 降级 should_fixfind_signal_implementation_run在底层任务运行被取消/失败或任务被删除后仍继续授予 self-driving 豁免。Problemstamphog 的 webhook 豁免路径_inbox_rereview_carve_out把find_signal_implementation_run当作唯一的正向识别检查用于跳过 bot 作者拒绝、draft 前置、review-mode 与作者写权限四道门。但它委托的find_task_runwebhooks.py的pr_url分支「偏好非终止运行但会回退到终止运行」order_by(terminal_rank, -created_at).first()且所有分支都不过滤task.deleted。取消CANCELLED/FAILED或软删除任务只翻转 DB 标志、拆除沙箱没有任何代码路径去关闭对应的 GitHub PR。因此团队取消/删除一个失控的 self-driving 任务后只要其 bot PR 仍在 GitHub 上开着之后的任何 pushsynchronize/reopened/retarget仍会命中find_signal_implementation_runstamphog 会重新套上全套豁免——包括真实批准一个其背后自动化已被明确停止的 PR。Suggestion在正向识别检查中排除取消/失败运行与已删除任务例如在返回前增加run.status in (CANCELLED, FAILED) or task.deleted判断COMPLETED 运行仍可匹配已合并 self-driving PR 的后续合法 push 是 leg-2 的预期场景。Validator 判定VALID降级 should_fix逐条核验了find_task_run的三个分支、facade 门api.py:504-516、唯一调用方_inbox_rereview_carve_outtasks.py:144-215、取消/软删除路径与 webhook 测试。确认pr_url分支在无活跃运行时会返回终止运行test_pr_url_prefers_active_run_over_terminal只断言了「偏好」_TERMINAL_RUN_STATUSES COMPLETED/FAILED/CANCELLEDTask.soft_delete()只翻 DB 标志models.py:445-448。结论这是真实的授权作用域缺口达到保留标准但正向识别无法伪造需要真实携带 signal-report、非 internal、绑定该 PR 且同 team 的运行因此不是可跨租户利用的关键漏洞从 must_fix 降为 should_fix。发现二performanceconsidercarve-out 对非 self-driving 的 bot PR 触发了posthog_task_run.branch的无索引顺序扫描。Problemfind_signal_implementation_run调用find_task_run(pr_url…, branchhead_branch, repository…)。pr_url分支由函数索引task_run_output_pr_url_idx服务但未命中时回退到纯 branch 查询filter(branch…, task__repository__iexact…, state__wizard_head_branch__isnullTrue)——TaskRun.branch与大小写不敏感的task__repository都没有索引TaskRun.Meta.indexes只覆盖output__pr_url、state__wizard_head_branch、created_at、taskcreated_at、teamstagetask。真正的 self-driving PR 在索引的pr_url分支命中该扫描恰好被不匹配的 bot PRdependabot/renovate 的 synchronize 事件命中永不匹配、纯属浪费。Suggestionself-driving 运行由已索引的output.pr_url正向标识carve-out 可传head_branchNone跳过纯 branch 分支若保留回退则为TaskRun.branch加作用域索引。Validator 判定VALID维持 consider核验了TaskRun.Meta.indexesmodels.py:1147-1174、branch 分支查询webhooks.py:64-78与调用链。确认不存在服务该查询的索引、iexactjoin 无法使用 btree且该扫描正可被描述的 bot 场景到达。这是「无界增长表上的可达缺失索引顺序扫描」有具体触发条件stamphog 仓库上的日常 dependabot/renovate synchronize和廉价修复但为潜在latent问题且是既有 backstop 路径consider 评级恰当。发现三securityshould_fix → validator 降级 considerreceiver leg 在零正向 PR 识别不查 bot 作者、不复查任务关联的情况下发布真实批准。Problemprocess_inbox_pr_review是初始审查 leg抓取调用方提供的pr_url处的 PR → 盖上output{inbox_review: …}的 provenance → 启动审查 workflow。该 provenance 在引擎中翻转self_driving_reviewTrue放宽 bot 拒绝与 draft 前置且此 leg 直接启动 workflow、不经过process_pull_request_event因此 per-reporeview_mode门与作者写权限门完全不被应用。它唯一的保护是解析该 PR 仓库的 syncedenabledStamphogRepoConfig。与兄弟 webhook leg_inbox_rereview_carve_out会检查_is_bot_authored、复查find_signal_implementation_run、检查 fork 安全相比此 leg 缺失全部正向识别。Suggestion在授予 self-driving 豁免前镜像 webhook leg 的正向识别——至少抓取 PR 后if not _is_bot_authored(pr): return更好的是复查调用方断言的关联。Validator 判定VALID降级 consider确认 receiver leg 确实不做任何 PR 身份验证且其pr_url直接读自TaskRun.output[pr_url]receivers.py:93非 bot PR URL 进入该字段的唯一方式是 tasks webhook backstop_record_run_pr_urlwebhooks.py:212的上游误绑定——但该路径有 fork 保护is_internal_branch且只写一次。正常不变量self-driving 运行记录自己的 bot PR成立所以被取回的 PR 在每次普通运行中都是 bot 作者。有害路径是低概率、多条件的边缘情形但廉价修复 严重最坏情况使其值得保留在记录中而非彻底丢弃。6.2 13 条被驳回的发现precision-over-recall 的判定标准其余 13 条发现全部被 validator 驳回驳回理由高度一致构成理解 ReviewHog validator 判定哲学的窗口「今天无害 / 不可达」类如has_reviewable_repo_config缺providergithub过滤api.py:120-124——validator 核实 GitHub 是唯一已实现 provider非 github 行永远无法满足其门槛条件installation_id与connected_by_user_id只由 GitHub App 流程写入stamphog_connected报告项目级而非仓库级连通性——settings 端点在渲染时没有「该仓库」的上下文且真实 per-PR 门已经是 per-repository 的StamphogRepoConfig唯一键(team_id, repository)。「上游已处理」类如_format_self_driving不交叉核对pr.author_is_bot——validator 确认self_driving只从 inbox provenance 派生activities.py:451webhook leg 非 bot 作者拒绝盖章tasks.py:169early return引擎的is_bot_authorgithub.py:79是 facade_is_bot_authored的严格超集不存在可达的「self_drivingTrue 人类作者」路径bool()强制转换问题——产端是类型化booljson.dumpsfalse字符串在任何可达路径下都不会出现_attach_familiarity未被 self_driving 守卫——服务端在 self-driving 场景下显式把author_pr_numbers置为[]activities.py:237-238。「文档措辞偏好」类如 AGENTS.md 的两条文档交叉引用建议——validator 核实 carve-out 段落已完整记录运行时分歧、Engine parity 段落本 PR 未改动纯属「文档导航便利性」不属于正确性/安全/数据丢失/契约/性能/可靠性缺陷。「类型注解收紧」类signal_report_id: strvsAny的宽松类型——validator 核实SignalReport extends UUIDModel、report_id是 UUID FKDjango 的UUIDField在查询准备时对 str 与 UUID 一视同仁产出相同 SQL、匹配相同行且失败方向是 fail-closed。「防御性偏执」类transaction.on_commit双回调队列耦合——_start_review的唯一现实失败操作已在 try/except 内队列外只剩缓存于sys.modules的延迟 importdeferred import 位于 try 外——这是_start_review已确立的既有约定且 on_commit 在事务提交后运行import 失败无回滚/数据损失。这 13 条驳回正是 validator 依据 review-hog-validation-criteria 技能中的判定标准执行的结果保留真实的用户可感正确性/安全/数据丢失/契约/性能问题丢弃过度工程、投机、防御性偏执、never-gonna-happen 边缘与风格问题——即precision over recall。6.3 判定的可信度对抗式验证协议需要强调的是报告内的 validator 判定只是管线内的一层FINAL_REPORT.md 记录了实验的完整验证协议每条去重后的发现实验总计 73 条都由独立的对抗式验证 agent针对真实 PR worktreehead1341596e逐一核验refutation-first先尝试推翻。跨集合聚类器把 73 条发现归并为 53 个底层问题簇后续轮次扩至 74–76。三位盲审blind judges分别从 recall-reliability / precision / impact 三个透镜对匿名模型打分权重倾向「可重复捕获」而非单次运气。关键校准结论管线 validator 的选择与独立验证只部分重合——A1 的 validator 只放行了 3 条独立验证确认了 7 条真实问题。这说明 validator 偏严也解释了为什么实验结论要依赖独立验证而非管线 validator 的通过数。七、从这份报告到实验结论Sonnet 5 为什么留任虽然本文主体是 A1 这份单运行报告但它所属实验的结论FINAL_REPORT.md可以帮你理解这份报告在整体证据链中的位置A/B 结论GLM 5.2 不是「更好」而是「不同」——盲审面板 2:1 倾向 GLMrecall-reliability 与 impact但代价是约 1.6× 的精度差距Sonnet 31.8% vs GLM 19.4%、80% 的噪声率与 40–100% 更高的 finder 阶段成本Cloudflare 路径无 prompt 缓存。后续扩展实验随后扩展到 4-waygpt-5.5、opus-4-8、round 4gpt-5.6-luna/terra、round 5gpt-5.6-sol Sonnet 稳定性复核、round 6带注入记忆的顺序 Sol。Sonnet 5 四次运行每次都恰好验证 7 条真实发现7/20、7/24、7/23、7/26精度等级稳定recall 王座未被撼动——「不是运气」。最终推荐claude-sonnet-5 xhigh 继续担任默认评审模型gpt-5.6-sol~$11/run、~8 分钟干净审查成为第二意见 lens 的候选其顺序轮次在管线原生记忆already_covered_findings_for_chunk注入下能叠加而非重复。实验还顺带发现了多个真实产品 bug独立于胜负poll_for_turn不把stopReason:refusal视为终止导致 30 分钟挂起、Codex MCP 闪断导致无技能审查、Codex 缓存遥测缺口、120MB handoff 包上传失败等其中 refusal fail-fast 修复已落地并有回归测试。八、如何复现一次同类评估运行结合 PLAN.md 的 per-run 循环与 ARCHITECTURE.md 的本地运行说明一次评估运行的完整流程是设置臂常量修改backend/reviewer/constants.py的REVIEW_MODEL/REVIEW_REASONING_EFFORT实验期 hack评估后回滚到 Sonnet 基线确认 temporal-worker 已热重载nodemon监听products/**/*.py绝不在飞行中翻转常量。记录起点date %s得到RUN_START_EPOCHdump 脚本据此划定$ai_generation时间窗口。运行审查flox activate -- bash -c SANDBOX_PROVIDERMODAL_DOCKER DJANGO_SETTINGS_MODULEposthog.settings \ python manage.py run_review --pr-url https://github.com/PostHog/posthog/pull/72680 --team-id 1 --user-id 1--pr-url/--team-id/--user-id三个参数必填评估运行不使用--publish零 GitHub 写入。导出 dumpLABELlabel RUN_SECONDSs RUN_START_EPOCHepoch \ OUT_DIRproducts/review_hog/eval/experiments/exp/runs \ python manage.py shell -c exec(open(products/review_hog/eval/scripts/dump_result.py).read())脚本读取 team 1 最近的ReviewReport及其 artefacts写出包含配置快照、chunking、逐单元分解、漏斗、缓存感知成本、阶段耗时与完整发现清单的 Markdown。模型完整性检查每轮强制dump 的消费表必须显示该臂的模型出现在每个issues-review-*/blind-spots-*gen 上——$ai_model是唯一可信信号403 或未列入的模型会静默回退到 Opus 且无警告这正是 A1 出现 SWITCHED 单元的机制。清理DEBUG1 python manage.py reset_review_hog --yes每次 dump 之后必做会清空全部四个 review_hog 表并将技能配置重新播种为默认保证每轮 roster 一致。预检清单还包括本地遥测前置LLM_GATEWAY_POSTHOG_AI_LANE_CAPTUREfalse 重启本地网关否则$ai_generation全部丢失、三个 ngrok 隧道、网关 allowlist 已含目标模型并探测/review_hog/v1/models、无目标 PR 的既有ReviewReport行。九、结语一份运行报告教给我们什么A-sonnet5-xhigh-1.md展示了 PostHog 团队如何用工程化、可复现、成本敏感的方式回答「换一个评审模型值不值」通过冻结一切无关变量同一 PR、同一 pinned chunks、同一 validator、同一干净环境把模型质量差异暴露在漏斗数字、缓存感知成本与逐条对抗验证的发现清单里。真正值得借鉴的方法论有三点成本必须缓存感知——naive 的 input-token 计价在缓存密集型管线上会虚高 4.4 倍任何基于成本的模型决策都必须拆分 fresh/write/read 三档计价。发现必须双重验证——管线 validator 是保守的第一道闸独立对抗式验证refutation-first才是判断「真实问题」的最终仲裁者validator 的放行与独立验证只部分重合这一校准本身值得追踪。精度优先于召回——在每条发现的逐条核验中validator 反复执行「上游已处理 → 丢弃」「不可达触发 → 丢弃」「纯文档偏好 → 丢弃」的判定把噪声挡在产物之外同时把「降级保留」的真实边界情况如 A1 的三条 VALID留在记录里供后续处理。这份报告及其所在实验目录runs/、FINAL_REPORT.md、judge 系列 JSON是研究 LLM 驱动的代码审查系统如何自我评估的完整案例值得任何构建 agentic 审查管线的团队研读。【免费下载链接】posthog:hedgehog: PostHog is the leading platform for building self-driving products. Our developer tools – AI observability, analytics, session replay, flags, experiments, error tracking, logs, and more – capture all the context agents need to diagnose problems, uncover opportunities, and ship fixes. Steer it all from Slack, web, desktop, or the MCP.项目地址: https://gitcode.com/GitHub_Trending/po/posthog创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门