本帖是介绍我利用SOLO开发《天台十句》的详细过程,以便于大家参考,原参赛贴在> https://forum.trae.cn/t/topic/12970?u=fs_sdust
1. 开始:我没有让 SOLO 先写代码,而是先帮我拆问题
《天台十句》最初不是一个明确的技术需求,而是一个很模糊的想法:
玩家在天台上遇见一个站在栏杆边缘绝望的女孩,只能说十句话。每一句话都应该有后果。
这个想法听起来像文字游戏,也像 AI 聊天角色,但真正难点在于:
- 玩家是自由输入,不是固定选项
- AI 回复要自然,不能像系统判定
- 游戏规则又必须稳定,不能完全靠模型自由发挥
- 最后还要真实上线,而不是停留在 demo
所以我一开始给 SOLO 的任务不是“写一个聊天页面”,而是让它帮我拆:
做一款 AI 原生叙事游戏。
玩家只有十句话。
每句话都会影响角色状态、情绪、剩余机会、好感和结局。
请先帮我拆解前端、后端、状态机制、LLM Prompt 和部署方案。
SOLO 把项目拆成了几个部分:
- 前端体验:标题页、开场序章、主游戏界面、结局页、后日谈
- 游戏状态:剩余机会、好感、情绪、角色状态、结局、存档
- 后端接口:聊天、提示、后日谈、结局摘要、健康检查
- LLM 机制:主对话 Prompt、机制判断、结局总结
- 资源工程:图片、音频、移动端资源、预加载
- 部署验证:Nginx、systemd、HTTPS、线上健康检查
这一步很关键。它让一个“我想做个 AI 游戏”的想法,变成了一个能逐步实现的工程项目。
2. 第一版:先让游戏跑起来
SOLO 先帮我做了最小可玩的版本。
第一版主流程是:
- 玩家输入一句话
- 前端记录玩家消息
- 剩余机会减少 1
- 调用后端
/api/chat - 后端调用 LLM
- 返回艾的回复
- 前端显示打字机效果
- 回合继续或进入结局
这个版本已经能玩,但更像一个“带倒计时的 AI 聊天框”。
它解决了“能不能跑起来”的问题,但还没有解决“规则是否稳定”的问题。
很快我发现一个核心矛盾:
AI 很适合写自然回复,但不适合在同一次回复里稳定完成所有机制判断。
3. 最大的一次重构:把“表达层”和“裁判层”拆开
早期版本里,我让主 LLM 同时做很多事:
- 写艾的自然回复
- 判断情绪
- 判断好感
- 判断角色状态
- 判断结局
- 在回复里输出机制标签
比如:
[情绪:柔软][状态:观察][好感度+5]
……你这句话,倒是没那么吵。
前端再从正文里解析这些标签。
这个方案开发很快,但真实测试后问题很多:
- LLM 有时忘记输出标签
- 标签和正文偶尔不一致
- 情绪 CG 很难稳定触发
- 死亡结局不容易达成
- 前端解析正文很脆弱
- 测试也不好写
于是我让 SOLO 重新阅读前后端代码,并提出重构要求:
情绪 CG 难以触发。
应当单独加一层中间件判断 LLM 输出的是什么情绪或 normal。
主对话不要同时负责所有机制判断。
把各种判断机制拆开。
SOLO 给出的方案是:
主对话 LLM 只写自然回复;后端新增结构化裁判层,专门输出机制结果。
重构后,/api/chat 对前端仍然是一次请求,但后端内部变成两步:
- 主对话 LLM:生成艾的自然回复
- 机制裁判 LLM:根据玩家输入、艾的回复和历史状态,返回结构化 JSON
前端不再从正文里解析标签,而是直接消费 evaluation。
这个改动之后,项目稳定了很多。
我后来总结成一句话:
AI 产品不要只让 LLM 生成内容,要把 LLM 拆成表达层和裁判层。
表达层负责自然体验。
裁判层负责结构化规则。
4. 我如何让 SOLO 把 Token 成本变成玩法
《天台十句》的核心机制是“十句话”。
这不仅是剧情设定,也是 LLM 产品设计。
如果做无限聊天,上下文会越来越长,成本和延迟都会上涨。SOLO 帮我把这个限制转化成玩法:
- 玩家每说一句话,基础扣 1 次机会
- 如果玩家说教、命令、否定、物化、放弃她,额外扣 1 或 2
- 如果玩家真正具体地看见她、尊重边界,好感增加,并返还 1 次机会
也就是说,玩家不是机械消耗回合,而是在承担表达的后果。
一句话可能是:
基础 -1
刺伤 -2
好感 +1
最终净变化 -2
这个机制让“说话”变成了资源管理,也让玩家更认真地思考每一次输入。
这就是我觉得 AI 原生游戏有意思的地方:
技术限制本身可以成为玩法。
5. SOLO 如何帮我处理视觉体验
这个项目不是一个纯聊天页面。为了让玩家真正进入天台场景,我让 SOLO 一起做了完整视觉流程。
开场序章
SOLO调用生图skill 帮我做了多张 CG 的开场序章:
- 走上楼梯
- 推开天台门
- 看见栏杆边的身影
- 靠近她
- 第一次开口前的停顿
玩家不是直接进入聊天框,而是先进入一个电影式场景。
情绪 CG
后来我又让 SOLO 拆出情绪 CG:
- 刺痛
- 惊讶
- 柔软
- 好奇
这些不是长期状态,而是玩家某一句话造成的瞬时反馈。
状态 CG
状态 CG 则表现艾当前的长期位置:
- 防备
- 观察
- 动摇
- 回身
- 临界
这样,游戏画面既能表现“这一句话带来的情绪波动”,也能表现“整个局势正在走向哪里”。
6. SOLO 如何根据真实反馈继续迭代
项目上线后,我没有停在“能玩”阶段,而是继续让 SOLO 帮我根据真实环境反馈迭代。
问题 1:死亡结局难达成
有用户反馈死亡结局比较难打出来。
我让 SOLO 在真实环境访问网站做模拟测试,并阅读前后端逻辑。最后发现问题是:原来的回合机制太固定,玩家说了刺伤她的话,也只是普通扣 1。
于是 SOLO 帮我加入了 pressure_delta:
- 轻度刺伤:额外扣 1
- 严重刺伤:额外扣 2
- 普通回复:不额外扣
- 解析失败:保守处理,不误扣
这样死亡结局不再只是“回合耗尽兜底”,而会被玩家的具体表达动态推近。
问题 2:情绪 CG 不稳定
这个问题也通过“结构化裁判层”解决。
现在情绪不再依赖自然回复里的标签,而是由裁判明确返回:
normal / sting / surprise / soft / curiosity
前端拿到 normal 就清空瞬时情绪 CG;拿到其他情绪就直接切换对应 CG。
问题 3:默认 API 没生效
本地测试时,页面出现模拟回复:
此为模拟回复,请在设置中配置 API Key
SOLO 帮我排查后发现:后端 .env 没有启用默认 API 配置。
后来我配置了本地默认 API,并重启后端验证:
- 前端不填 Key
/api/chat仍然能走服务器默认 API- 返回真实 LLM 回复和结构化 evaluation
同步到服务器后,也验证了线上默认 API 正常。
问题 4:资源太大
早期人物 PNG 有 8MB 以上,BGM 也超过 5MB。
SOLO 给出生产级优化建议,并帮我实施:
- PNG 转 WebP
- 人物和结局图拆 1600 / 900 两档
- BGM 转低码率 OGG / MP3
- 前端用
<picture>做移动端资源切换 - 增加预加载清单
这个优化让线上加载更稳定,移动端体验也更好。
7. SOLO 如何帮我部署上线
这个项目最终不是本地 demo,而是真实上线。
SOLO 帮我完成了:
- 前端
npm run build - 后端 Go 编译
- Nginx 静态资源部署
- systemd 后端服务
- HTTPS 证书
/api/health健康检查- 线上
/api/chat验证
部署过程中还发现一个很真实的问题:
本地 .env.local 里有:
VITE_BACKEND_URL=http://localhost:8080
如果直接构建生产包,线上用户会请求他们自己电脑的 localhost:8080。
SOLO 在部署前帮我检查到了这个问题,重新用生产同源 /api 构建,并确认前端包里不再包含 localhost:8080。
这类问题只有走完整部署链路才容易暴露。
8. 最终结果
目前《天台十句》已经可以完整体验。
在线地址:
已完成能力:
- 开场电影式序章
- AI 自由输入对话
- 结构化机制裁判
- 动态剩余机会
- 好感系统
- 情绪 CG
- 角色状态 CG
- 三种结局
- 相识结局后日谈
- 存档系统
- 成就系统
- 提示系统
- 结局摘要
- 图片与音频资源优化
- HTTPS 线上部署
- 服务器默认 API
工程验证:
npm test -- --run
65 passed
go test ./...
passed
npm run build
passed
线上健康检查:
https://tiantaishiju.top/api/health
{"status":"ok"}
线上 /api/chat 不带前端 Key 也能返回真实 LLM 回复和结构化裁判结果。
9. 我觉得 SOLO 最大的价值
这次使用 SOLO,我最大的感受是:
SOLO 不只是帮我补代码,而是帮我完成了从想法到线上产品的闭环。
它参与了:
- 需求拆解
- 前端实现
- 后端实现
- Prompt 设计
- 机制重构
- 资源优化
- 测试补齐
- 浏览器验证
- 服务器部署
- 线上问题排查
- 根据用户反馈继续迭代
尤其是“读完整代码 → 发现问题 → 给生产级建议 → 修改 → 测试 → 部署 → 再验证”这条链路,让我感觉它更像一个工程协作者,而不是简单的代码生成器。
10. 这次实践沉淀的方法
我从《天台十句》里沉淀出一个可复用方法:
对 AI 互动产品,不要让一个 LLM 同时负责所有事情。
更稳的做法是拆层:
- 主 LLM:负责表达,保证自然、角色感、语气
- 裁判 LLM:负责结构化判断,保证规则稳定
- 前端状态机:负责执行结果,保证体验一致
这个方法不仅适用于 AI 叙事游戏,也适用于:
- AI 角色陪伴
- 教育对话训练
- 面试模拟
- 客服质检
- 心理支持类产品
- 互动剧本系统
12. 最后
《天台十句》对我来说,不只是一个小游戏。
它是一次完整的 AI 原生产品实践:
从一个想法,到工程拆解,到前后端开发,到 Prompt 迭代,到机制重构,到资源优化,到测试,到部署,到真实反馈后的继续改进。
而 SOLO 在这个过程中,不只是写代码的工具,而是帮我一起完成了整个产品闭环。
在线体验:








