免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

Simple Hide Files 多选 Hide 只生效一个?让 Codex 走 TaoToken 改 main.js

Simple Hide Files 多选 Hide 只生效一个?让 Codex 走 TaoToken 改 main.js Simple Hide Files 多选 Hide 只生效一个是 vscode / cursor 上一类很具体的插件排障题。想改插件的 main.js用走 TaoToken 通道的 Codex 比自己啃压缩代码省事先去 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册并创建 API Key再把 Codex 的 Base URL 填成 https://taotoken.net/api。现象本身不复杂在资源管理器里按住 Ctrl 点选三四个文件右键点 Hide回头打开 settings.json 一看files.exclude 里只多出一条路径。反复试几次每次还是只藏一个剩下的文件照旧躺在目录里。装上的是 sguerri 出品的 Simple Hide Files 0.2.6单选 Hide 一直正常多选就瘸腿说明问题不在「能不能写 files.exclude」而在挂到 hideFiles.addToHiddenFiles 那条命令分支只拿到了一个 Uri。网上流传的老办法是进扩展目录把 out/main.js 整段替换成别人改好的版本——能用但你不知道替换进去的是什么插件一升级还会被覆盖。这里换个更稳的走法先定位到具体分支再让 Codex 对照另一条 addMultipleToHiddenFiles 路径把只接受单 Uri 的地方补成遍历数组批量写入。TaoToken 只提供 Key 和模型通道不替插件去读写文件、也不参与 Hide 逻辑改代码这件事仍然由 Codex 在你本机完成。1. 多选 Hide 只写一条先把现象钉死1.1 复现步骤与三个可疑点先做一次干净的复现。新建一个空工作区放五个文件比如 a.txt、b.txt、c.txt、d.txt、e.txt。在侧边栏按住 CtrlmacOS 用 Cmd选出 a、b、c 三个右键菜单点 Hide。然后用Ctrl Shift P打开命令面板执行Preferences: Open Workspace Settings (JSON)看 files.exclude 里到底写了几条。如果只多出一条或者多出一条但文件名对不上别急着去改代码先把三个可疑点排掉写入层级不对插件可能把规则写进了 User 级设置而工作区级设置把 User 级覆盖了。表现是「设置里明明有目录里文件还在」。路径形态不对写进去的是绝对路径或者带了盘符而 files.exclude 需要的是相对工作区根目录的路径匹配自然失败。命令分支只收单个 Uri多选时编辑器把选中项作为数组传进来代码里只取了第一个。前两个点用肉眼就能判断打开设置 JSON看键名是相对路径还是C:/...这种绝对路径再确认你改的是 Workspace 还是 WorkspaceFolder 层级。把这两条排除之后范围就收窄到第三种——也就是命令实现本身。这一步花五分钟能省掉后面半小时的瞎改。顺带说一句不管是 vscode 还是 cursor扩展安装目录结构是一样的只是根目录名不同。cursor 在~/.cursor/extensions/vscode 在~/.vscode/extensions/Windows 上则分别落在C:/Users/你的用户名/.cursor/extensions/和C:/Users/你的用户名/.vscode/extensions/下。1.2 在 out/main.js 里找 addToHiddenFiles 的注册点先确认版本目录名本案例是sguerri.simple-hide-files-0.2.6-universal。进到out/目录打开 main.js。文件是编译压缩过的变量名基本是单字母不要试图通读用编辑器搜索三个关键词就够registerCommand找到所有命令注册入口。addToHiddenFiles单选 Hide 走的命令名。addMultipleToHiddenFiles如果存在说明作者写过多选版本如果只有名字没有实现那更说明入口没接上。再顺手看一眼同目录的package.json在contributes.commands里能看到命令的准确 id在contributes.menus里能看到右键菜单绑的是哪个 id。这一步很关键如果菜单绑的是单选命令那么无论你在代码里怎么改多选逻辑右键进来的永远是单个 Uri问题就不在函数体而在命令绑定。把这两处对齐之后你才知道改动应该落在哪一行。2. 让 Codex 打开 main.jsBase URL 指向 https://taotoken.net/api2.1 先在 TaoToken 创建 Key准备工作就两件一把 Key一个模型 ID。打开 TaoToken 注册账号进控制台创建 API Key记成占位符YOUR_API_KEY。模型 ID 不要凭记忆写去模型广场看当天的列表挑一个适合读代码的记作YOUR_MODEL_ID具体有哪些、哪个更合适以模型广场当时列表为准。这里有一个高频踩坑点官网落地页和接口地址是两个东西。注册、建 Key、看模型、看用量都在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 上做而填进工具里的 Base URL 是https://taotoken.net/api末尾不要加/v1也不要往这个地址上挂任何查询参数。2.2 ~/.codex/config.toml 里的 model_provider 与 base_urlCodex 的配置文件在用户目录下macOS / Linux 是~/.codex/config.tomlWindows 是C:\Users\你的用户名\.codex\config.toml。注意这里是 Codex 自己的 TOML 结构不要往里塞ANTHROPIC_*那套变量那是别的工具用的。model YOUR_MODEL_ID model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api chat几个字段的含义字段填什么说明modelYOUR_MODEL_ID以模型广场当时列表为准别自己拼后缀base_urlhttps://taotoken.net/api末尾不加/v1env_keyTAOTOKEN_API_KEY环境变量名值才是你的 Keywire_apichat按所选通道的文档填不确定就看模型说明Key 不要硬写进 TOML用环境变量传export TAOTOKEN_API_KEYYOUR_API_KEYWindows PowerShell 里对应$env:TAOTOKEN_API_KEYYOUR_API_KEY。配完之后先跑一句最简单的提问确认通道是通的再让它去碰插件文件——顺序反了的话你会分不清是通道问题还是代码问题。2.3 递给 Codex 的排障提示词提示词决定它改得准不准。别只说「帮我修复多选 Hide」那样它很可能重写整个函数。按「先解释、再动手」的节奏给请打开这个文件直接给出 out/main.js 的完整路径。 先不要改代码做三件事 1. 找出 registerCommand 里注册 hideFiles.addToHiddenFiles 和 hideFiles.addMultipleToHiddenFiles 的位置贴出这两处代码片段 2. 对照 package.json 的 contributes.commands / contributes.menus 说明右键菜单当前绑定的是哪个命令 id 3. 指出单选分支里哪一个变量最终只承载了一个 Uri。 解释完等我说「可以改」再动手。这套问法有两个好处一是强制它先读上下文再落笔二是你能在它动手之前判断它有没有找对地方。如果它一上来就开始重写压缩函数直接打断把任务拆小。另外明确告诉它只在本机读写你打开的这个文件不要碰任何构建脚本、不要执行安装命令、不要动工作区里的业务代码。3. 把只接受单 Uri 的分支改成批量写入3.1 addMultipleToHiddenFiles 到底差在哪大部分这类插件的实现套路是单选命令拿到一个 Uri拼一个{ 相对路径: true }对象然后update(files.exclude, ...)多选命令按理说应该拿到 Uri 数组循环拼对象再一次性写进去。问题往往出在中间那层「取参数」的包装上——外面是数组里面写了args[0]。让 Codex 把两条路径并排贴出来你能一眼看出差别多选版本里大概率有一个for或者map单选版本里没有。要补的不是新功能而是把单选版本缺的那层遍历补上或者干脆让右键菜单在多选时走多选命令。两种改法都行哪种改动小选哪种。3.2 一份可对照的批量写入实现下面是批量写入的骨架用来和 Codex 改出来的结果对照。压缩文件里变量名不同重点是结构入参先归一化成数组一次读出当前配置循环补键最后写回。const vscode require(vscode); async function addToHiddenFiles(input) { // 把单个 Uri、Uri 数组、以及 (uri, uris) 两种调用形态统一成数组 const list Array.isArray(input) ? input : [input]; if (!list.length) { return; } const folders vscode.workspace.workspaceFolders; if (!folders || !folders.length) { vscode.window.showWarningMessage(No workspace folder opened); return; } const cfg vscode.workspace.getConfiguration(); const next Object.assign({}, cfg.get(files.exclude) || {}); for (const uri of list) { const rel vscode.workspace.asRelativePath(uri, false); next[rel] true; } await cfg.update(files.exclude, next, vscode.ConfigurationTarget.WorkspaceFolder); vscode.window.showInformationMessage(Hidden list.length items); }命令注册那层同样要改让两种调用形态都能进来vscode.commands.registerCommand(hideFiles.addToHiddenFiles, (uri, uris) { const targets Array.isArray(uris) uris.length ? uris : [uri]; return addToHiddenFiles(targets); });两个细节值得盯住一是ConfigurationTarget要和插件原本写的一致原来写 Workspace 就别改成 User否则会出现「设置里能看到、文件没藏」二是提示文案原文案是Settings updated改成Hidden N items之后你一眼就能从提示里读出这次写进了几条验证阶段非常省事。3.3 改前备份、改后核 diffmain.js 是编译产物压缩后的代码只要动错一个括号整个插件就静默失效——不报错只是命令没反应。所以改之前先把原文件复制一份命名成main.js.bak放在同目录方便回滚。改完之后让 Codex 输出一份改动说明改了哪个函数、动了哪几行、为什么。你不需要看懂全部压缩代码但要看懂它改的那三五行。如果它顺手把别的函数重排了、或者「顺便优化」了无关逻辑让它回退重来。压缩文件里没有类型检查兜底只做最小改动是唯一稳妥的策略。4. 重启 cursor / vscode 后的验证与失败分支4.1 验证清单提示从 Settings updated 变成 Hidden N items扩展代码是启动时加载的改完必须完全退出编辑器再打开——不是 Reload Window 那种重载直接关掉进程再起。然后选中多个文件比如四个右键点 Hide。看右下角提示是不是Hidden 4 items。打开 Workspace Settings (JSON)数一下 files.exclude 里新增了几条。回侧边栏看文件是不是真的消失了。三条都过说明补丁生效。只有第一条变了、第二条没变那多半是写入层级的问题回去检查ConfigurationTarget。4.2 还是不生效三条分支排查如果一切照旧只藏一个按下面的顺序查菜单没绑到多选命令多选时编辑器传进来的参数形态和你以为的不一样。在命令回调第一行加一句console.log(uri, uris)打开Help Toggle Developer Tools看输出最直接。只有第一个 Uri 有值说明数组参数被截断了检查回调签名是不是只声明了一个形参或者中间某个包装函数写了args[0]。写进去了但没匹配上确认写的是相对路径。如果写进去的是带盘符的绝对路径files.exclude 匹配不到文件自然不会消失。这三条对应的是三个不同层面绑定、传参、写入形态。逐条排不要一次性全改。4.3 插件升级会把 main.js 覆盖掉最后提醒一句你的改动在扩展目录里插件一升级整个目录会被新版本替换补丁就没了。所以留个习惯——把改好的 main.js 单独存一份在项目外的目录顺手记下版本号升级插件之后先按 4.1 的清单复验一遍失效了再把补丁重新应用一次。如果这个需求对团队里多个人都成立比起每人改一份更值得考虑的是把这条补丁提给作者或者干脆写一个自己的小扩展。5. 这次的边界以及改完之后去哪儿对账再划一次边界免得后面混淆这次动手改的是本机扩展目录里的 main.js改代码的是走 TaoToken 通道的 CodexTaoToken 本身不读你的文件、不碰 files.exclude也不参与任何 Hide 逻辑。它负责的是模型通道——你在这一步唯一要做对的事就是 Base URL 填https://taotoken.net/api不加/v1Key 用YOUR_API_KEY占位值从官网创建。验证完之后有个收尾动作值得做回到 TaoToken 模型对话用同一把 Key 发一条消息确认模型 ID 和通道都正常如果打算长期拿它读代码、改压缩文件可以去 Coding Plan 看看套餐够不够用Key 的创建和轮换在 控制台 API Keys 里做。顺带核对一下这次排障消耗的调用量做到心里有数比事后发现问题再回头翻记录轻松得多。
返回列表