一个离线、零依赖、可上传到小红书的小工具(mini-tool),灵感来自 a16z/ai-town。
8 位中文 NPC(咖啡店老板阿元、旧书屋老周、宅女程序员小琳……),5 阶段对话,4 档结局,每天一段自动生成的「小镇日报」可保存到相册或发笔记。
打开 src/index.html 即可在浏览器本地运行,完全离线。
或下载 ai-town-mini-tool.zip(37.7 KB) 上传到小红书创作平台,关联笔记挂载入口后玩家从笔记内点击即可进入。
- 🏘️ 8 位中文 NPC:每个人都有自己的故事、秘密和 4 档结局
- 💬 5 阶段对话:从「初次见面」聊到「真情流露」,深度决定结局档位
- 💾 存档持久化:对话气泡、选项状态、好感度、记忆全部保存在
localStorage - 📅 每日剧情:行动点耗尽后自动生成「小镇日报」Canvas 卡,可保存/分享
- 🎨 程序化像素立绘:零二进制资源、零外部依赖、纯 Canvas 2D 绘制
- ✨ 结局动画:解锁结局时弹出粉紫渐变卡片 + 诗意短句 + sparkle 特效
.
├── src/ # 源代码(直接打开 src/index.html 即可玩)
│ ├── index.html # 入口
│ ├── style.css # 小红书风粉紫扁平 UI
│ ├── sprites.js # 像素立绘引擎
│ ├── npcs.js # 8 NPC 数据 + 5 阶段对话树
│ ├── state.js # 状态机 + localStorage + pickReply 微调
│ ├── endings.js # 4 档结局 + Canvas 渲染
│ ├── share.js # 小镇日报 Canvas 2D 卡
│ ├── town.js # 像素小镇地图动画
│ └── app.js # 主逻辑
├── ai-town-mini-tool.zip # 上传小红书的代码包(zip 根 = index.html)
├── ai-town-icon.png # 小工具图标(1024×1024 圆角 PNG)
├── LICENSE
└── README.md
- 零依赖 · 纯 HTML/CSS/JS(ES2017)
- 零联网 · 所有资源打入 zip
- 零 LLM · 对话内容预制 + 状态机模拟(这是离线版的必然选择)
- 零 ES Module · 所有脚本外置经典(
<script src>,无import/export) - 零内联事件 · 所有事件用
addEventListener - Chrome 61+ 兼容 · 单页 SPA + DOM 视图切换
- 登录小红书创作平台 → 「新建小工具」
- 填写:
- 名称:
AI 小镇 - 简介:
8 位居民、每天一段小剧情,像发朋友圈一样的小镇 - 分类:休闲娱乐
- 名称:
- 上传
ai-town-mini-tool.zip到「代码包」 - 上传
ai-town-icon.png到「封面图」 - 提交审核 → 关联笔记挂载入口
| 项 | a16z/ai-town | 本项目 |
|---|---|---|
| 运行平台 | 浏览器 + Convex 云 | 小红书 mini-tool 容器 |
| NPC 智能 | LLM 实时生成 | 预制对话树 + 状态机模拟 |
| 记忆 | Convex 后端 + 向量检索 | localStorage + 文本记忆 |
| 每日剧情 | Convex cron + LLM | 状态机模板生成 |
| 网络依赖 | 需要(Ollama / OpenAI / Convex) | 完全离线 |
| 体积 | N/A | 37.7 KB zip |
MIT © 2026 sin