1. 从零搭一个 TypeScript + React 项目,AI 到底能帮上什么忙
如果你刚开始接触 VSCode 里的 TypeScript/React 开发,大概率经历过这几个阶段:装完 Node 和 VSCode,新建一个空文件夹,然后对着终端发呆——npm create vite之后该选什么模板?tsconfig.json里那一堆strict、moduleResolution到底要不要开?写了个组件,类型报错红了一片,却不知道从哪查起。
这些问题的共同点是:它们不是"难",而是"碎"。碎到你查文档要翻三四个页面,问同事又不好意思反复打扰。而 AI 辅助编码最擅长的,恰恰就是处理这种碎片化的、有明确上下文的小问题——前提是它得能稳定地读到你的项目文件、理解你的目录结构、并且在你按下 Tab 的时候给出符合当前文件类型的补全。
我试过把 AI 能力接进 VSCode 的开发流,踩过的坑主要集中在"通道"这一层:有的插件要单独配一套 Key,有的只认某一家模型,切换项目就得重新折腾一遍配置。后来我把这些统一收敛到 TaoToken 的一个 Key 上,用同一套 API 通道同时喂给对话、补全和 Agent 三类场景,配置量一下子降下来了。这篇就按"从零建项目 → 配好统一 Key → 跑通一次补全和一次报错修复"的顺序,把可复制的settings.json骨架和验证动作交给你。
适合谁看:刚上手 TypeScript/React、想在 VSCode 里把 AI 用顺的开发者;或者已经装了 AI 插件但被多套 Key 搞烦、想统一通道的人。你不需要提前懂大模型原理,只要会开终端、会改 JSON 配置就行。
2. 前置准备:TaoToken 统一 Key 与 VSCode 环境
2.1 为什么用统一 Key 而不是每个插件配一套
VSCode 里的 AI 能力大致分三类:一类是对话式(选中代码问"这段为什么报错"),一类是行内补全(打字时给建议),一类是 Agent 式(让它读多个文件、改代码、跑命令)。这三类如果各自接不同的服务,你会维护三份 Key、三份 base URL、三套额度,项目一多就乱。
TaoToken 的做法是提供一个统一的 API 通道,你拿一个 Key,填一个 base URL,三类场景都走它。对 VSCode 来说,这意味着你只需要在配置里维护一份凭证,换项目时复制同一段配置即可。官网在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口是 https://taotoken.net/api (这个地址不加 UTM 参数,配置里直接写它)。
2.2 拿到 Key 并确认额度
登录后进控制台,在 API Keys 页面创建一个新 Key。建议按项目或按用途命名,比如vscode-react-demo,这样后面排查"是哪个项目在消耗额度"时一眼能认出来。创建完先复制保存,页面刷新后通常不再完整显示。
创建 Key 的入口:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite
如果你还没想好要用哪个模型,可以先在模型对话页面手动发一条消息,确认 Key 和通道是通的,再去配 VSCode。对话入口:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite
2.3 VSCode 侧要装什么
基础三件套:Node.js(建议 18 或 20 LTS)、VSCode 本体、以及一个支持自定义 API 通道的 AI 插件。插件市场里这类工具不少,选一个支持"自定义 base URL + 自定义 Key"的即可,本文不绑定具体插件名,配置思路是通用的。
建项目用 Vite 最快:
npm create vite@latest my-react-app -- --template react-ts cd my-react-app npm install code .跑起来确认环境没问题:
npm run dev浏览器打开终端里提示的地址,看到 Vite + React 的默认页面就说明前端环境 OK。接下来才是配 AI 通道。
3. 可复制配置:settings.json 骨架与项目级覆盖
3.1 全局 settings.json 的最小骨架
VSCode 的用户级配置在Cmd/Ctrl + Shift + P→ "Preferences: Open User Settings (JSON)"。下面是一份最小骨架,把占位符换成你自己的值即可:
{ "aiAssistant.enabled": true, "aiAssistant.provider": "openai-compatible", "aiAssistant.baseUrl": "https://taotoken.net/api", "aiAssistant.apiKey": "sk-你的TaoTokenKey", "aiAssistant.model": "claude-sonnet-4-20250514", "aiAssistant.completion.enable": true, "aiAssistant.completion.debounceMs": 300, "aiAssistant.chat.enable": true, "aiAssistant.agent.enable": true, "editor.inlineSuggest.enabled": true, "editor.quickSuggestions": { "other": true, "comments": false, "strings": true }, "typescript.suggest.autoImports": true, "typescript.updateImportsOnFileMove.enabled": "always" }几个关键点说明一下。baseUrl写https://taotoken.net/api,不要带末尾斜杠,也不要带 UTM 参数——UTM 是给网页统计用的,写进 API 地址反而可能被当成路径的一部分。provider选openai-compatible是因为大多数支持自定义通道的插件都认这个协议格式。model字段填你实际要用的模型标识,不同插件字段名可能略有差异,以插件文档为准。
completion.debounceMs控制你停止打字后多久触发补全,300ms 是个比较舒服的值;设太小会频繁请求,设太大又显得迟钝。editor.inlineSuggest.enabled必须为true,否则补全建议不会以灰色行内文本的形式出现。
3.2 用项目级 .vscode/settings.json 覆盖
全局配置适合放 Key 和 base URL 这类不变的东西,但模型选择、补全激进程度这类参数,不同项目需求不一样。React 项目你可能希望补全更积极,纯配置文件项目可能希望它安静点。这时候在项目根目录建.vscode/settings.json:
{ "aiAssistant.model": "claude-sonnet-4-20250514", "aiAssistant.completion.debounceMs": 200, "files.exclude": { "**/node_modules": true, "**/dist": true }, "search.exclude": { "**/node_modules": true, "**/dist": true } }项目级配置会覆盖全局同名项。注意.vscode/settings.json里不要放apiKey——这个文件通常会进 Git,Key 泄露了很麻烦。Key 只放全局配置,或者用插件支持的环境变量方式注入。
3.3 让 AI 读懂你的 TypeScript 项目
AI 补全准不准,很大程度取决于它能不能看到你的类型定义。在项目根目录放一个tsconfig.json(Vite 模板已经生成了),确保compilerOptions里有这几项:
{ "compilerOptions": { "target": "ES2020", "lib": ["ES2020", "DOM", "DOM.Iterable"], "module": "ESNext", "moduleResolution": "bundler", "jsx": "react-jsx", "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, "baseUrl": ".", "paths": { "@/*": ["src/*"] } }, "include": ["src"] }strict: true会让类型检查更严,但配合 AI 补全反而更好用——因为类型信息越完整,AI 给出的建议越贴合你的实际数据结构。paths里的@/*别名能让 AI 在补全 import 路径时也走别名,不用写一长串../../。
4. 验证请求:一次补全 + 一次报错修复
4.1 验证行内补全
新建src/components/UserCard.tsx,先手写一个类型和一个不完整的组件:
type User = { id: number; name: string; email: string; role: "admin" | "editor" | "viewer"; }; export function UserCard({ user }: { user: User }) { return ( <div className="user-card"> {/* 光标停在这里,开始打字 */} </div> ); }把光标放到注释下面那行,输入<h3>,正常情况下几百毫秒内会出现灰色补全建议,类似<h3>{user.name}</h3>。按 Tab 接受。如果没出现,先检查editor.inlineSuggest.enabled是否为true,再看插件状态栏有没有报错。
继续输入<p>,补全应该能根据User类型给出{user.email}或{user.role}的建议。这一步验证的是:AI 通道通了,并且它能读到当前文件的类型上下文。
4.2 验证报错修复
故意制造一个类型错误。把UserCard改成这样:
export function UserCard({ user }: { user: User }) { const displayName = user.fullName; return <h3>{displayName}</h3>; }user.fullName不存在,VSCode 会立刻标红。选中这行,用插件的"解释/修复"命令(通常是右键菜单或快捷键),问它"这段为什么报错,怎么改"。正常返回应该指出User类型上没有fullName属性,并建议改成user.name或先扩展类型。
这一步验证的是对话通道。如果补全能过但对话报错,多半是chat.enable没开,或者插件把对话和补全走了不同的 endpoint。
4.3 用 curl 直接验证 API 通道
如果插件里一直报错,想确认到底是 Key 的问题还是插件的问题,可以直接打 API:
curl https://taotoken.net/api/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-你的TaoTokenKey" \ -d '{ "model": "claude-sonnet-4-20250514", "messages": [ {"role": "user", "content": "用一句话说明 TypeScript 的 strict 模式有什么用"} ], "max_tokens": 200 }'返回里能看到choices[0].message.content就说明 Key 和通道都没问题,问题在插件配置。返回 401 是 Key 不对,404 是路径写错了(注意是/api/v1/chat/completions),429 是额度或频率限制。
5. 本篇常见错排查
5.1 补全不触发或一直转圈
先看 VSCode 右下角状态栏的插件图标。如果显示"未连接",八成是baseUrl或apiKey写错了。常见错误是把 base URL 写成了https://taotoken.net/api/(多了末尾斜杠),或者把 UTM 参数一起复制进去了。正确写法就是https://taotoken.net/api。
如果状态栏显示已连接但补全不出现,检查文件语言模式是不是 TypeScript React(右下角应该显示TypeScript React)。有些插件只在特定语言模式下启用补全,纯.txt文件里是不会触发的。
5.2 报错 "model not found"
model字段填的标识和通道实际支持的模型对不上。不同插件的模型字段格式可能不同,有的要claude-sonnet-4-20250514,有的要带前缀。最稳的办法是先用 4.3 的 curl 确认通道支持哪些模型标识,再回填到配置里。
5.3 补全建议和项目风格不一致
比如你项目用函数组件 + hooks,AI 却总给 class 组件的建议。这通常是因为 AI 没读到足够的项目上下文。解决办法是在项目根目录放一个.ai-rules或插件支持的规则文件,写明"本项目使用 React 18 函数组件 + TypeScript,不使用 class 组件,样式用 CSS Modules"。规则文件的具体格式看插件文档,但内容思路是通用的:把项目约定用自然语言写清楚。
5.4 改了 settings.json 不生效
VSCode 的配置有优先级:工作区 > 文件夹 > 用户。如果你在项目里建了.vscode/settings.json,它会覆盖全局配置。排查时先确认是不是项目级配置把全局的apiKey或baseUrl覆盖成了空值。另外改完配置建议Cmd/Ctrl + Shift + P→ "Developer: Reload Window" 重载一次,有些插件不会热读配置。
5.5 额度消耗比预期快
补全的debounceMs设太小会导致每次按键都发请求。300ms 是平衡点,如果你打字快可以调到 400–500ms。另外检查files.exclude和search.exclude有没有把node_modules和dist排掉——如果 AI 索引了这些目录,上下文会变得很大,既慢又费额度。
6. 把这条链路用顺之后
配置跑通只是起点。真正让 AI 在 VSCode 里产生持续价值的,是把它嵌进你的日常动作:新建组件时让它生成带类型的骨架,改接口时让它同步更新types.ts,遇到看不懂的报错直接选中问。这些动作单个看都很小,但一天累积下来省掉的时间很可观。
如果你后面要做的项目偏长期、需要 Agent 反复读写多个文件,可以了解一下 Coding Plan 这类按周期计费的方案,比按次调用更适合高频场景:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite
接入过程中遇到具体的报错或配置问题,接入文档里有更细的参数说明:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
最后提醒一句:.vscode/settings.json别提交 Key,用.gitignore把包含敏感信息的本地配置文件排掉。统一 Key 的好处是只维护一份,但这一份更要管好。