展示 HN: Huzzah – 一种新颖的 AI 编码方法
摘要
Huzzah 是一款实验性编辑器,它引入了一种声明式的、基于伪代码的 AI 编码方法,通过使提示持久化和高效来解决当前编码代理的局限性。
<p>大家好。我一直在开发这款名为 Huzzah 的实验性编辑器。<p>今年一月以来,我几乎完全使用编码代理工作,过去几个月我开始感到彻底疲惫。它们很棒,但我发现为每次更改编写完整句子变得越来越繁琐。不仅如此,代码库似乎存在一个复杂度限制——超过某一点,代理就会开始混淆自己。<p>我想回到编写代码,但不想完全回到手动编码。因此,我提出了这种交互范式:<p><pre><code> 1. 用对你最有意义的方式编写伪代码
2. 保存时,编辑器将你的工作同步到真实源代码
3. 伪代码与生成的代码一起持久化,使你的提示有效地成为意图的存储记录。
</code></pre>
它可能不适用于所有用例,但在我最初的试用中,我发现它非常有趣。<p>目前它只是一个概念验证——安装说明在此 README 中:<a href="https://github.com/danielvaughn/hz" rel="nofollow">https://github.com/danielvaughn/hz</a><p>你还可以在此观看其运行视频:<a href="https://x.com/danielvaughn/status/2090456808431165715" rel="nofollow">https://x.com/danielvaughn/status/2090456808431165715</a><p>祝好!
查看缓存全文
缓存时间: 2026/08/20 22:17
# 万岁
来源:https://www.danielvaughn.dev/posts/huzzah
2026年8月
与AI编程的全新实验性方式
如果你和我一样是软件工程师,2026年的头几个月简直令人难以置信。编程代理突然变得足够强大,我们不再需要手动编写代码。但如果你像我一样,之后很快就会遇到瓶颈。蜜月期结束,新鲜感消退。多巴胺分泌不再。
时值八月,我感到一种彻底的*疲惫*。说实话,我厌倦了用长篇英文描述对代码库的每个修改。但与此同时,我也不想回到完全手动编写所有代码的状态。那种做法确实乏味,我希望余生都能避免这种枯燥。
然而,我意识到自己*需要*对代码的行为有更深入的理解和掌控。我希望确保产出的软件是高质量且可靠的。我希望作为专业人士能问心无愧。因此我正在尝试寻找一种两全其美的方法。
我对编程代理的问题在于:
1. 没有可靠的人类意图记录。提示词被丢弃,代码可能由AI生成也可能不是。我们失去了表达人类对机器需求的核心依据,我认为这个事实值得重视。
2. AI对话是命令式的、逐步的指令,描述的是对应用的*更改*,而非应用本身。这意味着在开发过程中,指令往往被重复多次,从而反复消耗Token。效率低下。
3. 大量自然语言是出于社交目的而非传递信息。普通句子包含的实际信息量很少。用这种方式向机器描述,非常笨拙。
---
为了解决这些问题,我正在构建一个实验性编辑器。我称之为Huzzah,它提出了一种与大语言模型(LLM)协作的替代范式。
在编程代理中,提示词是(a)长篇的、(b)命令式的、(c)临时的。而在Huzzah中,提示词是(a)伪代码、(b)声明式的、(c)持久化的。
让我直接展示给你看会更容易理解。
您的浏览器不支持嵌入式视频。您可以直接观看 Huzzah 演示视频 (https://www.danielvaughn.dev/videos/huzzah-social.mp4)。
## 对比 Fizz Buzz
我们来看一个非常简单的例子——比如你想用AI创建一个 Fizz Buzz (https://rosettacode.org/wiki/FizzBuzz)。我们将用两种方式来实现——一次使用编程代理,一次使用Huzzah。
### 使用编程代理
你在选择的工具中开始一个对话,输入类似以下内容:
> 创建一个循环100次的函数。如果数字能被3整除,打印“fizz”。如果能被5整除,打印“buzz”。如果能被两者整除(例如15),则打印“fizz buzz”。
如果需要修改,你会向对话发送后续消息:
> 函数不应循环100次,而应接受一个数字输入,并循环该数字指定的次数。
你会重复这个过程直到满意。
### 使用Huzzah
你创建一个名为`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),并将其作为提示词发送给LLM。因此,相关的源代码会被重新生成。
## 其他一些示例
为了让你更好地理解这在其它场景下可能是什么样子,这里提供一些其他示例。
### 1. 购物车
```
list cart
list inventory
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
```
### 2. 待办事项列表
```
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
```
## 优点
你应该已经能看到一些优点了。注意到伪代码比长篇提示词更加简洁和*易读*了吗?还有一些其他优点:
- 以这种方式编写提示词能调动你的思维,因为它更像你在设计代码的结构。
- 你可以根据需要决定是简洁还是详细。
- 伪代码充当了开发者文档,因为它是由人类编写来表达其意图的。
- 你可以编写语言无关的伪代码,并将其用作多种语言或环境目标的基础。想想复杂的算法,比如 CRDT (https://crdt.tech/)。
## 注意事项
当然,没有银弹。一些例外情况:
- 这种方法在大规模应用时完全可能存在问题。
- 这显然更适用于新代码库,而非现有代码库。
- 如果缺乏领域知识,自然语言可能是更简单的交互方式。
- 某些事物可能更难以可靠地表达,例如跨文件依赖关系。
- LSP类型的功能将不可用(尽管这或许可以生成)。
## 当前状态
Huzzah正在积极开发中,目前仅处于实验阶段。你可以在这里 (https://github.com/danielvaughn/hz) 找到源代码和设置说明。请试用一下,告诉我你的想法!
祝好。
相似文章
Show HN: Jacquard —— 一种专为AI编写、人工审核代码设计的编程语言
Jacquard是一种专为AI编写、人工审核代码而设计的编程语言,内置效果跟踪、概率模拟和规范标识,帮助人类信任AI生成的程序。
Show HN: Paseo – 美观的开源编程助手界面
Paseo 是一个开源界面,将多种编程助手(Claude Code、Codex、Copilot、OpenCode、Pi)整合到单一的自托管平台中,支持语音控制、跨设备使用,并以隐私优先为设计理念。
Show HN:CodeAlmanac – 从你的对话中生成 Karpathy 风格的代码库维基
CodeAlmanac 是一款开源 CLI 工具,能够为你的代码库创建并维护一个动态维基,利用 Codex 或 Claude 等 AI 编码代理,从对话中捕捉设计决策和上下文。
Ask HN: 使用AI编程时如何进入心流状态?
一位Hacker News用户询问在使用AI编程时如何保持心流状态,描述了从长时间心流向多个短时间心流的转变,并建议并行探索想法。
Ask HN: 有人尝试用不同的方式使用LLM编程吗?
一位Hacker News用户向社区询问使用LLM编程的实验性方法,表达了当前提示-回应循环的不满,并寻求根本不同的方式。