🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度
1. 先把目标说清楚:让 Continue 在编辑器里搜仓库文件
Continue 是装在 VS Code 或 JetBrains 里的开源编程助手,平时你用它补全、对话、改代码。它还有一个容易被忽略的能力:通过 MCP(Model Context Protocol)挂载外部工具,让模型在回答时能主动调用这些工具。这次要做的,就是给它挂一个只读的文件搜索 Skill,让你在编辑器对话框里输入关键词,它就能在仓库里定位到相关文件,而不是靠模型瞎猜路径。
适合谁:本地仓库文件多、目录层级深、经常记不住某个函数写在哪个文件里的开发者。产物很明确——一份 Continue 的config.json、一条 MCP server 启动命令、一次真实的文件搜索调用记录。模型用 Qwen3.7 Flash,走 TaoToken 的 API 接入,Key 和 Base URL 都在 TaoToken 这边配置。
整个过程我试过一遍,从注册到跑通大概十分钟,前提是你本地已经有 Node.js 环境。下面按顺序来:先拿 Key,再写 MCP server,然后配 Continue,最后验证搜索能不能用。
2. 拿 Key 与准备本地环境
2.1 在 TaoToken 创建 API Key
打开官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end ,注册账号后进入控制台。左侧找到 API Keys 入口,新建一个 Key,复制出来先存到安全的地方。这个 Key 后面要填进 Continue 的配置里,用来访问模型。
注意:Key 只在创建时完整显示一次,关掉页面就看不到了。如果弄丢,删掉重建一个即可,不影响已有配置的逻辑。
2.2 确认本地 Node 环境
MCP server 我们用一个 Node 脚本实现,所以先确认版本:
node -v npm -vNode 18 以上都行。如果没装,去 Node 官网下 LTS 版本装上。这一步不涉及任何网络工具,就是普通的运行时安装。
2.3 建一个工作目录
mkdir -p ~/mcp-file-search cd ~/mcp-file-search npm init -y npm install @modelcontextprotocol/sdk装完 SDK 后,目录里会有node_modules和package.json。MCP server 就写在这个目录下。
3. 写一个只读的文件搜索 MCP Server
3.1 MCP 是什么,用一句话类比
你可以把 MCP 想成编辑器和外部工具之间的插座标准。Continue 是电器,MCP server 是插头,只要插头符合标准,电器就能用上这个工具的能力。我们这里做的插头,功能只有一个:给一个关键词,返回仓库里匹配的文件路径和行号。
3.2 完整 server 代码
新建server.js,内容如下:
import { Server } from "@modelcontextprotocol/sdk/server/index.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js"; import { execSync } from "child_process"; const server = new Server( { name: "file-search", version: "1.0.0" }, { capabilities: { tools: {} } } ); server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [ { name: "search_files", description: "在指定仓库目录中按关键词搜索文件内容,返回匹配的文件路径与行号", inputSchema: { type: "object", properties: { keyword: { type: "string", description: "要搜索的关键词" }, root: { type: "string", description: "仓库根目录绝对路径" }, }, required: ["keyword", "root"], }, }, ], })); server.setRequestHandler(CallToolRequestSchema, async (request) => { if (request.params.name !== "search_files") { throw new Error("Unknown tool"); } const { keyword, root } = request.params.arguments; try { const output = execSync( `grep -rn --include="*.js" --include="*.ts" --include="*.py" --include="*.md" -m 5 "${keyword}" "${root}"`, { encoding: "utf-8", maxBuffer: 1024 * 1024 } ); return { content: [{ type: "text", text: output || "未找到匹配内容" }], }; } catch (err) { return { content: [{ type: "text", text: "搜索无结果或目录不可读" }], }; } }); const transport = new StdioServerTransport(); await server.connect(transport);这段代码做了三件事:声明一个叫search_files的工具、接收关键词和根目录参数、用grep在指定目录里搜。只读,不写文件,不改任何东西。
3.3 启动命令
在package.json里加一行"type": "module",然后直接跑:
node ~/mcp-file-search/server.js如果终端没有报错、光标停住等待输入,说明 server 已经通过 stdio 挂起来了。这个进程由 Continue 在后台拉起,你不需要手动常驻。
4. 把 TaoToken 和 MCP 一起写进 Continue 配置
4.1 找到 config.json
Continue 的配置文件位置:
- VS Code:
~/.continue/config.json - JetBrains:
~/.continue/config.json(部分版本在插件设置里)
如果文件不存在,新建一个。下面是一份可直接用的配置:
{ "models": [ { "title": "Qwen3.7 Flash", "provider": "openai", "model": "qwen3.7-flash", "apiKey": "你的TaoToken Key", "apiBase": "https://taotoken.net/api" } ], "mcpServers": { "file-search": { "command": "node", "args": ["/Users/你的用户名/mcp-file-search/server.js"] } } }关键两处:apiBase填https://taotoken.net/api,apiKey填第 2 步拿到的 Key。args里的路径换成你本机的绝对路径,Windows 用户注意用双反斜杠或正斜杠。
4.2 配置项说明
| 字段 | 作用 | 注意 |
|---|---|---|
| provider | 走 OpenAI 兼容协议 | TaoToken 兼容该协议 |
| model | 模型标识 | 填 Qwen3.7 Flash 对应标识 |
| apiBase | 请求地址 | 必须是 https://taotoken.net/api |
| mcpServers | 挂载的 MCP 工具 | 名字随意,command 要能直接执行 |
保存后重启编辑器,Continue 会自动读取配置并拉起 MCP server。如果模型列表里能看到 Qwen3.7 Flash,说明模型这侧通了。
5. 验证搜索与常见失败分支
5.1 一次真实的调用记录
在 Continue 对话框里输入:
用 search_files 在 /Users/me/project 里找 handleSubmit
返回结果类似:
/Users/me/project/src/form.js:42:function handleSubmit(e) { /Users/me/project/src/api.js:18: return handleSubmit(payload); /Users/me/project/src/utils/validate.js:7: handleSubmit,模型拿到这些路径后,会直接告诉你函数定义在form.js第 42 行,调用点在api.js第 18 行。这就是我们要的效果:按关键词定位仓库文件,而不是让模型编路径。
5.2 失败分支排查
如果对话框里模型说找不到工具,先看编辑器输出面板里 MCP 的日志。常见三种:
一是command not found,说明node不在 PATH 里,把command换成 node 的绝对路径。二是路径写错,args里的server.js找不到,用ls确认文件存在。三是模型请求报 401,说明 Key 填错或过期,回控制台重新建一个。
如果搜索返回空,检查root参数是不是传了真实存在的目录,以及关键词大小写是否匹配。grep默认区分大小写,需要忽略大小写可以在命令里加-i。
6. 限制、成本与模型选择
这个 Skill 是只读的,只做搜索,不会改你的代码,也不会把文件内容上传到别处——它只把匹配到的路径和行号返回给模型。搜索范围受grep的 include 规则限制,上面只覆盖了 js、ts、py、md,你要搜别的类型就自己加。
成本方面,模型调用按 TaoToken 官网的计费规则走,Qwen3.7 Flash 属于轻量档,日常搜索问答消耗不大。具体价格和可用模型以官网为准,不同时期可能有调整。MCP server 本身跑在本地,不产生额外费用。
模型选择上,Qwen3.7 Flash 响应快、够用,适合这种「调工具、读结果、给结论」的短链路任务。如果你要它同时读多个文件做深度分析,可以换成上下文更长的模型,配置里改model字段即可,apiBase不用动。
最后补一个实用技巧:把search_files的root固定成你常开的仓库路径,写进对话模板里,每次直接说关键词就行,省得反复输路径。跑通之后你会发现,编辑器里定位文件这件事,交给模型加一个只读工具,比手动翻目录快得多。
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度