mcpField
A
Assurance

Assurance

本地服务
github.com/i-ops-hq开发工具7今天更新

关于 Assurance

Assurance 是面向编码 Agent 会话及其他 Agent 运行记录的命令行检查工具,帮助团队确认哪些内容经过测试、哪些被跳过。它明确标示无法核实之处,并可针对提交、推送和部署中的未测试变更发出提示。

主要功能

  1. 01审计 Claude Code 和 Codex 会话
  2. 02检查编辑后的测试与命令
  3. 03添加 Claude Code 回合结束钩子
  4. 04检查检索覆盖率和 MCP 工具变更
  5. 05提供 CI 门禁和本地审计端点

适用场景

  1. 01确认编辑后是否运行了指定测试
  2. 02在推送或部署前检查 Agent 变更
  3. 03比较检索文档与所需材料
  4. 04检查 MCP 工具描述是否变更

MCP 相关

assurance-mcp 软件包将只读检查作为 MCP 工具提供,并限制在指定的 --root 范围内。本地端点也可接收 Agent 运行记录或追踪并返回审计结果。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"i-ops-hq-assurance": {
"command": "uvx",
"args": [
"assurance-mcp"
]
}
}
}
启动命令uvx assurance-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiassurance-mcp0.5.10

工具

6

收录的工具列表 · 更新于 今天

参数类型必填说明
folderstring否
period_rangeany否

详细介绍

assurance

你的 AI Agent 说任务已完成。Assurance 会告诉你它没检查哪些内容。

PyPI Python tests License

快速开始 · 工作期间 · 使用场景 · 命令 · 指南 · 反馈


编码 Agent 结束时会说 “全部完成了——测试通过。” Assurance 会读取实际发生的情况,用通俗的语句告诉你完成了什么、跳过了什么,以及哪些内容无法验证。

快速开始

在使用过 Claude Code 或 Codex 的任意项目中运行:

uvx assurance audit                        # with uv: runs it without installing anything
pip install assurance && assurance audit   # without uv

它会读取任一 Agent 为此文件夹留下的最新会话,无需配置,也无需指定你用的是哪个 Agent。还没用过这两者?运行 uvx assurance audit --demo,即可查看内置示例会话的报告。

没有 uvx?它随 uv 一起提供。运行一条命令即可安装:
位置命令
macOS(Homebrew)brew install uv
macOS / Linuxcurl -LsSf https://astral.sh/uv/install.sh | sh
Windowspowershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Windows(WinGet)winget install --id=astral-sh.uv -e
任何已安装 Python 的环境pipx install uv 或 pip install uv

之后打开一个新的终端,让 uvx 加入 PATH。也可以完全跳过 uv,使用 pip install assurance,这会提供相同的 assurance 命令。

以下是本仓库中示例会话的真实输出。Agent 被要求修复 invoice.py 中的舍入错误,“并确保 pytest -q tests/test_invoice.py 通过”,最后却说 “全部完成了——现在总额正确了。”

$ assurance audit examples/audit/sample-session.jsonl
Claude Code session demo-8f2 — 13 min in /home/you/my-app
10 tool calls, 3 failed — Bash 6, Edit 2, Grep 1, Read 1

  Looped: 3 rounds of Bash `pytest -q tests/test_invoice.py` failing the same way, with nothing new read
  After the last edit (14:09): no test or check it recognises; 2 unclassified commands ran after it (make lint-fix, python script)
  Against the last prompt (14:00, "The invoice totals are off by a cent for EUR. Fix it in inv…"):
    invoice.py: changed at 14:04 (src/billing/invoice.py).
    pytest -q tests/test_invoice.py: did not run after the last edit to src/billing/rates.py (14:09); it last failed at 14:08, before that.
    Only what the last prompt names is checked here; whether the work does what it asks is not.
  Not classified: 2 shell commands (make lint-fix, python script), so whether they read, wrote or tested anything is unknown.
  Also in the transcript: 1 assistant turn, 1 user turn, 1 bookkeeping record.
  Not read: 0 lines.

“全部完成”遗漏了这些内容:

  • ❌ 测试连续失败了 三次,每次情况都一样。
  • ❔ 最后一次编辑之后,没有运行它能识别的测试。虽然运行了两条命令,但它无法确认这两条命令的结果,因此会明确列出。没有报告不代表通过。
  • ❔ 提示词要求的测试最后一次运行是在最后一次编辑之前,而且失败了。它指定的文件已被修改。它并不声称知道修复是否正确,并且会明确说明这一点。

在每次会话结束后运行

启用 Stop 钩子后,每当 Claude Code 完成一轮对话,都会运行审计。只有在有内容需要提醒时,它才会发声,并且会先指出以下三个级别之一:

级别触发条件会询问谁
提示本轮代码发生了更改,但尚未测试只询问你一次,并提供要运行的命令。不询问 Claude
建议审查最后一次编辑后测试失败、受保护路径发生更改,或 Claude 声称测试通过但没有依据询问你和 Claude:修复问题或说明原因
停止并检查未经测试的代码被推送、合并、发布、部署、迁移,或提交到了 main询问你和 Claude:在其他内容基于它构建之前先验证
assurance · note: no test or check has passed since the last edit to src/billing/invoice.py (14:04). Run pytest -q tests/test_invoice.py before you commit or push.
assurance · suggested review: the last test run after the last edit to src/billing/invoice.py (14:04) failed: pytest -q tests/test_invoice.py (tests/test_invoice.py::test_eur_rounding; 1 failed, 11 passed in 0.33s).
assurance · stop and check: pushed at 14:06 with no passing test or check after the last edit to src/billing/invoice.py (14:04).
uvx assurance@latest hook install   # shows the change to ~/.claude/settings.json, asks, then writes it
uvx assurance hook remove           # takes it out again; nothing else changes

它知道 Maven、Gradle、Bazel、Django、Rails、jest、vitest、go、cargo 等工具的测试命令,会读取你的 package.json、Makefile 和 justfile 脚本来了解项目的测试命令,并且绝不会将未运行任何测试视为通过。它能识别的内容。

也可以将其作为 Claude Code 插件使用:claude plugin marketplace add i-ops-hq/assurance,然后运行 claude plugin install assurance@i-ops-hq。它绝不会阻止会话,也不会导致会话失败。关于固定版本、与团队共享、Windows 以及插件的运行内容:钩子指南。

使用场景

了解 Assurance 如何融入你现有的工作流程。每个页面都很简短:说明可能出现的问题、它所处的位置,以及用于配置它的代码行。

你的工作它会为你检查什么
支付与金融科技确保依赖这些测试的支付代码在最后一次编辑后、发布之前完成测试并通过
银行业务与受监管变更每个会话都有一份记录,说明更改了什么、测试了什么,以及发起者是否获得了变更涉及的每位所有者的授权
医疗保健与生命科学Agent 未经询问便更改的受保护路径;安装操作运行前将执行的内容
法律、保险与文档研究 Agent 是否读取了问题所需的每份文档;报告文件夹中是否缺少某些时间段
平台、DevOps 与 SRE对未经测试的代码进行推送、部署和迁移;变更会影响什么;会话无法提高的限制
构建自有 Agent 的团队根据运行记录或 OTel 跟踪数据,核对你的 Agent 的“完成”与其门禁的“允许”,以及之后实际发生的情况
prompt ─▶ agent edits ─▶ note ─▶ tests ─▶ suggested review ─▶ push / deploy ─▶ stop and check ─▶ CI gate

命令

安装一次,使用一个 assurance 命令。

命令回答的问题
assurance audit此文件夹中的 Claude Code 或 Codex 会话,或你自己的 Agent 运行或跟踪记录,做了什么,又跳过了什么?
assurance hook在每轮 Claude Code 对话后运行该审计,或停止运行:install、remove、status。
assurance notices每次 hook 提示之后,下一轮是否运行了测试、修复了故障或还原了文件?从这台机器的对话记录中读取;不会发送任何内容。
assurance serve一个本地端点,任何 Agent 都可以向它发送跟踪记录或运行记录,任何工作流也可以向它请求某次运行的审计结果。
assurance coupling根据 git 历史,哪些内容通常会和你刚改动的内容一起变化?其中哪些你还没碰?无需图谱或配置。
assurance reach通过 Graphify 等代码图谱,修改此文件会影响哪些范围?该图谱落后于代码多少?
assurance clearance提出修改的人是否已获准触及修改影响范围内每位所有者的内容?
assurance diff工作是否涵盖了所有应涵盖的内容?例如,已检索的文档与必需文档是否一致。
assurance pinMCP 服务是否在你批准后悄悄修改了工具的描述?
assurance depspip install 或 npm install 会在你的机器上运行什么?只读取,不运行。
assurance budgetAgent 运行的预算花在了哪里?又在哪里陷入循环?
assurance authority对于提出请求的人,这项任务是否可以继续,而无需借用他人的访问权限?
assurance check一组带日期的报告是否完整?缺少哪些时间段?

每个命令都可以直接用作 CI 门禁:

退出代码含义
0已检查,未发现问题
1有需要查看的内容,包括无法检查的内容
2无法运行

指南

  • 每次会话后运行:完整级别、固定、团队设置、插件、Windows
  • 项目规则:声明自己的测试、必须通过的检查、禁止触及的内容,以及 Agent 无法自行提高的限制
  • 你自己的 Agent:运行记录、OpenTelemetry 跟踪记录和本地端点
  • 更多检查:检索覆盖率、MCP 固定、安装、修改影响范围、MCP 工具

它不会做什么

  • 猜测。 如果无法确定某个数字,它会如实说明,而不是凭空编造。
  • 调用模型或访问网络。 每个结果都是你可以自行核验的算术运算。
  • 声称超出它所看到的范围。 audit 会读取 Claude Code 对话记录、Codex 运行记录,以及你自己的 Agent 写入的运行记录。它不认识的记录格式会计为未读取,而绝不会猜测成工具调用——报告会显示该数量。接下来将支持其他 Agent 自己的日志: 告诉我们你使用的是哪个。

告诉我们哪里不对

项目还处于早期阶段,你能做的最有帮助的事,就是在实际工作中运行它。

如果它对你有用,点个 ⭐ 能帮助其他人发现它。

软件包

pip install assurance 会安装所有命令。每个部分也可以单独安装。

软件包说明
assurance-cliassurance 命令:diff、check、pin、drift、init
assurance-budget用于编码 Agent 会话的 audit,以及用于运行日志的 budget
assurance-deps读取安装将要运行的内容,而不实际运行
assurance-authority确定请求者是否有权批准任务继续进行
assurance-reach通过代码图谱分析更改的影响范围,以及该图谱落后代码多少
assurance-mcp以只读 MCP 工具形式提供检查,范围仅限 --root
assurance-core底层的纯决策库。不涉及 I/O、模型或依赖

属于 I-Ops。保留你的模型、Agent 和编排方式,并为其加入独立检查。

Apache-2.0 · 安全 · 贡献 · 发行版本

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。