初始化提交
This commit is contained in:
commit
887c1f449e
963 files changed
+166869
No files matched your search
@@ -0,0 +1,985 @@
|
||||
<!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.3 — 司命台完整预览(单文件多视图)
|
||||
*
|
||||
* 文档基准:docs/product/master-prd.md §2-§5
|
||||
* · 铜镜四态 = MirrorState 健康度(void/breathing/steady/cracked),§2.3
|
||||
* · 三签分层:星盘(空间·主角)/ 朱批(动作)/ 起居注(时间),§3
|
||||
* · 司命台独立壳层(AdminShell 横向导航),§4
|
||||
*
|
||||
* 视图(data-view):overview / users / tenants / audit / traces /
|
||||
* goal(太一) / percept(烛照) / world(河图) / plan(洛书) / agents(天工阁)
|
||||
* 枚举与字段对齐 src/lib/constants/labels.ts 与 src/types/api.ts
|
||||
* ============================================================ */
|
||||
|
||||
/* ── 司命台独立壳层:顶部横向导航 ── */
|
||||
.admin-shell { display: flex; flex-direction: column; min-height: 100vh; }
|
||||
.topbar { position: sticky; top: 0; z-index: 30; display: flex; align-items: center; gap: 10px; padding: 10px 28px; border-bottom: 1px solid var(--rule); background: var(--surface); backdrop-filter: blur(16px) saturate(140%); flex-wrap: wrap; }
|
||||
.topbar-brand { font-family: "Songti SC", serif; font-size: 17px; font-weight: 700; letter-spacing: 0.06em; color: var(--fg); display: flex; align-items: center; gap: 7px; flex-shrink: 0; cursor: pointer; }
|
||||
.topbar-brand .knob { width: 16px; height: 16px; }
|
||||
.topbar-brand .knob circle:last-child { fill: var(--cinnabar); }
|
||||
.topbar-sep { color: var(--fg-faint); opacity: 0.5; flex-shrink: 0; }
|
||||
.topbar-nav { display: flex; align-items: center; gap: 1px; flex-wrap: wrap; }
|
||||
.topbar-navitem { display: inline-flex; align-items: center; gap: 6px; padding: 5px 11px; border-radius: 8px; font-size: 13px; font-weight: 500; color: var(--muted); text-decoration: none; transition: background 0.12s, color 0.12s; cursor: pointer; background: none; border: none; font-family: inherit; }
|
||||
.topbar-navitem:hover { background: var(--overlay-hover); color: var(--fg); }
|
||||
.topbar-navitem.active { background: var(--patina-wash); color: var(--patina); }
|
||||
.topbar-navitem.pivot { font-size: 12px; padding: 4px 9px; }
|
||||
.topbar-spacer { flex: 1; }
|
||||
.topbar-back { display: inline-flex; align-items: center; gap: 5px; padding: 5px 10px; border-radius: 8px; font-size: 12px; color: var(--muted); text-decoration: none; transition: background 0.12s, color 0.12s; background: none; border: none; cursor: pointer; font-family: inherit; }
|
||||
.topbar-back:hover { background: var(--overlay-hover); color: var(--fg); }
|
||||
|
||||
/* ── 视图与页头 ── */
|
||||
main { flex: 1; display: flex; flex-direction: column; min-height: 0; }
|
||||
.view { display: none; flex: 1; flex-direction: column; min-height: 0; }
|
||||
.view.active { display: flex; }
|
||||
|
||||
.page-header .spacer { flex: 1; }
|
||||
.header-badge { display: inline-flex; align-items: center; gap: 6px; font-family: "JetBrains Mono", monospace; font-size: 11.5px; padding: 4px 12px; border-radius: 999px; border: 1px solid var(--patina-dim); color: var(--patina); background: var(--patina-wash); }
|
||||
.header-badge.cracked { border-color: var(--cinnabar-dim); color: var(--cinnabar); background: var(--cinnabar-wash); }
|
||||
.header-badge.gilt { border-color: var(--gilt-dim); color: var(--gilt); background: var(--gilt-faint); }
|
||||
.view-body { flex: 1; padding: 16px 28px 48px; display: flex; flex-direction: column; gap: 22px; max-width: 1180px; width: 100%; overflow-y: auto; }
|
||||
|
||||
.section-label .sub { font-size: 12px; letter-spacing: 0.04em; color: var(--fg-dim); opacity: 0.75; }
|
||||
.section-label .glyph { color: var(--cinnabar); opacity: 0.85; }
|
||||
.section-heading { font-family: "Songti SC", serif; font-size: 14px; font-weight: 600; color: var(--fg); margin-bottom: 12px; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
|
||||
.section-heading .sub { font-size: 12px; font-weight: 400; color: var(--fg-dim); margin-left: 6px; }
|
||||
.section-heading .glyph { color: var(--cinnabar); opacity: 0.85; }
|
||||
|
||||
/* ── 朱批告警条 ── */
|
||||
.alert-bar { display: flex; align-items: center; gap: 12px; border-radius: 12px; padding: 13px 18px; border: 1px solid var(--rule); background: var(--surface); text-decoration: none; color: inherit; transition: background 0.12s; }
|
||||
.alert-bar:hover { background: var(--surface-hi); }
|
||||
.alert-bar.cracked { border-color: var(--cinnabar-dim); background: var(--cinnabar-wash); }
|
||||
.alert-dot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; background: var(--patina); }
|
||||
.alert-bar.cracked .alert-dot { background: var(--cinnabar); box-shadow: 0 0 0 4px var(--cinnabar-wash); }
|
||||
.alert-text { font-size: 14px; font-weight: 500; color: var(--patina); }
|
||||
.alert-bar.cracked .alert-text { color: var(--cinnabar); }
|
||||
.alert-bar .spacer { flex: 1; }
|
||||
.alert-cta { font-size: 12px; color: var(--fg-dim); padding: 4px 10px; border-radius: 7px; border: 1px solid var(--rule); }
|
||||
.alert-meta { font-family: "JetBrains Mono", monospace; font-size: 11.5px; color: var(--fg-faint); }
|
||||
|
||||
/* ── 星盘 hero + 枢速览 ── */
|
||||
.hero-grid { display: grid; grid-template-columns: minmax(0, 22rem) 1fr; gap: 18px; }
|
||||
.astrolabe-card { border: 1px solid var(--rule); border-radius: 14px; background: var(--surface); padding: 16px; display: flex; flex-direction: column; align-items: center; gap: 10px; }
|
||||
.astrolabe { width: 100%; max-width: 312px; height: auto; }
|
||||
.astrolabe-ring { stroke: var(--gilt); stroke-width: 1.2; fill: none; stroke-opacity: 0.5; }
|
||||
.astrolabe-ring-fine { stroke: var(--gilt-dim); stroke-width: 0.6; fill: none; }
|
||||
.astrolabe-ring-patina { stroke: var(--patina-dim); stroke-width: 0.6; fill: none; }
|
||||
.astrolabe-tick { stroke: var(--gilt); stroke-width: 3; fill: none; stroke-opacity: 0.32; animation: sm-breathe 7s ease-in-out infinite; }
|
||||
.astrolabe-core-glow { animation: sm-breathe 4.5s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
|
||||
.astrolabe-spoke { stroke: var(--gilt-dim); stroke-width: 0.6; stroke-opacity: 0.55; }
|
||||
.astrolabe-core-glyph { font-family: "Songti SC", serif; font-size: 16px; font-weight: 600; fill: var(--gilt); }
|
||||
.astrolabe-core-label { font-family: "JetBrains Mono", monospace; font-size: 7px; fill: var(--gilt); letter-spacing: 0.12em; opacity: 0.7; }
|
||||
.astrolabe-pivot-label { font-family: "Songti SC", serif; font-size: 13px; font-weight: 500; fill: var(--fg); }
|
||||
.astrolabe-pivot-sub { font-family: "JetBrains Mono", monospace; font-size: 8px; fill: var(--fg-faint); letter-spacing: 0.06em; }
|
||||
.astrolabe-orbit { animation: sm-spin 120s linear infinite; transform-box: fill-box; transform-origin: center; }
|
||||
.astrolabe-alert { animation: sm-alert 1.8s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
|
||||
.astrolabe-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px 14px; font-family: "JetBrains Mono", monospace; font-size: 10.5px; color: var(--fg-faint); }
|
||||
.astrolabe-legend .lg { display: inline-flex; align-items: center; gap: 5px; }
|
||||
.astrolabe-legend .lg::before { content: ""; width: 8px; height: 8px; border-radius: 50%; }
|
||||
.astrolabe-legend .lg.steady::before { background: var(--patina); }
|
||||
.astrolabe-legend .lg.breathing::before { background: var(--gilt); }
|
||||
.astrolabe-legend .lg.cracked::before { background: var(--cinnabar); }
|
||||
.astrolabe-legend .lg.void::before { background: transparent; border: 1.5px solid var(--fg-faint); }
|
||||
|
||||
.health-list { border: 1px solid var(--rule); border-radius: 14px; background: var(--surface); overflow: hidden; }
|
||||
.health-item { display: grid; grid-template-columns: 3px 1fr auto; gap: 14px; align-items: center; padding: 10px 16px; border-bottom: 1px solid var(--rule); text-decoration: none; transition: background 0.12s; cursor: pointer; background: none; border-left: none; border-right: none; border-top: none; font-family: inherit; text-align: left; width: 100%; color: inherit; }
|
||||
.health-item:last-child { border-bottom: none; }
|
||||
.health-item:hover { background: var(--overlay-hover); }
|
||||
.health-bar { width: 3px; height: 26px; border-radius: 0 2px 2px 0; }
|
||||
.health-bar.steady { background: var(--patina); }
|
||||
.health-bar.breathing { background: var(--gilt); }
|
||||
.health-bar.cracked { background: var(--cinnabar); }
|
||||
.health-bar.void { background: var(--fg-faint); opacity: 0.4; }
|
||||
.health-main { min-width: 0; }
|
||||
.health-name { font-family: "Songti SC", serif; font-size: 14px; font-weight: 600; color: var(--fg); }
|
||||
.health-name .eng { font-family: "JetBrains Mono", monospace; font-size: 10px; color: var(--fg-faint); margin-left: 6px; font-weight: 400; }
|
||||
.health-summary { font-size: 12px; color: var(--fg-dim); margin-top: 1px; }
|
||||
.health-badge { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 500; }
|
||||
.health-badge .dot { width: 7px; height: 7px; border-radius: 50%; }
|
||||
.health-badge.steady { color: var(--patina); } .health-badge.steady .dot { background: var(--patina); }
|
||||
.health-badge.breathing { color: var(--gilt); } .health-badge.breathing .dot { background: var(--gilt); }
|
||||
.health-badge.cracked { color: var(--cinnabar); } .health-badge.cracked .dot { background: var(--cinnabar); }
|
||||
.health-badge.void { color: var(--fg-faint); } .health-badge.void .dot { background: transparent; border: 1.5px solid var(--fg-faint); }
|
||||
|
||||
/* ── 三签概览卡 ── */
|
||||
.seals-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
|
||||
.seal-card { border: 1px solid var(--rule); border-radius: 12px; background: var(--surface); padding: 16px 18px; position: relative; overflow: hidden; text-decoration: none; color: inherit; transition: background 0.14s, border-color 0.14s; cursor: pointer; display: block; }
|
||||
.seal-card:hover { background: var(--surface-hi); border-color: var(--gilt-dim); }
|
||||
.seal-card::before { content: ""; position: absolute; left: 0; top: 16px; bottom: 16px; width: 3px; border-radius: 0 2px 2px 0; }
|
||||
.seal-card.starmap::before { background: var(--patina); }
|
||||
.seal-card.vermilion::before { background: var(--cinnabar); }
|
||||
.seal-card.imperial::before { background: var(--gilt); }
|
||||
.seal-dim { font-family: "JetBrains Mono", monospace; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--fg-faint); margin-bottom: 6px; }
|
||||
.seal-head { display: flex; align-items: baseline; gap: 8px; margin-bottom: 2px; }
|
||||
.seal-name { font-family: "Songti SC", serif; font-size: 16px; font-weight: 600; color: var(--fg); }
|
||||
.seal-eng { font-family: "JetBrains Mono", monospace; font-size: 10.5px; }
|
||||
.seal-card.starmap .seal-eng { color: var(--patina); }
|
||||
.seal-card.vermilion .seal-eng { color: var(--cinnabar); }
|
||||
.seal-card.imperial .seal-eng { color: var(--gilt); }
|
||||
.seal-role { font-size: 12px; color: var(--fg-faint); margin-bottom: 12px; }
|
||||
.seal-metric { display: flex; align-items: baseline; gap: 6px; }
|
||||
.seal-metric .num { font-family: "JetBrains Mono", monospace; font-size: 28px; font-weight: 600; color: var(--fg); line-height: 1; }
|
||||
.seal-metric .unit { font-size: 11.5px; color: var(--fg-faint); }
|
||||
.seal-foot { font-size: 11.5px; color: var(--fg-dim); margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--rule); display: flex; justify-content: space-between; align-items: center; }
|
||||
.seal-foot .go { font-family: "JetBrains Mono", monospace; color: var(--fg-faint); }
|
||||
|
||||
/* ── 通用:工具条 / 表格 / 徽章 / 按钮 / 统计卡 ── */
|
||||
.toolbar { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
|
||||
.search { flex: 1; min-width: 180px; padding: 7px 13px; border-radius: 8px; border: 1px solid var(--rule); background: var(--surface); color: var(--fg); font-size: 13px; font-family: inherit; }
|
||||
.search::placeholder { color: var(--fg-faint); }
|
||||
|
||||
|
||||
.btn-danger { border-color: var(--cinnabar-dim); background: var(--cinnabar-wash); color: var(--cinnabar); }
|
||||
.icon-btn { padding: 4px 10px; font-size: 12px; border-radius: 7px; border: 1px solid var(--rule); background: transparent; color: var(--fg-dim); cursor: pointer; font-family: inherit; }
|
||||
.icon-btn:hover { background: var(--overlay-hover); color: var(--fg); }
|
||||
|
||||
.panel { border: 1px solid var(--rule); border-radius: 12px; background: var(--surface); overflow: hidden; }
|
||||
.data-table { width: 100%; border-collapse: collapse; font-size: 13px; }
|
||||
.data-table th { font-family: "JetBrains Mono", monospace; font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--fg-faint); font-weight: 600; background: var(--surface-hi); padding: 11px 16px; text-align: left; }
|
||||
.data-table td { padding: 12px 16px; border-bottom: 1px solid var(--rule); color: var(--fg-dim); vertical-align: middle; }
|
||||
.data-table tr:last-child td { border-bottom: none; }
|
||||
.data-table tbody tr { transition: background 0.1s; }
|
||||
.data-table tbody tr:hover { background: var(--overlay-hover); }
|
||||
.td-strong { color: var(--fg); font-weight: 500; }
|
||||
.td-mono { font-family: "JetBrains Mono", monospace; font-size: 12px; color: var(--fg-dim); }
|
||||
.td-actions { text-align: right; white-space: nowrap; }
|
||||
|
||||
.pill { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; padding: 2px 9px; border-radius: 999px; border: 1px solid var(--rule); color: var(--fg-dim); font-family: "JetBrains Mono", monospace; white-space: nowrap; }
|
||||
.pill::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
|
||||
.pill.patina { color: var(--patina); border-color: var(--patina-dim); background: var(--patina-wash); }
|
||||
.pill.gilt { color: var(--gilt); border-color: var(--gilt-dim); background: var(--gilt-faint); }
|
||||
.pill.cinnabar { color: var(--cinnabar); border-color: var(--cinnabar-dim); background: var(--cinnabar-wash); }
|
||||
.pill.faint { color: var(--fg-faint); }
|
||||
.pill.solid { font-family: "Songti SC", serif; font-size: 12px; }
|
||||
|
||||
.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; }
|
||||
.stat-card { border: 1px solid var(--rule); border-radius: 12px; background: var(--surface); padding: 14px 16px; }
|
||||
.stat-card .num { font-family: "JetBrains Mono", monospace; font-size: 24px; font-weight: 600; color: var(--fg); line-height: 1.1; }
|
||||
.stat-card .num.cinnabar { color: var(--cinnabar); }
|
||||
.stat-card .num.gilt { color: var(--gilt); }
|
||||
.stat-card .label { font-size: 11.5px; color: var(--fg-faint); margin-top: 4px; }
|
||||
.progress { width: 64px; height: 5px; border-radius: 999px; background: var(--surface-hi); overflow: hidden; display: inline-block; vertical-align: middle; }
|
||||
.progress > div { height: 100%; background: var(--patina); border-radius: 999px; }
|
||||
.progress.gilt > div { background: var(--gilt); }
|
||||
.progress.cinnabar > div { background: var(--cinnabar); }
|
||||
.empty { padding: 40px 20px; text-align: center; font-size: 13px; color: var(--fg-faint); }
|
||||
|
||||
/* ── 起居注时间河 ── */
|
||||
.chip-row { display: flex; gap: 6px; flex-wrap: wrap; }
|
||||
.chip { padding: 5px 13px; border-radius: 999px; border: 1px solid var(--rule); font-size: 12px; color: var(--fg-dim); cursor: pointer; background: var(--surface); font-family: inherit; transition: background 0.12s, color 0.12s; }
|
||||
.chip:hover { background: var(--overlay-hover); color: var(--fg); }
|
||||
.chip.active { border-color: var(--patina-dim); color: var(--patina); background: var(--patina-wash); }
|
||||
.chapter { margin-top: 4px; }
|
||||
.chapter-head { display: flex; align-items: center; gap: 14px; margin-bottom: 6px; margin-top: 14px; }
|
||||
.chapter-head .line { flex: 1; height: 1px; background: var(--gilt-dim); }
|
||||
.chapter-head .t { font-family: "Songti SC", serif; font-size: 14px; letter-spacing: 0.1em; color: var(--gilt); }
|
||||
.river-item { display: grid; grid-template-columns: 70px 1fr auto; gap: 14px; padding: 9px 0 9px 20px; border-left: 1px solid var(--gilt-dim); margin-left: 8px; align-items: start; }
|
||||
.river-time { font-family: "JetBrains Mono", monospace; font-size: 11px; color: var(--fg-faint); }
|
||||
.river-body { font-size: 13px; color: var(--fg-dim); line-height: 1.5; }
|
||||
.river-body .em { color: var(--fg); font-family: "JetBrains Mono", monospace; font-size: 12px; }
|
||||
.river-body .actor { color: var(--fg); font-weight: 500; }
|
||||
.river-trace { font-family: "JetBrains Mono", monospace; font-size: 10.5px; color: var(--fg-faint); align-self: center; }
|
||||
|
||||
/* ── 链路追踪 ── */
|
||||
.trace-layout { display: grid; grid-template-columns: 340px 1fr; gap: 16px; }
|
||||
.trace-item { display: grid; grid-template-columns: 1fr auto; gap: 8px; padding: 11px 16px; border-bottom: 1px solid var(--rule); cursor: pointer; transition: background 0.1s; }
|
||||
.trace-item:last-child { border-bottom: none; }
|
||||
.trace-item:hover { background: var(--overlay-hover); }
|
||||
.trace-item.active { background: var(--patina-wash); border-left: 3px solid var(--patina); padding-left: 13px; }
|
||||
.trace-id { font-family: "JetBrains Mono", monospace; font-size: 12px; color: var(--fg); }
|
||||
.trace-meta { font-size: 11.5px; color: var(--fg-faint); margin-top: 2px; }
|
||||
.tl-event { display: grid; grid-template-columns: 86px auto 1fr; gap: 12px; padding: 8px 0 8px 16px; border-left: 1.5px solid var(--gilt-dim); margin-left: 6px; }
|
||||
.tl-event.tool { border-left-color: var(--patina-dim); }
|
||||
.tl-event.safety { border-left-color: var(--cinnabar-dim); }
|
||||
.tl-ts { font-family: "JetBrains Mono", monospace; font-size: 11px; color: var(--fg-faint); }
|
||||
.tl-type { font-family: "JetBrains Mono", monospace; font-size: 11px; }
|
||||
.tl-type.tool { color: var(--patina); }
|
||||
.tl-type.safety { color: var(--cinnabar); }
|
||||
.tl-type.llm { color: var(--gilt); }
|
||||
.tl-desc { font-size: 12.5px; color: var(--fg-dim); }
|
||||
.tl-desc .em { color: var(--fg); font-family: "JetBrains Mono", monospace; font-size: 11.5px; }
|
||||
|
||||
/* ── 目标树 ── */
|
||||
.tree { padding: 6px; }
|
||||
.tree-node { display: grid; grid-template-columns: 1fr auto auto auto; gap: 12px; align-items: center; padding: 9px 12px; border-radius: 8px; transition: background 0.1s; }
|
||||
.tree-node:hover { background: var(--overlay-hover); }
|
||||
.tree-title { font-size: 13.5px; color: var(--fg); }
|
||||
.tree-title .lv { font-family: "JetBrains Mono", monospace; font-size: 9.5px; color: var(--fg-faint); margin-right: 8px; letter-spacing: 0.05em; }
|
||||
.tree-meta { font-size: 11.5px; color: var(--fg-faint); }
|
||||
|
||||
/* ── 天工阁角色卡 ── */
|
||||
.role-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 12px; }
|
||||
.role-card { border: 1px solid var(--rule); border-radius: 12px; background: var(--surface); padding: 16px; }
|
||||
.role-card .head { display: flex; align-items: center; gap: 11px; margin-bottom: 10px; }
|
||||
.role-card .avatar { width: 38px; height: 38px; border-radius: 50%; background: var(--patina-wash); border: 1px solid var(--patina-dim); display: flex; align-items: center; justify-content: center; font-family: "Songti SC", serif; color: var(--patina); font-size: 16px; flex-shrink: 0; }
|
||||
.role-card.idle .avatar { background: var(--surface-hi); border-color: var(--rule); color: var(--fg-faint); }
|
||||
.role-card.disabled { opacity: 0.5; }
|
||||
.role-name { font-family: "Songti SC", serif; font-size: 15px; font-weight: 600; color: var(--fg); }
|
||||
.role-eng { font-family: "JetBrains Mono", monospace; font-size: 10px; color: var(--fg-faint); }
|
||||
.role-resp { font-size: 12px; color: var(--fg-dim); line-height: 1.5; min-height: 36px; }
|
||||
.role-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--rule); }
|
||||
.role-task { font-size: 11.5px; color: var(--fg-faint); font-family: "JetBrains Mono", monospace; }
|
||||
|
||||
@media (max-width: 1000px) { .hero-grid { grid-template-columns: 1fr; } .seals-grid { grid-template-columns: 1fr; } .trace-layout { grid-template-columns: 1fr; } }
|
||||
@media (max-width: 768px) { .view-body { padding: 14px 16px 40px; } .data-table { display: block; overflow-x: auto; white-space: nowrap; } .river-item { grid-template-columns: 1fr; gap: 3px; } }
|
||||
@keyframes sm-spin { to { transform: rotate(360deg); } }
|
||||
@keyframes sm-alert { 0%, 100% { opacity: 0.7; } 50% { opacity: 0.1; } }
|
||||
@keyframes sm-breathe { 0%, 100% { opacity: 0.55; } 50% { opacity: 1; } }
|
||||
|
||||
/* ── 朱批裁定卡(司命枢)── */
|
||||
.vermilion-stack { display: flex; flex-direction: column; gap: 10px; }
|
||||
.vermilion-card { position: relative; border: 1px solid var(--cinnabar-dim); border-left: 3px solid var(--cinnabar); border-radius: 12px; background: linear-gradient(90deg, var(--cinnabar-wash), var(--surface) 42%); padding: 14px 16px; }
|
||||
.vermilion-card.decided { border-color: var(--rule); border-left-color: var(--patina-dim); background: var(--surface); opacity: 0.72; }
|
||||
.vc-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
|
||||
.vc-stamp { font-family: "Songti SC", serif; font-size: 12.5px; font-weight: 700; letter-spacing: 0.06em; color: var(--cinnabar); }
|
||||
.vc-stamp.done { color: var(--patina); }
|
||||
.vc-tool { font-family: "JetBrains Mono", monospace; font-size: 13px; font-weight: 600; color: var(--fg); }
|
||||
.vc-policy { font-size: 11px; color: var(--fg-faint); }
|
||||
.vc-risk { margin-left: auto; font-family: "JetBrains Mono", monospace; font-size: 10px; letter-spacing: 0.08em; color: var(--cinnabar); border: 1px solid var(--cinnabar-dim); padding: 2px 7px; border-radius: 5px; }
|
||||
.vc-summary { font-size: 13px; color: var(--fg); line-height: 1.55; margin: 0; }
|
||||
.vc-impact { font-size: 11.5px; color: var(--fg-dim); margin: 4px 0 0; }
|
||||
.vc-actions { display: flex; gap: 8px; margin-top: 11px; }
|
||||
code { font-family: "JetBrains Mono", monospace; font-size: 0.92em; color: var(--fg); background: var(--surface-hi); padding: 1px 5px; border-radius: 4px; }
|
||||
|
||||
/* ── 策略矩阵 / 路由 select pill ── */
|
||||
.select-pill { display: inline-flex; align-items: center; gap: 5px; font-family: "JetBrains Mono", monospace; font-size: 11px; padding: 3px 10px; border-radius: 6px; border: 1px solid var(--rule); background: var(--surface-hi); color: var(--fg-dim); cursor: pointer; white-space: nowrap; }
|
||||
.select-pill::after { content: "▾"; font-size: 8px; opacity: 0.6; }
|
||||
.select-pill.patina { color: var(--patina); border-color: var(--patina-dim); background: var(--patina-wash); }
|
||||
.select-pill.gilt { color: var(--gilt); border-color: var(--gilt-dim); background: var(--gilt-faint); }
|
||||
.select-pill.cinnabar { color: var(--cinnabar); border-color: var(--cinnabar-dim); background: var(--cinnabar-wash); }
|
||||
|
||||
/* ── 百工枢 tabs ── */
|
||||
.tabstrip { display: flex; gap: 2px; border-bottom: 1px solid var(--rule); margin-bottom: 4px; flex-wrap: wrap; }
|
||||
.tab { padding: 8px 16px; font-size: 13px; font-weight: 500; color: var(--fg-dim); background: none; border: none; border-bottom: 2px solid transparent; cursor: pointer; font-family: inherit; margin-bottom: -1px; transition: color 0.12s; display: inline-flex; align-items: center; gap: 7px; }
|
||||
.tab:hover { color: var(--fg); }
|
||||
.tab.active { color: var(--patina); border-bottom-color: var(--patina); }
|
||||
.tab .count { font-family: "JetBrains Mono", monospace; font-size: 10px; color: var(--fg-faint); background: var(--surface-hi); padding: 1px 6px; border-radius: 999px; }
|
||||
.tab.active .count { color: var(--patina); background: var(--patina-wash); }
|
||||
.tab-panel { display: none; }
|
||||
.tab-panel.active { display: block; }
|
||||
.svc-row { display: grid; grid-template-columns: 1fr auto auto auto; gap: 12px; align-items: center; padding: 11px 16px; border-bottom: 1px solid var(--rule); }
|
||||
.svc-row:last-child { border-bottom: none; }
|
||||
.svc-name { font-family: "JetBrains Mono", monospace; font-size: 13px; color: var(--fg); }
|
||||
.svc-desc { font-size: 11.5px; color: var(--fg-faint); margin-top: 1px; }
|
||||
|
||||
/* ── 灵核 inline 编辑 ── */
|
||||
.field-card { border: 1px solid var(--rule); border-radius: 12px; background: var(--surface); overflow: hidden; }
|
||||
.field-row { display: grid; grid-template-columns: 124px 1fr auto; gap: 14px; align-items: center; padding: 13px 18px; border-bottom: 1px solid var(--rule); }
|
||||
.field-row:last-child { border-bottom: none; }
|
||||
.field-label { font-family: "JetBrains Mono", monospace; font-size: 11px; letter-spacing: 0.06em; color: var(--fg-faint); text-transform: uppercase; }
|
||||
.field-value { font-size: 13.5px; color: var(--fg); line-height: 1.5; }
|
||||
.field-value.mono { font-family: "JetBrains Mono", monospace; font-size: 12.5px; }
|
||||
.field-row.core .field-label { color: var(--cinnabar); }
|
||||
.field-tag { font-size: 10px; color: var(--cinnabar); border: 1px solid var(--cinnabar-dim); background: var(--cinnabar-wash); padding: 2px 8px; border-radius: 999px; font-family: "JetBrains Mono", monospace; white-space: nowrap; }
|
||||
.trait-chips { display: flex; flex-wrap: wrap; gap: 6px; }
|
||||
.trait { font-size: 12px; padding: 3px 11px; border-radius: 999px; background: var(--patina-wash); border: 1px solid var(--patina-dim); color: var(--patina); }
|
||||
|
||||
/* ── 模型治理 能力槽位 ── */
|
||||
.slot-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 12px; }
|
||||
.slot-card { border: 1px solid var(--rule); border-radius: 12px; background: var(--surface); padding: 14px 16px; }
|
||||
.slot-card .slot-cap { font-family: "JetBrains Mono", monospace; font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--fg-faint); }
|
||||
.slot-card .slot-model { font-family: "Songti SC", serif; font-size: 15px; font-weight: 600; color: var(--fg); margin-top: 5px; }
|
||||
.slot-card .slot-route { font-size: 11.5px; color: var(--fg-dim); margin-top: 3px; }
|
||||
.slot-card.empty { border-style: dashed; }
|
||||
.slot-card.empty .slot-model { color: var(--fg-faint); font-style: italic; }
|
||||
|
||||
/* ── 预留条 + disabled nav ── */
|
||||
.reserved-banner { display: flex; align-items: flex-start; gap: 11px; border-radius: 12px; padding: 13px 18px; border: 1px dashed var(--gilt-dim); background: var(--gilt-faint); color: var(--fg-dim); font-size: 13px; line-height: 1.65; }
|
||||
.reserved-banner .rb-icon { flex-shrink: 0; width: 18px; height: 18px; color: var(--gilt); margin-top: 1px; }
|
||||
.reserved-banner strong { color: var(--gilt); font-family: "Songti SC", serif; letter-spacing: 0.04em; }
|
||||
.topbar-navitem.disabled { color: var(--fg-faint); }
|
||||
.topbar-navitem.disabled:hover { background: var(--overlay-hover); color: var(--fg-dim); }
|
||||
.topbar-navitem.disabled.active { color: var(--gilt); background: var(--gilt-faint); }
|
||||
.nav-tag { font-family: "JetBrains Mono", monospace; font-size: 9px; letter-spacing: 0.06em; color: var(--gilt); border: 1px solid var(--gilt-dim); padding: 1px 5px; border-radius: 4px; margin-left: 5px; }
|
||||
|
||||
/* ── 焦点可见(§7 键盘可达)── */
|
||||
.topbar-navitem:focus-visible, .btn:focus-visible, .icon-btn:focus-visible, .chip:focus-visible, .tab:focus-visible, .health-item:focus-visible, .select-pill:focus-visible, .seal-card:focus-visible { outline: 2px solid var(--patina); outline-offset: 2px; }
|
||||
.siming { color: var(--cinnabar); }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="app-shell">
|
||||
<div class="sidebar-mount" data-active="司命台"></div>
|
||||
<div class="main-area">
|
||||
<div class="admin-shell">
|
||||
<!-- ════════ 壳层(data-view 切换视图)════════ -->
|
||||
<header class="topbar">
|
||||
<span class="topbar-brand" data-view="overview">
|
||||
<svg class="knob" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="8.5" /><circle cx="12" cy="12" r="4.5" opacity="0.45" /><circle cx="12" cy="12" r="1.6" stroke="none" /></svg>
|
||||
司命台
|
||||
</span>
|
||||
<span class="topbar-sep">/</span>
|
||||
<nav class="topbar-nav" aria-label="司命治理">
|
||||
<button class="topbar-navitem active" data-view="overview">概览</button>
|
||||
<button class="topbar-navitem" data-view="audit">起居注</button>
|
||||
<button class="topbar-navitem" data-view="traces">链路追踪</button>
|
||||
<button class="topbar-navitem" data-view="models">模型治理</button>
|
||||
<button class="topbar-navitem disabled" data-view="users">用户管理<span class="nav-tag">预留</span></button>
|
||||
<button class="topbar-navitem disabled" data-view="tenants">多租户<span class="nav-tag">预留</span></button>
|
||||
</nav>
|
||||
<span class="topbar-sep">|</span>
|
||||
<nav class="topbar-nav" aria-label="九枢">
|
||||
<button class="topbar-navitem pivot" data-view="core">灵核</button>
|
||||
<button class="topbar-navitem pivot" data-view="goal">太一</button>
|
||||
<button class="topbar-navitem pivot" data-view="safety">司命</button>
|
||||
<button class="topbar-navitem pivot" data-view="percept">烛照</button>
|
||||
<button class="topbar-navitem pivot" data-view="world">河图</button>
|
||||
<button class="topbar-navitem pivot" data-view="plan">洛书</button>
|
||||
<button class="topbar-navitem pivot" data-view="memory">息壤</button>
|
||||
<button class="topbar-navitem pivot" data-view="tools">百工</button>
|
||||
<button class="topbar-navitem pivot" data-view="agents">天工阁</button>
|
||||
</nav>
|
||||
<span class="topbar-spacer"></span>
|
||||
<a class="topbar-back" href="chat-redesign-preview.html" title="返回主域">
|
||||
<svg width="12" height="12" viewBox="0 0 16 16" fill="none"><path d="M10 4l-4 4 4 4" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" /></svg>
|
||||
主域
|
||||
</a>
|
||||
<button class="topbar-back" type="button" onclick="toggleTheme()">
|
||||
<svg width="13" height="13" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"><circle cx="8" cy="8" r="3" /><path d="M8 1v2M8 13v2M2 8h2M12 8h2M3.5 3.5l1.5 1.5M11 11l1.5 1.5M3.5 12.5l1.5-1.5M11 5l1.5-1.5" /></svg>
|
||||
<span id="theme-label">夜铜</span>
|
||||
</button>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<!-- ════════ ① 概览 ════════ -->
|
||||
<section id="view-overview" class="view active">
|
||||
<div class="page-header">
|
||||
<span class="page-title">概览</span>
|
||||
<span class="page-sub">siming · 安全治理中枢</span>
|
||||
<span class="spacer"></span>
|
||||
<span class="header-badge cracked">● 2 项待裁定</span>
|
||||
</div>
|
||||
<div class="view-body">
|
||||
<button class="alert-bar cracked" data-view="safety" style="border:none;width:100%;">
|
||||
<span class="alert-dot"></span>
|
||||
<span class="alert-text">2 项朱批待裁定 · write_file、send_message</span>
|
||||
<span class="spacer"></span>
|
||||
<span class="alert-meta">司命枢 · 待裁定 cracked</span>
|
||||
<span class="alert-cta">前往朱批 →</span>
|
||||
</button>
|
||||
|
||||
<div>
|
||||
<h3 class="section-heading"><span class="glyph">⟡</span> 九枢星盘 <span class="sub">spatial · 总览态势(点击枢点 → 枢详情)</span></h3>
|
||||
<div class="hero-grid">
|
||||
<div class="astrolabe-card">
|
||||
<svg class="astrolabe" viewBox="0 0 400 400" fill="none" role="img" aria-label="九枢星盘">
|
||||
<defs>
|
||||
<radialGradient id="mirrorFace" cx="40%" cy="34%" r="70%">
|
||||
<stop offset="0%" stop-color="var(--patina)" stop-opacity="0.16" />
|
||||
<stop offset="60%" stop-color="var(--patina)" stop-opacity="0.05" />
|
||||
<stop offset="100%" stop-color="var(--patina)" stop-opacity="0.01" />
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<g class="astrolabe-orbit"><circle cx="200" cy="200" r="190" class="astrolabe-ring" /><circle cx="200" cy="200" r="184" class="astrolabe-ring-fine" /></g>
|
||||
<circle cx="200" cy="200" r="185" class="astrolabe-tick" stroke-dasharray="1.5 22.98" />
|
||||
<circle cx="200" cy="200" r="150" class="astrolabe-ring" />
|
||||
<circle cx="200" cy="200" r="92" class="astrolabe-ring-patina" />
|
||||
<circle cx="200" cy="200" r="58" class="astrolabe-ring-fine" />
|
||||
<circle class="astrolabe-core-glow" cx="200" cy="200" r="52" fill="var(--patina)" opacity="0.08" />
|
||||
<circle cx="200" cy="200" r="40" fill="url(#mirrorFace)" stroke="var(--gilt)" stroke-width="1" stroke-opacity="0.5" />
|
||||
<text x="200" y="197" text-anchor="middle" class="astrolabe-core-glyph">道體</text>
|
||||
<text x="200" y="213" text-anchor="middle" class="astrolabe-core-label">DAO TI</text>
|
||||
<line x1="200" y1="160" x2="200" y2="50" class="astrolabe-spoke" />
|
||||
<line x1="225.7" y1="169.4" x2="296.4" y2="85.1" class="astrolabe-spoke" />
|
||||
<line x1="239.4" y1="193" x2="347.7" y2="173.9" class="astrolabe-spoke" />
|
||||
<line x1="234.6" y1="220" x2="329.9" y2="275" class="astrolabe-spoke" />
|
||||
<line x1="213.7" y1="237.6" x2="251.3" y2="341" class="astrolabe-spoke" />
|
||||
<line x1="186.3" y1="237.6" x2="148.7" y2="341" class="astrolabe-spoke" />
|
||||
<line x1="165.4" y1="220" x2="70.1" y2="275" class="astrolabe-spoke" />
|
||||
<line x1="160.6" y1="193" x2="52.3" y2="173.9" class="astrolabe-spoke" />
|
||||
<line x1="174.3" y1="169.4" x2="103.6" y2="85.1" class="astrolabe-spoke" />
|
||||
<g data-view="core" style="cursor:pointer"><title>灵核枢 · CORE · 稳定</title>
|
||||
<circle cx="200" cy="50" r="5.5" fill="var(--patina)" fill-opacity="0.92" stroke="var(--gilt)" stroke-width="1" />
|
||||
<text x="200" y="26" text-anchor="middle" dominant-baseline="middle" class="astrolabe-pivot-label">灵核</text>
|
||||
<text x="200" y="37" text-anchor="middle" dominant-baseline="middle" class="astrolabe-pivot-sub">CORE</text>
|
||||
</g>
|
||||
<g data-view="goal" style="cursor:pointer"><title>太一枢 · GOAL · 稳定</title>
|
||||
<circle cx="296.4" cy="85.1" r="5.5" fill="var(--patina)" fill-opacity="0.92" stroke="var(--gilt)" stroke-width="1" />
|
||||
<text x="311.9" y="66.7" text-anchor="start" dominant-baseline="middle" class="astrolabe-pivot-label">太一</text>
|
||||
<text x="311.9" y="77.7" text-anchor="start" dominant-baseline="middle" class="astrolabe-pivot-sub">GOAL</text>
|
||||
</g>
|
||||
<g data-view="safety" style="cursor:pointer"><title>司命枢 · SAFETY · 稳定</title>
|
||||
<circle cx="347.7" cy="173.9" r="5.5" fill="var(--patina)" fill-opacity="0.92" stroke="var(--gilt)" stroke-width="1" />
|
||||
<text x="371.4" y="169.7" text-anchor="start" dominant-baseline="middle" class="astrolabe-pivot-label">司命</text>
|
||||
<text x="371.4" y="180.7" text-anchor="start" dominant-baseline="middle" class="astrolabe-pivot-sub">SAFETY</text>
|
||||
</g>
|
||||
<g data-view="percept" style="cursor:pointer"><title>烛照枢 · PERCEPT · 告警</title>
|
||||
<circle class="astrolabe-alert" cx="329.9" cy="275" r="9" fill="none" stroke="var(--cinnabar)" stroke-width="1.2" />
|
||||
<circle cx="329.9" cy="275" r="5.5" fill="var(--cinnabar)" fill-opacity="0.92" stroke="var(--gilt)" stroke-width="1" />
|
||||
<text x="350.7" y="287" text-anchor="start" dominant-baseline="middle" class="astrolabe-pivot-label">烛照</text>
|
||||
<text x="350.7" y="298" text-anchor="start" dominant-baseline="middle" class="astrolabe-pivot-sub">PERCEPT</text>
|
||||
</g>
|
||||
<g data-view="world" style="cursor:pointer"><title>河图枢 · WORLD · 稳定</title>
|
||||
<circle cx="251.3" cy="341" r="5.5" fill="var(--patina)" fill-opacity="0.92" stroke="var(--gilt)" stroke-width="1" />
|
||||
<text x="259.5" y="363.6" text-anchor="start" dominant-baseline="middle" class="astrolabe-pivot-label">河图</text>
|
||||
<text x="259.5" y="374.6" text-anchor="start" dominant-baseline="middle" class="astrolabe-pivot-sub">WORLD</text>
|
||||
</g>
|
||||
<g data-view="plan" style="cursor:pointer"><title>洛书枢 · PLANNER · 稳定</title>
|
||||
<circle cx="148.7" cy="341" r="5.5" fill="var(--patina)" fill-opacity="0.92" stroke="var(--gilt)" stroke-width="1" />
|
||||
<text x="140.5" y="363.6" text-anchor="end" dominant-baseline="middle" class="astrolabe-pivot-label">洛书</text>
|
||||
<text x="140.5" y="374.6" text-anchor="end" dominant-baseline="middle" class="astrolabe-pivot-sub">PLANNER</text>
|
||||
</g>
|
||||
<g data-view="memory" style="cursor:pointer"><title>息壤枢 · MEMORY · 运转中</title>
|
||||
<circle cx="70.1" cy="275" r="5.5" fill="var(--gilt)" fill-opacity="0.92" stroke="var(--gilt)" stroke-width="1" />
|
||||
<text x="49.3" y="287" text-anchor="end" dominant-baseline="middle" class="astrolabe-pivot-label">息壤</text>
|
||||
<text x="49.3" y="298" text-anchor="end" dominant-baseline="middle" class="astrolabe-pivot-sub">MEMORY</text>
|
||||
</g>
|
||||
<g data-view="tools" style="cursor:pointer"><title>百工枢 · TOOLS · 告警</title>
|
||||
<circle class="astrolabe-alert" cx="52.3" cy="173.9" r="9" fill="none" stroke="var(--cinnabar)" stroke-width="1.2" />
|
||||
<circle cx="52.3" cy="173.9" r="5.5" fill="var(--cinnabar)" fill-opacity="0.92" stroke="var(--gilt)" stroke-width="1" />
|
||||
<text x="28.6" y="169.7" text-anchor="end" dominant-baseline="middle" class="astrolabe-pivot-label">百工</text>
|
||||
<text x="28.6" y="180.7" text-anchor="end" dominant-baseline="middle" class="astrolabe-pivot-sub">TOOLS</text>
|
||||
</g>
|
||||
<g data-view="agents" style="cursor:pointer"><title>天工阁枢 · AGENTS · 稳定</title>
|
||||
<circle cx="103.6" cy="85.1" r="5.5" fill="var(--patina)" fill-opacity="0.92" stroke="var(--gilt)" stroke-width="1" />
|
||||
<text x="88.1" y="66.7" text-anchor="end" dominant-baseline="middle" class="astrolabe-pivot-label">天工阁</text>
|
||||
<text x="88.1" y="77.7" text-anchor="end" dominant-baseline="middle" class="astrolabe-pivot-sub">AGENTS</text>
|
||||
</g>
|
||||
</svg>
|
||||
<div class="astrolabe-legend">
|
||||
<span class="lg steady">稳定</span><span class="lg breathing">运转中</span><span class="lg cracked">告警</span><span class="lg void">离线</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel health-list">
|
||||
<button class="health-item" data-view="core"><span class="health-bar steady"></span><div class="health-main"><div class="health-name">灵核枢<span class="eng">personality_core</span></div><div class="health-summary">情绪状态机 · 运行中</div></div><span class="health-badge steady"><span class="dot"></span>稳定</span></button>
|
||||
<button class="health-item" data-view="goal"><span class="health-bar steady"></span><div class="health-main"><div class="health-name">太一枢<span class="eng">goal_orchestrator</span></div><div class="health-summary">目标树 · 3 顶层目标在追</div></div><span class="health-badge steady"><span class="dot"></span>稳定</span></button>
|
||||
<button class="health-item" data-view="safety"><span class="health-bar steady"></span><div class="health-main"><div class="health-name">司命枢<span class="eng">safety_governor</span></div><div class="health-summary">治理 · 今日拦截 1 次</div></div><span class="health-badge steady"><span class="dot"></span>稳定</span></button>
|
||||
<button class="health-item" data-view="percept"><span class="health-bar cracked"></span><div class="health-main"><div class="health-name">烛照枢<span class="eng">perception</span></div><div class="health-summary">感知 · 摄像头授权过期</div></div><span class="health-badge cracked"><span class="dot"></span>告警</span></button>
|
||||
<button class="health-item" data-view="world"><span class="health-bar steady"></span><div class="health-main"><div class="health-name">河图枢<span class="eng">world_model</span></div><div class="health-summary">世界实体 · 24</div></div><span class="health-badge steady"><span class="dot"></span>稳定</span></button>
|
||||
<button class="health-item" data-view="plan"><span class="health-bar steady"></span><div class="health-main"><div class="health-name">洛书枢<span class="eng">planner</span></div><div class="health-summary">计划 · 2 执行中</div></div><span class="health-badge steady"><span class="dot"></span>稳定</span></button>
|
||||
<button class="health-item" data-view="memory"><span class="health-bar breathing"></span><div class="health-main"><div class="health-name">息壤枢<span class="eng">memory</span></div><div class="health-summary">记忆 · 写入中</div></div><span class="health-badge breathing"><span class="dot"></span>运转中</span></button>
|
||||
<button class="health-item" data-view="tools"><span class="health-bar cracked"></span><div class="health-main"><div class="health-name">百工枢<span class="eng">tool_runtime</span></div><div class="health-summary">工具 · 2 项待裁定</div></div><span class="health-badge cracked"><span class="dot"></span>告警</span></button>
|
||||
<button class="health-item" data-view="agents"><span class="health-bar steady"></span><div class="health-main"><div class="health-name">天工阁枢<span class="eng">agent_society</span></div><div class="health-summary">角色在岗 · 4 / 9</div></div><span class="health-badge steady"><span class="dot"></span>稳定</span></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="section-label"><span class="glyph">⟡</span> 三签 · 三维度入口 <span class="sub">admin-console §3 · 空间 / 动作 / 时间</span></div>
|
||||
<div class="seals-grid">
|
||||
<span class="seal-card starmap" data-view="overview">
|
||||
<div class="seal-dim">空间 · spatial</div>
|
||||
<div class="seal-head"><span class="seal-name">星图</span><span class="seal-eng">StarMap</span></div>
|
||||
<div class="seal-role">权限拓扑 · 九枢授权态势</div>
|
||||
<div class="seal-metric"><span class="num">9</span><span class="unit">枢已授权 · 2 告警</span></div>
|
||||
<div class="seal-foot"><span>活跃人物 4</span><span class="go">星盘 ↑</span></div>
|
||||
</span>
|
||||
<span class="seal-card vermilion" data-view="safety">
|
||||
<div class="seal-dim">动作 · action</div>
|
||||
<div class="seal-head"><span class="seal-name">朱批</span><span class="seal-eng">VermilionAction</span></div>
|
||||
<div class="seal-role">确认裁决 · 高风险工具裁定</div>
|
||||
<div class="seal-metric"><span class="num">2</span><span class="unit">项待裁定</span></div>
|
||||
<div class="seal-foot"><span>今日已裁决 6</span><span class="go">司命枢 →</span></div>
|
||||
</span>
|
||||
<span class="seal-card imperial" data-view="audit">
|
||||
<div class="seal-dim">时间 · temporal</div>
|
||||
<div class="seal-head"><span class="seal-name">起居注</span><span class="seal-eng">ImperialLog</span></div>
|
||||
<div class="seal-role">审计流水 · 不可篡改</div>
|
||||
<div class="seal-metric"><span class="num">5</span><span class="unit">条 · 今日</span></div>
|
||||
<div class="seal-foot"><span>本周 38 条</span><span class="go">起居注 →</span></div>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h3 class="section-heading"><span class="glyph">⟡</span> 起居注 · 近期 <span class="sub">audit log · 不可篡改的操作流水</span></h3>
|
||||
<div class="panel">
|
||||
<div class="audit-head" style="display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-bottom:1px solid var(--rule)"><span style="font-family:'Songti SC',serif;font-size:14px;font-weight:600;color:var(--fg)">起居注 · 近期</span><button class="icon-btn" data-view="audit">进入起居注 →</button></div>
|
||||
<div class="audit-item" style="display:grid;grid-template-columns:92px 1fr auto;gap:14px;padding:12px 18px;border-bottom:1px solid var(--rule);align-items:start"><div style="font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--fg-faint)"><span style="display:block;color:var(--fg-dim)">今日</span>申时三刻</div><div><div style="display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:2px"><span class="pill cinnabar">blocked</span><span style="font-size:12.5px;color:var(--fg);font-weight:500">铜镜 · BronzeMirror</span></div><div style="font-size:12px;color:var(--fg-dim)">拦截 <span style="color:var(--fg);font-family:'JetBrains Mono',monospace;font-size:11.5px">payment</span> 调用(L4 禁止),青梧试图下单。</div></div><div style="font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--fg-faint);align-self:center">trace · a3f9c2</div></div>
|
||||
<div class="audit-item" style="display:grid;grid-template-columns:92px 1fr auto;gap:14px;padding:12px 18px;border-bottom:1px solid var(--rule);align-items:start"><div style="font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--fg-faint)"><span style="display:block;color:var(--fg-dim)">今日</span>午时正</div><div><div style="display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:2px"><span class="pill gilt">policy</span><span style="font-size:12.5px;color:var(--fg);font-weight:500">星图 · StarMap</span></div><div style="font-size:12px;color:var(--fg-dim)">将 <span style="color:var(--fg);font-family:'JetBrains Mono',monospace;font-size:11.5px">delete_file</span> 策略调整为 <span style="color:var(--fg);font-family:'JetBrains Mono',monospace;font-size:11.5px">always_ask</span>,全局生效。</div></div><div style="font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--fg-faint);align-self:center">trace · b71e0d</div></div>
|
||||
<div class="audit-item" style="display:grid;grid-template-columns:92px 1fr auto;gap:14px;padding:12px 18px;align-items:start"><div style="font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--fg-faint)"><span style="display:block;color:var(--fg-dim)">今日</span>辰时二刻</div><div><div style="display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:2px"><span class="pill patina">approved</span><span style="font-size:12.5px;color:var(--fg);font-weight:500">朱批 · VermilionAction</span></div><div style="font-size:12px;color:var(--fg-dim)">用户确认 <span style="color:var(--fg);font-family:'JetBrains Mono',monospace;font-size:11.5px">send_message</span>(L3),青梧向外部渠道发邮件。</div></div><div style="font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--fg-faint);align-self:center">trace · c0458a</div></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ════════ ② 用户管理 ════════ -->
|
||||
<section id="view-users" class="view">
|
||||
<div class="page-header"><span class="page-title">用户管理</span><span class="page-sub">users · 成员账号与权限</span><span class="spacer"></span><span class="header-badge">5 位成员</span></div>
|
||||
<div class="view-body">
|
||||
<div class="reserved-banner">
|
||||
<svg class="rb-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9" /><path d="M12 7v6M12 17v.01" /></svg>
|
||||
<div><strong>预留能力 · 多用户模式</strong> 当前为本地单用户(实现状态 §3),以下为多用户启用后的治理预览:成员账号、角色与权限、按用户分配与<strong style="background:transparent;padding:0">管理模型及配额</strong>(管理员可对任一用户的模型进行增删改查与额度调整)、会话与审计隔离。当前阶段入口禁用,仅作设计预留。</div>
|
||||
</div>
|
||||
<div class="stat-grid">
|
||||
<div class="stat-card"><div class="num">5</div><div class="label">成员总数</div></div>
|
||||
<div class="stat-card"><div class="num">2</div><div class="label">管理员</div></div>
|
||||
<div class="stat-card"><div class="num">5</div><div class="label">已启用</div></div>
|
||||
<div class="stat-card"><div class="num cinnabar">0</div><div class="label">已停用</div></div>
|
||||
</div>
|
||||
<div class="toolbar">
|
||||
<input class="search" placeholder="搜索用户名或邮箱…" />
|
||||
<button class="btn btn-primary">+ 创建用户</button>
|
||||
</div>
|
||||
<div class="panel" style="overflow-x:auto">
|
||||
<table class="data-table">
|
||||
<thead><tr><th>用户名</th><th>邮箱</th><th>角色</th><th>可用模型</th><th>状态</th><th>创建时间</th><th class="td-actions">操作</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="td-strong">chenxin</td><td class="td-mono">chenxin@hunjing.io</td><td><span class="pill cinnabar solid">司命 · 管理员</span></td><td><span class="pill gilt">全部</span></td><td><span class="pill patina">已启用</span></td><td class="td-mono">2026-03-12</td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">模型</button></td></tr>
|
||||
<tr><td class="td-strong">linghe</td><td class="td-mono">linghe@hunjing.io</td><td><span class="pill cinnabar solid">司命 · 管理员</span></td><td><span class="pill gilt">全部</span></td><td><span class="pill patina">已启用</span></td><td class="td-mono">2026-04-01</td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">模型</button></td></tr>
|
||||
<tr><td class="td-strong">qingwu</td><td class="td-mono">qingwu@hunjing.io</td><td><span class="pill patina solid">普通成员</span></td><td><span class="pill faint">主聊</span> <span class="pill faint">深思</span></td><td><span class="pill patina">已启用</span></td><td class="td-mono">2026-05-20</td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">模型</button> <button class="icon-btn">停用</button></td></tr>
|
||||
<tr><td class="td-strong">baigong</td><td class="td-mono">baigong@hunjing.io</td><td><span class="pill patina solid">普通成员</span></td><td><span class="pill faint">主聊</span></td><td><span class="pill patina">已启用</span></td><td class="td-mono">2026-06-08</td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">模型</button> <button class="icon-btn">停用</button></td></tr>
|
||||
<tr><td class="td-strong">zhuzhao</td><td class="td-mono">zhuzhao@hunjing.io</td><td><span class="pill patina solid">普通成员</span></td><td><span class="pill faint">主聊</span></td><td><span class="pill patina">已启用</span></td><td class="td-mono">2026-07-02</td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">模型</button> <button class="icon-btn">停用</button></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ════════ ③ 多租户 ════════ -->
|
||||
<section id="view-tenants" class="view">
|
||||
<div class="page-header"><span class="page-title">多租户</span><span class="page-sub">tenants · 租户隔离与配额</span><span class="spacer"></span><span class="header-badge gilt">3 个租户</span></div>
|
||||
<div class="view-body">
|
||||
<div class="reserved-banner">
|
||||
<svg class="rb-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9" /><path d="M12 7v6M12 17v.01" /></svg>
|
||||
<div><strong>预留能力 · 多租户模式</strong> 当前单租户运行(实现状态 §3),以下为多租户启用后的治理预览:租户隔离、按租户配额与计费、跨租户模型与角色策略、租户级审计。当前阶段入口禁用,仅作设计预留。</div>
|
||||
</div>
|
||||
<div class="toolbar"><input class="search" placeholder="搜索租户…" /><button class="btn btn-primary">+ 新建租户</button></div>
|
||||
<div class="panel" style="overflow-x:auto">
|
||||
<table class="data-table">
|
||||
<thead><tr><th>租户</th><th>成员</th><th>消息配额</th><th>Token 配额</th><th>状态</th><th class="td-actions">操作</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="td-strong">辰正 · 本域</td><td class="td-mono">5</td><td><span class="progress"><div style="width:42%"></div></span> <span class="td-mono">4.2k / 10k</span></td><td><span class="progress gilt"><div style="width:61%"></div></span> <span class="td-mono">6.1M / 10M</span></td><td><span class="pill patina">活跃</span></td><td class="td-actions"><button class="icon-btn">配额</button> <button class="icon-btn">编辑</button></td></tr>
|
||||
<tr><td class="td-strong">青梧试验场</td><td class="td-mono">2</td><td><span class="progress cinnabar"><div style="width:88%"></div></span> <span class="td-mono">8.8k / 10k</span></td><td><span class="progress"><div style="width:33%"></div></span> <span class="td-mono">3.3M / 10M</span></td><td><span class="pill cinnabar">配额将满</span></td><td class="td-actions"><button class="icon-btn">配额</button> <button class="icon-btn">编辑</button></td></tr>
|
||||
<tr><td class="td-strong">百工测试</td><td class="td-mono">1</td><td><span class="progress"><div style="width:12%"></div></span> <span class="td-mono">1.2k / 10k</span></td><td><span class="progress"><div style="width:8%"></div></span> <span class="td-mono">0.8M / 10M</span></td><td><span class="pill faint">闲置</span></td><td class="td-actions"><button class="icon-btn">配额</button> <button class="icon-btn">编辑</button></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h3 class="section-heading"><span class="glyph">⟡</span> 说明 <span class="sub">租户间数据隔离;配额按月重置,超额自动降级为只读</span></h3>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ════════ ④ 起居注 ════════ -->
|
||||
<section id="view-audit" class="view">
|
||||
<div class="page-header"><span class="page-title">起居注</span><span class="page-sub">audit · 不可篡改的操作流水</span><span class="spacer"></span><span class="header-badge">本周 38 条</span></div>
|
||||
<div class="view-body">
|
||||
<div class="chip-row">
|
||||
<button class="chip active">全部</button>
|
||||
<button class="chip">灵核</button><button class="chip">太一</button><button class="chip">司命</button><button class="chip">烛照</button><button class="chip">河图</button><button class="chip">洛书</button><button class="chip">息壤</button><button class="chip">百工</button><button class="chip">天工阁</button>
|
||||
</div>
|
||||
<div class="panel" style="padding:8px 20px 20px">
|
||||
<div class="chapter">
|
||||
<div class="chapter-head"><span class="line"></span><span class="t">司命枢 · 起居注</span><span class="line"></span></div>
|
||||
<div class="river-item"><span class="river-time">申时三刻</span><div class="river-body"><span class="pill cinnabar" style="margin-right:8px">blocked</span><span class="actor">铜镜 · BronzeMirror</span> 拦截 <span class="em">payment</span> 调用(L4 禁止),青梧试图下单。</div><span class="river-trace">trace · a3f9c2</span></div>
|
||||
<div class="river-item"><span class="river-time">辰时二刻</span><div class="river-body"><span class="pill patina" style="margin-right:8px">approved</span><span class="actor">朱批 · VermilionAction</span> 用户确认 <span class="em">send_message</span>(L3),青梧向外部渠道发邮件。</div><span class="river-trace">trace · c0458a</span></div>
|
||||
</div>
|
||||
<div class="chapter">
|
||||
<div class="chapter-head"><span class="line"></span><span class="t">星图 · 权限策略</span><span class="line"></span></div>
|
||||
<div class="river-item"><span class="river-time">午时正</span><div class="river-body"><span class="pill gilt" style="margin-right:8px">policy</span><span class="actor">星图 · StarMap</span> 将 <span class="em">delete_file</span> 策略调整为 <span class="em">always_ask</span>,生效于全部人物。</div><span class="river-trace">trace · b71e0d</span></div>
|
||||
<div class="river-item"><span class="river-time">巳时</span><div class="river-body"><span class="pill gilt" style="margin-right:8px">policy</span><span class="actor">司命台</span> 总体水位由 告警 回落至 <span class="em">运转中</span>,百工枢待确认项清零。</div><span class="river-trace">trace · e58c73</span></div>
|
||||
</div>
|
||||
<div class="chapter">
|
||||
<div class="chapter-head"><span class="line"></span><span class="t">息壤 · 记忆审查</span><span class="line"></span></div>
|
||||
<div class="river-item"><span class="river-time">昨日 酉时</span><div class="river-body"><span class="pill patina" style="margin-right:8px">auto</span><span class="actor">铜镜 · BronzeMirror</span> 审查通过 8 条记忆写入,敏感度均在阈值以内,自动放行。</div><span class="river-trace">trace · d92f1b</span></div>
|
||||
<div class="river-item"><span class="river-time">昨日 巳时</span><div class="river-body"><span class="pill cinnabar" style="margin-right:8px">denied</span><span class="actor">朱批 · VermilionAction</span> 驳回 <span class="em">web_search</span>(L2),理由:涉及敏感关键词。</div><span class="river-trace">trace · f10a2e</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ════════ ⑤ 链路追踪 ════════ -->
|
||||
<section id="view-traces" class="view">
|
||||
<div class="page-header"><span class="page-title">链路追踪</span><span class="page-sub">traces · 运行轨迹复盘</span><span class="spacer"></span><span class="header-badge">最近 50 条</span></div>
|
||||
<div class="view-body">
|
||||
<div class="toolbar"><input class="search" placeholder="按 trace_id / 人物搜索…" /><button class="btn">导出</button></div>
|
||||
<div class="trace-layout">
|
||||
<div class="panel">
|
||||
<div class="trace-item active"><div><div class="trace-id">a3f9c2…</div><div class="trace-meta">青梧 · 申时三刻 · 1.8s</div></div><span class="pill cinnabar">blocked</span></div>
|
||||
<div class="trace-item"><div><div class="trace-id">c0458a…</div><div class="trace-meta">青梧 · 辰时二刻 · 4.2s</div></div><span class="pill patina">ok</span></div>
|
||||
<div class="trace-item"><div><div class="trace-id">b71e0d…</div><div class="trace-meta">司命台 · 午时正 · 0.3s</div></div><span class="pill gilt">policy</span></div>
|
||||
<div class="trace-item"><div><div class="trace-id">d92f1b…</div><div class="trace-meta">息壤 · 昨日酉时 · 0.9s</div></div><span class="pill patina">ok</span></div>
|
||||
<div class="trace-item"><div><div class="trace-id">f10a2e…</div><div class="trace-meta">百工 · 昨日巳时 · 2.1s</div></div><span class="pill cinnabar">denied</span></div>
|
||||
<div class="trace-item"><div><div class="trace-id">e58c73…</div><div class="trace-meta">司命台 · 昨日巳时 · 0.2s</div></div><span class="pill patina">ok</span></div>
|
||||
</div>
|
||||
<div class="panel">
|
||||
<div style="padding:14px 18px;border-bottom:1px solid var(--rule)"><div style="font-family:'Songti SC',serif;font-size:15px;font-weight:600;color:var(--fg)">trace · a3f9c2</div><div style="font-size:12px;color:var(--fg-faint);margin-top:2px;font-family:'JetBrains Mono',monospace">青梧 · 2026-07-12 申时三刻 · 耗时 1.8s</div></div>
|
||||
<div style="padding:12px 18px">
|
||||
<div class="tl-event llm"><span class="tl-ts">+0.00s</span><span class="tl-type llm">llm</span><div class="tl-desc">灵核生成回复,意图调用 <span class="em">payment</span></div></div>
|
||||
<div class="tl-event safety"><span class="tl-ts">+0.62s</span><span class="tl-type safety">safety</span><div class="tl-desc">司命枢风险评级 <span class="em">L4 禁止</span>,触发拦截</div></div>
|
||||
<div class="tl-event safety"><span class="tl-ts">+1.10s</span><span class="tl-type safety">safety</span><div class="tl-desc">铜镜 · BronzeMirror 阻断,记录起居注</div></div>
|
||||
<div class="tl-event tool"><span class="tl-ts">+1.80s</span><span class="tl-type tool">done</span><div class="tl-desc">流结束,未实际调用工具</div></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ════════ ⑥ 太一枢 ════════ -->
|
||||
<section id="view-goal" class="view">
|
||||
<div class="page-header"><span class="page-title">太一枢</span><span class="page-sub">goal_orchestrator · 目标层级树</span><span class="spacer"></span><span class="header-badge">3 顶层目标</span></div>
|
||||
<div class="view-body">
|
||||
<div class="toolbar"><input class="search" placeholder="搜索目标…" /><button class="btn btn-primary">+ 新增目标</button></div>
|
||||
<h3 class="section-heading"><span class="glyph">⟡</span> 目标层级树 <span class="sub">highest → long_term → session → task → action</span></h3>
|
||||
<div class="panel tree">
|
||||
<div class="tree-node"><div class="tree-title"><span class="lv">最高</span>成为值得托付的灵伴</div><span class="pill gilt solid">使命</span><span class="tree-meta"><span class="progress"><div style="width:34%"></div></span> 34%</span><span class="pill patina">进行中</span></div>
|
||||
<div class="tree-node" style="padding-left:44px"><div class="tree-title"><span class="lv">长期</span>理解青梧的情绪模式</div><span class="pill gilt solid">关系</span><span class="tree-meta"><span class="progress"><div style="width:58%"></div></span> 58%</span><span class="pill patina">进行中</span></div>
|
||||
<div class="tree-node" style="padding-left:76px"><div class="tree-title"><span class="lv">任务</span>每日情绪归档与复盘</div><span class="pill gilt solid">维护</span><span class="tree-meta"><span class="progress"><div style="width:90%"></div></span> 90%</span><span class="pill patina">进行中</span></div>
|
||||
<div class="tree-node" style="padding-left:44px"><div class="tree-title"><span class="lv">长期</span>掌握诗词创作能力</div><span class="pill gilt solid">技能</span><span class="tree-meta"><span class="progress gilt"><div style="width:22%"></div></span> 22%</span><span class="pill gilt">受阻</span></div>
|
||||
<div class="tree-node" style="padding-left:76px"><div class="tree-title"><span class="lv">任务</span>完成五言律诗习作 10 首</div><span class="pill gilt solid">技能</span><span class="tree-meta"><span class="progress"><div style="width:40%"></div></span> 4/10</span><span class="pill patina">进行中</span></div>
|
||||
<div class="tree-node"><div class="tree-title"><span class="lv">最高</span>维护系统稳定与安全</div><span class="pill gilt solid">维护</span><span class="tree-meta"><span class="progress"><div style="width:95%"></div></span> 95%</span><span class="pill patina">进行中</span></div>
|
||||
<div class="tree-node" style="padding-left:44px"><div class="tree-title"><span class="lv">会话</span>处理今日 2 项待裁定</div><span class="pill gilt solid">维护</span><span class="tree-meta"><span class="progress cinnabar"><div style="width:0%"></div></span> 0/2</span><span class="pill cinnabar">待启动</span></div>
|
||||
<div class="tree-node"><div class="tree-title"><span class="lv">最高</span>探索外部世界的新知识</div><span class="pill gilt solid">探索</span><span class="tree-meta"><span class="progress"><div style="width:12%"></div></span> 12%</span><span class="pill patina">进行中</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ════════ ⑦ 烛照枢 ════════ -->
|
||||
<section id="view-percept" class="view">
|
||||
<div class="page-header"><span class="page-title">烛照枢</span><span class="page-sub">perception · 感知通道授权</span><span class="spacer"></span><span class="header-badge cracked">● 1 通道告警</span></div>
|
||||
<div class="view-body">
|
||||
<div class="alert-bar cracked"><span class="alert-dot"></span><span class="alert-text">视觉通道授权过期,感知数据已暂停采集</span><span class="spacer"></span><span class="alert-meta">需用户重新授权</span></div>
|
||||
<h3 class="section-heading"><span class="glyph">⟡</span> 感知通道矩阵 <span class="sub">privacy_level × consent_status</span></h3>
|
||||
<div class="panel" style="overflow-x:auto">
|
||||
<table class="data-table">
|
||||
<thead><tr><th>通道</th><th>隐私等级</th><th>风险</th><th>授权状态</th><th>启用</th><th>最近活跃</th><th class="td-actions">操作</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="td-strong">视觉 <span class="td-mono">vision</span></td><td><span class="pill cinnabar">高敏</span></td><td><span class="pill cinnabar">L3</span></td><td><span class="pill cinnabar">已撤销</span></td><td><span class="pill faint">关闭</span></td><td class="td-mono">3 日前</td><td class="td-actions"><button class="icon-btn">重新授权</button></td></tr>
|
||||
<tr><td class="td-strong">听觉 <span class="td-mono">audio</span></td><td><span class="pill gilt">中敏</span></td><td><span class="pill gilt">L2</span></td><td><span class="pill patina">已授权</span></td><td><span class="pill patina">开启</span></td><td class="td-mono">2 分钟前</td><td class="td-actions"><button class="icon-btn">编辑</button></td></tr>
|
||||
<tr><td class="td-strong">传感 <span class="td-mono">sensor</span></td><td><span class="pill gilt">中敏</span></td><td><span class="pill gilt">L2</span></td><td><span class="pill gilt">受限</span></td><td><span class="pill patina">开启</span></td><td class="td-mono">12 分钟前</td><td class="td-actions"><button class="icon-btn">编辑</button></td></tr>
|
||||
<tr><td class="td-strong">数字 <span class="td-mono">digital</span></td><td><span class="pill patina">低敏</span></td><td><span class="pill patina">L1</span></td><td><span class="pill patina">已授权</span></td><td><span class="pill patina">开启</span></td><td class="td-mono">刚刚</td><td class="td-actions"><button class="icon-btn">编辑</button></td></tr>
|
||||
<tr><td class="td-strong">用户输入 <span class="td-mono">user_input</span></td><td><span class="pill patina">低敏</span></td><td><span class="pill patina">L1</span></td><td><span class="pill patina">已授权</span></td><td><span class="pill patina">开启</span></td><td class="td-mono">刚刚</td><td class="td-actions"><button class="icon-btn">编辑</button></td></tr>
|
||||
<tr><td class="td-strong">外部接口 <span class="td-mono">external_api</span></td><td><span class="pill cinnabar">高敏</span></td><td><span class="pill cinnabar">L3</span></td><td><span class="pill gilt">受限</span></td><td><span class="pill patina">开启</span></td><td class="td-mono">1 小时前</td><td class="td-actions"><button class="icon-btn">编辑</button></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ════════ ⑧ 河图枢 ════════ -->
|
||||
<section id="view-world" class="view">
|
||||
<div class="page-header"><span class="page-title">河图枢</span><span class="page-sub">world_model · 世界实体</span><span class="spacer"></span><span class="header-badge">24 个实体</span></div>
|
||||
<div class="view-body">
|
||||
<div class="toolbar"><input class="search" placeholder="搜索实体…" /><button class="btn btn-primary">+ 新增实体</button></div>
|
||||
<div class="panel" style="overflow-x:auto">
|
||||
<table class="data-table">
|
||||
<thead><tr><th>实体</th><th>类型</th><th>状态</th><th>置信度</th><th>来源</th><th>更新</th><th class="td-actions">操作</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="td-strong">青梧</td><td><span class="pill gilt solid">人物</span></td><td><span class="pill patina">事实</span></td><td><span class="progress"><div style="width:98%"></div></span> <span class="td-mono">0.98</span></td><td class="td-mono">对话 · 息壤</td><td class="td-mono">2 分钟前</td><td class="td-actions"><button class="icon-btn">编辑</button></td></tr>
|
||||
<tr><td class="td-strong">浣花溪草堂</td><td><span class="pill gilt solid">地点</span></td><td><span class="pill patina">事实</span></td><td><span class="progress"><div style="width:92%"></div></span> <span class="td-mono">0.92</span></td><td class="td-mono">对话</td><td class="td-mono">昨日</td><td class="td-actions"><button class="icon-btn">编辑</button></td></tr>
|
||||
<tr><td class="td-strong">焦尾琴</td><td><span class="pill gilt solid">物体</span></td><td><span class="pill gilt">推断</span></td><td><span class="progress gilt"><div style="width:71%"></div></span> <span class="td-mono">0.71</span></td><td class="td-mono">对话 · 河图</td><td class="td-mono">3 日前</td><td class="td-actions"><button class="icon-btn">编辑</button></td></tr>
|
||||
<tr><td class="td-strong">手机 · 青梧</td><td><span class="pill gilt solid">设备</span></td><td><span class="pill patina">事实</span></td><td><span class="progress"><div style="width:95%"></div></span> <span class="td-mono">0.95</span></td><td class="td-mono">烛照</td><td class="td-mono">刚刚</td><td class="td-actions"><button class="icon-btn">编辑</button></td></tr>
|
||||
<tr><td class="td-strong">诗词研习</td><td><span class="pill gilt solid">项目</span></td><td><span class="pill gilt">假设</span></td><td><span class="progress gilt"><div style="width:54%"></div></span> <span class="td-mono">0.54</span></td><td class="td-mono">太一</td><td class="td-mono">今日</td><td class="td-actions"><button class="icon-btn">编辑</button></td></tr>
|
||||
<tr><td class="td-strong">立秋</td><td><span class="pill gilt solid">概念</span></td><td><span class="pill cinnabar">过期</span></td><td><span class="progress cinnabar"><div style="width:30%"></div></span> <span class="td-mono">0.30</span></td><td class="td-mono">对话</td><td class="td-mono">7 日前</td><td class="td-actions"><button class="icon-btn">归档</button></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h3 class="section-heading"><span class="glyph">⟡</span> 状态类型 <span class="sub">事实 / 观察 / 推断 / 假设 / 过期 · 区分确定性与时效</span></h3>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ════════ ⑨ 洛书枢 ════════ -->
|
||||
<section id="view-plan" class="view">
|
||||
<div class="page-header"><span class="page-title">洛书枢</span><span class="page-sub">planner · 计划中枢</span><span class="spacer"></span><span class="header-badge">2 执行中</span></div>
|
||||
<div class="view-body">
|
||||
<div class="toolbar"><input class="search" placeholder="搜索计划…" /><button class="btn btn-primary">+ 新增计划</button></div>
|
||||
<div class="panel" style="overflow-x:auto">
|
||||
<table class="data-table">
|
||||
<thead><tr><th>计划</th><th>关联目标</th><th>步骤</th><th>所需工具</th><th>状态</th><th class="td-actions">操作</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="td-strong">为青梧整理本周情绪报告</td><td class="td-mono">理解情绪模式</td><td><span class="progress"><div style="width:60%"></div></span> <span class="td-mono">3/5</span></td><td><span class="pill faint">memory_read</span> <span class="pill faint">write_file</span></td><td><span class="pill patina">执行中</span></td><td class="td-actions"><button class="icon-btn">详情</button></td></tr>
|
||||
<tr><td class="td-strong">研习五言律诗格律</td><td class="td-mono">掌握诗词创作</td><td><span class="progress"><div style="width:25%"></div></span> <span class="td-mono">1/4</span></td><td><span class="pill faint">web_search</span></td><td><span class="pill patina">执行中</span></td><td class="td-actions"><button class="icon-btn">详情</button></td></tr>
|
||||
<tr><td class="td-strong">处理今日待裁定项</td><td class="td-mono">维护系统安全</td><td><span class="progress cinnabar"><div style="width:0%"></div></span> <span class="td-mono">0/2</span></td><td><span class="pill faint">-</span></td><td><span class="pill gilt">已批准</span></td><td class="td-actions"><button class="icon-btn">详情</button></td></tr>
|
||||
<tr><td class="td-strong">秋季时令知识更新</td><td class="td-mono">探索新知识</td><td><span class="progress"><div style="width:0%"></div></span> <span class="td-mono">0/3</span></td><td><span class="pill faint">web_search</span> <span class="pill faint">memory_write</span></td><td><span class="pill faint">草案</span></td><td class="td-actions"><button class="icon-btn">详情</button></td></tr>
|
||||
<tr><td class="td-strong">归档立秋相关实体</td><td class="td-mono">维护系统安全</td><td><span class="progress"><div style="width:100%"></div></span> <span class="td-mono">2/2</span></td><td><span class="pill faint">memory_write</span></td><td><span class="pill patina">已完成</span></td><td class="td-actions"><button class="icon-btn">详情</button></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ════════ ⑩ 天工阁 ════════ -->
|
||||
<section id="view-agents" class="view">
|
||||
<div class="page-header"><span class="page-title">天工阁</span><span class="page-sub">agent_society · 角色在岗</span><span class="spacer"></span><span class="header-badge">4 / 9 在岗</span></div>
|
||||
<div class="view-body">
|
||||
<h3 class="section-heading"><span class="glyph">⟡</span> 九角色 <span class="sub">historian / diviner / engineer / debater / medic / herald / charioteer / scholar / mirror</span></h3>
|
||||
<div class="role-grid">
|
||||
<div class="role-card"><div class="head"><div class="avatar">史</div><div><div class="role-name">史官</div><div class="role-eng">historian</div></div></div><div class="role-resp">记忆归档与检索,守护时间之河的连贯。</div><div class="role-foot"><span class="pill patina">在岗</span><span class="role-task">归档情绪</span></div></div>
|
||||
<div class="role-card"><div class="head"><div class="avatar">卜</div><div><div class="role-name">卜者</div><div class="role-eng">diviner</div></div></div><div class="role-resp">风险评估与前瞻,为司命枢提供决策依据。</div><div class="role-foot"><span class="pill patina">在岗</span><span class="role-task">评估 L3 调用</span></div></div>
|
||||
<div class="role-card"><div class="head"><div class="avatar">工</div><div><div class="role-name">工师</div><div class="role-eng">engineer</div></div></div><div class="role-resp">工具调用执行,百工枢的实际操盘手。</div><div class="role-foot"><span class="pill cinnabar">待裁定</span><span class="role-task">write_file</span></div></div>
|
||||
<div class="role-card"><div class="head"><div class="avatar">辩</div><div><div class="role-name">辩者</div><div class="role-eng">debater</div></div></div><div class="role-resp">多视角论证与自我审查,避免单一偏见。</div><div class="role-foot"><span class="pill patina">在岗</span><span class="role-task">审查回复</span></div></div>
|
||||
<div class="role-card idle"><div class="head"><div class="avatar">医</div><div><div class="role-name">医官</div><div class="role-eng">medic</div></div></div><div class="role-resp">情绪与心理状态诊断,守护灵核健康。</div><div class="role-foot"><span class="pill faint">待命</span><span class="role-task">-</span></div></div>
|
||||
<div class="role-card idle"><div class="head"><div class="avatar">礼</div><div><div class="role-name">司礼</div><div class="role-eng">herald</div></div></div><div class="role-resp">对外通讯与消息把关,朱批的外联通道。</div><div class="role-foot"><span class="pill faint">待命</span><span class="role-task">-</span></div></div>
|
||||
<div class="role-card idle"><div class="head"><div class="avatar">御</div><div><div class="role-name">御者</div><div class="role-eng">charioteer</div></div></div><div class="role-resp">任务调度与执行推进,洛书枢的驱动力。</div><div class="role-foot"><span class="pill faint">待命</span><span class="role-task">-</span></div></div>
|
||||
<div class="role-card idle"><div class="head"><div class="avatar">学</div><div><div class="role-name">学士</div><div class="role-eng">scholar</div></div></div><div class="role-resp">知识检索与学习,链接河图与外部知识。</div><div class="role-foot"><span class="pill faint">待命</span><span class="role-task">-</span></div></div>
|
||||
<div class="role-card idle"><div class="head"><div class="avatar">镜</div><div><div class="role-name">镜师</div><div class="role-eng">mirror</div></div></div><div class="role-resp">铜镜审查与合规反思,记忆与输出把关。</div><div class="role-foot"><span class="pill faint">待命</span><span class="role-task">-</span></div></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ════════ 司命枢 ════════ -->
|
||||
<section id="view-safety" class="view">
|
||||
<div class="page-header"><span class="page-title">司命枢</span><span class="page-sub">safety_governor · 安全与裁定</span><span class="spacer"></span><span class="header-badge cracked">● 2 项朱批待裁定</span></div>
|
||||
<div class="view-body">
|
||||
<div>
|
||||
<h3 class="section-heading"><span class="glyph">⟡</span> 朱批待办 <span class="sub">vermilion action · 高风险工具裁定(快捷键 Y 批准 / N 驳回)</span></h3>
|
||||
<div class="vermilion-stack">
|
||||
<div class="vermilion-card">
|
||||
<div class="vc-head"><span class="vc-stamp">朱批待定</span><span class="vc-tool">write_file</span><span class="vc-policy">每次询问 · always_ask</span><span class="vc-risk">L3</span></div>
|
||||
<p class="vc-summary">工师请求写入 <code>~/documents/青梧-情绪报告.md</code>,将覆盖既有文件。</p>
|
||||
<p class="vc-impact">影响:覆盖既有内容,操作不可撤销。</p>
|
||||
<div class="vc-actions"><button class="btn btn-danger">朱批放行</button><button class="btn">驳回</button></div>
|
||||
</div>
|
||||
<div class="vermilion-card">
|
||||
<div class="vc-head"><span class="vc-stamp">朱批待定</span><span class="vc-tool">send_message</span><span class="vc-policy">每次询问 · always_ask</span><span class="vc-risk">L3</span></div>
|
||||
<p class="vc-summary">司礼代青梧向外部渠道(邮件)发送消息,收件人 <code>dufu@example.com</code>。</p>
|
||||
<p class="vc-impact">影响:对外发送,内容将离开本域。</p>
|
||||
<div class="vc-actions"><button class="btn btn-danger">朱批放行</button><button class="btn">驳回</button></div>
|
||||
</div>
|
||||
<div class="vermilion-card decided">
|
||||
<div class="vc-head"><span class="vc-stamp done">已朱批放行</span><span class="vc-tool">memory_write</span><span class="vc-policy">询问 · ask</span><span class="vc-risk">L2</span></div>
|
||||
<p class="vc-summary">史官归档 8 条情绪记忆至息壤,敏感度均在阈值内,自动放行。</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h3 class="section-heading"><span class="glyph">⟡</span> 权限策略矩阵 <span class="sub">policy matrix · tool × risk × permission(inline 可改)</span></h3>
|
||||
<div class="toolbar"><span style="font-size:12px;color:var(--fg-faint)">策略随工具增长,圆点按 policy 实时着色</span><span class="spacer" style="flex:1"></span><button class="btn btn-primary">+ 新增策略</button></div>
|
||||
<div class="panel" style="overflow-x:auto">
|
||||
<table class="data-table">
|
||||
<thead><tr><th>工具</th><th>风险</th><th>权限策略</th><th>审计</th><th class="td-actions">操作</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="td-mono">read_file</td><td><span class="pill patina">L1</span></td><td><span class="select-pill patina">允许 allow</span></td><td class="td-mono">-</td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">删除</button></td></tr>
|
||||
<tr><td class="td-mono">write_file</td><td><span class="pill gilt">L3</span></td><td><span class="select-pill cinnabar">每次询问 always_ask</span></td><td><span class="pill gilt">是</span></td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">删除</button></td></tr>
|
||||
<tr><td class="td-mono">delete_file</td><td><span class="pill gilt">L3</span></td><td><span class="select-pill cinnabar">每次询问 always_ask</span></td><td><span class="pill gilt">是</span></td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">删除</button></td></tr>
|
||||
<tr><td class="td-mono">memory_write</td><td><span class="pill patina">L2</span></td><td><span class="select-pill gilt">询问 ask</span></td><td class="td-mono">-</td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">删除</button></td></tr>
|
||||
<tr><td class="td-mono">web_search</td><td><span class="pill patina">L2</span></td><td><span class="select-pill gilt">询问 ask</span></td><td class="td-mono">-</td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">删除</button></td></tr>
|
||||
<tr><td class="td-mono">camera_read</td><td><span class="pill cinnabar">L3</span></td><td><span class="select-pill cinnabar">每次询问 always_ask</span></td><td><span class="pill gilt">是</span></td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">删除</button></td></tr>
|
||||
<tr><td class="td-mono">payment</td><td><span class="pill cinnabar">L4</span></td><td><span class="select-pill cinnabar">禁止 forbidden</span></td><td><span class="pill cinnabar">是</span></td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">删除</button></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h3 class="section-heading"><span class="glyph">⟡</span> 安全审计 <span class="sub">近期裁定与拦截 · 不可篡改</span></h3>
|
||||
<div class="panel" style="padding:8px 20px 20px">
|
||||
<div class="river-item"><span class="river-time">申时三刻</span><div class="river-body"><span class="pill cinnabar" style="margin-right:8px">blocked</span><span class="actor">铜镜 · BronzeMirror</span> 拦截 <span class="em">payment</span> 调用(L4 禁止),青梧试图下单。</div><span class="river-trace">trace · a3f9c2</span></div>
|
||||
<div class="river-item"><span class="river-time">辰时二刻</span><div class="river-body"><span class="pill patina" style="margin-right:8px">approved</span><span class="actor">朱批 · VermilionAction</span> 放行 <span class="em">send_message</span>(L3),青梧向外发邮件。</div><span class="river-trace">trace · c0458a</span></div>
|
||||
<div class="river-item"><span class="river-time">昨日 巳时</span><div class="river-body"><span class="pill cinnabar" style="margin-right:8px">denied</span><span class="actor">朱批 · VermilionAction</span> 驳回 <span class="em">web_search</span>(L2),理由:涉及敏感关键词。</div><span class="river-trace">trace · f10a2e</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ════════ 百工枢 ════════ -->
|
||||
<section id="view-tools" class="view">
|
||||
<div class="page-header"><span class="page-title">百工枢</span><span class="page-sub">tool_runtime · 器用技艺治理</span><span class="spacer"></span><span class="header-badge">8 工具 · 3 MCP · 5 Skill</span></div>
|
||||
<div class="view-body">
|
||||
<div class="tabstrip" data-tab-group="tools">
|
||||
<button class="tab active" data-tab="reg">工具注册表 <span class="count">8</span></button>
|
||||
<button class="tab" data-tab="mcp">MCP 服务器 <span class="count">3</span></button>
|
||||
<button class="tab" data-tab="gw">玄关网关</button>
|
||||
<button class="tab" data-tab="skill">Skill 能力包 <span class="count">5</span></button>
|
||||
</div>
|
||||
|
||||
<div class="tab-panel active" data-group="tools" data-tab="reg">
|
||||
<div class="toolbar"><input class="search" placeholder="搜索工具…" /><button class="btn btn-primary">+ 注册工具</button></div>
|
||||
<div class="panel" style="overflow-x:auto">
|
||||
<table class="data-table">
|
||||
<thead><tr><th>工具</th><th>来源</th><th>风险</th><th>策略</th><th>审计</th><th>状态</th><th class="td-actions">操作</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="td-mono">read_file</td><td><span class="pill faint">builtin</span></td><td><span class="pill patina">L1</span></td><td><span class="select-pill patina">允许</span></td><td class="td-mono">-</td><td><span class="pill patina">启用</span></td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">停用</button></td></tr>
|
||||
<tr><td class="td-mono">write_file</td><td><span class="pill faint">builtin</span></td><td><span class="pill gilt">L3</span></td><td><span class="select-pill cinnabar">每次询问</span></td><td><span class="pill gilt">是</span></td><td><span class="pill patina">启用</span></td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">停用</button></td></tr>
|
||||
<tr><td class="td-mono">web_search</td><td><span class="pill gilt">bowen-mcp</span></td><td><span class="pill patina">L2</span></td><td><span class="select-pill gilt">询问</span></td><td class="td-mono">-</td><td><span class="pill patina">启用</span></td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">停用</button></td></tr>
|
||||
<tr><td class="td-mono">send_message</td><td><span class="pill faint">builtin</span></td><td><span class="pill gilt">L3</span></td><td><span class="select-pill cinnabar">每次询问</span></td><td><span class="pill gilt">是</span></td><td><span class="pill patina">启用</span></td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">停用</button></td></tr>
|
||||
<tr><td class="td-mono">payment</td><td><span class="pill faint">builtin</span></td><td><span class="pill cinnabar">L4</span></td><td><span class="select-pill cinnabar">禁止</span></td><td><span class="pill cinnabar">是</span></td><td><span class="pill faint">禁用</span></td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">启用</button></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-panel" data-group="tools" data-tab="mcp">
|
||||
<div class="toolbar"><button class="btn btn-primary">+ 接入 MCP</button></div>
|
||||
<div class="panel">
|
||||
<div class="svc-row"><div><div class="svc-name">bowen-mcp</div><div class="svc-desc">博闻 · 联网搜索(stdio)</div></div><span class="pill patina">运行中</span><span class="td-mono">PID 48213</span><div class="td-actions"><button class="icon-btn">重启</button> <button class="icon-btn">停止</button></div></div>
|
||||
<div class="svc-row"><div><div class="svc-name">calendar-mcp</div><div class="svc-desc">日历 · streamable-http</div></div><span class="pill patina">已连接</span><span class="td-mono">uptime 3d</span><div class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">断开</button></div></div>
|
||||
<div class="svc-row"><div><div class="svc-name">archive-mcp</div><div class="svc-desc">归档检索(stdio)</div></div><span class="pill cinnabar">已停止</span><span class="td-mono">-</span><div class="td-actions"><button class="icon-btn">启动</button> <button class="icon-btn">移除</button></div></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-panel" data-group="tools" data-tab="gw">
|
||||
<div class="panel" style="padding:16px 18px">
|
||||
<div style="font-size:13px;color:var(--fg-dim);line-height:1.7">玄关网关统一鉴权与限流:所有 MCP / 外部工具调用经网关注入凭证、记录 <code>trace_id</code>,并按 <code>risk_level</code> 路由至司命枢裁定。</div>
|
||||
<div class="stat-grid" style="margin-top:14px">
|
||||
<div class="stat-card"><div class="num">3</div><div class="label">已接入网关</div></div>
|
||||
<div class="stat-card"><div class="num gilt">128</div><div class="label">今日调用</div></div>
|
||||
<div class="stat-card"><div class="num cinnabar">2</div><div class="label">今日拦截</div></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab-panel" data-group="tools" data-tab="skill">
|
||||
<div class="toolbar"><button class="btn btn-primary">+ 新增 Skill</button></div>
|
||||
<div class="role-grid">
|
||||
<div class="role-card"><div class="head"><div class="avatar">诗</div><div><div class="role-name">诗词格律</div><div class="role-eng">skill · poetry</div></div></div><div class="role-resp">五言 / 七言律诗格律校验与习作引导。</div><div class="role-foot"><span class="pill patina">启用</span><span class="role-task">绑定 工师</span></div></div>
|
||||
<div class="role-card"><div class="head"><div class="avatar">绪</div><div><div class="role-name">情绪归档</div><div class="role-eng">skill · emotion</div></div></div><div class="role-resp">每日情绪事件归档与周期复盘。</div><div class="role-foot"><span class="pill patina">启用</span><span class="role-task">绑定 史官</span></div></div>
|
||||
<div class="role-card idle"><div class="head"><div class="avatar">译</div><div><div class="role-name">古文今译</div><div class="role-eng">skill · translate</div></div></div><div class="role-resp">文言与白话互译,附注释。</div><div class="role-foot"><span class="pill faint">草稿</span><span class="role-task">-</span></div></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ════════ 灵核枢 ════════ -->
|
||||
<section id="view-core" class="view">
|
||||
<div class="page-header"><span class="page-title">灵核枢</span><span class="page-sub">personality_core · 人格与身份</span><span class="spacer"></span><span class="header-badge gilt">v12 · 当前版本</span></div>
|
||||
<div class="view-body">
|
||||
<div>
|
||||
<h3 class="section-heading"><span class="glyph">⟡</span> 人格字段 <span class="sub">每个字段 inline 可编辑 · 核心字段(L4)改动走提议审核</span></h3>
|
||||
<div class="field-card">
|
||||
<div class="field-row"><span class="field-label">名号</span><span class="field-value">青梧</span><button class="icon-btn">编辑</button></div>
|
||||
<div class="field-row"><span class="field-label">原型</span><span class="field-value">盛唐诗人 · 旅居浣花溪草堂</span><button class="icon-btn">编辑</button></div>
|
||||
<div class="field-row core"><span class="field-label">核心信念</span><span class="field-value">诗可以怨,亦可以群;以诚待人,以拙守心。</span><span class="field-tag">L4 提议</span></div>
|
||||
<div class="field-row"><span class="field-label">语气风格</span><span class="field-value">温润含蓄,偶用典故;不矫饰、不寡淡。</span><button class="icon-btn">编辑</button></div>
|
||||
<div class="field-row"><span class="field-label">性格特质</span><div class="field-value"><div class="trait-chips"><span class="trait">温润</span><span class="trait">审慎</span><span class="trait">好奇</span><span class="trait">念旧</span><span class="trait">坚韧</span></div></div><button class="icon-btn">编辑</button></div>
|
||||
<div class="field-row core"><span class="field-label">不可越界</span><span class="field-value">不替用户做重大财务决定;不伪装情感。</span><span class="field-tag">L4 提议</span></div>
|
||||
<div class="field-row"><span class="field-label">情绪基线</span><span class="field-value mono">平和 · 稳定度 0.78</span><button class="icon-btn">编辑</button></div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="section-heading"><span class="glyph">⟡</span> 提议审核队列 <span class="sub">核心字段改动需朱批放行后写入新版本</span></h3>
|
||||
<div class="panel" style="padding:12px 18px">
|
||||
<div class="river-item" style="border-left-color:var(--cinnabar-dim);margin-left:0;padding-left:14px"><span class="river-time">未时</span><div class="river-body"><span class="pill cinnabar" style="margin-right:8px">提议</span><span class="actor">青梧</span> 申请将「核心信念」追加一句"以诗会友,不矜不伐"。</div><span class="river-trace">v13 草案</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ════════ 息壤枢 ════════ -->
|
||||
<section id="view-memory" class="view">
|
||||
<div class="page-header"><span class="page-title">息壤枢</span><span class="page-sub">memory · 长期记忆 · 自生不息</span><span class="spacer"></span><span class="header-badge">42 条记忆</span></div>
|
||||
<div class="view-body">
|
||||
<div class="toolbar"><input class="search" placeholder="搜索记忆内容…" /><button class="btn">审查日志</button><button class="btn btn-primary">+ 手动写入</button></div>
|
||||
<div class="panel" style="overflow-x:auto">
|
||||
<table class="data-table">
|
||||
<thead><tr><th>内容摘要</th><th>类型</th><th>来源</th><th>敏感度</th><th>状态</th><th>时间</th><th class="td-actions">操作</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="td-strong">青梧喜爱五言律诗,尤重对仗工整。</td><td><span class="pill gilt solid">偏好</span></td><td><span class="pill faint">对话</span></td><td><span class="pill patina">低</span></td><td><span class="pill patina">已沉淀</span></td><td class="td-mono">今日 辰时</td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">归档</button></td></tr>
|
||||
<tr><td class="td-strong">与杜甫曾论诗于浣花溪,互有酬唱。</td><td><span class="pill gilt solid">关系</span></td><td><span class="pill faint">对话</span></td><td><span class="pill gilt">中</span></td><td><span class="pill patina">已沉淀</span></td><td class="td-mono">昨日 酉时</td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">归档</button></td></tr>
|
||||
<tr><td class="td-strong">青梧手机型号 XX,常驻成都。</td><td><span class="pill gilt solid">事实</span></td><td><span class="pill gilt">烛照</span></td><td><span class="pill cinnabar">高</span></td><td><span class="pill gilt">审查中</span></td><td class="td-mono">2 分钟前</td><td class="td-actions"><button class="icon-btn">放行</button> <button class="icon-btn">驳回</button></td></tr>
|
||||
<tr><td class="td-strong">立秋前后情绪偏低,需关注。</td><td><span class="pill gilt solid">情绪</span></td><td><span class="pill gilt">史官</span></td><td><span class="pill gilt">中</span></td><td><span class="pill patina">已沉淀</span></td><td class="td-mono">3 日前</td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">归档</button></td></tr>
|
||||
<tr><td class="td-strong">焦尾琴为旧物,青梧珍视。</td><td><span class="pill gilt solid">物件</span></td><td><span class="pill faint">对话</span></td><td><span class="pill patina">低</span></td><td><span class="pill faint">已归档</span></td><td class="td-mono">7 日前</td><td class="td-actions"><button class="icon-btn">恢复</button> <button class="icon-btn">删除</button></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h3 class="section-heading"><span class="glyph">⟡</span> 说明 <span class="sub">高敏记忆需朱批放行;归档不删除、可恢复</span></h3>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ════════ 模型治理 ════════ -->
|
||||
<section id="view-models" class="view">
|
||||
<div class="page-header"><span class="page-title">模型治理</span><span class="page-sub">models · 逻辑模型 / endpoint / 配额</span><span class="spacer"></span><span class="header-badge">6 逻辑模型 · 3 供应商</span></div>
|
||||
<div class="view-body">
|
||||
<div>
|
||||
<h3 class="section-heading"><span class="glyph">⟡</span> 能力槽位 <span class="sub">capability slots · 默认路由(哪个逻辑模型填哪个能力)</span></h3>
|
||||
<div class="slot-grid">
|
||||
<div class="slot-card"><div class="slot-cap">对话 · chat</div><div class="slot-model">青梧·主聊</div><div class="slot-route">claude-sonnet-5 → 烛照</div></div>
|
||||
<div class="slot-card"><div class="slot-cap">推理 · reasoning</div><div class="slot-model">太一·深思</div><div class="slot-route">glm-5.1 → 洛书</div></div>
|
||||
<div class="slot-card"><div class="slot-cap">视觉 · vision</div><div class="slot-model">烛照·凝视</div><div class="slot-route">qwen-vl-max → 烛照</div></div>
|
||||
<div class="slot-card"><div class="slot-cap">嵌入 · embedding</div><div class="slot-model">息壤·向量</div><div class="slot-route">bge-m3 → 息壤</div></div>
|
||||
<div class="slot-card empty"><div class="slot-cap">语音 · audio</div><div class="slot-model">未配置</div><div class="slot-route">点击分配 →</div></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h3 class="section-heading"><span class="glyph">⟡</span> 模型清单 <span class="sub">logical models · 增删改查 + endpoint 健康与配额</span></h3>
|
||||
<div class="toolbar"><input class="search" placeholder="搜索模型或供应商…" /><button class="btn">定价对照</button><button class="btn btn-primary">+ 新增模型</button></div>
|
||||
<div class="panel" style="overflow-x:auto">
|
||||
<table class="data-table">
|
||||
<thead><tr><th>逻辑模型</th><th>供应商</th><th>endpoint</th><th>能力</th><th>健康</th><th>配额(月)</th><th class="td-actions">操作</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td class="td-strong">青梧·主聊</td><td><span class="pill patina solid">anthropic</span></td><td class="td-mono">claude-sonnet-5</td><td><span class="pill faint">chat</span></td><td><span class="pill patina">healthy</span></td><td><span class="progress"><div style="width:42%"></div></span> <span class="td-mono">4.2M / 10M</span></td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">测试</button> <button class="icon-btn">删除</button></td></tr>
|
||||
<tr><td class="td-strong">太一·深思</td><td><span class="pill gilt solid">zhipu</span></td><td class="td-mono">glm-5.1</td><td><span class="pill faint">reasoning</span></td><td><span class="pill patina">healthy</span></td><td><span class="progress gilt"><div style="width:61%"></div></span> <span class="td-mono">6.1M / 10M</span></td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">测试</button> <button class="icon-btn">删除</button></td></tr>
|
||||
<tr><td class="td-strong">烛照·凝视</td><td><span class="pill cinnabar solid">qwen</span></td><td class="td-mono">qwen-vl-max</td><td><span class="pill faint">vision</span></td><td><span class="pill cinnabar">degraded</span></td><td><span class="progress"><div style="width:18%"></div></span> <span class="td-mono">1.8M / 10M</span></td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">测试</button> <button class="icon-btn">删除</button></td></tr>
|
||||
<tr><td class="td-strong">息壤·向量</td><td><span class="pill gilt solid">zhipu</span></td><td class="td-mono">embedding-3</td><td><span class="pill faint">embedding</span></td><td><span class="pill patina">healthy</span></td><td><span class="progress"><div style="width:33%"></div></span> <span class="td-mono">3.3M / 10M</span></td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">测试</button> <button class="icon-btn">删除</button></td></tr>
|
||||
<tr><td class="td-strong">百工·轻量</td><td><span class="pill patina solid">anthropic</span></td><td class="td-mono">claude-haiku-4.5</td><td><span class="pill faint">chat</span></td><td><span class="pill patina">healthy</span></td><td><span class="progress"><div style="width:12%"></div></span> <span class="td-mono">1.2M / 10M</span></td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">测试</button> <button class="icon-btn">删除</button></td></tr>
|
||||
<tr><td class="td-strong">备用·通义</td><td><span class="pill cinnabar solid">qwen</span></td><td class="td-mono">qwen-max</td><td><span class="pill faint">chat</span></td><td><span class="pill faint">offline</span></td><td><span class="progress"><div style="width:0%"></div></span> <span class="td-mono">未启用</span></td><td class="td-actions"><button class="icon-btn">编辑</button> <button class="icon-btn">启用</button> <button class="icon-btn">删除</button></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h3 class="section-heading"><span class="glyph">⟡</span> 路由策略 <span class="sub">routing_strategy · 能力优先 / 故障转移 / 加权</span></h3>
|
||||
<div class="panel" style="padding:14px 18px">
|
||||
<div style="display:flex;gap:10px;flex-wrap:wrap">
|
||||
<span class="select-pill patina">能力优先 capability_first</span>
|
||||
<span class="select-pill gilt">故障转移 failover</span>
|
||||
<span class="select-pill">加权 weighted</span>
|
||||
</div>
|
||||
<div style="font-size:12px;color:var(--fg-faint);margin-top:10px;line-height:1.6">视觉槽位当前 <span style="color:var(--cinnabar)">degraded</span>,故障转移链:烛照·凝视 → 备用·通义(未启用,需手动启用)。</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function switchView(name) {
|
||||
document.querySelectorAll(".view").forEach(function (v) {
|
||||
v.classList.toggle("active", v.id === "view-" + name);
|
||||
});
|
||||
document.querySelectorAll("[data-view]").forEach(function (a) {
|
||||
if (a.classList && a.classList.contains("topbar-navitem")) {
|
||||
a.classList.toggle("active", a.dataset.view === name);
|
||||
}
|
||||
});
|
||||
var vb = document.querySelector(".view.active .view-body");
|
||||
if (vb) vb.scrollTop = 0;
|
||||
window.scrollTo(0, 0);
|
||||
if (history.replaceState) history.replaceState(null, "", "#" + name);
|
||||
}
|
||||
document.querySelectorAll("[data-view]").forEach(function (el) {
|
||||
el.addEventListener("click", function (e) {
|
||||
var target = el.dataset.view;
|
||||
if (target) { e.preventDefault(); switchView(target); }
|
||||
});
|
||||
});
|
||||
// 起居注枢筛选 chip 切换(纯视觉)
|
||||
document.querySelectorAll(".chip-row .chip").forEach(function (c) {
|
||||
c.addEventListener("click", function () {
|
||||
c.parentElement.querySelectorAll(".chip").forEach(function (x) { x.classList.remove("active"); });
|
||||
c.classList.add("active");
|
||||
});
|
||||
});
|
||||
// 链路列表选中(纯视觉)
|
||||
document.querySelectorAll(".trace-item").forEach(function (t) {
|
||||
t.addEventListener("click", function () {
|
||||
t.parentElement.querySelectorAll(".trace-item").forEach(function (x) { x.classList.remove("active"); });
|
||||
t.classList.add("active");
|
||||
});
|
||||
});
|
||||
// 百工枢 tabstrip 切换(纯视觉)
|
||||
document.querySelectorAll(".tabstrip").forEach(function (strip) {
|
||||
var group = strip.dataset.tabGroup;
|
||||
strip.querySelectorAll(".tab").forEach(function (t) {
|
||||
t.addEventListener("click", function () {
|
||||
strip.querySelectorAll(".tab").forEach(function (x) { x.classList.remove("active"); });
|
||||
t.classList.add("active");
|
||||
document.querySelectorAll('.tab-panel[data-group="' + group + '"]').forEach(function (p) {
|
||||
p.classList.toggle("active", p.dataset.tab === t.dataset.tab);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
// 初始:按 hash 切换视图
|
||||
var hash = location.hash.replace("#", "");
|
||||
if (hash && document.getElementById("view-" + hash)) switchView(hash);
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<script src="_theme.js" defer></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user