mcpField
K
Kebivo

Kebivo

本地服务
github.com/OCNAI记忆与知识1今天更新

关于 Kebivo

Kebivo 是供文档和支持负责人使用的可自托管收件箱,用于收集 AI Agent 未能回答的问题和建议的修正。它会归并重复报告并将其路由给人工审核,但不会回答问题或修改知识库。

主要功能

  1. 01通过 REST 和 MCP 收集知识缺口
  2. 02归并重复问题
  3. 03按标签和规则路由报告
  4. 04通过收件箱、邮件或 webhook 投递
  5. 05用备注和状态处理报告
  6. 06以单个容器和 SQLite 运行

适用场景

  1. 01审核助手无法回答的问题
  2. 02将知识缺口发送给文档负责人
  3. 03追踪重复问题并避免重复提醒
  4. 04将建议修正路由给人工审核

MCP 相关

通过 Streamable HTTP 向 MCP 客户端提供 `report_knowledge_gap` 和 `submit_knowledge_correction` 工具。调用需要 bearer token;提交修正还需要相应权限范围及项目策略允许。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"ocnai-kebivo": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SECRET_KEY",
"-e",
"ENCRYPTION_KEY",
"-e",
"ALLOWED_ORIGINS",
"ghcr.io/ocnai/kebivo:0.2.0"
],
"env": {
"SECRET_KEY": "<SECRET_KEY>",
"ENCRYPTION_KEY": "<ENCRYPTION_KEY>",
"ALLOWED_ORIGINS": "<ALLOWED_ORIGINS>"
}
}
}
}
启动命令docker run -i --rm -e SECRET_KEY -e ENCRYPTION_KEY -e ALLOWED_ORIGINS ghcr.io/ocnai/kebivo:0.2.0
需要配置的环境变量
SECRET_KEY密钥At least 32 random characters, for example from openssl rand -hex 32
ENCRYPTION_KEY密钥64 hex characters from openssl rand -hex 32; back it up apart from the data volume
ALLOWED_ORIGINSBrowser origin allowed to sign in to the admin UI

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

安装包
ocighcr.io/ocnai/kebivo:0.2.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Kebivo:面向 AI Agent 的可自托管知识缺口反馈

收集 AI 助手无法回答的问题。

Kebivo 通过 REST 或 MCP 收集 AI Agent 未能回答的问题和建议的知识修正。它会将重复报告归为一组,并通过管理收件箱、电子邮件或签名 Webhook 将其发送给知识维护人员。只需在一个容器中自行运行,无需云账户或 AI 提供商。

CI License: Apache-2.0 Release Container image

Kebivo 可与 Langfuse 和 Phoenix 等可观测性与追踪工具配合使用。这些工具会向工程师展示运行期间发生的情况。Kebivo 会收集 Agent 报告的知识缺口,并将其发送给知识维护人员。它不是 RAG 引擎:不会为追踪记录评分、检索文档或回答问题。请参阅它不会做什么。

演示:AI 助手无法回答“VPN 设置指南在哪里?”,文档团队也无从知晓。Agent 通过 MCP 将知识缺口报告给 Kebivo,一条路由规则通过 Webhook 将其发送给文档负责人,重复问题会归入同一条收件箱条目并增加计数,负责人随后将其标记为已解决。整个过程约 30 秒,并循环播放。

在演示中,助手无法回答问题,Agent 便通过 MCP 调用 report_knowledge_gap。一条路由规则通过 Webhook 将报告发送给文档负责人。重复问题会归入同一组,因此计数增加,但不会再次触发提醒。负责人添加备注,并将该组标记为已解决。产品画面是运行真实 Kebivo 容器并使用合成数据生成的截图;聊天内容和片尾卡片为绘制内容。源文件位于 docs/assets/demo-src。

状态:0.1.0,首个版本。 运行已发布的镜像 ghcr.io/ocnai/kebivo:0.1.0(linux/amd64、linux/arm64),或从此仓库构建。基于 Apache-2.0 许可。

从快速入门开始。框架教程请参阅 Kebivo 指南。有关部署、API 行为和限制,请参阅技术文档。

为什么

助手无法回答问题时,文档负责人可能永远不会看到这个问题。同一个问题可能再次回答失败,而聊天中提出的修正也可能永远无法传达到内容维护人员手中。Kebivo 会将这些报告集中到一处,让负责人进行分流,并将其发送到他们使用的工具中。

AI 助手无法回答问题时,Kebivo 会将这些知识缺口发送给文档或支持负责人审核。它会将重复问题归为一组,让负责人了解哪些问题反复出现。它可以与 RAG 应用或 Agent 框架配合使用;但不会为你检索内容或更新知识库。

功能

  • 通过 REST 从应用程序代码发送报告,或为 Agent 提供 Streamable HTTP MCP 工具 report_knowledge_gap 和 submit_knowledge_correction。
  • 为每个助手或团队创建一个项目,设置默认标签、更正政策和承载令牌。令牌仅显示一次,并可设置过期时间和撤销。
  • 使用有序规则、ANY/ALL 标签匹配、每条规则的多个目标、回退目标和试运行模拟器来路由报告。
  • 将报告发送到带签名的 Webhook(使用带版本号的 JSON 负载)、SMTP 邮件或内置收件箱。投递失败后会持久化重试并采用退避策略;还支持重启后恢复、投递日志和手动重试。
  • 相同的问题会自动分组。你也可以配置 LLM 提供商进行语义分组。
  • 在收件箱中管理报告,支持搜索、筛选、状态、备注、标签、合并、拆分和删除。每个分组都有完整历史记录。
  • 可按项目启用 OpenAI 兼容、Azure OpenAI 或本地(Ollama、LM Studio)提供商进行语义分组。此功能默认关闭。
  • 运行一个容器并使用一个 SQLite 文件。支持启动时迁移、在线备份和校验恢复、数据保留(默认开启)、JSON Lines 导出和健康检查。

截图

所有截图均使用合成数据。

按状态统计反馈数量并显示最常见的未解决知识缺口的仪表板按标签 it 筛选的分组收件箱,显示状态数量和筛选器
仪表板收件箱
显示出现次数、备注、历史记录和投递情况的反馈分组显示 REST 和 MCP 连接代码片段的项目页面(cURL 标签页)
反馈分组连接客户端
有序路由规则、回退目标和试运行模拟器显示尝试记录和重试按钮的失败 Webhook 投递
路由规则投递失败

更多:目标、设置、LLM 设置、登录。使用 make e2e-ui SCREENSHOTS=1 重新生成。

它不会做什么

  • 它不会回答问题、编辑你的知识库或应用更正。所有内容均由人审核。
  • 它不是聊天机器人、工单系统或分析产品,而是将反馈交给你使用的工具。
  • 不支持多用户账户、SSO 或角色:只有一个本地管理员。
  • 不提供托管服务,不进行遥测,也不需要账户。默认安装不会建立任何出站连接,也不需要 AI 提供商。
  • 不支持高可用:仅有一个进程,使用本地存储上的一个 SQLite 文件。

快速开始

你需要安装 Docker Compose、OpenSSL,并有一个空闲的 8000 端口。

1. 启动 Kebivo。

git clone <REPOSITORY_URL> kebivo
cd kebivo
cp .env.example .env
printf 'SECRET_KEY=%s\n' "$(openssl rand -hex 32)" >> .env
printf 'ENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" >> .env
printf 'ALLOWED_ORIGINS=http://127.0.0.1:8000\n' >> .env
docker compose up --build -d
curl -fsS http://127.0.0.1:8000/health/ready

<REPOSITORY_URL> 是你克隆仓库时使用的地址。首次构建需要几分钟。应用迁移后,就绪检查会返回 {"status":"ok",...}。

或者运行已发布的镜像,而不是克隆和构建。它是同一个容器;请妥善保管 kebivo.env,并将其与数据卷分开备份。

(umask 077; printf 'SECRET_KEY=%s\nENCRYPTION_KEY=%s\nALLOWED_ORIGINS=http://127.0.0.1:8000\n' \
  "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > kebivo.env)
docker run -d --name kebivo --restart unless-stopped -p 127.0.0.1:8000:8000 \
  -v kebivo-data:/data --env-file kebivo.env ghcr.io/ocnai/kebivo:0.1.0
curl -fsS --retry 30 --retry-all-errors --retry-delay 1 http://127.0.0.1:8000/health/ready

迁移运行期间,curl 可能会打印几条 Connection reset 错误,随后就绪检查会返回 {"status":"ok",...}。使用此容器时,将步骤 2 的命令改为 docker exec -it kebivo python -m kebivo.cli bootstrap --email [email protected],并使用 docker stop kebivo 停止容器;数据会保留在 kebivo-data 卷中。

2. 创建管理员。 命令会提示你输入密码(至少 12 个字符)。

docker compose exec app python -m kebivo.cli bootstrap --email [email protected]

3. 创建项目和令牌。 打开 http://127.0.0.1:8000/(必须使用此地址:localhost 属于不同的来源,会导致登录失败),然后登录。创建项目,再在 项目令牌 下创建一个带有 feedback:gap 范围的令牌并复制。令牌只会显示一次。

4. 发送你的首个事件。

export KEBIVO_TOKEN='<PROJECT_TOKEN>'
curl -i http://127.0.0.1:8000/api/v1/feedback \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $KEBIVO_TOKEN" \
  -H 'Idempotency-Key: first-event-001' \
  --data '{"event_type":"knowledge_gap","question":"How do I reset my corporate VPN?","tags":["it"]}'

响应为 202 Accepted,其中包含 event_id。5. 在 UI 中打开收件箱:问题会显示在独立分组中。添加一个目标和一条路由规则,将后续问题发送到电子邮件或 Webhook。

停止服务:运行 docker compose down(数据会保留)。运行 docker compose down --volumes 会删除所有数据。有关生产环境(TLS、备份、升级和所有设置),请阅读自托管指南。

通过 REST 收集 AI Agent 反馈

使用项目令牌发送 POST /api/v1/feedback。202 表示报告已可靠存储;路由和发送会在后台进行。发送 Idempotency-Key,并在重试时重复使用。对于 429 和 5xx 响应,请采用退避策略重试;其他 4xx 错误不要重试。

可运行的客户端示例包括 cURL、Python(标准库)和 TypeScript(Node.js 24,无需构建步骤),都位于 examples/ 中。UI 中的项目页面也会显示相同的代码片段,并替换为你的端点。REST 集成指南介绍了字段、身份验证、幂等性、错误、重试和速率限制。

通过 MCP 报告知识缺口

将 MCP 客户端指向 http://127.0.0.1:8000/mcp,并设置请求头 Authorization: Bearer <PROJECT_TOKEN>。对于 Claude Code:

claude mcp add --transport http kebivo http://127.0.0.1:8000/mcp --header "Authorization: Bearer <PROJECT_TOKEN>"

带有 feedback:gap 范围的令牌可以调用 report_knowledge_gap;调用 submit_knowledge_correction 还需要 feedback:correction 范围,且项目必须接受修正。模型可能不会在应该调用工具时调用它,因此每份报告都很重要时,请使用 REST。请参阅 MCP 指南、客户端配置、Python 客户端和可复制的 Agent 指令。

目标和路由

目标发送内容
内置收件箱始终可用;每个事件都会显示在管理员收件箱中。
Webhook通过 HTTPS POST 发送版本化 JSON 负载,并使用 Standard Webhooks 签名;可选 Bearer 或自定义请求头。接收端示例会验证这两种签名。
SMTP 电子邮件通过 STARTTLS、隐式 TLS 或未进行身份验证的本地中继,向 1–20 个收件人发送消息(纯文本,并附带转义后的 HTML 版本)。

每个项目都有一组按顺序排列的规则:规则匹配其任意或全部标签,并将事件发送到一个或多个目标,也可以选择停止评估。未匹配的事件会发送到后备目标。例如,it → IT 电子邮件,customer-service → 支持 Webhook。每个目标都可以选择仅对新分组发送,或对每次出现都发送。请参阅路由和目标。

可选 AI

默认情况下不会调用任何模型。若要将措辞不同的问题归为一组,请配置 LLM 提供商(UI 中的 LLM settings),并在确认问题文本会发送给该提供商后,将项目切换为语义去重。如果提供商调用失败,事件仍保留自己的分组,并会照常路由和交付。请参阅去重和LLM 提供商。

安全

  • 在 TLS 反向代理后运行,并确保应用端口仅绑定到环回地址(指南)。
  • 妥善保管 .env。将 SECRET_KEY 和 ENCRYPTION_KEY 单独备份,不要与数据库备份放在一起。
  • 反馈以未加密形式存储在 SQLite 中。请保护存储卷和备份,并且不要让助手发送机密信息或不必要的个人数据。
  • 为每个客户端分配独立令牌,仅向面向客户的 Agent 授予 feedback:gap 权限,并撤销不再使用的令牌。
  • 除非针对某个目标地址或提供商单独选择允许,否则 Webhook 和 LLM 提供商无法访问私有地址或环回地址;云元数据地址始终会被屏蔽,SMTP 也不例外。管理员写入操作需要配置的 Origin 和 CSRF 令牌。
  • 日志中不会包含反馈内容或凭据。

请按照 SECURITY.md 中的说明报告漏洞。

数据、保留与导出

默认启用数据保留策略:每天删除超过 180 天的反馈、超过 30 天的已完成交付尝试详情,以及超过 90 天的审计条目。可通过环境变量更改或禁用各项策略(设为 0 即可关闭)。保留策略不会影响已创建的备份。管理员可以将项目反馈导出为 JSON Lines。请参阅保留策略和导出。

已知限制

  • 至少交付一次。 接收方可能会收到重复交付;请根据 Webhook ID 或交付 ID 去重。
  • 仅支持一名管理员、一个实例,以及一个存储在本地的 SQLite 文件。不支持副本和网络文件系统。
  • MCP 需要手动配置 bearer 令牌;仅支持 OAuth 的客户端无法连接。响应为无状态 JSON,不包含流式通知。
  • 速率限制在内存中计数,容器重启后会重置。
  • 已删除的反馈无法从已接收该反馈的目标位置或现有备份中撤回。
  • 反馈内容静态存储时不会加密。

文档

框架教程请参阅网站上的指南。可运行的客户端和框架示例位于 examples/。以下页面介绍技术细节。

指南内容
自托管要求、所有设置、TLS 代理、机密信息、备份与恢复、升级、凭据轮换、故障排查
REST API身份验证、字段、幂等性、错误、重试、示例
MCP连接客户端、工具与权限、测试、限制
路由和目标位置规则、回退、Webhook、签名、SMTP
去重和LLM 提供商精确分组与语义分组、提供商、隐私
反馈管理分组、搜索语法、状态、合并、拆分、删除
保留策略和导出自动删除、JSON Lines 导出
发布版本管理、镜像标签、发布与升级检查
第三方许可证随附依赖项清单
变更日志各版本中用户可见的更改

贡献

开发环境设置、make 目标、代码风格、测试和文档规则见 CONTRIBUTING.md。简而言之:先运行 make install,然后在每次提交前运行 make check,并在同一次变更中更新文档。根据 Developer Certificate of Origin,每次提交都要签署(git commit -s);无需签署 CLA。

所有参与者都必须遵守行为准则。正在考虑但尚未确定的想法见路线图。

许可证

Kebivo 根据 Apache License 2.0 授权。接受的贡献也采用同一许可证,并须根据 Developer Certificate of Origin 签署;无需签署 CLA。第三方许可证清单列出了该镜像所包含所有内容的许可证。

评论

支持 Markdown

第一次接触 MCP?

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

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