开发者自创实验性编辑器,通过伪代码与源码同步机制解决纯AI写代码的复杂度上限与表达负担问题,意图记录开发者真实意图。
如果你和我一样是软件工程师,2026 年的前几个月简直是难以置信。编码 Agent 突然变得足够好用,我们不再需要手动写代码了。但如果你和我一样,那么稍后你会撞上一堵墙。蜜月期结束了,新鲜感也消退了。不再有那种多巴胺飙升的快感。
现在是八月,我感到极度疲惫。坦白说,我厌倦了用冗长的英文来描述我对代码库的每一次修改。然而,我也不想回到手动编写所有代码的状态。那种工作方式确实乏味无聊,我宁愿……一辈子都避免这种事。
然而,我意识到我需要对代码的运行有更好的洞察力和控制。我希望确保自己的产出是高质量的、可靠的软件。我希望作为专业人士能对自己的工作感到满意。所以我在寻找一种能够两全其美的方法。
没有可靠的人类意图记录。Prompt 被丢弃,代码可能是也可能不是由 AI 生成的。我们失去了表达人类对机器期望的核心权威,我认为正视这个事实很重要。
AI 对话是命令式的、逐步的指令,描述的是对应用的修改,而不是应用本身。这意味着指令经常被重复,因此在开发过程中会多次消耗 token。这是低效的。
自然语言的大部分存在是出于社会原因,而非信息传递。平均一句话包含的真实信息很少。以这种方式对机器写作,是繁琐的。
为了解决这些问题,我正在构建一个实验性的编辑器。我叫它 Huzzah,它提出了一种与 LLM 协作的替代范式。
使用编码 Agent,Prompt 是(a)冗长的、(b)命令式的、(c)临时的。使用 Huzzah,Prompt 是(a)伪代码式的、(b)声明式的、(c)持久化的。
直接演示会更清楚。
你的浏览器不支持嵌入视频。你可以
直接观看 Huzzah 演示
让我们用一个非常简单的例子——假设你想用 AI 来创建 Fizz Buzz。我们会做两次——一次用编码 Agent,另一次用 Huzzah。
你在你选择的工具中开始对话,输入类似这样的内容:
Create a function that loops 100 times. If the number is divisible by 3, print "fizz". If the number is divisible by 5, print "buzz". If the number is divisible by both (like 15 for example), print "fizz buzz".
如果你需要做修改,你会发送一条后续消息:
Instead of looping 100 times, the function should take a number input and the function should loop that amount of times.
你重复这个过程直到满意为止。
你创建一个名为 fizz_buzz.hz 的新文件。在里面,你可以用自己喜欢的方式写伪代码表示。这是我的做法:
fizz_buzz()
loop 100
modulo 3 ? "fizz"
5 ? "buzz"
both ? "fizz buzz"
你保存文件,Huzzah 会自动从它生成真正的代码。
如果你需要做修改,只需更新你的文件:
fizz_buzz(n)
loop n
modulo 3 ? "fizz"
5 ? "buzz"
both ? "fizz buzz"
当你保存文件时,Huzzah 捕获 diff 并将其作为 Prompt 发送给 LLM。受影响的源代码因此会被重新生成。
为了让你更好地理解在其他场景中这可能是什么样子,这里有一些替代示例。
list cart
list inventory
mock_data = // include some mock data
init()
inventory.fill(mock_data)
add_item(id)
cart.add(item by id)
remove_item(id)
cart.filter(item by id)
checkout()
return cart.sum(item by price) and format as price
Todo {
id: int
text: str
completed: bool
}
add_todo(text)
todos.add(text, completed = false)
toggle_todo(id)
todo = todos.get by id
todo.completed = NOT .completed
remove_todo(id)
todos.filter by id
你应该已经能看到一些好处。注意伪代码比冗长的 Prompt 简洁了多少、可读性高了多少?这里还有更多优点:
以这种方式编写 Prompt 能调动你的思维,因为这感觉更像是你在设计代码的形态。
你可以随心所欲地简洁或详细。
伪代码充当开发者文档,因为它是人类写的,用以表达其意图。
你可以编写语言无关的伪代码,并将其作为多种语言或环境目标的基础。想想那些复杂算法,比如 CRDT。
当然,没有银弹。一些例外:
这种方法在规模上完全可能存在问题。
对于新代码库显然比现有代码库更理想。
如果你缺乏领域专业知识,自然语言可能是更容易的交互方式。
某些事物可能更难以可靠地表达,比如跨文件依赖。
LSP 类型的功能将不可用(尽管这可能可以 plausibly 被生成)。
Huzzah 正在积极开发中,目前仅处于实验状态。你可以在此处找到源代码和设置说明。请尝试一下,告诉我你的想法!