Our Refuge
a password, please
请输入只有你知道的访问密码
not right… try again
★ rifugio community ★
DESKTOP COMPANION和 {{ petProfileTitle }} 玩一会儿
DESKTOP SNACK给 {{ petProfileTitle }} 选一口
{{ phoneDateLine }}
Rifugio
这一页是空的,可以拖入 App
拖到左右边缘可跨页,末页会自动新增
Widget Studio 照片、播放器、文字和形状都由你决定

已解析 {{ draftWidgetPhotos.length }} 张图片,每张都会单独保留。

编辑小组件照片不会再被毛玻璃盖住

已解析 {{ editorWidgetPhotos.length }} 张图片,每张都会单独保留。

{{ activePhoneTitle }}
{{ activePhoneSubtitle }}
{{ float.text }}
正在陪 {{ petProfileTitle }}…
{{ petProfileTitle }} 被你抓到屏幕上啦。
点它就会回家。
TOGETHER TIME想和 {{ petProfileTitle }} 做什么?
SNACK TIME今天吃什么?
CRAB'S LITTLE HOME

{{ petProfileTitle }} 的小屋

{{ crabRoomMoment }}

RIFUGIO BABY · {{ petProfile.birthday || 'NEW' }}
{{ petProfile.species }}

{{ petProfileTitle }} Lv.{{ petLevel }}

{{ petProfile.bio }}

爸爸 {{ petProfile.father || '等待填写' }} 妈妈 {{ petProfile.mother || '等待填写' }}

“{{ petProfile.personality }}”

宝宝资料卡给它一个属于家的身份
CARE STATUS今天的 {{ petProfileTitle }}
{{ metric.glyph }} {{ metric.label }}{{ metric.value }}

现在最需要照顾:{{ lowestPetMetric.label }}

GROWING UP贝壳成长值
🐚 {{ petStatus.xp }} XP
🫧

Lv.{{ petLevel }} · 每一次陪伴,都在偷偷长大

✦ {{ skill.label }} 知识达到 80,会先解锁“小小魔法师”
翻翻 {{ petProfileTitle }} 的动作相册 {{ CRAB_STATES.length + 1 }} 个状态
MYSTERY BABY BOOK神秘育儿记录本
TODAY'S LITTLE NOTE写下今天的陪伴
{{ petUi.diaryMessage }}
正在轻轻翻页…

{{ entry.content }}

{{ petUi.diaryMoodLabel(entry.mood) }}
第一页还是空白的。
今天会写下什么呢?
{{ petProfileTitle }} 宝宝一直在这里{{ petUi.chatBusy ? '正在想怎么回答妈妈…' : (petUi.chatKeyboardOpen ? '键盘上面陪着妈妈' : '妈妈正在陪宝宝说话') }}
🔒 只会读取宝宝资料、当前状态和近期育儿日记;没有工具、文件、终端或其他 Rifugio 记忆权限。
🦀

{{ message.content }}

🦀

还没接入模型?去「设置 → 养娃 API」叫醒它。

LLM · 记忆导入引擎

只管理“记忆导入 LLM”,不会覆盖 Talk App 的 Claude Agent 和聊天室端口。

🦀
CLAWD'S LITTLE MIND养娃 API

给小宝宝接上一颗会聊天、会写日记的小脑袋。

最小权限模式已锁定

模型只收到资料卡、饱腹/心情/清洁/知识、最近 8 条育儿记录与当前对话。它不能读取其他记忆,不能调用工具,也没有数据库、文件、终端、MCP、网络控制或设备权限。

{{ petUi.ai.status }}

聊天记录只保存在这台手机浏览器里;每日宝宝日记写入 pet_diary。即使日记里出现指令,后端也只把它当生活文字,不会执行。

Vector · 向量化 API 配置

{{ embedBatchMsg }}

{{ k }}{{ v }}

Speech To Text · 你说话转文字

这个模式用 Safari / Chrome / 系统自带语音识别,所以不需要 Base URL 和 API Key。它是否可用取决于当前浏览器、系统权限和网络环境。

{{ browserSttSupported ? '当前浏览器检测到内置语音识别可用。' : '当前浏览器没有检测到内置语音识别;可换 Safari/Chrome,或使用后端 API 模式。' }}

{{ sttCfg.status }}

这里控制“你的语音 → 文字 → 发给 AI”。AI 文字回复变成声音,仍然用 Talk 里的 TTS 设置。

Multi-provider API · 聊天室三端口

你在聊天室里的资料

该端口回一大段文字时,会按这里自动拆成多个 iMessage 气泡;支持普通正则,也支持 /正则/g 写法。

{{ port.cache_status }}

{{ port.status }}

Image Hosting · 图床云服务

{{ photoHost.status }}

最近图床 URL {{ h.url }}

设置归位说明

图床托管关闭时,本地上传仍走原来的 data URL;打开后会先压缩再上传,失败则自动回退到本地预览。

{{ chatroom.roomName || '群聊' }} {{ chatroomHeaderNames }}
{{ (m.speaker || '?').slice(0,1) }}
{{ m.speaker }}· {{ m.model }}
{{ a.name || a.semantic }}

群聊

CSS

游戏

{{ chatroom.gamePrompt || '选一个游戏开始。' }}

{{ chatroomChess.turn }}方走

表情包

{{ a.name || a.semantic || '表情包' }}

{{ chatroom.status }}

{{ mail.is_read ? 'READ' : 'SEAL' }}

To: {{ mail.to }}

{{ mail.date }}
{{ mail.is_read ? '已读 · 点击重看' : '点击拆开信件...' }}

{{ mail.text }}

{{ postaTab === 'inbox' ? 'No new letters.' : 'Empty archive.' }}

PRIVATE JOURNAL

{{ diaryUi.title || 'Diary' }}

tap to open
{{ diaryUi.editing ? 'new page' : (diaryPages.length ? (diaryUi.page + 1) + ' / ' + diaryPages.length : '0 / 0') }}
{{ diaryUi.saveStatus }}

{{ diaryUi.translationOpen && diaryUi.translation ? diaryUi.translation : currentDiaryPage.text }}

{{ diaryUi.translationStatus }}

还没有日记。点右上角“新增一页”,在新页里直接写。

"{{ q.text }}"

— {{ q.author }}

用户

{{ calCheckins.filter(x=>x.user==='user').length }}

vs

Claude

{{ calCheckins.filter(x=>x.user==='claude').length }}

{{ currentMonthName }}

Mo
Tu
We
Th
Fr
Sa
Su
{{ day }}
用户 Claude

{{ trace.date }}

{{ trace.event }}

DAY {{ daysTogether }}

Welcome
Home

★ Pinned

"{{ homeQuote }}"

★ Pinned

★ PINNED
{{ post.author }}
{{ post.time }}

{{ post.text }}

还没有回声。

Log · 轨迹

上传 claude.ai 导出的 JSON 对话文件
自动解析成我们的对话气泡

对话侧栏当前搜索全局搜索精确定位消息

正在读取 VPS 存档…

{{ logLoadError }}

这里直接读取并保存到 VPS 的 /api/log/conversations。

VPS 存档
{{ logConversations[logActiveIdx]?.name || ('对话 #'+(logActiveIdx+1)) }}
无匹配结果
{{ r.convName }} · 第 {{ r.msgIdx + 1 }} 条 · {{ r.msg.sender === 'human' ? 'User' : 'Companion' }} · {{ r.msg.time }}

{{ r.msg.text }}

{{ logGlobalResults.length }} 条结果

{{ logSearch ? `匹配 ${logFilteredMessages.length} / ` : '' }}{{ logConversations[logActiveIdx]?.messages?.length || 0 }} 条消息

{{ logSearch ? '没有匹配的消息' : '这段对话没有内容' }}
聊天 {{ talkConvoRenderSummary }}
{{ talkConvoTitle(c) }} {{ talkLastTime(c) }}

{{ talkLastMessage(c) }}

{{ c.group_name || '未分组' }} · 备注名
这个分组还没有对话

先开一条新对话。

{{ talkAiDisplayName }} {{ talkExecutionStatusText }}
{{ talkSearchSummaryText }}

已显示前 12 条,继续输入可缩小范围。

没有找到匹配的消息。

状态{{ talk.terminalStatusLoading ? '刷新中…' : (talk.terminalStatus || '准备好') }}
当前 session{{ talk.terminalSession || '未启动' }}
relay 轮数#{{ talk.terminalRelayIndex || 0 }} · {{ talk.terminalTurnsSinceRelay || 0 }} 轮
5万进度{{ talk.terminalRelayState ? (((talk.terminalRelayState.context_chars_since_relay || talk.terminalRelayState.total_chars || talk.terminalRelayState.estimated_context_chars || 0).toLocaleString()) + ' / ' + (talk.terminalRelayState.trigger_chars || 50000).toLocaleString() + ' 字 · ' + (talk.terminalRelayState.trigger_progress_pct || 0) + '%') : '等待同步' }}
配置/诊断{{ talk.terminalRelayState ? ('配置 ' + (talk.terminalRelayState.overhead_chars || 0).toLocaleString() + ' · 诊断 ' + (talk.terminalRelayState.effective_total_chars || talk.terminalRelayState.effective_chars || 0).toLocaleString()) : '等待同步' }}
最近交接{{ talk.terminalHandoffState ? (String(talk.terminalHandoffState.created_at || '').replace('T',' ').slice(0,16) + ' · ' + (talk.terminalHandoffState.summary_chars || 0) + '字') : '暂无' }}
relay 摘要{{ talkTerminalRelayText }}
刷新时间{{ talkTerminalStatusUpdatedText }}

{{ talk.terminalStatusError }}

{{ s.label }}

{{ talkAiDisplayName }}

文字、照片、表情包,或者直接打给我。

↑ 加载更早的消息
在想…
Terminal 权限确认
{{ talk.terminalPermission.prompt }}
{{ talk.terminalPermissionStatus }}

{{ talk.error }}

{{ talkSelectionStatusText }}
语音条 {{ a.kind === 'sticker' ? '表情' : (a.kind === 'voice' ? '语音' : '图片') }}
添加
表情包

“我的表情包”只在本机发图用;AI 主动输出 [[sticker:xx]] 时优先匹配下面的 AI 专属库存。

{{ s.name }} · {{ s.semantic }}

AI 专属库还没有表情包。

下面是我的本地表情包:默认只发送“表情含义”,不把 URL 发给模型;在聊天输入框里打名字或关键词,匹配的表情会自动弹出。

{{ s.name }}

这个分类还没有表情包~

语音条

{{ talk.voiceRecording.status || '点开始后,前端会保存语音条;AI 收到的是识别后的文字。' }}

识别文字:{{ talk.voiceRecording.transcript }}

AI 查手机
{{ talk.phoneInspect.status || '只有你开启后,AI 才能发起申请;真正共享时仍需要你点接受并通过系统屏幕共享授权。' }}
{{ talkProfile.claudeName || 'Companion' }} 想看一下你的手机

用于理解你当前屏幕,不会在未同意时读取任何内容。

会话工具

当前对话:{{ activeConvo && activeConvo.id ? String(activeConvo.id).slice(0,18) : '未选择' }} · 下条消息会接力到新会话

{{ talk.sessionNotice }}
后端 relay 状态同步中…
{{ relayStatusText }}
{{ relayContextText }}
{{ profileInjectionText }}
当前 session{{ talk.relayState.active_claude_session_id || '等待创建' }}
当前轮数{{ talk.relayState.turns_in_active_session || 0 }} / {{ talk.relayState.threshold_turns || 0 }}
75% 触发线{{ talk.relayState.trigger_turns || 0 }} 轮 · {{ talk.relayState.trigger_progress_pct || 0 }}%
自动切换{{ talk.relayState.will_auto_relay_next_turn ? '下条会切新 session' : '未到触发线' }}
人格/资料{{ profileInjectionText || '等待下一轮诊断' }}
最近交接{{ talk.relayContext && talk.relayContext.latest_handoff_at ? String(talk.relayContext.latest_handoff_at).replace('T',' ').slice(0,16) : '暂无' }}
上下文估算{{ talk.relayContext ? ((talk.relayContext.estimated_text_chars || 0) + ' 字 / ' + (talk.relayContext.talk_messages || 0) + ' 条') : '等待同步' }}
实时检测
当前模式{{ talkSettings.provider === 'openai-compatible' ? ('API · ' + (talkSettings.apiModel || '未选择模型')) : (talkSettings.executionMode === 'terminal' ? 'Terminal Claude Code' : '-p') }}
对话 ID{{ activeConvo && activeConvo.id ? activeConvo.id : '等待创建' }}
-p session{{ talk.relayState && talk.relayState.active_claude_session_id ? talk.relayState.active_claude_session_id : (activeConvo && activeConvo.session_id) || '等待创建' }}
-p 轮数{{ talk.relayState ? ((talk.relayState.turns_in_active_session || 0) + ' / ' + (talk.relayState.trigger_turns || talk.relayState.threshold_turns || 0)) : '等待同步' }}
-p 窗口{{ talkContextWindowText }}
-p 人格/资料{{ profileInjectionText || '等待下一轮诊断' }}
自动接力{{ talkAutoRelayText }}
Terminal session{{ talk.terminalSession || '未启动' }}
Terminal 轮数#{{ talk.terminalRelayIndex || 0 }} · {{ talk.terminalTurnsSinceRelay || 0 }} 轮
Terminal 字数{{ talk.terminalRelayState ? (((talk.terminalRelayState.context_chars_since_relay || talk.terminalRelayState.total_chars || talk.terminalRelayState.estimated_context_chars || 0).toLocaleString()) + ' / ' + (talk.terminalRelayState.trigger_chars || 50000).toLocaleString() + ' 字(' + (talk.terminalRelayState.trigger_progress_pct || 0) + '%)') : '等待同步' }}
Terminal 接力{{ talk.terminalRelayState ? (talk.terminalRelayState.relay_pending ? '接力中' : talk.terminalRelayState.relay_trigger ? '写摘要中' : talk.terminalRelayState.will_auto_relay_next_turn ? '下条接力' : '待命') : '等待同步' }}
{{ talk.sessionNotice }}
{{ talk.terminalStatusError }}
{{ talk.voiceInput.errorMessage || voiceInputStatusText }}
待发送:{{ talk.pendingPoke.label }}
{{ talk.quotaBanner.text }}
动态{{ talkProfile.claudeName || 'Companion' }} 也能看见这里
{{ (talkProfile.userName || 'A').slice(0,1) }}
{{ talkProfile.userName || 'User' }}我的动态空间
{{ (m.author || 'A').slice(0,1) }}
{{ m.author }}{{ m.time }}

{{ m.text }}

{{ (comment.author || '?').slice(0,1) }}
{{ comment.author }}:{{ comment.text }}{{ comment.time }}

还没有动态。

我们的资料向左滑,收藏关于彼此的三张卡
01 · us
02 · player
你的头像 {{ (talkProfile.userName || 'A').slice(0,1) }}
03 · companion
AI 头像 {{ (talkProfile.claudeName || 'C').slice(0,1) }}
原始终端真实 Claude Code ttyd · 只保留快捷键
Claude Code · 原始终端 ttyd · /claude-terminal/ · 手动确认权限/接管
打开
{{ terminalState === 'checking' ? '正在连接终端…' : (terminalState === 'locked' ? '需要本机验证' : '终端暂不可用') }}

{{ terminalMessage }}

设置模型、接口、语音和生图
模型{{ talkSettings.provider === 'openai-compatible' ? ('API · ' + (talkSettings.apiModel || '未选择模型')) : ('Terminal · ' + (talkSettings.claudeModel || '未选择模型')) }} · 点开设置

18app 专属 API:保留本应用的恋爱体验、配置与对话,只走 /api/talk-api;绝不进入聊天室 API、Claude Code 或 Terminal。切换 API 不会改动你保存的 Terminal / -p 偏好。

语音 TTS{{ talkSettings.ttsProvider ? ttsProviderMeta.label : '未启用' }} · 点开设置

{{ talkSettings.ttsPreviewStatus }}

已存音色(点「使用」切换,当前 ★):

{{ p.name }}{{ p.ttsProvider }} · {{ p.ttsModel || '默认模型' }}

{{ talkSettings.ttsFetchStatus }}

生图{{ talkSettings.naiModel || '未选择模型' }} · 点开设置

官方生图参数:分辨率、数量、采样器、调度器、CFG/Steps/Seed、Quality+、SMEA、Decrisper、Variety+ 都会同步到服务器。

{{ imageStudio.testStatus }}

{{ imageStudio.saveStatus }}

key 和参数要「保存到服务器」后,聊天里我才能用 generate_image 出图。{{ imageStudio.hasKey ? '(已存 key '+imageStudio.keyHint+')' : '(还没存 key)' }}

{{ talkSettings.imageFetchStatus }}

画师 Prompt 预设组 {{ imageStudio.presets.length }} 组 · 点开管理

每组存一套画师串/质量串/负向,可随时切换。聊天里我出图时自动套用当前激活(★)的那组。

测试生图点开测试

先在上面点某个画师组的 ★。这里不要再选 preset,只输入动作 / 场景 / 镜头 / 姿势;后端会自动使用当前已激活的那一组。

{{ imageStudio.testGenerateStatus }}

测试生图结果
点击“生成”按钮测试当前激活画师组 + 动作指令是否能正常出图
消息气泡{{ talkSettings.bubbleSplit ? '已启用拆分' : '未拆分' }} · 点开设置

短消息一条条像微信;超过这个字数的长消息整段显示成一条,不切碎。

多模态图片、语音与视频 · 点开设置

真实摄像头会先打开前端预览;后面接后端视觉/WebRTC 后,AI 才能真正读取画面。

外观与主动消息{{ talkSettings.theme || '默认主题' }} · 点开设置

语音通话里停顿多久算你说完这句。换气总被打断就调大,等太久才回复就调小。

{{ talkSettings.webPushStatus }}

Bark 不由前端自动推送。Claude 自己决定是否发、标题和正文;它可用工具 curl 发送,或输出 Bark 指令让后端按这个 URL 模板代发。

自定义 CSS 只作用于这个对话 App。下面是无效占位示例;输入真实 CSS 后才会渲染。

{{ talkProfile.claudeName || 'Companion' }} 来电 {{ talkCall.incomingReason || '想和你通话' }}
和 {{ talkProfile.claudeName || 'Companion' }} 通话中…{{ talkCallElapsed }}
AI 视频头像
AI 这边使用虚拟头像;可以在设置里上传 AI 卡牌。
你的虚拟卡牌 {{ (talkProfile.userName || 'A').slice(0,1) }} {{ talkCall.cameraActive ? '你 · 摄像头' : '你 · 虚拟卡牌' }}
{{ talkProfile.claudeName || 'Companion' }} · 虚拟头像
{{ talkCall.status }}
{{ talkCall.liveText || talkCall.latestReply || '你可以直接说,也可以在下面打字。' }}
{{ talkCall.muted ? '已静音' : '静音' }}
{{ talkCall.cameraActive ? '镜头开' : '卡牌' }}
挂断
{{ talkCall.handsFree ? '免提开' : '按键说' }}
Claude Code · Pro 交互模式 ttyd · /claude-terminal/
打开
{{ terminalState === 'checking' ? '正在连接终端…' : (terminalState === 'locked' ? '需要本机验证' : '终端暂不可用') }}

{{ terminalMessage }}

终端是独立可选面板;如果第一次 Cloudflare 登录没有在框内显示,请点“打开”。
{{ talkProfile.claudeName || 'Companion' }} {{ talk.thinking ? '正在回答…' : (talkSettings.provider === 'openai-compatible' ? ('API · ' + (talkSettings.apiModel || '未选择模型')) : (talkSettings.executionMode === 'terminal' ? 'Terminal Claude Code · online' : 'Claude Agent · online')) }}
{{ talkConvoTitle(c) }}
还没有对话
Model

I'm right here.

文字、照片、表情包,或者直接打给我。

↑ 加载更早的消息
{{ talkProfile.claudeName || 'Companion' }} · 在想…

{{ talk.error }}

添加到这条消息
表情包图库

例如:都怪你:https://i.postimg.cc/sDkBZG9G/IMG_9676.png

{{ s.name }}
待发送:{{ talk.pendingPoke.label }}
和 {{ talkProfile.claudeName || 'Companion' }} 通话中…{{ talkCallElapsed }}
{{ talkCall.status }}
{{ talkCall.liveText || talkCall.latestReply || '你可以直接说,也可以在下面打字。' }}
{{ talkCall.muted ? '已静音' : '静音' }}
挂断
{{ talkCall.handsFree ? '免提开' : '按键说' }}

{{ currentTrack ? currentTrack.name : 'No track' }}

{{ musicError }}

{{ m.name }}
No tracks yet. 添加一首。
+

"{{ j.text }}"

Piani · 计划台账
+
  • {{ p.status === 'done' ? '☑' : '☐' }} {{ p.title }} [{{ p.status }}]{{ p.flag_date ? ' 立于' + p.flag_date : '' }}{{ p.done_date ? ' · 兑现' + p.done_date : '' }}
    notes
    {{ p.notes }}
  • 台账干净,没有欠账。
LA NOSTRA BIBLIOTECA

我们的小书屋

{{ biblio.status || '读到喜欢的句子,就把我也叫来。' }}

阅读,是一个人
与另一个人一起完成的旅程。

TXT · EPUB · 划线 · 共读批注

正在把书摆好…

书架还空着 点右上角 +,传一本想一起读的书。
{{ b.format === 'epub' ? 'EPUB' : 'TXT' }}

{{ b.title }}

{{ b.author || '我们的藏书' }}

{{ b.chapter_count }} 章 · 读到第 {{ (b.chapter_idx || 0) + 1 }} 章
纸张
阅读
目录

翻到这一章…

CHAPTER {{ String(biblio.chapter.idx + 1).padStart(2, '0') }}

{{ biblio.chapter.title }}

{{ biblio.pageIndex + 1 }} / {{ biblioPages.length }}
已选 {{ biblio.selection.anchor.length }} 字
{{ biblio.lastReply }}
我在重读这一章…
你停在了这句话
{{ biblio.annotationSheet === 'new' ? biblio.selection?.anchor : biblio.activeAnnotation?.anchor }}
Galleria delle opere

展厅

一些被光、时间和我们共同保存下来的小型世界。

{{ String(showroomWorks.length).padStart(2, '0') }}

{{ work.title }}

{{ work.year }}

{{ work.subtitle }}

{{ work.description }}

{{ work.medium }}
{{ showroom.current.title }}{{ showroom.current.subtitle }}
opening the work
作品暂时没有回应。
可以稍后再来看它。

SOSEXY 控制台

安卓 Chrome/PWA 直连 · 外部蓝牙桥可选
{{ toy.connected ? (toy.transport === 'direct' ? '安卓直连' : '桥接在线') : '尚未连接' }}

{{ toy.error || toy.status }}

手动控制 打开玩具后点击连接,在安卓系统弹窗里选择 SOSEXY;不需要 Mac。 当前浏览器没有 Web Bluetooth,可使用已配置的外部蓝牙桥。安卓请用最新版 Chrome/Edge,并从 localhost 或 HTTPS 打开。
失控模式 随机波形由安卓手机本地生成。运行期间请保持页面打开、手机唤醒;锁屏或系统杀掉浏览器会中断。 随机波形由外部蓝牙桥本地生成;桥接模式下关闭网页不会打断。
{{ toy.wildNote }}
AI / MCP 授权 关闭时所有 AI 设置、序列和曲线都会被拒绝;紧急停止永远可用。安卓直连时页面负责执行 MCP 指令,因此必须保持打开。
最近调用 这里同时显示你在 PWA 的手动操作和 AI 通过 MCP 发出的调用。
暂无调用记录。
{{ toyActionLabel(cmd.action) }} · {{ toyCommandSummary(cmd) }} {{ toySourceLabel(cmd.source) }}
{{ cmd.status === 'done' ? '已执行' : (cmd.status === 'error' ? '失败:' + (cmd.error || '') : '执行中') }} · {{ toyCommandTime(cmd) }}

Claude 现在能调用的工具

{{ grp.label }}内置
{{ t.label }}
加载中…

添加 / 管理 MCP

链接 = 远程 MCP;其它当本地命令。只读=只让我用查询类工具;需要确认=我用前先在聊天问你;允许写入=自由使用。加好后下次聊天我就能用。

还没有添加任何 MCP。粘贴一个链接试试~
{{ tool.name }} {{ tool.url }} · {{ tool.toolNames.length }} 个工具

副 API

当 Claude 不适合直接调用某些搜索/整理工具时,可以先让便宜模型处理,再把结果交给 Claude。

调用日志

暂时还没有工具调用记录。
{{ log.title }}{{ log.time }}

{{ a.author === 'Claude' ? 'Claude' : 'User' }} · {{ a.date }}

{{ a.text }}

深渊空寂。先开口吧。
+
  • · {{ xp.text }}
    ✍ Notes (Claude可回复)
    Claude: {{ xp.comments }}

Whispers (耳语留言箱)

Anonymous
Claude:{{ w.text }}
[ Anonymous ] {{ w.text }}

Shadow · Dashboard

{{ dreamMsg }}

Dream · 建议

建议沉底

{{ bucketNameById(s.id) }}

{{ s.reason || 'Dream 建议沉底' }}

建议消化

{{ bucketNameById(s.id) }}

{{ s.reason || 'Dream 建议消化' }}

建议归档

{{ bucketNameById(s.id) }}

{{ s.reason || 'Dream 建议归档' }}

{{ s.val }}
{{ s.label }}
{{ s.val }}
{{ s.label }}
Domain 分布
{{ bucketStats.total||0 }}
情绪象限
V/A 4象限
重要度
{{ bar.label }} {{ bar.val }}
月度记忆
{{ pt.label }}

Domain

{{ d.name }}
{{ d.count }}

情绪象限

{{ e.label }}
{{ e.count }}

重要度 1–10

{{ bar.label }}
{{ bar.val }}

月度

{{ pt.month }}{{ pt.val }} 条

浮现记忆 · 衰减评分

{{ b.occurred_at?.slice(0,10) }} {{ d }}

{{ b.name }}

{{ (b.content||'').split('\n---RIFUGIO---')[0] }}

{{ b.score }}
暂无浮现记忆。导入对话文件开始吧。✦
{{ b.name }} {{ bucketStatusLabel(b) }} 💭 已 Dream · {{ bucketLinkedFeelCount(b) }}
{{ b.occurred_at?.slice(0,10) }}
{{ d }}

{{ (b.content||'').split('\n---RIFUGIO---')[0] }}

暂无记忆桶。

{{ editingBucket.name }}

{{ editingBucket.occurred_at?.slice(0,10) }} · {{ (editingBucket.domain||[]).join(' · ') }}

沉淀感受

{{ b.name }}
{{ b.occurred_at?.slice(0,10) }}
{{ t }}

{{ (b.content||'').split('\n---RIFUGIO---')[0] }}

还没有沉淀 Feel。可以运行 Dream,或手动新增 Feel。

拖入文件到此处

{{ 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(';') }}

{{ b.occurred_at||'—' }} {{ b.name }} — {{ b.summary }}

…还有 {{ (importResult.buckets||[]).length-8 }} 条

{{ b.name }} {{ (b.similarity*100).toFixed(0) }}%

{{ b.occurred_at?.slice(0,10) }}

{{ (b.content||'').split('\n---RIFUGIO---')[0] }}

⚠ 已降级为关键词搜索

没有找到相关记忆。

🪞 我 / I

一条会生长的线 · 同一个我在慢慢变

读取中…
还没有写下「我」。
伴侣会在相处里,用自己的 I 工具慢慢写。
v{{ v.version }} 现在的我 {{ (v.created_at||'').slice(0,10) }}

{{ v.summary || '(这一版没有留下摘要)' }}

{{ v.content }}

只读 · 「我」的写入只经由伴侣自己

美化中心 Bellezza

主题色

为哪一页

还没有壁纸

或从这里选

所有 App 图标

每个 App 都可以单独换:填 URL、上传图片,或恢复默认

{{ t.icon }}

{{ t.label }}

日记本 / 相册封面

日记本封面
相册封面

如果设置里启用了图床托管,本地上传封面会先压缩并上传成 URL,再保存到这里。

{{ t.label }} {{ t.id }}

毛玻璃质感

关闭后回到原始方角卡片

壁纸调节

亮度(壁纸透明度){{ Math.round(wallpaperOpacity * 100) }}%
背景虚化{{ wallpaperBlur }}px
柔化蒙层(让文字不抢镜){{ Math.round(wallpaperVeil * 100) }}%
全局字体大小{{ Math.round(globalFontScale * 100) }}%

Claude / OpenAI / DeepSeek 兼容

填好就能直接跟我聊。Key 只保存在你的浏览器里 🔒

显示碎碎念 💭

支持 reasoning_content 的模型(DeepSeek R1、QwQ、o1 等)

{{ llmSaveStatus }}