青年社群 AI 交流
用 AI 做成一件事
以「小暖」的开发过程为线索,认识那些让你随时能开工的个人基础服务
一件事的完整闭环
不从「学技术」开始,从解决自己的一个真实问题开始。
分享带来反馈,反馈变成新的需求,循环继续。
工具怎么选:Claude Code / Codex 这类编程 Agent 是「施工队」,而今天要讲的个人基础服务是施工队随时可取用的「水电网」。
这件事:小暖
一个面向老人的 AI 语音陪伴系统。持续对话、记得住人、能提醒、能预警,目标是「有人格的陪伴」,而不是冷冰冰的问答机。
身边老人的孤独与照护缺口,是一个真实的、我自己的问题。
打电话一样地聊天:听得懂慢语速,说得出中文韵律,记得住上次说过的话。
从一篇小说里的想法,到语音管道、记忆系统、内部言语架构,历时数月。
“好的照顾,是让被照顾者更少地需要照顾。” 《让机器照顾一个人》
想法先落地成文字
小暖最早不是代码,是一篇小说和几篇文章。写作就是最便宜的原型:想法写不清楚,代码一定写不清楚。
你在互联网上的门牌号,所有服务都挂在它下面。
tommickey.cn(Cloudflare 管理)免费、免运维,把文章发布到全世界。
Cloudflare Pages,一次 git push 自动上线国内可访问的前提,趁早办,一次管很久。
域名已备案,微信里也能直接打开展开:为什么第一步是「写」而不是「做」
- 公开写出来,就有了第一批读者和反馈,需求是否成立立刻见分晓。
- 文章沉淀成项目的「设计文档」,后面每一步都在回答前一篇留下的问题。
- 个人网站本身就是第一个练手项目:域名、托管、发布流程一次跑通。
让它说话
语音链路三件事:听(ASR)、想(LLM)、说(TTS)。端到端要压进 1.5 秒,老人才不会觉得「它没在听」。
实时音视频通道,把手机麦克风和服务器连成一个「房间」。
小暖的通话底座,延迟约 100ms把话变成文字,中文方言与慢语速是关键。
FunASR / SenseVoice把文字变成自然的中文语音,要能流式边生成边播。
CosyVoice 2;网站文章朗读用阿里云 Qwen-TTS大模型是「脑子」;LiteLLM 把各家模型统一成一个接口,随时换。
Qwen3 对话;LiteLLM 统一出入口展开:语音踩过的坑
- 打断判定:老人句中停顿长,静音阈值要放宽到 800~1200ms,否则一句「呃……」就被打断。
- 多音字:「长、为、还」TTS 常读错,靠高频词表替换兜底。
- 回声循环:设备回声消除差时,AI 听到自己的声音把自己打断,要在客户端和语义层双重过滤。
让它记住
没有记忆就没有关系。数据要有家:结构化的进数据库,文件进对象存储,语义检索交给向量库。
一次搭好,所有项目共用一个数据库服务,不必每个项目重搭。
板书右侧那个「自建 RDS」音频、图片、备份文件的仓库,给个链接就能访问。
MinIO(自建)+ Cloudflare R2(云端)按「意思」找资料,不是按关键词。是记忆的检索层,不是记忆本身。
小暖的事实知识库展开:小暖的分层记忆设计
- 用户宪法层:基本信息、健康、偏好,家属可维护,一份 Markdown。
- 自动记忆层:模型自己从对话里提炼,硬上限 200~300 行,低价值条目自然淘汰。
- 时序事件流:对话按时间排列,带情绪标签,供每晚「反刍」。
- 遗忘是特性:一个月后强制删除原始记录,事件被压缩成「倾向」。
“RAG 是外挂硬盘,不是肌肉记忆……人格正是遗忘的产物。” 《让机器照顾一个人》
让它触达人
做出来的东西要能「够到」用户。触达通道是最值得提前备好的一类基础服务:搭一次,所有项目都能用。
让程序给你(或家属)发微信:提醒、告警、日报,一次 HTTP 调用。
自建 wechat 发送 API,脚本跑完自动通知我长报告、阶段总结自动进邮箱,不占聊天窗口。
163 SMTP 一行命令发信 + 自建邮件 API普通人最没有门槛的入口,老人和家属都会用。
公众号文章一键排版导出工具链自己的 App 商店,APK 一条命令发布,用户扫码安装、自动更新。
AppCenter:解析包名版本、新应用自动创建让它跑起来
部署不神秘:一台常开的机器 + 一条通向公网的路。家用电脑就能当生产服务器。
磁盘大、有 GPU、零月租,跑十几个服务毫无压力。
我的开发机同时是多个线上服务的生产机要稳定 IP、要备案接入时的选择,小规格就够。
网站、接口类服务的落脚点没有公网 IP 也能把家里的服务暴露出去。
Cloudflare Tunnel(免证书免端口)+ frp每个服务一个容器,搬家等于复制一个 compose 文件。
评论系统、数据库、隧道全部容器化服务之间解耦:先记下要做的事,慢慢做,不怕高峰。
异步任务的缓冲带可视化编排试过,最终换回「代码 + LiteLLM」:更可控、延迟更低。
让它会思考,也让自己更快
两层「思考」:小暖自己的内部言语,和我这个开发者手里的编程 Agent。
整个项目的施工队:读代码、写代码、跑验证、修问题,人负责方向和验收。
本材料也是它做的把重复流程沉淀成一条命令,越用越顺手。
「/publish」一条命令:配图、配音、构建、发布、推搜索引擎展开:小暖的内部言语(把「想」从「答」里分出来)
- L0 反射层:摔倒、呼救等,规则直接响应,0 次模型调用。
- L1 应答层:300~800ms 回话,回话时不许深想。
- L2 内语层:异步慢想,由「惊讶」触发,不用定时器。
- L3 反刍层:每晚一次复盘,只调整倾向,不改写判断。
“一个人愿意打断你,是因为他还在意你说得对不对。真正该报警的,是他不再打断。” 《继续构思小暖的内部言语》
个人基础环境全景
六类服务,搭一次、处处用。做任何「一件事」,都是从这张地图上取件组装。
域名 / DNS、ICP 备案、内网穿透(Cloudflare Tunnel、frp)
家用电脑、公网服务器、Docker、静态托管(Pages)
PostgreSQL(自建 RDS)、对象存储(MinIO / R2)、定期备份
LLM 网关(LiteLLM)、ASR、TTS、文生图、向量检索
微信接口、邮件接口、公众号 / 小程序、应用分发(AppCenter)
Claude Code / Codex、Skill / Agent、Git + GitHub、消息队列
小暖没用到,但天天在用的
这些「小」服务单独看不起眼,组合起来是效率的来源。都是一次搭好、一行命令调用。
脚本跑完,报告自动进邮箱。
长任务结束、服务出错,微信立刻知道。
本地文件传到 MinIO,返回公网下载链接,发群即用。
TTS 批量生成朗读音频,全站几十篇文章都有「听」的版本。
让文本模型当「美术指导」读文章,再让文生图模型画封面和插图。
Waline + Docker + 隧道,静态网站秒变可留言的社区。
建议你也备上的
按性价比排序:每一个都不难搭,但都会在某个时刻救你一次。
账号是基础环境的地基。Bitwarden 可自托管,全家共享保险箱。
数据比服务贵。restic / 定时同步,数据库和文档每天一份异地副本。
Uptime Kuma 盯着你的服务,挂了发微信告诉你,别等用户来报。
cron 或 n8n,把「每天要做的小事」交给机器:巡检、推送、汇总。
下次你要做一件事
- 把需求写下来解决「自己的」一个真问题,写清楚给谁用、解决什么
- 注册一个域名几十块一年,你所有服务的门牌,顺手做备案
- 找一台常开的机器家用电脑 + 内网穿透,或一台小云服务器
- 用编程 Agent 开工Claude Code / Codex 从想法直达能跑的原型
- 复用基础服务数据库、存储、发信、发微信,别重造轮子
- 先给自己用起来每天用,它才会长大;不用,就趁早放弃
- 分享出去写文章、发朋友圈、开源,让它解决更多人的问题
回到那个循环
所以,留给大家的问题:
你想做成的一件事,是什么?
文章与项目记录:tommickey.cn(小暖系列、踩坑笔记、本材料源文件)