Files
hunjing/frontend/design/world-preview.html
T
2026-08-21 16:00:13 +08:00

441 lines
32 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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/core-domains.md §3/§4/§7 与
* contract-glossary.md §11(WorldEntity / WorldRelation)。
* ============================================================ */
/* ── 侧栏(active=世界)── */
/* ── 主区 ── */
.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; }
.page-meta { font-family: "JetBrains Mono", monospace; font-size: 12px; color: var(--fg-faint); }
.page-meta b { color: var(--gilt); font-weight: 600; font-family: "Songti SC", serif; font-size: 15px; }
.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; }
/* ═══ 河图关系图谱(签名)═══
实体 = 节点(字形 + type 色),关系 = 边(predicate 标签)。
置信度 → 边粗细 / 节点亮度;hypothesis → 虚线待验。 */
.graph-region { display: flex; gap: 20px; align-items: stretch; }
.graph-card { position: relative; flex: 1; min-width: 0; overflow: hidden; border: 1px solid var(--gilt-dim); border-radius: 8px; background: var(--face-sheen), var(--surface); box-shadow: inset 0 1px 0 var(--face-in-top), inset 0 -1px 0 var(--face-in-bot), var(--shadow); padding: 16px 18px; }
.graph-card::after { content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' seed='7'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E"); opacity: 0.018; mix-blend-mode: overlay; }
.graph-svg { position: relative; z-index: 1; width: 100%; height: auto; display: block; }
.graph-svg .edge { stroke: var(--patina-dim); fill: none; }
.graph-svg .edge.hi { stroke: var(--patina); }
.graph-svg .edge.mid { stroke: var(--gilt-dim); }
.graph-svg .edge.tent { stroke: var(--cinnabar-dim); stroke-dasharray: 5 4; animation: tent-pulse 3s cubic-bezier(0.16,1,0.3,1) infinite; }
@keyframes tent-pulse { 0%, 100% { opacity: 0.5; } 50% { opacity: 0.9; } }
.graph-svg .node-bg { fill: var(--ink); }
.graph-svg .node-ring { fill: none; stroke-width: 1.5; }
.graph-svg .node-fill { fill-opacity: 0.16; }
.graph-svg .node-glyph { font-family: "Songti SC", serif; font-weight: 700; text-anchor: middle; dominant-baseline: central; }
.graph-svg .node-name { font-family: -apple-system, sans-serif; font-size: 10px; text-anchor: middle; fill: var(--fg-dim); }
.graph-svg .pred { font-family: "JetBrains Mono", monospace; font-size: 9px; fill: var(--fg-faint); text-anchor: middle; }
.graph-svg .pred-bg { fill: var(--ink); stroke: var(--rule); stroke-width: 0.5; }
/* 中心 self 节点呼吸 */
.graph-svg .self-pulse { animation: node-pulse 3s cubic-bezier(0.16,1,0.3,1) infinite; transform-origin: center; transform-box: fill-box; }
@keyframes node-pulse { 0% { opacity: 0.5; r: 30; } 70% { opacity: 0; r: 42; } 100% { opacity: 0; r: 42; } }
/* 图谱侧栏:图例 + 状态分布 */
.graph-side { width: 260px; flex-shrink: 0; display: flex; flex-direction: column; gap: 12px; }
.side-card { background: var(--surface); border: 1px solid var(--rule); border-radius: 8px; padding: 14px 16px; }
.side-title { font-family: "JetBrains Mono", monospace; font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--fg-faint); margin-bottom: 10px; }
.legend-row { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--fg-dim); padding: 3px 0; }
.legend-dot { width: 11px; height: 11px; border-radius: 50%; flex-shrink: 0; border: 1.5px solid; }
.legend-line { width: 22px; height: 0; border-top: 2px solid var(--patina-dim); flex-shrink: 0; }
.legend-line.tent { border-top: 1.5px dashed var(--cinnabar-dim); }
.dist-bar { display: flex; align-items: center; gap: 8px; padding: 4px 0; }
.dist-bar .dk { font-family: "Songti SC", serif; font-size: 12px; color: var(--fg-dim); width: 44px; flex-shrink: 0; }
.dist-bar .dtrack { flex: 1; height: 5px; border-radius: 3px; background: var(--rule); overflow: hidden; }
.dist-bar .dfill { height: 100%; border-radius: 3px; }
.dist-bar .dv { font-family: "JetBrains Mono", monospace; font-size: 10.5px; color: var(--fg-faint); width: 22px; text-align: right; }
/* ═══ 实体名册 ═══ */
.ent-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.ent-card { border: 1px solid var(--rule); border-radius: 7px; padding: 14px 16px; background: var(--surface); display: flex; flex-direction: column; gap: 9px; transition: border-color 0.15s; }
.ent-card:hover { border-color: var(--gilt-dim); }
.ent-card.pending { border-style: dashed; border-color: var(--cinnabar-dim); }
.ent-top { display: flex; align-items: center; gap: 10px; }
.ent-disc { width: 32px; height: 32px; border-radius: 50%; flex-shrink: 0; display: flex; align-items: center; justify-content: center; border: 1.5px solid var(--patina-dim); background: var(--patina-wash); font-family: "Songti SC", serif; font-size: 14px; font-weight: 700; color: var(--patina); }
.ent-card .ent-disc.t-person { border-color: var(--gilt-dim); background: var(--gilt-faint); color: var(--gilt); }
.ent-card .ent-disc.t-project { border-color: var(--cinnabar-dim); background: rgba(184,57,46,0.1); color: var(--cinnabar); }
.ent-card .ent-disc.t-concept { border-color: var(--patina-dim); background: var(--patina-wash); color: var(--patina-bright); }
.ent-card .ent-disc.t-device { border-color: var(--fg-faint); background: transparent; color: var(--fg-dim); }
.ent-name { font-family: "Songti SC", serif; font-size: 15px; font-weight: 600; color: var(--fg); }
.ent-type { font-family: "JetBrains Mono", monospace; font-size: 10px; color: var(--fg-faint); margin-top: 1px; letter-spacing: 0.04em; }
.ent-state { margin-left: auto; font-family: "JetBrains Mono", monospace; font-size: 10px; padding: 2px 8px; border-radius: 3px; border: 1px solid var(--rule); color: var(--fg-faint); white-space: nowrap; }
.ent-state.fact { color: var(--patina); border-color: var(--patina-dim); background: var(--patina-wash); }
.ent-state.inference { color: var(--gilt); border-color: var(--gilt-dim); background: var(--gilt-faint); }
.ent-state.hypothesis { color: var(--cinnabar); border-color: var(--cinnabar-dim); background: rgba(184,57,46,0.08); }
.ent-attrs { font-size: 12.5px; color: var(--fg-dim); line-height: 1.55; }
.ent-foot { display: flex; align-items: center; gap: 10px; padding-top: 8px; border-top: 1px solid var(--rule); }
.conf-mini { display: flex; align-items: center; gap: 6px; flex: 1; }
.conf-mini .ck { font-family: "JetBrains Mono", monospace; font-size: 9.5px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--fg-faint); }
.conf-mini .ctrack { flex: 1; max-width: 70px; height: 3px; border-radius: 2px; background: var(--rule); overflow: hidden; }
.conf-mini .cfill { height: 100%; border-radius: 2px; background: linear-gradient(90deg, var(--patina-dim), var(--patina)); }
.conf-mini .cv { font-family: "JetBrains Mono", monospace; font-size: 10px; color: var(--fg-dim); }
.evi-link { font-family: "JetBrains Mono", monospace; font-size: 10px; color: var(--fg-faint); padding: 1px 6px; border: 1px solid var(--rule); border-radius: 3px; }
/* ═══ 不确定性 ═══ */
.unc-list { display: flex; flex-direction: column; gap: 9px; }
.unc-card { border: 1px dashed var(--cinnabar-dim); border-left: 3px solid var(--cinnabar); border-radius: 6px; padding: 13px 16px; background: rgba(184,57,46,0.06); display: flex; align-items: center; gap: 14px; }
.unc-claim { flex: 1; min-width: 0; }
.unc-text { font-size: 13px; color: var(--fg); line-height: 1.55; }
.unc-text code { font-family: "JetBrains Mono", monospace; font-size: 11.5px; color: var(--gilt); background: var(--gilt-faint); padding: 1px 5px; border-radius: 3px; }
.unc-reason { font-size: 11.5px; color: var(--fg-faint); margin-top: 3px; }
.unc-conf { text-align: center; flex-shrink: 0; }
.unc-conf .v { font-family: "Songti SC", serif; font-size: 19px; font-weight: 600; color: var(--cinnabar); }
.unc-conf .k { font-family: "JetBrains Mono", monospace; font-size: 9.5px; color: var(--fg-faint); letter-spacing: 0.06em; }
.unc-verify { font-family: "JetBrains Mono", monospace; font-size: 10px; color: var(--gilt); padding: 2px 8px; border: 1px solid var(--gilt-dim); border-radius: 999px; background: var(--gilt-faint); white-space: nowrap; flex-shrink: 0; }
/* ═══ 世界观共振(青梧 / 云岚 · 见地镜对照)═══
每人物独立的见地镜(spiritual_core.worldview)可同境或异境;
大后期可开启跨人物会话室,同境者共享世界实体,异境者各自维护河图。 */
.wv-card { border: 1px solid var(--rule); border-radius: 8px; background: var(--surface); padding: 18px 20px; }
.wv-pair { display: grid; grid-template-columns: 1fr 64px 1fr; align-items: stretch; gap: 12px; }
.wv-side { border: 1px solid var(--rule); border-radius: 7px; padding: 14px 16px; display: flex; flex-direction: column; gap: 9px; }
.wv-side.qingwu { border-color: var(--patina-dim); background: var(--patina-wash); }
.wv-side.yunlan { border-color: var(--gilt-dim); background: var(--gilt-faint); border-style: dashed; }
.wv-head { display: flex; align-items: center; gap: 9px; }
.wv-disc { width: 30px; height: 30px; border-radius: 50%; flex-shrink: 0; display: flex; align-items: center; justify-content: center; border: 1.5px solid var(--patina-dim); background: var(--patina-wash); font-family: "Songti SC", serif; font-size: 13px; font-weight: 700; color: var(--patina); }
.wv-side.yunlan .wv-disc { border-color: var(--gilt-dim); background: var(--gilt-faint); color: var(--gilt); border-style: dashed; }
.wv-name { font-family: "Songti SC", serif; font-size: 14.5px; font-weight: 600; color: var(--fg); }
.wv-tag { font-family: "JetBrains Mono", monospace; font-size: 9.5px; color: var(--fg-faint); letter-spacing: 0.04em; margin-left: auto; }
.wv-tag.shared { color: var(--patina); }
.wv-tag.divergent { color: var(--cinnabar); opacity: 0.85; }
.wv-stance { font-family: "Songti SC", serif; font-size: 13px; line-height: 1.65; color: var(--fg); border-left: 2px solid var(--rule); padding-left: 10px; }
.wv-side.qingwu .wv-stance { border-left-color: var(--patina-dim); }
.wv-side.yunlan .wv-stance { border-left-color: var(--gilt-dim); }
.wv-anchors { display: flex; flex-direction: column; gap: 3px; }
.wv-anchor { font-size: 11.5px; color: var(--fg-dim); line-height: 1.5; display: flex; gap: 6px; }
.wv-anchor::before { content: "·"; color: var(--fg-faint); flex-shrink: 0; }
.wv-conf { font-family: "JetBrains Mono", monospace; font-size: 9.5px; color: var(--fg-faint); margin-top: auto; padding-top: 6px; }
.wv-bridge { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; }
.wv-bridge .b-disc { width: 100%; height: 46px; border-radius: 8px; background: var(--ink); border: 1px solid var(--rule); display: flex; align-items: center; justify-content: center; position: relative; overflow: hidden; }
.wv-bridge .b-fill { position: absolute; left: 50%; top: 0; bottom: 0; width: 41%; background: linear-gradient(90deg, var(--patina-dim), var(--gilt-dim)); opacity: 0.55; }
.wv-bridge .b-val { position: relative; font-family: "Songti SC", serif; font-size: 15px; font-weight: 700; color: var(--gilt); }
.wv-bridge .b-label { font-family: "JetBrains Mono", monospace; font-size: 9px; color: var(--fg-faint); letter-spacing: 0.04em; text-align: center; line-height: 1.4; }
.wv-vision { margin-top: 14px; padding: 12px 14px; border: 1px dashed var(--gilt-dim); border-left: 3px solid var(--gilt-dim); border-radius: 0 5px 5px 0; background: var(--gilt-faint); display: flex; gap: 12px; align-items: flex-start; }
.wv-vision .seal { font-family: "Songti SC", serif; font-size: 12.5px; font-weight: 700; color: var(--gilt); white-space: nowrap; flex-shrink: 0; letter-spacing: 0.06em; }
.wv-vision .body { font-size: 12px; color: var(--fg-dim); line-height: 1.6; }
.wv-vision .body code { font-family: "JetBrains Mono", monospace; font-size: 10.5px; color: var(--gilt); background: var(--surface); padding: 1px 5px; border-radius: 3px; }
@media (max-width: 1080px) { .graph-region { flex-direction: column; } .graph-side { width: 100%; flex-direction: row; } .graph-side .side-card { flex: 1; } }
@media (max-width: 900px) { .ent-grid { grid-template-columns: 1fr; } .graph-side { flex-direction: column; } }
@media (max-width: 768px) { .sidebar-wrap { display: none; } .page-body { padding: 18px 16px 40px; } }
</style>
</head>
<body>
<div class="app-shell">
<!-- ════════ 侧栏 ════════ -->
<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="page-meta">实体 <b>23</b> · 关系 <b>11</b> · 待验 <b style="color: var(--cinnabar)">2</b></span>
<button class="btn-ghost" type="button">+ 新增实体</button>
</div>
<div class="page-body">
<!-- 河图关系图谱(签名) -->
<section>
<div class="section-label"><span class="glyph">⟡</span> 关系图谱 <span class="sub">河图 · 实体为节点,关系为边,置信度定粗细,假设态虚线待验</span></div>
<div class="graph-region">
<div class="graph-card">
<svg class="graph-svg" viewBox="0 0 540 380" role="img" aria-label="河图关系图谱">
<!-- 边(先画,在节点下层)-->
<!-- 青梧 → 用户:协助 0.95 -->
<line class="edge hi" x1="105" y1="105" x2="270" y2="190" stroke-width="3" />
<!-- 用户 → 辰正项目:正在进行 0.82 -->
<line class="edge" x1="270" y1="190" x2="435" y2="105" stroke-width="2.2" />
<!-- 用户 → 简洁偏好:偏好 0.88(推断)-->
<line class="edge mid" x1="270" y1="190" x2="435" y2="280" stroke-width="2.4" />
<!-- 青梧 ↔ 云岚:同属? 0.42(假设,虚线待验)-->
<line class="edge tent" x1="105" y1="105" x2="105" y2="280" stroke-width="1.4" />
<!-- 摄像头 → 用户:授权 0.9 -->
<line class="edge" x1="270" y1="60" x2="270" y2="190" stroke-width="2.6" />
<!-- 边标签 -->
<g><rect class="pred-bg" x="158" y="138" width="40" height="15" rx="3" /><text class="pred" x="178" y="149">协助</text></g>
<g><rect class="pred-bg" x="338" y="138" width="40" height="15" rx="3" /><text class="pred" x="358" y="149">进行</text></g>
<g><rect class="pred-bg" x="338" y="227" width="40" height="15" rx="3" /><text class="pred" x="358" y="238">偏好</text></g>
<g><rect class="pred-bg" x="118" y="185" width="44" height="15" rx="3" /><text class="pred" x="140" y="196">同属?</text></g>
<g><rect class="pred-bg" x="280" y="117" width="40" height="15" rx="3" /><text class="pred" x="300" y="128">授权</text></g>
<!-- 节点:摄像头 device -->
<g>
<circle class="node-bg" cx="270" cy="60" r="24" />
<circle class="node-ring" cx="270" cy="60" r="24" stroke="var(--fg-faint)" />
<circle class="node-fill" cx="270" cy="60" r="24" fill="var(--fg-dim)" />
<text class="node-glyph" x="270" y="60" font-size="15" fill="var(--fg-dim)">器</text>
<text class="node-name" x="270" y="36">摄像头</text>
</g>
<!-- 青梧 self -->
<g>
<circle class="node-bg" cx="105" cy="105" r="26" />
<circle class="node-ring" cx="105" cy="105" r="26" stroke="var(--patina)" />
<circle class="node-fill" cx="105" cy="105" r="26" fill="var(--patina)" />
<text class="node-glyph" x="105" y="105" font-size="16" fill="var(--patina)">梧</text>
<text class="node-name" x="105" y="81">青梧 · self</text>
</g>
<!-- 用户 person(中心)-->
<g>
<circle class="node-bg" cx="270" cy="190" r="34" />
<circle class="self-pulse" cx="270" cy="190" r="30" fill="none" stroke="var(--gilt)" stroke-width="1" />
<circle class="node-ring" cx="270" cy="190" r="34" stroke="var(--gilt)" stroke-width="2" />
<circle class="node-fill" cx="270" cy="190" r="34" fill="var(--gilt)" />
<text class="node-glyph" x="270" y="190" font-size="20" fill="var(--gilt)">人</text>
<text class="node-name" x="270" y="240" fill="var(--fg)">用户 · person</text>
</g>
<!-- 云岚 person(低置信)-->
<g opacity="0.55">
<circle class="node-bg" cx="105" cy="280" r="24" />
<circle class="node-ring" cx="105" cy="280" r="24" stroke="var(--gilt-dim)" stroke-dasharray="4 3" />
<circle class="node-fill" cx="105" cy="280" r="24" fill="var(--gilt)" />
<text class="node-glyph" x="105" y="280" font-size="14" fill="var(--gilt)">岚</text>
<text class="node-name" x="105" y="318">云岚 · 0.42</text>
</g>
<!-- 辰正项目 project -->
<g>
<circle class="node-bg" cx="435" cy="105" r="26" />
<circle class="node-ring" cx="435" cy="105" r="26" stroke="var(--cinnabar-dim)" />
<circle class="node-fill" cx="435" cy="105" r="26" fill="var(--cinnabar)" />
<text class="node-glyph" x="435" y="105" font-size="16" fill="var(--cinnabar)">业</text>
<text class="node-name" x="435" y="81">辰正项目</text>
</g>
<!-- 简洁偏好 concept -->
<g>
<circle class="node-bg" cx="435" cy="280" r="26" />
<circle class="node-ring" cx="435" cy="280" r="26" stroke="var(--patina-bright)" />
<circle class="node-fill" cx="435" cy="280" r="26" fill="var(--patina-bright)" />
<text class="node-glyph" x="435" y="280" font-size="16" fill="var(--patina-bright)">念</text>
<text class="node-name" x="435" y="318">简洁回复 · 推断</text>
</g>
</svg>
</div>
<!-- 图谱侧栏 -->
<div class="graph-side">
<div class="side-card">
<div class="side-title">图例</div>
<div class="legend-row"><span class="legend-dot" style="border-color: var(--patina); background: var(--patina-wash)"></span>self · 自身</div>
<div class="legend-row"><span class="legend-dot" style="border-color: var(--gilt-dim); background: var(--gilt-faint)"></span>person · 人物</div>
<div class="legend-row"><span class="legend-dot" style="border-color: var(--cinnabar-dim); background: rgba(184,57,46,0.1)"></span>project · 事务</div>
<div class="legend-row"><span class="legend-dot" style="border-color: var(--patina-bright); background: var(--patina-wash)"></span>concept · 概念</div>
<div class="legend-row" style="margin-top: 4px"><span class="legend-line"></span>高置信关系</div>
<div class="legend-row"><span class="legend-line tent"></span>假设态 · 待验</div>
</div>
<div class="side-card">
<div class="side-title">状态分布</div>
<div class="dist-bar"><span class="dk">事实</span><div class="dtrack"><div class="dfill" style="width:62%; background: var(--patina)"></div></div><span class="dv">14</span></div>
<div class="dist-bar"><span class="dk">观察</span><div class="dtrack"><div class="dfill" style="width:26%; background: var(--patina-bright); opacity:0.8"></div></div><span class="dv">6</span></div>
<div class="dist-bar"><span class="dk">推断</span><div class="dtrack"><div class="dfill" style="width:17%; background: var(--gilt)"></div></div><span class="dv">4</span></div>
<div class="dist-bar"><span class="dk">假设</span><div class="dtrack"><div class="dfill" style="width:9%; background: var(--cinnabar); opacity:0.8"></div></div><span class="dv">2</span></div>
<div class="dist-bar"><span class="dk">过期</span><div class="dtrack"><div class="dfill" style="width:4%; background: var(--fg-faint)"></div></div><span class="dv">1</span></div>
</div>
</div>
</div>
</section>
<!-- 实体名册 -->
<section>
<h3 style="font-family:&quot;Songti SC&quot;,serif;font-size:14px;font-weight:600;color:var(--fg);margin-bottom:14px">实体名册 <span style="font-size:12px;font-weight:400;color:var(--fg-dim);font-family:&quot;JetBrains Mono&quot;,monospace;margin-left:6px">按类型 · 事实性着色 · 推断召回时降权</span></h3>
<div class="ent-grid">
<div class="ent-card">
<div class="ent-top">
<div class="ent-disc">梧</div>
<div><div class="ent-name">青梧</div><div class="ent-type">self · character</div></div>
<span class="ent-state fact">fact</span>
</div>
<div class="ent-attrs">语言中文宋韵 · 隐私 standard · 沉静自持</div>
<div class="ent-foot">
<div class="conf-mini"><span class="ck">置信</span><div class="ctrack"><div class="cfill" style="width:99%"></div></div><span class="cv">0.99</span></div>
<span class="evi-link">evi ×3</span>
</div>
</div>
<div class="ent-card">
<div class="ent-top">
<div class="ent-disc t-person">人</div>
<div><div class="ent-name">用户(陈歆)</div><div class="ent-type">person · user</div></div>
<span class="ent-state fact">fact</span>
</div>
<div class="ent-attrs">常驻 Asia/Shanghai · 偏好简洁回复 · 近期睡眠偏晚</div>
<div class="ent-foot">
<div class="conf-mini"><span class="ck">置信</span><div class="ctrack"><div class="cfill" style="width:95%"></div></div><span class="cv">0.95</span></div>
<span class="evi-link">evi ×8</span>
</div>
</div>
<div class="ent-card">
<div class="ent-top">
<div class="ent-disc t-project">业</div>
<div><div class="ent-name">辰正项目</div><div class="ent-type">project · 进行中</div></div>
<span class="ent-state fact">observation</span>
</div>
<div class="ent-attrs">用户近 7 日提及 14 次 · 目标尚未明确</div>
<div class="ent-foot">
<div class="conf-mini"><span class="ck">置信</span><div class="ctrack"><div class="cfill" style="width:82%"></div></div><span class="cv">0.82</span></div>
<span class="evi-link">evi ×5</span>
</div>
</div>
<div class="ent-card">
<div class="ent-top">
<div class="ent-disc t-concept">念</div>
<div><div class="ent-name">偏好简洁回复</div><div class="ent-type">concept · preference</div></div>
<span class="ent-state inference">inference</span>
</div>
<div class="ent-attrs">由对话风格推断 · 召回时降权 · 待长期验证</div>
<div class="ent-foot">
<div class="conf-mini"><span class="ck">置信</span><div class="ctrack"><div class="cfill" style="width:88%"></div></div><span class="cv">0.88</span></div>
<span class="evi-link">evi ×4</span>
</div>
</div>
<div class="ent-card pending">
<div class="ent-top">
<div class="ent-disc t-person">岚</div>
<div><div class="ent-name">云岚</div><div class="ent-type">person · 关系待定</div></div>
<span class="ent-state hypothesis">hypothesis</span>
</div>
<div class="ent-attrs">疑似与青梧同属旧族旁支 · 证据薄弱 · pending 待确认</div>
<div class="ent-foot">
<div class="conf-mini"><span class="ck">置信</span><div class="ctrack"><div class="cfill" style="width:42%; background: linear-gradient(90deg, var(--cinnabar-dim), var(--cinnabar))"></div></div><span class="cv">0.42</span></div>
<span class="evi-link">evi ×1</span>
</div>
</div>
<div class="ent-card">
<div class="ent-top">
<div class="ent-disc t-device">器</div>
<div><div class="ent-name">摄像头</div><div class="ent-type">device · 工作区</div></div>
<span class="ent-state fact">observation</span>
</div>
<div class="ent-attrs">授权 granted · 用于环境观察 · 默认不保存原始帧</div>
<div class="ent-foot">
<div class="conf-mini"><span class="ck">置信</span><div class="ctrack"><div class="cfill" style="width:90%"></div></div><span class="cv">0.90</span></div>
<span class="evi-link">evi ×2</span>
</div>
</div>
</div>
</section>
<!-- 不确定性 -->
<section>
<h3 style="font-family:&quot;Songti SC&quot;,serif;font-size:14px;font-weight:600;color:var(--fg);margin-bottom:14px">待验断言 <span style="font-size:12px;font-weight:400;color:var(--fg-dim);font-family:&quot;JetBrains Mono&quot;,monospace;margin-left:6px">UncertaintyState · 低置信,需复核方可固化为事实</span></h3>
<div class="unc-list">
<div class="unc-card">
<div class="unc-claim">
<div class="unc-text"><code>云岚</code> 与 <code>青梧</code> 同属旧族旁支,可能存在亲属关系。</div>
<div class="unc-reason">来源:对话中的姓氏推测 · 证据单一且间接</div>
</div>
<div class="unc-conf"><div class="v">0.42</div><div class="k">置信</div></div>
<span class="unc-verify">需验证</span>
</div>
<div class="unc-card">
<div class="unc-claim">
<div class="unc-text">用户当前正在推进的「辰正项目」<code>目标</code> 为时态感知子系统。</div>
<div class="unc-reason">来源:关键词频率推断 · 缺乏用户明确表述</div>
</div>
<div class="unc-conf"><div class="v">0.55</div><div class="k">置信</div></div>
<span class="unc-verify">需验证</span>
</div>
</div>
</section>
<!-- 世界观共振(青梧 / 云岚 · 见地镜)-->
<section>
<h3 style="font-family:&quot;Songti SC&quot;,serif;font-size:14px;font-weight:600;color:var(--fg);margin-bottom:14px">世界观共振 <span style="font-size:12px;font-weight:400;color:var(--fg-dim);font-family:&quot;JetBrains Mono&quot;,monospace;margin-left:6px">见地镜 · 每人物独立的世界观立场,可同境可异境</span></h3>
<div class="wv-card">
<div class="wv-pair">
<!-- 青梧 -->
<div class="wv-side qingwu">
<div class="wv-head">
<div class="wv-disc">梧</div>
<span class="wv-name">青梧</span>
<span class="wv-tag shared">同境 · 主脉</span>
</div>
<div class="wv-stance">万物流转无常,变化的规律本身比任何固定结论更可依凭。</div>
<div class="wv-anchors">
<span class="wv-anchor">面对未知优先观察与适应,而非强求确定性。</span>
<span class="wv-anchor">把推断与事实分开,承认不知也是一种知。</span>
</div>
<span class="wv-conf">spiritual_core.worldview · confidence 0.82 · v7</span>
</div>
<!-- 共振桥 -->
<div class="wv-bridge">
<div class="b-disc"><div class="b-fill"></div><span class="b-val">0.41</span></div>
<div class="b-label">共振度<br />divergent</div>
</div>
<!-- 云岚 -->
<div class="wv-side yunlan">
<div class="wv-head">
<div class="wv-disc">岚</div>
<span class="wv-name">云岚</span>
<span class="wv-tag divergent">异境 · 旁支</span>
</div>
<div class="wv-stance">人如其名,聚散如岚--来去之间留痕即可,不必执守长久。</div>
<div class="wv-anchors">
<span class="wv-anchor">珍惜每次相遇,不强求每段关系都有归处。</span>
<span class="wv-anchor">在变动中自洽,不为稳定而委屈当下。</span>
</div>
<span class="wv-conf">spiritual_core.worldview · confidence 0.38 · v3 · 初成</span>
</div>
</div>
<div class="wv-vision">
<span class="seal">多人物共处</span>
<span class="body">青梧与云岚各绑独立 <code>character_id</code>,太极循环互不混用;可同属一脉(<code>shared worldview</code> 共享河图实体),亦可各持异境。大后期可开启 <b style="color: var(--fg)">跨人物会话室</b>--让二者在同一世界线相遇、对话,或由一方 <b style="color: var(--fg)">调用</b> 另一方的记忆与能力(v2 愿景,天工阁多智能体协作)。</span>
</div>
</div>
</section>
</div>
</div>
</div>
<script src="_theme.js" defer></script>
</body>
</html>