CIDE:基于 Electron 生态的仓颉桌面 IDE 项目

一款面向仓颉编程语言(Cangjie)的轻量级桌面 IDE,基于 Electron + Monaco Editor 构建,社区维护 / 非官方项目,Apache-2.0 开源。 核心能力:API 签名直接解析用户本机 SDK 的 .cjo 二进制,得到 44 个 std 包 / 13,906 条签名(类型 / 成员 / 参数 / 返回 / 泛型约束),此过程不启动编译器、不需要源码;成员的官方中文说明按需从官方文档站抓取并做进程内缓存,带离线降级。 同时集成:仓颉 LSP 实时诊断、基于 lldb-vscode 的调试(断点 / 条件断点 / 日志点 / 变量查看)、测试运行器与 LCOV 行级覆盖率、九项代码生成、Markdown + KaTeX 笔记、内嵌终端、AI 助手。 仓库自带 examples/review-demo 演示工程,可逐条复现全部功能。.cjo 与官方文档内容均不随本软件分发。

分支1Tags6
当前项目代码仓暂无内容
CIDE logo

CIDE

一款面向 仓颉编程语言 的轻量级桌面 IDE A lightweight, Chinese-first desktop IDE for the Cangjie Programming Language, built with Electron.

⚠️ 社区版 / 非官方项目。 CIDE 由个人开发者维护,与华为、仓颉编程语言官方团队无任何隶属或背书关系。 “仓颉 / Cangjie” 为各自权利人的商标。本项目仅为提升开发者体验而构建的第三方工具。

📖 技术实现文章不跑编译器,我把仓颉 std 的 13,906 条 API 签名从 .cjo 二进制里挖了出来


✨ 为什么是 CIDE

CIDE 的定位是「学习型 + 全流程」的仓颉 IDE:把编码、调试、测试、覆盖率、文档、笔记、AI 辅助收在同一窗口里, 主打几项官方工具链短期不覆盖的体验缝隙。

能力 说明
🔍 本地 .cjo 签名索引 直接解析 SDK 的 .cjo 二进制,不启动编译器、不联网即可离线还原 1.3 万+ 条 API 签名(实测 44 个 std 包 / 13,906 条:类型 / 成员 / 参数 / 返回 / 泛型约束),秒开、可搜索。
🈶 成员级中文说明内联 按需从官方文档站抓取,把类型与每个成员的中文「功能」说明内联进 API 面板;文档版本自动跟随本机 SDK(不再写死旧版),旧版链接 404 时自动回退;带缓存与离线降级。
📚 内置仓颉入门教程 侧栏「仓颉教程」面板:从零开始的中文系列课,环境搭建 → 变量类型 → 运算符 → 分支 → 循环……每课示例都可直接在 IDE 里编译运行。课程内容经 GitCode 热更新,不用等新版本发版。
🐞 调试 基于 lldb-vscode,支持断点 / 条件断点 / 日志点 / 暂停时源码行尾直接显示变量实际值 / 树状变量面板与悬停求值 / Attach 附加到已运行进程;启动瞬态失败自动重试降级。
🧠 编辑器智能增强 Inlay Hints 类型内联提示、语义选中高亮、面包屑导航(点击符号跳转)、Ctrl+Shift+T 工作区符号搜索,全部基于仓颉 LSP 现成能力接线。
🤖 仓颉专属 AI 上下文 AI 助手会把「你正在看的 API 签名 + 官方中文说明 + 实时 LSP 诊断」注入 prompt,让模型基于真实仓颉 API 作答,而非臆造。支持 OpenAI 兼容接口,可自带 Key。
🧩 代码生成矩阵 属性、构造器、getter/setter、toString / equals / hashCode、序列化、接口实现桩、Override 等九项一键生成。
🧪 测试与覆盖率 IntelliJ 风格的测试运行器(发现 / 运行 / 重跑失败 / 增量结果)+ LCOV 覆盖率解析与行级高亮。
实时语法检查 接入仓颉 LSP,编辑即诊断。
📝 笔记 + 公式 集成 Toast UI Editor 与 KaTeX,Markdown、代码高亮与数学公式一体化,边学边记。
💬 直接联系作者 菜单 Help ▸ 联系作者 / Contact 提供企业微信二维码,环境配置、编译、调试问题可直接咨询;二维码走远端热更新,无需改版即可更换。
💻 内嵌终端 通过 node-pty 在 IDE 内直接跑命令行。

编辑器内核采用 Monaco Editor(与 VS Code 同源)。

🖼️ 界面

主界面 —— Monaco 编辑器、工程树、仓颉 LSP 实时诊断(左上 LSP: Ready)与内嵌服务面板:

CIDE 主界面:Monaco 编辑器、仓颉 LSP 状态、工程树与服务面板

API 参考面板(右侧)—— 离线解析 SDK 的 .cjo 得到 1.3 万+ 条签名,按「包 ▸ 类型 ▸ 成员」三级下钻(图中 std.collection ▸ ArrayList<T> ▸ size),并把官方中文说明直接内联到每个成员上:

CIDE API 参考面板:包/类型/成员三级列表与成员级中文说明

调试 —— 基于 lldb-vscode,图中停在第 10 行断点上:编辑器高亮当前行,下方调试面板给出线程列表与变量求值结果(total = 204 即 1²+2²+…+8²,可在源码里逐行验算):

CIDE 调试界面:断点暂停、线程与变量面板

🆕 近期更新

2026-09 更新:

  • 行末引用数(Code Vision):类型、方法、变量等标识符行尾显示引用数量;接华为官方语言服务精确统计,单文件模式自动本地兜底。点击 1 处直接跳转,多处弹出 IntelliJ 风格引用列表(文件名、行号、代码预览,键盘可操作)。
  • OpenSSL 内置与一键下载:stdx crypto/net 所需的 OpenSSL 3.x 开箱即用、零配置;设置 → OpenSSL 可查看当前版本与路径,并下载与仓颉 SDK 配套的其他版本(SHA-256 校验,安装目录自选,可随时恢复内置)。
  • 内置仓颉中文教程:软件内含持续更新的仓颉入门课程,示例均经真实编译运行,边看边练零配置。
  • 编辑器体验优化:点击行号只切换断点、不再选中整行;断点红点移至行号右侧并加大;Build/Result 清空按钮改为垃圾桶图标。
  • 主题与菜单可读性:统一 Darcula 各区域底色;加深浅色主题次要文字;修复菜单选中态文字对比度过低;File → Recent Projects 改为点击展开(不再悬停自动弹出)。

  • 内置仓颉入门教程(持续连载):左侧活动栏点「仓颉教程」图标即开。目前已上线 5 课—— ①环境搭建与第一个仓颉程序 ②变量、常量与基本数据类型 ③运算符与标准输入输出 ④分支结构与 match 表达式 ⑤循环结构 while / for / Range,后续课程持续更新。课程里的每段示例都在仓颉 SDK 下真实编译运行验证过, 输出与课文一致;读到不懂的 API 可直接在右侧 API 面板查签名与中文说明。课程 markdown 与软件同仓库维护, 打开面板时经 GitCode 按 git sha 增量同步,作者发新课不必等软件发版;断网时自动回退安装包内置快照。
  • API 中文说明持续补全:API 参考面板在原有 1.3 万+ 离线签名之上,把官方文档的类型说明与成员级 「功能」说明逐条内联(含枚举值、自由函数),并标注文档来源版本;文档版本号改为运行 cjc --version 随本机 SDK 自动解析,新版 SDK 文档 404 时自动回退内置兼容版本,不再把 1.1.3 写死在代码里。
  • 调试时变量实际值一目了然:命中断点暂停后,当前栈帧内的局部变量以浅灰色内联显示在源码行尾 (IDEA 风格 inline values),不必在 Variables 面板和代码之间来回扫视;容器(数组 / ArrayList / HashMap / Option / 枚举)在 Variables 面板与鼠标悬停浮窗里都可逐层展开,大数组分页「加载更多」,HashMap 与枚举包装层 已被穿透为逻辑 JSON 视图,看到的就是程序里的真实结构而不是 lldb 的内部字段。
  • Attach 附加调试:服务工具栏的「附加到进程」按钮(或命令面板搜 Attach Debugger to Process)可以 附加到已经在运行的仓颉进程,跳过构建直接下断点排查;停止调试只分离连接,不会杀掉目标进程。
  • 联系作者Help ▸ 联系作者 / Contact 弹出企业微信二维码,配置 SDK、编译或调试卡住时可直接扫码咨询; Bug 与功能建议仍请提到仓库 Issues。二维码图片从仓库远端拉取(HTTPS + 类型/大小校验 + 安装包内置兜底图), 换码只需更新仓库图片,老用户自动看到新码。
  • 免安装绿色版:发行版同时提供 Portable zip,解压即用、无需管理员权限,所有配置与缓存写入程序目录的 data 文件夹,可整目录拷到 U 盘迁移,删目录即完全卸载(详见下文「下载与安装」)。

🎬 演示与复现

仓库自带一份最小可运行示例工程 examples/review-demo,上面三张截图与演示录屏都出自它。它只依赖仓颉标准库 std,不引入任何 stdx 包,也不含网络调用——评审可以不看视频,直接按下表自己复现每一项:

演示点 操作 预期画面
断点与变量 main.cj 第 10 行行号上单击,再 Run ▸ Debug 自动 cjpm build -g 后精确停在第 10 行,Variables 里 total = 204
单步执行 调试工具条 Step Over ×2 执行指针从 sumOfSquares 内部返回到第 25 行调用点,再落到第 26 行
悬停求值 鼠标停在变量上 悬浮窗直接给出类型与取值,无需加打印
代码生成 打开 src/inventory.cj,编辑器右键 ▸ Generate Code 该类初始只有 3 个私有字段;依次生成构造器 / getter·setter / toString(),保存后 cjpm build 直接通过
运行工程 工具栏 Run Result 页签输出 sum of squares = 204classified as large
单元测试 底部 Test 面板点运行 Passed: 2 · Failed: 0 · Total: 2,用例耗时精确到毫秒
行级覆盖率 Test 面板点覆盖率按钮 汇总 Coverage 25% (15/59 lines),编辑器内绿色已覆盖 / 红色未覆盖(main() 故意未被测试触达)
API 索引 侧栏 API Reference ▸ SDK std.collection 45 类型 / 58 自由函数;展开 ArrayList<T> 得 60 个成员带完整签名

🎬 完整演示视频(2 分 56 秒 / 1920×1080 / 30fps / 含中文硬字幕):见本仓库 发行版(Releases) 页 v1.1.0 资产中的 CIDE-demo-review-1080p.mp4,同处附可单独下载的字幕 CIDE-demo-review-1080p.srt

视频体积较大故不入库,改由发行版附件分发;上表即为视频的逐步可复现脚本——不看视频也能自己跑一遍。 打开方式:File ▸ Open Projectexamples/review-demo 文件夹即可,无需额外配置。

📦 下载与安装

🖥️ 平台支持:当前仅提供 Windows x64 安装包与免安装包(Windows 10 / 11)。 macOS / Linux 支持在计划中——仓颉官方工具链已提供 Apple Silicon(M 系列芯片)版本,但作者目前没有 Mac 设备进行真机调试,暂不发布,避免交付未经验证的版本。 如果你使用 M 系列芯片 Mac 并愿意参与早期测试,欢迎通过下方「反馈与联系」加企业微信或在 Issues 留言。

分三条路:源码在本仓库直接 git clone可执行文件不入库,发布在 GitCode 的 发行版(Releases) 附件里,提供安装版与免安装版两种。

方式一:安装版(推荐大多数用户)

  1. 发行版页 下载 Windows 安装包 (CIDE-Beta-<版本>-x64-Setup.exe,当前为 CIDE-Beta-1.2.0-beta.1-x64-Setup.exe,约 107 MiB),运行后按提示安装,可自选安装目录、自动创建桌面与开始菜单快捷方式。

  2. 同一处附带同名 .sha256 校验文件,下载后可校验完整性:

    Get-FileHash .\CIDE-Beta-1.2.0-beta.1-x64-Setup.exe -Algorithm SHA256
    

方式二:免安装绿色版(适合 U 盘携带 / 公司电脑受限场景)

  1. 在发行版页下载 CIDE-Beta-<版本>-x64-Portable.zip(当前为 CIDE-Beta-1.2.0-beta.1-x64-Portable.zip,约 141 MiB),解压到任意目录。
  2. 双击解压目录里的 CIDE.exe 即可运行,无需安装、无需管理员权限;目录内附《使用说明.txt》。
  3. 所有设置、缓存与日志都写在程序目录的 data 文件夹中:整个文件夹拷到 U 盘 / 另一台电脑即可带走配置;删除文件夹即完全卸载,不在系统注册表与 %APPDATA% 留残留。
  4. 便携版升级:下载新 zip,用新目录里的文件覆盖旧目录、保留旧的 data 文件夹即可继承全部配置。

两种方式首次使用都需在本机安装 仓颉 SDK(Cangjie SDK,当前适配 1.1.3),CIDE 的 .cjo 索引、LSP 语法检查与调试都依赖它。

若安装时 Windows 提示「未知发布者」,或在「Windows 已保护你的电脑」页面停留,是因为社区版未做代码签名,属正常现象。前者点「更多信息 ▸ 仍要运行」即可;安装完成后首次启动若被 SmartScreen 拦截,可在 exe 上右键 ▸ 属性 勾选「解除锁定」。

⚠️ 关于「检查更新」:社区版未配置代码签名证书与更新清单密钥,因此应用内的自动更新当前不可用(会提示缺少更新清单公钥)。升级请回到本仓库 发行版 页手动下载新安装包,覆盖安装即可。

🧭 快速上手

应用内也带了速查:菜单 Help ▸ Documentation 随时打开内置图文说明(工程 / 编辑器 / 终端 / Git / 运行调试 / 设置)。 下面是四大主流程的速览。

1. 安装并打开工程

  • 先在本机装好 仓颉 SDK(当前适配 1.1.3);若未被自动识别,到 File ▸ Settings 配置 SDK 路径。
  • 新建工程:File ▸ New Project ▸ Cangjie,填 Project Name、Location,选 SDK VersionOutput Type(executable / static / dynamic),需要时补 stdx 路径,点 Create。
  • 打开已有工程:File ▸ Open Project 选文件夹;在左侧 Project 面板双击文件即可在编辑器打开,未保存的标签页会有修改标记。
  • 想直接看效果:File ▸ Open Project 选仓库内的 examples/review-demo,即可复现上文「🎬 演示与复现」一节的全部画面。

2. 编辑与补全

  • 基于 Monaco 内核,提供语法高亮、智能补全(SDK 感知的包 / 嵌套模块导入补全、上下文方法补全)与实时诊断。
  • 编辑器内置 Inlay Hints 类型提示语义选中高亮(点中一个符号,同名读写处一起高亮)与面包屑导航(编辑器顶部按「文件 ▸ 类型 ▸ 函数」显示当前位置,点击即可跳转)。
  • Ctrl+Shift+T 打开工作区符号搜索,输入名称跨整个工程定位类型 / 函数 / 变量,回车直接跳到对应行。
  • 错误 / 警告 / 提示在右上角状态指示汇总,也可看 Problems 面板;编辑类操作在 Edit 菜单。

3. 运行与调试

  • Run ▸ Run(或工具栏 Run 按钮,快捷键 Ctrl+R)运行;Run ▸ Debug(工具栏 Debug 按钮)进入调试。运行 / 调试针对当前活动文件所属的服务,构建输出看 Build、程序输出看 Result
  • 在代码行上打断点,支持条件断点 / 日志点;调试中可查看变量、单步(step over)、继续(continue),底层是真实的仓颉 lldb-vscode 调试器。
  • 暂停时源码行尾会以浅灰内联显示当前栈帧局部变量的实际值;Variables 面板与悬停浮窗支持数组 / HashMap / Option 等容器逐层展开,大数组分页加载。
  • 需要排查已经在运行的程序(如带参启动、长期驻留的服务)时,点服务工具栏的「附加到进程」按钮,选中目标进程即可 Attach 调试;停止调试只断开连接,不会结束目标进程。
  • 若调试器起不来,多因缺少内置 Python 运行时——从源码运行时先执行 npm run python:fetch(见下)。

4. API 参考面板(含中文说明)

  • 点侧栏的 API Reference 图标开合面板,切到 SDK 标签即可浏览 std / stdx 的类型与成员签名(本地 .cjo 索引,秒开可搜索)。
  • 联网时按需从官方文档抓取,把类型和每个成员的中文「功能」说明内联显示;文档版本自动匹配本机 SDK 版本(运行 cjc --version 解析),抓不到时自动回退兼容版本;带缓存与离线降级。
  • 面板里选中的 API 会被 AI 助手自动纳入上下文,让模型基于真实仓颉 API 作答。

5. 跟着内置教程学仓颉

  • 点左侧活动栏的 仓颉教程 图标开合教程面板,用顶部下拉切换课次,面板可左右拖宽、边看边在编辑器里敲代码。
  • 教程按 git sha 从仓库增量热更新:看到「检查更新」按钮可手动同步,新课上线不用重装软件;离线时使用安装包内置的课程快照。
  • 遇到问题:Help ▸ 联系作者 / Contact 扫码加企业微信直接问;Bug 与功能建议欢迎提到仓库 Issues。

🚀 从源码运行

# 环境要求:Node 22.2.x、npm 10.x;本机已安装仓颉 SDK
npm install
npm run python:fetch   # 拉取调试用的内置 Python 运行时(首次克隆后需要)
npm start              # 启动 Electron 开发实例

关于 python:fetch:CIDE 的断点调试依赖一个自带的 CPython 3.11 运行时(供 lldb-vscode 加载), 因体积较大已被 .gitignore 排除、不随仓库分发。npm run python:fetchscripts/pull-python.js)会从 python.org 下载官方 embeddable 包、解压到 bundled-resources/python/ 并自动套用调试所需的自定义 (sitecustomize.py 与启用 import sitepython311._pth)。跳过此步也能编辑 / 语法检查,但无法启动调试器。

常用脚本:

npm run lint           # ESLint 静态检查
npm test               # 全量非 E2E 测试(单元 + 集成 + 静态 + 性能)
npm run test:unit      # 仅单元测试
npm run python:fetch   # 拉取/修复调试用内置 Python 运行时(-- --force 强制重下)
npm run icons          # 从母图重新生成全套图标(PNG + ICO)
npm run build:dir      # 打包为免安装目录版(electron-builder --win dir)
npm run build          # 构建 beta 渠道安装包(NSIS,产物在 dist-release/,含清单与冒烟校验)
npm run build:portable # 构建免安装绿色版(产物 dist-portable/ 下的 Portable.zip,自动写入便携标记与使用说明)

🏗️ 打包发布

  • 打包配置见 build/electron-builder.config.jspackage.jsonbuild 段:npm run build 产出 Windows x64 NSIS 安装器(dist-release/,含 latest.json 更新清单与 sha256,并自动执行产物冒烟校验);npm run build:portable 产出免安装绿色版 zip(dist-portable/)。
  • 免安装版机制:便携 zip 解压目录内带 CIDE.portable 标记文件,主进程据此把 userData 重定向到程序目录 data/(逻辑见 js/core/portable-core.js);打包脚本同时写入中文《使用说明.txt》。安装版不含此标记,仍按系统标准位置存储数据。
  • 内置 Python 运行时:打包前若已 npm run python:fetchbundled-resources/python 会经 extraResources 一并进包,得到「自带调试运行时」的完整安装包与免安装包;否则安装后需用户自行 python:fetch 或依赖系统环境。
  • 代码签名(可选):准备好 .pfx / 证书后走 npm run release:beta(带 --require-signing);证书文件已被 .gitignore 排除,切勿入库。
  • 完整发布流程见 docs/RELEASE.md

🗂️ 项目结构

main.js / preload.js / index.html / splash.html   Electron 入口与预加载
js/core/      纯逻辑模块(如 .cjo 签名解码、cjo 目录发现),与 DOM/Electron 解耦
js/main/      主进程服务(IPC、SDK 抓取、会话存储等)
js/           渲染层功能(api-reference、ai-assistant、test-runner、coverage……)
css/ assets/ fonts/   样式、图标与品牌资源、字体
cangjie-course/  内置仓颉教程 markdown(安装包快照 + GitCode 热更新的同源内容)
qrcode/       「联系作者」企业微信二维码(安装包内置兜底图,运行时优先取远端新版)
examples/     演示工程(review-demo:调试 / 代码生成 / 测试 / 覆盖率 / API 索引的可复现样例)
build/        electron-builder 配置
scripts/      构建与发布脚本
tests/        单元 / 集成 / 静态 / 性能 / E2E 测试
docs/         文档(发布流程、.cjo 索引实现说明)
CHANGELOG.md            版本变更日志(Keep a Changelog 格式)
README.OpenSource       第三方依赖与许可证清单、不随本软件分发的内容边界

📚 文档与合规

文件 内容
CHANGELOG.md 版本变更日志,含已知限制一节
README.OpenSource 逐包许可证清单、传递依赖说明,以及 .cjo / 官方文档 / CPython 不随本软件分发的边界声明与复核命令
RELEASE_NOTES.md v1.1.0 发布说明与分发注意事项
docs/article-cjo-api-index.md .cjo 签名索引的技术实现说明
docs/RELEASE.md 打包、签名与发布流程

💬 反馈与联系

使用中遇到 SDK 配置、编译、调试等问题,欢迎扫码加企业微信直接咨询;Bug 与功能建议请提到 Issues,便于追踪与后来者检索。

扫码加企业微信联系 CIDE 作者

致谢

📄 许可证

本项目基于 Apache License 2.0 开源,详见 LICENSE

第三方内容与边界

内容 来源 许可 CIDE 的使用方式
.cjo 签名索引 用户本机安装的仓颉 SDK(lib/cjc/stdlib/**/*.cjo Apache-2.0 + Runtime Library Exception 不随 CIDE 分发。仓库与安装包内均无 .cjo.gitignore 已屏蔽),运行时只读用户自己安装的 SDK
API 中文说明文本 Cangjie/cangjie_docscj-docs.gitcode.com CC BY 4.0 不入库、不打包。运行时按需从官方站抓取,仅做进程内缓存;每条说明在面板内标注「来自官方文档 <版本>」
Monaco / Toast UI / KaTeX / Inter / JetBrains Mono 各自上游 MIT / OFL 等 见上游仓库

CIDE 不对仓颉 SDK 与官方文档做任何形式的再分发;上表文本版权归原权利人,本项目仅按其许可证使用并注明出处。

Copyright 2026 wangpeng

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

项目介绍

一款面向仓颉编程语言(Cangjie)的轻量级桌面 IDE,基于 Electron + Monaco Editor 构建,社区维护 / 非官方项目,Apache-2.0 开源。 核心能力:API 签名直接解析用户本机 SDK 的 .cjo 二进制,得到 44 个 std 包 / 13,906 条签名(类型 / 成员 / 参数 / 返回 / 泛型约束),此过程不启动编译器、不需要源码;成员的官方中文说明按需从官方文档站抓取并做进程内缓存,带离线降级。 同时集成:仓颉 LSP 实时诊断、基于 lldb-vscode 的调试(断点 / 条件断点 / 日志点 / 变量查看)、测试运行器与 LCOV 行级覆盖率、九项代码生成、Markdown + KaTeX 笔记、内嵌终端、AI 助手。 仓库自带 examples/review-demo 演示工程,可逐条复现全部功能。.cjo 与官方文档内容均不随本软件分发。

定制我的领域