Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>FocusENGNew to Visual Studio Code? Get it now.
FocusENG

FocusENG

JackLin0912

|
74 installs
| (0) | Free
使用Markdown来学习英语
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

FocusENG

FocusENG 是一个以 Markdown 为核心的 VS Code 英语学习扩展。它把阅读、查词、词库维护、复习、背诵、翻译、音视频精听、X、知乎和 Wikipedia 内容阅读放进同一个工作区,让学习资料保持为可搜索、可编辑、可版本管理的普通文件。

扩展内置英语词典,并允许通过工作区中的 Markdown 和 JSON 文件持续补充个人学习数据。基础的词库、悬停释义、本地复习和 Wikipedia 阅读器不依赖账号;翻译、数据同步、远程面板和 X 阅读器需要配置相应的 API 或账号凭据。

功能概览

Markdown 词库

  • 扫描 Words 目录和 Review.md,建立当前工作区的已学单词索引。
  • 在 Markdown、JSON、JSONC、TXT 和 SRT 中悬停英文单词,显示音标、词性、释义、词形、关联词、短语、备注、例句、词根词缀、相似词、图片和外部链接。
  • 按 F5 或执行 FocusENG: F5 显示当前单词悬停,显示当前光标所在单词的悬停内容;已收录到个人词库时保留触发单词本身,未收录时显示默认提示“床前明月光”。
  • 从悬停内容或快捷键跳转到单词在 Words、Review.md、课程和词根词缀文件中的位置。
  • 保存 Words 中的 Markdown 或 config 中的 JSON 文件后,自动刷新相关数据。
  • 在 Markdown 中输入英文或中文后加 /,获得单词、关联词、短语、词形、相似词和词根词缀建议。
  • 为 Words 和 Test 文件提供日期标题、单词条目和代码块的行内补全。

复习与背诵

  • 通过右键菜单把当前单词或其关联主词加入 Todo.md。
  • 从 Todo.md 的待复习代码块生成并打乱 Review.md。
  • 统计 Test 目录中代码块内单词的复习次数。
  • 在 Test 文档中进行逐词背诵,显示完成进度,并可联动 Word 和 Audio 面板。
  • 使用 Check 高亮当前 Markdown 中尚未收录到个人词库的单词。
  • 扫描工作区中的 Write.md,把二级标题和其后的代码块内容作为默写素材,并在 Markdown 中通过 w-标题 触发行内默写提示。

翻译与发音

  • 使用百度翻译 API 翻译选中的英文文本。
  • 开启行内翻译后,在当前英文行末显示中文翻译。
  • 使用有道词典音频播放英音或美音。
  • 状态栏显示当前行或选中文本中的英文单词数量。

音视频与字幕

  • 提供 Word、Audio、Video 和 Tool 四个 VS Code Panel 视图。
  • 支持本地文件和 HTTP(S) 音视频地址;本地资源默认从 assets/audios 和 assets/videos 读取。
  • 在包含时间轴的 Markdown 中提供定位、单次播放、循环播放、片段起止和隐藏台词等 CodeLens 操作。
  • 可合并选中的连续字幕块,并统一字幕文本标点。
  • 在 Markdown 视频链接上右键,可直接使用 在Panel中打开 播放常见视频格式。

xReader

  • 从 X GraphQL 接口读取 For You、Following、推文详情、回复和指定作者的推文。
  • 使用只读 et-for-me-x: Markdown 文档展示正文、媒体、引用、互动数据和时间。
  • 在推文标题上通过 CodeLens 继续打开详情和回复。
  • 在 Activity Bar 中浏览关注作者,支持搜索、清空搜索、A-Z/Z-A 排序、刷新、置顶和查看作者推文。
  • 置顶作者顺序通过 VS Code Settings Sync 同步。

Wikipedia 阅读器

  • 匿名搜索简体中文或英文 Wikipedia,不需要 Wikipedia 账号、Cookie 或 API Token。
  • 支持关键词和 zh.wikipedia.org、en.wikipedia.org 文章链接。
  • 将正文清理并转换为带简体中文主标题和连续序号的只读 Markdown,保留章节、列表、正文图片/表格和链接文字,不展示超链接、条目元信息、引用附录等其它信息。
  • 在独立 Activity Bar 中切换语言、重新执行最近 50 条搜索,以及删除或清空搜索记录。
  • 搜索历史在本机持久化,并可通过 VS Code Settings Sync 同步。

知乎阅读器

  • 从知乎网页接口读取“推荐”“关注”和搜索结果中的回答、专栏文章摘要。
  • 使用只读 et-for-me-zhihu: Markdown 文档展示标题和摘要;作者、互动数据和“查看原文”链接会在标题行收起显示。
  • 通过时间线标题上方的 CodeLens,或直接粘贴具体回答、专栏文章链接,打开完整 Markdown 正文;原文入口和 xReader 的“查看原推”一样只在标题行显示链接文字。
  • 完整正文保留标题、段落、列表、引用、代码、表格、HTTPS 图片和一页根评论,不包含点赞等写操作。

可选远端能力

  • 上传 Dictionary、Article、已背单词、文件关联词和提示图片。
  • 从服务端同步待复习单词。
  • 在配置的 Web 页面中打开 Pair 练习。
  • 通过 Socket.IO 与外部音视频页面联动。

环境要求

  • VS Code 1.92.0 或更高版本。
  • 使用词库和复习功能时,需要打开一个文件夹或工作区,扩展以第一个工作区目录作为学习资料根目录。
  • 百度翻译、X、知乎、Wikipedia、远端上传和 Pair 页面需要网络;Wikipedia 只需要可访问公开站点,不需要账号配置。
  • Ctrl+R 的虚拟桌面切换是 Windows 专用能力,需要可用的 VirtualDesktopAccessor.dll;不使用该功能时可以忽略。

快速开始

1. 准备学习工作区

最小可用结构如下:

english-workspace/
├── Words/
│   └── 2.10.md
├── Test/
├── config/
├── Todo.md
└── Write.md

在 Todo.md 中创建 Review 标题和紧随其后的代码块:

# Todo

## Review

```
abandon ability account
```

Review.md 不需要预先创建,初始化或生成复习内容时会自动创建。

2. 添加第一个单词文件

Words 中的文件使用 Markdown 有序列表。扩展识别包含 **[音标]** 的列表项,并读取反引号中的词性和下方代码块中的英文例句。

# 2.10

1. abandon **[əˈbændən]** `v` 放弃;抛弃 `n` 放任

   ```
   They had to abandon the plan.
   ```

2. ability **[əˈbɪləti]** `n` 能力;才能

格式约定:

  • 单词写在 **[音标]** 前面。
  • 词性使用反引号,例如 n、v、adj。
  • 不同释义使用中文或英文分号分隔,同一释义中的并列内容使用逗号分隔。
  • 例句放在对应列表项的缩进代码块中。
  • 文件名使用 月.日.md(例如 2.10.md)时,空文件首行可自动补全标题。

3. 初始化并开始阅读

  1. 打开上述工作区。
  2. 点击状态栏中的 FocusENG。扩展激活时也会自动执行一次初始化。
  3. 在 Markdown、TXT、JSON 或 SRT 中把鼠标移到英文单词上查看释义。
  4. 点击状态栏中的悬停模式名称,选择本次重点显示的内容。
  5. 点击 Check,高亮当前 Markdown 中尚未掌握的单词。

典型使用示例

收集并生成复习内容

  1. 在 Markdown 的某个单词上右键,选择 Add,单词会加入 Todo.md 的 ## Review 代码块。
  2. 选择 Add Correlation 可加入该单词的关联主词。
  3. 打开 Todo.md,点击 ## Review 上方的 Generate。
  4. 扩展去重并打乱待复习单词,然后把已存在于 Words 的完整条目写入 Review.md。
  5. 在 Review.md 的 # Review 标题上点击 Shuffle 可再次打乱顺序。

Todo.md 上方的 Sync 会从配置的远端服务拉取复习列表,使用前需要设置 ETFORME.uploadHost。

使用输入补全

在 Markdown 中输入内容后加 /:

abandon/
放弃/
  • 英文输入会匹配内置词典、个人词库以及当前单词的关联词、短语、词形和相似词。
  • 中文输入会按释义反查英文单词。
  • 选中补全项后会插入单词,并按当前英音/美音设置播放发音。

在 Words 文件中先输入序号和单词,再输入空格,可以补全完整条目模板:

3. improve

翻译文本

先在 VS Code 用户设置中配置百度翻译:

{
  "ETFORME.baiduApiKeys": [
    {
      "appid": "your-appid",
      "secret": "your-secret",
      "remark": "default",
      "enable": true
    }
  ]
}

配置后可以:

  • 选中 Markdown 文本,右键选择 Translate。
  • 按 Ctrl+E(macOS 为 Cmd+E)开启或关闭行内翻译;开启后移动光标即可翻译当前英文行。

背诵练习

扩展会读取 Test 目录和当前打开的 Words、Review.md。建议把 Test 文件与目标单词文件并排打开,在 Test 文件中输入:

d abandon ability account
  • d 开头表示背诵输入,行尾会显示已完成数量和总数。
  • 使用 da 开头时,命中单词会播放发音。
  • 在原有规则末尾添加 n+正整数,可以指定本轮从第几个单词开始。例如 dn10 从第 10 个单词开始,dan5 从第 5 个单词开始并保留发音,d1n6 从第 6 个单词开始并保留 d1 分组规则。到达最后一个单词后会继续从第 1 个单词背诵,因此总数和原单词列表一致;只有 dn 而没有数字时不应用此规则。
  • 行尾输入英文句点 . 时,Word 面板会显示下一个待背单词。
  • Test 文件代码块中出现的单词会计入复习次数,并可在“复习次数”悬停模式中查看。

Write.md 默写

在工作区任意位置创建 Write.md,扩展会自动解析所有二级标题和其后紧邻的代码块内容。代码块为空时会跳过;保存或修改 Write.md 后,默写素材会立即同步到扩展状态中。

# Write

## abc

```
Shine bright like a diamond

You and I, you and I, we're like diamonds in the sky
```

在 Write.md 中输入 ## 后,按 Tab 可通过行内补全生成完整片段,标题使用自动生成的 UUID,光标会停在代码块内部:

## 1468cd7e-6a4d-4543-8409-628a23392b10

```

```

在其它 Markdown 中输入 w-abc 即可匹配 Write.md 中的 ## abc 内容,并使用行内补全提示接下来要默写的文本。w-标题 和标题匹配不区分大小写;默写内容比较也不区分大小写。写错时,错误字符会以 #fa8c16 字体颜色标记,但行内补全仍会继续提示后续内容。

也可以把 w-abc 放在代码块前,光标进入代码块后继续触发默写提示:

w-abc

```
Shine bright
```

如果素材来自字幕或带编号段落,扩展会只提取正文。下面的内容会解析为两段 Shine bright like a diamond:

## lyric

```sql
1.  00:00:00,960 --> 00:00:05,980
    Shine bright like a diamond

2.  00:00:05,980 --> 00:00:08,610
    Shine bright like a diamond
```

下面这种段落编号也会被移除,只保留段落正文:

## article

```text
1. Over the past century, a powerful idea has taken root in the educational landscape.

2. 'Growth mindset theory' is a relatively new version of this idea.
```

为 Markdown 配置音视频

Markdown 文件可以包含 Config 标题和一个 json 或 jsonc 代码块。配置使用 JSON5 解析,因此 jsonc 示例中的注释和尾逗号有效。

# Song Demo

## Config

```jsonc
{
  "fileId": "song-demo",
  "timeOffset": 0,
  "audios": [
    {
      "id": "audio-1",
      "title": "Track 1",
      "url": "demo.mp3",
      "extend": {},
    },
  ],
  "videos": [],
  "articles": [],
}
```

# Track 1

1. 00:00:01,000 --> 00:00:03,000
   Hello, welcome to FocusENG.

2. 00:00:03,000 --> 00:00:05,000
   Let us begin.

把 demo.mp3 放在工作区的 assets/audios 中。文件名包含 Song 或 IELTS 时,时间轴上会出现 Audio Panel 的定位、单次播放、循环播放和片段操作。

视频配置使用相同结构:

{
  "fileId": "subtitle-demo",
  "timeOffset": 0,
  "audios": [],
  "videos": [
    {
      "id": "video-1",
      "title": "Demo",
      "url": "demo.mp4",
    },
  ],
  "articles": [],
}

本地 demo.mp4 放在 assets/videos 中。文件名包含 Subtitle 时,扩展会为视频时间轴提供 CodeLens 操作。Markdown 中的远程或本地视频链接也可右键选择 在Panel中打开;支持 m3u8、m4v、mov、mp4、mpeg、mpg、ogv 和 webm。

阅读 X 内容

xReader 直接调用 X 网页使用的 GraphQL 接口。X 的 queryId 和请求参数可能变化,建议先在浏览器开发者工具的 Network 面板中找到成功的 HomeLatestTimeline 请求。

在 VS Code 的本机用户设置中填写:

{
  "ETFORME.xBearerToken": "your-bearer-token",
  "ETFORME.xCookie": "auth_token=...; ct0=...; twid=...",
  // 可选;留空时从 Cookie 的 ct0 读取。
  "ETFORME.xCsrfToken": "",
  // X 要求动态请求头时,从成功的浏览器请求中复制。
  "ETFORME.xExtraHeaders": {},
}

xBearerToken 和 xCookie 包含敏感信息,配置作用域为本机。不要提交到仓库或共享工作区设置。

配置完成后:

  1. 点击 Activity Bar 中的 xReader。
  2. 选择 For You 或 Following,打开只读 Markdown 时间线。
  3. 点击编辑器右上角的刷新按钮获取最新内容。
  4. 选择 查看推文详情,输入推文 URL 或数字 ID;也可以点击推文标题上方的 CodeLens。
  5. 展开“关注的作者”,使用分组右侧按钮搜索、清空搜索、切换排序或刷新。
  6. 在作者右侧置顶或取消置顶;点击作者的推文按钮可打开该作者时间线。

关注作者列表最多自动加载 500 人或 10 页。若 Cookie 中没有 twid,可填写 ETFORME.xFollowingUserId,或从浏览器请求复制 variables 到 ETFORME.xFollowingQueryParameters.variables。

如果 X 调整接口,可覆盖以下设置:

  • ETFORME.xTimelineEndpoint 与 ETFORME.xTimelineQueryParameters
  • ETFORME.xForYouTimelineEndpoint 与 ETFORME.xForYouTimelineQueryParameters
  • ETFORME.xTweetDetailEndpoint 与 ETFORME.xTweetDetailQueryParameters
  • ETFORME.xFollowingQueryParameters

对象类型的查询参数值均为字符串;variables、features 和 fieldToggles 应填写浏览器请求中的完整 JSON 字符串。

阅读 Wikipedia 内容

Wikipedia 阅读器直接匿名调用中文或英文站点的公开 Action API,不需要登录或配置密钥:

  1. 点击 Activity Bar 中的 Wikipedia。
  2. 点击“语言:中文/English”选择之后搜索使用的站点语言。
  3. 点击“搜索维基百科”,输入关键词并从搜索结果中选择文章;也可直接粘贴中英文 Wikipedia 文章链接。
  4. 文章会作为只读 et-for-me-wikipedia: Markdown 文档打开,编辑器右上角可刷新当前文章。
  5. 展开“搜索记录”可按原语言重新搜索;历史按语言和关键词去重,最多保留 50 条,并支持逐条删除或全部清空。

直接粘贴文章链接不会写入关键词历史。搜索历史无需登录即可保存在本机;已登录 VS Code 并启用 Settings Sync 时,也会同步到其他设备。

阅读知乎内容

知乎阅读器使用知乎网页当前调用的内部接口。先在浏览器开发者工具 Network 面板找到成功的知乎请求,将完整 Cookie 配置到 VS Code 的本机用户设置:

{
  "ETFORME.zhihuCookie": "your-cookie",
  "ETFORME.zhihuTimelineCount": 20,
  "ETFORME.zhihuCommentCount": 20,
  "ETFORME.zhihuExtraHeaders": {},
}

zhihuCookie 和 zhihuExtraHeaders 可能包含敏感信息,均为本机作用域;不要提交到仓库或共享工作区设置。如果知乎要求额外请求头,可把字符串请求头加入 zhihuExtraHeaders,其中 cookie、host 和 content-length 会被忽略。

配置完成后:

  1. 点击 Activity Bar 中的“知乎”。
  2. 选择“推荐”或“关注”,打开只读 Markdown 时间线;单页解析不足配置数量时会自动继续读取下一页。
  3. 选择“搜索”,输入关键词后打开只读 Markdown 搜索结果;搜索结果只展示回答和专栏文章。
  4. 点击内容标题上方的“查看详情”CodeLens,打开回答或专栏文章完整正文和配置数量的根评论;评论每次请求 10 条并自动翻页,累计最多 100 条。进入详情后点击“收藏文章”可把当前内容加入收藏。
  5. 选择“查看回答/文章”可直接粘贴 www.zhihu.com/question/.../answer/... 或 zhuanlan.zhihu.com/p/... 链接;问题主页包含多个回答,不支持直接打开。
  6. 进入回答或专栏文章详情后会自动加入“浏览记录”,收藏文章和浏览记录都会通过 VS Code Settings Sync 同步;点击记录可重新打开详情,右键可删除或清空。
  7. 点击编辑器右上角的刷新按钮,重新获取当前时间线、搜索结果或详情。

知乎网页接口不是公开 API,可能随时调整。ETFORME.zhihuRecommendEndpoint、ETFORME.zhihuFollowingEndpoint、ETFORME.zhihuSearchEndpoint 和 ETFORME.zhihuCommentEndpointTemplate 可在接口路径变化时覆盖默认地址。401/403 通常表示 Cookie 或额外请求头已失效,429 表示请求频率受限。

工作区约定

完整工作区可以按下面的结构组织:

english-workspace/
├── Words/                    # 已学单词 Markdown
├── Test/                     # 背诵记录和复习次数
├── Lesson/                   # 课程文章,用于课程序号跳转
├── Roots & Affixes/          # 词根、前缀、后缀 Markdown
├── assets/
│   ├── audios/               # 本地音频
│   └── videos/               # 本地视频
├── config/
│   ├── correlations.json     # 关联单词
│   ├── fileIds.json          # 文件 ID、优先释义和文件级关联词
│   ├── forms.json            # 词形、同义词、反义词、发散词等
│   ├── hints.json            # 图片提示
│   ├── ignores.json          # Check 时忽略的单词
│   ├── links.json            # 外部链接
│   ├── phrases.json          # 短语
│   ├── remarks.json          # 备注
│   ├── rps.json              # 词根、前缀、后缀索引
│   ├── similar.json          # 相似词
│   └── words.json            # 自定义 Markdown 释义
├── Todo.md                   # 待复习单词入口
├── Write.md                  # 默写素材,使用二级标题和代码块组织
└── Review.md                 # 自动生成的复习文档

config 文件多数可以通过单词右键菜单维护,无需手写。若需要手动创建,列表型文件先写入 [],words.json 写入 {},rps.json 使用下面的初始结构:

{
  "roots": [],
  "prefixes": [],
  "suffixes": []
}

常用入口

状态栏

入口 作用
FocusENG 初始化或刷新词库;悬停后还可执行上传、行内翻译、生成 UUID 和 Socket 连接等命令。
Check 开启或关闭未掌握单词高亮。
悬停模式 在默认、关联词、短语、备注、词性、图片、词根词缀、形式、相似词和复习次数等模式间切换。
Total 显示当前行或选中文本中的英文单词数量。

Markdown 右键菜单

命令 作用
Jump 跳转到当前单词在 Words 或 Review.md 中的定义。
Add 把当前单词加入 Todo.md。
Add Correlation 把当前单词的关联主词加入复习列表。
Translate 使用百度翻译处理选中文本。
Correlation 编辑关联单词。
Use File Correlation / Use Global Correlation 设置文件级或全局优先展示的关联词。
Phrases 编辑短语和中文释义。
Remark 编辑单词备注。
Forms 编辑词形、同义词、反义词、发散词和介词搭配。
Rps 编辑词根、前缀和后缀。
Similar 编辑形近或易混淆单词。
Hints 上传或绑定图片提示。
Links 编辑外部链接。
Merge Subtitle 合并选中的连续字幕块。
在Panel中打开 在当前光标位于视频链接时打开 Video Panel。

CodeLens

  • Words/*.md 和 Review.md 的标题:Pair、Shuffle。
  • Todo.md 的 ## Review:Sync、Generate。
  • 音频和视频时间轴:定位、播放、循环、片段和隐藏台词。
  • xReader 推文标题:查看推文详情和回复。

快捷键

Windows / Linux macOS 功能
Ctrl+Q Cmd+Q 跳转到 Markdown 中当前单词的定义。
Ctrl+E Cmd+E 开启或关闭行内翻译。
Ctrl+R Cmd+R 切换到 Desktop 0;此功能主要面向 Windows。
F5 — 显示当前光标所在单词的悬停内容。

配置项

在 VS Code 设置中搜索 ETFORME:

设置项 默认值 作用
ETFORME.baiduApiKeys [] 百度翻译账号列表。
ETFORME.showImg false 是否在悬停释义中显示图片。
ETFORME.phoneticSymbols BrE 发音类型:BrE 英音,AmE 美音。
ETFORME.uploadHost 空 上传与同步服务地址。
ETFORME.webHost 空 Pair 等 Web 页面地址。
ETFORME.authCode 空 上传文件或图片时使用的授权码。
ETFORME.articleFolders [] 限定允许上传的文章目录。
ETFORME.xBearerToken 空 X API Bearer Token,本机设置。
ETFORME.xCookie 空 X 完整 Cookie,本机设置。
ETFORME.xCsrfToken 空 可选 CSRF Token;默认读取 Cookie 中的 ct0。
ETFORME.xExtraHeaders {} X 请求所需的额外请求头。
ETFORME.xTimelineEndpoint 内置地址 Following 时间线 GraphQL 地址。
ETFORME.xTimelineQueryParameters {} Following 时间线查询参数覆盖。
ETFORME.xForYouTimelineEndpoint 内置地址 For You 时间线 GraphQL 地址。
ETFORME.xForYouTimelineQueryParameters {} For You 时间线查询参数覆盖。
ETFORME.xTimelineCount 20 每次时间线请求的推文数量。
ETFORME.xTweetDetailEndpoint 内置地址 推文详情和回复 GraphQL 地址。
ETFORME.xTweetDetailQueryParameters {} 推文详情查询参数覆盖。
ETFORME.xFollowingUserId 空 当前 X 账号的数字用户 ID。
ETFORME.xFollowingCount 100 每页请求的关注作者数量。
ETFORME.xFollowingQueryParameters {} Following 作者列表查询参数覆盖。
ETFORME.zhihuCookie 空 知乎请求使用的完整 Cookie,本机设置。
ETFORME.zhihuExtraHeaders {} 知乎请求所需的额外字符串请求头。
ETFORME.zhihuTimelineCount 20 推荐每次 10 条,累计 30 条;其它使用此值。
ETFORME.zhihuRecommendEndpoint 内置地址 知乎推荐时间线接口地址。
ETFORME.zhihuFollowingEndpoint 内置地址 知乎关注时间线接口地址。
ETFORME.zhihuSearchEndpoint 内置地址 知乎搜索接口地址。
ETFORME.zhihuCommentCount 20 评论每次请求 10 条,循环读取,最多 100 条。
ETFORME.zhihuCommentEndpointTemplate 内置地址 知乎根评论接口模板。

项目结构

src/
├── api/             # 远端 API 请求与类型
├── commands/        # 命令、悬停、补全、翻译和字幕交互
├── dictionaries/    # 内置词典数据
├── panels/          # Word、Audio、Video、Tool Webview Provider
├── statusBars/      # 状态栏入口
├── stores/          # 扩展运行时状态和命令常量
├── test/            # Mocha / VS Code 扩展测试
├── types/           # TypeScript 类型
├── utils/           # Markdown 解析、文件读写和通用工具
├── webview/         # 由独立前端项目构建生成,不在本仓库修改
├── wikipediaReader/ # Wikipedia 搜索、Markdown 转换、历史和侧边栏
├── xReader/         # X GraphQL 客户端、解析、Markdown 和侧边栏
├── zhihuReader/     # 知乎时间线、回答/文章解析、Markdown 和侧边栏
└── extension.ts     # 扩展入口

扩展使用 TypeScript、webpack 5、marked、lodash、axios、Socket.IO、oxlint 和 oxfmt。Webview 前端由独立项目构建到 src/webview/webview-dist,此目录及 dist 都属于构建产物。

本地开发

安装依赖:

npm install

启动 webpack 监听,然后在 VS Code 中按 F5 启动 Extension Development Host。项目的 F5 配置会先通过 CLI 启动开发宿主,再附加 Node 调试器,避开部分 VS Code 版本在自动注入调试器时导致的扩展宿主 134 崩溃:

npm run dev

此模式保留普通断点调试,但在附加完成前,扩展的激活代码可能已经执行。停止调试会断开连接并保留开发宿主窗口;重新按 F5 前先关闭该窗口。如果提示 Inspector 端口 9333 已被占用,也请先关闭旧的开发宿主。

该配置用于规避 VS Code 的 F5 宿主启动问题 #336233。如果需要调整调试端口,请同步修改 .vscode/launch.json 和 .vscode/tasks.json 中的 9333。

常用检查和构建命令:

npm run compile          # webpack 开发构建
npm run compile-tests    # 编译测试
npm run lint             # oxlint
npm test                 # VS Code 扩展测试
npm run package          # 生产构建
node --test scripts/test-start-extension-host.cjs # 调试启动脚本回归

项目原有的 ws 可选依赖 bufferutil、utf-8-validate 告警可以忽略。开发时不要修改 node_modules、src/webview、src/webview/webview-dist、webview-dist 或 dist。

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft