1. 项目概述:当AI助手“看不见”你的代码库时

如果你和我一样,长期在大型项目里摸爬滚打,同时又是GitHub Copilot或Cursor这类AI编码助手的重度用户,那你一定经历过那种“智障时刻”:明明项目里已经定义了一个非常清晰的 UserService 接口,Copilot却在你需要调用它时,给你生成了一个完全虚构的函数签名;或者,当你想导入一个跨模块的工具函数时,它自信满满地给你推荐了一个根本不存在的路径。这种体验,就像你请了一位知识渊博但高度近视的助手来帮你整理书房——他能看清你手边摊开的几本书,但对整个书架上浩如烟海的藏书结构一无所知。

这正是我过去一年在构建一个包含16个微服务的TypeScript平台时,每天都要面对的困境。项目的规模越大,目录结构越复杂,AI助手的表现就越像在“盲猜”。它只能“看到”当前打开的几个文件,或者通过简单的文本搜索(类似 grep )去碰运气,但它完全无法理解代码之间的内在联系:这个函数在哪里定义?哪些模块调用了它?整个项目的依赖图谱是怎样的?这种“上下文盲”的状态,让一个本应强大的生产力工具,在实际的大型工程中变得有些鸡肋。

问题的根源在于,像Copilot这样的AI助手,其工作模式本质上是对你提供的“上下文窗口”内的文本进行模式匹配和续写。当你的代码库体积远超这个窗口时,AI就失去了全局视野。它无法进行真正的“代码智能”推理。于是,我决定自己动手,给Copilot装上“本地化的眼睛和大脑”,这就是 CIPHER-Local 项目的由来。它是一个VS Code扩展,核心使命是: 为你的AI编码助手,提供结构化、可查询的完整代码库上下文,并且一切都在你的本地机器上完成

2. 核心思路:用结构化数据替代“盲人摸象”

传统的AI代码补全,可以看作是一种“基于邻近文本的预测”。而要让AI真正理解代码,我们需要给它提供的不再是扁平的文本流,而是 结构化的知识图谱 。这就像从给助手一堆散乱的笔记,转变为给他一本精心编撰的、带有详细索引和交叉引用的百科全书。

2.1 为什么选择Model Context Protocol (MCP)

实现这个目标,需要一个标准化的“通信协议”,让AI助手能够安全、高效地调用外部的“知识查询工具”。这就是 Model Context Protocol (MCP) 的价值所在。MCP是由Anthropic提出并推动的一个开放标准,它定义了一套AI助手与外部工具(资源)交互的规范。

简单来说,MCP允许你将一个本地服务(比如一个代码索引查询引擎)暴露为一组定义清晰的“工具”给AI助手。AI助手不再需要自己去“读文件”,而是可以像调用API一样,向这个服务发出精准的查询请求,例如:“搜索所有名为 getUserProfile 的函数”、“解析 utils/logger.ts 这个文件中定义的所有符号”、“找出 sendEmail 这个函数在项目中的所有调用点”。

选择MCP,而非自己造轮子,有几个关键考量:

  1. 标准化与兼容性 :MCP正在成为AI助手与工具交互的事实标准。基于MCP构建,意味着你的工具可以天然兼容所有支持该协议的AI客户端,如GitHub Copilot、Cursor、Claude Desktop等,未来生态的扩展性极佳。
  2. 关注点分离 :MCP清晰地划分了“AI模型”和“上下文提供者”的职责。作为工具开发者,我只需要专注于构建高效、准确的代码索引与查询服务,而不需要关心AI模型内部是如何工作的。
  3. 安全性 :MCP通信通常发生在本地(localhost),数据无需出站,这为处理敏感的私有代码提供了坚实的安全基础。

2.2 CIPHER-Local的架构设计

基于MCP的理念,CIPHER-Local的架构变得非常清晰。它本质上是一个 本地代码索引器 + MCP服务器 的二合一工具。

核心工作流如下:

  1. 索引阶段(Indexing) :当你用VS Code打开一个项目时,CIPHER-Local会在后台自动启动。它使用 Tree-sitter 这个强大的解析器生成器,对项目内支持的语言文件(如TypeScript、Python、Go等)进行语法解析。Tree-sitter能精准地将代码转换为抽象语法树(AST),从而让我们能可靠地提取出函数、类、接口、变量、导入关系等结构化信息。
  2. 存储阶段(Storage) :提取出的所有符号(Symbols)、代码片段(Chunks)、引用关系(References)和依赖信息(Dependencies)被存储在一个本地的 SQLite数据库 中。SQLite轻量、快速,且支持 FTS5全文搜索 模块,非常适合这种单机、高性能查询的场景。所有数据都存放在你的VS Code全局存储目录下,与云端完全隔离。
  3. 服务阶段(Serving) :索引完成后,CIPHER-Local会启动一个本地的HTTP+SSE(Server-Sent Events)服务器,通常在 localhost 的一个随机端口上。这个服务器实现了MCP协议,对外暴露一组预定义的工具接口。
  4. 集成阶段(Integration) :扩展会自动在你的项目根目录下创建或更新 .github/copilot-instructions.md 文件。这个文件是配置Copilot行为的关键。通过它,我们“告诉”Copilot:“当你在这个项目中需要代码上下文时,请优先调用本地的这个MCP服务器上的工具,而不是仅仅依赖你有限的上下文窗口。”

当你在编写代码时,Copilot遇到一个不熟悉的符号,它会通过MCP协议,向本地的CIPHER-Local服务器发送一个 search_symbols resolve_symbol 请求。服务器查询SQLite数据库,瞬间返回精确的结构化结果。AI基于这个准确的信息,生成出质量高得多的补全建议。

3. 核心工具链与实现细节

要让这个想法落地,每一个技术选型都至关重要。下面我详细拆解几个核心组件的选型理由和实操要点。

3.1 解析引擎:为什么是Tree-sitter?

在代码分析领域,解析器选择是基石。我们有几个常见选项:各语言官方的编译器/解释器(如 tsc python -m ast )、基于正则的简单提取、或者像Tree-sitter这样的通用解析器生成器。

我选择Tree-sitter,主要基于以下几点:

  • 多语言统一支持 :Tree-sitter为数十种流行语言提供了高质量的语法定义。这意味着我可以用一套核心逻辑处理TypeScript、Python、Java等多种语言,极大地降低了开发和维护成本。目前CIPHER-Local首批支持了13种语言,覆盖了绝大多数主流开发生态。
  • 容错性(Error Tolerance) :在开发过程中,代码经常处于语法不完整的状态。Tree-sitter的解析器被设计为具有容错能力,即使在有语法错误的情况下,也能尽最大努力生成一棵可用的AST,这保证了索引过程的鲁棒性。
  • 增量解析(Incremental Parsing) :这是Tree-sitter的杀手级特性。当文件被编辑后,它能够只重新解析文件中发生变化的部分,而不是整个文件。这对于在开发者编辑代码时实时更新索引至关重要,能保证极低的性能开销和几乎无感的延迟。
  • 丰富的查询系统 :Tree-sitter提供了一种声明式的查询语言,可以让你像写CSS选择器一样,从AST中提取感兴趣的节点(如“所有函数声明”、“所有类名”)。这比手动遍历AST要直观和高效得多。

实操注意 :虽然Tree-sitter很强大,但不同语言的语法定义(grammar)成熟度不同。在开发初期,你需要针对每种支持的语言,精心编写查询语句,并处理一些边缘情况。例如,Python的装饰器(decorator)和TypeScript的泛型(generics)在AST上的表示方式需要特别处理,才能正确提取出完整的函数签名。

3.2 数据存储:SQLite与FTS5的威力

存储层的选择需要在性能、复杂度、和部署简易性之间取得平衡。像Elasticsearch或专用的图数据库(如Neo4j)虽然强大,但作为本地开发工具,它们显得过于笨重。

SQLite 成为了不二之选:

  • 零配置,单文件 :整个数据库就是一个 .db 文件,放在用户目录下。无需安装服务,无需管理连接,对用户完全透明。
  • 性能卓越 :对于单用户、本地查询的场景,SQLite的读写性能完全足够。它的B-tree索引能毫秒级响应“按名称查找符号”这类精确查询。
  • 内嵌全文搜索(FTS5) :这是实现“语义搜索”功能的关键。FTS5模块允许我们对代码符号的名称、所在的文件路径、甚至注释进行全文索引。当用户进行模糊搜索时(比如只记得函数名的一部分),BM25排序算法能返回最相关的结果,这比简单的 LIKE 查询要智能得多。

数据库表结构设计示例(简化):

-- 符号表:存储所有提取出的代码实体
CREATE TABLE symbols (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,          -- 符号名,如 `calculateTotal`
    kind TEXT NOT NULL,          -- 种类,如 `function`, `class`, `variable`
    file_path TEXT NOT NULL,     -- 所在文件路径
    line_start INTEGER,          -- 起始行号
    line_end INTEGER,            -- 结束行号
    snippet TEXT,                -- 代码片段
    namespace TEXT               -- 所属命名空间/模块
);
CREATE INDEX idx_symbols_name ON symbols(name);
CREATE VIRTUAL TABLE symbols_fts USING fts5(name, file_path, content=symbols);

-- 引用关系表:存储符号间的调用、导入关系
CREATE TABLE references (
    source_symbol_id INTEGER,    -- 引用者
    target_symbol_id INTEGER,    -- 被引用者
    reference_type TEXT,         -- 类型,如 `import`, `call`, `extends`
    FOREIGN KEY (source_symbol_id) REFERENCES symbols(id),
    FOREIGN KEY (target_symbol_id) REFERENCES symbols(id)
);

这种结构使得 find_references (查找引用)和 get_dependencies (获取依赖)这样的查询变得非常高效。

3.3 MCP工具集的设计与实现

CIPHER-Local暴露的7个MCP工具,每一个都针对AI助手在编码时的特定需求场景。工具的设计遵循“精准、高效、结构化”的原则。

  1. search_symbols (按名称模式搜索符号)

    • 场景 :AI助手想找一个叫 validateUserInput 的函数,但不确定在哪个文件。
    • 实现 :结合SQL的 LIKE 查询和FTS5的全文搜索。先尝试精确匹配,再用FTS5进行模糊匹配并按相关性(BM25)排序返回。结果包含符号名、种类、位置和简短片段。
  2. resolve_symbol (解析符号定义)

    • 场景 :AI助手在代码中看到了一个未解析的符号 apiClient.sendRequest() ,它需要知道 sendRequest 方法的完整签名和定义位置。
    • 实现 :根据提供的符号名和可选的文件路径上下文,在 symbols 表中进行精确查找。返回该符号的完整定义代码片段、所在文件、行号以及其类型信息(如参数列表、返回值类型)。这是实现精准自动导入和函数补全的基础。
  3. find_references (查找所有引用点)

    • 场景 :开发者想重构一个函数,AI助手需要列出所有调用该函数的地方,以评估影响。
    • 实现 :查询 references 表,找出所有 reference_type call target_symbol_id 为指定符号ID的记录。返回每个引用点的文件路径和行号。这对于代码理解和安全重构至关重要。
  4. semantic_search (语义/全文搜索)

    • 场景 :开发者只记得功能是“处理用户上传的图片”,但不记得函数名。AI助手需要根据自然语言描述找到相关代码。
    • 实现 :利用FTS5,对符号名和其所在文件的路径进行索引。当用户输入“upload image”时,搜索索引,返回包含这些词汇的符号(如 handleImageUpload , processUserUpload )。虽然还不是真正的向量语义搜索,但基于关键词的BM25排序在实践中已经非常有用。
  5. get_dependencies (获取项目依赖)

    • 场景 :AI助手需要为新文件建议 import 语句,或者判断某个包是否已在项目中声明。
    • 实现 :通过解析 package.json (Node.js)、 requirements.txt (Python)、 Cargo.toml (Rust) 等生态特定的依赖管理文件,构建项目级的依赖列表。这个工具让AI能准确知道项目使用了 lodash 的哪个版本,或者是否已经安装了 axios
  6. get_file_context (获取文件内所有符号)

    • 场景 :当AI助手的上下文窗口切换到一个新文件时,它可以快速获取该文件的所有导出符号和重要结构,作为理解文件功能的“摘要”。
    • 实现 :查询 symbols 表中属于该文件路径的所有记录,并按种类(如先类,后方法)排序后返回。这相当于为文件生成一个实时的大纲。
  7. list_namespaces (列出已索引的工作空间)

    • 场景 :用户可能在VS Code中打开了多个项目文件夹(多工作区)。这个工具让AI助手知道当前有哪些代码库的上下文可用。
    • 实现 :扫描SQLite数据库,列出所有已被索引的独立工作空间根路径。

实现心得 :在设计MCP工具的输入输出时,要时刻考虑AI模型的“理解能力”。输入参数应尽量简单明确(如 symbol_name: string, file_hint?: string )。输出必须是结构化的JSON,并且字段名要有清晰的语义。例如,返回一个符号时,除了代码片段,一定要包含 file line 信息,这样AI才能在建议中生成正确的导入路径或跳转链接。

4. 从安装到实战:完整工作流解析

理解了原理,我们来看看如何将它用起来。整个过程设计得尽可能自动化,目标是让开发者“安装即用”。

4.1 安装与初始索引

  1. 安装扩展 :在VS Code的扩展商店中搜索“CIPHER-Local”并安装。重启VS Code。
  2. 打开项目 :打开你的任意代码项目(比如一个Node.js后端或React前端应用)。
  3. 后台静默索引 :此时,扩展图标可能会显示一个加载动画。CIPHER-Local正在后台做以下几件事:
    • 遍历文件 :识别项目根目录下所有支持语言的文件。
    • 解析与提取 :对每个文件调用Tree-sitter解析器,提取符号和引用。
    • 构建数据库 :将所有信息写入位于 ~/.vscode/globalStorage/... 下的SQLite数据库文件。对于中型项目(数万行代码),首次索引可能需要几十秒到几分钟,这取决于CPU和硬盘速度。 提示 :你可以点击状态栏的扩展图标查看索引进度。
  4. 启动MCP服务器 :索引完成后,扩展会自动在本地启动一个MCP服务器(例如 http://localhost:54321 )。这个端口是随机分配的,以避免冲突。

4.2 配置AI助手使用MCP

这是最关键的一步——让Copilot知道新工具的存在。CIPHER-Local会自动帮你完成:

  1. 检查指令文件 :扩展会检查你项目根目录下是否存在 .github/copilot-instructions.md 文件。如果没有,它会创建一个;如果已有,它会在文件末尾追加一段配置。
  2. 注入MCP配置 :追加的内容包含了如何连接到本地MCP服务器的指令,以及每个工具的功能描述。这个文件是Copilot的“上下文说明书”,它指导Copilot在需要代码信息时,优先使用我们提供的这些精准工具,而不是依赖于有限的、模糊的上下文窗口。
  3. 无需额外操作 :对于GitHub Copilot和Cursor这类深度集成MCP的助手,一旦指令文件被更新,它们通常会自动感知并开始使用新的工具。你可以尝试在一个已有项目中,让Copilot补全一个你知道定义在另一个文件中的函数名,观察其准确性的提升。

4.3 实际编码场景中的效果对比

让我们通过一个具体场景,感受一下“有CIPHER-Local”和“没有CIPHER-Local”的区别。

场景 :在一个大型Monorepo中,你正在 services/auth/src/login.ts 文件中工作,需要调用一个用户资料获取函数,你隐约记得有个叫 fetchUserProfile 的函数。

  • 没有CIPHER-Local

    • 你开始输入 const profile = await fet... ,然后触发Copilot补全。
    • Copilot只能基于当前打开的文件(可能还有相邻文件)的上下文来猜。它可能会建议一个它“想象中”的 fetchUserProfile ,但参数和返回值可能是错的,或者它根本不知道这个函数存在,转而建议一个完全不相关的补全。
  • 有CIPHER-Local

    • 同样输入 const profile = await fet... 并触发补全。
    • Copilot的底层机制会先调用MCP工具 search_symbols ,查询名称包含“fetchUserProfile”的符号。
    • MCP服务器查询数据库,瞬间返回精确结果:该函数定义在 packages/shared/src/api/user.ts 中,签名为 async function fetchUserProfile(userId: string): Promise<UserProfile>
    • Copilot基于这个准确信息,生成补全建议: const profile = await fetchUserProfile(user.id); ,并且 自动为你添加正确的导入语句 import { fetchUserProfile } from '@shared/api/user';

这种从“基于文本的猜测”到“基于知识的检索”的转变,是体验上的代际差异。它尤其擅长处理:

  • 跨文件、跨模块的引用
  • 使用第三方库时的准确API补全 (结合 get_dependencies 工具)。
  • 大型重构时的安全建议 (结合 find_references 工具)。

5. 隐私、兼容性与性能考量

对于一个处理本地代码的工具,用户最关心的无非是三点:我的代码安全吗?它能和我用的工具一起工作吗?它会不会拖慢我的电脑?

5.1 隐私与安全:一切尽在本地

这是CIPHER-Local的核心设计原则和最大优势。

  • 零数据出站 :整个流水线——从代码解析、索引构建、数据存储到查询服务——完全运行在你的本地机器上。SQLite数据库文件存放在你的VS Code用户全局目录下。MCP服务器运行在 localhost 你的源代码永远不会被发送到任何远程服务器,包括GitHub、OpenAI或任何其他第三方服务。
  • 无需账户与密钥 :安装即用,不需要注册,不需要配置API密钥,没有用量限制。
  • 开源透明 :项目采用MIT许可证,代码完全公开。你可以审查每一行代码,确认其没有隐藏的数据收集行为。

5.2 生态兼容性:支持哪些AI助手?

任何支持Model Context Protocol (MCP) 的AI助手或客户端,理论上都可以与CIPHER-Local协同工作。目前已知的兼容客户端包括:

  • GitHub Copilot :通过 copilot-instructions.md 文件集成。
  • Cursor :作为一款深度集成AI的编辑器,Cursor对MCP的支持非常友好。
  • Claude Desktop :Anthropic官方的Claude桌面应用也支持MCP。
  • 其他MCP客户端 :随着MCP生态的发展,预计会有更多工具加入。

实操注意 :不同客户端对MCP工具的调用频率和策略可能不同。有些可能会更激进地在每次补全时都尝试查询,有些则可能在特定指令下才使用。这可能会影响最终的体验流畅度。

5.3 性能与资源消耗

对于开发者工具,性能直接影响使用意愿。以下是需要关注的几点:

  1. 首次索引耗时 :这是最耗时的阶段。对于一个包含数万行代码、数千个文件的项目,索引可能需要几分钟。建议在项目打开后,先做点别的事情(比如喝杯咖啡),让它完成初始构建。 技巧 :你可以在VS Code的设置中,为CIPHER-Local配置需要忽略的文件夹(如 node_modules , dist , .git ),这能显著减少不必要的文件解析,加快索引速度。

  2. 增量更新性能 :得益于Tree-sitter的增量解析,当你编辑并保存一个文件时,CIPHER-Local只会重新解析这个文件,并更新数据库中受影响的部分。这个操作通常在毫秒级完成,你几乎感知不到。

  3. 内存与CPU占用 :后台运行的索引进程和MCP服务器进程会占用一定的内存(通常几十到几百MB,取决于项目大小)和CPU。在索引高峰期(首次或大量文件变更后),CPU使用率会短暂升高。在日常编辑的增量更新阶段,占用可以忽略不计。

  4. 查询延迟 :MCP工具的查询性能取决于SQLite数据库的复杂度。对于简单的符号查找,响应时间在几毫秒到几十毫秒之间,对于AI交互来说完全足够。全文搜索( semantic_search )会稍慢一些,但通常也能在百毫秒内返回结果。

优化建议 :如果你在资源受限的机器上(如旧款笔记本电脑)使用,并且项目非常大,可能会感到风扇狂转。一个折中的办法是,在VS Code设置中暂时禁用CIPHER-Local的自动索引,只在需要深度AI辅助时手动触发索引。

6. 常见问题与故障排查

在实际使用中,你可能会遇到一些问题。这里记录了一些我遇到的和用户反馈的典型情况及其解决方法。

6.1 索引相关问题

  • 问题:扩展安装后,图标一直显示“索引中”,或者进度缓慢。

    • 排查 :首先检查VS Code的输出面板( View -> Output ),选择“CIPHER-Local”日志,查看是否有报错信息。常见原因可能是遇到了无法解析的巨型二进制文件,或者某个文件的语法超出了Tree-sitter解析器的处理能力。
    • 解决 :在设置中( Settings -> Extensions -> CIPHER-Local )配置 Exclude Glob Patterns ,添加像 **/node_modules/** , **/*.min.js , **/*.bundle.js , **/dist/** 这样的模式,排除非源码和依赖目录。然后重启VS Code或手动触发重新索引。
  • 问题:索引完成后,AI助手似乎还是没有“看到”某些函数。

    • 排查 :使用扩展提供的命令面板( Ctrl+Shift+P )命令,如 CIPHER-Local: Search Symbol ,手动搜索一下那个函数名,看是否能被找到。如果找不到,说明索引可能遗漏。
    • 解决 :确认该文件的语言在支持列表中(目前13种)。检查文件是否有非常规的语法或使用了实验性特性,这可能导致Tree-sitter解析失败。可以尝试简化该文件代码,看是否能被索引。也可以到项目GitHub页面提交Issue,附上代码样例。

6.2 MCP连接与工具调用问题

  • 问题:Copilot或Cursor没有使用MCP工具,补全建议依旧不准确。

    • 排查1 :检查项目根目录下的 .github/copilot-instructions.md 文件,确认其中是否包含了CIPHER-Local添加的MCP服务器配置段落。
    • 排查2 :确认你的AI助手(如Copilot)版本是否支持MCP。较旧的版本可能不支持此特性。
    • 排查3 :在VS Code中,打开命令面板,运行 Developer: Open Webview Developer Tools ,在控制台网络中查看是否有向 localhost:端口号 发起的请求。这可以验证MCP服务器是否在运行且被调用。
    • 解决 :确保扩展已成功启动MCP服务器(状态栏图标无错误)。尝试重启AI助手功能或整个VS Code。对于Copilot,有时需要等待几分钟让指令文件生效。
  • 问题:调用MCP工具时出现超时或错误。

    • 排查 :可能是本地端口冲突,或者MCP服务器进程意外退出。
    • 解决 :尝试禁用再重新启用CIPHER-Local扩展,这会重启MCP服务器。如果问题持续,检查是否有其他软件占用了MCP服务器尝试使用的端口。

6.3 语言支持与精度问题

  • 问题:对某些语言(如Kotlin, Swift)的符号提取不完整或不准确。
    • 原因 :Tree-sitter对不同语言的语法支持质量有差异。虽然官方提供了这些语言的语法,但可能无法覆盖所有最新的语言特性或某些特定框架的语法糖。
    • 解决 :这是开源项目需要社区共同完善的地方。你可以到项目的GitHub仓库,在对应语言的Issue下反馈具体案例。作为开发者,我会根据反馈的优先级来更新和优化特定语言的查询逻辑。

一个重要的心得 :这类工具的价值与代码库的“规范性”强相关。如果项目结构清晰、命名规范、模块化程度高,那么工具提取的符号和引用关系就非常准确,AI助手的提升也就越明显。反之,在一个充斥着“意大利面条式代码”的项目中,任何工具的效果都会打折扣。因此,在享受工具带来的便利时,它也在间接鼓励我们写出更整洁、更可维护的代码。

7. 未来展望与社区共建

CIPHER-Local目前处于Beta阶段,它解决了一个明确的痛点,但仍有巨大的进化空间。它的未来很大程度上取决于社区的反馈和贡献。

  1. 语言支持的广度与深度 :目前支持的13种语言是起点。社区最需要哪种语言?是更成熟的Java支持,还是新兴的Zig或Mojo?对于已支持的语言,如何更好地处理像React Hooks、Vue Composition API、Python装饰器工厂等高级特性?这需要大量真实项目的测试用例。

  2. 更智能的搜索与问答 :目前的 semantic_search 是基于关键词的全文搜索。未来的方向可能是集成小型的本地向量嵌入模型,实现真正的语义代码搜索,即用自然语言描述功能,直接找到相关的代码块。

  3. 更丰富的MCP工具 :除了现有的7个工具,还可以开发哪些?例如:

    • get_codebase_summary : 为整个项目或目录生成自然语言摘要。
    • detect_code_smells : 基于简单规则检测潜在代码坏味道(如过长的函数、重复代码)。
    • suggest_refactoring : 在给定一个代码片段时,基于项目中的类似模式,建议重构方案。
  4. 性能与可扩展性 :对于超大型单体仓库(数百万行代码),纯SQLite索引可能会遇到瓶颈。未来是否会引入更高效的数据结构或可选的服务器模式?同时,如何进一步降低内存和CPU占用,使其在低功耗设备上也能流畅运行?

作为一个由独立开发者发起的项目,CIPHER-Local的生命力在于使用它的每一位开发者。你在使用中遇到的任何问题——无论是某个语言解析崩溃了,还是某个MCP工具返回的结果不符合预期,抑或是你期待一个还没有的功能——到GitHub仓库提交一个Issue,或者分享你的使用体验,都是对项目最直接、最宝贵的贡献。只有通过无数真实场景的打磨,这个“本地化的代码智能大脑”才会变得越来越聪明、越来越可靠。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐