🚀 CKB — 代码知识后端
了解你的代码,安全地进行更改,自信地发布。

CKB 将你的代码库转换为可查询的知识库。通过命令行界面(CLI)、应用程序编程接口(API)或人工智能助手,你可以提出问题、了解变更影响、查找代码所有者以及检测死代码。
你可以将其视为一位资深工程师,他知晓代码的每一行、每一个决策和每一位代码所有者,并且随时为你答疑解惑。
🚀 快速开始
选项 1:使用 npm(推荐)
npm install -g @tastehub/ckb
npx @tastehub/ckb init
选项 2:使用 Homebrew(适用于 macOS/Linux)
brew tap SimplyLiz/ckb
brew install ckb
选项 3:从源代码构建
git clone https://github.com/SimplyLiz/CodeMCP.git
cd CodeMCP
go build -o ckb ./cmd/ckb
配置步骤
cd /path/to/your/project
ckb init
ckb index
ckb setup
claude mcp add --transport stdio ckb -- npx @tastehub/ckb mcp
启动时显示的令牌效率:
CKB MCP Server v8.0.0
活跃工具:14 / 76 (18%)
估计上下文:~1k 令牌
预设:核心
现在,Claude 可以回答如下问题:
- “哪些地方调用了 HandleRequest 函数?”
- “从 API 如何调用到 ProcessPayment?”
- “如果我更改 UserService,影响范围有多大?”
- “internal/api 模块的所有者是谁?”
- “这段遗留代码是否仍在使用?”
✨ 主要特性
即时解答难题
| 问题 |
没有 CKB |
有 CKB |
| “如果我更改这里,会破坏什么?” |
用 grep 搜索并寄希望于结果 |
精确的影响范围及风险评分 |
| “这个拉取请求(PR)应该由谁审核?” |
从 git blame 中猜测 |
基于数据的审核人建议 |
| “这段代码是否仍在使用?” |
删除并查看是否有问题 |
带有置信度评分的死代码检测 |
| “我应该运行哪些测试?” |
运行所有测试(30 分钟) |
仅运行受影响的测试(2 分钟) |
| “这个系统是如何工作的?” |
花数小时阅读代码 |
即时查询架构 |
| “这段代码的所有者是谁?” |
手动搜索 CODEOWNERS 文件 |
带有漂移检测的代码所有权信息 |
| “是否存在暴露的机密信息?” |
手动用 grep 搜索特定模式 |
自动扫描 26 种模式 |
功能概述
- 🔍 理解:语义搜索、调用图、使用追踪、架构图
- ⚡ 分析:影响分析、风险评分、热点检测、耦合分析
- 🛡️ 保护:受影响测试检测、重大变更警告、PR 风险评估
- 🔐 安全:机密检测、凭证扫描、安全敏感代码识别
- 👥 协作:所有权查找、审核人建议、架构决策(ADRs)
- 📊 改进:死代码检测、技术债务跟踪、文档覆盖率
- 🚀 复合操作:单调用工具(
explore、understand、prepareChange)可将人工智能工具调用减少 60 - 70%
- 🔗 集成:命令行界面(CLI)、HTTP API、适用于人工智能工具的 MCP、CI/CD 管道、自定义脚本
📦 安装指南
推荐使用 npm 安装
npm install -g @tastehub/ckb
npx @tastehub/ckb init
使用 Homebrew 安装(macOS/Linux)
brew tap SimplyLiz/ckb
brew install ckb
从源代码构建
git clone https://github.com/SimplyLiz/CodeMCP.git
cd CodeMCP
go build -o ckb ./cmd/ckb
💻 使用示例
基础用法
ckb hotspots --format=human
ckb diff-summary --format=human
ckb audit --format=human
ckb arch --format=human
ckb status
高级用法
ckb setup
📚 详细文档
进一步了解
| 资源 |
描述 |
| 📖 功能指南 |
完整的功能列表及示例 |
| 💬 提示手册 |
解决实际问题的真实提示 |
| 🔌 集成指南 |
在你自己的工具和脚本中使用 CKB |
| ⚡ 影响分析 |
影响范围、受影响测试、PR 风险 |
| 🔧 CI/CD 集成 |
GitHub Actions、GitLab CI 模板 |
三种使用方式
| 接口 |
适用场景 |
| MCP |
人工智能辅助开发 — Claude、Cursor、Windsurf、VS Code、OpenCode、Grok |
| CLI |
从终端快速查询、脚本编写 |
| HTTP API |
IDE 插件、CI 集成、自定义工具 |
索引工作原理
CKB 使用 SCIP 索引 来理解你的代码,你可以将其看作一个数据库,它知道每个函数的定义位置、调用者以及所有代码之间的连接关系。
基本操作
ckb index
ckb status
如果没有索引,CKB 仍然可以使用 tree-sitter 解析(基本模式),但有了索引,你可以获得:
- 跨文件引用(“哪些地方调用了这个函数?”)
- 精确的影响分析
- 调用图导航
语言支持
并非所有语言都具有相同的支持程度。CKB 根据索引器的成熟度将语言分为 质量等级:
| 等级 |
支持质量 |
语言 |
| 一级 |
全面支持,所有功能可用 |
Go |
| 二级 |
全面支持,有少量边缘情况 |
TypeScript、JavaScript、Python |
| 三级 |
基本支持,调用图可能不完整 |
Rust、Java、Kotlin、C++、Ruby、Dart |
| 四级 |
实验性支持 |
C#、PHP |
关键限制:
- 增量索引 仅适用于 Go 语言。其他语言需要完全重新索引。
- TypeScript 单仓库 可能需要
--infer-tsconfig 标志
- C/C++ 需要
compile_commands.json
- Python 在激活虚拟环境时效果最佳
运行 ckb doctor --tier standard 检查你的语言工具是否正确安装。
更多信息请查看 语言支持,其中包含索引器安装、已知问题和完整的功能矩阵。
保持索引最新
当你提交代码时,索引会过时。CKB 提供了几种保持索引最新的方法:
| 方法 |
命令 |
使用场景 |
| 手动更新 |
ckb index |
一次性更新、脚本中使用 |
| 监控模式 |
ckb index --watch |
开发过程中自动刷新 |
| MCP 监控 |
ckb mcp --watch |
在人工智能会话中自动刷新 |
| CI 网络钩子 |
POST /api/v1/refresh |
从 CI/CD 触发 |
人工智能会话快速启动:
ckb mcp --watch
检查索引是否过时:
ckb status
对于 Go 项目,CKB 使用 增量索引,只处理更改的文件,使更新速度更快。
完整文档请查看 索引管理指南。
功能特性
| 功能 |
描述 |
| 复合操作 |
explore、understand、prepareChange — 单调用工具,可将人工智能开销减少 60 - 70% |
| 代码导航 |
语义搜索、调用图、跟踪使用情况、查找入口点 |
| 影响分析 |
影响范围、风险评分、受影响测试、重大变更(compareAPI) |
| 架构理解 |
模块概述、架构决策记录(ADRs)、依赖图、解释起源 |
| 所有权管理 |
CODEOWNERS + git blame、审核人建议、漂移检测 |
| 代码质量 |
死代码检测(findDeadCode)、耦合分析、复杂度分析 |
| 安全 |
机密检测、凭证扫描、白名单 |
| 文档智能 |
文档 - 符号链接、陈旧性检测、覆盖率指标 |
| 多仓库支持 |
联合、API 契约、远程索引服务 |
| 运行时智能 |
OpenTelemetry 集成、观察到的使用情况、生产环境死代码 |
| 流式处理 |
findReferences、searchSymbols 的服务器发送事件(SSE)流式处理,实时显示进度 |
| 自动化 |
守护模式、监控模式、网络钩子、增量索引 |
📖 完整功能指南 — 详细文档及示例
📋 更新日志 — 版本历史
CLI 命令
ckb status
ckb search Handler
ckb diff-summary
ckb hotspots
ckb arch
ckb ownership
ckb mcp
v8.0 复合操作(通过 MCP):
explore
understand
prepareChange
batchGet
batchSearch
📖 用户指南 — 所有 CLI 命令和选项
HTTP API
ckb serve --port 8080
curl http://localhost:8080/health
curl http://localhost:8080/status
curl "http://localhost:8080/search?q=NewServer"
curl http://localhost:8080/architecture
curl "http://localhost:8080/ownership?path=internal/api"
curl http://localhost:8080/hotspots
ckb serve --port 8080 --index-server --index-config config.toml
curl http://localhost:8080/index/repos
curl http://localhost:8080/index/repos/company%2Fcore-lib/meta
curl "http://localhost:8080/index/repos/company%2Fcore-lib/symbols?limit=100"
curl "http://localhost:8080/index/repos/company%2Fcore-lib/search/symbols?q=Handler"
curl -X POST http://localhost:8080/index/repos \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ckb_xxx" \
-d '{"id":"my-org/my-repo","name":"My Repo"}'
gzip -c index.scip | curl -X POST http://localhost:8080/index/repos/my-org%2Fmy-repo/upload \
-H "Content-Encoding: gzip" \
-H "Authorization: Bearer ckb_xxx" \
--data-binary @-
ckb token create --name "ci-upload" --scope upload
ckb token list
ckb token revoke ckb_xxx
ckb token rotate ckb_xxx
MCP 集成
CKB 可与任何支持 MCP 的人工智能编码工具配合使用。
Claude Code
npx @tastehub/ckb setup
npx @tastehub/ckb setup --global
或者手动添加到 .mcp.json:
{
"mcpServers": {
"ckb": {
"command": "npx",
"args": ["@tastehub/ckb", "mcp"]
}
}
}
Cursor
添加到 ~/.cursor/mcp.json(全局)或 .cursor/mcp.json(项目):
{
"mcpServers": {
"ckb": {
"command": "npx",
"args": ["@tastehub/ckb", "mcp"]
}
}
}
Windsurf
添加到 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"ckb": {
"command": "npx",
"args": ["@tastehub/ckb", "mcp"]
}
}
}
VS Code
添加到你的 VS Code settings.json:
{
"mcp": {
"servers": {
"ckb": {
"type": "stdio",
"command": "npx",
"args": ["@tastehub/ckb", "mcp"]
}
}
}
}
OpenCode
添加到项目根目录的 opencode.json:
{
"mcp": {
"ckb": {
"type": "local",
"command": ["npx", "@tastehub/ckb", "mcp"],
"enabled": true
}
}
}
Grok
npx @tastehub/ckb setup --tool=grok
npx @tastehub/ckb setup --tool=grok --global
或者手动添加到 .grok/settings.json(项目)或 ~/.grok/user-settings.json(全局):
{
"mcpServers": {
"ckb": {
"name": "ckb",
"transport": "stdio",
"command": "npx",
"args": ["@tastehub/ckb", "mcp"]
}
}
}
Claude Desktop
Claude Desktop 没有项目上下文,因此你必须指定仓库路径。
自动配置(推荐):
cd /path/to/your/repo
ckb setup --tool=claude-desktop
手动配置 — 添加到 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"ckb": {
"command": "npx",
"args": ["-y", "@tastehub/ckb", "mcp"],
"env": {
"CKB_REPO": "/path/to/your/repo"
}
}
}
}
CKB_REPO 环境变量告诉 CKB 要分析哪个仓库。Claude Desktop 一次只能处理一个仓库。
Windows
在上述任何配置中使用 cmd /c 包装器:
{
"mcpServers": {
"ckb": {
"command": "cmd",
"args": ["/c", "npx", "@tastehub/ckb", "mcp"]
}
}
}
预设(令牌优化)
CKB 提供 80 多个工具,但大多数会话只需要其中一部分。使用预设可以将令牌开销减少多达 83%:
ckb mcp --list-presets
ckb mcp
ckb mcp --preset=core
ckb mcp --preset=review
ckb mcp --preset=refactor
ckb mcp --preset=federation
ckb mcp --preset=docs
ckb mcp --preset=ops
ckb mcp --preset=full
在 MCP 配置中:
{
"mcpServers": {
"ckb": {
"command": "npx",
"args": ["@tastehub/ckb", "mcp", "--preset=review"]
}
}
}
人工智能可以在会话中使用 expandToolset 工具动态扩展工具集。
🔧 技术细节
底层原理
CKB 协调多个代码智能后端:
- SCIP:精确的预索引符号数据(最快)
- LSP:实时语言服务器查询
- Git:blame、历史记录、变更分析、所有权
结果会智能合并并压缩,以适应大语言模型(LLM)的上下文限制。
持久知识在会话之间保持有效:
- 模块注册表:边界、职责、标签
- 所有权注册表:CODEOWNERS + git blame,并考虑时间衰减
- 热点跟踪器:带有趋势分析的历史快照
- 决策日志:支持全文搜索的架构决策记录(ADRs)
适用人群
- 使用人工智能助手的开发者:为你的人工智能工具赋予强大能力
- 拥有大型代码库的团队:高效应对代码复杂性
- 进行代码重构的人员:在更改代码前了解影响
- 代码审核人员:全面了解代码变更
- 技术负责人:长期跟踪架构健康状况
局限性(客观说明)
CKB 的优势在于:
- 静态代码导航:查找定义、引用、调用图
- 安全重构的影响分析
- 所有权查找(CODEOWNERS + git blame)
- 架构和模块理解
CKB 无法提供帮助的方面:
- 动态调度/运行时行为(使用调试器)
- 未索引的生成代码
- 代码生成、代码检查或格式化
- 跨仓库调用(使用 联合 功能)
CKB 是静态分析工具,并非万能。在做出关键决策时,请始终阅读实际代码进行验证。
📖 实际限制 — 关于准确性、盲点以及何时信任结果的完整指南
📄 许可证
- 免费使用场景:个人使用、开源项目、年收入低于 25,000 美元的初创公司和小企业。
- 商业许可证要求:年收入超过 25,000 美元的组织需要商业许可证。请查看 定价 获取团队和企业计划,或查看 LICENSE 获取完整条款。