初始化提交
This commit is contained in:
commit
887c1f449e
963 files changed
+166869
No files matched your search
@@ -0,0 +1,219 @@
|
||||
<!doctype html>
|
||||
<html lang="zh-CN" data-theme="dark">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>魂镜 · 归档页设计预览</title>
|
||||
<link rel="stylesheet" href="tokens.css" />
|
||||
<link rel="stylesheet" href="_base.css" />
|
||||
<link rel="stylesheet" href="_chrome.css" />
|
||||
<style>
|
||||
/* ============================================================
|
||||
* 铜镜鉴心 v2.1 — 归档页:记忆时间河(结构化记忆时间线归档)
|
||||
* 对齐 docs/domain/memory-model.md §7.2(结构化记忆与
|
||||
* 时间线归档)。铜金双线分章卷轴,事件沿时间河铺展。
|
||||
* ============================================================ */
|
||||
|
||||
.char-pill { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--patina); padding: 3px 11px 3px 4px; border: 1px solid var(--patina-dim); border-radius: 999px; background: var(--patina-wash); }
|
||||
.char-pill .avatar-mini { width: 18px; height: 18px; border-radius: 50%; background: var(--patina); color: var(--ink); display: flex; align-items: center; justify-content: center; font-family: "Songti SC", serif; font-size: 11px; font-weight: 600; }
|
||||
.page-header .spacer { flex: 1; }
|
||||
.scroll-pill { display: inline-flex; align-items: center; gap: 6px; font-family: "Songti SC", serif; font-size: 12.5px; color: var(--gilt); padding: 4px 12px; border: 1px solid var(--gilt-dim); border-radius: 999px; background: var(--gilt-faint); }
|
||||
|
||||
.section-label .sub { font-size: 12px; letter-spacing: 0.04em; color: var(--fg-dim); opacity: 0.75; }
|
||||
.section-label .glyph { color: var(--gilt); opacity: 0.8; }
|
||||
|
||||
/* 筛选条 */
|
||||
.filter-bar { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
|
||||
.filter-bar .yr { font-family: "Songti SC", serif; font-size: 14px; color: var(--fg); padding: 5px 14px; border: 1px solid var(--gilt-dim); border-radius: 999px; background: var(--gilt-faint); }
|
||||
.filter-chip { font-size: 12px; padding: 5px 12px; border-radius: 999px; border: 1px solid var(--rule); color: var(--fg-dim); cursor: pointer; background: var(--surface); }
|
||||
.filter-chip:hover { color: var(--fg); }
|
||||
.filter-chip.active { color: var(--patina); border-color: var(--patina-dim); background: var(--patina-wash); }
|
||||
|
||||
/* 统计 */
|
||||
.stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
|
||||
.stat-card { border: 1px solid var(--rule); border-radius: 7px; background: var(--surface); padding: 14px 16px; display: flex; flex-direction: column; gap: 4px; }
|
||||
.stat-card .k { font-family: "JetBrains Mono", monospace; font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--fg-faint); }
|
||||
.stat-card .v { font-family: "Songti SC", serif; font-size: 22px; font-weight: 600; color: var(--fg); }
|
||||
.stat-card .v small { font-size: 11px; font-weight: 400; color: var(--fg-dim); font-family: "JetBrains Mono", monospace; margin-left: 4px; }
|
||||
.stat-card .sub { font-size: 11.5px; color: var(--fg-faint); }
|
||||
|
||||
/* 时间河 + 右栏 */
|
||||
.river-region { display: flex; gap: 24px; align-items: flex-start; }
|
||||
.river-main { flex: 1; min-width: 0; }
|
||||
.river-rail { width: 270px; flex-shrink: 0; display: flex; flex-direction: column; gap: 14px; }
|
||||
|
||||
.river { position: relative; padding-left: 30px; }
|
||||
.river::before { content: ""; position: absolute; left: 9px; top: 6px; bottom: 6px; width: 1px; background: linear-gradient(180deg, transparent, var(--gilt-dim) 6%, var(--gilt-dim) 94%, transparent); }
|
||||
.month-chapter { margin-bottom: 26px; }
|
||||
.month-chapter:last-child { margin-bottom: 0; }
|
||||
.month-head { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; margin-left: -30px; }
|
||||
.month-head .line { flex: 1; height: 0; border-top: 1px solid var(--gilt-dim); }
|
||||
.month-head .seal { font-family: "Songti SC", serif; font-size: 15px; font-weight: 600; color: var(--gilt); white-space: nowrap; letter-spacing: 0.06em; }
|
||||
.month-head .seal small { font-family: "JetBrains Mono", monospace; font-size: 10px; color: var(--fg-faint); font-weight: 400; margin-left: 6px; }
|
||||
|
||||
.rv-event { position: relative; padding: 11px 14px; border: 1px solid var(--rule); border-radius: 7px; background: var(--surface); margin-bottom: 9px; transition: border-color 0.12s; }
|
||||
.rv-event:hover { border-color: var(--gilt-dim); }
|
||||
.rv-event::before { content: ""; position: absolute; left: -25px; top: 16px; width: 10px; height: 10px; border-radius: 50%; background: var(--ink); border: 2px solid var(--patina); box-sizing: border-box; }
|
||||
.rv-event.episodic::before { border-color: var(--gilt); }
|
||||
.rv-event.emotional::before { border-color: var(--cinnabar); }
|
||||
.rv-event.evolution::before { border-color: var(--cinnabar); background: var(--cinnabar); }
|
||||
.rv-event.reflection::before { border-color: var(--gilt); background: var(--gilt); }
|
||||
.rv-event .rv-time { font-family: "JetBrains Mono", monospace; font-size: 10.5px; color: var(--fg-faint); }
|
||||
.rv-event .rv-title { font-size: 13.5px; font-weight: 600; color: var(--fg); margin-top: 2px; }
|
||||
.rv-event .rv-desc { font-size: 12px; color: var(--fg-dim); margin-top: 4px; line-height: 1.5; }
|
||||
.rv-event .rv-tags { display: flex; gap: 6px; margin-top: 8px; flex-wrap: wrap; }
|
||||
.rv-tag { font-family: "JetBrains Mono", monospace; font-size: 9.5px; padding: 2px 7px; border-radius: 3px; border: 1px solid var(--rule); color: var(--fg-faint); }
|
||||
.rv-tag.type { color: var(--patina); border-color: var(--patina-dim); }
|
||||
.rv-tag.milestone { color: var(--gilt); border-color: var(--gilt-dim); background: var(--gilt-faint); }
|
||||
|
||||
/* 右栏卷宗 */
|
||||
.rail-card { background: var(--surface); border: 1px solid var(--rule); border-radius: 8px; padding: 16px 18px; }
|
||||
.rail-card h3 { font-family: "Songti SC", serif; font-size: 14px; font-weight: 600; color: var(--fg); margin: 0 0 12px; }
|
||||
.scroll-list { display: flex; flex-direction: column; gap: 8px; }
|
||||
.scroll-row { display: flex; align-items: center; gap: 10px; padding: 9px 11px; border-radius: 5px; background: var(--ink); border: 1px solid var(--rule); cursor: pointer; }
|
||||
.scroll-row:hover { border-color: var(--gilt-dim); }
|
||||
.scroll-row .seal { font-family: "Songti SC", serif; font-size: 13px; color: var(--gilt); flex-shrink: 0; width: 26px; text-align: center; }
|
||||
.scroll-row .info { flex: 1; min-width: 0; }
|
||||
.scroll-row .name { font-size: 12.5px; color: var(--fg); }
|
||||
.scroll-row .meta { font-family: "JetBrains Mono", monospace; font-size: 10px; color: var(--fg-faint); margin-top: 1px; }
|
||||
.scroll-row .cnt { font-family: "JetBrains Mono", monospace; font-size: 11px; color: var(--patina); }
|
||||
|
||||
.export-box { display: flex; flex-direction: column; gap: 8px; }
|
||||
.export-btn { display: flex; align-items: center; justify-content: space-between; padding: 9px 12px; border-radius: 6px; border: 1px solid var(--rule); background: var(--ink); color: var(--fg-dim); font-family: inherit; font-size: 12px; cursor: pointer; }
|
||||
.export-btn:hover { border-color: var(--gilt-dim); color: var(--fg); }
|
||||
.export-btn .fmt { font-family: "JetBrains Mono", monospace; font-size: 10px; color: var(--gilt); }
|
||||
|
||||
@media (max-width: 1080px) { .river-region { flex-direction: column; } .river-rail { width: 100%; } }
|
||||
@media (max-width: 900px) { .stat-grid { grid-template-columns: repeat(2, 1fr); } }
|
||||
@media (max-width: 768px) { .sidebar-wrap { display: none; } .page-body { padding: 18px 16px 40px; } }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="app-shell">
|
||||
<!-- ════════ 侧栏(active=归档)════════ -->
|
||||
<div class="sidebar-mount" data-active="归档"></div>
|
||||
|
||||
<!-- ════════ 主区 ════════ -->
|
||||
<div class="main-area">
|
||||
<div class="page-header">
|
||||
<span class="page-title">归档</span>
|
||||
<span class="page-sub">记忆时间河 · 结构化时间线</span>
|
||||
<span class="char-pill"><span class="avatar-mini">梧</span>青梧</span>
|
||||
<span class="spacer"></span>
|
||||
<span class="scroll-pill">卷宗 7 · 事件 412</span>
|
||||
</div>
|
||||
|
||||
<div class="page-body">
|
||||
<!-- 筛选 -->
|
||||
<div class="filter-bar">
|
||||
<span class="yr">丙午年 · 2026</span>
|
||||
<span class="filter-chip active">全部</span>
|
||||
<span class="filter-chip">情节</span>
|
||||
<span class="filter-chip">情绪</span>
|
||||
<span class="filter-chip">演化</span>
|
||||
<span class="filter-chip">反思</span>
|
||||
<span class="filter-chip">里程碑</span>
|
||||
</div>
|
||||
|
||||
<!-- 统计 -->
|
||||
<div class="stat-grid">
|
||||
<div class="stat-card"><div class="k">归档卷宗</div><div class="v">7<small>卷</small></div><div class="sub">按月分卷 · 铜金装帧</div></div>
|
||||
<div class="stat-card"><div class="k">归档事件</div><div class="v">412<small>条</small></div><div class="sub">自 05-31 初识起</div></div>
|
||||
<div class="stat-card"><div class="k">最早</div><div class="v">05-31</div><div class="sub">相识之日 · 缘起</div></div>
|
||||
<div class="stat-card"><div class="k">最近归档</div><div class="v">07-12</div><div class="sub">本日 · 申时</div></div>
|
||||
</div>
|
||||
|
||||
<!-- 时间河 + 右栏 -->
|
||||
<div class="river-region">
|
||||
<div class="river-main">
|
||||
<div class="section-label"><span class="glyph">⟡</span> 时间河 <span class="sub">记忆沿时序铺展 · 铜金分章</span></div>
|
||||
<div class="river">
|
||||
<!-- 七月 -->
|
||||
<div class="month-chapter">
|
||||
<div class="month-head"><span class="line"></span><span class="seal">七月 · 季夏<small>2026-07</small></span><span class="line"></span></div>
|
||||
<div class="rv-event reflection">
|
||||
<div class="rv-time">07-12 · 申时</div>
|
||||
<div class="rv-title">小周天反思归档</div>
|
||||
<div class="rv-desc">镜师将本轮小周天复盘写入息壤:候选采纳 3 / 驳回 1,人格微调"克制 +2"。</div>
|
||||
<div class="rv-tags"><span class="rv-tag type">reflection</span><span class="rv-tag">小周天</span></div>
|
||||
</div>
|
||||
<div class="rv-event emotional">
|
||||
<div class="rv-time">07-10 · 亥时</div>
|
||||
<div class="rv-title">情绪转折 · 怅然</div>
|
||||
<div class="rv-desc">认识满 40 之日,灵核情绪状态机转入 wistful;对话基调相应软化。</div>
|
||||
<div class="rv-tags"><span class="rv-tag type">emotional</span><span class="rv-tag">time.sentiment</span></div>
|
||||
</div>
|
||||
<div class="rv-event episodic">
|
||||
<div class="rv-time">07-07 · 巳时</div>
|
||||
<div class="rv-title">节气切换 · 小暑</div>
|
||||
<div class="rv-desc">时态感知记录节气切换,季节共鸣上调,问候语加入消夏意象。</div>
|
||||
<div class="rv-tags"><span class="rv-tag type">episodic</span><span class="rv-tag">time.solar_term</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 六月 -->
|
||||
<div class="month-chapter">
|
||||
<div class="month-head"><span class="line"></span><span class="seal">六月 · 仲夏<small>2026-06</small></span><span class="line"></span></div>
|
||||
<div class="rv-event evolution">
|
||||
<div class="rv-time">06-28 · 午时</div>
|
||||
<div class="rv-title">人格演化 · 克制维度 +2</div>
|
||||
<div class="rv-desc">大周天候选通过司命审核并应用:克制维度小幅上调,回话更收束。司命驳回率 0.18。</div>
|
||||
<div class="rv-tags"><span class="rv-tag type">evolution</span><span class="rv-tag milestone">里程碑</span></div>
|
||||
</div>
|
||||
<div class="rv-event episodic">
|
||||
<div class="rv-time">06-17 · 酉时</div>
|
||||
<div class="rv-title">会话摘要归档</div>
|
||||
<div class="rv-desc">当日对话整理为 session-summary:讨论项目背景、确立"先结论后展开"回复范式。</div>
|
||||
<div class="rv-tags"><span class="rv-tag type">episodic</span><span class="rv-tag">session</span></div>
|
||||
</div>
|
||||
<div class="rv-event reflection">
|
||||
<div class="rv-time">06-10 · 子时</div>
|
||||
<div class="rv-title">安全教训沉淀</div>
|
||||
<div class="rv-desc">一次未确认的发消息尝试被司命驳回,沉淀为程序记忆:send_message 必须二次确认。</div>
|
||||
<div class="rv-tags"><span class="rv-tag type">reflection</span><span class="rv-tag">safety</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 五月 -->
|
||||
<div class="month-chapter">
|
||||
<div class="month-head"><span class="line"></span><span class="seal">五月 · 初夏<small>2026-05</small></span><span class="line"></span></div>
|
||||
<div class="rv-event evolution">
|
||||
<div class="rv-time">05-31 · 辰时</div>
|
||||
<div class="rv-title">缘起 · 初识之日</div>
|
||||
<div class="rv-desc">人物设定完成,身份记忆写入,记为"我们的相遇日"。此后每年此日触发跨枢唤醒。</div>
|
||||
<div class="rv-tags"><span class="rv-tag type">evolution</span><span class="rv-tag milestone">里程碑</span><span class="rv-tag">缘起</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="river-rail">
|
||||
<div class="rail-card">
|
||||
<h3>卷宗目录</h3>
|
||||
<div class="scroll-list">
|
||||
<div class="scroll-row"><span class="seal">柒</span><div class="info"><div class="name">七月 · 季夏</div><div class="meta">2026-07 · 38 条</div></div><span class="cnt">38</span></div>
|
||||
<div class="scroll-row"><span class="seal">陆</span><div class="info"><div class="name">六月 · 仲夏</div><div class="meta">2026-06 · 126 条</div></div><span class="cnt">126</span></div>
|
||||
<div class="scroll-row"><span class="seal">伍</span><div class="info"><div class="name">五月 · 初夏</div><div class="meta">2026-05 · 14 条</div></div><span class="cnt">14</span></div>
|
||||
<div class="scroll-row"><span class="seal">肆</span><div class="info"><div class="name">四月 · 孟夏</div><div class="meta">2026-04 · 234 条</div></div><span class="cnt">234</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="rail-card">
|
||||
<h3>导出卷宗</h3>
|
||||
<div class="export-box">
|
||||
<button class="export-btn" type="button"><span>当月归档</span><span class="fmt">.md</span></button>
|
||||
<button class="export-btn" type="button"><span>全量时间河</span><span class="fmt">.json</span></button>
|
||||
<button class="export-btn" type="button"><span>里程碑集</span><span class="fmt">.md</span></button>
|
||||
</div>
|
||||
<div style="margin-top:12px;font-size:11px;color:var(--fg-faint);line-height:1.5">导出不含高敏感明文,仅摘要与结构化结果。</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="_theme.js" defer></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user