SimplyLiz/CodeMCP
GitHub: SimplyLiz/CodeMCP
CKB 将代码库转化为可查询的知识库,为 AI 助手、CLI 和 HTTP API 提供符号导航、影响分析和架构映射等代码智能服务。
Stars: 90 | Forks: 10
# CKB — Code Knowledge Backend
**了解您的代码。安全地进行更改。充满信心地交付。**
[](https://www.npmjs.com/package/@tastehub/ckb)
[](https://codeknowledge.dev)
[](https://codeknowledge.dev/docs)
[](https://crates.io/crates/lip-cli)
[](https://lip-sigma.vercel.app/docs)
CKB 将您的代码库转化为可查询的知识库。提出问题、了解影响、寻找负责人、检测死代码——这一切都可以通过 CLI、API 或 AI 助手来完成。
## 瞬间解答棘手问题
| 问题 | 无 CKB | 有 CKB |
|----------|-------------|----------|
| "如果我更改这个,会破坏什么?" | 用 Grep 碰运气 | 带有风险评分的精确影响范围 |
| "谁应该审查这个 PR?" | 靠 git blame 猜测 | 数据驱动的审查者建议 |
| "这段代码还在用吗?" | 删掉看看会不会出错 | 带置信度评分的死代码检测 |
| "我应该运行哪些测试?" | 全部运行(30分钟) | 仅运行受影响的测试(2分钟) |
| "这个系统是如何工作的?" | 读代码读上几小时 | 即刻查询架构 |
| "谁拥有这段代码?" | 手动搜索 CODEOWNERS | 带漂移检测的所有权归属 |
| "是否有暴露的密钥?" | 手动 grep 搜索模式 | 使用 26 种模式进行自动扫描 |
## 您可以做什么
🔍 **理解** — 语义搜索、调用图、用法追踪、架构图
⚡ **分析** — 影响分析、风险评分、热点检测、耦合分析
🛡️ **保护** — 受影响测试检测、破坏性变更警告、PR 风险评估
🔐 **安全** — 密钥检测、凭据扫描、安全敏感代码识别
👥 **协作** — 所有权查询、审查者建议、架构决策 (ADR)
📊 **改进** — 死代码检测、技术债务跟踪、文档覆盖率
🚀 **复合操作** — 单次调用工具(`explore`、`understand`、`prepareChange`)可减少 60-70% 的 AI 工具调用
🔗 **集成** — CLI、HTTP API、用于 AI 工具的 MCP、CI/CD 流水线、自定义脚本
## 立即体验
```
# 查看你的 codebase 中的风险
ckb hotspots --format=human
# 检查发生了什么更改以及哪些可能会出现故障
ckb diff-summary --format=human
# 扫描暴露的 secrets
ckb audit --format=human
# 一目了然地检查架构
ckb arch --format=human
# 检查系统状态
ckb status
```
## 无处不在
| AI 助手 | CI/CD | 您的工具 |
|---------------|-------|------------|
| Claude Code, Cursor, Windsurf, VS Code, Grok | GitHub Actions, GitLab CI | CLI, HTTP API, 脚本 |
通过智能预设**减少 83% 的 token**——仅加载您需要的工具。
```
# 一条命令即可连接到 Claude Code
ckb setup
```
## 了解更多
| 资源 | 描述 |
|----------|-------------|
| 📖 **[功能指南](https://github.com/SimplyLiz/CodeMCP/wiki/Features)** | 包含示例的完整功能列表 |
| 💬 **[提示词指南](https://github.com/SimplyLiz/CodeMCP/wiki/Prompt-Cookbook)** | 针对实际问题的真实提示词 |
| 🔌 **[集成指南](https://github.com/SimplyLiz/CodeMCP/wiki/Integration-Guide)** | 在您自己的工具和脚本中使用 CKB |
| ⚡ **[影响分析](https://github.com/SimplyLiz/CodeMCP/wiki/Impact-Analysis)** | 影响范围、受影响的测试、PR 风险 |
| 🔧 **[CI/CD 集成](https://github.com/SimplyLiz/CodeMCP/wiki/CI-CD-Integration)** | GitHub Actions、GitLab CI 模板 |
## 快速开始
### 选项 1: npm(推荐)
```
# 全局安装
npm install -g @tastehub/ckb
# 或者直接使用 npx 运行(无需安装)
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
```
### 设置
```
# 1. 在你的项目中初始化
cd /path/to/your/project
ckb init # or: npx @tastehub/ckb init
# 2. 生成 SCIP index(可选但推荐)
ckb index # auto-detects language and runs appropriate indexer
# 3. 连接到 Claude Code
ckb setup # creates .mcp.json automatically
# 或者手动:
claude mcp add --transport stdio ckb -- npx @tastehub/ckb mcp
```
**启动时显示的 Token 效率:**
```
CKB MCP Server v9.0.0
Active tools: 14 / 76 (18%)
Estimated context: ~1k tokens
Preset: core
```
现在 Claude 可以回答如下问题:
- *"什么调用了 HandleRequest 函数?"*
- *"如何从 API 访问到 ProcessPayment?"*
- *"如果我更改 UserService,影响范围有多大?"*
- *"谁拥有 internal/api 模块?"*
- *"这段遗留代码还在使用吗?"*
## 为什么选择 CKB?
| 无 CKB | 有 CKB |
|-------------|----------|
| AI 使用 grep 匹配模式 | AI 进行语义导航 |
| "我找到了 47 个 Handler 的匹配项" | "HandleRequest 被 3 个路由通过 CheckoutService 调用" |
| 猜测影响程度 | 带风险评分的明确影响范围 |
| 阅读整个文件以获取上下文 | 准确获取相关内容 |
| "这是谁负责的?" → 搜索 CODEOWNERS | 即时所有权归属与审查者建议 |
| "更改这个安全吗?" → 听天由命 | 热点趋势 + 影响分析 |
## 三种使用方式
| 接口 | 最适用场景 |
|-----------|----------|
| **[MCP](https://github.com/SimplyLiz/CodeMCP/wiki/MCP-Integration)** | AI 辅助开发 — Claude、Cursor、Windsurf、VS Code、OpenCode、Grok |
| **[CLI](https://github.com/SimplyLiz/CodeMCP/wiki/User-Guide)** | 从终端快速查找、脚本编写 |
| **[HTTP API](https://github.com/SimplyLiz/CodeMCP/wiki/API-Reference)** | IDE 插件、CI 集成、自定义工具 |
## 索引的工作原理
CKB 使用 **SCIP 索引**来理解您的代码。可以将其想象成一个数据库,它知道每个函数定义的位置、谁调用了它,以及所有事物是如何连接的。
### 基础知识
```
# 1. 生成 index(自动检测语言)
ckb index
# 2. 检查你的 index 是否为最新
ckb status
```
如果没有索引,CKB 仍然可以使用 tree-sitter 解析(基础模式)工作,但有了索引,您可以获得:
- 跨文件引用(“谁调用了这个函数?”)
- 精确的影响分析
- 调用图导航
### 语言支持
并非所有语言都处于同等地位。CKB 根据索引器的成熟度将语言划分为**质量层级**:
| 层级 | 质量 | 语言 |
|------|---------|-----------|
| **Tier 1** | 完整支持,包含所有功能 | Go |
| **Tier 2** | 完整支持,存在少量边缘情况 | TypeScript, JavaScript, Python |
| **Tier 3** | 基础支持,调用图可能不完整 | Rust, Java, Kotlin, C++, Ruby, Dart |
| **Tier 4** | 实验性支持 | C#, PHP |
**主要限制:**
- **增量索引**仅支持 Go。其他语言需要完全重新索引。
- **TypeScript monorepos** 可能需要 `--infer-tsconfig` 标志
- **C/C++** 需要 `compile_commands.json`
- **Python** 在激活的虚拟环境中效果最佳
运行 `ckb doctor --tier standard` 以检查您的语言工具是否已正确安装。
有关索引器安装、已知问题和完整功能矩阵,请参阅 **[语言支持](https://github.com/SimplyLiz/CodeMCP/wiki/Language-Support)**。
### 保持索引最新
当您进行提交时,索引会变得陈旧。CKB 提供了多种保持最新的方法:
| 方法 | 命令 | 何时使用 |
|--------|---------|-------------|
| 手动 | `ckb index` | 一次性更新、脚本 |
| 监视模式 | `ckb index --watch` | 开发期间自动刷新 |
| MCP 监视 | `ckb mcp --watch` | AI 会话期间自动刷新 |
| CI webhook | `POST /api/v1/refresh` | 从 CI/CD 触发 |
**AI 会话的快速启动:**
```
ckb mcp --watch # Auto-reindexes every 30s when stale
```
**检查陈旧状态:**
```
ckb status
# 显示:"5 commits behind HEAD" 或 "Up to date"
```
对于 Go 项目,CKB 使用**增量索引**——仅处理更改的文件,从而使更新非常迅速。
有关完整文档,请参阅 **[索引管理指南](https://github.com/SimplyLiz/CodeMCP/wiki/Index-Management)**。
## 功能
| 功能 | 描述 |
|---------|-------------|
| [**复合操作**](https://github.com/SimplyLiz/CodeMCP/wiki/Features#compound-operations) | `explore`、`understand`、`prepareChange` — 单次调用即可减少 60-70% AI 开销的工具 |
| [**代码导航**](https://github.com/SimplyLiz/CodeMCP/wiki/Features#code-navigation--discovery) | 语义搜索、调用图、追踪用法、查找入口点 |
| [**影响分析**](https://github.com/SimplyLiz/CodeMCP/wiki/Features#impact-analysis--safety) | 影响范围、风险评分、受影响的测试、破坏性变更 (`compareAPI`) |
| [**架构**](https://github.com/SimplyLiz/CodeMCP/wiki/Features#architectural-understanding) | 模块概览、ADR、依赖图、来源说明 |
| [**所有权**](https://github.com/SimplyLiz/CodeMCP/wiki/Features#ownership--review) | CODEOWNERS + git blame、审查者建议、漂移检测 |
| [**代码质量**](https://github.com/SimplyLiz/CodeMCP/wiki/Features#code-quality--risk) | 死代码检测 (`findDeadCode`)、耦合分析、复杂度 |
| [**安全**](https://github.com/SimplyLiz/CodeMCP/wiki/Security) | 密钥检测、凭据扫描、白名单 |
| [**文档**](https://github.com/SimplyLiz/CodeMCP/wiki/Features#documentation-intelligence) | 文档-符号链接、陈旧检测、覆盖率指标 |
| [**多仓库**](https://github.com/SimplyLiz/CodeMCP/wiki/Features#multi-repo--federation) | 联邦、API 契约、远程索引服务 |
| [**运行时**](https://github.com/SimplyLiz/CodeMCP/wiki/Features#runtime-intelligence) | OpenTelemetry 集成、观察到的用法、生产环境死代码 |
| [**流式传输**](https://github.com/SimplyLiz/CodeMCP/wiki/Features#streaming) | 针对 `findReferences`、`searchSymbols` 的 SSE 流式传输,提供实时进度 |
| [**自动化**](https://github.com/SimplyLiz/CodeMCP/wiki/Features#automation--cicd) | 守护进程模式、监视模式、webhook、增量索引 |
📖 **[完整功能指南](https://github.com/SimplyLiz/CodeMCP/wiki/Features)** — 包含示例的详细文档
📋 **[更新日志](https://github.com/SimplyLiz/CodeMCP/blob/main/CHANGELOG.md)** — 版本历史
## PR 审查
CKB 审查可在 5 秒内运行 20 项质量检查——包括密钥、破坏性变更、死代码、复杂度、测试缺口、Bug 模式等。零 token 消耗,零 API 调用。
当您的 AI 助手(Claude Code、Cursor、Windsurf)审查 PR 时,它会首先调用 CKB 并在大约 1k 个 token 内获得结构化分析。然后它只会读取重要的文件——在大型 PR 上可**节省 50-80% 的 token**。
```
ckb review --base=main # Human-readable review
ckb review --base=main --ci # CI mode (exit codes)
ckb review --base=main --post=123 # Post as PR comment
```
在没有 LLM 的 CI 环境中也可运行:
```
- run: npx @tastehub/ckb review --base=main --ci --format=sarif > review.sarif
```
| | 无 CKB | 有 CKB |
|---|---|---|
| 100 文件 PR 上的 LLM token | ~200k | ~50k |
| LLM 读取的文件 | 全部 | ~10(CKB 标记的文件) |
| 是否检查密钥/破坏性变更/死代码 | 否 | 是(所有文件) |
📖 [**它如何帮助 AI 审查**](docs/marketing/ckb-review/how-it-helps-llm.md) · [**基准测试**](docs/marketing/ckb-review/benchmarks.md) · [**CI 集成**](docs/marketing/ckb-review/ci-integration.md) · [**快速开始**](docs/marketing/ckb-review/quickstart.md)
## CLI
```
ckb status # System health (with remediation suggestions)
ckb search Handler # Find symbols
ckb diff-summary # Analyze what changed
ckb hotspots # Risky areas
ckb arch # Architecture overview
ckb ownership # File/path ownership
ckb mcp # Start MCP server
```
**v9.0 复合操作(通过 MCP):**
```
# 这些 tools 将多个查询组合成单次调用
explore # Area exploration: symbols, dependencies, hotspots
understand # Symbol deep-dive: refs, callers, explanation
prepareChange # Pre-change analysis: impact, tests, risk
batchGet # Fetch up to 50 symbols at once
batchSearch # Run up to 10 searches at once
```
📖 **[用户指南](https://github.com/SimplyLiz/CodeMCP/wiki/User-Guide)** — 所有 CLI 命令和选项
## HTTP API
```
# 启动 HTTP server
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
# Index Server Mode (v7.3) - 将 indexes 提供给远程 clients
ckb serve --port 8080 --index-server --index-config config.toml
# Index server endpoints
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"
# Upload endpoints(带有压缩 + auth)
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 @-
# Token 管理(index server 管理员)
ckb token create --name "ci-upload" --scope upload # Create API key
ckb token list # List all tokens
ckb token revoke ckb_xxx # Revoke a token
ckb token rotate ckb_xxx # Rotate (new secret, same ID)
```
## MCP 集成
CKB 可与任何兼容 MCP 的 AI 编码工具配合使用。
## 底层原理
CKB 编排了多个代码智能后端:
- **SCIP** — 精确的、预索引的符号数据(最快)
- **LSP** — 实时语言服务器查询
- **Git** — Blame、历史记录、变更分析、所有权
- **LIP** — 用于最近邻搜索和重新排序的语义嵌入守护程序(可选,推荐)
结果会被智能合并,并针对 LLM 上下文限制进行压缩。
持久化知识可跨会话保留:
- **模块注册表** — 边界、职责、标签
- **所有权注册表** — CODEOWNERS + 带时间衰减的 git blame
- **热点追踪器** — 带趋势分析的历史快照
- **决策日志** — 带全文搜索的 ADR
## 谁应该使用 CKB?
- **使用 AI 助手的开发者** — 赋予您的 AI 工具超能力
- **拥有大型代码库的团队** — 高效应对复杂性
- **任何进行重构的人** — 在更改之前了解影响
- **代码审查者** — 全面了解更改情况
- **技术负责人** — 随时追踪架构健康状况
## 局限性(实话实说)
**CKB 的强项:**
- 静态代码导航——查找定义、引用、调用图
- 用于安全重构的影响分析
- 所有权查询(CODEOWNERS + git blame)
- 架构和模块理解
**CKB 无法提供帮助的方面:**
- 动态分派/运行时行为(请使用调试器)
- 未被索引的生成代码
- 代码生成、代码检查或格式化
- 跨仓库调用(请使用[联邦](https://github.com/SimplyLiz/CodeMCP/wiki/Federation))
📖 **[实际限制](https://github.com/SimplyLiz/CodeMCP/wiki/Practical-Limits)** — 关于准确性、盲区以及何时应信任结果的完整指南
## 文档
请参阅 **[完整文档 Wiki](https://github.com/SimplyLiz/CodeMCP/wiki)** 了解:
- [快速开始](https://github.com/SimplyLiz/CodeMCP/wiki/Quick-Start) — 分步安装
- [提示词指南](https://github.com/SimplyLiz/CodeMCP/wiki/Prompt-Cookbook) — 针对实际问题的真实提示词
- [语言支持](https://github.com/SimplyLiz/CodeMCP/wiki/Language-Support) — SCIP 索引器和支持层级
- [实际限制](https://github.com/SimplyLiz/CodeMCP/wiki/Practical-Limits) — 准确性说明、盲区
- [用户指南](https://github.com/SimplyLiz/CodeMCP/wiki/User-Guide) — CLI 命令和最佳实践
- [索引管理](https://github.com/SimplyLiz/CodeMCP/wiki/Index-Management) — 索引的工作原理、自动刷新方法
- [增量索引](https://github.com/SimplyLiz/CodeMCP/wiki/Incremental-Indexing) — 针对 Go 项目的快速索引更新
- [文档-符号链接](https://github.com/SimplyLiz/CodeMCP/wiki/Doc-Symbol-Linking) — 文档中的符号检测、陈旧检查
- [身份验证](https://github.com/SimplyLiz/CodeMCP/wiki/Authentication) — API token、作用域、速率限制
- [MCP 集成](https://github.com/SimplyLiz/CodeMCP/wiki/MCP-Integration) — Claude Code 设置、80 多种工具
- [API 参考](https://github.com/SimplyLiz/CodeMCP/wiki/API-Reference) — HTTP API 文档
- [守护进程模式](https://github.com/SimplyLiz/CodeMCP/wiki/Daemon-Mode) — 常驻服务、调度器、Webhook
- [配置](https://github.com/SimplyLiz/CodeMCP/wiki/Configuration) — 包含 MODULES.toml 在内的所有选项
- [架构](https://github.com/SimplyLiz/CodeMCP/wiki/Architecture) — 系统设计和组件
- [安全](https://github.com/SimplyLiz/CodeMCP/wiki/Security) — 密钥检测、凭据扫描
- [遥测](https://github.com/SimplyLiz/CodeMCP/wiki/Telemetry) — 运行时可观测性、死代码检测
- [联邦](https://github.com/SimplyLiz/CodeMCP/wiki/Federation) — 跨仓库查询
- [CI/CD 集成](https://github.com/SimplyLiz/CodeMCP/wiki/CI-CD-Integration) — GitHub Actions、PR 分析
## 环境要求
**使用 npm(推荐):**
- Node.js 16+
- Git
**从源码构建:**
- Go 1.21+
- Git
**可选(用于增强分析):**
- 适用于您所用语言的 SCIP 索引器 (scip-go、scip-typescript 等) — 运行 `ckb index` 自动安装
- [LIP v2.0](https://lip-sigma.vercel.app) 语义嵌入守护程序(需要 Rust/cargo)— 强烈建议安装以获得最佳搜索质量([文档](https://lip-sigma.vercel.app/docs)、[crates.io](https://crates.io/crates/lip-cli)):
cargo install lip-cli
lip daemon --socket ~/.local/share/lip/lip.sock
## 许可证
**免费用于:**
- 个人使用
- 开源项目
- 年收入低于 $25k 的初创公司和小型企业
年收入达到或超过 $25k 的组织**需要商业许可证**。有关团队版和企业版计划,请参阅[定价](https://codeknowledge.dev/pricing),或查看 [LICENSE](LICENSE) 了解完整条款。
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"] } } } ```预设(Token 优化)
CKB 提供了 80 多种工具,但大多数会话只需要其中的一部分。使用预设可以减少高达 83% 的 token 开销: ``` # 列出所有可用的 presets 及 tool 数量和 token 估算 ckb mcp --list-presets # 默认值:core preset(14 个基本 tools) ckb mcp # 针对特定工作流的 presets ckb mcp --preset=core # 14 tools - search, explain, impact (default) ckb mcp --preset=review # 19 tools - core + diff, ownership ckb mcp --preset=refactor # 19 tools - core + coupling, dead code ckb mcp --preset=federation # 28 tools - core + cross-repo ckb mcp --preset=docs # 20 tools - core + doc-symbol linking ckb mcp --preset=ops # 25 tools - core + jobs, webhooks, metrics ckb mcp --preset=full # 80+ tools - all tools (legacy) ``` 在 MCP 配置中: ``` { "mcpServers": { "ckb": { "command": "npx", "args": ["@tastehub/ckb", "mcp", "--preset=review"] } } } ``` AI 可以在会话中途使用 `expandToolset` 工具动态扩展工具集。标签:AI编程助手, EVTX分析, HTTP API, IP 地址批量处理, LNA, MCP服务端, MITM代理, NPM包, OSV-Scalibr, Rust, StruQ, 云安全监控, 云资产清单, 代码分析, 代码安全审查, 代码所有权, 代码搜索, 代码智能, 代码知识库, 代码质量管理, 凭证管理, 可视化界面, 威胁情报, 安全扫描, 对抗攻击, 开发者工具, 影响分析, 敏感信息检测, 日志审计, 时序注入, 架构映射, 死代码检测, 测试影响分析, 用户代理, 符号导航, 网络安全审计, 网络安全研究, 网络流量审计, 调用图, 逆向工程, 静态分析, 风险评分