luuuc/sense
GitHub: luuuc/sense
一个本地运行的代码库结构理解引擎,通过构建符号关系图谱让 AI 工具获得资深工程师级别的代码库认知能力。
Stars: 2 | Forks: 1
# Sense ⠎⠑⠝⠎⠑
**任何工具均可查询的代码库理解能力。**
Sense 赋予你的 AI 工具对代码库的结构性理解。这种理解通常存在于资深工程师的脑海中,而 LLM 却必须在每次会话中从头重建。你的工具可以查询本地图谱,并获取关于代码库中存在什么、它们如何连接、修改会破坏什么以及项目遵循什么模式的精确答案。
一个二进制文件,一个索引,四项能力。无需 SaaS 账户,无需 API 密钥,无需云依赖。
## 安装
从[最新发布版本](https://github.com/luuuc/sense/releases/latest)下载适用于你操作系统的二进制文件,解压缩,然后将 `sense` 移动到你的 `PATH` 路径中的某个位置。
或者使用安装脚本(macOS 和 Linux,amd64 或 arm64):
```
curl -fsSL https://luuuc.github.io/sense/install.sh | sh
```
### 使用 Go (1.25+)
```
go install github.com/luuuc/sense/cmd/sense@latest
```
### 验证
```
sense version
sense scan # in any project directory
sense graph User # query the symbol graph
```
## 工作原理
Sense 使用 tree-sitter 解析你的代码库,提取符号(函数、类、模块、方法)及其关系(调用、导入、继承),使用内置的量化 ONNX 模型对每个符号进行嵌入,并将所有内容存储在 `.sense/` 目录下的本地 SQLite 索引中。
```
cd /path/to/project && sense scan
```
从那时起,你的 AI 工具就可以提出结构性问题:
```
sense graph "CheckoutService"
# => CheckoutService (app/services/checkout_service.rb:12)
# 调用: PaymentGateway.charge, Order.finalize
# 被调用者: OrdersController#create, CheckoutJob#perform
sense blast "User#email_verified?"
# => 直接调用者 (4),间接 (11),受影响的测试 (6)
# 风险: 中 (hub 节点,涉及 auth + admin)
sense search "error handling for payment failures"
# => app/services/payment_gateway.rb:45 (0.92)
# app/controllers/orders_controller.rb:78 (0.87)
sense conventions
# => Service 对象: 找到 12 个,均继承自 ApplicationService
# 测试模式: Minitest, fixtures,无 DB mocking
```
### MCP 工具
| 工具 | 能力 |
|---|---|
| `sense.graph` | 符号关系、调用者、被调用者、继承、测试 |
| `sense.search` | 混合语义与关键词搜索 |
| `sense.blast` | 影响半径、受影响的代码、受影响的测试、风险评分 |
| `sense.conventions` | 检测到的项目约定 |
| `sense.status` | 索引健康度、覆盖率、新鲜度、上次扫描 |
四项能力,加上用于索引健康检查的 `sense.status`。专注、可组合、不臃肿。
## MCP 设置
添加到你的 `.mcp.json` 文件中(适用于 Claude Code、Cursor 或任何支持 MCP 协议的工具):
```
{
"mcpServers": {
"sense": {
"command": "sense",
"args": ["mcp"]
}
}
}
```
Cursor 用户:请将相同的配置块放置在 `~/.cursor/mcp.json` 中。
## Claude Code 设置
通过 `.mcp.json` 连接 Sense 后,请将以下内容添加到项目的 `CLAUDE.md` 文件中,以便 Claude Code 主动使用 Sense:
```
## Sense (代码库理解)
Sense is connected as an MCP server. Load its tools via ToolSearch at the start
of any code exploration task. Call `sense.status` first to confirm the index is
healthy; fall back to grep/glob only if Sense is unavailable or the index is stale.
### 编写代码前
1. `sense.status` — confirm index health.
2. `sense.conventions` — check patterns for the domain you're working in.
3. `sense.search` — look for prior art before creating new code.
4. `sense.blast` — check scope of the symbols you're about to change.
### 编写代码时
- `sense.graph` — check callers before modifying a symbol's signature.
- `sense.search` — check for existing implementations before creating new ones.
### 完成工作后
- `sense.blast --diff HEAD~1` — verify the scope of your changes.
```
## 支持的语言
| 级别 | 语言 | 覆盖范围 |
|---|---|---|
| **级别 1 (完整)** | Ruby、Go、TypeScript、JavaScript | 完整图谱 + 感知框架的提取器 (Rails、Next.js、Go 标准库) |
| **级别 2 (标准)** | Python、Java、Rust | 完整图谱,无框架特定推断 |
| **级别 3 (基础)** | C/C++、PHP、Elixir、Swift、Kotlin | 符号 + 调用图,无继承推断 |
只需在基础的 tree-sitter 图谱之上编写一个感知框架的提取器,即可添加新的级别 1 语言。
## Sense 带来的价值
Sense 赋予你的 AI 工具对代码库的结构性理解。这种理解通常存在于资深工程师的脑海中,而 LLM 却必须在每次会话中从头重建。
- **注重语义而非字符串。** 你的 AI 基于实际结构进行推理,而不是对文件内容进行模式匹配,因此它对于什么与什么相连接会做出更少的错误假设。
- **派生而非手工整理。** 图谱会根据你的代码自动重建。无需维护本体,无需调整配置。
- **设计上只读。** Sense 只观察代码库。它从不修改代码库。你的编辑器和你的工具始终掌握控制权。
- **四项能力,仅此而已。** 符号图、语义搜索、影响半径、约定检测。Sense 将这些做得干净利落,并抵御向“包揽一切”发展的引力。
节省 Token?那只是自然而然的副产品。但真正的收益在于,你的 AI 不再猜测结构,而是开始真正了解它。
## 反馈
请在 [github.com/luuuc/sense/issues](https://github.com/luuuc/sense/issues) 提交问题。
## 开发
```
make build # build the binary
make test # run tests
make lint # run linters
make ci # all of the above
```
## 许可证
O'Saasy。采用类似 MIT 的许可证,但保留了 SaaS 竞争权利。详情请见[许可证](LICENSE)。
标签:AI开发工具, CNCF毕业项目, EVTX分析, LLM辅助编程, SEO检索词, SQLite, WebSocket, 代码图谱, 代码库理解, 代码搜索引擎, 代码结构解析, 代码规范检测, 依赖分析, 功能关键词, 向量化, 威胁情报, 嵌入模型, 开发者工具, 影响分析, 技术栈, 数据管道, 日志审计, 本地离线部署, 树状解析器, 自然语言代码搜索, 软件工程, 错误基检测, 静态代码分析