1. 为什么要在 VSCode 里写 Anki 卡片如果你正在准备考试、刷算法题、背八股文或者整理技术文档里的零散知识点Anki 大概率是你绕不开的工具。它的间隔重复算法确实能把记忆效率拉高一个档次但问题也很明显在 Anki 客户端里一张一张手动敲卡片效率低到让人想放弃。尤其是当你有一整份 Markdown 笔记里面有几十个概念、命令、报错原因需要做成问答卡时手动录入简直是折磨。ANKI for VSCode 这个插件解决的正是这个痛点。它让你直接在 VSCode 里用 Markdown 语法写卡片然后一条命令批量发送到 Anki。你不需要离开编辑器不需要复制粘贴也不需要反复切换窗口。对于需要整理卡片的技术学习者来说这套流程可以把「写笔记」和「做卡片」合并成同一个动作。我自己的使用场景是这样的平时用 Markdown 记学习笔记遇到值得反复记忆的点就直接在笔记里按插件要求的格式写成问答对。等一个章节整理完选中内容执行一次发送命令几十张卡片就进了 Anki。整个过程不需要打开 Anki 界面也不需要手动建卡。这篇文章会从零开始把 ANKI for VSCode 的安装、配置、Markdown 格式、批量插入流程完整走一遍。同时因为很多同学在配置过程中会涉及 API Key 管理和多工具统一通道的问题我会给出一个在settings.json里把 Anki 插件和 TaoToken 统一 Key/API 通道放在一起管理的配置骨架方便你后续扩展。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end API 入口是 https://taotoken.net/api 有需要的可以先了解一下。2. 前置准备Anki、AnkiConnect 与 VSCode 插件在开始写配置之前有三样东西必须准备好缺一不可。很多人卡在「发送没反应」这一步基本都是前置环节没做对。2.1 安装 Anki 桌面端并保持运行ANKI for VSCode 本身不具备写数据库的能力它只是把 Markdown 解析成卡片数据然后通过 AnkiConnect 这个桥梁发给 Anki。所以 Anki 桌面端必须处于运行状态插件才能连上。注意是桌面端网页版不行。安装好 Anki 之后先别急着关。后面所有发送操作Anki 都要开着。2.2 安装 AnkiConnect 插件AnkiConnect 是 Anki 的一个官方插件市场里的扩展它在本机开了一个 HTTP 接口默认监听127.0.0.1:8765。ANKI for VSCode 就是通过这个接口把卡片塞进 Anki 的。安装步骤打开 Anki菜单栏找到「工具」→「插件」→「获取插件」在代码框里输入 AnkiConnect 的插件代码2055492159点击确定然后重启 Anki。重启后可以在插件列表里看到 AnkiConnect说明装好了。这里有个细节AnkiConnect 默认只允许本机访问端口是 8765。如果你后面改了端口VSCode 插件那边也要同步改否则连不上。2.3 在 VSCode 中安装 ANKI for VSCode打开 VSCode进入扩展面板搜索ANKI for VSCode作者是pedroaugustobt的那个就是。安装完成后VSCode 左侧活动栏会出现一个 Anki 图标命令面板里也能搜到ANKI:开头的命令。装完之后先别急着写卡片我们先把配置理顺。因为接下来要演示的配置骨架里除了 Anki 插件本身的设置还会把 TaoToken 的统一 Key/API 通道一起放进去方便你在同一个settings.json里管理多个工具的凭证。3. 可复制配置settings.json 中的 Anki 与 TaoToken 通道VSCode 的用户设置和工作区设置都可以写settings.json。我建议把 Anki 相关配置放在工作区设置里这样不同项目可以用不同的 deck 默认值而 API Key 这类凭证放在用户设置里避免误提交到 Git。下面是一个可以直接复制的配置骨架。它包含两部分ANKI for VSCode 的插件配置以及 TaoToken 统一 Key/API 通道的配置。你可以按需删减但建议先原样粘贴跑通之后再调整。{ anki.forVscode.ankiConnectHost: 127.0.0.1, anki.forVscode.ankiConnectPort: 8765, anki.forVscode.defaultDeck: notes, anki.forVscode.defaultModel: Basic, anki.forVscode.tags: [vscode, markdown], anki.forVscode.allowDuplicate: false, anki.forVscode.scanDirectory: ./anki-cards, taotoken.apiBase: https://taotoken.net/api, taotoken.apiKey: sk-你的统一Key, taotoken.defaultModel: claude-sonnet-4-20250514, taotoken.channel: unified }逐项说明一下关键参数。ankiConnectHost和ankiConnectPort必须和 AnkiConnect 实际监听的一致默认就是127.0.0.1和8765。defaultDeck是当你 Markdown 里没有用#指定 deck 时卡片会进入的默认牌组默认是notes。defaultModel是卡片模板一般用Basic就行如果你装了其他模板可以改。tags是给所有通过这个工作区发送的卡片自动打的标签方便后续筛选。allowDuplicate设为false可以避免重复卡片被反复插入。TaoToken 那几项是统一通道配置。apiBase固定为https://taotoken.net/apiapiKey换成你在控制台生成的 Key。这样配置的好处是你后续如果要在 VSCode 里接其他 AI 辅助工具可以复用同一个 Key 和 Base URL不用每个插件单独填一遍。控制台地址是 https://taotoken.net/console API Keys 管理在 https://taotoken.net/api-keys 。配置写完后按CtrlShiftP打开命令面板输入ANKI: Test Connection如果返回成功说明 VSCode 已经能连上 AnkiConnect 了。如果报错先检查 Anki 是否在运行、AnkiConnect 是否装好、端口是否被占用。4. Markdown 卡片格式与批量插入实操配置通了之后真正决定效率的是 Markdown 写法。ANKI for VSCode 有一套自己的解析规则理解这几条规则你就能批量生产卡片。4.1 基本格式Deck、Question、Answer一个#开头表示 deck 名字。比如# 算法表示接下来的卡片进入「算法」这个牌组。如果没有写#就进入默认牌组notes。两个##开头表示 Question也就是卡片的正面。Question 下面紧跟的内容就是 Answer也就是卡片的背面。# 算法 ## 什么是时间复杂度 时间复杂度是描述算法执行时间随输入规模增长的变化趋势用大 O 表示。 ## 二分查找的前提是什么 数组必须是有序的且支持随机访问。选中这段内容执行命令ANKI: Send to Own Deck两张卡片就会进入「算法」牌组。注意Question 相同的卡片不会更新只会跳过新 Question 才会插入。所以如果你要修改某张卡片的答案需要先去 Anki 里手动删掉那张卡再重新发送。4.2 多行卡片用 % 分割正反面有些知识点正面和背面都比较长或者背面需要多行代码。这时候用%符号来分割正反面%之前是正面之后是背面。## YAGNI 原则是什么为什么重要 % You arent gonna need it 是极限编程的一条原则 意思是不要为尚未确定需要的功能提前写代码。 它重要是因为能避免过度设计降低维护成本。这种写法适合背面内容较多的场景比如一段解释、一段代码、一个对比表格。4.3 插入本地图片图片在技术卡片里很常见比如架构图、报错截图、流程图。ANKI for VSCode 支持 Markdown 图片语法但路径要写对。## 这个报错的原因是什么 ![报错截图](https://taotoken.net/assets/error-demo.png)如果图片在本地建议用相对路径并且确保路径相对于当前 Markdown 文件。比如图片放在同目录的images文件夹下## 这个架构图说明了什么 ![架构图](./images/arch.png)发送时插件会把图片一起传给 Anki。如果图片没显示先检查路径是否正确、文件是否存在。4.4 批量插入的完整动作假设你有一个cards.md文件里面写了 20 张卡片。操作流程是打开这个文件全选内容按CtrlShiftP打开命令面板输入ANKI: Send to Own Deck回车。插件会解析选中的 Markdown逐条发送到 Anki。发送完成后切到 Anki 窗口打开对应的 deck就能看到新卡片。如果卡片数量对不上检查是否有重复 Question 被跳过或者格式写错导致解析失败。5. 验证请求与成功结果发送之后怎么确认真的成功了有三个地方可以验证。第一看 VSCode 右下角的状态提示。发送成功时通常会弹出Cards added: N之类的提示N 就是实际插入的卡片数。如果提示0 cards added说明要么全是重复卡片要么格式没被识别。第二切到 Anki打开对应 deck看卡片列表。新插入的卡片会出现在列表里按创建时间排序就能找到。点开卡片检查正面和背面内容是否完整图片是否显示。第三用 AnkiConnect 的接口直接查。如果你熟悉命令行可以发一个 HTTP 请求验证curl -X POST http://127.0.0.1:8765 \ -H Content-Type: application/json \ -d {action:findCards,version:6,params:{query:deck:算法}}返回的 JSON 里会列出该 deck 下所有卡片的 ID。如果数量和你预期一致说明插入成功。实测下来最容易出问题的环节是 Markdown 格式。比如##后面没跟空格、%写成了中文全角、图片路径用了绝对路径但文件被移动了。这些都会导致解析失败或内容缺失。6. 本篇常见错误排查下面这几个报错和现象是我在配置和使用过程中遇到频率最高的按出现概率排序。6.1 发送没反应提示连接失败先确认 Anki 是否在运行。AnkiConnect 是 Anki 的插件Anki 关了它也就没了。然后检查端口是否被占用默认 8765如果被其他程序占了可以在 AnkiConnect 设置里改端口同时同步修改 VSCode 的ankiConnectPort。6.2 卡片插入成功但内容为空大概率是 Question 和 Answer 之间没有空行或者%分割符写错了。插件对格式比较敏感##后面要跟一个空格Answer 和 Question 之间建议空一行。多行内容用%时%要单独占一行。6.3 图片不显示检查图片路径。相对路径是相对于当前 Markdown 文件不是相对于工作区根目录。如果图片在子文件夹里路径要写全。另外Anki 对图片格式有要求常见的 png、jpg 都支持webp 有时会出问题。6.4 重复卡片被反复插入把allowDuplicate设为false。但要注意这个判断是基于 Question 文本的如果 Question 有细微差别比如多了个空格会被当成新卡片。所以写 Question 时尽量保持格式统一。6.5 TaoToken 通道配置不生效如果你在settings.json里配了 TaoToken 的 Key 但其他工具读不到先确认 Key 没有过期然后检查apiBase是否写成了https://taotoken.net/api注意结尾没有斜杠。如果还是不行去控制台重新生成一个 Key 试试。控制台入口是 https://taotoken.net/console API Keys 页面是 https://taotoken.net/api-keys 。7. 把 Anki 接入你的技术学习流ANKI for VSCode 的价值不在于它有多复杂而在于它把「记笔记」和「做卡片」这两个动作合并了。你不需要专门抽时间做卡片平时写 Markdown 笔记时顺手按格式写攒一批发送一次就行。如果你后续想在 VSCode 里接更多 AI 辅助能力比如让模型帮你把一段笔记自动转成问答卡格式可以走 TaoToken 的统一通道。模型对话入口在 https://taotoken.net/model-chat 接入文档在 https://taotoken.net/doc 需要长期编码或 Agent 场景的可以看 Coding Planhttps://taotoken.net/coding-plan 。Claude Code 相关的配置参考 https://taotoken.net/claude-code 。回到 Anki 本身我的建议是先从一个 deck 开始写 10 张卡片跑通全流程确认发送、验证、复习都没问题再逐步扩大规模。不要一上来就导入几百张格式一旦有问题排查起来很痛苦。等你熟悉了这套 Markdown 规则批量插入就是几秒钟的事。