Context+ Feature Hub 深度解析:Obsidian 风格 wikilink 如何让代码库变成可导航图谱
【免费下载链接】contextplusSemantic Intelligence for Large-Scale Engineering. Context+ is an MCP server designed for developers who demand 99% accuracy. By combining RAG, Tree-sitter AST, Spectral Clustering, and Obsidian-style linking, Context+ turns a massive codebase into a searchable, hierarchical feature graph.项目地址: https://gitcode.com/gh_mirrors/cont/contextplus
Context+ 是一款面向大型工程的语义智能 MCP 服务器,其 Feature Hub(功能枢纽)功能借鉴 Obsidian 风格 wikilink,用一个.md文件把整个代码库变成可导航的层级特征图谱。对于刚接手百万行代码库的开发者,它就像一张"代码地图"——不用逐个翻文件,一句话就能定位某个功能涉及的所有源码骨架。
Context+ Feature Hub 是什么?
Feature Hub 是 Context+ 提供的get_feature_hub工具,核心思想来自 Obsidian 笔记软件的[[wikilink]]双链语法:
一个 Hub = 一个 Markdown 文件 + 若干
[[路径/文件]]链接 = 该功能的"内容地图"
它解决了一个经典痛点:AI 编码助手(Claude Code、Cursor 等)面对大型代码库时,往往不知道该从哪些文件读起。Feature Hub 让人类(或 AI)预先声明"登录功能 = 这 5 个文件",之后一次调用即可拿到全部关联文件的函数签名骨架(而非全文),大幅节省 Token。
底层实现在 src/core/hub.ts,负责 wikilink 解析、Hub 自动发现与孤儿文件检测;工具入口在 src/tools/feature-hub.ts。
快速上手:3 步配置 Context+ MCP 服务器
Feature Hub 通过 MCP 协议接入 IDE,配置过程只需 3 步:
安装 Ollama 并向量模型(本地免费、离线运行):
ollama pull nomic-embed-text ollama serve在 IDE 中注册 MCP 服务器。以 Claude Code / Cursor 为例,在
mcpServers中加入:{ "mcpServers": { "contextplus": { "command": "bunx", "args": ["contextplus"] } } }也可以直接运行
npx -y contextplus init claude(支持claude、cursor、vscode、windsurf、opencode五种目标)一键生成配置文件。在你的项目里创建 Hub 文件(下一节介绍),之后对 AI 说"帮我看看认证功能的代码结构"即可。
完整配置说明见 README.md 的 Setup 章节;若希望从源码构建,可克隆仓库后执行npm install && npm run build:
git clone https://gitcode.com/gh_mirrors/cont/contextplus如何编写你的第一个 Obsidian 风格 Hub 文件
在项目任意位置(通常放根目录或docs/)新建一个.md文件,用[[wikilink]]链接代码文件即可。Context+ 的 Hub 发现逻辑会扫描项目中所有包含 wikilink 的 Markdown 文件(自动跳过node_modules、.git、dist等目录),无需额外注册。
一个典型的auth.md示例:
# Authentication - [[src/login.ts|用户登录流程,含密码哈希]] - [[src/session.ts|JWT 会话管理与刷新]] - [[src/middleware.ts|路由保护中间件]] ## 依赖 @linked-to [[database]]两条语法规则值得注意:
| 语法 | 作用 |
|---|---|
[[路径/文件\|描述]] | 链接代码文件,\|后可选地附加一句话说明 |
@linked-to [[其他Hub]] | 声明本功能依赖的其他 Hub,形成 Hub 之间的交叉链接 |
解析规则由正则WIKILINK_RE与CROSS_LINK_RE定义,源码见 src/core/hub.ts#L25-L26。
get_feature_hub 三种导航模式
调用get_feature_hub时不传任何参数、传路径或传开关,对应三种模式:
模式一:零参数——列出全部 Hub
扫描整个项目,输出所有 Hub 的名称、标题和链接数量,帮你快速了解"这个项目有哪些功能地图"。
模式二:hub_path或feature_name——展开某个功能
hub_path: "auth.md":直接按路径展开;feature_name: "auth":按名称模糊匹配(先精确后部分匹配,见 src/tools/feature-hub.ts#L26-L35)。
展开后,工具会为每个被链接的文件调用getFileSkeleton(实现见 src/tools/file-skeleton.ts),返回函数签名、类方法、类型定义及行号范围,而不读函数体——这正是 Context+ "99% 准确率 + 省 Token" 设计哲学的体现。若链接目标文件不存在,会在末尾列出Missing Links,相当于内置的"死链检查"。
模式三:show_orphans——孤儿文件体检
Orphaned Files (1): ⚠ src/orphan.ts Fix: Add [[src/orphan.ts]] to the appropriate hub .md file.工具会遍历全部源码文件,找出未被任何 Hub 链接的"孤儿文件"。这是 Feature Hub 最实用的副产品:代码库越久,死代码越隐蔽,而孤儿文件往往是废弃功能的第一个信号。
工作原理:wikilink 如何变成图谱?
整个流程可以概括为四步,全部在本地完成、不依赖网络:
- 发现:discoverHubs 递归扫描项目,凡含 wikilink 的
.md即视为 Hub; - 解析:parseHubFile 提取标题、
[[链接]](含|描述)与@linked-to交叉链接; - 校验:逐个检查链接目标文件是否存在,分流出
resolved与missing两组; - 聚合:对每个有效文件生成骨架视图(基于 tree-sitter 的多语言 AST 解析),拼接成一份"功能级目录"返回给 AI。
工具在 MCP 服务器中的注册入口见 src/index.ts#L397-L418,官方推荐的工作流(何时调用、如何与其他工具配合)写在 INSTRUCTIONS.md 中。
Feature Hub 与其他工具的配合
Feature Hub 不是孤立功能,它与 Context+ 的其余 16 个 MCP 工具构成完整闭环:
- 接手功能→
get_feature_hub拿功能骨架 →get_context_tree看结构 →semantic_code_search按语义深挖; - 改动前→
get_blast_radius追踪符号影响面 → 用propose_commit安全写入(自动创建 shadow 恢复点); - 定期体检→
show_orphans发现孤儿文件,run_static_analysis跑原生 linter 验证。
相关源码路径速查
| 模块 | 路径 | 说明 |
|---|---|---|
| wikilink 解析器 | src/core/hub.ts | Hub 发现、链接解析、孤儿检测 |
| Feature Hub 工具 | src/tools/feature-hub.ts | 三种模式的主逻辑 |
| 文件骨架提取 | src/tools/file-skeleton.ts | 签名级视图,不读函数体 |
| MCP 工具注册 | src/index.ts | get_feature_hub入参定义 |
| 功能测试 | test/main/feature-hub.test.mjs | 6 个覆盖各模式的用例 |
| 交互演示 | test/demo/feature-hub.demo.mjs | 输入输出示例 |
常见问题
Q:Hub 文件必须放在特定目录吗?A:不需要。只要 Markdown 文件里含有[[wikilink]],放在项目任意位置都会被识别为 Hub。
Q:链接的文件被删了会怎样?A:展开 Hub 时该条目会进入Missing Links列表并标✗,提醒你更新地图。
Q:和 Obsidian 本体是什么关系?A:Context+ 只借鉴其双链语法的直观性,解析与图谱逻辑完全独立实现在 src/core/hub.ts,不依赖 Obsidian 运行时。
总结:Feature Hub 用最轻量的方式(一个 Markdown 文件)为代码库建立了人类可读的导航层——写 Hub 的成本接近零,而 AI 助手因此获得了"按功能而非按目录"的入口,这正是"可导航代码图谱"的真正价值。
【免费下载链接】contextplusSemantic Intelligence for Large-Scale Engineering. Context+ is an MCP server designed for developers who demand 99% accuracy. By combining RAG, Tree-sitter AST, Spectral Clustering, and Obsidian-style linking, Context+ turns a massive codebase into a searchable, hierarchical feature graph.项目地址: https://gitcode.com/gh_mirrors/cont/contextplus
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考