xiaoletian64/obs-code
GitHub: xiaoletian64/obs-code
obs-code 为 AI 编程助手提供代码知识图谱能力,在修改代码前精准分析调用链和影响范围,防止改动遗漏导致线上故障。
Stars: 4 | Forks: 0
obs-code
代码知识图谱
让 AI 改代码之前,先知道改哪里会牵连什么
## 没有 obs-code vs 有 obs-code
|
### ❌ 没有 obs-code
```
你说:修复用户登录的 bug
AI 的做法:
1. 读 200 个文件
2. 上下文爆了
3. 改了 handleLogin
4. 但不知道 authRouter 也调了它
5. 线上炸了 💥
结果:改了 A,B 炸了
```
|
### ✅ 有 obs-code
```
你说:修复用户登录的 bug
AI 的做法:
1. obs_impact("handleLogin")
2. 精准知道 3 个调用方
3. 知道 2 个被调用方
4. 只看 5 个文件
5. 改完安全上线 🚀
结果:改一个,不漏一个
```
|
## 核心能力矩阵

符号定位
5 级降级搜索 精确→模糊→全文→中文→多维
|

影响分析
BFS 调用图遍历 调用者+被调用者+源码
|

修改计划
需求→文件清单 直接交给 AI 编辑
|

功能地图
功能→阅读链路 分阶段+风险报告
|

LLM Wiki
自动生成文档 30秒了解任何项目
|

可视化
力导向图谱动画 交互式探索
|

业务域分析
识别业务域 提取业务流程
|

学习之旅
引导式架构演练 按依赖顺序学习
|

语义搜索
按名称和含义搜索 意图识别+多维度
|

差异分析
变更影响评估 风险等级预测
|

分层可视化
架构层自动分组 层间连接分析
|

概念解释
12种编程模式 上下文解释
|
## 工作流对比
```
┌─────────────────────────────────────────────────────────────────┐
│ 传统 AI 改代码流程 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 需求 ──→ 读全仓库 ──→ 上下文爆 ──→ 瞎猜 ──→ 改漏 ──→ 💥 │
│ │
│ 耗时:30min+ │ 正确率:40-60% │ 遗漏率:高 │
│ │
└─────────────────────────────────────────────────────────────────┘
⬇️ obs-code ⬇️
┌─────────────────────────────────────────────────────────────────┐
│ obs-code 增强流程 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 需求 ──→ obs_plan ──→ 精准文件清单 ──→ AI 只读相关文件 ──→ ✅ │
│ │ │
│ ├─→ obs_impact ──→ 调用链 ──→ 知道牵连 ──→ ✅ │
│ │ │
│ └─→ obs_feature_map ──→ 阅读链路 ──→ 不遗漏 ──→ ✅ │
│ │
│ 耗时:2min │ 正确率:85-95% │ 遗漏率:极低 │
│ │
└─────────────────────────────────────────────────────────────────┘
```
## 性能基准
|
### 索引速度
| 项目 | 规模 | 节点 | 边 | 速度 |
|------|------|------|-----|------|
| Express | 简单 | 376 | 6 | 15 f/s |
| Axios | 中等 | 636 | 1,224 | 267 f/s |
| **NestJS** | **复杂** | **5,977** | **11,580** | **244 f/s** |
| **Vitest** | **大型** | **10,054** | **6,143** | **33 f/s** |
|
### 搜索策略链(5 级降级)
```
Level 1 精确匹配 ━━━━━━━━━━━━━━━━━ O(1)
Level 2 模糊匹配 ━━━━━━━━━━━━━━━ FTS5
Level 3 全文搜索 ━━━━━━━━━━━━━ name+doc
Level 4 中文同义词 ━━━━━━━━━━━ 拼音+模糊
Level 5 多维组合 ━━━━━━━━━ 拆分+前后缀
```
每个级别都支持:`file_types` `directories` `symbol_types` `regex`
|
## LLM Wiki — 30 秒看懂任何项目
```
.obs-code/wiki/
├── AGENTS.md ─→ AI 工具读这个:什么时候用哪个工具
├── project.md ─→ 项目概览:语言、规模、关键文件
├── architecture.md ─→ 架构:分层、模式、入口点
├── connections.md ─→ 连接:Hub / Bridge / 主调用链
└── manifest.json ─→ 元数据:索引时间、统计
```
**connections.md 自动生成的调用链热点:**
```
## Hubs(高扇入 — 改这里影响最大)
exec ← 被 30 处调用(SQL 执行核心)
parse ← 被 20 处调用(解析核心)
searchByName ← 被 11 处调用
## Bridges(跨层调用 — 集成测试重点)
feature-map → store 88 calls
graph-sync → store 12 calls
## Main Paths(主调用链 — 理解核心逻辑)
buildFeatureMap → readCandidates → getById → rowToNode
```
## 索引可信度证据
obs-code 现在把 CodeGraph 的“先定义扫描边界”思路融合进索引链路:每次索引都会产出结构化 `indexEvidence`,让 AI 和人都能确认“这次图谱到底扫了什么、跳过了什么”。
```
{
"filesScanned": 149,
"bytesScanned": 1064907,
"skippedDirectories": [
{ "path": "node_modules", "reason": "default_exclude" },
{ "path": "datasets/feature-map-benchmark/real-projects", "reason": "default_exclude" }
]
}
```
- CLI / MCP / Web UI 三条链路都能传递索引证据
- 默认跳过依赖、构建产物、缓存、fixture、benchmark 真实项目,避免分析图被外部仓库污染
- Web 可视化提供“分析证据”面板,修改前先看扫描范围和跳过原因
- 直接索引某个真实项目根目录时仍会正常分析,不影响 benchmark 单仓库评测
## 核心架构
```
┌─────────────────────────────────────────────────────────────────┐
│ AI 工具层 │
│ Claude Code · Cursor · Codex · OpenCode │
│ ↕ MCP 协议 (stdio/SSE) │
├─────────────────────────────────────────────────────────────────┤
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │obs_find │ │obs_impact│ │obs_plan │ │obs_feature_map │ │
│ │符号搜索 │ │影响分析 │ │需求→计划 │ │功能→阅读链路 │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────────┬─────────┘ │
│ └─────────────┴───────────┴─────────────────┘ │
│ │ 多策略搜索链 │
│ 精确 → 模糊 → FTS5全文 → 中文同义词 → 多维组合 │
├─────────────────────────────────┬───────────────────────────────┤
│ 图谱引擎 │ │
│ ┌────────────┐ ┌────────────┐ │ ┌──────────────┐ │
│ │ 节点查询 │ │ 边遍历 │ │ │ 影响传播引擎 │ │
│ │ getById │ │ getBySource│ │ │ BFS+规则驱动 │ │
│ │ searchBy │ │ getByTarget│ │ │ AI 剪枝 │ │
│ └────────────┘ └────────────┘ │ └──────────────┘ │
├─────────────────────────────────┼───────────────────────────────┤
│ SQLite (WAL + FTS5) │ │
│ nodes · edges · nodes_fts · file_hashes │
├─────────────────────────────────────────────────────────────────┤
│ 解析层 │
│ Tree-sitter (Go/Rust/Java/C++) · 增强正则 (TS/JS/Python) │
│ 文件监听 (chokidar) · 增量重解析 │
├─────────────────────────────────────────────────────────────────┤
│ 代码仓库 — 14 种语言 │
│ TS · JS · Python · Go · Rust · Java · Swift · Kotlin │
│ PHP · Ruby · C# · Dart · C/C++ · Lua │
└─────────────────────────────────────────────────────────────────┘
```
## 竞品对比
| 功能 | CodeGraph | Understand-Anything | obs-code |
|------|-----------|---------------------|----------|
| **语言支持** | 20+ | 10+ | 15 |
| **框架路由** | 14 | 5+ | 14 |
| **文件监听器** | ✅ | ✅ | ✅ |
| **增量同步** | ✅ | ✅ | ✅ |
| **业务域分析** | ❌ | ✅ | ✅ |
| **学习之旅** | ❌ | ✅ | ✅ |
| **语义搜索** | ❌ | ✅ | ✅ |
| **差异分析** | ❌ | ✅ | ✅ |
| **分层可视化** | ❌ | ✅ | ✅ |
| **概念解释** | ❌ | ✅ | ✅ |
| **死代码检测** | ❌ | ❌ | ✅ |
| **线程分析** | ❌ | ❌ | ✅ |
| **自然语言计划** | ❌ | ❌ | ✅ |
| **中文优化** | ❌ | ❌ | ✅ |
**obs-code = CodeGraph + Understand-Anything + 独特功能**
## 安装
```
curl -fsSL https://raw.githubusercontent.com/xiaoletian64/obs-code/main/install.sh | bash
```
```
obs install --tool claude # Claude Code
obs install --tool codex # OpenAI Codex
obs install --tool cursor # Cursor
obs install --tool opencode # OpenCode
obs install --tool micode # MiMo Code
obs install --tool all # 全部
```
## 3 步上手
```
# 1. 索引
obs index /你的项目路径
# 2. 启动 MCP 服务
obs serve --mcp
# 3. 在 AI 工具里直接说
请用obs分析 用户登录流程
```
AI 工具接入后默认建议使用中文输出:分析结论、修改计划、风险说明用中文;代码符号、文件路径、命令保持原文,避免翻译后失真。
## 工具矩阵
| 场景 | 工具 | 输入 | 输出 |
|------|------|------|------|
| 🔍 找符号 | `obs_find` | 符号名 | 文件:行号 |
| 🔗 查影响 | `obs_impact` | 符号名 | 调用者+被调用者+源码 |
| 📋 做需求 | `obs_plan` | 自然语言 | 修改文件清单(abs_path) |
| 🗺️ 读功能 | `obs_feature_map` | 功能名 | 分阶段阅读链路 |
| 🧵 查入口 | `obs_thread` | — | 入口→路由→目标 |
| 🛤️ 找路由 | `obs_routes` | — | HTTP 路由+调用链 |
| 🗑️ 清死码 | `obs_deadcode` | — | 零调用函数 |
| 📚 生文档 | `llm_wiki_generator` | — | project/arch/conn.md |
| 🏢 析业务 | `obs_domain` | — | 业务域+流程+步骤 |
| 🎯 导学习 | `obs_tour` | — | 引导式学习之旅 |
| 🔍 语搜搜 | `obs_semantic_search` | 查询 | 语义搜索结果 |
| 📊 差异分析 | `obs_diff` | — | 变更影响+风险等级 |
| 🏗️ 分层图 | `obs_layers` | — | 架构层可视化 |
| 💡 概念解释 | `obs_concepts` | — | 编程模式解释 |
## Web 可视化
```
obs web /你的项目路径
# http://localhost:3456
```
- Cytoscape.js 力导向布局 + 800ms 动画
- 节点 hover 放大 + 关联边高亮
- 点击聚焦平滑缩放 + 详情面板
- AI 解释按钮 + 功能梳理阅读链
- 分析证据面板:显示索引范围、跳过目录、扫描文件数
## 支持的语言
| TypeScript |
JavaScript |
Python |
Go |
Rust |
Java |
Swift |
| Kotlin |
PHP |
Ruby |
C# |
Dart |
C/C++ |
Lua |
**让 AI 改代码从"盲人摸象"变成"精准手术"**
[](https://github.com/xiaoletian64/obs-code)
[](https://github.com/xiaoletian64/obs-code/issues)
标签:AI辅助编程, Homebrew安装, MCP, SOC Prime, 上下文管理, 云安全监控, 代码知识图谱, 开发工具, 影响分析, 自动化攻击, 静态分析