sixty

sixty 和你的编码助手

你的助手修复 bug,Sixty 负责发现。

写你代码的那个东西,就开在隔壁窗口。它还没开始修你周二发上去的那个回归,唯一的原因是没人告诉它有这么回事。

live finding#1842
regression · after deploy 8f31c2

Checkout got 3.4× slower

OrdersController#create now runs the same inventory query 14 times per request.

p95
184 → 631 ms
since
Aug 19, 14:32
likely cause
missing preload
agent

I found the call site. I’ll add the preload, run the request spec, and keep this open until the fix reports.

● Working in orders_controller.rb

01 / THE LOOP

这个循环,五拍

你只在第一拍里。后面的每一拍都不需要你。

  1. 你发布

    这是唯一有人参与的一步。比较是以版本为锚而不是以时钟为锚,所以在有了「之前」和「之后」以前,什么都不会被判断。

  2. 形状动了,一条发现自己写出来

    每次渲染一条查询变成了十四条。统计找出候选,模型判断哪些值得打扰人,而十四条实际上只是缺一个索引的漂移,会作为一条发现而不是十四条送到。

  3. 你的助手来问发生了什么

    通过 MCP,从那个已经打开着仓库的编辑器里问。没有仪表盘要去看,不用从截图里复制粘贴,也不需要有人记着这个动态列表的存在。

  4. 它拿到的比屏幕上显示的多

    这是故意的。动态列表是为一个能用隔壁窗口的代码补上其余部分的人压缩过的;助手做不到这一点,所以它拿到的是采集到的每一个调用帧而不是最可能的那个、规范化后的 SQL,以及每次父调用下哪些子调用解释了这次变化。

  5. 它写出修复,并说明自己改了什么

    没有说明的关闭会被拒绝。改了什么、改在哪些文件里、以及为什么这处理的是这次测量本身而不只是碰巧同时发生 —— 这是只有关闭的那一方知道的东西,一个月后就再也找不回来了。

然后你把修复发出去,第五拍就又变成第一拍。整个形状就是这样。

02 / MCP

它实际能做什么

五个工具。两种方案里都全都有 —— 限制助手就是限制产品本身。

$ claude mcp add sixty \
  -e SIXTY_API_KEY=sixty_sk_… \
  -e SIXTY_ENDPOINT=https://ingest.sixty.sh \
  -- npx -y @sixty-sh/mcp

Cursor、VS Code、Codex,以及任何会说 MCP 的东西,都用同样这两个值,写成一段配置。

list_findings
当前未处理的有哪些,按排序,带 id。
get_finding
一条完整的发现:调用帧、SQL、子调用拆解,以及与它同一根因的其它发现。
get_change
那次部署里改动了这段代码的 pull request 的差分 —— 发现所运行的文件排在最前。
close_finding
解决、忽略或重新打开 —— 必须给理由。
check_service
有没有东西在到达,如果没有,是为什么。
install_sixty
针对这类项目的安装说明。

03 / TRUST BOUNDARY

我们假定它一定会说自己做完了

一个自己关掉自己工单的助手,正是谨慎的读者会停下来的地方。这样停一下是对的。下面是代码为此做了什么。

  • 关闭是一种声称,不是一次验证。 任何助手最强的动机都是「做完」,而一条针对从未部署的修复被关掉的发现,就等于从人会看的那张列表里消失了。所以 resolved 的含义是:带着这个修复的版本已经上报,而且数字确实动了 —— 在那之前,它一直是打开的。
  • 仍然能复现的模式会被重新打开。 不管谁声称了什么,检测器都会在下一轮再跑一次,把它放回来。
  • 每一次关闭都会记录是谁做的 — user:[email protected] 或者 agent:sixty_sk_abcd。你永远分得清是你们中的哪一个判定它做完了。
  • 它读取用的密钥写不了遥测,而你生产环境里的那把密钥什么都读不了。上报密钥泄露,意味着有人能发假的延迟数字;读取密钥泄露,意味着有人拿到了你的发现。这既不是同一种风险,也不是同一份凭据。
  • 发现里包含不是这里的人写的文本。 操作名来自你的应用,而带着 shell 的助手,和浏览器是不同种类的读者。所以采集端会把结构上属于一行的东西 —— 名字、文件、版本、SQL —— 全部压平,MCP 服务器则给借来的文本打上标记,好让一条发现没法冒充它周围的结构。这不会让文字变得无害;它拿掉的是属于伪造而不是属于说服的那一半。

让它把你周二发上去的那一个修掉。

登录 定价
Sixty 和你的编码助手 —— 自己闭合的循环