写仓颉再也不用切浏览器查 API 了——一款开源桌面 IDE,装完就能写、能调、能测
先说清楚一件事:CIDE 是我个人开发的第三方开源项目,社区版,跟华为、仓颉官方团队没有任何隶属或背书关系。
交代完背景,说痛点。
写仓颉的时候,我最烦的一件事
学一门新语言,最耗时间的其实不是敲代码,是查。
想知道 ArrayList 到底有哪些方法、某个 add 重载的参数长什么样、泛型约束该怎么写——你得停下手,切到浏览器,打开文档站,搜索,翻两页,找到类型页,再往下滚找那个成员,看完再切回编辑器。一个问题来回四五次,思路断三回。
更要命的是,官方文档是按类型组织的,而你写代码时的问题是按成员产生的。你想问的是「这个方法是干嘛的」,文档给你的是一整页类型说明,还得自己找。
还有一个:cjpm test 跑完给你一屏命令行文本,你得一行行读才知道哪个用例挂了;cjcov 生成覆盖率报告,你得打开 HTML,再对照源码一行行找哪儿没测到。
于是我就写了 CIDE。
CIDE 是什么
一款面向仓颉编程语言的轻量级桌面 IDE,Electron + Monaco Editor(和 VS Code 同一个编辑器内核)构建,Apache-2.0 开源。定位是「学习型 + 全流程」:编码、查文档、运行、调试、测试、覆盖率、记笔记,收在同一个窗口里。
下面是我觉得真正解决了问题的几项。
1. 不启动编译器,13,906 条 API 签名秒开
这是整个项目我最满意的部分。
常规做法有两条路:要么调编译器生成接口信息(慢,还得有工程上下文),要么预先打包一份静态文档(体积大,而且和你本机 SDK 版本可能对不上,还有再分发的问题)。
我走了第三条路:直接解析 SDK 自带的 .cjo 接口文件。
.cjo 里本来就存着完整的接口元数据。我写了 mangled 符号名解码、泛型约束还原、参数与返回类型重建,运行时读取你自己电脑上装的 SDK,解析结果只放在内存里。
实测结果:
- 44 个 std 包 / 13,906 条 API 签名(类型 / 成员 / 参数 / 返回 / 泛型约束)
- 不启动
cjc、不需要工程源码 - 面板按「包 ▸ 类型 成员」三级下钻,顶部可搜索
- 因为数据源就是你本机这一份 SDK,天然不会版本错位
点开 std.collection,45 个类型、58 个自由函数;展开 ArrayList<T>,60 个成员,每个都带完整签名。

2. 中文说明下沉到「每个成员」
签名有了,还得知道它是干什么的。
CIDE 会按成员锚点从官方文档站抓取「功能」说明,内联到每一个成员下面,而不是只给你类型级的描述。
合规上我处理得比较克制,这里说明白:
- 抓取走 URL 白名单,只允许官方域名
- 内容只在内存缓存,不落盘、不入库、不打包进安装包
- 每条说明后面都标注「来自官方文档 <版本>」,保留署名
- 断网时降级:签名照常显示,只是没有中文说明正文
所以这个仓库和安装包里没有任何 .cjo 文件,也没有任何文档内容,.gitignore 里 *.cjo 是硬屏蔽的。想深挖这套解析怎么做的,我写过一篇专门的技术文章:
3. 调试:把「程序在干什么」变成看得见的东西
底层是真实的 lldb-vscode 调试器,不是模拟。
支持断点、条件断点、日志点(logpoint)、变量查看、单步、继续。鼠标停在变量上直接给类型和取值,不用临时加 println 再删掉。

上图停在第 10 行断点上,Variables 面板里 total = 204——正好是 1²+2²+…+8²,你可以在源码里逐行验算,确认这不是糊弄出来的界面。
连续两次 Step Over,能看到执行指针从函数内部返回到调用点、再落到下一行。调用栈的推进过程看得见,这跟读日志是完全不同的体验。
4. 测试树 + 行级覆盖率染色
cjpm test 的结果不再是一屏文本。CIDE 会静态发现 std.unittest 的 @Test 类和 @TestCase 方法,按树状结构展示,运行后增量回填结果和毫秒级耗时:
Passed: 2 Failed: 0 Skipped: 0 Total: 2 Duration: 12806 ms
覆盖率更有意思。点一下按钮跑 cjcov,它解析 LCOV 输出,把结果直接画回源码行上:
Coverage 25% (15/59 lines)
绿色是已覆盖,红色是没覆盖到的。
我故意让示例工程里的 main() 不被任何测试触达,所以那一片红色就是「你该补测试的地方」,一眼就看到。这比打开 HTML 报告再对照源码找行快太多了。
5. 九项代码生成
仓颉的类需要显式声明属性、构造器、toString / equals / hashCode,初学阶段这些样板敲得手酸。
编辑器里右键 ▸ Generate Code,九项一键生成:属性、构造器、getter / setter、toString、equals、hashCode、序列化、接口实现桩、Override。
生成器理解的是仓颉自己的 prop 语法和可见性规则,不是从 Java 或 C# 模板硬套的。怎么验证?示例工程里的 inventory.cj 我故意只写了 3 个私有字段,你现场依次生成三类代码,保存后 cjpm build 直接通过——能编译,就说明生成是对的。
6. AI 助手:先喂真实 API,再让模型回答
这块是我觉得对仓颉最有用的尝试。
通用大模型对仓颉 API 的训练覆盖不够,你直接问「帮我用 ArrayList 存 8 个 Int64 求和」,它很容易臆造出根本不存在的方法名和参数。
CIDE 的做法是:把你当前选中的 .cjo 真实签名 + 该成员的官方中文说明 + 编辑器实时 LSP 诊断,一起组装进 prompt 再提交模型。从输入侧就把幻觉压住,而不是事后人工纠错。
支持 OpenAI 兼容接口,API Key 你自己带,只存本机,仓库和安装包里没有任何凭据。不用这个功能就完全不触发相关请求。
7. 顺手带的几样
- 实时语法检查:接入仓颉 LSP,编辑即诊断,错误汇总在右上角和 Problems 面板
- SDK 感知的补全:包 / 嵌套模块导入补全 + 上下文方法补全,不用记导入路径
- 内置笔记:Toast UI Editor + KaTeX,Markdown、代码高亮、数学公式一体,边学边记
- 内嵌终端:
node-pty,不用切出去敲cjpm - Git 工作流:Log / Commit / Pull / Push
- 应用内文档:菜单 Help ▸ Documentation,中英双语图文说明
三分钟跑起来
- 本机装好 仓颉 SDK 1.1.3(CIDE 的编译、LSP、调试都依赖它)
- 下载安装包:约 106 MiB
→ https://atomgit.com/wp_upala/cide/releases - 安装。如果 Windows 弹「未知发布者」或 SmartScreen 拦截,是正常的——社区版没钱做代码签名。点「更多信息 ▸ 仍要运行」;首次启动被拦的话在 exe 上右键 ▸ 属性 勾选「解除锁定」
- File ▸ Open Project 选仓库里的
examples/review-demo→ 立刻可玩
想从源码跑:
git clone https://atomgit.com/wp_upala/cide
cd cide
npm install
npm run python:fetch # 拉调试用的 CPython 运行时;跳过也能用,只是启动不了调试器
npm start
要求 Node 22.2.x。
不信我说的?自己复现一遍
仓库里带了一个最小示例工程 examples/review-demo,只依赖 std,零 stdx、零网络调用,所以下面每一项你都能在自己电脑上跑出来:
| 想看什么 | 怎么做 | 应该看到 |
|---|---|---|
| 断点与变量 | main.cj 第 10 行行号上单击,再 Run ▸ Debug |
自动 cjpm build -g 后停在第 10 行,total = 204 |
| 单步执行 | 调试工具条 Step Over ×2 | 执行指针从 sumOfSquares 内部返回到第 25 行,再落到第 26 行 |
| 代码生成 | 打开 src/inventory.cj,右键 ▸ Generate Code |
依次生成构造器 / 访问器 / toString(),cjpm build 通过 |
| 运行 | 工具栏 Run | Result 页签输出 sum of squares = 204、classified as large |
| 单元测试 | 底部 Test 面板点运行 | Passed: 2 · Failed: 0 · Total: 2 |
| 行级覆盖率 | Test 面板点覆盖率按钮 | Coverage 25% (15/59 lines),源码绿/红染色 |
| API 索引 | 侧栏 API Reference ▸ SDK | std.collection 45 类型 / 58 自由函数;ArrayList<T> 60 成员 |
还有一段 2 分 56 秒的演示录屏(1920×1080,带中文硬字幕),也在发行版页:
→ https://atomgit.com/wp_upala/cide/releases
已知限制(不藏着)
一个人维护,有些东西确实没做,说清楚免得你踩坑:
| 限制 | 说明 |
|---|---|
| 仅 Windows x64 | 没有 macOS / Linux 版 |
| 未做代码签名 | 安装和首启会触发 Windows 安全提示,属预期 |
| 应用内「检查更新」不可用 | 没配证书和更新清单密钥。升级请回发行版页手动下载覆盖安装 |
| 中文说明需要联网 | 说明文本是运行时按需抓取的,断网重启后要重新联网才拿得到;签名本身完全离线,不受影响 |
| 调试需要自备 Python 运行时 | 安装包内已内嵌;源码运行需先 npm run python:fetch |
链接汇总
| 内容 | 地址 |
|---|---|
| 源码仓库(AtomGit) | https://atomgit.com/wp_upala/cide |
| 源码仓库(GitCode 镜像) | https://gitcode.com/wp_upala/cide |
| 下载与发行版 | https://atomgit.com/wp_upala/cide/releases |
.cjo 签名索引技术实现 |
https://blog.csdn.net/weixin_41618057/article/details/164175064 |
| 开源许可证 | Apache License 2.0 |
| 第三方依赖与许可证清单 | 仓库 README.OpenSource |
| 版本变更日志 | 仓库 CHANGELOG.md |
最后
CIDE 做的事情其实很朴素:不重造语言服务的轮子,而是把仓颉已有工具链的产出,翻译成开发者看得懂、点得到的界面。 编译器、LSP、cjpm、cjcov、lldb-vscode 这些都是官方的,我只是把它们的结果接出来,摆成一个不打断心流的操作路径。
IDE的开发工具的连接:https://atomgit.com/wp_upala/cide
一个人开发,更新节奏不会太快,但你提的 issue 我会看。如果你也在写仓颉,装上试试,尤其是那个 API 面板——我当初就是因为受不了反复切浏览器才写的它。
觉得有点用的话,给个 Star 就是最大的支持了。
更多推荐




所有评论(0)