叫它 AI,其实只有五个 if:AI贴吧老哥的实现
项目中心里的 AI贴吧老哥会跟你聊天,但它不调用任何模型——全部回复来自五个关键词规则。这篇讲讲它到底怎么「思考」。
如果你点开 AI贴吧老哥,会看到一个挺像回事的聊天界面:头像、气泡、正在输入的三点动画,回复还会延迟半秒多,像模像样。但真相是——它没有调用任何大模型,所有回复都来自五个 if。🤖
它到底怎么回复
整个「大脑」是 project/ai.html 里的一段规则匹配。按优先级从高到低:
| 优先级 | 触发条件 | 回复 |
|---|---|---|
| 1 | 消息里含「!」 | 孝 |
| 2 | 消息里含「尾号」 | 绷 |
| 3 | 长度大于 10 个字 | 急 |
| 4 | 长度小于等于 5 个字 | 麻 |
| 5 | 其他情况 | 典 |
为什么要排优先级
顺序很重要。比如「尾号!」会先命中第一条,得到「孝」而不是「绷」;一句又长又带感叹号的话,也永远轮不到「急」。这种优先级不是随便排的,而是按贴吧语境的「节目效果」调的。
代码本身短得有点好笑:
function reply(msg) {
if (msg.includes('!')) return '孝';
if (msg.includes('尾号')) return '绷';
if (msg.length > 10) return '急';
if (msg.length <= 5) return '麻';
return '典';
}
为什么不做成真 AI
原因很实际:
- 零成本:不调用 API,不需要 key,也没有额度限制;
- 零延迟:回复延迟是
setTimeout假装出来的,实际计算在毫秒级; - 纯静态:页面没有后端,直接部署在 Cloudflare Pages 上,连服务器都不用开。
更重要的原因是,这个项目的笑点本来就不在「智能」。贴吧老哥的精髓是用最少的字接住最多的梗,一个字能让人笑出来,那比一段长篇大论更像贴吧。所以我干脆把「不智能」做成了设定。
它不是在理解你,它只是在等你说出那个关键词。
界面上的小细节
聊天窗口虽然简单,但该有的都有:
- 消息分左右气泡,带头像和时间;
- 发送后先显示三个跳动的点,600–1000ms 后再出回复;
- 支持回车发送、自动滚到底部;
- 聊天区用
role="log"和aria-live="polite",读屏器也能读到新消息; - 页面设了
noindex,不参与搜索收录。
这些细节大多是在模仿真实聊天软件时才注意到的。做得越像,那个「一个字回复」的反差就越好笑。😆
认真说一句
它当然不是 AI,只是一个关键词回复器,一个披着聊天界面外衣的表情包生成器。但对我来说,这个项目挺重要的:它证明了不需要复杂技术也能做出让人愿意玩两下的东西。