Codong —— 为 AI 而非人类开发者设计的编程语言。
纵观历史,每一种被创造出来的编程语言都在回答同一个问题:人类如何向机器下达指令?
Python 为人类的可读性而优化。Go 为人类的可维护性而优化。JavaScript 为人类的浏览器而优化。在编程语言设计长达 70 年的历史中,每一个决策背后都隐含着一个前提假设:程序员是“人”。现在,这个假设已经不成立了。
那个无人提及的问题
当如今的 AI Agent 编写代码时,它们使用的是 Python、JavaScript 或 Go——这些为人类设计的语言。这导致了三种在每个任务中都会不断累积的隐性低效:
选择困难问题。 在 Python 中,发起 HTTP 请求至少有五种广泛使用的方案:urllib、urllib3、requests、httpx、aiohttp。在 AI 写下第一行业务逻辑之前,它必须消耗 Token 来权衡选项、挑选库并为这个选择寻找理由。这些 Token 就是金钱成本,这些时间就是延迟成本。而且输出是不可预测的——让同一个 AI 两次编写同一个功能,你可能会得到两个不同的库。
错误处理问题。 当程序出错时,Python 会抛出一段堆栈追踪信息(Stack Trace)。Node 会抛出堆栈信息。Go 也是。堆栈信息是设计给人类在终端里阅读的。当 AI Agent 收到一段堆栈信息时,它必须消耗数百个 Token 来解析它,然后才能开始理解到底出了什么错。这里没有 fix(修复建议)字段,也没有 retry(重试)标记。这种错误只是为了人类肉眼设计的原始文本。
依赖问题。 在运行任何有意义的代码之前,AI 必须挑选一个 Web 框架、一个数据库驱动、一个 JSON 解析器、一个 HTTP 客户端。这根本不是业务逻辑,而是“配置税”——这些基础设施决策不仅消耗 Token,还会引入版本冲突,并且在不同项目之间有着不可预测的差异。
当人类写代码时,这些都不是问题。但是,AI Agent 每次生成代码时,在跨越数以百万计的 AI 生成程序的庞大体量下,这会造成巨大的结构性的资源浪费。
大道至简:做每件事只有一种方式
Codong 是围绕单一设计原则构建的编程语言:对于任何操作,都只有且仅有一种方法去实现。
需要发起 HTTP 请求?用 http.get(url)。没有其他选项。需要提供 Web API 服务?用 web.serve(port: 8080)。需要查询数据库?用 db.find("users", {active: true})。无论是 PostgreSQL、MySQL、SQLite 还是 MongoDB,调用的方法完全一样。
当做一件事只有一种方法时,AI 永远不会浪费 Token 在做选择上。输出的结构永远是一致的,代码也永远是可预测的。这不是一种限制——这是一项特性(Feature)。正是这些约束,让 AI 变得可靠。
// 一个完整的 AI 驱动的 API。没有 import。没有包管理器。零配置。
server = web.serve(port: 8080)
server.post("/ask", fn(req) {
answer = llm.ask(
model: "gpt-4o",
prompt: req.body.question
)
return web.json({ answer: answer.text })
})
这就是整个程序。没有 import flask,没有 npm install,也没有 go get。语言自带八个内置模块——web、db、llm、http、fs、json、env、time。它们覆盖了 AI Agent 实际需要构建的 90% 的场景。AI 从第一行代码开始,就在直接编写业务逻辑。
AI 真正能读懂的错误信息
在 Codong 中,每一个错误都是结构化的 JSON。不是字符串,也不是堆栈追踪。而是一个保证包含四个核心字段的、机器可读的对象:
{
"code": "E2001_NOT_FOUND",
"message": "user with id 42 not found",
"fix": "verify the id exists before querying",
"retry": false
}
fix 字段确切地告诉 AI 下一步该怎么做。retry 字段告诉它再次尝试是否有意义。code 字段是一个稳定的标识符,AI 可以直接进行匹配,而不需要去解析大段的英文说明。
对于对 Token 效率要求极高的工作流(Pipelines),Codong 还提供了一种紧凑型的错误格式,可将错误载荷大小减少约 39%:
err_code:E2001_NOT_FOUND*src:db*fix:verify the id exists*retry:false
? 操作符能够自动传播错误——没有繁杂的 if err != nil 链,也没有 try/except 嵌套:
fn get_user_posts(user_id) {
user = db.find_one("users", {id: user_id})? // 如果为 null 则返回错误
posts = db.find("posts", {user_id: user.id})? // 同上
return posts
}
如果任何一步失败,错误会沿着调用栈向上冒泡,函数立即返回。AI 可以编写线性的代码。没有用于错误情况的条件分支。没有额外的认知负担。
23 个关键字。6 种基本类型。零歧义。
Codong 只有 23 个关键字。Python 3 有 35 个。JavaScript 有 64 个。Go 有 25 个,但 Go 的类型系统还需要大量的上下文才能正确驾驭。
Codong 的每一个关键字都是必不可少的“承重墙”。没有历史包袱,没有被废弃的同义词,也没有四种声明变量的方法。变量统一用 = 声明。常量用 const。函数用 fn。这就是你需要知道的全部。
const MAX_RETRIES = 3
fn fetch_data(url, retries = MAX_RETRIES) {
resp = http.get(url, timeout: "5s")
if !resp.ok && retries > 0 {
return fetch_data(url, retries - 1)
}
return resp.json()
}
更小巧的语言意味着更短的 Prompt(提示词)。让 AI 生成 Codong 代码所需的系统提示词上下文,远少于生成 Python 代码所需的上下文。上下文越少,消耗的 Token 就越少。Token 越少,意味着成本越低、生成速度越快。Codong 的每一个设计决策,都是围绕这个等式展开的。
对 AI Agent 至关重要的两件事
当 AI 编写代码时,有两个问题决定了它能否成功:
1. 它是否正确理解了任务? 这取决于 AI 的上下文窗口中,有多少被“语言基础设施”占据,又有多少留给了“实际任务描述”。在 Python 中,你需要花费相当大一部分提示词来指定使用哪些库、遵循哪些模式、遵守哪些版本限制。而在 Codong 中,AI 可以将这些上下文全部用于理解代码究竟应该做什么。
2. 它能在没有人类干预的情况下修复错误吗? 这取决于错误信息的质量。当一个 Codong 程序运行失败时,AI 会收到一个带有 fix 字段的结构化 JSON 对象。它可以立即对此采取行动,而无需解析堆栈追踪,无需搜索文档,也无需请求人类澄清。正是因为错误是机器可读的,管线的“自我修复”才成为可能。
这些不是抽象的设计目标。它们是决定 AI 驱动软件开发实际天花板的两大瓶颈。Codong 就是围绕这两点设计的。
语言背后的架构
Codong 以两种模式运行。codong eval 是一个 AST 解释器——提供瞬时启动,非常适合脚本、流水线和快速迭代。codong run 则会编译成 Go IR(中间表示),并通过 Go 工具链执行——拥有完整的标准库、生产级的行为表现,并通过 codong build 输出单一的静态二进制文件。
选择 Go 作为编译目标是经过深思熟虑的。Go 能编译出体积小、速度快、无依赖的二进制文件。编译成二进制的 Codong 程序是一个自包含的产物,可以部署在任何地方,不需要运行时(Runtime)、不需要解释器,也不需要包生态系统。
对于八个内置模块之外的能力,Codong 提供了 Go Bridge,允许人类架构师封装任何 Go 包供 AI 消费调用。AI 只能看到一个函数名和一个返回值。它无法访问宿主文件系统,无法调用 os.Exit,也无法发起未经授权的网络请求。每一项权限都在配置文件中明确声明。AI 在一个预先定义好的边界内运行,而这个边界对人类审查者是完全透明的。
开源与 MIT 协议
Codong 是开源的。代码仓库位于 github.com/brettinhere/Codong。
语言规范——SPEC.md——被编写成了一份完整的参考手册,任何 LLM 都可以利用它编写出正确的 Codong 代码,甚至不需要安装编译器。只要将 SPEC_FOR_AI.md 注入到任何 AI 的系统提示词中,模型就能立即生成有效的 Codong 代码。
这是有意为之的。Codong 并不苛求成为一门让人类安装和学习的语言。它追求的是,当 AI Agent 需要构建项目时,它会成为首选语言。成功的衡量标准不是 GitHub 的 Star 数量,而是在未来十二个月内,有多少由 AI 生成的程序是使用 Codong 编写的。
我们正在构建怎样的未来
软件发展的轨迹正朝着一个方向演进:越来越多的代码将由 AI 编写,越来越少的代码由人类编写。这对人类开发者来说并非威胁——而是一种角色的转变。人类架构师将负责设计系统、设定约束并审查输出。而 AI Agent 将负责实现。
问题在于,这些 Agent 会使用什么语言?现在,它们默认使用的是 Python 或 JavaScript——这些语言在设计时从未考虑过它们,把每一种模棱两可都当作特性,把每一个错误都输出成供人类阅读的字符串。
Codong 提供了另一种选择。在这门语言里,做每件事都只有一种方法。在这里,每一个错误都会告诉你下一步该做什么。在这里,整个标准库触手可及(只需三行代码即可调用)。在这里,AI “理解”的内容和代码“执行”的内容之间的差距,被我们压缩到了最小。
这是第一门为即将成为绝对主流的“新型程序员”而设计的语言。
Codong 现已发布于:github.com/brettinhere/Codong
MIT 开源协议。欢迎参与贡献。