1. Win11 文件关联被 Cursor 抢占的真实场景
你大概率遇到过这个画面:装完 Cursor 的第二天,双击桌面上的README.md,屏幕一闪,打开的不是 Typora,而是 Cursor 的编辑器界面。更烦的是,右键菜单里「打开方式」第一项也变成了 Cursor,每次都要多点两下才能选回 Typora。这不是错觉,也不是 Cursor 的 bug,而是 Windows 11 在安装新应用时,会主动把某些扩展名(尤其是.md、.txt、.json)的默认关联「顺手」注册给新来的程序。
我试过在一台刚重装 Win11 的机器上复现:先装 Typora,.md默认打开正常;再装 Cursor,安装器在注册文件类型时把.md的 UserChoice 覆盖了。结果就是双击即 Cursor,Typora 被挤到「更多应用」里。这个问题的核心不在 Cursor 本身,而在于 Win11 的文件关联机制和注册表 UserChoice 键。理解这两点,你就能一次改对,而不是每次右键手动选。
先说清楚本文要解决什么:把 Win11 上.md文件的默认打开方式从 Cursor 改回 Typora,同时保留 Cursor 作为可选的编辑器(比如你想用 Cursor 打开某个项目文件夹时仍然能用)。适合谁?适合所有在 Win11 上同时用 Typora 写文档、用 Cursor 写代码的开发者。关键词先摆出来:Win11 修改 markdown 默认打开方式、Cursor 抢占 md 文件关联、Typora 设为默认程序、注册表 UserChoice 修复。这几个检索词后面会反复出现,因为它们是你在搜索引擎里真正会敲的字。
为什么不能只靠「右键 → 打开方式 → 始终使用此应用」?因为 Win11 对这个操作做了保护:如果你之前已经通过「始终」选过一次 Cursor,系统会把 UserChoice 的哈希值锁定,再点「始终使用 Typora」有时会弹出一个「应用默认设置」页面,而不是直接生效。更隐蔽的情况是,Cursor 在更新时会重新写入关联,导致你改完过几天又变回去。所以本文给两条路径:一条是图形界面的标准操作,一条是注册表层面的彻底修复,两条都验证过。
还有一个容易被忽略的点:.md文件在 Win11 里其实有两套关联。一套是「按扩展名」的默认程序,另一套是「按协议」的markdown协议处理。Cursor 安装时可能同时注册了这两者,所以你只改扩展名关联,双击时系统仍可能走协议关联把 Cursor 拉起来。这就是为什么很多人改了默认程序却「没生效」的原因。下面我会把这两层都覆盖到。
2. TaoToken 前置:把模型能力接进来再谈编辑器
在动手改文件关联之前,先花几分钟把 TaoToken 的接入准备好。原因很实际:你改回 Typora 是为了写文档更舒服,但写文档过程中难免要让 AI 帮忙润色、补全、翻译。如果 Cursor 里已经配好了模型,Typora 里却没有,那你改完默认程序反而少了能力。所以正确的顺序是:先把 TaoToken 的 API 接进你常用的工具,再决定哪个工具当默认打开方式。
TaoToken 在这里扮演的角色是统一的模型接入层。它提供兼容 OpenAI 风格的接口,你拿到一个 Base URL 和一个 API Key,就能在 Cursor、Cline、Claude Code、Codex 等工具里调用同一批模型。官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 根地址是 https://taotoken.net/api 。注意 API 地址不带查询参数,配置时直接填这个根路径即可。
你需要准备三样东西,我把它叫做「三件套」:Base URL、API Key、Model ID。Base URL 就是https://taotoken.net/api;API Key 在控制台的 API Keys 页面创建,入口是 https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite ;Model ID 取决于你想用的模型,在模型对话页面能看到可用列表,入口是 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 。这三个值后面在 Cursor 和 Cline 的配置里都会用到。
为什么要在改关联之前做这一步?因为 Cursor 的模型配置和文件关联是两回事。你把.md默认程序改成 Typora,不影响 Cursor 内部的模型设置;反过来,你在 Cursor 里配好 TaoToken,也不影响系统默认程序。两者独立。但如果你打算长期用 Cursor 做编码、用 Typora 做写作,那最好让两个工具都能调用同一套模型,这样切换时不用重新适应。TaoToken 的 Coding Plan 就是为这种长期编码场景准备的,入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite ,适合需要稳定调用、按周期使用的开发者。
这里要提醒一句:TaoToken 是合规的模型接入服务,不是所谓的「中转」或灰色通道。你通过它调用模型,走的是标准 API 流程,配置方式和直接用官方接口一致。所以本文所有配置片段都是标准的 OpenAI 兼容格式,你换成其他兼容服务也能套用,只是 Base URL 和 Key 不同。
准备好三件套之后,先别急着改注册表。建议你先在 Cursor 里验证一次模型调用是否正常,确认 Key 有效、网络可达。验证方法很简单:在 Cursor 的设置里填入 Base URL 和 Key,选一个 Model ID,然后开一个对话问一句「你好」,能正常返回就说明接入成功。这一步过了,再去做文件关联的修改,心里有底。
3. 可复制配置:从图形界面到注册表的完整步骤
这一节是全文的核心,给你两条路径,建议先走路径 A(图形界面),不行再走路径 B(注册表)。两条都给出可复制的配置和逐步验证动作。
3.1 路径 A:图形界面改默认程序
第一步,找一个.md文件,右键 → 「显示更多选项」(Win11 默认折叠了旧菜单)→ 「属性」。在「打开方式」那一行,你会看到当前是 Cursor,点右边的「更改」。
第二步,在弹出的列表里找 Typora。如果列表里没有 Typora,点「更多应用」→ 「在这台电脑上查找其他应用」,然后定位到 Typora 的安装路径,通常是C:\Program Files\Typora\Typora.exe或%LOCALAPPDATA%\Programs\Typora\Typora.exe。选中Typora.exe即可。
第三步,回到属性窗口,确认「打开方式」显示为 Typora,点「确定」。此时双击该.md文件,应该用 Typora 打开。
但这里有个坑:Win11 有时不会立刻生效,因为 UserChoice 的哈希没更新。如果你双击后还是 Cursor,别急,走路径 B。
3.2 路径 B:注册表修复 UserChoice
Win11 把文件关联存在注册表里,路径是:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.md\UserChoice这个键下面有一个ProgId值,指向当前默认程序。Cursor 的 ProgId 通常是Cursor.md或类似,Typora 的是Typora.md。但你不能直接改ProgId,因为 Win11 会校验一个Hash值,手动改会被系统重置。正确做法是删除整个UserChoice子键,让系统重新生成。
操作步骤:按Win + R,输入regedit,回车。导航到上面那个路径。右键UserChoice文件夹 → 删除。然后注销或重启资源管理器(任务管理器里重启explorer.exe)。之后再去右键.md文件 → 打开方式 → 选 Typora → 始终。这次系统会写入新的 UserChoice 和正确的 Hash。
如果你想要一个可复制的.reg文件来删除这个键,可以新建一个文本文件,写入以下内容,保存为reset_md_assoc.reg,双击导入:
Windows Registry Editor Version 5.00 [-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.md\UserChoice]注意:这个.reg只做删除,不做设置。删除后必须手动再选一次 Typora,否则系统会弹「你要如何打开此文件」。这是 Win11 的安全设计,无法绕过。
3.3 保留 Cursor 编辑能力:项目级打开
改回 Typora 后,你可能会担心:以后想用 Cursor 打开某个 markdown 项目怎么办?答案是「打开文件夹」而不是「打开文件」。Cursor 作为编辑器,核心用法是打开整个项目目录,然后在侧边栏里点开.md文件。这样既不依赖系统默认关联,又能享受 Cursor 的 AI 能力。
具体操作:打开 Cursor → 「File」→ 「Open Folder」→ 选择你的项目根目录。之后在 Cursor 内部双击任何.md,都会在 Cursor 里打开,和系统默认程序无关。这就是「保留 Cursor 编辑能力」的正确姿势。
3.4 Cursor 内的模型配置片段
既然要保留 Cursor,就把 TaoToken 的配置也写进去。Cursor 的设置里,模型配置通常在Settings→Models或AI相关面板。如果你用的是兼容 OpenAI 的接入方式,配置项大致如下(以 JSON 形式示意,实际界面按 Cursor 版本填写):
{ "baseUrl": "https://taotoken.net/api", "apiKey": "你的_API_Key", "model": "你的_Model_ID" }如果你用的是 Cline 插件(Cursor 里可以装),它的 MCP 配置或 provider 配置里同样填这三件套。Cline 的配置片段示例:
{ "provider": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "你的_API_Key", "modelId": "你的_Model_ID" }Codex 的auth.json如果你在用,格式类似:
{ "baseUrl": "https://taotoken.net/api", "apiKey": "你的_API_Key", "model": "你的_Model_ID" }这三个片段里的 Base URL、Key、Model ID 就是第 2 节说的三件套。填完后在对应工具里发一条测试消息,确认返回正常。
4. 验证请求与成功结果
改完关联、配好模型,接下来要验证两件事:一是双击.md是否真的用 Typora 打开,二是 Cursor 里的模型调用是否正常。
先验证文件关联。找三个不同的.md文件,分别放在桌面、文档目录、以及一个带中文路径的文件夹里。逐个双击。成功的结果是:三个文件都用 Typora 打开,且 Typora 标题栏显示正确的文件名。如果某个文件仍用 Cursor 打开,说明该文件的关联被单独锁定过,需要对该文件单独走一次路径 A。
再验证右键菜单。右键一个.md文件 → 「打开方式」,确认 Typora 出现在列表顶部,且「始终使用此应用」选项可用。如果 Typora 不在列表里,说明 Typora 没有正确注册文件类型,可以打开 Typora → 「偏好设置」→ 「通用」→ 勾选「设为 .md 默认程序」(不同版本措辞略有差异)。
然后验证 Cursor 内部。打开 Cursor,用「Open Folder」打开一个含.md的项目,在侧边栏点开一个.md,确认能在 Cursor 里正常编辑。再开一个 AI 对话,问一句「帮我总结这个文件的要点」,确认模型能返回内容。如果返回正常,说明 TaoToken 接入成功。
最后做一个交叉验证:在 Typora 里写一段文字,保存;然后在 Cursor 里打开同一个文件,确认内容一致;再在 Cursor 里改一个字,保存;回到 Typora,确认 Typora 检测到外部修改并提示重新加载。这个流程走通,说明两个工具共存没问题。
成功的结果可以总结成一句话:双击即 Typora,项目内即 Cursor,模型调用走 TaoToken。三者互不干扰。
如果你在验证时遇到模型调用失败,先别怀疑文件关联,去检查 Base URL 是否写成了带路径的形式。正确的根地址是https://taotoken.net/api,不要在后面加/v1或/chat/completions,具体路径由客户端拼接。Key 要完整复制,不要带空格。Model ID 要和模型对话页面显示的一致。
5. 本篇常见错排查
这一节对照真实报错,给你排查思路。以下错误都是我在配置过程中实际遇到或读者反馈过的。
错误一:401 Unauthorized。这是最常见的。原因通常是 API Key 无效、过期、或复制时多了空格。排查:去控制台重新生成一个 Key,入口 https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite ,复制后直接粘贴,不要手动输入。如果还是 401,检查 Base URL 是否写错,比如写成了https://taotoken.net/api/带尾斜杠,某些客户端会因此拼接出错误路径。
错误二:local proxy failed。这个报错通常出现在客户端配置了本地代理,但代理没启动或端口不对。排查:检查客户端设置里是否有 proxy 相关项,如果有,清空或改成直连。注意,这里说的是客户端自身的代理配置,不是让你去用什么网络工具。TaoToken 的 API 地址是标准 HTTPS,正常网络环境下直连即可。
错误三:reading choices 相关报错。这类错误一般是响应格式解析失败,常见于客户端期望 OpenAI 格式但服务返回了别的结构。排查:确认你选的 Model ID 是兼容 OpenAI 接口的模型。如果客户端支持「OpenAI Compatible」模式,选这个模式,而不是选某个特定厂商模式。
错误四:OAuth 相关报错。如果你用的是 Claude Code 或类似工具,可能会遇到 OAuth 流程。排查:确认你走的是 API Key 方式而不是 OAuth 方式。TaoToken 的接入用 API Key,不需要 OAuth。如果工具强制走 OAuth,去设置里切换到 API Key 模式。Claude Code 的接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,里面有详细说明。
错误五:改了注册表但双击仍用 Cursor。原因可能是 UserChoice 没删干净,或者 Cursor 在后台重新写入了关联。排查:关闭 Cursor,再删一次 UserChoice,然后重启资源管理器。如果 Cursor 每次启动都重写关联,去 Cursor 设置里找「文件关联」相关选项,取消勾选.md。
错误六:Typora 不在「打开方式」列表里。原因通常是 Typora 安装时没有注册文件类型,或者安装路径变了。排查:重新安装 Typora,安装时勾选「关联 .md 文件」。或者手动在注册表里注册,但更简单的方法是打开 Typora 设置,里面通常有「设为默认」的按钮。
错误七:中文路径下双击无反应。这是 Win11 的已知问题,某些程序对中文路径处理不好。排查:把文件移到纯英文路径下测试。如果英文路径正常,说明是 Typora 或 Cursor 的路径处理问题,更新到最新版本通常能解决。
排查的顺序建议是:先确认文件关联(双击测试),再确认模型调用(发消息测试),最后确认两者共存(交叉编辑测试)。不要一上来就改注册表,先走图形界面,不行再动注册表。
6. 长期使用建议与接入入口
改完默认程序只是第一步,长期用下来还有几个习惯值得养成。
第一,把 Typora 设为.md默认,但把 Cursor 设为项目级编辑器。具体做法是:在文件资源管理器里,把常用项目文件夹固定到「快速访问」,需要写代码时直接右键文件夹 → 「在 Cursor 中打开」。这样既不会让 Cursor 抢占单个文件的默认关联,又能快速进入编码环境。
第二,定期检查文件关联是否被重置。Cursor 更新、Typora 更新、甚至 Windows 大版本更新,都可能重置关联。建议每个月右键一个.md文件看一眼「打开方式」。如果发现又变回 Cursor,按第 3 节的路径 B 再删一次 UserChoice。
第三,模型配置集中管理。如果你在 Cursor、Cline、Claude Code 里都配了 TaoToken,建议把 Base URL、Key、Model ID 记在一个安全的地方,换机器时直接复制。Key 不要提交到 Git 仓库,用环境变量或本地配置文件管理。
第四,善用 Coding Plan 做长期编码。如果你每天都要用 AI 辅助写代码,按次调用不如用 Coding Plan 划算。入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite ,适合需要稳定、长期使用的场景。模型对话入口在 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite ,想先试试模型效果可以从这里进。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,遇到配置问题先查文档。
最后说一个我踩过的坑:有一次我改完关联,双击.md确实用 Typora 打开了,但 Typora 里显示的是空白。排查半天发现是文件被 Cursor 以独占方式锁定了。解决办法是先关闭 Cursor,再双击。所以如果你遇到「打开了但没内容」,先检查是不是 Cursor 还开着同一个文件。
按上面的步骤走一遍,你应该能做到:双击.md即 Typora,项目内即 Cursor,模型调用走 TaoToken。一次改对,之后不用反复折腾。