Mo
大多数人接触人工智能编程的旅程都是从相同的开始:你给它一个简单的任务。你很佩服它。于是你给它一个更大的任务。你更加佩服它。
你打开 X,然后写一篇关于工作岗位流失的长篇大论。
如果你坚持看到这里:恭喜你,你比 99% 的人更了解人工智能编程。

真正使用人工智能进行实际工作(而不仅仅是周末项目)的工程师,其人工智能的开发轨迹也大多是可预测的。
你仍然对交给它的艰巨任务感到惊讶,不禁想知道是否可以继续给它布置越来越大的任务。或许还可以让它承担那项无人愿意接手的棘手重构工作?
但事情到这里开始变得扑朔迷离了。
一方面,你会惊讶于它似乎非常了解你。另一方面,它也会犯一些令人沮丧的错误,做出一些明显违背你们之间已建立的共识的决定。
你很快就会发现,对模型生气是没有用处的,所以你开始将任何不令人满意的结果内化。
“是我。我的提示太糟糕了,说明不够详细。”
“只要我能提出要求,它就能做到。没有做不到的,”你心想。
于是你打开 Obsidian,开始撰写详尽的规格文档,用令人印象深刻的细节描述你脑海中的功能。也许你已经写完了一整页的提示信息,为此花了半个小时。
但你会发现,基于规范的开发也行不通。在现实生活中,设计文档和规范都是动态的,它们会随着探索和实现而不断演变。试想一下,如果你在一家真实的公司里,花一个小时写了一份复杂架构的设计文档,把它交给一位中级工程师(并叮嘱他不要跟任何人讨论这份文档),然后就去度假了。
智能体不仅无法在构建底层组件的过程中历经数周时间逐步完善规范,而且还会在初期做出一些之后不会偏离的决定。大多数智能体一旦感觉问题和解决方案已经超出自身掌控,就会选择放弃(尽管这种情况现在很少发生,因为智能体会强行突破迷宫的障碍)。
更糟糕的是,智能体编写的代码在编写和展示给你的时候看起来合情合理、令人印象深刻。即使在拉取请求中,它看起来也很不错(因为你和智能体都接受过良好的训练,知道一个“好的”拉取请求应该是什么样的)。
直到我打开了整个代码库,从头到尾阅读了它的最新状态,我才开始明白我们之前推测和希望只是早期模型逐渐消失的产物:粗糙。
那简直就是一团糟。我百思不得其解。难道我在承认之前没有逐行检查过代码吗?这些……垃圾……到底是从哪儿来的?
现在回想起来,这很有道理。智能代理编写的变更单元单独来看都很好。它们与自身和你的提示保持一致。但他们并不尊重整体。他们不尊重结构完整性。甚至连相邻的模式也不尊重。
人工智能只是给我讲了一个不错的故事。就像用直觉创作小说一样,它给我展示了几个段落,这些段落逻辑清晰,结构和语法也完全正确。甚至连各个角色的性格特点都捕捉到了。但不知为何,当你读完整章之后,却发现它一团糟。它与整本书以及前后章节的上下文完全不符。
在阅读了几个月积累的大量高度规范的智能体代码后,我对自己说:我不会发布这种垃圾。我不会向用户收费。我也不会承诺用户能用这玩意儿保护他们的数据。
我不会在这件事上对我的用户撒谎。
所以我又开始手写大部分东西了。令人惊讶的是,如果把所有成本都算进去,而不仅仅是每小时的代码代币成本,我的速度、准确度、创造力、生产力和效率都比人工智能高。
atmoio.substack.com