idxoid/surgical_context

GitHub: idxoid/surgical_context

一个本地优先的代码上下文引擎,结合图数据库与向量检索,为开发者及 AI 编程助手提供精准的代码理解和变更影响分析能力。

Stars: 0 | Forks: 0

# Surgical Context **Surgical Context 是一个本地优先、与模型无关的上下文引擎**,用于代码理解和变更影响分析 —— 这是一个基于 FastAPI 的 context_engine,运行在本地 Neo4j 图数据库、LanceDB 向量和 SQLite 历史记录之上,提供 `Ask / Inspect / Impact` 检索 API。`extension/` 下的 VS Code 扩展是该 API 的一个前端,而不是产品本身。 本仓库包含以引擎优先开发路线的当前产品和技术文档。 ## 快速导航 ### **了解系统** - **[architectura.md](docs/architectura.md)** — 各个部分如何协同工作(从这里开始) - **[DOCS_STYLE_GUIDE.md](docs/DOCS_STYLE_GUIDE.md)** — 文档类型(Spec / Architecture / Concept / Design draft) - **[concept.md](docs/concept.md)** — 简明产品标识(指针文档) - **[idea_summary.md](docs/idea_summary.md)** — 单屏推介摘要(指针文档) ### **实现指南** **本地开发:** - **[local_development.md](docs/local_development.md)** — 本地设置、引导、context_engine 和扩展开发宿主 **代码索引:** - **[spec_indexer.md](docs/spec_indexer.md)** — 代码提取、调用类型确定、AFFECTS 重构 - **[spec_parser.md](docs/spec_parser.md)** — 语言适配器、符号提取 - **[role_catalog.md](docs/role_catalog.md)** — 结构角色词汇表(Pass 1) - **[role_predicates.md](docs/role_predicates.md)** — L1/L2 断言规则 (`role_cascade.py`) - **[role_clustering_architecture.md](docs/role_clustering_architecture.md)** — Pass-1 设计决策 **文档索引:** - **[spec_doc_indexer.md](docs/spec_doc_indexer.md)** — 分块、嵌入、DocAnchor 链接 - **[spec_doc_anchor.md](docs/spec_doc_anchor.md)** — FROM/COVERS 关系 **上下文组装:** - **[architectura.md](docs/architectura.md)** — 当前的端到端架构和检索流程 - **[axis_terminology.md](docs/axis_terminology.md)** — 轴检索(axis retrieval)、角色和遍历层的词汇表 - **[file_tier_signal.md](docs/file_tier_signal.md)** — 用于种子检索的结构化文件层级降级/提升 - **[walker_consolidation_plan.md](docs/walker_consolidation_plan.md)** — 轴图遍历统一(已实现) - **[spec_prompt_contract_observability.md](docs/spec_prompt_contract_observability.md)** — prompt contract 字段、trace metadata 和可观测性 **API 与基础设施:** - **[spec_sidecar_api.md](docs/spec_sidecar_api.md)** — FastAPI endpoints - **[mcp_server/README.md](mcp_server/README.md)** — 用于 LLM 聊天宿主的 MCP stdio server - **[spec_storage.md](docs/spec_storage.md)** — 当前的 Neo4j/LanceDB/SQLite 存储行为 - **[spec_storage_connectors.md](docs/spec_storage_connectors.md)** — 计划中的 Graph/Vector/History 提供者连接器层 - **[spec_language_adapter.md](docs/spec_language_adapter.md)** — 插件架构 (ADR-005) - **[spec_overlay.md](docs/spec_overlay.md)** — 内存中的脏状态(dirty state) - **[spec_tenant_api_graph.md](docs/spec_tenant_api_graph.md)** — 未来的 Team/Enterprise 租户级 API contract 图谱 **进阶主题:** - **[spec_eval_harness.md](docs/spec_eval_harness.md)** — 轴基准测试工具(axis benchmark harness)、问题包和 CI 门控 - **[question_structural_role_profiles.md](docs/question_structural_role_profiles.md)** — 黄金标准问题结构概况(设计草案) - **[logical_roles_structural_closure.md](docs/logical_roles_structural_closure.md)** — 逻辑角色与结构闭包值 - **[spec_embedding_versioning.md](docs/spec_embedding_versioning.md)** — 管理 embedding 模型版本 - **[spec_affects_index.md](docs/spec_affects_index.md)** — 反向依赖索引 ### **规划与审查** - **[road_map.md](docs/road_map.md)** — 阶段和时间表 ## 当前事实 此分支的目标是**本地、单租户配置**:引擎及其 VS Code 前端完全在单个开发者的机器上运行 —— 本地 Neo4j 图、本地 LanceDB 向量、本地 SQLite 历史记录,以及本地优先的 LLM 默认设置。访问接口是可互换的:同一个 context_engine API 可以为 VS Code 扩展、编程式/CLI 客户端以及 QA/基准测试工具提供服务。此配置是开源候选版本。 范围被刻意缩小:代码理解和变更影响分析 —— **而**不是通用的 AI 编码平台或多租户服务。 本仓库以引擎优先的方式组织:context_engine、默认 Neo4j/LanceDB 客户端、parser/indexer/axis 检索模块、结构角色检索、prompt-context 适配器、测试、QA 基准测试工具、指标、反馈遥测、持久化索引作业和有界索引队列构成了引擎;`extension/` 下的 VS Code 扩展是基于 context_engine API 的一个前端。 近期的强化工作增加了基于请求的 Neo4j 客户端视图(位于一个共享驱动程序之上)、类型化的 API 响应、JSON 安全的 SSE 框架、稳定的 UID v2、作用域调用解析、工作区作用域图查询、感知配置文件的索引命名空间、Git 增量失效助手、统一搜索、检索缓存、反馈令牌、context_engine API 的 endpoint 覆盖率,以及有界/合并的增量索引队列。当前活跃的 axis 路径现在包含结构角色检索、代码内的 docstring/JSDoc 锚点种子、邻接关系物化,以及用于分数、来源、剪枝、路由和 trace metadata 的 prompt-contract schema 字段。它还强制执行**工作区路径沙箱化**(调用者路径位于已索引的 `project_path` 下)、**有界的 API 限制**(`limit` 1–50,`token_budget` 400–32k),以及**本地优先的 LLM** 默认设置(`ALLOW_CLOUD_LLM=false`,默认 Anthropic 模型为 `claude-sonnet-4-6`)。请参阅 [spec_sidecar_api.md](docs/spec_sidecar_api.md) 和 [road_map.md](docs/road_map.md)。 本地设置和冒烟测试路径位于 **[local_development.md](docs/local_development.md)** 和 `scripts/local_dev.py` 中。基准测试包含了跨 Python 和 TypeScript/JavaScript 的 13 个仓库的工作区映射,包括内部测试(dogfood)仓库;运行这些测试仍然需要预先对这些工作区进行索引。目前最重要的未解决问题在引擎侧:提升困难的真实仓库案例的召回率,改善在宽泛/文档密集型路径上的精确度,校准 DocAnchor 的置信度/类型,并将更丰富的 axis 排序/剪枝/文档证据带入活跃的 `PromptContext` 中,而不是将序列化字段保留为默认值。VS Code 前端仍然需要请求选择的持久化和无障碍优化,但与引擎工作相比这是次要的。租户级 API 图谱发布/链接、备用数据库连接器、LLM 代理网关、RBAC 和服务拆分仍然是未来 Team/Enterprise 的规划方向。请参阅 **[road_map.md](docs/road_map.md)** 获取标准的待办事项。 **相关实验(外部仓库,非子模块):** [context-deduplicator](https://github.com/idxoid/context-deduplicator) 和 [marginal-utility-selector](https://github.com/idxoid/marginal-utility-selector) 是早期的独立原型。生产环境的检索逻辑现在位于 `context_engine/axis/` 中,共享的 prompt contract 位于 `context_engine/context_types.py`。 ## MCP Server `mcp_server/` 包通过 Model Context Protocol (MCP) stdio transport 为 Claude Code、Codex、Cursor 和 Claude Desktop 等聊天宿主公开了 Surgical Context 的检索功能。它是 `context_engine.axis.pipeline.run_axis_retrieval` 的进程内适配器,因此 MCP 调用使用与 `/ask/axis` 和 `QA/axis_benchmark` 工具相同的 axis 读取路径。 服务器返回的是**上下文,而不是最终答案**:宿主 LLM 请求代码或影响数据,接收经过排序和图扩展的上下文,并自行根据该上下文进行推理。主要工具包括: | 工具 | 用途 | |---|---| | `ask_code` | 自然语言问题 → 排序后的代码包。 | | `impact` | 符号变更的下游波及范围(blast radius)。 | | `list_workspaces`, `list_files` | 发现已索引的仓库和文件。 | | `find_definition`, `file_outline`, `read_symbol` | 精确定位/读取/导航的原语。 | | `callers`, `callees`, `path` | 跨调用和其他耦合边的图导航。 | | `set_overlay`, `clear_overlay` | 检查未提交的缓冲区更改,而无需写入索引。 | | `batch` | 在一次 MCP 往返中运行多个读取/导航操作。 | 前置条件与本地引擎路径相同:必须可用 Neo4j 和 LanceDB,并且目标仓库必须在 `axis_python_v1` 下进行索引。 内部测试(dogfood)工作区是 `qa_repo/surgical_context@main`;MCP 配置通过 `SURGICAL_CONTEXT_WORKSPACE` 传递该基础 ID,服务器会自动附加 `+axis_python_v1` 后缀。 请参阅 **[mcp_server/README.md](mcp_server/README.md)** 获取安装命令、Claude Code/Codex 连接方式、冒烟测试和当前限制。 ## 编写文档 在编写或更新文档之前,请阅读 **[DOCS_STYLE_GUIDE.md](docs/DOCS_STYLE_GUIDE.md)**。 快速规则: - **清晰明了** — 在 2 分钟或更短的时间内解释清楚 - **展示示例** — 可直接复制粘贴的代码 - **使用表格** 展示数据结构 - **链接所有内容** — 指向相关规范的内部链接 - **列出限制** — 目前无法使用的功能 - **添加权衡** — 为什么选择此设计而非其他替代方案 ## 文档状态说明 - ✅ **已实现** — 已合并到此分支中,并由测试/基准测试覆盖 - 🚧 **进行中** — 正在积极开发 - 📋 **已计划** — 已列入路线图,尚未开始 - ⚠️ **已知问题** — 可以工作,但有注意事项 - ❌ **未实现** — 已推迟 - 🔄 **重构中** — 正在进行重新设计(新路径可能会暂时共存) 请在规范文档的主要章节和算法块中直接使用这些标记。 ## 文档如何保持同步 每个 pull request 都应包含文档更新: - **新功能?** 添加 Spec 或更新 Concept - **设计更改?** 更新 architectura.md 和受影响的 Specs - **Bug 修复?** 如果是已知约束,请将其添加到 Limitations 中 - **阶段完成?** 更新 road_map.md 过时的文档比没有文档更糟糕 —— 如有疑问,请在代码审查中提出。 ## 有疑问? - 关于架构 → 请在 [architectura.md](docs/architectura.md) 中提问 - 关于组件 → 找到对应的 `spec_*.md` - 关于如何贡献 → 阅读 [DOCS_STYLE_GUIDE.md](docs/DOCS_STYLE_GUIDE.md)
标签:LanceDB, Neo4j, RAG检索增强生成, SOC Prime, 上下文引擎, 代码理解, 变更影响分析, 开发工具, 数据可视化, 逆向工具