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, 代码图谱, 代码库理解, 代码搜索引擎, 代码结构解析, 代码规范检测, 依赖分析, 功能关键词, 向量化, 威胁情报, 嵌入模型, 开发者工具, 影响分析, 技术栈, 数据管道, 日志审计, 本地离线部署, 树状解析器, 自然语言代码搜索, 软件工程, 错误基检测, 静态代码分析