code-office 是一个独立的 VS Code 扩展,面向 VS Code 内的本地 HWP/HWPX
编辑和跨格式文档审阅:韩国 HWP/HWPX、可编辑 DOCX、Markdown 笔记、Office
文件、PDF、压缩包、图片、HTTP request 文件、Registry 文件和 HTML。
- 项目主页:https://lidge-jun.github.io/code-office/
- 仓库:https://github.com/lidge-jun/code-office
- VS Marketplace:https://marketplace.visualstudio.com/items?itemName=jun6161.code-office
- Open VSX:https://open-vsx.org/extension/lidge-jun/code-office
- GitHub Releases:https://github.com/lidge-jun/code-office/releases
- Architecture notes: docs/ARCHITECTURE.md
- HWP/HWPX compatibility matrix: docs/HWP-HWPX-COMPATIBILITY.md
- Competitive context: docs/COMPETITIVE-CONTEXT.md
- FAQ: docs/FAQ.md
发布状态:public registry package 从 main 发布。VS Marketplace 使用
jun6161.code-office;Open VSX 使用单独的 Open VSX VSIX,其 manifest
publisher 为 lidge-jun,对应 lidge-jun.code-office。本地 VSIX 打包仍是
验证 gate 和 source-build fallback。基于 tag 的 GitHub Release 会同时提供
Marketplace/Open VSX VSIX、SHA256SUMS.txt 校验和与 artifact provenance
attestation。
核心差异是 内置本地 rhwp-studio 运行时的 HWP/HWPX 编辑。常见 .hwp /
.hwpx 文件默认无需 Hancom Office、LibreOffice 或远程服务即可打开、编辑和保存。
AI 工具会带来更多草稿、引用材料、会议记录和来源文档。这个扩展不声明提供 AI 生成能力;它提供的是 VS Code 内的文档审阅 surface,让生成的 DOCX 报告、 Markdown 笔记、韩国 HWP/HWPX 参考文件和需要确认 provenance 的资料留在同一个 workspace。
本项目不隶属于 Obsidian、Hancom、Microsoft、cweijan/vscode-office、 rjwang1982/vscode-office 或 rhwp,也不代表这些项目的官方立场。
- HWP/HWPX 编辑器:完整 rhwp 工具栏、文本编辑、表格/单元格选择、本地 WASM 运行时、VS Code 原生保存流程。
- 格式感知保存:HWP 写回 HWP bytes,HWPX 写回 HWPX zip/XML package,格式 不匹配的输出会在写入磁盘前被拒绝。
- Office 与 workspace surface:基于 SuperDoc 的可编辑 Word 文档、spreadsheet/PDF/ PowerPoint 审阅、图片、字体、压缩包、HTTP request、Registry、HTML。
- Markdown 工作流:基于 Vditor 的 Markdown 编辑,继承 PDF/DOCX/HTML 导出路径。
- 独立 AGPL 表面:repository metadata、GitHub Pages、package icon、README、 LICENSE 和 NOTICE 指向本项目,同时在 NOTICE 中保留必要的 upstream MIT 来源说明。
以下截图来自本仓库的本地 smoke samples。Office/PDF/HWP 截图是在 VS Code Insiders 中安装 packaged VSIX 后捕获的;HTML 截图使用同一个临时 review sample 直接渲染,便于做干净的视觉检查。临时样例生成在仓库外,因此不会修改 tracked vendor documents。
可以从 public registry 安装:
也可以构建本地 VSIX:
npm install
npm run release:local然后在仓库根目录安装生成的 package:
code --install-extension ./code-office-<version>.vsixVS Code Insiders:
code-insiders --install-extension ./code-office-<version>.vsix --force从 GitHub Release 安装时,请同时下载 VSIX 和 SHA256SUMS.txt 并校验:
shasum -a 256 -c SHA256SUMS.txt安装后打开支持的文件,并在 VS Code 询问编辑器时选择 code-office。
HWP/HWPX 文件仍通过继承的 cweijan.hwpEditor custom editor ID 注册,以保持
与既有 VS Code custom editor association 的兼容。
| 格式 | 扩展名 | 模式 | 说明 |
|---|---|---|---|
| HWP / HWPX | .hwp, .hwpx |
Viewer + 可编辑 | 默认以内置 rhwp Viewer 打开,并在同一个 cweijan.hwpEditor 标签内切换 Edit/View。HWP 保存为 HWP,HWPX 保存为 HWPX。 |
| Markdown | .md, .markdown |
可编辑 | Vditor 编辑器,支持 PDF/DOCX/HTML 导出。 |
| Word | .docx, .dotx |
可编辑 | 基于 SuperDoc(@superdoc-dev/react)的 DOCX 渲染/编辑,并接入 VS Code custom editor 保存 lifecycle。 |
| Excel | .xls, .xlsx, .xlsm, .csv, .ods |
预览 / 既有编辑路径 | 继承 spreadsheet viewer。 |
| PowerPoint | .pptx, .pptm, .ppsx |
只读 viewer | PowerPoint-like viewer,提供视觉缩略图、可调/可折叠侧栏、speaker notes、grid、fullscreen、presenter view 与 zoom。 |
| Legacy PowerPoint | .ppt |
可选 fallback | LibreOffice opt-in,默认关闭。 |
.pdf |
预览 | 内置 PDF viewer。 | |
| 图片 | .jpg, .png, .gif, .webp, .tif, .ico, .svg |
预览 | 图片与 SVG preview。 |
| 字体 | .ttf, .otf, .woff, .woff2 |
预览 | Font viewer。 |
| 压缩包 | .zip, .jar, .vsix, .rar, .apk |
预览 / extract | Zip/RAR package browsing。 |
| HTTP / REST | .http, .rest |
Tooling | 继承 Rest Client 系列 helper。 |
| Windows Registry | .reg |
预览 / navigation | Registry syntax 与 jump helper。 |
| HTML | .html, .htm |
预览 | WebView HTML preview。 |
HWP 支持使用 edwardkim/rhwp 的 pinned local
build。运行时保存在 vendor/rhwp-studio-dist,构建时复制到
resource/rhwp-studio。
PDF export 会优先使用 resource/rhwp-native/<platform>-<arch>/ 中的 native
rhwp helper。该 helper 按生成 VSIX 的平台打包;如果用户平台或 CPU 架构不匹配,
命令会安全 fallback 到 image PDF export。
首次打开使用 Viewer surface 以获得更稳定的渲染。点击 Edit 进入 rhwp
编辑器,点击 View 返回 Viewer。扩展会记住用户最后选择的模式,并用于后续
HWP/HWPX 标签页。
HWP/HWPX file
-> HwpEditorProvider
-> React HWP view
-> Viewer / Editor mode controller
-> local rhwp-studio bridge
-> rhwp WASM document engine
-> exportHwp/exportHwpx
-> VS Code saveCustomDocument
当前可用能力:
- 默认以 Viewer 模式打开
.hwp和.hwpx。 - 可通过 HWP 工具栏或 Command Palette 在 Viewer 与 Editor 之间切换。
- 编辑文本并使用表格/单元格选择。
- 通过
Cmd+S/Ctrl+S或工具栏按钮保存。 - 保留目标格式:
.hwp写回 HWP,.hwpx写回 HWPX。 - 从 dirty Editor 切换到 Viewer 时,会先走 VS Code 原生保存 lifecycle;只有保存 成功后才切换。保存失败或取消时仍留在 Editor,且不会更新最后模式。
- 可通过 Command Palette 导出 SVG 页面、显示 debug overlay、dump paragraph metadata。Viewer developer menu 也提供 SVG export 与 debug overlay。
- 在 HWP 标签页内使用
Cmd+F/Ctrl+F。Viewer 会高亮渲染后的 SVG 文本并移动 active hit;Editor 会打开 rhwp 自带 find control,而不是触发 VS Code 默认 custom editor find,并保持重复 Enter 为 next/previous find。 - 默认使用内置本地运行时,不依赖网络。
已知限制:
- rhwp 不是 Hancom Office 引擎,复杂文档可能存在 layout 或 round-trip 差异。
- 公开支持范围记录在 docs/HWP-HWPX-COMPATIBILITY.md。 私人文档不提交为 fixture;公开 issue 应使用 synthetic 或 redacted sample。
- 不内置 Hancom/Microsoft 专有字体,只使用开源字体和系统字体 fallback。
- native-quality HWP PDF export 只有当 VSIX 中包含当前
process.platform和process.arch对应 helper 时才可用;其他平台继续使用 image-PDF fallback。 code-office.hwp.studioUrl是高级可信远程运行时 override,默认仍是本地 bundle。
| 设置 | 默认值 | 用途 |
|---|---|---|
code-office.hwp.experimentalSave |
true |
显示 HWP/HWPX 工具栏保存按钮。VS Code 原生保存仍可用。 |
code-office.hwp.studioUrl |
"" |
可选可信远程 rhwp studio URL。留空则使用本地 bundle。 |
vscode-office.editorMode |
继承值 | Markdown editor mode。 |
vscode-office.pptx.libreOfficePath |
"" |
legacy .ppt LibreOffice fallback 路径。 |
vscode-office.pptx.conversionTimeoutMs |
30000 |
optional LibreOffice conversion timeout。 |
部分 vscode-office.*、office.*、cweijan.* ID 为兼容已有设置、快捷键和
custom editor association 而保留。runtime ID migration 会作为单独阶段处理。
旧的 vscode-obsdian.hwp.* 值会作为 legacy fallback 读取;新的文档和 package
setting 以 code-office.hwp.* 为准。
本地发布前请运行:
npm run release:local该命令会依次执行 TypeScript 检查、production build、HWP hardening 校验、VSIX
打包,以及 VSIX 内容检查。它会确认扩展包包含本地 rhwp-studio runtime 和 WASM
资源,同时排除 upstream samples、vendor source、docs site 和开发脚本。
npm run smoke 也执行同一个完整 gate。
基于 tag 的 GitHub Release 由 .github/workflows/release.yml
生成。该 workflow 运行同一个 local gate,构建 Open VSX publisher-adjusted VSIX,
写入 SHA256SUMS.txt,创建 artifact provenance attestation,并在 v*.*.*
tag 上创建 GitHub Release。如果仓库配置了 VSCE_PAT 和 OVSX_PAT secrets,
同一个 tag workflow 也会发布到 VS Marketplace 和 Open VSX。普通 main push
只生成 CI VSIX artifact,不发布 registry。
发布前手动 smoke test:
| 步骤 | 预期结果 |
|---|---|
| 安装生成的 VSIX 到 VS Code 或 VS Code Insiders。 | 扩展可激活,HWP/HWPX custom editor 可选。 |
打开 .hwp,修改并保存,关闭后重新打开。 |
文档仍可打开,保存后仍是 HWP。 |
打开 .hwpx,编辑文字,选择表格单元格,保存,关闭后重新打开。 |
文档仍可打开,保存后仍是 HWPX,表格/单元格交互正常。 |
| 打开 Markdown、HTML、XLSX、DOCX、PDF、PPTX、图片和压缩包样本。 | 既有 viewer/editor 路径仍可用。 |
| 检查 HWP 载入状态和保存 UI。 | 不再出现 stale loading banner 或错误的 Save As 提示循环。 |
Marketplace publish 是单独 gate:
npm run publish该脚本先运行 npm run release:local,再调用 vsce publish --no-dependencies。
Open VSX publish 使用单独 gate,因为 Open VSX namespace 来自 VSIX manifest publisher:
npm run publish:openvsx该脚本先通过同一个 local release gate,然后生成 publisher 为 lidge-jun 的
code-office-<version>-openvsx.vsix 并用 ovsx 发布。运行前需要设置
OVSX_PAT 或 OVSX_TOKEN。普通 VS Marketplace VSIX 保持 publisher jun6161。
产品页位于 docs/,由 .github/workflows/pages.yml
部署。它只是文档/营销页面;扩展运行时默认不依赖 GitHub Pages。
logo 源文件是 images/logo-new.svg,package icon 是 images/logo-new.png,
GitHub Pages preview 使用 docs/assets/logo-new.png。当前 logo 以 OpenAI 图片生成
concept 为起点,再手动简化为 SVG;它不是 upstream vscode-office artwork 或任何
third-party app logo 的派生图。
近期版本(v3.7.6–v3.7.50)已交付:Obsidian-style Markdown Live Preview /
Raw Source baseline、wikilink authoring autocomplete、HWP Viewer/Editor 模式、
native-first HWP PDF export、SuperDoc DOCX View/Edit、PowerPoint-like PPTX
viewer、release-trust artifacts、DOCX dark-mode parity。
进行中(devlog/_plan/260627_upstream_rhwp_chase/):rhwp re-pin 执行(R1 决定 →
v0.7.16)及剩余 SuperDoc viewer parity。
待办:
- 当前 PowerPoint-like 只读 UX 之后的 PPTX visual fidelity 与 large-deck 性能稳定化。
- 面向复杂 legacy presentation 的 optional LibreOffice fallback。
- HWP/HWPX fixture-based hardening、rhwp upstream catch-up 与 smoke test 扩展。
- Markdown raw/live mode devlog closure(
devlog/_plan/260601_markdown_live_raw_mode)。
内部阶段记录见 structure/roadmap.md。
本项目在 bundling SuperDoc 后以 AGPL-3.0-or-later 发布,同时仍包含
MIT 许可的 vscode-office 系列代码:
- cweijan/vscode-office,Weijan Chen 的原始项目
- rjwang1982/vscode-office,RJ.Wang 维护的 fork
DOCX 编辑使用 AGPLv3/商业双许可的 SuperDoc(@superdoc-dev/react)。
HWP/HWPX 编辑使用 edwardkim/rhwp 的本地构建。
完整声明见 NOTICE.md;顶层 LICENSE 为 AGPL-3.0-or-later。






