MoeGoSherlock · Quarterly Impact

Quarterly Impact · 2026.04.12—2026.07.12

Sherlock:复杂研发工作,
已经可以交给它

设立 Sherlock 时,我们希望它不只回答问题,而是能处理信息不完整、系统边界复杂、需要工程判断的研发工作。这个季度,它已经多次在 Slack 中与同事一起把调查推进到实现、验证和 PR。

至少 58 位报告期内的真实用户数
51 位单月最高活跃用户数(6月)
4月 21 · 5月 26 · 6月 51
35.7 / 天最近 28 天,真实用户主动 @Sherlock
275.1 h3,631 次有 duration 的运行实测累计值
它最有价值的地方: 把原本散落在代码、日志、数据、工单和历史决策中的路径接起来,让同事更快拿到可以继续行动的结论。
Start Here

下一次遇到复杂问题,直接把它交给 Sherlock

02

在任意 Slack 频道 @Sherlock,或直接私聊它。先说明现象和期望交付,再选择你希望它推进到哪一步。

01只调查

给出可复核的证据链、根因、影响范围,以及当前仍不能证明的部分。

02给修复方案

回读历史契约和调用链,给出兼容方案、回归点与发布风险。

03推进到 PR

明确授权后进入独立 worktree,实现、测试、跑 hooks、提交 PR 并回读 CI。

可直接复制的任务模板
@Sherlock
现象:发生了什么,期望行为是什么
范围:商家 / 用户 / 时间 / requestId / 相关链接
期望交付:根因与证据链 / 修复方案 / 推进到 PR
只读调查Jira、日志、Trace、数据和代码查证可自主执行。
代码交付独立 worktree、测试与 hooks;commit / push / PR 需要明确授权。
高风险操作生产写入、数据修复、权限变更仍由人确认。
What We Built

不是一个回答问题的 Bot,而是四层工程系统

03

Sherlock 能把工作推进到结果,不只因为模型更强,而是本季度把入口、证据、交付和可观测性做成了稳定能力。

01 · ENTRY从人类提问扩展到事件驱动

频道 @ 与 DM 之外,CS、Datadog、Sentry listener 可以自动触发调查。

02 · EVIDENCE跨系统建立证据网络

联合 Jira、日志、Trace、Redshift、GrowthBook、代码和历史 PR。

03 · DELIVERY安全地推进到工程交付

独立 worktree、测试、hooks、授权边界,以及 PR 与 CI 验证结果。

04 · TELEMETRY让运行与质量可以复盘

Transcript、会话、运行时长、工具、模型与用量统一归档,可以复算。

问题
证据
判断
实现
验证
Slack @ / DMCS ListenerDatadog ListenerSentry ListenerJiraRedshiftGrowthBookGitHub / PR
开发者真正构建的价值: 把一次性的排查经验,变成可以持续触发、联合查证、安全交付并被量化改进的系统能力。
Adoption Signal

6 月至少有 51 位同事在使用 Sherlock

04

比运行量更重要的是主动使用者。频道里统计真实用户发送的 @Sherlock 消息;私聊从本地任务 session 识别用户;两种入口按 Slack ID 去重。

至少 58报告期内总用户数
51在频道里 @Sherlock 的用户
36私聊用户 · 187 个任务
797DM 用户消息
+
2,085频道主动 @
+
1,243自动 CS 工单
=
4,125至少确认的入站任务事件
Sherlock 活跃用户与主动提及趋势
增长之外,更重要的是复用: 报告期内 46 / 58 位用户至少在两个不同日期使用;5 月的 26 位用户在 6 月全部再次使用。

用户数按可映射的 Slack ID 统计;有 1 个历史 DM channel 无法映射到对端用户,因此报告期内至少有 58 位真实用户,各月实际活跃用户也可能更多。07/12 为刷新时点内的部分日。

Weekly Workload

现在,Sherlock 每周实际承担多少工作

05

这里同时展示每周运行次数与每周活跃会话。前者代表工作强度,后者代表正在协作的真实任务面。

Sherlock 每周运行与活跃会话折线图
591最近四个完整周 · 平均每周运行
250最近四个完整周 · 平均活跃会话
785 / 29706/22 当周运行 / 活跃会话

统计窗口统一为东八区周一 00:00 到下周一 00:00。旧 runtime 清理后最早可恢复运行在 04/15,因此 04/13 当周不进入工作量比较;最近四周均值只使用完整可观测周。

Recorded Runtime

05/01 以来,平均每天实测运行 3小时46分

06
275.1 h3,631 次有 duration 的运行累计值
3小时46分05/01—07/12 · 73 个自然日的日均实测运行量
统计对象数量总值平均中位P90
有 duration 的运行3,631275.1 h4分33秒2分58秒10分09秒
至少一条有 duration 的会话1,370275.1 h12分03秒7分30秒26分55秒

同一个 session 中有多次 run 时,只累加其中有 duration 的记录。缺失 duration 的 run 不进入总值、平均值、中位数或 P90;因此这里只展示已记录到的 275.1 小时,实际运行时间可能更多。

73 天05/01—07/12 的自然日跨度
604个会话包含多个有时长 run
1,370个会话至少有一条时长记录

日均值 = 275.0990 小时 ÷ 73 个自然日;没有用覆盖率对总时长做放大估算。

Sherlock at Work · 1

从根因到合并:调查必须走到工程闭环

07

代表性工程交付不以“开了 PR”为终点。生产证据、正确实现、回归验证、评审反馈和最终合并,缺一项都不能写成已交付。

01根因到合并修复2026-06-01—2026-06-10

空姓名预约:从生产数据追到覆盖逻辑并完成修复

Sherlock 做了什么

把 Jira 截图、生产数据、Datadog 请求与 Customer merge 代码串成一条证据链,证明空姓名来自 existing-client profile merge;随后修改 blank-name 保护逻辑并补回归测试。

推进结果

问题从“前端必填失效”被改写为准确的后端覆盖缺陷;修复通过测试、3 位工程师批准,并于 06/10 合并。

替同事省下的路径跨 Jira、数仓、日志、Online Booking 与 Customer 服务对齐同一预约,再完成实现、测试和评审跟进。
Session 实测运行1 小时 07 分
替代的人工串联跨系统对齐 + 修复交付
02根因到安全交付2026-07-02

Lead preferred business:补上被接口“成功”掩盖的持久化缺口

Sherlock 做了什么

从 CS 现象追到 BFF 更新接口:字段已被接收却没有写入。实现持久化后,又根据 review 补上 company ownership 校验与合法、非法 business 的回归测试。

推进结果

灰度环境由同事验证恢复;最终改动保留持久化和跨租户保护,人工批准、CI 通过并于 07/02 合并。

替同事省下的路径对齐接口 schema、服务写路径与租户边界,在修复主缺陷后继续收敛 review 暴露的安全风险。
Session 实测运行35 分 46 秒
替代的人工串联写路径追踪 + 权限边界补全

代表性案例可以是已合并交付,也可以是复杂分析闭环;凡展示 PR,均已确认合并且关键改动保留。点击标题可回到原 Slack 对话。

Sherlock at Work · 2

跨系统契约:人类校准让实现更接近真实世界

08

复杂链路里,第一次判断不一定正确。Sherlock 的价值也体现在吸收领域专家纠正、重查事实,并把共识推进为可验证的双端交付。

03跨端控制面2026-06-23—2026-06-26

Mobile API gateway:把灰度切换能力接入真实初始化链路

Sherlock 做了什么

跨仓回读已有 gateway 方案与 Mobile 初始化顺序,接入 GrowthBook feature、默认回退和测试,并把能力边界收敛为 App 重启或重新初始化后生效。

推进结果

核心提交完整保留,51 个 test suites / 211 个 tests 与 CI 通过,人工批准后于 06/26 合并;报告不把它描述成运行中实时切流。

替同事省下的路径同时梳理配置控制面、客户端初始化时序、历史 gateway 约定与降级路径,再验证产品边界。
Session 实测运行36 分 43 秒
替代的人工串联跨仓方案复用 + 初始化契约验证
04人机协作收敛2026-07-09—2026-07-10

User Profile Tier:在领域专家纠正后重建跨数据链路

Sherlock 做了什么

最初选错生产分支和 tier 数据源;同事指出领域事实后,Sherlock 重新核对 feature-caliber、新 DWS tier 表、重复 company 风险和 SQL 行扩张,再同步修正 profile 服务与数仓任务。

推进结果

两个 PR 均获人工批准并合并;最终验证 31,595 行对应 31,595 个 distinct business,重复、非法 tier 与 tag/column mismatch 都为 0。

替同事省下的路径跨服务、Airflow、DWS 表和生产数据分布反复校准契约,并把人类领域知识转化为可验证实现。
Session 实测运行1 小时 08 分 56 秒
替代的人工串联领域校准 + 双仓实现 + 数据验收
Sherlock at Work · 3

偶现状态与身份生命周期:沿时间线淘汰错误答案

09

当错误只在少数用户、少数时序出现时,单看一段代码很容易误判。这里的关键是把状态变化、身份迁移和人类反例放到同一条时间线上。

05偶现状态到合并修复2026-06-26—2026-06-29

Payment method:把偶现 System busy 收敛到表单同步竞态

Sherlock 做了什么

沿 selected payment method、Form state 与默认选卡逻辑定位竞态;再根据同事反馈多轮缩小 diff、验证 Stripe/feature flag 边界,并补观测日志。

推进结果

最终幂等 resync 逻辑与映射测试保留,CI 通过、人工批准并于 06/29 合并。

替同事省下的路径在难复现状态下对齐 session、表单和支付 provider 边界,并持续跟进 review 直到最终版本可合并。
Session 实测运行27 分 34 秒
替代的人工串联竞态定位 + 多轮评审收敛
06身份生命周期根因2026-06-23—2026-06-24

Stripe COF:从错误 customerId 追到 Lead 转 Customer 的时序断点

Sherlock 做了什么

在长对话里逐步排除前端 saveCard 和宽泛 webhook 写回;同事提供 customerId 反例后,Sherlock 把日志与代码对齐到 lead→customer merge:订单已指向 canonical customer,但 pay 请求仍携带旧 source ID。

推进结果

根因与安全修复边界被收敛到 Online Booking 支付入口使用 order customerId;没有把仍未合并的后续 PR 写成已交付成果。

替同事省下的路径跨 Online Booking、支付服务、客户合并和日志时间线追踪同一身份,并不断用人类反例淘汰危险方案。
Session 实测运行2 小时 31 分 49 秒
替代的人工串联跨服务身份追踪 + 方案排雷
Sherlock at Work · 4

业务规则的隐藏边界:小条件会改变整个结果

10

国家范围、room 遍历顺序这类局部条件,足以让表面合理的逻辑产生错误结果。Sherlock 用 fallback、最小反例和历史回溯把边界显式化。

07业务边界到合并修复2026-06-26

Google Maps:把 placeId 使用范围收窄到 UK

Sherlock 做了什么

从线上地址漂移追到共享导航层的 placeId 选择逻辑;review 指出历史 UK 数据可能缺 country 后,又补上严格的地址文本 fallback。

推进结果

单一 Sherlock commit 完整保留,CI 通过、两位工程师批准并于 06/26 合并。

替同事省下的路径复盘多地图 provider 的参数语义、历史地址兼容性和 fallback,再把修复限制在正确国家范围。
Session 实测运行34 分 38 秒
替代的人工串联Provider 语义对齐 + 历史数据兼容
08复杂业务规则反证2026-06-29

多宠物容量:证明结果取决于 room 遍历顺序

Sherlock 做了什么

把两层 capacity gate 按真实测试数据逐步演算;同事继续提供测试结果后,Sherlock 证明修复第二层仍会在第一层提前失败,并区分历史引入 commit 与近期暴露条件。

推进结果

团队拿到可复现 corner case、准确历史和修复方向;人类在 thread 中确认“原来还和 room 顺序有关”,关联 CS 与工程单均已关闭。

替同事省下的路径重建容量公式、制作最小数据、逐分支执行并回溯 git 历史,才能从配置猜测走到可复现结论。
Session 实测运行11 分 37 秒
替代的人工串联公式演算 + 历史回溯 + 反例验证
Sherlock at Work · 5

历史状态与悬空引用:当前正常,不代表过去没有出错

11

物理重建、配置删除和事后修改会抹去现场。Sherlock 把时间线、写路径和历史状态重新拼回去,同时清楚标出哪些事实已经证明、哪些无法追溯。

09历史状态与审计边界2026-07-07

Saved duration:从反例追到 delete-and-reinsert 的历史断点

Sherlock 做了什么

同事用 2/17 与 5/8 的 90 分钟记录否定了最初的 snapshot 解释;Sherlock 随即重查写路径,发现 saveCustomerService 会物理删除再插入,当前行没有可追溯 ID,且时间模式符合批量重建。

推进结果

机制层根因与审计盲区被证明:历史 duration 可能在重建时丢失,但现有数据不能可靠归因到具体操作者,因此没有制造确定性结论。

替同事省下的路径把跨月份反例、数据库当前行和服务写入语义对齐,同时区分“机制已证实”与“具体 actor 不可证”。
Session 实测运行11 分 32 秒
替代的人工串联历史数据比对 + 写路径溯源 + 结论校准
10生产事件精确溯源2026-07-06

Workflow 崩溃:把 Sentry stack 还原成被删除的 Pet Code 引用

Sherlock 做了什么

从 Sentry stack 与 source map 定位 Pet Code option renderer,再回看 workflow 历史:步骤保存了 Pet Code ID,两分钟后该 Pet Code 不再可用,随后触发悬空引用崩溃。

推进结果

一次运行内完成事件、源码与历史状态闭环,并明确区分事故发生时的配置与后来已经变化的 workflow 当前状态。

替同事省下的路径手工关联压缩堆栈、source map、业务配置历史和事件时间线,排除“当前配置正常”带来的误导。
Session 实测运行7 分 23 秒
替代的人工串联Sentry 溯源 + 历史状态重建
Measurable Sample

在 CS 样本中,使用上升与关闭时间下降同步发生

12

CS 有稳定入口、明确时间戳和可追踪结果,所以适合作为趋势样本;它只是 Sherlock 工作的一部分。Jira 数据更新至 2026-07-12 21:03 SGT。

1,143报告期内创建的 Bug Report
833已有 resolutiondate
836StatusCategory = Done
Sherlock 使用趋势与 CS 工单关闭时间折线图
怎么理解这张图: 较早的两个四周窗口中,同一周创建且已经关闭的工单,平均用时从 7.80 天降至 5.67 天(-27.3%)。最近几周的工单还会继续关闭,不同优先级、问题类型和团队也会影响用时,所以这里只展示同步变化,不把它写成 Sherlock 单独造成的结果。
Data Sources

Sherlock 指标统计来源

13

用户、复用与任务输入

  • 频道:通过 Slack 全局只读搜索,统计真实用户发送的 @Sherlock 消息。
  • 私聊消息:统计 transcript 与历史消息库中的用户消息;不以运行次数代替。
  • 复用按用户在不同自然日再次活跃统计;月留存按 Slack ID 跨月回访统计。
  • 自动 CS 统计 Bug Report Bot 的顶层根消息,并要求至少存在一个 CS key;DM 受旧数据清理影响,因此合计仍写作至少 4,125 次。

运行、会话与时长

  • 来源:Sherlock 的会话与运行记录,统一汇总统计;旧 runtime 清理导致早期总量只能写作本地可恢复下界。
  • 周窗口:东八区周一 00:00 到下周一 00:00;04/13 周因运行证据从 04/15 才可恢复,不进入趋势比较。
  • 只统计有时长记录的运行;总值、平均、中位与 P90 都不补全缺失值。
  • 05/01—07/12 日均按 73 个自然日计算。

案例与证据台账

  • 来源:transcript、人工抽样 Slack 对话、对应运行记录与 GitHub 合并状态核验。
  • 标题直接链接原 Slack 对话;展示的 PR 均已合并,并确认关键改动仍然保留。
  • 案例运行时长为同一 Slack 对话中所有已记录时长的合计,不补全缺失值。
  • 详细运行记录、时间和链接见 case-evidence-ledger.json。

Jira / CS

  • 来源:通过 Jira 只读查询获取。
  • 范围:04/12—07/12 创建的 CS Bug Report。
  • 关闭用时:解决时间减去创建时间。
  • 按工单创建所在自然周统计,只包含已有解决时间的工单。
Jira 基线: project = CS · issuetype = Bug Report · created ≥ 2026-04-12 · created < 2026-07-13。所有 Jira 数据为只读拉取,未修改工单。

完整统计口径、复用与留存明细、结论被采用情况和满意度测量说明见 docs/指标口径.md。案例证据与链接见 data/cases/case-evidence-ledger.json。报告由本目录中的数据与脚本生成。