{{ petProfileTitle }} Lv.{{ petLevel }}
{{ petProfile.bio }}
“{{ petProfile.personality }}”
{{ crabRoomMoment }}
{{ petProfile.bio }}
“{{ petProfile.personality }}”
现在最需要照顾:{{ lowestPetMetric.label }}
Lv.{{ petLevel }} · 每一次陪伴,都在偷偷长大
LLM · 记忆导入引擎
只管理“记忆导入 LLM”,不会覆盖 Talk App 的 Claude Agent 和聊天室端口。
给小宝宝接上一颗会聊天、会写日记的小脑袋。
模型只收到资料卡、饱腹/心情/清洁/知识、最近 8 条育儿记录与当前对话。它不能读取其他记忆,不能调用工具,也没有数据库、文件、终端、MCP、网络控制或设备权限。
{{ petUi.ai.status }}
聊天记录只保存在这台手机浏览器里;每日宝宝日记写入 pet_diary。即使日记里出现指令,后端也只把它当生活文字,不会执行。
Vector · 向量化 API 配置
{{ embedBatchMsg }}
Speech To Text · 你说话转文字
这个模式用 Safari / Chrome / 系统自带语音识别,所以不需要 Base URL 和 API Key。它是否可用取决于当前浏览器、系统权限和网络环境。
{{ browserSttSupported ? '当前浏览器检测到内置语音识别可用。' : '当前浏览器没有检测到内置语音识别;可换 Safari/Chrome,或使用后端 API 模式。' }}
{{ sttCfg.status }}
这里控制“你的语音 → 文字 → 发给 AI”。AI 文字回复变成声音,仍然用 Talk 里的 TTS 设置。
Multi-provider API · 聊天室三端口
包含记忆、Dream、健康、音乐、生图、表情包和玩具;永不包含终端、VPS 或命令执行。
该端口回一大段文字时,会按这里自动拆成多个 iMessage 气泡;支持普通正则,也支持 /正则/g 写法。
{{ port.cache_status }}
{{ port.status }}
设置归位说明
图床托管关闭时,本地上传仍走原来的 data URL;打开后会先压缩再上传,失败则自动回退到本地预览。
{{ seg.value }}
{{ chatroom.gamePrompt || '选一个游戏开始。' }}
{{ chatroom.status }}
To: {{ mail.to }}
{{ mail.date }}{{ mail.text }}
PRIVATE JOURNAL
{{ diaryUi.translationOpen && diaryUi.translation ? diaryUi.translation : currentDiaryPage.text }}
{{ diaryUi.translationStatus }}还没有日记。点右上角“新增一页”,在新页里直接写。
"{{ q.text }}"
— {{ q.author }}
用户
{{ calCheckins.filter(x=>x.user==='user').length }}
Claude
{{ calCheckins.filter(x=>x.user==='claude').length }}
{{ trace.date }}
{{ trace.event }}
DAY {{ daysTogether }}
★ Pinned
"{{ homeQuote }}"
★ Pinned
{{ post.text }}
Log · 轨迹
上传 claude.ai 导出的 JSON 对话文件
自动解析成我们的对话气泡
正在读取 VPS 存档…
{{ logLoadError }}
这里直接读取并保存到 VPS 的 /api/log/conversations。
{{ r.msg.text }}
{{ logSearch ? `匹配 ${logFilteredMessages.length} / ` : '' }}{{ logConversations[logActiveIdx]?.messages?.length || 0 }} 条消息
{{ talkLastMessage(c) }}
先开一条新对话。
已显示前 12 条,继续输入可缩小范围。
没有找到匹配的消息。
{{ talk.terminalStatusError }}
“我的表情包”只在本机发图用;AI 主动输出 [[sticker:xx]] 时优先匹配下面的 AI 专属库存。
AI 专属库还没有表情包。
下面是我的本地表情包:默认只发送“表情含义”,不把 URL 发给模型;在聊天输入框里打名字或关键词,匹配的表情会自动弹出。
这个分类还没有表情包~
{{ talk.voiceRecording.status || '点开始后,前端会保存语音条;AI 收到的是识别后的文字。' }}
识别文字:{{ talk.voiceRecording.transcript }}
用于理解你当前屏幕,不会在未同意时读取任何内容。
当前对话:{{ activeConvo && activeConvo.id ? String(activeConvo.id).slice(0,18) : '未选择' }} · 下条消息会接力到新会话
{{ m.text }}
还没有动态。
{{ talkProfile.userBio || '在这里写下关于你的故事、性格和想被怎样理解。' }}
{{ talkProfile.userLikes || '喜欢的事,会一点点住进这里。' }}
{{ talkProfile.userDislikes || '不喜欢的事,也值得被认真记住。' }}
{{ talkProfile.claudeNotes || '把关于他的背景、设定和他是谁认真写在这里。' }}
18app 专属 API:保留本应用的恋爱体验、配置与对话,只走 /api/talk-api;绝不进入聊天室 API、Claude Code 或 Terminal。切换 API 不会改动你保存的 Terminal / -p 偏好。
{{ talkSettings.modelFetchStatus }}
{{ ttsProviderNote }}
{{ ttsDebugPayload }}
{{ talkSettings.ttsPreviewStatus }}
已存音色(点「使用」切换,当前 ★):
{{ talkSettings.ttsFetchStatus }}
官方生图参数:分辨率、数量、采样器、调度器、CFG/Steps/Seed、Quality+、SMEA、Decrisper、Variety+ 都会同步到服务器。
{{ imageStudio.testStatus }}
{{ imageStudio.saveStatus }}
key 和参数要「保存到服务器」后,聊天里我才能用 generate_image 出图。{{ imageStudio.hasKey ? '(已存 key '+imageStudio.keyHint+')' : '(还没存 key)' }}
{{ talkSettings.imageFetchStatus }}
每组存一套画师串/质量串/负向,可随时切换。聊天里我出图时自动套用当前激活(★)的那组。
先在上面点某个画师组的 ★。这里不要再选 preset,只输入动作 / 场景 / 镜头 / 姿势;后端会自动使用当前已激活的那一组。
{{ imageStudio.testGenerateStatus }}
短消息一条条像微信;超过这个字数的长消息整段显示成一条,不切碎。
真实摄像头会先打开前端预览;后面接后端视觉/WebRTC 后,AI 才能真正读取画面。
语音通话里停顿多久算你说完这句。换气总被打断就调大,等太久才回复就调小。
{{ talkSettings.webPushStatus }}
Bark 不由前端自动推送。Claude 自己决定是否发、标题和正文;它可用工具 curl 发送,或输出 Bark 指令让后端按这个 URL 模板代发。
自定义 CSS 只作用于这个对话 App。下面是无效占位示例;输入真实 CSS 后才会渲染。
{{ terminalMessage }}
例如:都怪你:https://i.postimg.cc/sDkBZG9G/IMG_9676.png
{{ currentTrack ? currentTrack.name : 'No track' }}
{{ musicError }}
{{ galleryUi.importMsg }}
{{ galleryUi.saveWarn }}
{{ galleryUi.urlMsg }}
{{ currentGalleryPhoto.caption }}
轻点任意处收回"{{ j.text }}"
{{ radio.detail.item?.artist || radio.player.source || radio.player.provider || '音乐' }}
{{ radioDetailLines[0] || radio.detail.summary || '' }}
{{ radio.player.error }}
{{ biblio.status || '读到喜欢的句子,就把我也叫来。' }}
阅读,是一个人
与另一个人一起完成的旅程。
正在把书摆好…
{{ b.author || '我们的藏书' }}
翻到这一章…
{{ biblio.annotationSheet === 'new' ? biblio.selection?.anchor : biblio.activeAnnotation?.anchor }}
{{ biblio.activeAnnotation.note }}
我还没有回应这条批注。
一些被光、时间和我们共同保存下来的小型世界。
{{ work.subtitle }}
{{ work.description }}
{{ toy.error || toy.status }}
链接 = 远程 MCP;其它当本地命令。只读=只让我用查询类工具;需要确认=我用前先在聊天问你;允许写入=自由使用。加好后下次聊天我就能用。
还没有添加任何 MCP。粘贴一个链接试试~{{ a.author === 'Claude' ? 'Claude' : 'User' }} · {{ a.date }}
{{ a.text }}
Shadow · Dashboard
Dream · 建议
建议沉底
{{ bucketNameById(s.id) }}
{{ s.reason || 'Dream 建议沉底' }}
建议消化
{{ bucketNameById(s.id) }}
{{ s.reason || 'Dream 建议消化' }}
建议归档
{{ bucketNameById(s.id) }}
{{ s.reason || 'Dream 建议归档' }}
Domain
情绪象限
重要度 1–10
月度
浮现记忆 · 衰减评分
{{ b.name }}
{{ (b.content||'').split('\n---RIFUGIO---')[0] }}
{{ (b.content||'').split('\n---RIFUGIO---')[0] }}
{{ editingBucket.name }}
{{ editingBucket.occurred_at?.slice(0,10) }} · {{ (editingBucket.domain||[]).join(' · ') }}
沉淀感受
{{ (b.content||'').split('\n---RIFUGIO---')[0] }}
拖入文件到此处
{{ importFile.name }}
{{ (importFile.size/1024).toFixed(1) }} KB
{{ bucketImportPromptMsg }}
候选总数 {{ importCandidates.length }} · 已选择 {{ selectedImportCount }}
{{ importResult.ok ? (importResult.dry_run ? '候选预览' : '导入完成') : '导入失败' }} · {{ importResult.created||importResult.count||0 }} 条
{{ importResult.error }}
{{ (importResult.errors||[]).join(';') }}
…还有 {{ (importResult.buckets||[]).length-8 }} 条
{{ b.occurred_at?.slice(0,10) }}
{{ (b.content||'').split('\n---RIFUGIO---')[0] }}
⚠ 已降级为关键词搜索
🪞 我 / I
一条会生长的线 · 同一个我在慢慢变
{{ v.summary || '(这一版没有留下摘要)' }}
{{ v.content }}
只读 · 「我」的写入只经由伴侣自己
兼容 OpenAI 格式。当 Memorie 太多时,勾选若干条然后点合并 — 由模型把它们浓缩成一条 Risonanza,原条目会被删除。
主题色
为哪一页
或从这里选
所有 App 图标
每个 App 都可以单独换:填 URL、上传图片,或恢复默认
{{ t.label }}
日记本 / 相册封面
如果设置里启用了图床托管,本地上传封面会先压缩并上传成 URL,再保存到这里。
毛玻璃质感
关闭后回到原始方角卡片
壁纸调节
Claude / OpenAI / DeepSeek 兼容
填好就能直接跟我聊。Key 只保存在你的浏览器里 🔒
显示碎碎念 💭
支持 reasoning_content 的模型(DeepSeek R1、QwQ、o1 等)