关于 kibi-mcp
Kibi 是面向编码 Agent 的需求编译器与约束层,可将产品意图转为结构化需求、场景、测试和代码关联。它通过检查与证据追踪,帮助团队发现意图和实现之间的偏差。
主要功能
- 01将意图编译为结构化需求
- 02关联需求、场景、测试与代码
- 03用 Prolog 规则验证语义
- 04追踪需求的验证证据
- 05按 Git 分支保存知识快照
- 06生成覆盖率与证据报告
适用场景
- 01根据产品资料初始化项目知识库
- 02依据关联需求检查变更代码
- 03审查测试证据与尚未覆盖的需求
MCP 相关
项目本地的 kibi-mcp 服务向编码 Agent 提供 Kibi 工具,包括需求搜索和检查。没有 MCP 的 Agent 可使用 CLI 的 JSON 路由。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
16收录的工具列表 · 更新于 1 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 否 | 可选的精确实体 ID。示例:'REQ-cli-gc'。如果省略,则按其他筛选条件返回匹配的实体。 |
| args | array | 否 | 当谓词没有架构时使用的位置参数值;null 匹配任意值。示例:['admin', null, null, 'allow']。建议使用 where。 |
| tags | array | 否 | 可选的标签筛选条件。匹配包含任一所提供标签的实体。示例:['security','billing']。 |
| type | any | 否 | 可选的实体类型筛选条件。允许值:req、scenario、test、adr、flag、event、symbol、fact。示例:'req'。 |
| limit | number | 否 | 筛选后返回的最大行数(可选)。省略时默认为:100。示例:25。 |
| scope | any | 否 | 可选:'current_requirements' 仅保留当前(未被取代或废弃)要求所要求的事实。 |
| where | object | 否 | 谓词的命名参数值,不限顺序,使用谓词架构中的参数名称。示例:{actor: 'admin', decision: 'allow'}。名称未知时会返回包含已声明名称的警告;无匹配时会返回实际存在的值。 |
| offset | number | 否 | 可选的从零开始的分页偏移量。默认值:0。示例:50 表示跳过前 50 行。 |
| distinct | string | 否 | 可选参数名称,用于统计匹配的谓词事实中该参数的不同值数量。例如,谓词为 'has_role' 且 where 为 {user: 'alice'} 时,设置 distinct: 'role' 可回答 alice 拥有多少种角色。 |
| factKind | any | 否 | 类型化事实筛选条件:列出一种事实及其类型化字段。'predicate_schema' 返回可查询谓词的目录(参数名称、常量、事实数量)。示例:'predicate_schema'。 |
| polarity | any | 否 | 谓词事实的可选极性筛选条件。默认值:both。 |
| namespace | string | 否 | 同名谓词存在于多个命名空间时,可选的谓词命名空间。默认值:任意命名空间。 |
| predicate | string | 否 | 类型化事实筛选条件:要查询的谓词名称,例如 'has_role' 或 'permission_rule'。与 where 配合使用可指定命名参数。返回该谓词的所有已存储事实及其参数、极性和允许/拒绝效果。 |
| sourceFile | string | 否 | 可选的源文件子字符串筛选条件。示例:'src/auth/login.ts'。使用 KB 源关联信息,不扫描文件系统。 |
| subjectKey | string | 否 | 类型化事实筛选器:点分隔的主题键,用于列出其属性事实,例如 'user.role_assignment'。与 propertyKey 结合可指定单个属性。 |
| includeBody | boolean | 否 | 仅提供 id 时:还返回实体编写的 Markdown 正文(其 front matter 之后的文本),格式为 body {id, path, text},以便修正其中过时的陈述;kb_upsert document.body 会替换该正文。默认值:false。 |
| propertyKey | string | 否 | subjectKey 下的可选属性键,例如 'max_roles'。返回每条事实的运算符、值和单位。 |
| workspaceRoot | string | 否 | 当此调用所针对的工作区与服务器启动时所在的工作区不同时,填写其绝对路径,例如你正在使用的 git worktree。如果该工作区是同一仓库的 worktree,或位于客户端的 MCP 根目录下,服务器会从该工作区的知识库响应;否则会从自身工作区响应,并添加 workspace_mismatch 诊断信息。适用时,主机钩子会自动填写此项。 |
详细介绍
提示意图,Kibi 让 Agent 记住它,并证明实现符合要求。
根据 Kibi 在各个案例中的报告简化而来。
Kibi 是一个原生适用于 Agent 的需求编译器和强制执行层。你用自然语言描述产品意图;Agent 会创建并维护结构化需求、场景、测试、语义事实和代码链接。随后,Kibi 会检查实现是否始终与该意图保持一致。
与被动记忆或检索系统不同,Kibi 旨在融入 Agent 的工作流。Agent 无须记得去查阅工单、看板或需求文件夹:Kibi 的钩子、工具和验证关卡会持续将相关产品上下文带回工作中。
文档 · 快速入门 · Kibi 自身的健康报告
为什么选择 Kibi
大多数项目知识散落在提示词、工单、代码和对话中,而大多数 AI Agent 最终都会遗忘其中一部分。Kibi 将这些知识转化为可强制执行、与分支相关联的模型:
- 人类维护意图,而非产物 — 提示词是主要的编写界面。Agent 负责创建和演进需求、场景、测试、事实和符号链接等常规工作;人类负责解决真正的歧义并做出产品决策。
- 记忆可强制执行 — 符号需要归属需求,需求需要完整语义和场景,场景需要测试,而提供证明的测试需要最新的执行证据。
- Prolog 可防止偏离 — 类型化属性、谓词和安全规则可通过确定性检查,在矛盾、无依据的臆造和语义不完整被采纳为项目知识之前将其揭示出来。
- 端到端行为可追溯 — Kibi 记录端到端测试证明了什么,而不仅仅是它碰巧执行了哪些代码行。你可以从符号导航到其需求,也可以从测试导航到它验证的场景和意图。
- 意图在分支切换后依然保留 — 每个 Git 分支都有自己的 KB 快照,因此功能上下文彼此隔离,并会在你返回时保留。
- 支持多种语言 — 内置 TypeScript 和 JavaScript 符号支持。可选的
kibi-plugin-treesitter使用固定版本的 WASM 语法,为 Python、Go、Rust、Java、C#、PHP、C、C++、Bash、Ruby 和 Terraform/HCL 添加离线符号提取功能。 - 可选的 UI 设计守护工具(实验性) —
kibi-plugin-ui让 React 和 Angular 组件遵循约定的设计模式。像素、颜色和间距仍由你的代码检查工具负责。 - 让知识留在本地 — KB 状态保存在仓库的
.kb/目录中;Kibi 软件包不会发送外部遥测数据或分析数据。只有文档网站会统计访问量,使用的是无 Cookie 的 Umami 分析服务。
快速开始
Kibi 旨在由你的编码 Agent 设置和驱动,因此推荐的安装方式是使用提示词,而不是一串命令。Kibi 需要 Node.js 22+。SWI-Prolog 已随附:在 Linux(x64 或 arm64,glibc 2.28+)和 macOS(Apple silicon 或 Intel)上,无需安装其他内容。在其他平台(例如 Alpine/musl 或原生 Windows;请使用 WSL)上,请安装 SWI-Prolog 9.0+,并将 swipl 加入 PATH(详情)。
推荐:让你的 Agent 代为设置。 将以下内容粘贴到 Claude Code、Cursor、Codex、OpenCode,或任何能在你的代码仓库中运行命令的编码 Agent 中:
Set up Kibi (https://github.com/Looted/kibi) in this repository, then bootstrap its knowledge base.
1. Install: confirm Node.js 22+ is available. With the package manager this repository already uses, add kibi-core, kibi-cli and kibi-mcp as dev dependencies. Do not skip optional dependencies; the bundled SWI-Prolog runtime is one.
2. Initialize: run every `kibi` command through the package manager's local runner (npm: `npm exec -- kibi <command>`). Run `kibi init`; if it reports a problem, run `kibi doctor` and fix what it names. If this platform has no bundled SWI-Prolog, tell me what to install and stop.
3. Connect: register the project-local `kibi-mcp` server for the agent host you are running in, following https://looted.github.io/kibi/guide/connect-an-agent.html. Prefer project-scoped configuration, and ask me before installing a plugin or changing global settings. Until the kb_* tools are visible to you, use Kibi's CLI JSON routes instead.
4. Bootstrap: run `kibi skills load kibi-bootstrap --format markdown` and follow that skill exactly. It starts by asking me where product intent lives outside the code (issue trackers, wikis, specs) and which sources to trust; read them through the connectors you have and cite them. Show me the complete plan and its hash, and write nothing until I approve it.
5. Verify: run `kibi check` and `kibi status`, fix anything they report, and summarize what was added. Do not commit; I will review the changes.
接下来会发生:
- 设置。 Agent 安装软件包、运行
kibi init,并将自身连接到 Kibi。 - 访谈。 它会询问产品意图目前存放在哪里(例如 Jira 或 YouTrack 等问题跟踪系统、维基、规格文档),以及应信任哪些来源。
- 制定计划。 它通过现有连接器读取这些来源并起草初始化计划。计划中的每项需求都会注明其来源工单或页面。它发现的未决问题和来源间的冲突会标记出来供你处理,而不会将其转化为需求。
- 由你审批。 它会向你展示计划及其哈希值。你批准前,不会写入任何内容。
- 应用并检查。 它应用计划、验证结果,然后补充计划无法写入的内容,例如根据验收标准生成的场景,以及新需求对应的机器可检查事实。它会告知你新增了哪些内容。
之后就可以照常工作:提出功能、修复和重构需求,Agent 会让需求、场景、测试和代码链接与代码保持同步。
手动安装
在你的代码仓库中:
npm install --save-dev kibi-core kibi-cli kibi-mcp
npm exec -- kibi init
kibi init 会创建 .kb/ 目录结构,并安装用于保持同步的 Git 钩子。它绝不会覆盖自己未创建的钩子,也不会推断产品知识。连接你的编码 Agent,然后向它提出:
为此代码仓库初始化 Kibi。
pnpm、Yarn 和 Bun 通过各自的本地运行器也能以相同方式使用。安装指南介绍了这些工具对应的命令、Kibi 如何查找 SWI-Prolog,以及包管理器相关注意事项。运行 npm exec -- kibi doctor 可检查一切是否就绪。
升级。 更新 Kibi 软件包后,运行 kibi migrate(或让你的 Agent 代为运行)。它会显示将要发生的更改,并且只有在你批准后才会应用;CLI 参考介绍了每个架构版本。
连接你的编码 Agent
上方的设置提示词已为你完成此步骤。若要手动操作:每个客户端都会启动同一个项目本地的 kibi-mcp 服务(npx --no-install kibi-mcp,stdio,工作目录 = 你的代码库)。可选插件还会添加内置技能和钩子。
Claude Code
从此代码库的 marketplace 安装可选的 kibi-claude 插件。它包含 MCP 服务、内置技能,以及一些钩子,可在 Agent 读取或编辑代码之前(包括通过 shell 命令操作时)向其展示关联的需求、必须保持成立的条件,以及相关决策。Agent 连接指南中有详细说明:
claude plugin marketplace add Looted/kibi
claude plugin install kibi-claude@kibi
如果不使用插件,请为项目注册该服务:
claude mcp add --scope project kibi -- npx --no-install kibi-mcp
Cursor
将 Kibi 添加到 .cursor/mcp.json:
{
"mcpServers": {
"kibi": {
"command": "npx",
"args": ["--no-install", "kibi-mcp"]
}
}
}
可选的 kibi-cursor 插件会添加规则、内置技能、命令和建议性钩子,在读取或编辑关联代码之前,向 Agent 展示与 Claude Code 插件相同的需求背景信息。请参阅 Cursor 插件指南。
Codex
codex mcp add kibi -- npx --no-install kibi-mcp
可选的 kibi-codex 插件包含 Kibi 技能、MCP 配置和仅发出警告的钩子,可在 Agent 修改代码之前,将关联需求纳入其上下文。添加 Kibi 代码库 marketplace,打开 Codex,然后运行 /plugins,选择 Kibi Plugins 并安装 kibi-codex:
codex plugin marketplace add Looted/kibi
该代码库 marketplace 并非官方 OpenAI Plugin Directory;目前还不支持自行发布插件。仍完全支持手动配置 MCP。
OpenCode
将 Kibi 添加到 opencode.json。可选的 kibi-opencode 插件会添加提示词指导(包括编辑文件所关联的需求必须保持成立的条件)和后台维护:
{
"mcp": {
"kibi": {
"type": "local",
"enabled": true,
"command": ["npx", "--no-install", "kibi-mcp"]
}
},
"plugin": ["kibi-opencode"]
}
VS Code
将 Kibi 添加到 .vscode/mcp.json:
{
"servers": {
"kibi": {
"type": "stdio",
"command": "npx",
"args": ["--no-install", "kibi-mcp"]
}
}
}
ZCode 和其他 MCP 客户端
任何 stdio MCP 客户端都可使用 command: npx、args: --no-install kibi-mcp。ZCode 也提供一个可选插件,可从本地检出版本安装;它的编辑钩子会向 Agent 展示与 Claude Code 插件相同的需求背景信息。请参阅 ZCode 插件指南。不支持 MCP 的 Agent 可通过 CLI 的 JSON 路由使用相同操作。
Agent 可获得的能力
Kibi 的技能子系统为 Agent 提供六项内置技能,教它如何使用 Kibi,因此你无需粘贴冗长的系统提示词;少量 MCP 工具即可完成其余工作:
- 用通俗语言回答问题。 询问“什么规定了结账舍入?”,
kb_search会返回当前需求、相关测试和决策,以及 Kibi 检查结果。 - 审查每项更改。 对 Agent 修改过的文件运行
kb_check,即可查看代码实现的需求,并标记没有需求覆盖的新代码。 - 安全写入。 每次写入都可先预览;你批准的计划要么全部生效,要么完全不生效。
MCP 参考列出了所有工具。通用 Agent 可从 Agent 入门指南开始。
查看每项保证的力度
npm exec -- kibi report --open
kibi report 会根据一次覆盖率快照生成独立完整的 kibi-report/index.html 和 kibi-report/badge.svg。% tested 表示当前需求中,在当前代码上有最新端到端证据支持的比例;报告会列出已测试的内容、缺少证据的内容、相互矛盾的内容,以及已过时的内容。
每项需求还会标注证据等级,因此保证的表述不会强于其依据:proved(需求中的每项声明对所有情况都成立,并由来自 exhaustive、typecheck、arithmetic、smt、rule、state_machine、regex 或 source 证明契约的最新证书支持;契约会指明声明,另一个独立检查器会重新验证证书。声明不必是数字:权限规则、适用于每个成员的属性、状态转换、永远无法到达的状态、必填字段和字符串格式,都会依据代码精确判定;source 证明会检查 Kibi 从项目自身读取的路由、数据库架构、配置、验证器和代码引用)、tested(最新端到端回执覆盖所有关联场景)、asserted(有人为其背书,但目前没有任何检查机制验证)和 unverified(由 Agent 编写,且未经任何人批准)。kibi coverage 会为每项需求返回 evidenceLevel,并在 summary.evidenceLevels 中统计各等级数量;报告和 kibi signoff 会在确定程度旁显示证据等级。请参阅证明阶梯、证明需求(了解证书证明类型),以及阅读报告。
知识库本身也会以相同方式接受检查。kibi check(Agent 使用的命令为 kb_check)会证明需求中陈述的事实彼此一致(某个属性上的所有事实都能由同一个值满足,每项决策都有一个结果),并确认存储的规则是分层的;它还会为每个答案生成一份证书,由一个小型独立检查器重新验证。它也能发现只有合在一起才会产生矛盾的事实,这是两两检查无法发现的。出现矛盾时,会返回无法同时成立的最小事实集合;任何无法进行比较的内容都会报告为未解决,而绝不会报告为一致。
在批准变更之前,kibi signoff 会显示新增、重写或受影响的需求,并逐项注明其确定程度、证明状态和证据等级;kibi signoff --questions 会为待你处理的决策编号,并显示每项决策会改变的规则。Agent 会在回复中以纯 Markdown 呈现此视图,因此无论 Agent 在哪里撰写回复,都能正常渲染,包括通过消息工具传递回复的聊天应用和云端会话;同一视图也会作为独立完整的页面保存在 .kb/briefs/signoff/latest.html 中。Claude Code、Cursor、ZCode 和 OpenCode 会添加 /kibi-signoff 命令,OpenCode 会以卡片形式呈现此视图,VS Code 会在面板中打开它;Agent 钩子会在会话写入需求后请求生成此视图。
若要将报告和可点击徽章发布到 GitHub Pages,请运行 npm exec -- kibi init --github,然后启用 Settings → Pages → Source → GitHub Actions。GitHub 集成指南涵盖了报告工作流、仅发布徽章,以及在只有 Kibi 自身文件发生冲突时仍确保拉取请求可以合并的 CI 步骤。符号的行位置绝不会提交:每次 kibi sync 都会将其生成到 Git 忽略的缓存中,因此两个分支即使编辑同一个源文件,也不会因这些位置发生冲突。
日常检查可使用 CLI 参考中的 kibi status、kibi search、kibi gaps、kibi coverage 和 kibi check。
工作原理
Kibi 将概率式解读与确定性验证相结合:
Human prompt
|
v
Agent updates code and product knowledge
|
v
Requirements + semantic facts/rules + scenarios + tests + symbol links
|
v
Prolog coherence checks + traceability gates + fresh E2E evidence
|
v
Tested result or explicit, repairable gaps
Agent 绝不会将任意 Prolog 代码当作可信事实来编写。它会通过类型化事实、谓词模式和安全的逻辑表示来工作;Kibi 会在 Prolog 层使用这些编码进行推理之前先验证它们。
Kibi 强制执行的规则
Kibi 会维护规范的可追溯性与证明链:
Requirement -> Scenario -> Test
^ ^
| |
Production symbol Executable test symbol
要让一项需求经过端到端测试,而非仅记录在案:
- 每个生产符号都必须追溯到其实现的需求。
- 每条规范性需求条款都必须建模为类型化事实,或明确标记为尚未解决。
- 需求必须通过场景进行说明,测试必须验证这些场景。若成功场景假设了当前需求所禁止的行为,则会阻止证明。
- 可执行测试符号必须标明实际执行验证的代码。
- 承载证明的生产符号必须由符合要求的测试覆盖,且提交前钩子采用与完整检查相同的规则。
- 端到端证据必须是最新的,并与当前代码快照绑定,确保 CI 与同一提交的本地检出结果一致。
这样一来,就能双向回答以下问题:哪个需求对应此符号、此端到端测试实际验证了什么、哪些需求缺少场景或当前证据,以及当前有哪些需求彼此矛盾。仅靠代码覆盖率无法回答这些问题:它只能说明测试触及了某一行代码,而不能说明测试验证了哪种产品行为。
Prolog 作为安全层
假设产品明确规定只有三种用户角色。一旦将此约束编码为严格属性或谓词,Agent 就无法悄悄虚构第四种角色并将其当作已确认的意图:Kibi 可以确定性地指出矛盾或缺失的授权。
如果 Kibi 无法判断,它不会报告“无冲突”。数值约束会进行精确比较(“大于 0”与“等于 0”相冲突),针对同一操作的允许与拒绝规则互相矛盾,而任何 Kibi 无法建模的内容都会报告为待解决事项,交由 Agent 审查,绝不会被当作验证通过。
Prolog 不会判断最初的人类意图是否正确。它会验证已编码的知识,而 Kibi 会明确标示歧义、本体缺失、依据不完整和证据过时,而不是将它们称为证明。
为什么现在能够实现
传统知识库需要专家设计本体、编写形式逻辑,并手动维护每一项映射。大模型改变了这类编写工作的成本,而 Kibi 和 Prolog 则提供了严谨性:
| 参与者 | 优势与职责 |
|---|---|
| 人类 | 说明产品意图,并解决实际存在的歧义或策略选择 |
| AI Agent | 将意图映射到代码库,并维护需求、场景、测试、事实和符号链接 |
| Kibi + Prolog | 验证模式、检查一致性与矛盾、强制执行可追溯性,并评估证明证据 |
最终方案利用大模型的优势来应对大模型的弱点:记忆有限、幻觉、上下文漂移,以及产品与代码之间的映射丢失——过去,这种映射分散在产品负责人、工单系统和规划看板中。
Kibi 建模的内容
八种实体类型:req、scenario、test、fact、adr、flag、event 和 symbol。实体架构包含完整的模型。
每个实体都会记录其作者是某个人还是某个 Agent;建议性检查会列出尚未得到任何人批准的 Agent 编写的需求。
需求和 ADR 还会说明其决策的确定程度。firm 规则由人明确提出:它会指向其原话,Agent 在更改前会先询问,而且 Kibi 不会悄悄重写它。default 选择可以根据证据重新审视,exploratory 则表示猜测。每次取代旧决定时,都必须说明更改原因。Kibi 的工作方式介绍了详细信息。
软件包
在项目中安装 kibi-core、kibi-cli 和 kibi-mcp。其他所有软件包均为可选。
| 软件包 | 作用 |
|---|---|
kibi-core | 由 Prolog 支持的知识图谱、推理和验证 |
kibi-cli | 面向人类、Agent、自动化和 Git 钩子的接口 |
kibi-mcp | 暴露 Kibi 公共操作契约的 MCP 接口 |
kibi-claude | Claude Code 技能、MCP、读取/编辑前的需求上下文,以及建议性钩子(插件市场) |
kibi-cursor | Cursor 规则、技能、MCP、读取/编辑前的需求上下文,以及建议性钩子 |
kibi-codex | Codex 技能、MCP、编辑前的需求上下文,以及生命周期钩子 |
kibi-opencode | OpenCode 指南(包括编辑所需的需求上下文)和后台维护 |
kibi-zcode | ZCode 技能、命令、MCP、编辑前的需求上下文,以及建议性钩子(本地检出) |
kibi-vscode | VS Code 知识浏览器和可追溯性视图 |
kibi-plugin-sdk | 能力插件的协议类型和验证器 |
kibi-plugin-builtin | 默认语义、知识本体和 TypeScript 符号功能 |
kibi-plugin-jev | 可选的 TypeSafe Jev 语义分类器 |
kibi-plugin-treesitter | 可选的离线多语言符号提取(tree-sitter WASM 语法) |
kibi-plugin-ui | 实验性检查策略,确保 UI 组件遵循约定的设计模式 |
kibi-swipl | 随附的 SWI-Prolog 运行时;会自动安装对应平台的构建版本 |
文档
指南和参考文档发布于 https://looted.github.io/kibi/。语言模型可以从文档索引开始查阅。
- 安装 — 随附的 SWI-Prolog 运行时、软件包管理器、插件和验证
- Kibi 的工作方式和证明阶梯
- 证明需求 — 证明契约、
kibi prove和回执 - CLI 参考和MCP 参考
- 实体架构和推理规则
- 架构 — 存储、分支隔离和数据流
- 故障排除
Beta 状态
Kibi 目前处于 beta 阶段,已可用于真实项目。1.0 版本发布前,公共接口仍可能演进;如需确保可复现性,请固定确切的软件包版本。
Kibi 根据 AGPL-3.0-or-later 许可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。