原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。使用 Google 登录即可撰写评价。原型 · 每 30 分钟更新
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

Signoff

作者:ayuanxx-max版本 4.0.2i★ 3i在你的电脑上运行
注册名称io.github.ayuanxx-max/signoff

安装方法

What it does

Five gates that make an agent's 'done' provable: run them, read the verdict, audit the record.

  • Connects 在你的电脑上运行
  • Account or key No key needed
  • Category 其他

安装

选择你使用的 AI 应用,然后复制设置。

通过 3/3 项检查 · 在你的电脑上运行 · ✓ 命令已检查 2026年11月13日

第一步:你用哪个 AI?

选择你用的应用,步骤会显示在下方。

可连接 Claude,但需要先准备

需要先在电脑上安装 Node.js(只需一次) · 仅限电脑上的 Claude 应用(Windows 或 Mac),网页和手机不可用

  1. 安装 Node.js

    只需一次,所有需要 Node.js 的服务器都能用

    打开 Node.js 下载页 ↗

  2. 打开电脑版 Claude 应用的设置文件

    SettingsDeveloperEdit Config

  3. 粘贴这些设置并保存文件

    {
      "mcpServers": {
        "signoff": {
          "command": "npx",
          "args": [
            "-y",
            "signoff-cli",
            "mcp"
          ]
        }
      }
    }
  4. 退出 Claude 再重新打开

  5. 试一试

    用 Signoff 告诉我你能帮我做什么,然后做一件给我看

    ✓ 如果 Claude 说正在使用 Signoff,或回答中出现 Signoff 的工具名称,就表示连接成功

菜单名称已于 2026年11月11日 对照 Anthropic 帮助页面核实 · 你的界面可能因版本略有不同

ChatGPT 暂时无法连接 Signoff

Signoff 需要安装在你的电脑上,而 ChatGPT 只能连接在网上运行的服务器

你可以改用这些方式

A · 使用能连接 Signoff 的应用

  • 需要先在电脑上安装 Node.js(只需一次) · 仅限电脑上的 Claude 应用(Windows 或 Mac),网页和手机不可用
  • 需要先在电脑上安装 Node.js(只需一次)
  • 需要先在电脑上安装 Node.js(只需一次)
  • 需要先在电脑上安装 Node.js(只需一次)

B · 其他 类中能连接 ChatGPT 的其他服务器

从同类中使用较多的里挑选,仅限用地址即可连接、无需密钥的

可连接 Claude Code,但需要先准备

需要先在电脑上安装 Node.js(只需一次)

  1. 安装 Node.js

    只需一次,所有需要 Node.js 的服务器都能用

    打开 Node.js 下载页 ↗

  2. 打开终端

    Mac:按 Command+空格,输入 Terminal · Windows:打开 PowerShell

  3. 粘贴这条命令并按 Enter

    claude mcp add --scope user signoff -- npx -y signoff-cli mcp
  4. 在 Claude Code 中输入 /mcp

    应能看到 Signoff 在列表中并显示已连接

  5. 试一试

    用 Signoff 告诉我你能帮我做什么,然后做一件给我看

    ✓ 如果 Claude Code 说正在使用 Signoff,或回答中出现 Signoff 的工具名称,就表示连接成功

菜单名称已于 2026年11月11日 对照 Anthropic 帮助页面核实 · 你的界面可能因版本略有不同

可连接 Cursor,但需要先准备

需要先在电脑上安装 Node.js(只需一次)

  1. 安装 Node.js

    只需一次,所有需要 Node.js 的服务器都能用

    打开 Node.js 下载页 ↗

  2. 点击这个按钮打开 Cursor

    在 Cursor 中打开

    Cursor 会请你确认安装,点击 Install

  3. 在 Cursor 中以 Agent 模式打开 AI 聊天

  4. 试一试

    用 Signoff 告诉我你能帮我做什么,然后做一件给我看

    ✓ 如果 Cursor 说正在使用 Signoff,或回答中出现 Signoff 的工具名称,就表示连接成功

菜单名称已于 2026年11月11日 对照 Cursor 帮助页面核实 · 你的界面可能因版本略有不同

可连接 VS Code,但需要先准备

需要先在电脑上安装 Node.js(只需一次)

  1. 安装 Node.js

    只需一次,所有需要 Node.js 的服务器都能用

    打开 Node.js 下载页 ↗

  2. 点击这个按钮打开 VS Code

    在 VS Code 中打开

    VS Code 会请你确认安装,点击 Install

  3. 在 VS Code 中以 Agent 模式打开 AI 聊天

  4. 试一试

    用 Signoff 告诉我你能帮我做什么,然后做一件给我看

    ✓ 如果 VS Code 说正在使用 Signoff,或回答中出现 Signoff 的工具名称,就表示连接成功

菜单名称已于 2026年11月11日 对照 VS Code 帮助页面核实 · 你的界面可能因版本略有不同

其他支持 MCP 的应用(如 Windsurf、Zed、Gemini CLI)添加方式各不相同,请在应用列表中查看

查看所有支持 MCP 的应用 →

JSON 设置在下方“开发者专用”中

卡住了?问问正在用 Signoff 的人💬 讨论 →
开发者专用:终端命令和 JSON 设置

安装在电脑上

Claude Code

claude mcp add --scope user signoff -- npx -y signoff-cli mcp

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "signoff": {
      "command": "npx",
      "args": [
        "-y",
        "signoff-cli",
        "mcp"
      ]
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "signoff": {
      "command": "npx",
      "args": [
        "-y",
        "signoff-cli",
        "mcp"
      ]
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "signoff": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "signoff-cli",
        "mcp"
      ]
    }
  }
}

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

一览

每周下载量i
不在 npm/PyPI 上
连接方式
在你的电脑上运行
最新版本i
4.0.2
分类i
其他
发布到注册中心i
2026年11月7日
代码最后更新i
2026年11月12日
作者
ayuanxx-max
软件包
npm: signoff-cli
注册状态
活跃

哪些应用可以使用它

依据这个服务器的连接方式和各应用自己的文档,检查于 2026年11月10日。

在你的电脑上运行,适用于

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

全部应用及其优缺点 →

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月13日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 ayuanxx-max 验证,该账户拥有此仓库

  • ✓ 通过

    仍在维护

    代码最后更新于昨天

  • ✓ 通过

    有许可证

    使用 MIT

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

讨论

提问、分享技巧或报告无法使用。按“有帮助”数量排序。

还没有帖子,欢迎第一个提问或分享。

此处内容由用户撰写,不代表 PopNx 团队。

使用 Google 登录后发帖

用户评价

还没有评价

用 Google 登录后写评价

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 19646 个服务器的 93%
  • 发布到注册中心的时间比此分类中其他 19646 个服务器的 87% 更新
  • 基础检查结果等于或优于此分类中其他 19646 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

Signoff 安全吗?

它在 3 项适用的基础检查中通过了 3 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于昨天,最新版本(4.0.2)于6天前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。

有什么可以替代它?

同一分类中有:World Monitor, Claude Flow, Windmill

同类别的其他选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

World Monitor

Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 102 tools.

作者:koala73广泛使用★ 9.1万今天更新

在云端运行✓ 服务方 · worldmonitor.app

Claude Flow

AI orchestration with hive-mind swarms, neural networks, and 87 MCP tools for enterprise dev.

作者:ruvnet广泛使用↓ 1.4万/周★ 8.2万14个月前更新

在你的电脑上运行

Windmill

Run Windmill scripts and flows and manage jobs, schedules, resources and variables.

作者:windmill-labs广泛使用★ 1.9万昨天更新

在云端运行

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

落印 / SignOff

包名 4.0.0 起为 `signoff-cli`(曾用名 dsh-signoff,旧包已标记 deprecated)。

命令仍是 signoff;仓库地址仍是 ayuanxx-max/signoff-cli。DSH 只是它最早的使用场景,

任意 git 仓库、任意语言都可以直接用。

中文名「落印」:印落纸面才算数,对应英文名 SignOff。曾用名「一诺过五关」「执印」。命令是 signoff;

包名 4.0.0 起为 signoff-cli,仓库 4.1.0 起为 ayuanxx-max/signoff-cli(由 dsh-signoff 改名,老地址 301)。

签下的那句“做完了”,得自己走过五道关才算数。

五道关卡,五条命令,退出码即判决;发版另加第六道 signoff release(见文末)。每一关都对应 agent 交付时的一种失败方式:靠记忆跑测试、把“有开发页”当验证、多个 agent 撞同一文件、危险动作做过就忘、文档里塞空话。SignOff 把这五种失败变成五个可执行的检查。

npm i -g signoff-cli      # 或 npx signoff-cli

signoff p1 # 一关一关过 signoff all # p1 + p2 + p5 + p4 verify

关命令判决什么
P1 验证signoff p1检查是否真的跑过、跑在预算内、用例数多少
P2 覆盖signoff p2验证到了哪一级:scenario / harness / smoke / missing
P3 队列`signoff p3 validate\plan\collect`卡片是否齐、并发是否撞、谁越界谁没交
P4 账本`signoff p4 ask\confirm\verify\export`危险动作有没有票、回滚点是否还在
自查signoff doctor [--json]为什么没按预期生效:钩子、PATH、版本、安装点、账本、装钩子之后的缺失提交
P5 反空话signoff p5文档里有没有空话、绝对化断言、无数字的已验证

一张图看懂

六个层次从左到右:入口(CLI / git 钩子 / CI / Agent 面)都走同一个 guard.js;调度决定跑哪几关、 谁算通过;五关每关都写清“读什么、判什么、怎么修”;状态机说明一次提交里 marker 与 trailer 是怎么产生的; 产物是判断留下的证据;最右是外部依赖——只有 Node ≥18 与 git 是硬要求,其余都可缺。 判定没有“部分通过”:退出码 0 通过、1 任一关判红、2 用法或环境错。

上半部分按 0→5 的先后排:前置检查 → 安装 → 初始化 → 日常提交 → 红了怎么办 → 升级与卸载。 红框是必做,黄框是最容易踩的坑(--chain、--lock-test、npm proxy)。 下半部分三块是“不改你的流程、但会改变你看到的现象”:平台差异、环境差异,以及三条红线 (--no-verify、SIGNOFF_SKIP=1、调阈值让红变绿)。

两张图都由 Mermaid 生成,源文件在 docs/diagrams/src/,改文案重渲一次即可, 不用重画。

零接触:装一次,之后不用管

目标是一条命令之后不再需要任何操作:npm i -g signoff-cli 装完即生效,之后每次 git commit 都自动受五关约束。

层什么时候发生覆盖范围
机器层npm i -g 的 postinstall 写 core.hooksPath → ~/.signoff/hooks本机所有仓库,新克隆的也算
仓库层postinstall(在某个仓库里执行时)或 signoff ensure该仓库的 .git/hooks、.signoff/config.json、CI workflow、ledger
仓库声明仓库根提交了 signoff.json(signoff init --share 生成)任何克隆:机器层见到声明就自动装全五关,克隆方零操作
关内每次 commit已 opt-in 的仓库跑 P1–P5;未 opt-in 的仓库只跑 P1(测试必须过),不写任何状态
npm i -g signoff-cli      # 一次;postinstall 自动装好机器层 + 当前仓库

signoff ensure # 换个仓库想把五关都装上,跑这一条(幂等) signoff ensure --global # 只重装/修复机器层 signoff ensure --json # 给脚本看的结构化结果

npm 11 会把 postinstall 放进 allowlist 提示,可能不执行——所以还有一层兜底:在该仓库里第一次跑任何一关(比如 signoff p5 README.md)会自动把五关装好。 要放行安装脚本就加 npm i -g signoff-cli --allow-scripts=signoff-cli。

行为约定:

  • 已 opt-in(有 .signoff/config.json):pre-commit 跑全套五关,PASS 才写 marker 和 trailer。
  • 未 opt-in:只跑 P1(有测试才跑,没测试就明说"没检测到测试运行器"后放行),不写 .signoff 配置、不带 trailer。
  • 仓库自带的钩子不会被绕过:机器层先执行 .git/hooks/ ,它若是 signoff 的钩子就直接以它的判决为准。
  • 提交 signoff.json 等于「这个仓库同意 P1–P5」:.signoff/ 是 gitignore 的,声明文件进 git, 所以别人克隆下来第一次 commit 就会把 hooks / config / CI 自己补上。字段见 docs/signoff.schema.json。
  • 临时退出:SIGNOFF_NO_BOOTSTRAP=1(不做自动安装)、SIGNOFF_NO_MACHINE=1(不跑机器层的轻量关)。
  • 撤销机器层:signoff uninstall --global。

一、案例:本次 DSH 2.0.22-next升级后在修复(dsh-session-fork-tree 0.9.34)bug里,五关各自做了什么?

这次修的是“升级 DSH 后,点侧栏「···」菜单,菜单闪一下就消失”。五关实际起了什么作用,逐条列出,包括没发挥作用的那一关。

关本轮实际动作证据判定
P1手动跑 precommit.ps1;闸门第 10 层 pytestPASS 3666 ms(101 用例);第 10 层 3438 ms护栏有效;但它只跑工具自身的 Python 用例,抓不到这次的前端问题,也没能自动拦提交(插件目录是独立 git 仓库、没装钩子)
P2三套真实 DOM 场景:menu(11) / arrange(13) / perf(6);并把该包纳入覆盖率账本coverage.py:apps 4→5,scenario 5/5,断言 36→77主力。决定“修好没有”的是场景断言,不是肉眼;账本让这些断言不再是一次性证据
P3未使用:没写任务卡,没跑 fanout.py无 card.json、无 wave 记录未发挥。三件事有依赖顺序(修→测→说明引用实测数字),但这不等于可以不写卡留痕
P4事后审计抓到我自己填的假回滚点;补录发布记录verify 先 FAIL:rollback point 'npm deprecate …' not a git ref;修复后 {"ok": true, "entries": 4, "problems": []}事后有效,事前缺位。npm publish、GitHub Release、改 profile 都是先做后记,没走取票
P5三份新文档过 slop 六规则;覆盖率表由工具重生成slop {"ok": true, "files": 3, "hits": []}有效;但把包登记进覆盖率是发布之后补的,说明里那组断言数当时还没进账本

一句话:P2 决定“修好没有”,P5 决定“我有没有说大话”,P1 只证明没弄坏别处,P4 事后抓住了我自己的一笔脏账,P3 全程没上场。 这个结论本身就是 SignOff 想要的输出:每一关都要能回答“发挥了没有”,不能只说“流程走过了”。

你不需要做什么,照常进行任务,由它来守护这个过程;

二、自动守护:装一次,之后不用记

signoff init 把五关接进 git 与 CI,一次安装,之后正常 git commit / git push / 开 PR 都由它先查:

安装物作用
.git/hooks/pre-commit暂存区一变就跑闸门:文档改动 → P5;能探到测试命令 → P1;有 verify/scenarios/ → P2 --strict;有账本 → P4 verify。红了直接拒绝提交
.git/hooks/pre-pushpush 前跑同一套(--full,不吃缓存)
.git/hooks/commit-msg把 Signoff-Pass: (跳过时 Signoff-Skip:)写进提交信息;signoff audit 与 CI 据此判断这次提交真的过过闸门
.github/workflows/signoff.yml每个 push / PR 跑 npx signoff-cli guard --ci,绕不过去
.signoff/config.json测试命令、预算、文档目录;signoff status 随时查看
.gitignore追加 .signoff/,结果不进版本库

只依赖 Node 18+:闸门本身是 Node 实现(lib/p*.js),没有 Python 也能跑完整五关,不存在降级模式。

三条稳定性措施:同一份暂存内容只判一次(命中缓存约 0 ms,反复 git commit --amend 不重复付时间);失败只打印失败那一关的尾部(完整日志在 .signoff/hook.log);超预算直接判红(默认 180 秒,--budget 可改)。

绕过的路仍然有,但不再无痕:signoff audit --range origin/main..HEAD 逐个提交核对标记与提交树——缺失就是绕过(git commit --no-verify),判红;SIGNOFF_SKIP=1 的提交写成 Signoff-Skip: 并记进 .signoff/skips.log,--strict 下同样判红。生成的 CI 里已经带这一步。

队友为什么也会被守住:先把 signoff-cli 放进 devDependencies(npm i -D signoff-cli),再 signoff init --prepare,它会把 signoff init --quiet 并进 package.json 的 prepare,队友 npm install 完钩子就有了。没这个依赖时 --prepare 会拒绝写入并提示——否则 npm install 会因为找不到 CLI 直接失败。

signoff init                 # 装钩子 + CI + 配置

signoff init --chain # 已有钩子保留:存为 .local,先跑它 signoff init --prepare # 同时写进 package.json,队友 npm install 即装钩子 signoff status # 这个仓库现在守不守? signoff doctor # 为什么没按预期生效(只读) signoff doctor --fix # 让它把能证明的修掉:重装缺失钩子、补执行位、清掉没暂存的标记 signoff guard --full # 手动跑同一套(钩子调的就是它) signoff audit --range origin/main..HEAD # 这些提交真过过闸门吗? signoff audit --since-install # 只看装钩子之后的提交(安装点不在 HEAD 祖先里会直接拒绝) signoff init --reset-install # 历史被改写或换了克隆后,把安装点挪到当前 HEAD signoff init --lock-test # 把识别到的测试命令写进配置,换机器不再漂移 signoff uninstall --all # 卸掉钩子 + CI + 配置 signoff uninstall --keep-config # 卸掉钩子 + CI + 运行时状态,保留配置与账本 signoff p4 export --merge ../other/.signoff/audit.log # 多仓库合并成一张表 signoff p4 export --format json --out ledger.json # 也可以导出 json / csv signoff explain p2 # 这一关到底查什么、怎么判的 signoff secrets # 只扫暂存区的密钥泄露(钩子里自动先跑) signoff secrets --all --json # 全仓库扫一遍,一条 JSON 判决

密钥扫描与提速(3.12.0 起)
  • P1 之前先扫密钥:内置 16 条高信号规则(AWS / GitHub / GitLab / OpenAI / Google / Slack / Stripe / npm / SendGrid / 私钥块 / Azure / Discord webhook / 带密码的数据库 URL / 通用凭证)。 命中即失败;装了 gitleaks 可用 --engine gitleaks 换全套规则,没装也不影响(纯 Node,无需二进制)。
  • 值不会原样打印:只显示 AKIA…EF 这种前缀 + 规则名 + 行号,避免把日志变成二次泄露。放行写在 .signoff/config.json 的 secrets.allow。
  • 未 opt-in 的仓库也扫:机器层守护走 --no-state,扫完不留任何文件。
  • 运行器探测扩了 9 种:go / cargo / maven / gradle / dotnet / ruby / elixir / php / make(tests/ 与 package.json 仍在最前)。
  • 同一暂存树结果缓存:重复跑 0 ms;纯文档提交跳过测试。两个开关都可关:SIGNOFF_NO_CACHE=1 / SIGNOFF_NO_FAST=1。
签名与增量覆盖率(3.13.0 起)
  • 提交自带签名:signoff init --sign 生成仓库本地 ed25519 密钥,commit-msg 在 Signoff-Pass: 之外再写 Signoff-Key: + Signoff-Sig:(对完整 tree 签名,单行 base64)。没有密钥就只写未签名的 Signoff-Pass,不阻塞提交。
  • 可以复核:signoff audit --verify 逐个提交验签,--require-signed 把未签名也算失败。身份锚点是 仓库里提交的 .signoff/allowed_signers(或 signoff.json 的 allowed_signers):不在名单里只报 self-signed,绝不报 verified。
  • 增量行覆盖率:signoff cov --diff --min 80 只算这次改动新增的行,读项目已有的 coverage/lcov.info / coverage-final.json / python coverage json,不额外装运行器;没有覆盖率文件时报"没测过",不会假装通过。
  • CI 直接标到行:GITHUB_ACTIONS=true 时,密钥/覆盖率发现输出 ::error file=…,line=… 注解并写步骤摘要, PR 页面直接看到,不用翻日志。
可核对的凭证(3.15.0 起)

signoff p4 checkpoint 给账本签一个检查点,signoff p4 anchor 打出一行可以贴到发版说明里的锚点:

signoff1:12:9f2c1ab34d0e:71b0c9d2e4a85f61

事后 signoff p4 verify --checkpoint --anchor <那一行> 能分辨四种情况:账本被截断、内容被改、 签名不属于受信 key、锚点与本机不一致。细节与边界(它不证明什么)见 docs/trust.md。

3.15.2 起还补了三件事:signoff p4 path 打印账本与检查点的真实位置(脚本不用猜); guard 通过后自动续签检查点(同一份账本不重复签,不产生无意义改动);账本读取容忍 BOM (Windows 编辑器与 Set-Content -Encoding utf8 的常见产物)。

能力矩阵与匿名竞品(3.15.2)

同一张表看"谁有什么"。竞品按类型匿名(不点名,避免把对比写成广告),对应关系与星标/下载数据 记录在 docs/signoff-positioning-3.15.2.md。

能力落印竞品A 平台级竞品B 钩子框架竞品C 密钥扫描竞品D 文本规则竞品E 供应链证明竞品F 覆盖率
测试真的跑过(预算 + 用例数)有有无(只负责触发)无无无无
增量覆盖率分级有有无无无无有
密钥扫描有有无有无无无
中文文档空话规则有无无无部分(英文词表)无无
可验签的判决(trailer + key)有部分(服务端签名)无无无有(attestation)无
离线账本 + 截断检测有无无无无部分(需 layout/验证器)无
可发布锚点(一行贴进发版说明)有无无无无无无
零配置两步上手有无(要服务端 + 项目配置)部分(需已有 Node/Python 项目)有有无(要密钥与 layout)有
托管看板 / PR 状态回写无有无无无无无

结论放在表后面而不是前面:前七行是它和其他工具的分野,最后两行是它的短板——托管面没有, 生态采用量也还没起来(1 star、周下载三位数),所以六维里"生态"给 3 分,不是 5 分。

上图是一次提交的完整路径:入口(git commit / 命令 / CI)→ 三层零接触 → guard 固定顺序跑 secrets → p5 → p1 → p2 → p4 → cov(opt-in)→ 判决 → 四层证据(marker → trailer → 账本 → 检查点 → 锚点)。红一关即停,退出码就是判决。

上图横轴是生态采用度,纵轴是覆盖广度。落印落在左上角——功能全、采用低,这是它的真实位置: 它不在右上角跟平台级产品比采用,差异在"判决可以带走、可以事后核对"。

规则包、预设与编辑器(3.14.0 起)
  • P5 规则包:--pack zh|en|both。中文词表是默认值,行为不变;en 用词边界匹配 (very 不会命中 delivery),both 两套一起跑并按行去重。--rules rules.json 追加自定义词表 (ai_words / absolute / adverbs / claims / placeholder),也可写进 .signoff/config.json 的 p5 或 signoff.json 的 p5。
  • 场景预设:signoff init --preset node|python|go|java,一次给出预算、文档目录、覆盖率阈值和规则包; test_cmd 仍交给自动探测,克隆到没有该脚本的机器也不会锁死。
  • VS Code:signoff init --editor vscode 写 .vscode/tasks.json(guard / all / secrets / cov / audit / status) 与 problem matcher,失败直接落到 Problems 面板;已存在的任务只合并不覆盖。

三、在其它代码过程里能干什么

场景五关怎么用
新功能P3 先写卡(目标 / scope / 验收 / 回滚)→ P1 让检查命令化并进钩子 → P2 把验收写成场景断言 → P4 发版取票 → P5 文档只留能被数字支撑的句子
修 bugP1 把复现命令固化(--run 可重复)→ P2 加一条“反向断言”(旧写法必须红)→ P3 多人并行时按 scope 分波 → P4 单点回滚 → P5 说明里每个数字能落到事实表
重构P3 的 scope 锁死可动范围,collect 抓越界改动;P2 用零写入 / DOM 恒等这类断言证明“行为没变”
CI 流水线signoff all 一条命令,退出码直接当 CI 判决;P1 的预算参数防止测试变慢却没人发现
多 agent 并行P3 plan 输出 wave(scope 相交的卡绝不同波),collect 抓“改了不该改的文件”和“交了空活”的卡
交接与复盘P2 的覆盖表 + P4 export 出的账本,接手的人先看这两张表,再看代码
合规留痕P4 哈希链:改过的记录会被 verify 判为 content hash mismatch,事后补账能被发现

四、在 DSH 任务里能干什么

  • 发 npm / 改 profile / 改 cordis 配置:P4 先 ask 取票(单次、10 分钟过期、绑定动作类别),再 confirm 落账,账里带回滚点;回滚点必须是真的 git ref,写一句“npm deprecate …”会被 verify 拒绝。
  • 插件发版:P1 跑三套真实 DOM fixture,P2 把结果记进覆盖率表,P5 保证发布说明里没有绝对化的收尾句。
  • 长任务 / 跨天任务:P3 的卡片就是断点续传的凭据——scope、验收、回滚点三样齐了,换会话也能接上。
  • 多分叉并行:不同分叉各拿一张卡,plan 先算出不会撞文件的波次,避免两个 agent 同时改同一处。
  • 收尾:P5 的六条规则让“完成”这句话可以被机器反驳:无数字的已验证、TODO、绝对化断言、AI 味词表(赋能 / 闭环 / 抓手…),命中即失败。
  • 插件回归:verify/scenarios/*.json 是 P2 的输入格式,把 fixture 的 checks 数量直接变成覆盖率数字,不需要另写报表。

五、命令速查

# 自动守护:装一次,之后不用记

signoff init signoff status signoff guard --full signoff uninstall --all

P1:跑检查;默认 tests/ 用 pytest,否则 npm test

signoff p1 --run "pytest -q" --run "npm run lint" --budget 120 signoff p1 --install-hook # 写入 .git/hooks/pre-commit

P2:覆盖分级 + 阈值

signoff p2 --strict --min-scenario 4 --min-assertions 60 --md docs/coverage.md

P3:卡片校验 / 波次规划 / 收集核对

signoff p3 validate --

只显示了开头部分;其余内容请在仓库中阅读