先读懂,不直接决定
感知层只负责把自然语言拆成结构化信号,不负责决定江予白该安慰还是调情。
从会聊天,到会拿捏分寸
不枕不是一个 AI 恋人聊天壳子,而是我从 0 到 1 独立完成的 AI 情感陪伴产品。 这次重构的核心,是把容易失控的亲密体验,拆成一套可解释、可调试、可控成本的 Agent Harness。
V1 已经会聊天,真正的问题是:当用户低落、回避或试探关系时,系统能不能稳定地拿捏分寸。
亲密关系的“分寸”不能只靠模型自由发挥。Runtime 管动作,模型管表达。
她不是缺一个会回答的 AI,
而是缺一个稳定存在的人。
目标用户想要的不是模型知识量,而是细腻的关系体验:低落时被接住、日常里被记得、靠近时有分寸,并且角色像真的活在她的生活时间线里。
如果只把它理解成聊天框,产品会很快滑向“会说话,但不形成关系”。
用户不是来要答案,而是在低落、焦虑、失眠时确认“有人在”。系统要先识别情绪强度和风险,再选择安慰、陪伴或安全兜底。
用户真正沉浸的点,是他会记得、会主动、会在合适时间出现。记忆、天气和时间不只是 Prompt 素材,而是先进入状态和策略。
我把亲密陪伴拆成一套可计算、可追踪、可调节的 Agent Harness。
不枕表面上是在和江予白聊天,底层真正处理的是一连串“关系行为”判断:她现在是在求安慰、撒娇、试探关系,还是只是日常闲聊?这一轮应该接住、靠近、后退、主动提起记忆,还是短路到安全话术?这些决定不能全交给模型临场发挥。
代码负责“做什么”,保证稳定、可解释、可复盘。
模型负责“怎么说”,保证自然、苏感和角色味道。
不枕不是直接把用户消息丢给模型生成台词,而是先读懂当前情境,再更新关系状态,由代码选择本轮动作,最后让模型把动作目标表达出来;回复后的新信息再写回记忆,为下一轮对话做准备。
用户看到的是文字、语音、多模态互动和关系变化;中间由情绪感知、时间关怀、天气关怀、记忆召回和主动问候支撑;再往下是 Agent Runtime,负责把信号汇合成状态与决策。
这一节不再讲抽象架构,而是解释 Runtime 怎么在一轮对话里工作:先读懂用户,再更新关系状态,接着由代码选择动作,必要时调取记忆,最后把全链路写进 Trace。
感知层只负责把自然语言拆成结构化信号,不负责决定江予白该安慰还是调情。
好感、信任、张力、情绪能量每轮重新计算,不用“聊够几轮就升级”的硬规则。
候选动作被统一打分,Runtime 选择最合适的动作;LLM 只接收最终动作目标和表达边界。
记忆先作为决策信号参与打分;只有“主动提起记忆”被选中,具体记忆才进入台词。
Trace 记录感知、状态变化、动作分数和最终指令,方便定位是感知错、权重错还是表达没服从。
不枕不是把能力越堆越多,而是明确哪些事情必须稳定、哪些事情可以交给模型发挥、哪些能力应该旁路化。下面是这套 MVP 里最关键的四个取舍。
调试入口直接放进真实对话界面:先开启 dev 面板,再展开当轮 Agent Trace,最后查看动作分数、状态变化和上下文信号。
情感陪伴最难调的地方,不是“回复不好看”,而是很难判断它为什么这样回复:是情绪识别错了,关系状态太激进,记忆召回不该出现,还是模型表达越界。为了解决这个问题,我给不枕做了 Trace 面板,让每轮对话都能回看系统在各层做过的判断。
当一句话显得太近或太冷,我可以定位是状态、策略还是表达层的问题,而不是反复猜 Prompt。
产品体验和工程实现可以用同一份 Trace 讨论,把主观感受落到具体运行节点。
把可确定的判断放在代码里,模型调用集中在表达层,降低不必要的试错和调用成本。
不枕的 Agent Runtime 不是边聊边改 Prompt 的试错流,而是先把 PRD v1.2 冻结,再用 OpenSpec 把 proposal、spec、tasks 和验收门槛拆清楚。
AI Product Manager / AI Builder
本项目由我独立完成从 0 到 1 的产品定义、Agent 架构设计、体验设计、前端实现与部署上线,覆盖从想法验证到可运行 MVP 的完整闭环。
这里按 Harness 单轮上下文估算,包含人设 Prompt、状态 JSON、记忆候选和最近上下文。普通聊天成本接近固定,真正要被预算闸控制的是图片和长语音等高成本旁路能力。
付费点应该围绕“更稳定、更懂我、更有仪式感”的长期陪伴,而不是让用户感觉每句话都在扣钱。
文本便宜,语音中等,图片最贵。 所以高成本能力要低频触发、额度控制、失败可回滚。