Files
hunjing/design/memory.html
T
2026-09-21 11:19:07 +08:00

243 lines
20 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN" data-theme="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>息壤 · 记忆与知识 — 魂镜 Hunjing</title>
<link rel="stylesheet" href="assets/app.css?v=10">
</head>
<body>
<svg style="display:none" aria-hidden="true">
<symbol id="i-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></symbol>
<symbol id="i-home" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><path d="M9 22V12h6v10"/></symbol>
<symbol id="i-branch" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="6" y1="3" x2="6" y2="15"/><circle cx="18" cy="6" r="3"/><circle cx="6" cy="18" r="3"/><path d="M18 9a9 9 0 0 1-9 9"/></symbol>
<symbol id="i-book" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></symbol>
<symbol id="i-user" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></symbol>
<symbol id="i-layers" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 2 7 12 12 22 7 12 2"/><polyline points="2 17 12 22 22 17"/><polyline points="2 12 12 17 22 12"/></symbol>
<symbol id="i-kanban" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 3h4v18H5z"/><path d="M10 3h4v12h-4z"/><path d="M15 3h4v8h-4z"/></symbol>
<symbol id="i-package" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/></symbol>
<symbol id="i-users" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></symbol>
<symbol id="i-route" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="19" r="3"/><circle cx="18" cy="5" r="3"/><path d="M12 19h4.5a3.5 3.5 0 0 0 0-7h-9a3.5 3.5 0 0 1 0-7H12"/></symbol>
<symbol id="i-globe" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></symbol>
<symbol id="i-bag" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"/><line x1="3" y1="6" x2="21" y2="6"/><path d="M16 10a4 4 0 0 1-8 0"/></symbol>
<symbol id="i-shield" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></symbol>
<symbol id="i-monitor" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/></symbol>
<symbol id="i-sliders" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="4" y1="21" x2="4" y2="14"/><line x1="4" y1="10" x2="4" y2="3"/><line x1="12" y1="21" x2="12" y2="12"/><line x1="12" y1="8" x2="12" y2="3"/><line x1="20" y1="21" x2="20" y2="16"/><line x1="20" y1="12" x2="20" y2="3"/><line x1="1" y1="14" x2="7" y2="14"/><line x1="9" y1="8" x2="15" y2="8"/><line x1="17" y1="16" x2="23" y2="16"/></symbol>
<symbol id="i-search" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></symbol>
<symbol id="i-check" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></symbol>
<symbol id="i-clock" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></symbol>
<symbol id="i-quote" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21c3 0 7-1 7-8V5c0-1.25-.756-2.017-2-2H4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2 1 0 1 0 1 1v1c0 1-1 2-2 2s-1 .008-1 1.031V20c0 1 0 1 1 1z"/><path d="M15 21c3 0 7-1 7-8V5c0-1.25-.757-2.017-2-2h-4c-1.25 0-2 .75-2 1.972V11c0 1.25.75 2 2 2h.75c0 2.25.25 4-2.75 4v3c0 1 0 1 1 1z"/></symbol>
<symbol id="i-chevrons" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="11 17 6 12 11 7"/><polyline points="18 17 13 12 18 7"/></symbol>
</svg>
<div class="app">
<aside class="sidebar">
<div class="brand">
<div class="brand__mark" aria-hidden="true"></div>
<div class="brand__text">
<div class="brand__name">魂镜</div>
<div class="brand__sub">Hunjing</div>
</div>
</div>
<nav class="side-nav" aria-label="主导航">
<div class="nav-group">
<div class="nav-group__title">常用</div>
<a class="nav-item" href="home.html"><svg><use href="#i-home"/></svg><span class="cn">镜庭</span><span class="nav-plain">首页</span></a>
<a class="nav-item" href="conversation.html"><svg><use href="#i-branch"/></svg><span class="cn">镜树</span><span class="nav-plain">对话</span></a>
<a class="nav-item" href="characters.html"><svg><use href="#i-user"/></svg><span class="cn">镜生</span><span class="nav-plain">角色</span></a>
<a class="nav-item is-active" href="memory.html" aria-current="page"><svg><use href="#i-book"/></svg><span class="cn">息壤</span><span class="nav-plain">记忆</span></a>
<a class="nav-item" href="avatar.html"><svg><use href="#i-layers"/></svg><span class="cn">形仪</span><span class="nav-plain">形象</span></a>
</div>
<div class="nav-group">
<div class="nav-group__title">创造</div>
<a class="nav-item" href="agent-workspace.html"><svg><use href="#i-kanban"/></svg><span class="cn">天工阁</span><span class="nav-plain">任务</span></a>
<a class="nav-item" href="plugins.html"><svg><use href="#i-package"/></svg><span class="cn">百工坊</span><span class="nav-plain">插件</span></a>
<a class="nav-item" href="collaboration.html"><svg><use href="#i-users"/></svg><span class="cn">同契台</span><span class="nav-plain">协作</span></a>
<a class="nav-item" href="model-gateway.html"><svg><use href="#i-route"/></svg><span class="cn">神识阁</span><span class="nav-plain">模型</span></a>
</div>
<div class="nav-group">
<div class="nav-group__title">世界</div>
<a class="nav-item" href="community.html"><svg><use href="#i-globe"/></svg><span class="cn">雅集</span><span class="nav-plain">社区</span></a>
<a class="nav-item" href="marketplace.html"><svg><use href="#i-bag"/></svg><span class="cn">云市</span><span class="nav-plain">市场</span></a>
</div>
<div class="nav-group">
<div class="nav-group__title">治理与账户</div>
<a class="nav-item" href="governance.html"><svg><use href="#i-shield"/></svg><span class="cn">司命台</span><span class="nav-plain">治理</span></a>
<a class="nav-item" href="devices.html"><svg><use href="#i-monitor"/></svg><span class="cn">器谱</span><span class="nav-plain">设备</span></a>
<a class="nav-item" href="settings.html"><svg><use href="#i-sliders"/></svg><span class="cn">设置</span><span class="nav-plain">账户</span></a>
</div>
</nav>
<div class="side-foot">
<button class="icon-btn side-fold-btn" data-sidebar-fold aria-label="收起侧栏" title="收起 / 展开侧栏(记忆偏好)"><svg><use href="#i-chevrons"/></svg></button>
<span class="avatar avatar--sm avatar--user">舟</span>
<span style="font-size:12.5px">云舟</span>
<button class="icon-btn" data-theme-toggle style="margin-left:auto" aria-label="切换到月白主题"><svg><use href="#i-moon"/></svg></button>
</div>
</aside>
<main class="main">
<header class="topbar">
<div class="crumbs"><span class="cn">息壤</span><span class="crumbs__sep">·</span><span class="here">记忆与知识</span></div>
<div class="topbar__spacer"></div>
<span class="prototype-tag">静态原型 · 待审查</span>
<button class="icon-btn" data-theme-toggle aria-label="切换到月白主题"><svg><use href="#i-moon"/></svg></button>
</header>
<div class="content">
<div style="display:flex;gap:12px;align-items:center;margin-bottom:18px;flex-wrap:wrap">
<div class="chips" style="margin-bottom:0">
<button class="chip is-on">全部 · 132</button>
<button class="chip">青梧 · 98</button>
<button class="chip">雪袖 · 22</button>
<button class="chip">观澜 · 12</button>
</div>
<div class="searchbar" style="flex:1;min-width:220px">
<svg><use href="#i-search"/></svg>
<input type="search" placeholder="检索记忆:关键词 / 语义 / 结构化(授权预过滤后检索)" aria-label="检索记忆">
</div>
</div>
<div class="tabs" role="tablist" aria-label="记忆类型">
<button class="tab is-on" role="tab" aria-selected="true">候选审阅 <span class="cnt">3</span></button>
<button class="tab" role="tab" aria-selected="false">明忆 <span class="cnt">128</span></button>
<button class="tab" role="tab" aria-selected="false">重忆 <span class="cnt">4</span></button>
<button class="tab" role="tab" aria-selected="false">世谱 <span class="cnt">17</span></button>
<button class="tab" role="tab" aria-selected="false">玄络</button>
</div>
<div class="realm-banner" role="note">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg>
归真的约束:候选经你确认才会影响未来上下文;对话中的归真不自动写入所有长期记忆。境界内容只成世界知识候选,幻境内容须手动入忆并标注性质。
</div>
<!-- 候选 1:低敏感偏好 -->
<div class="card" style="margin-bottom:14px">
<div class="card__head">
<span class="mem-type">偏好 preference</span>
<span style="font-size:11.5px;color:var(--text-3)">来源 · 镜树对话 <span class="mono">m_91d0</span> · extractor v5</span>
<span style="margin-left:auto;font-size:11.5px;color:var(--text-3)">置信 0.92 · 敏感度低 · 青梧</span>
</div>
<p style="font-size:14px" class="cn">「读书会隔周四 19:30 举行,每次 90 分钟。」</p>
<div style="display:flex;gap:8px;margin-top:12px;flex-wrap:wrap">
<button class="btn btn--primary btn--sm"><svg><use href="#i-check"/></svg>归真入忆</button>
<button class="btn btn--outline btn--sm">正影 · 纠正后入忆</button>
<button class="btn btn--ghost btn--sm">忽略</button>
<a class="btn btn--ghost btn--sm" href="conversation.html"><svg><use href="#i-quote"/></svg>查看来源上下文</a>
</div>
</div>
<!-- 候选 2:大周天来源 -->
<div class="card" style="margin-bottom:14px">
<div class="card__head">
<span class="mem-type">事实 fact</span>
<span class="badge badge--info"><span class="badge__dot"></span>大周天 · 第 7 轮提议</span>
<span style="margin-left:auto;font-size:11.5px;color:var(--text-3)">置信 0.71 · 敏感度低 · 青梧</span>
</div>
<p style="font-size:14px" class="cn">「云舟在共读选篇时倾向短篇,超过 1500 字的篇目完成率明显下降。」</p>
<p style="font-size:12px;color:var(--text-3);margin-top:6px">由 42 次小周天完成信号的回顾阶段产生 · 复用同一审核流 · 可追溯本轮输入</p>
<div style="display:flex;gap:8px;margin-top:12px;flex-wrap:wrap">
<button class="btn btn--primary btn--sm"><svg><use href="#i-check"/></svg>归真入忆</button>
<button class="btn btn--outline btn--sm">正影 · 纠正后入忆</button>
<button class="btn btn--ghost btn--sm">忽略</button>
<a class="btn btn--ghost btn--sm" href="characters.html">查看大周天第 7 轮</a>
</div>
</div>
<!-- 候选 3:中敏感关系 → 重忆 -->
<div class="card" style="margin-bottom:14px;border-color:color-mix(in srgb,var(--warn) 35%,transparent)">
<div class="card__head">
<span class="mem-type">关系 relationship</span>
<span class="badge badge--warn"><span class="badge__dot"></span>建议作重忆保存</span>
<span style="margin-left:auto;font-size:11.5px;color:var(--text-3)">置信 0.68 · 敏感度中 · 青梧</span>
</div>
<p style="font-size:14px" class="cn">「云舟近期在工作日晚上更希望被倾听,而不是立刻获得建议。」</p>
<p style="font-size:12px;color:var(--text-3);margin-top:6px">重忆 · 敏感或高影响记忆:归真后仅在明确允许时进入上下文,可随时正影纠正或归档,版本不可变。</p>
<div style="display:flex;gap:8px;margin-top:12px;flex-wrap:wrap">
<button class="btn btn--primary btn--sm"><svg><use href="#i-check"/></svg>归真为重忆</button>
<button class="btn btn--outline btn--sm">正影 · 纠正后入忆</button>
<button class="btn btn--ghost btn--sm">忽略</button>
<a class="btn btn--ghost btn--sm" href="conversation.html"><svg><use href="#i-quote"/></svg>查看来源上下文</a>
</div>
</div>
<!-- 最近归真 -->
<section class="section" style="margin-top:28px">
<div class="section__head">
<span class="cn">最近归真<span class="cn__plain">已生效的明忆</span></span>
<span class="more" style="color:var(--text-3);cursor:default">全部 128 条 · 见下方列表</span>
</div>
<div class="card" style="padding:6px 18px">
<div class="list-row">
<span class="mem-type" style="flex:none">偏好</span>
<div class="list-row__body">
<div class="list-row__title cn">「云舟不喜长篇说教,笔记以要点为先。」</div>
<div class="list-row__sub">青梧 · v3(正影自 v2)· 来源:手动 · 有效期长期 · ETag 并发受控</div>
</div>
<button class="btn btn--ghost btn--sm">正影</button>
<button class="btn btn--ghost btn--sm">归档</button>
</div>
<div class="list-row">
<span class="mem-type" style="flex:none">事实</span>
<div class="list-row__body">
<div class="list-row__title cn">「3 月购入《陶庵梦忆》校注本(中华书局)。」</div>
<div class="list-row__sub">青梧 · v1 · 来源:对话 · 实录</div>
</div>
<button class="btn btn--ghost btn--sm">正影</button>
<button class="btn btn--ghost btn--sm">归档</button>
</div>
<div class="list-row">
<span class="mem-type" style="flex:none">事件</span>
<div class="list-row__body">
<div class="list-row__title cn">「读书会成立于 2024-03,成员 6 人。」</div>
<div class="list-row__sub">青梧 · v1 · 来源:世谱引用 · 删除将传播到向量与图投影</div>
</div>
<button class="btn btn--ghost btn--sm">正影</button>
<button class="btn btn--ghost btn--sm">归档</button>
</div>
</div>
<p style="font-size:12px;color:var(--text-3);margin-top:10px">MemoryVersion 不可变:纠正与取代都写新版本,旧版本保留可查;删除建墓碑且传播到索引、缓存与派生数据,墓碑不保存原文。</p>
</section>
<!-- 玄络预览 -->
<section class="section">
<div class="section__head">
<span class="cn">玄络<span class="cn__plain">关系图谱投影 · 可重建</span></span>
<span class="more" style="color:var(--text-3);cursor:default">玄络 · 可交互图谱在 React 阶段实现</span>
</div>
<div class="card graph-box">
<svg viewBox="0 0 760 190" style="width:100%;height:auto" role="img" aria-label="玄络示意:云舟与青梧、读书会、张岱作品、雪袖的关系图">
<g font-size="12" font-family="inherit">
<line x1="380" y1="95" x2="200" y2="45" stroke="var(--line)" stroke-width="1.2"/>
<line x1="380" y1="95" x2="560" y2="45" stroke="var(--line)" stroke-width="1.2"/>
<line x1="380" y1="95" x2="180" y2="150" stroke="var(--line)" stroke-width="1.2"/>
<line x1="380" y1="95" x2="590" y2="150" stroke="var(--line)" stroke-width="1.2"/>
<line class="tent-edge" x1="560" y1="45" x2="590" y2="150" stroke="var(--cinnabar)" stroke-width="1.4" stroke-dasharray="5 5"/>
<circle cx="380" cy="95" r="26" fill="var(--accent)" fill-opacity=".18" stroke="var(--accent)"/>
<text x="380" y="99" text-anchor="middle" fill="var(--text-1)" font-weight="600">云舟</text>
<circle cx="200" cy="45" r="26" fill="var(--bg-raised)" stroke="var(--line)"/>
<text x="200" y="49" text-anchor="middle" fill="var(--text-1)">青梧</text>
<circle cx="560" cy="45" r="26" fill="var(--bg-raised)" stroke="var(--line)"/>
<text x="560" y="49" text-anchor="middle" fill="var(--text-1)">雪袖</text>
<circle cx="180" cy="150" r="30" fill="var(--bg-raised)" stroke="var(--line)"/>
<text x="180" y="147" text-anchor="middle" fill="var(--text-2)">读书会</text>
<text x="180" y="161" text-anchor="middle" fill="var(--text-2)" font-size="10">世谱</text>
<circle cx="590" cy="150" r="30" fill="var(--bg-raised)" stroke="var(--line)"/>
<text x="590" y="147" text-anchor="middle" fill="var(--text-2)">陶庵梦忆</text>
<text x="590" y="161" text-anchor="middle" fill="var(--text-2)" font-size="10">世界知识</text>
<text x="300" y="62" text-anchor="middle" fill="var(--text-2)" font-size="10.5">缘契 · 共读者 v4</text>
<text x="472" y="62" text-anchor="middle" fill="var(--text-2)" font-size="10.5">缘契 · 茶友 v1</text>
<text x="268" y="133" text-anchor="middle" fill="var(--text-2)" font-size="10.5">成员 · 发起人</text>
<text x="496" y="133" text-anchor="middle" fill="var(--text-2)" font-size="10.5">正在共读</text>
<text x="594" y="103" text-anchor="middle" fill="var(--cinnabar)" font-size="10">待验</text>
</g>
</svg>
</div>
<p style="font-size:12px;color:var(--text-3);margin-top:10px">玄络是可重建投影:删除与权限变化随宿主重建;跨用户、跨角色召回恒为 0(fail-closed 已验证)。</p>
</section>
</div>
</main>
</div>
<script src="assets/app.js?v=3"></script>
</body>
</html>