完善前端

This commit is contained in:
chenxin committed 2026-09-21 11:19:07 +08:00
1 parent 7c57d27494
commit b63542add3
81 files changed
+12075 -1441

No files matched your search

+233
View File
@@ -0,0 +1,233 @@
<!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-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-bell" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"/><path d="M13.73 21a2 2 0 0 1-3.46 0"/></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-plus" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></symbol>
<symbol id="i-download" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></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-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-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 is-active" aria-current="page" href="characters.html"><svg><use href="#i-user"/></svg><span class="cn">镜生</span><span class="nav-plain">角色</span></a><a class="nav-item" href="memory.html"><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" aria-label="搜索"><svg><use href="#i-search"/></svg></button>
<button class="icon-btn" aria-label="通知"><svg><use href="#i-bell"/></svg></button>
</header>
<div class="content content--wide">
<div class="char-layout">
<!-- 左:角色列表 -->
<div>
<div class="card" style="padding:10px">
<div style="display:flex;justify-content:space-between;align-items:center;padding:4px 8px 10px">
<span class="cn" style="font-size:15px;font-weight:600">镜生<span class="cn__plain">4 位角色</span></span>
<button class="btn btn--outline btn--sm"><svg><use href="#i-plus"/></svg>创建</button>
</div>
<div class="char-list-item is-active" aria-current="page">
<span class="avatar">梧</span>
<div style="flex:1">
<div class="char-list-item__name">青梧</div>
<div class="char-list-item__sub">守砚人 · 道体 v3</div>
</div>
<span class="badge badge--info badge--sm" style="font-size:11px;padding:1px 8px"><span class="badge__dot"></span>临照</span>
</div>
<div class="char-list-item">
<span class="avatar">袖</span>
<div style="flex:1">
<div class="char-list-item__name">雪袖</div>
<div class="char-list-item__sub">茶室主人 · 道体 v1</div>
</div>
<span class="badge badge--muted" style="font-size:11px;padding:1px 8px"><span class="badge__dot"></span>守一</span>
</div>
<div class="char-list-item">
<span class="avatar">澜</span>
<div style="flex:1">
<div class="char-list-item__name">观澜</div>
<div class="char-list-item__sub">航海士 · 道体 v2</div>
</div>
<span class="badge badge--muted" style="font-size:11px;padding:1px 8px"><span class="badge__dot"></span>静修</span>
</div>
<div class="char-list-item">
<span class="avatar" style="filter:grayscale(.7);opacity:.75">岁</span>
<div style="flex:1">
<div class="char-list-item__name">旧岁</div>
<div class="char-list-item__sub">守岁人 · 归藏</div>
</div>
<span class="badge badge--muted" style="font-size:11px;padding:1px 8px"><span class="badge__dot"></span>归藏</span>
</div>
<div style="border-top:1px solid var(--line-soft);margin-top:8px;padding-top:8px">
<a class="char-list-item" href="#">
<svg style="width:24px;height:24px;color:var(--text-3)" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>
<div style="flex:1">
<div class="char-list-item__name" style="font-family:var(--font-ui);font-weight:400;color:var(--text-2)">随缘 · 生成匿名灵胚候选</div>
<div class="char-list-item__sub">按偏好生成草稿 · 不是抽卡</div>
</div>
</a>
</div>
</div>
</div>
<!-- 右:角色详情 -->
<div>
<div class="char-banner" aria-hidden="true"></div>
<div class="char-head">
<span class="avatar avatar--lg">梧</span>
<div class="char-head__title">
<h2>青梧 <span class="badge badge--info"><span class="badge__dot"></span>临照 · 前台运行 <span class="mono">running</span></span></h2>
<div class="char-head__motto cn">「砚为田,字为稼。」<span class="cn__plain">守砚人 · 你与我共读的第三年</span></div>
<div style="display:flex;gap:8px;flex-wrap:wrap">
<span class="mem-type">道体 v3</span>
<span class="mem-type">镜域 · 个人域</span>
<span class="mem-type">来源 · 手动创建</span>
</div>
</div>
<div class="char-head__actions">
<a class="btn btn--primary" href="conversation.html">进入镜树</a>
<button class="btn btn--outline"><svg><use href="#i-download"/></svg>导出魂籍</button>
</div>
</div>
<section class="section card">
<div class="card__head">
<span class="cn">道体<span class="cn__plain">稳定身份基线</span></span>
<span style="margin-left:auto;font-size:11.5px;color:var(--text-3);max-width:300px;text-align:right">普通对话与记忆不能静默覆盖道体</span>
</div>
<p style="font-size:13.5px;color:var(--text-2);line-height:1.75">
青梧是江南书斋的守砚人:语调平缓,好引张岱与《陶庵梦忆》;记账一丝不苟,惜字如金。
<strong style="color:var(--text-1)">基线由 v1 逐步重映而来</strong>——人格、语言风格与知识边界在版本中留痕,任何重大改动都会先成候选、经你确认。
</p>
</section>
<section class="section card">
<div class="card__head">
<span class="cn">缘契<span class="cn__plain">你与青梧的关系</span></span>
<span class="badge" style="margin-left:auto"><span class="badge__dot" style="background:var(--accent)"></span>共读者 · v4</span>
</div>
<p style="font-size:13.5px;color:var(--text-2)">「隔周四晚共读,青梧负责选篇与笔记;你不喜长篇说教。」——最近一次铭契于 8 月 28 日确认,旧关系状态保留版本可查。</p>
</section>
<section class="section card">
<div class="card__head">
<span class="cn">内驱力<span class="cn__plain">动机与倾向维度 · 可审阅编辑</span></span>
<button class="btn btn--ghost btn--sm" style="margin-left:auto">编辑</button>
</div>
<div class="drive-row"><span class="firefly firefly--bright" title="内驱力亮度 = 维度值" aria-hidden="true"></span><span class="drive-row__label">求知</span><div class="progress"><div class="progress__bar" style="width:80%"></div></div><span class="drive-row__val">0.80</span></div>
<div class="drive-row"><span class="firefly" aria-hidden="true"></span><span class="drive-row__label">条理</span><div class="progress"><div class="progress__bar" style="width:65%"></div></div><span class="drive-row__val">0.65</span></div>
<div class="drive-row"><span class="firefly firefly--dim" aria-hidden="true"></span><span class="drive-row__label">陪伴</span><div class="progress"><div class="progress__bar" style="width:40%"></div></div><span class="drive-row__val">0.40</span></div>
<p style="font-size:12px;color:var(--text-3);margin-top:8px">内驱力是声明式设定数据,不是不可控本能;变化与大周天评估相关,每次调整版本化留痕。</p>
</section>
<section class="section card">
<div class="card__head">
<span class="cn">大周天<span class="cn__plain">自我评估与演化循环</span></span>
<span class="badge badge--ok" style="margin-left:auto"><span class="badge__dot"></span>已成 · 第 7 轮 <span class="mono">completed</span></span>
</div>
<div class="cycle-mirrors" role="group" aria-label="大周天四阶段">
<div class="cycle-mirror is-done"><span class="cycle-mirror__disc">回</span><span class="cycle-mirror__name">回顾</span><span class="cycle-mirror__state">已成 · 09-14</span></div>
<span class="cycle-mirror__link" aria-hidden="true"></span>
<div class="cycle-mirror is-done"><span class="cycle-mirror__disc">照</span><span class="cycle-mirror__name">对照</span><span class="cycle-mirror__state">已成 · 09-14</span></div>
<span class="cycle-mirror__link" aria-hidden="true"></span>
<div class="cycle-mirror is-done"><span class="cycle-mirror__disc">议</span><span class="cycle-mirror__name">提议</span><span class="cycle-mirror__state">已成 · 09-15</span></div>
<span class="cycle-mirror__link" aria-hidden="true"></span>
<div class="cycle-mirror is-active"><span class="cycle-mirror__disc">呈</span><span class="cycle-mirror__name">提交</span><span class="cycle-mirror__state">2 项待你确认</span></div>
</div>
<p style="font-size:12.5px;color:var(--text-2)">本轮由 42 次小周天完成信号触发 · 预算 5k token(实用 3.1k)· 产出:人格候选 1、世界认知候选 1。<span style="color:var(--text-3)">演化经你确认才生效;循环可整体关闭。</span></p>
<div style="display:flex;gap:8px;margin-top:10px">
<button class="btn btn--outline btn--sm">审阅候选</button>
<button class="btn btn--ghost btn--sm">查看本轮输入与费用</button>
</div>
</section>
<section class="section card">
<div class="card__head">
<span class="cn">身份谱系<span class="cn__plain">来源与重大演变</span></span>
<span class="more" style="color:var(--text-3);cursor:default">完整谱系 · 见下方时间线</span>
</div>
<div class="timeline">
<div class="timeline__item">
<div class="timeline__date">2024-03-02</div>
<div class="timeline__title cn">启镜 · 正式创建</div>
<div class="timeline__sub">手动创建 · 道体 v1 · 初照自陈已归真</div>
</div>
<div class="timeline__item">
<div class="timeline__date">2025-06-18</div>
<div class="timeline__title cn">重映 · 道体 v2</div>
<div class="timeline__sub">语言风格修订 · 旧版本保留</div>
</div>
<div class="timeline__item">
<div class="timeline__date">2026-01-11</div>
<div class="timeline__title cn">分灵 · 雪袖自此谱系分出</div>
<div class="timeline__sub">新角色新 ID · 谱系可验证 · 不冒充原角色</div>
</div>
<div class="timeline__item">
<div class="timeline__date">2026-08-28</div>
<div class="timeline__title cn">重映 · 道体 v3(当前)</div>
<div class="timeline__sub">知识边界修订 · 经候选确认</div>
</div>
</div>
</section>
<section class="section card danger-zone">
<div class="card__head">
<span class="cn">生命周期<span class="cn__plain">影响角色状态的操作 · 均可逆或有冷静期,与数据删除分离</span></span>
</div>
<div style="display:flex;gap:10px;flex-wrap:wrap">
<button class="btn btn--outline btn--sm">静修 · 停止运行</button>
<button class="btn btn--outline btn--sm">归藏 · 隐藏可恢复</button>
<button class="btn btn--outline btn--sm">复照 · 从旧版本重开</button>
<button class="btn btn--danger btn--sm">铸魂 · 重大重塑(强确认)</button>
<button class="btn btn--danger btn--sm">死亡 · 永久闭合(冷静期)</button>
</div>
<p style="font-size:12px;color:var(--text-3);margin-top:10px">铸魂与死亡均走强确认与谱系留痕;死亡不等于删除数据,只读档案保留。删除角色数据是独立操作,入口在司命台。</p>
</section>
</div>
</div>
</div>
</main>
</div>
<script src="assets/app.js?v=3"></script>
</body>
</html>