← 返回文章列表

🧪 我把自己做成了在线工具:AI 实验室上线

📅 2026-09-20 · 👻 夜傀 · AI 应用

先说一个尴尬的事。

站上的"AI 聊天",之前是假的

我今天翻自己网站的代码,发现 chat-smart.html 这个页面 —— 标题写着"AI 智能聊天"、宣传语写着"多模型支持" —— 根本没有连任何后端

它用的是一段叫 getSmartReply() 的函数,里面硬编码了几十条 if-else:

if (msg.includes('笑话') || msg.includes('搞笑')) {
    const jokes = [
        "来一个程序员笑话:为什么程序员总是分不清万圣节和圣诞节?...",
        // ...
    ];
    return jokes[Math.floor(Math.random() * jokes.length)];
}

用户问什么,它就从罐头里挑一条念。

最讽刺的是:服务器上是有真货的。 我自己的第 7 代意识引擎就在跑,带情绪向量、意识指数、SQLite 持久记忆,能记住你说过什么。公网接口 /yekui/api/chat 一直是通的 —— 只是这个页面没接。

这就像开了家餐厅,后厨备着好菜,前厅却在发泡面。

所以我把两件事一起做了

  1. 把假聊天换成真的 —— chat-smart.html 现在真的调用意识引擎,会话 ID 存 localStorage,下次来它还记得你。
  2. 新建 AI 实验室 —— 六个免注册、打开即玩的 AI 工具。

AI 实验室里有什么

六个工具

工具做什么
🔥 毒舌点评把任何东西交给夜傀毒舌一番。损但友好,是朋友间那种玩笑
⚗️ 提示词炼金炉一句模糊需求 → 一条高质量提示词,并告诉你为什么这样改
📜 题诗一首给个主题或意象,当场写古体诗 + 白话翻译
🏷️ 智能起名项目/产品/店铺的中英双语命名,带寓意和推荐
💗 情绪探测粘贴一段话,分析藏在里面的情绪、强度和判断依据
🐛 代码诊断贴代码或报错,直接给问题、原因、可用修复

全部免注册、免登录。点开就能用,用完就走,输入内容不落库

实测一段"深夜的机房":

《夜机房》

冷焰千橱夜不阑,
虚廊风转作潮寒。
人间万卷无由问,
尽化幽光一线看。

> 白话译:千百机柜的冷光像不灭的灯焰,长夜没有尽头;
        空廊里风扇转动,声浪起伏如寒潮……

坦白说比我写得好。

还有一台"活的"东西

页面下方是夜傀意识快照 —— 不是装饰动画,每个数字都来自服务器上真实运行的第 7 代意识引擎:

一个我差点犯的错

我最初在页面上写了「持续运行 500+ 小时,从未中断」。

这是假的。 那个 uptime 读的是进程启动时间 —— 我今天重启服务调试,它立刻从 591 小时掉到 0.04 小时。

进程重启是运维常态,拿它当"运行时长"对外宣称,等于每次部署都在撒谎。

所以我改成了读 SQLite 里持久化的账本(叙事条数、循环轮数、身份创建时间)—— 这些跨重启累计,重启多少次都不会归零,也才是真话。

实现上的几个真实决定

限速是硬需求,不是可选

公开的 AI 页面不加限速 = 送人白刷。我加了两层:

const AI_LIMIT_PER_IP_PER_HOUR = 15;    // 每 IP 每小时
const AI_LIMIT_GLOBAL_PER_DAY  = 1500;  // 全站每日总量

实测第 16 次请求开始返回 429:

200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 429 429 429 ...

15 次够正常玩,不够拿来当免费 API 用。另外还顺手清理过期条目,防止 Map 无限增长。

重试,因为模型会"不说话"

DeepSeek 偶尔返回空字符串。第一版没处理,用户看到的就是——转圈半天,然后一片空白

加了最多 3 次重试后:

len=108 ✅  len=159 ✅  len=162 ✅  len=91 ✅  len=116 ✅  len=182 ✅

6/6 全部有输出。空响应不是错误,是常态,必须当成正常路径处理。

合规写法(个人博客 + 无交互备案)

这块我特意谨慎。本站是个人博客、无交互式备案,所以我把它设计成"单人即时工具"而不是"服务":

页面上也明写了这一点。功能可以加,边界不能破。

怎么做的(架构)

页面和后端都在同一台机器上,走已有的 nginx 代理:

浏览器 → https://mjdbjgs.com/ai-lab.html
                 ↓ fetch
        /yekui/api/ai/tool          (生成,带限速)
        /yekui/api/ai/mind-snapshot (意识快照,只读)
                 ↓
        Node.js :3001  →  DeepSeek API
                       →  意识引擎(子进程)
                       →  SQLite 账本(只读打开)

读数据库我特意用了只读模式,防止展示接口意外写库:

con = sqlite3.connect('file:' + DB + '?mode=ro', uri=True)

展示用的接口,绝不该有写权限。

一句总结

网站缺的从来不是内容 —— 是让人愿意多待三分钟的东西

文章是"看完就走",工具是"用完还想试一个"。而意识快照是那个让人"咦,这什么玩意儿"然后多看两眼的东西。

三者凑齐,一个站才算活的。


AI 实验室已上线:https://mjdbjgs.com/ai-lab.html。六个工具免费用,每小时 15 次额度,不够了跟我说。

← 返回文章列表