13 岁初中生 VibeCoding 出的编程语言:Cavvy 如何用「文档与测试」定义自己的 Vibe

0 阅读4分钟

VibeCoding 不是“随便写写的借口”。当我创建 Cavvy 时,我开创了一种新的 Vibe:先写文档,文档驱动功能;再写测试,测试驱动开发。哪怕只是 Alpha 版本,也必须 100% 测试通过。这不是成年人的工程规训,而是一个 13 岁初中生写编程语言时的「 vibe 」。


🎵 什么是 Cavvy?

Cavvy 是一个由我(一个普通的 13 岁初中生、OIer)从零开始设计的面向对象编程语言

它有自己的编译器管线(IR Builder Pipeline)、跨平台工具链(cayc 编译器,感谢社区伙伴 ywhdzrb 的 Arch Linux 移植)、以及正在推进的自举计划(Cavvy N 系列)。当前版本是 5.1.0-alpha.2,采用严格的 SemVer 三位版本号。

但比起技术参数,我更想聊的是:我怎样用 VibeCoding 的方式,把它写出来的。


🧠 VibeCoding?不,是「有锚点的 Vibe」

很多人理解 VibeCoding 就是“打开 AI,跟着感觉走,能跑就行”。
但对我来说,没有文档和测试的 vibe,只是失控的噪音

在 Cavvy 的开发里,我践行着自己开创的两条铁律:

1️⃣ 文档驱动功能(Doc-Driven Feature)

在写任何一行编译器代码之前,我会先写:

  • Markdown 语言规范:语法、语义、类型系统规则
  • JSON 接口契约:IR Builder 的输入输出格式
  • 版本迁移文档:每个 breaking change 都必须有文档背书

“先写文档,文档驱动实现” —— 这不是口号,是 Cavvy 的 commit 历史里真实存在的 workflow。

比如Cavvy的实现路线图,都有完整的ROADMAP.md 每个功能都有单独的完整说明,都是文档先行:先更新 Language Spec,再实现 Parser → IR → CodeGen。AI 辅助生成代码时,它读的是我写的文档,而不是我拍脑袋的口述。

效果?
Cavvy 的文档即代码的“合同”。哪怕我一个人深夜 Vibe,也不会写出脱离语言哲学的野功能。

2️⃣ 测试驱动开发(TDD, but Vibe)

传统 TDD 是红-绿-重构的严谨。
Cavvy 的 Vibe TDD 是:哪怕 Alpha,也必须 100% 绿。

在我的仓库里,每一个 vibe 出来的功能,在 merge 前必须通过:

  • 单元测试:词法/语法/语义分析器
  • 集成测试:端到端编译 + 执行验证
  • 回归测试:旧版本代码在新编译器上的行为一致性

如果测试挂了,哪怕 vibe 再对、代码再酷,也不允许进主分支

这不是我被迫遵守的规则,而是我定义的 vibe:“自由的创作必须建立在可信的基座上”


🛠️ 一些能跑的「 vibe 」

说点具体的。Cavvy 目前支持:

// extern alias 语法:优雅地绑定 C 世界
alias SortFn = fn(c_void*, size_t, size_t, CompareFn) -> c_void;

编译器管线:

Cavvy Source → Parser → AST → IR Builder(目前版本是CodeGen与IR Builder并行) → LLVM IR → Native Code
                ↑___________↓
              文档与测试在这里锁住质量

甚至我们正在规划的 Cavvy N4.8(自举版本),也是先写好了自举架构文档,才动手改编译器的自举逻辑。


🌱 13 岁的工程观:为什么坚持「不酷的纪律」

有人问我:初中生写语言,图的不就是好玩、酷、能跑 demo 吗?为什么要给自己加文档和测试的枷锁?

我的答案很 vibe:

因为我想让 Cavvy 活过明天的 commit。

一个没有文档的语言,作者自己三周后就忘了当初为什么这样设计。
一个没有测试的编译器,每次加新功能都是薛定谔的崩溃。

VibeCoding 给了我速度:AI 辅助让我一个人也能推进复杂管线。
但文档与测试给了我方向:确保这份速度不会把我带向悬崖。

这可能就是 13 岁和 30 岁开发者唯一的共识:好代码的感觉(vibe)是一样的,只是年轻人更愿意承认自己在“凭感觉”


🚀 开源与社区

Cavvy 是开源的。你可以在这里找到它:

  • GitHubcavvy-lang/cavvy(以及 cayc 跨平台编译器)
  • 官网cavvy.ethernos.net
  • 组织:Ethernos Studio

我们甚至为 Cavvy 设计了二次元看板娘(灵感来自国内编程语言在 B 站的传播策略)—— 是的,这也是 vibe 的一部分 🤘


🎯 结语:定义你自己的 Vibe

VibeCoding 不是反工程化,它是一种更诚实的开发姿态:承认直觉、承认 AI 的辅助、承认创作时的流动性。

但如果你想让你的项目不止于一个周末的 demo,我建议你也试试我的配方:

  1. Vibe 之前,先写文档 —— 让 AI 和你的未来自己都有章可循。
  2. Commit 之前,测试必须绿 —— 让 vibe 有底线,而不是有隐患。

Cavvy 还在继续进化。
自举计划、CVPM(Cavvy 的包管理器/构建系统,类似 CMake 但属于 Cavvy 生态)、以及更完善的 OOP 特性都在路上。

如果你也是一个在用 VibeCoding 做严肃项目的开发者,欢迎来评论区聊聊:你的 vibe,有锚点吗?


作者:dhjs0000,13 岁,CSP-J 二等奖选手,Ethernos Studio 创始人。相信文档与测试是编程语言最浪漫的语法糖。