dsh-biocore 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/lib/core-worker.js +268 -0
- package/lib/index.js +160 -70
- package/lib/modules/autonomy.js +125 -0
- package/lib/modules/cache-stats.js +48 -0
- package/lib/modules/core-turn.js +24 -6
- package/lib/modules/expression-inject.js +0 -10
- package/lib/modules/expression-refresh.js +0 -9
- package/lib/modules/memory-capture.js +2 -1
- package/lib/modules/memory-inject.js +50 -5
- package/lib/modules/memory-tools.js +7 -4
- package/lib/modules/python-env.js +46 -0
- package/lib/modules/safety-gate.js +0 -3
- package/lib/modules/series.js +54 -0
- package/lib/modules/switch.js +16 -0
- package/lib/py-bridge.js +81 -15
- package/package.json +1 -1
- package/python/biocore_memory/core/config.py +138 -127
- package/python/biocore_memory/engine.py +2653 -2476
- package/python/biocore_memory/recall/embedding.py +129 -0
- package/python/biocore_memory/recall/feedback.py +202 -0
- package/python/biocore_model/preference_drift.py +255 -0
- package/python/biocore_model/tests/__init__.py +1 -0
- package/python/biocore_model/tests/core_mode_ui_check.mjs +63 -0
- package/python/biocore_model/tests/core_status_check.mjs +29 -0
- package/python/biocore_model/tests/dom_safe_check.mjs +22 -0
- package/python/biocore_model/tests/leak_samples_run.py +18 -0
- package/python/biocore_model/tests/orb_ring_check.mjs +20 -0
- package/python/biocore_model/tests/panel_html_check.mjs +63 -0
- package/python/biocore_model/tests/persona_flow_check.mjs +17 -0
- package/python/biocore_model/tests/render_guard_check.mjs +19 -0
- package/python/biocore_model/tests/switch_groups_check.mjs +94 -0
- package/python/biocore_model/tests/tabs_state_check.mjs +24 -0
- package/python/biocore_model/tests/test_affective_labor.py +102 -0
- package/python/biocore_model/tests/test_appraisal.py +137 -0
- package/python/biocore_model/tests/test_appraisal_action.py +55 -0
- package/python/biocore_model/tests/test_arch_convergence.py +35 -0
- package/python/biocore_model/tests/test_attachment_behavior.py +95 -0
- package/python/biocore_model/tests/test_attachment_regulation.py +63 -0
- package/python/biocore_model/tests/test_attachment_state.py +29 -0
- package/python/biocore_model/tests/test_attribution.py +56 -0
- package/python/biocore_model/tests/test_attributor.py +108 -0
- package/python/biocore_model/tests/test_autonomic.py +69 -0
- package/python/biocore_model/tests/test_autonomy_accumulator.py +84 -0
- package/python/biocore_model/tests/test_autonomy_affect.py +62 -0
- package/python/biocore_model/tests/test_autonomy_blame.py +44 -0
- package/python/biocore_model/tests/test_autonomy_caps.py +29 -0
- package/python/biocore_model/tests/test_autonomy_check.py +40 -0
- package/python/biocore_model/tests/test_autonomy_clingy.py +41 -0
- package/python/biocore_model/tests/test_autonomy_cooldown_selfcontact.py +138 -0
- package/python/biocore_model/tests/test_autonomy_frustration.py +42 -0
- package/python/biocore_model/tests/test_autonomy_hourly_limit.py +46 -0
- package/python/biocore_model/tests/test_autonomy_loop.py +64 -0
- package/python/biocore_model/tests/test_autonomy_mode.py +37 -0
- package/python/biocore_model/tests/test_autonomy_model.py +60 -0
- package/python/biocore_model/tests/test_autonomy_model_v2.py +68 -0
- package/python/biocore_model/tests/test_autonomy_module_text.py +104 -0
- package/python/biocore_model/tests/test_autonomy_params.py +163 -0
- package/python/biocore_model/tests/test_autonomy_reason.py +34 -0
- package/python/biocore_model/tests/test_autonomy_self.py +153 -0
- package/python/biocore_model/tests/test_autonomy_send_gate.py +38 -0
- package/python/biocore_model/tests/test_autonomy_silence.py +37 -0
- package/python/biocore_model/tests/test_autonomy_status.py +35 -0
- package/python/biocore_model/tests/test_autonomy_test_trigger.py +24 -0
- package/python/biocore_model/tests/test_autonomy_tick.py +148 -0
- package/python/biocore_model/tests/test_autonomy_v4.py +64 -0
- package/python/biocore_model/tests/test_autonomy_v5.py +43 -0
- package/python/biocore_model/tests/test_autonomy_v7.py +48 -0
- package/python/biocore_model/tests/test_autonomy_v_theta.py +85 -0
- package/python/biocore_model/tests/test_batch1_wiring.py +231 -0
- package/python/biocore_model/tests/test_batch2_wiring.py +231 -0
- package/python/biocore_model/tests/test_batch3_wiring.py +223 -0
- package/python/biocore_model/tests/test_bio_tick.py +202 -0
- package/python/biocore_model/tests/test_boundary.py +183 -0
- package/python/biocore_model/tests/test_boundary_gate.py +295 -0
- package/python/biocore_model/tests/test_brain_split.py +99 -0
- package/python/biocore_model/tests/test_co_recall.py +350 -0
- package/python/biocore_model/tests/test_commitment_extractor.py +197 -0
- package/python/biocore_model/tests/test_compassion_fatigue.py +84 -0
- package/python/biocore_model/tests/test_connection_bids.py +69 -0
- package/python/biocore_model/tests/test_core_bridge.py +88 -0
- package/python/biocore_model/tests/test_core_bridge_episode.py +14 -0
- package/python/biocore_model/tests/test_core_bridge_forget.py +17 -0
- package/python/biocore_model/tests/test_core_bridge_identity.py +15 -0
- package/python/biocore_model/tests/test_core_bridge_media.py +17 -0
- package/python/biocore_model/tests/test_core_bridge_relation.py +17 -0
- package/python/biocore_model/tests/test_core_bridge_summary.py +17 -0
- package/python/biocore_model/tests/test_core_client.py +156 -0
- package/python/biocore_model/tests/test_core_commands.py +146 -0
- package/python/biocore_model/tests/test_core_mode.py +161 -0
- package/python/biocore_model/tests/test_core_state.py +240 -0
- package/python/biocore_model/tests/test_criticality.py +61 -0
- package/python/biocore_model/tests/test_cross_session_copy.py +67 -0
- package/python/biocore_model/tests/test_debug_values.py +169 -0
- package/python/biocore_model/tests/test_defense_mechanisms.py +177 -0
- package/python/biocore_model/tests/test_delta_budget.py +157 -0
- package/python/biocore_model/tests/test_diag_trace.py +201 -0
- package/python/biocore_model/tests/test_directives_compat.py +698 -0
- package/python/biocore_model/tests/test_dissonance.py +97 -0
- package/python/biocore_model/tests/test_drift_sign.py +87 -0
- package/python/biocore_model/tests/test_embedding_fallback.py +277 -0
- package/python/biocore_model/tests/test_embedding_local.py +279 -0
- package/python/biocore_model/tests/test_embedding_mode.py +175 -0
- package/python/biocore_model/tests/test_embedding_modes.py +342 -0
- package/python/biocore_model/tests/test_emotion_geometry.py +114 -0
- package/python/biocore_model/tests/test_emotion_probe.py +214 -0
- package/python/biocore_model/tests/test_emotion_probe_concurrency.py +128 -0
- package/python/biocore_model/tests/test_entity_graph.py +198 -0
- package/python/biocore_model/tests/test_entity_resolve.py +446 -0
- package/python/biocore_model/tests/test_envy.py +173 -0
- package/python/biocore_model/tests/test_exit_or_silence.py +209 -0
- package/python/biocore_model/tests/test_expr_guard.py +1 -0
- package/python/biocore_model/tests/test_expr_intent.py +66 -0
- package/python/biocore_model/tests/test_expr_state.py +66 -0
- package/python/biocore_model/tests/test_expr_template.py +71 -0
- package/python/biocore_model/tests/test_expr_tone.py +41 -0
- package/python/biocore_model/tests/test_extreme_scenarios.py +147 -0
- package/python/biocore_model/tests/test_feedback_flow.py +185 -0
- package/python/biocore_model/tests/test_feedback_guard.py +65 -0
- package/python/biocore_model/tests/test_feedback_llm.py +59 -0
- package/python/biocore_model/tests/test_feedback_llm_inferred.py +140 -0
- package/python/biocore_model/tests/test_feedback_memory.py +63 -0
- package/python/biocore_model/tests/test_feedback_user.py +61 -0
- package/python/biocore_model/tests/test_frustration_curve.py +66 -0
- package/python/biocore_model/tests/test_global_bio_state.py +116 -0
- package/python/biocore_model/tests/test_governance.py +181 -0
- package/python/biocore_model/tests/test_granularity.py +133 -0
- package/python/biocore_model/tests/test_graph_extract.py +224 -0
- package/python/biocore_model/tests/test_graph_recall.py +226 -0
- package/python/biocore_model/tests/test_graph_sqlite.py +298 -0
- package/python/biocore_model/tests/test_growth.py +301 -0
- package/python/biocore_model/tests/test_intent_render.py +60 -0
- package/python/biocore_model/tests/test_intero_regulation.py +224 -0
- package/python/biocore_model/tests/test_intero_style.py +146 -0
- package/python/biocore_model/tests/test_item3_numeric.py +105 -0
- package/python/biocore_model/tests/test_item6_numeric.py +116 -0
- package/python/biocore_model/tests/test_layered_memory.py +174 -0
- package/python/biocore_model/tests/test_leak_guard.py +75 -0
- package/python/biocore_model/tests/test_learning_probe.py +93 -0
- package/python/biocore_model/tests/test_life_loop.py +222 -0
- package/python/biocore_model/tests/test_life_loop_10s.py +131 -0
- package/python/biocore_model/tests/test_local_embedding_health.py +258 -0
- package/python/biocore_model/tests/test_memory_affect_encoding.py +79 -0
- package/python/biocore_model/tests/test_memory_backend.py +332 -0
- package/python/biocore_model/tests/test_memory_dedup.py +316 -0
- package/python/biocore_model/tests/test_memory_dual.py +219 -0
- package/python/biocore_model/tests/test_memory_dual_wiring.py +219 -0
- package/python/biocore_model/tests/test_memory_feedback.py +241 -0
- package/python/biocore_model/tests/test_memory_fixes.py +84 -0
- package/python/biocore_model/tests/test_memory_forgetting.py +58 -0
- package/python/biocore_model/tests/test_memory_inject.py +211 -0
- package/python/biocore_model/tests/test_memory_mood_recall.py +118 -0
- package/python/biocore_model/tests/test_memory_store.py +372 -0
- package/python/biocore_model/tests/test_metacog.py +103 -0
- package/python/biocore_model/tests/test_migrate.py +245 -0
- package/python/biocore_model/tests/test_migrate_store.py +194 -0
- package/python/biocore_model/tests/test_mind_wander.py +65 -0
- package/python/biocore_model/tests/test_mood.py +35 -0
- package/python/biocore_model/tests/test_narrative.py +114 -0
- package/python/biocore_model/tests/test_needs_esteem.py +51 -0
- package/python/biocore_model/tests/test_needs_events.py +205 -0
- package/python/biocore_model/tests/test_needs_sleep.py +54 -0
- package/python/biocore_model/tests/test_noise_bank.py +54 -0
- package/python/biocore_model/tests/test_numeric_schema.py +98 -0
- package/python/biocore_model/tests/test_output_protocol.py +65 -0
- package/python/biocore_model/tests/test_page_debug.py +147 -0
- package/python/biocore_model/tests/test_page_status_autonomy.py +215 -0
- package/python/biocore_model/tests/test_pipeline.py +345 -0
- package/python/biocore_model/tests/test_pipeline_api.py +192 -0
- package/python/biocore_model/tests/test_pipeline_mode.py +222 -0
- package/python/biocore_model/tests/test_plugin_config.py +85 -0
- package/python/biocore_model/tests/test_policy_learning.py +116 -0
- package/python/biocore_model/tests/test_possible_selves.py +88 -0
- package/python/biocore_model/tests/test_predictor.py +227 -0
- package/python/biocore_model/tests/test_preference_drift.py +142 -0
- package/python/biocore_model/tests/test_preset.py +142 -0
- package/python/biocore_model/tests/test_proactive_context.py +70 -0
- package/python/biocore_model/tests/test_proactive_history.py +90 -0
- package/python/biocore_model/tests/test_proactive_memory.py +141 -0
- package/python/biocore_model/tests/test_proactive_send_record.py +88 -0
- package/python/biocore_model/tests/test_probe_contract.py +71 -0
- package/python/biocore_model/tests/test_prospective.py +154 -0
- package/python/biocore_model/tests/test_provider_fallback.py +89 -0
- package/python/biocore_model/tests/test_reconstruction.py +111 -0
- package/python/biocore_model/tests/test_regulation_strategies.py +228 -0
- package/python/biocore_model/tests/test_relation_stage.py +114 -0
- package/python/biocore_model/tests/test_relationship_stage.py +59 -0
- package/python/biocore_model/tests/test_release_140.py +55 -0
- package/python/biocore_model/tests/test_repair_after_boundary.py +249 -0
- package/python/biocore_model/tests/test_reply_limit.py +86 -0
- package/python/biocore_model/tests/test_reply_limit_persist.py +48 -0
- package/python/biocore_model/tests/test_reply_split.py +52 -0
- package/python/biocore_model/tests/test_reply_split_astrbot.py +66 -0
- package/python/biocore_model/tests/test_reply_split_inject.py +53 -0
- package/python/biocore_model/tests/test_rerank.py +229 -0
- package/python/biocore_model/tests/test_rollback.py +175 -0
- package/python/biocore_model/tests/test_runtime.py +175 -0
- package/python/biocore_model/tests/test_runtime_active.py +205 -0
- package/python/biocore_model/tests/test_runtime_pipeline.py +1583 -0
- package/python/biocore_model/tests/test_runtime_proactive.py +231 -0
- package/python/biocore_model/tests/test_scheduler.py +79 -0
- package/python/biocore_model/tests/test_secrecy.py +105 -0
- package/python/biocore_model/tests/test_self_esteem.py +45 -0
- package/python/biocore_model/tests/test_self_intent.py +347 -0
- package/python/biocore_model/tests/test_self_interest.py +183 -0
- package/python/biocore_model/tests/test_self_layer_wiring.py +198 -0
- package/python/biocore_model/tests/test_self_verification.py +113 -0
- package/python/biocore_model/tests/test_situation.py +142 -0
- package/python/biocore_model/tests/test_sleep_circadian.py +41 -0
- package/python/biocore_model/tests/test_social_pain.py +49 -0
- package/python/biocore_model/tests/test_social_repair.py +67 -0
- package/python/biocore_model/tests/test_social_theory.py +78 -0
- package/python/biocore_model/tests/test_source_monitoring.py +204 -0
- package/python/biocore_model/tests/test_speak_like_group.py +36 -0
- package/python/biocore_model/tests/test_stages.py +226 -0
- package/python/biocore_model/tests/test_state_tag.py +86 -0
- package/python/biocore_model/tests/test_template_expr.py +65 -0
- package/python/biocore_model/tests/test_text_inference.py +70 -0
- package/python/biocore_model/tests/test_theta_params.py +115 -0
- package/python/biocore_model/tests/test_topic_control.py +200 -0
- package/python/biocore_model/tests/test_turn_memory.py +105 -0
- package/python/biocore_model/tests/test_turn_memory_panel.py +174 -0
- package/python/biocore_model/tests/test_ui_settings.py +84 -0
- package/python/biocore_model/tests/test_ui_settings_authority.py +179 -0
- package/python/biocore_model/tests/test_user_appraisal_async.py +155 -0
- package/python/biocore_model/tests/test_user_classify.py +122 -0
- package/python/biocore_model/tests/test_value_order.py +117 -0
- package/python/biocore_model/tests/test_voice_bank.py +105 -0
- package/python/biocore_model/tests/test_waiting_sense.py +216 -0
- package/python/biocore_model/tests/test_x_directives.py +101 -0
- package/python/biocore_model/tests/ui_compat_check.mjs +22 -0
- package/python/biocore_model/tests/view_mode_check.mjs +17 -0
- package/python/biocore_runtime/autonomy.py +208 -0
- package/python/biocore_runtime/core_state.py +302 -0
- package/python/biocore_runtime/governance.py +495 -0
- package/python/biocore_runtime/growth.py +528 -0
- package/python/biocore_runtime/pipeline.py +850 -23
- package/python/biocore_runtime/relationship_state.py +214 -0
- package/python/biocore_runtime/self_layer.py +103 -0
- package/python/biocore_runtime/service.py +162 -0
- package/python/biocore_runtime/standby.py +472 -0
- package/ui/panel-layout.js +83 -39
- package/ui/panel.css +885 -743
- package/ui/panel.html +356 -296
- package/ui/panel.js +739 -865
package/ui/panel.html
CHANGED
|
@@ -1,277 +1,295 @@
|
|
|
1
1
|
<!doctype html>
|
|
2
|
-
<!-- BioCore panel layout v27: mobile = FlClash phone (masthead/channels 2x2/pill tabbar); desktop >=1024 = left rail + 12-col 5-row dashboard -->
|
|
3
2
|
<html lang="zh-CN">
|
|
4
3
|
<head>
|
|
5
4
|
<meta charset="utf-8">
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
7
|
-
<
|
|
8
|
-
<
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
|
6
|
+
<meta name="color-scheme" content="light">
|
|
7
|
+
<title>生物核 仪器面板</title>
|
|
8
|
+
<link rel="stylesheet" href="panel.css?v=30">
|
|
9
9
|
</head>
|
|
10
|
-
<body>
|
|
10
|
+
<body data-tab="dashboard" class="is-booting">
|
|
11
|
+
<svg class="sprite" aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg">
|
|
12
|
+
<symbol id="i-dashboard" viewBox="0 0 20 20"><rect x="3" y="3" width="6" height="6" rx="2"/><rect x="11" y="3" width="6" height="6" rx="2"/><rect x="3" y="11" width="6" height="6" rx="2"/><rect x="11" y="11" width="6" height="6" rx="2"/></symbol>
|
|
13
|
+
<symbol id="i-memory" viewBox="0 0 20 20"><path d="M5 3.5h10v13l-5-3-5 3z"/></symbol>
|
|
14
|
+
<symbol id="i-relation" viewBox="0 0 20 20"><path d="M10 16.2s-5.4-3.4-5.4-7a2.9 2.9 0 015.4-1.7 2.9 2.9 0 015.4 1.7c0 3.6-5.4 7-5.4 7z"/></symbol>
|
|
15
|
+
<symbol id="i-settings" viewBox="0 0 20 20"><circle cx="10" cy="10" r="2.6"/><path d="M10 3.2v2M10 14.8v2M3.2 10h2M14.8 10h2M5.2 5.2l1.4 1.4M13.4 13.4l1.4 1.4M14.8 5.2l-1.4 1.4M6.6 13.4l-1.4 1.4"/></symbol>
|
|
16
|
+
<symbol id="i-tools" viewBox="0 0 20 20"><path d="M11.6 4.4a3.2 3.2 0 00-3.9 3.9L3.6 12.4l2 2 4.1-4.1a3.2 3.2 0 003.9-3.9l-1.9 1.9-1.6-1.6 1.6-1.9z"/></symbol>
|
|
17
|
+
<symbol id="i-mood" viewBox="0 0 20 20"><circle cx="10" cy="10" r="6.6"/><path d="M7 11.4c.8 1 1.8 1.5 3 1.5s2.2-.5 3-1.5"/></symbol>
|
|
18
|
+
<symbol id="i-tension" viewBox="0 0 20 20"><path d="M3 10h3l2.2-4.6L11 15l2-5h4"/></symbol>
|
|
19
|
+
<symbol id="i-chart" viewBox="0 0 20 20"><path d="M3 14.5l3.6-4.2 3 2.6L17 5"/><path d="M3 17h14"/></symbol>
|
|
20
|
+
<symbol id="i-bars" viewBox="0 0 20 20"><path d="M3 6h14M3 10h14M3 14h9"/></symbol>
|
|
21
|
+
<symbol id="i-today" viewBox="0 0 20 20"><rect x="3" y="4.5" width="14" height="12" rx="2.4"/><path d="M3 8.5h14M7 3v3M13 3v3"/></symbol>
|
|
22
|
+
<symbol id="i-capacity" viewBox="0 0 20 20"><ellipse cx="10" cy="5.6" rx="6" ry="2.4"/><path d="M4 5.6v8.8c0 1.3 2.7 2.4 6 2.4s6-1.1 6-2.4V5.6"/><path d="M4 10c0 1.3 2.7 2.4 6 2.4s6-1.1 6-2.4"/></symbol>
|
|
23
|
+
<symbol id="i-clock" viewBox="0 0 20 20"><circle cx="10" cy="10" r="6.6"/><path d="M10 6v4.2l2.6 1.6"/></symbol>
|
|
24
|
+
<symbol id="i-route" viewBox="0 0 20 20"><circle cx="5.5" cy="5.5" r="2"/><circle cx="14.5" cy="14.5" r="2"/><path d="M7.5 5.5h4a3 3 0 013 3v4"/></symbol>
|
|
25
|
+
<symbol id="i-cache" viewBox="0 0 20 20"><rect x="3" y="4" width="14" height="4.4" rx="2"/><rect x="3" y="11.6" width="14" height="4.4" rx="2"/></symbol>
|
|
26
|
+
<symbol id="i-persona" viewBox="0 0 20 20"><circle cx="10" cy="6.8" r="2.9"/><path d="M4 15.6c1.2-2.6 3.4-4 6-4s4.8 1.4 6 4"/></symbol>
|
|
27
|
+
<symbol id="i-model" viewBox="0 0 20 20"><rect x="3" y="4.4" width="14" height="11.2" rx="2.4"/><path d="M7.6 8.4l-2 1.8 2 1.8M12.4 8.4l2 1.8-2 1.8"/></symbol>
|
|
28
|
+
<symbol id="i-switch" viewBox="0 0 20 20"><path d="M6.4 4.6h7.2a3.4 3.4 0 010 6.8H6.4a3.4 3.4 0 010-6.8z"/><circle cx="12.6" cy="8" r="1.4"/></symbol>
|
|
29
|
+
<symbol id="i-expression" viewBox="0 0 20 20"><path d="M3.4 6h13M3.4 10h13M3.4 14h7.6"/></symbol>
|
|
30
|
+
<symbol id="i-advanced" viewBox="0 0 20 20"><path d="M3.4 6h13M3.4 10h13M3.4 14h13"/><circle cx="7.4" cy="6" r="1.5"/><circle cx="12" cy="10" r="1.5"/><circle cx="6.4" cy="14" r="1.5"/></symbol>
|
|
31
|
+
<symbol id="i-edit" viewBox="0 0 20 20"><path d="M13.4 3.6l3 3L7 16H4v-3z"/><path d="M11.4 5.6l3 3"/></symbol>
|
|
32
|
+
<symbol id="i-check" viewBox="0 0 20 20"><path d="M4.4 10.4l3.6 3.6 7.6-8.4"/></symbol>
|
|
33
|
+
<symbol id="i-rail" viewBox="0 0 20 20"><rect x="2.6" y="3.6" width="14.8" height="12.8" rx="3"/><path d="M7.6 3.6v12.8M12.6 8l-2 2 2 2"/></symbol>
|
|
34
|
+
<symbol id="i-dot" viewBox="0 0 20 20"><circle cx="10" cy="10" r="4"/></symbol>
|
|
35
|
+
</svg>
|
|
36
|
+
|
|
11
37
|
<aside class="rail" id="rail" aria-label="主导航">
|
|
12
|
-
<
|
|
13
|
-
<
|
|
14
|
-
|
|
38
|
+
<div class="rail-top">
|
|
39
|
+
<span class="rail-mark" aria-hidden="true"><svg viewBox="0 0 20 20"><use href="#i-dot"></use></svg></span>
|
|
40
|
+
<span class="rail-word">BioCore</span>
|
|
41
|
+
<button class="rail-toggle" id="railToggle" type="button" aria-label="收起导航" aria-expanded="true" title="收起导航">
|
|
42
|
+
<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-rail"></use></svg>
|
|
43
|
+
</button>
|
|
44
|
+
</div>
|
|
15
45
|
<nav class="rail-nav" aria-label="页面导航">
|
|
16
|
-
<button class="rail-item active" type="button" data-tab="dashboard"
|
|
17
|
-
<button class="rail-item" type="button" data-tab="memory"
|
|
18
|
-
<button class="rail-item" type="button" data-tab="relation"
|
|
19
|
-
<button class="rail-item" type="button" data-tab="settings"
|
|
20
|
-
<button class="rail-item" type="button" data-tab="tools"
|
|
46
|
+
<button class="rail-item active" type="button" data-tab="dashboard" aria-selected="true" title="仪表盘"><svg class="ico" aria-hidden="true"><use href="#i-dashboard"></use></svg><span>仪表盘</span></button>
|
|
47
|
+
<button class="rail-item" type="button" data-tab="memory" aria-selected="false" title="记忆"><svg class="ico" aria-hidden="true"><use href="#i-memory"></use></svg><span>记忆</span></button>
|
|
48
|
+
<button class="rail-item" type="button" data-tab="relation" aria-selected="false" title="关系"><svg class="ico" aria-hidden="true"><use href="#i-relation"></use></svg><span>关系</span></button>
|
|
49
|
+
<button class="rail-item" type="button" data-tab="settings" aria-selected="false" title="配置"><svg class="ico" aria-hidden="true"><use href="#i-settings"></use></svg><span>配置</span></button>
|
|
50
|
+
<button class="rail-item" type="button" data-tab="tools" aria-selected="false" title="工具"><svg class="ico" aria-hidden="true"><use href="#i-tools"></use></svg><span>工具</span></button>
|
|
21
51
|
</nav>
|
|
52
|
+
<div class="rail-foot"><span class="rail-version" id="railVersion">v0.2.1</span></div>
|
|
22
53
|
</aside>
|
|
54
|
+
|
|
23
55
|
<main class="panel" id="panel">
|
|
24
56
|
<header class="topbar" id="topBar">
|
|
25
|
-
<
|
|
26
|
-
|
|
27
|
-
<button id="layoutReset" class="link-button" type="button" hidden>恢复默认</button>
|
|
28
|
-
</div>
|
|
29
|
-
<button id="layoutFab" class="icon-button" type="button" aria-label="编辑仪表盘" title="编辑仪表盘">
|
|
30
|
-
<svg viewBox="0 0 20 20" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M13.5 3.5l3 3L7 16H4v-3z"/><path d="M11.5 5.5l3 3"/></svg>
|
|
31
|
-
</button>
|
|
32
|
-
<button id="layoutDone" class="icon-button icon-button-accent" type="button" aria-label="完成编辑" title="完成编辑" hidden>
|
|
33
|
-
<svg viewBox="0 0 20 20" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4.5 10.5l3.5 3.5 7-8"/></svg>
|
|
34
|
-
</button>
|
|
35
|
-
</header>
|
|
36
|
-
|
|
37
|
-
<section class="desk" id="deskGrid" aria-label="桌面仪表盘">
|
|
38
|
-
<header class="card desk-card desk-status">
|
|
39
|
-
<div class="orb-wrap desk-orb" aria-hidden="true"><div class="orb"><span class="orb-ring"></span></div></div>
|
|
40
|
-
<div class="desk-status-body">
|
|
41
|
-
<h2>她现在的样子</h2>
|
|
42
|
-
<p class="motivation" id="deskMotivation">正在读取…</p>
|
|
43
|
-
<div class="status" id="deskStatus"><i class="dot"></i><span id="deskStatusText">未连接</span></div>
|
|
44
|
-
</div>
|
|
45
|
-
</header>
|
|
46
|
-
|
|
47
|
-
<section class="card desk-card desk-metric" id="deskMoodCard" data-card-label="心情">
|
|
48
|
-
<div class="desk-metric-head"><span>心情</span><span class="sub-trend"><b id="deskArrowV">→</b><span class="delta" id="deskDeltaV">—</span></span></div>
|
|
49
|
-
<div class="desk-metric-value"><strong id="deskNumV">–</strong><span class="sub-status" id="deskWordV">—</span></div>
|
|
50
|
-
<div class="bar"><i id="deskBarV"></i></div>
|
|
51
|
-
</section>
|
|
52
|
-
|
|
53
|
-
<section class="card desk-card desk-metric" id="deskTensionCard" data-card-label="张力">
|
|
54
|
-
<div class="desk-metric-head"><span>张力</span><span class="sub-trend"><b id="deskArrowTension">→</b><span class="delta" id="deskDeltaTension">—</span></span></div>
|
|
55
|
-
<div class="desk-metric-value"><strong id="deskNumTension">–</strong><span class="sub-status" id="deskWordTension">—</span></div>
|
|
56
|
-
<div class="bar"><i id="deskBarTension"></i></div>
|
|
57
|
-
</section>
|
|
58
|
-
|
|
59
|
-
<nav class="card desk-card desk-seg" id="segTabs" aria-label="分组导航">
|
|
57
|
+
<h1 id="pageTitle">仪表盘</h1>
|
|
58
|
+
<nav class="seg" id="segTabs" aria-label="页面切换">
|
|
60
59
|
<button class="seg-item active" type="button" data-tab="dashboard" aria-selected="true">仪表盘</button>
|
|
61
60
|
<button class="seg-item" type="button" data-tab="memory" aria-selected="false">记忆</button>
|
|
62
61
|
<button class="seg-item" type="button" data-tab="relation" aria-selected="false">关系</button>
|
|
63
62
|
<button class="seg-item" type="button" data-tab="settings" aria-selected="false">配置</button>
|
|
64
63
|
<button class="seg-item" type="button" data-tab="tools" aria-selected="false">工具</button>
|
|
65
64
|
</nav>
|
|
65
|
+
<div class="topbar-actions">
|
|
66
|
+
<button id="layoutReset" class="ghost-button" type="button" hidden>恢复默认</button>
|
|
67
|
+
<button id="layoutFab" class="icon-button" type="button" aria-label="编辑布局" title="编辑布局">
|
|
68
|
+
<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-edit"></use></svg>
|
|
69
|
+
</button>
|
|
70
|
+
<button id="layoutDone" class="icon-button icon-button-accent" type="button" aria-label="完成编辑" title="完成编辑" hidden>
|
|
71
|
+
<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-check"></use></svg>
|
|
72
|
+
</button>
|
|
73
|
+
</div>
|
|
74
|
+
</header>
|
|
66
75
|
|
|
67
|
-
|
|
68
|
-
<span class="desk-switch-label">安全闸</span>
|
|
69
|
-
<label class="desk-switch-control"><input type="checkbox" data-switch="safety_enabled" aria-label="安全闸"><span class="desk-switch-state" data-switch-state="safety_enabled">当前:关</span></label>
|
|
70
|
-
</section>
|
|
71
|
-
|
|
72
|
-
<section class="card desk-card desk-switch" aria-label="主动回复">
|
|
73
|
-
<span class="desk-switch-label">主动回复</span>
|
|
74
|
-
<label class="desk-switch-control"><input type="checkbox" data-switch="proactive_send" aria-label="主动回复"><span class="desk-switch-state" data-switch-state="proactive_send">当前:关</span></label>
|
|
75
|
-
</section>
|
|
76
|
+
<div class="grid" id="grid" aria-label="卡片网格">
|
|
76
77
|
|
|
77
|
-
<section class="card
|
|
78
|
-
<div class="
|
|
79
|
-
|
|
78
|
+
<section class="card status-card span-6 h-208" data-card-id="status" data-card-label="此刻">
|
|
79
|
+
<div class="orb-wrap" aria-hidden="true">
|
|
80
|
+
<div class="orb"><span class="orb-ring"></span></div>
|
|
81
|
+
</div>
|
|
82
|
+
<div class="status-body">
|
|
83
|
+
<h2>她现在的样子</h2>
|
|
84
|
+
<p class="motivation" id="motivation">正在读取…</p>
|
|
85
|
+
<p class="status" id="status"><i class="dot"></i><span id="statusText">未连接</span></p>
|
|
86
|
+
<p class="state-note" id="emptyHint" hidden></p>
|
|
87
|
+
</div>
|
|
88
|
+
<dl class="fact-list">
|
|
89
|
+
<div><dt>语气</dt><dd id="toneWord">–</dd></div>
|
|
90
|
+
<div><dt>关系</dt><dd id="relationWord">–</dd></div>
|
|
91
|
+
<div><dt>自主</dt><dd id="autonomyWord">–</dd></div>
|
|
92
|
+
</dl>
|
|
80
93
|
</section>
|
|
81
94
|
|
|
82
|
-
<section class="card
|
|
83
|
-
<
|
|
84
|
-
|
|
85
|
-
|
|
95
|
+
<section class="card metric-card span-3 h-208" data-card-id="mood" data-card-label="心情">
|
|
96
|
+
<header class="card-head">
|
|
97
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-mood"></use></svg></span>
|
|
98
|
+
<h2>心情</h2>
|
|
99
|
+
<span class="card-trail" id="moodArrow">→</span>
|
|
100
|
+
</header>
|
|
101
|
+
<p class="metric"><strong id="moodValue">–</strong><span class="metric-word" id="moodWord">—</span></p>
|
|
102
|
+
<p class="hint">指数范围 −1 到 1</p>
|
|
103
|
+
<div class="subblock">
|
|
104
|
+
<div class="data-row"><span>相对上一轮</span><b id="moodDelta">—</b></div>
|
|
105
|
+
<div class="bar"><i id="moodBar"></i></div>
|
|
106
|
+
</div>
|
|
86
107
|
</section>
|
|
87
108
|
|
|
88
|
-
<section class="card
|
|
89
|
-
<
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
109
|
+
<section class="card metric-card span-3 h-208" data-card-id="tension" data-card-label="张力">
|
|
110
|
+
<header class="card-head">
|
|
111
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-tension"></use></svg></span>
|
|
112
|
+
<h2>张力</h2>
|
|
113
|
+
<span class="card-trail" id="tensionArrow">→</span>
|
|
114
|
+
</header>
|
|
115
|
+
<p class="metric"><strong id="tensionValue">–</strong><span class="metric-word" id="tensionWord">—</span></p>
|
|
116
|
+
<p class="hint">0.65 以上为阈值区</p>
|
|
117
|
+
<div class="subblock">
|
|
118
|
+
<div class="data-row empty-hide"><span>相对上一轮</span><b id="tensionDelta">—</b></div>
|
|
119
|
+
<div class="bar"><i id="tensionBar"></i><b class="bar-over" id="tensionOver"></b></div>
|
|
120
|
+
</div>
|
|
93
121
|
</section>
|
|
94
122
|
|
|
95
|
-
<section class="card
|
|
96
|
-
<
|
|
97
|
-
|
|
123
|
+
<section class="card channel-card span-3 h-176" data-card-id="warmth" data-card-label="暖">
|
|
124
|
+
<header class="card-head">
|
|
125
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-tension"></use></svg></span>
|
|
126
|
+
<h2>暖</h2>
|
|
127
|
+
<span class="card-trail" id="warmthArrow">→</span>
|
|
128
|
+
</header>
|
|
129
|
+
<p class="metric metric-sm"><strong id="warmthValue">–</strong><span class="metric-word" id="warmthStatus">—</span></p>
|
|
130
|
+
<div class="data-row"><span>相对上一轮</span><b id="warmthDelta">—</b></div>
|
|
131
|
+
<div class="subblock">
|
|
132
|
+
<div class="bar"><i id="warmthBar"></i></div>
|
|
133
|
+
<p class="hint" id="warmthNote">—</p>
|
|
134
|
+
</div>
|
|
98
135
|
</section>
|
|
99
136
|
|
|
100
|
-
<section class="card
|
|
101
|
-
<
|
|
102
|
-
|
|
137
|
+
<section class="card channel-card span-3 h-176" data-card-id="heaviness" data-card-label="沉">
|
|
138
|
+
<header class="card-head">
|
|
139
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-tension"></use></svg></span>
|
|
140
|
+
<h2>沉</h2>
|
|
141
|
+
<span class="card-trail" id="heavinessArrow">→</span>
|
|
142
|
+
</header>
|
|
143
|
+
<p class="metric metric-sm"><strong id="heavinessValue">–</strong><span class="metric-word" id="heavinessStatus">—</span></p>
|
|
144
|
+
<div class="data-row"><span>相对上一轮</span><b id="heavinessDelta">—</b></div>
|
|
145
|
+
<div class="subblock">
|
|
146
|
+
<div class="bar"><i id="heavinessBar"></i></div>
|
|
147
|
+
<p class="hint" id="heavinessNote">—</p>
|
|
148
|
+
</div>
|
|
103
149
|
</section>
|
|
104
150
|
|
|
105
|
-
<section class="card
|
|
106
|
-
<
|
|
107
|
-
|
|
151
|
+
<section class="card channel-card span-3 h-176" data-card-id="clarity" data-card-label="清">
|
|
152
|
+
<header class="card-head">
|
|
153
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-tension"></use></svg></span>
|
|
154
|
+
<h2>清</h2>
|
|
155
|
+
<span class="card-trail" id="clarityArrow">→</span>
|
|
156
|
+
</header>
|
|
157
|
+
<p class="metric metric-sm"><strong id="clarityValue">–</strong><span class="metric-word" id="clarityStatus">—</span></p>
|
|
158
|
+
<div class="data-row"><span>相对上一轮</span><b id="clarityDelta">—</b></div>
|
|
159
|
+
<div class="subblock">
|
|
160
|
+
<div class="bar"><i id="clarityBar"></i></div>
|
|
161
|
+
<p class="hint" id="clarityNote">—</p>
|
|
162
|
+
</div>
|
|
108
163
|
</section>
|
|
109
164
|
|
|
110
|
-
<section class="card
|
|
111
|
-
<
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
165
|
+
<section class="card avg-card span-3 h-176" data-card-id="channels-avg" data-card-label="四通道均值">
|
|
166
|
+
<header class="card-head">
|
|
167
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-bars"></use></svg></span>
|
|
168
|
+
<h2>四通道均值</h2>
|
|
169
|
+
<span class="card-trail" id="avgHint">—</span>
|
|
170
|
+
</header>
|
|
171
|
+
<dl class="data-list">
|
|
172
|
+
<div><dt>绷紧</dt><dd id="avgTension">—</dd></div>
|
|
173
|
+
<div><dt>暖</dt><dd id="avgWarmth">—</dd></div>
|
|
174
|
+
<div><dt>沉</dt><dd id="avgHeaviness">—</dd></div>
|
|
175
|
+
<div><dt>清</dt><dd id="avgClarity">—</dd></div>
|
|
176
|
+
</dl>
|
|
116
177
|
</section>
|
|
117
178
|
|
|
118
|
-
<section class="card
|
|
119
|
-
<
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
179
|
+
<section class="card chart-card span-8 h-232" data-card-id="chart" data-card-label="24 小时曲线">
|
|
180
|
+
<header class="card-head">
|
|
181
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-chart"></use></svg></span>
|
|
182
|
+
<h2>心情 24 小时</h2>
|
|
183
|
+
<span class="card-trail" id="chartHint">—</span>
|
|
184
|
+
</header>
|
|
185
|
+
<div class="well chart-well">
|
|
186
|
+
<canvas id="moodChart" height="150" aria-label="心情 24 小时曲线"></canvas>
|
|
187
|
+
<p class="chart-empty" id="chartEmpty" hidden>还没有采样,聊过一轮之后这里会出现曲线</p>
|
|
188
|
+
</div>
|
|
123
189
|
</section>
|
|
124
190
|
|
|
125
|
-
<section class="card
|
|
126
|
-
<
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
191
|
+
<section class="card now-card span-4 h-232" data-card-id="expression-now" data-card-label="此刻的表达">
|
|
192
|
+
<header class="card-head">
|
|
193
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-expression"></use></svg></span>
|
|
194
|
+
<h2>此刻的表达</h2>
|
|
195
|
+
<span class="card-trail" id="nowHint">只读</span>
|
|
196
|
+
</header>
|
|
197
|
+
<dl class="data-list">
|
|
198
|
+
<div><dt>意图</dt><dd id="nowIntent">—</dd></div>
|
|
199
|
+
<div><dt>长度因子</dt><dd id="nowLength">—</dd></div>
|
|
200
|
+
<div><dt>主动性</dt><dd id="nowInitiative">—</dd></div>
|
|
201
|
+
<div><dt>元认知带</dt><dd id="nowBand">—</dd></div>
|
|
202
|
+
</dl>
|
|
130
203
|
</section>
|
|
131
|
-
</section>
|
|
132
|
-
|
|
133
|
-
<header class="masthead" id="masthead">
|
|
134
|
-
<div class="orb-wrap" aria-hidden="true">
|
|
135
|
-
<div class="orb"><span class="orb-ring"></span></div>
|
|
136
|
-
</div>
|
|
137
|
-
<div class="identity">
|
|
138
|
-
<h1>她现在的样子</h1>
|
|
139
|
-
<p class="motivation" id="motivation">正在读取…</p>
|
|
140
|
-
<div class="status" id="status"><i class="dot"></i><span id="statusText">未连接</span></div>
|
|
141
|
-
<p class="empty-hint" id="emptyHint" hidden></p>
|
|
142
|
-
</div>
|
|
143
|
-
</header>
|
|
144
204
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
<
|
|
149
|
-
<
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
<div class="
|
|
154
|
-
|
|
155
|
-
<div class="sub-value"><strong id="num-v">–</strong></div>
|
|
156
|
-
<div class="figure-caption">心情指数 −1 – 1</div>
|
|
157
|
-
<div class="sub-note" id="moodNote">平稳</div>
|
|
158
|
-
<div class="bar"><i id="bar-v"></i></div>
|
|
159
|
-
</div>
|
|
160
|
-
<div class="subblock">
|
|
161
|
-
<div class="sub-label"><span>张力</span><span class="sub-trend"><b id="arrow-emotion-tension">→</b><span class="delta" id="delta-emotion-tension">—</span></span></div>
|
|
162
|
-
<div class="sub-value"><strong id="num-emotion-tension">–</strong></div>
|
|
163
|
-
<div class="sub-note" id="note-emotion-tension">—</div>
|
|
164
|
-
<div class="bar"><i id="bar-emotion-tension"></i></div>
|
|
165
|
-
</div>
|
|
166
|
-
</div>
|
|
167
|
-
<div class="chips">
|
|
168
|
-
<span class="chip"><b>语气</b><strong id="word-tone">–</strong></span>
|
|
169
|
-
<span class="chip"><b>关系</b><strong id="word-relation">–</strong></span>
|
|
170
|
-
<span class="chip"><b>自主</b><strong id="word-autonomy">–</strong></span>
|
|
205
|
+
<section class="card today-card span-12 h-120" data-card-id="today" data-card-label="今日统计">
|
|
206
|
+
<header class="card-head">
|
|
207
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-today"></use></svg></span>
|
|
208
|
+
<h2>今日</h2>
|
|
209
|
+
<span class="card-trail">本地时间 00:00 起</span>
|
|
210
|
+
</header>
|
|
211
|
+
<div class="triple">
|
|
212
|
+
<div class="triple-col"><span>新增记忆</span><strong id="todayMem">—</strong></div>
|
|
213
|
+
<div class="triple-col"><span>采样轮次</span><strong id="todayTurns">—</strong></div>
|
|
214
|
+
<div class="triple-col"><span>主动发送</span><strong id="todayProactive">—</strong></div>
|
|
171
215
|
</div>
|
|
172
216
|
</section>
|
|
173
217
|
|
|
174
|
-
<
|
|
175
|
-
<
|
|
176
|
-
|
|
177
|
-
<
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
</section>
|
|
184
|
-
<section class="card channel-card" data-card-id="warmth" data-card-label="暖">
|
|
185
|
-
<div class="channel-head"><span class="channel-label">暖</span><span class="sub-trend"><b id="arrow-warmth">→</b><span class="delta" id="delta-warmth">—</span></span></div>
|
|
186
|
-
<div class="channel-value"><strong id="num-warmth">–</strong><span class="sub-status" id="status-warmth">—</span></div>
|
|
187
|
-
<p class="sub-note" id="note-warmth">—</p>
|
|
188
|
-
<div class="bar stat-bar"><i id="bar-warmth"></i><b class="bar-over" id="over-warmth"></b></div>
|
|
189
|
-
<div class="bar-legend"><span><i class="legend-dot"></i>当前</span><span><i class="legend-dot warn"></i>超阈值</span></div>
|
|
190
|
-
</section>
|
|
191
|
-
<section class="card channel-card" data-card-id="heaviness" data-card-label="沉">
|
|
192
|
-
<div class="channel-head"><span class="channel-label">沉</span><span class="sub-trend"><b id="arrow-heaviness">→</b><span class="delta" id="delta-heaviness">—</span></span></div>
|
|
193
|
-
<div class="channel-value"><strong id="num-heaviness">–</strong><span class="sub-status" id="status-heaviness">—</span></div>
|
|
194
|
-
<p class="sub-note" id="note-heaviness">—</p>
|
|
195
|
-
<div class="bar stat-bar"><i id="bar-heaviness"></i><b class="bar-over" id="over-heaviness"></b></div>
|
|
196
|
-
<div class="bar-legend"><span><i class="legend-dot"></i>当前</span><span><i class="legend-dot warn"></i>超阈值</span></div>
|
|
197
|
-
</section>
|
|
198
|
-
<section class="card channel-card" data-card-id="clarity" data-card-label="清">
|
|
199
|
-
<div class="channel-head"><span class="channel-label">清</span><span class="sub-trend"><b id="arrow-clarity">→</b><span class="delta" id="delta-clarity">—</span></span></div>
|
|
200
|
-
<div class="channel-value"><strong id="num-clarity">–</strong><span class="sub-status" id="status-clarity">—</span></div>
|
|
201
|
-
<p class="sub-note" id="note-clarity">—</p>
|
|
202
|
-
<div class="bar stat-bar"><i id="bar-clarity"></i><b class="bar-over" id="over-clarity"></b></div>
|
|
203
|
-
<div class="bar-legend"><span><i class="legend-dot"></i>当前</span><span><i class="legend-dot warn"></i>超阈值</span></div>
|
|
204
|
-
</section>
|
|
205
|
-
</div>
|
|
206
|
-
</div>
|
|
207
|
-
|
|
208
|
-
<section class="card chart-card" data-card-id="chart" data-card-label="心情曲线">
|
|
209
|
-
<div class="card-head">
|
|
210
|
-
<span class="card-icon"><svg viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 13l3.5-4 3 2.5L15 5"/><path d="M3 15h12"/></svg></span>
|
|
211
|
-
<h2>心情 · 24 小时</h2>
|
|
212
|
-
<span class="card-aside" id="chartHint">单线 + 事件点</span>
|
|
218
|
+
<section class="card memory-card span-8 h-232" data-card-id="memory" data-card-label="最近记忆">
|
|
219
|
+
<header class="card-head">
|
|
220
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-memory"></use></svg></span>
|
|
221
|
+
<h2>最近记忆</h2>
|
|
222
|
+
<span class="card-trail" id="memoryHint">共 0 条</span>
|
|
223
|
+
</header>
|
|
224
|
+
<div class="table-head"><span>时间</span><span>类型</span><span>内容</span></div>
|
|
225
|
+
<div class="well list-well">
|
|
226
|
+
<ul class="memory-list" id="memoryList"><li class="empty">还没有记忆,聊几句就会记住</li></ul>
|
|
213
227
|
</div>
|
|
214
|
-
<canvas id="moodChart" height="170"></canvas>
|
|
215
|
-
</section>
|
|
216
|
-
|
|
217
|
-
<section class="card memory-card" data-card-id="memory" data-card-label="最近记忆">
|
|
218
|
-
<div class="section-head"><span class="card-icon"><svg viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 3.5h8v11l-4-2.5-4 2.5z"/></svg></span><h2>最近记忆</h2><span class="hint" id="memoryHint">共 0 条</span></div>
|
|
219
|
-
<ul class="memory-list" id="memoryList"><li class="empty">还没有记忆,聊几句就会记住</li></ul>
|
|
220
228
|
</section>
|
|
221
229
|
|
|
222
|
-
<section class="card
|
|
223
|
-
<
|
|
224
|
-
|
|
225
|
-
<
|
|
226
|
-
<
|
|
227
|
-
|
|
230
|
+
<section class="card capacity-card span-4 h-232" data-card-id="memory-summary" data-card-label="记忆概览">
|
|
231
|
+
<header class="card-head">
|
|
232
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-capacity"></use></svg></span>
|
|
233
|
+
<h2>记忆概览</h2>
|
|
234
|
+
<span class="card-trail" id="capText">0 / 200</span>
|
|
235
|
+
</header>
|
|
236
|
+
<div class="triple">
|
|
237
|
+
<div class="triple-col"><span>共</span><strong id="memTotal">0</strong></div>
|
|
238
|
+
<div class="triple-col"><span>今日新增</span><strong id="memToday">0</strong></div>
|
|
239
|
+
<div class="triple-col"><span>召回次数</span><strong id="memRecall">—</strong></div>
|
|
228
240
|
</div>
|
|
229
|
-
<div class="
|
|
230
|
-
<div class="
|
|
231
|
-
<div class="bar
|
|
241
|
+
<div class="subblock">
|
|
242
|
+
<div class="data-row"><span>容量</span><b id="capFillText">0%</b></div>
|
|
243
|
+
<div class="bar"><i id="capFill"></i></div>
|
|
232
244
|
</div>
|
|
233
245
|
</section>
|
|
234
246
|
|
|
235
|
-
<section class="card
|
|
236
|
-
<
|
|
247
|
+
<section class="card relation-card span-6 h-176" data-card-id="metrics" data-card-label="关系数值">
|
|
248
|
+
<header class="card-head">
|
|
249
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-relation"></use></svg></span>
|
|
250
|
+
<h2>关系数值</h2>
|
|
251
|
+
<span class="card-trail" id="relationHint">只读</span>
|
|
252
|
+
</header>
|
|
237
253
|
<div class="relation" id="metrics"></div>
|
|
238
254
|
</section>
|
|
239
255
|
|
|
240
|
-
<
|
|
241
|
-
<
|
|
242
|
-
<
|
|
243
|
-
<
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
<section class="card runtime-card" data-card-id="runtime" data-card-label="运行时">
|
|
249
|
-
<div class="section-head"><span class="card-icon"><svg viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="9" cy="9" r="6.5"/><path d="M9 5v4l2.5 1.5"/></svg></span><h2>运行时</h2><span class="hint">只读</span></div>
|
|
250
|
-
<div class="triple">
|
|
251
|
-
<div class="triple-col"><strong id="runtimeUptime">—</strong><span>运行时长</span></div>
|
|
252
|
-
<div class="triple-col"><strong id="runtimeTurns">—</strong><span>轮次数</span></div>
|
|
253
|
-
<div class="triple-col"><strong id="runtimeVector">—</strong><span>向量模式</span></div>
|
|
254
|
-
</div>
|
|
256
|
+
<section class="card narrative-card span-6 h-176" data-card-id="narrative" data-card-label="叙事摘要">
|
|
257
|
+
<header class="card-head">
|
|
258
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-expression"></use></svg></span>
|
|
259
|
+
<h2>叙事摘要</h2>
|
|
260
|
+
<span class="card-trail" id="narrativeHint">上一轮</span>
|
|
261
|
+
</header>
|
|
262
|
+
<dl class="data-list" id="narrative"></dl>
|
|
255
263
|
</section>
|
|
256
264
|
|
|
257
|
-
<section class="card persona-card" data-card-id="persona" data-card-label="人设">
|
|
258
|
-
<
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
<
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
<span
|
|
265
|
-
<
|
|
265
|
+
<section class="card persona-card span-6 h-380" data-card-id="persona" data-card-label="人设">
|
|
266
|
+
<header class="card-head">
|
|
267
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-persona"></use></svg></span>
|
|
268
|
+
<h2>人设</h2>
|
|
269
|
+
<span class="card-trail" id="personaStatus">读取中</span>
|
|
270
|
+
</header>
|
|
271
|
+
<label class="field field-block">
|
|
272
|
+
<span>人设提示词</span>
|
|
273
|
+
<textarea id="personaText" class="persona-text" rows="6" placeholder="性格、说话方式、在意什么"></textarea>
|
|
274
|
+
</label>
|
|
275
|
+
<div class="card-actions">
|
|
276
|
+
<button id="personaSave" class="primary-button" type="button">保存并编译</button>
|
|
277
|
+
<button id="personaPersist" class="ghost-button" type="button">设为常驻</button>
|
|
278
|
+
<button id="personaRollback" class="ghost-button" type="button" hidden>恢复原人设</button>
|
|
266
279
|
</div>
|
|
267
|
-
<
|
|
280
|
+
<p class="hint" id="personaHint">编译只改倾向,不写记忆与安全策略</p>
|
|
268
281
|
</section>
|
|
269
282
|
|
|
270
|
-
<section class="card model-card" data-card-id="model" data-card-label="模型与接口">
|
|
271
|
-
<
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
<
|
|
283
|
+
<section class="card model-card span-6 h-380" data-card-id="model" data-card-label="模型与接口">
|
|
284
|
+
<header class="card-head">
|
|
285
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-model"></use></svg></span>
|
|
286
|
+
<h2>模型与接口</h2>
|
|
287
|
+
<span class="card-trail" id="modelStatus">未保存</span>
|
|
288
|
+
</header>
|
|
289
|
+
<p class="group-title">Embedding 向量检索</p>
|
|
290
|
+
<p class="hint">只用于记忆检索,与对话模型无关</p>
|
|
291
|
+
<div class="field-grid">
|
|
292
|
+
<label class="field"><span>模式</span>
|
|
275
293
|
<select id="embeddingMode">
|
|
276
294
|
<option value="auto">auto</option>
|
|
277
295
|
<option value="remote">remote</option>
|
|
@@ -279,128 +297,170 @@
|
|
|
279
297
|
<option value="off">off</option>
|
|
280
298
|
</select>
|
|
281
299
|
</label>
|
|
282
|
-
<label class="field"><span>Base URL</span>
|
|
283
|
-
<input id="modelBaseUrl" type="url" placeholder="https://api.deepseek.com" autocomplete="off">
|
|
284
|
-
</label>
|
|
285
300
|
<label class="field"><span>模型</span>
|
|
286
|
-
<input id="modelName" type="text" placeholder="
|
|
301
|
+
<input id="modelName" type="text" placeholder="BAAI/bge-m3" autocomplete="off">
|
|
287
302
|
</label>
|
|
288
|
-
<label class="field"><span>
|
|
289
|
-
<input id="
|
|
303
|
+
<label class="field field-wide"><span>Base URL</span>
|
|
304
|
+
<input id="modelBaseUrl" type="url" placeholder="https://api.example.com/v1" autocomplete="off">
|
|
290
305
|
</label>
|
|
291
|
-
<label class="field"><span
|
|
292
|
-
<input id="
|
|
306
|
+
<label class="field field-wide"><span>API Key</span>
|
|
307
|
+
<input id="modelApiKey" type="password" placeholder="留空表示沿用已保存的 Key" autocomplete="new-password">
|
|
293
308
|
</label>
|
|
294
309
|
</div>
|
|
295
|
-
<
|
|
296
|
-
<label class="switch-row
|
|
310
|
+
<p class="group-title">Rerank 召回精排</p>
|
|
311
|
+
<label class="switch-row">
|
|
297
312
|
<span class="switch-text">
|
|
298
313
|
<span class="switch-label">启用重排</span>
|
|
299
|
-
<span class="switch-desc">召回后用 rerank
|
|
314
|
+
<span class="switch-desc">召回后用 rerank 精排</span>
|
|
300
315
|
</span>
|
|
301
316
|
<input id="rerankEnabled" type="checkbox">
|
|
302
317
|
</label>
|
|
303
|
-
<div class="
|
|
304
|
-
<label class="field"><span
|
|
305
|
-
<input id="rerankBaseUrl" type="url" placeholder="https://api.jina.ai/v1" autocomplete="off">
|
|
306
|
-
</label>
|
|
307
|
-
<label class="field"><span>Rerank 模型</span>
|
|
318
|
+
<div class="field-grid" id="rerankFields">
|
|
319
|
+
<label class="field"><span>模型</span>
|
|
308
320
|
<input id="rerankModel" type="text" placeholder="jina-reranker-v2-base-multilingual" autocomplete="off">
|
|
309
321
|
</label>
|
|
310
|
-
<label class="field"><span>Rerank API Key</span>
|
|
311
|
-
<input id="rerankApiKey" type="password" placeholder="••••••••" autocomplete="new-password">
|
|
312
|
-
</label>
|
|
313
322
|
<label class="field"><span>Top N</span>
|
|
314
323
|
<input id="rerankTopN" type="number" min="1" max="100" value="20">
|
|
315
324
|
</label>
|
|
325
|
+
<label class="field"><span>Base URL</span>
|
|
326
|
+
<input id="rerankBaseUrl" type="url" placeholder="https://api.example.com/v1" autocomplete="off">
|
|
327
|
+
</label>
|
|
328
|
+
<label class="field"><span>API Key</span>
|
|
329
|
+
<input id="rerankApiKey" type="password" placeholder="留空表示沿用已保存的 Key" autocomplete="new-password">
|
|
330
|
+
</label>
|
|
316
331
|
</div>
|
|
317
|
-
<div class="
|
|
318
|
-
<button id="modelSave"
|
|
319
|
-
<button id="modelTest"
|
|
320
|
-
<button id="rerankTest"
|
|
321
|
-
<span class="hint" id="modelHint">保存后写入配置,重启 BioCore 生效</span>
|
|
332
|
+
<div class="card-actions">
|
|
333
|
+
<button id="modelSave" class="primary-button" type="button">保存设置</button>
|
|
334
|
+
<button id="modelTest" class="ghost-button" type="button">测试 Embedding</button>
|
|
335
|
+
<button id="rerankTest" class="ghost-button" type="button">测试 Rerank</button>
|
|
322
336
|
</div>
|
|
323
337
|
</section>
|
|
324
338
|
|
|
325
|
-
<section class="card switches-card" data-card-id="switches" data-card-label="开关">
|
|
326
|
-
<
|
|
339
|
+
<section class="card switches-card span-8 h-420" data-card-id="switches" data-card-label="开关">
|
|
340
|
+
<header class="card-head">
|
|
341
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-switch"></use></svg></span>
|
|
342
|
+
<h2>开关</h2>
|
|
343
|
+
<span class="card-trail" id="switchHint">写入宿主 flags</span>
|
|
344
|
+
</header>
|
|
327
345
|
<div class="switches" id="switches"></div>
|
|
328
346
|
</section>
|
|
329
347
|
|
|
330
|
-
<section class="card expression-card" data-card-id="expression" data-card-label="表达">
|
|
331
|
-
<
|
|
332
|
-
<span class="card-
|
|
348
|
+
<section class="card expression-card span-4 h-420" data-card-id="expression" data-card-label="表达">
|
|
349
|
+
<header class="card-head">
|
|
350
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-expression"></use></svg></span>
|
|
333
351
|
<h2>表达</h2>
|
|
334
|
-
<span class="
|
|
335
|
-
</
|
|
336
|
-
<label class="switch-row
|
|
352
|
+
<span class="card-trail" id="expressionStatus">长度由人设决定</span>
|
|
353
|
+
</header>
|
|
354
|
+
<label class="switch-row">
|
|
337
355
|
<span class="switch-text">
|
|
338
356
|
<span class="switch-label">长度约束</span>
|
|
339
|
-
<span class="switch-desc"
|
|
357
|
+
<span class="switch-desc">按目标与上限字数约束表达</span>
|
|
340
358
|
</span>
|
|
341
359
|
<input id="expressionToggle" type="checkbox">
|
|
342
360
|
</label>
|
|
343
|
-
<div class="
|
|
361
|
+
<div class="field-grid" id="expressionFields" hidden>
|
|
344
362
|
<label class="field"><span>每句目标字数</span><input id="lengthTarget" type="number" min="1" max="200" value="10"></label>
|
|
345
363
|
<label class="field"><span>上限字数</span><input id="lengthMax" type="number" min="2" max="400" value="30"></label>
|
|
346
364
|
</div>
|
|
347
|
-
<div class="
|
|
348
|
-
<button id="expressionSave" class="
|
|
349
|
-
|
|
365
|
+
<div class="card-actions">
|
|
366
|
+
<button id="expressionSave" class="primary-button" type="button">保存表达</button>
|
|
367
|
+
</div>
|
|
368
|
+
</section>
|
|
369
|
+
|
|
370
|
+
<section class="card advanced-card span-12 h-120" data-card-id="advanced" data-card-label="维护">
|
|
371
|
+
<header class="card-head">
|
|
372
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-advanced"></use></svg></span>
|
|
373
|
+
<h2>维护</h2>
|
|
374
|
+
<span class="card-trail" id="advancedHint">只影响这台浏览器</span>
|
|
375
|
+
</header>
|
|
376
|
+
<div class="advanced-row">
|
|
377
|
+
<div class="data-inline"><span>出口清洗</span><b id="sanitizeReplyText">开</b></div>
|
|
378
|
+
<div class="card-actions">
|
|
379
|
+
<button id="resetLayout" class="ghost-button" type="button">恢复默认布局</button>
|
|
380
|
+
<button id="clearDraft" class="ghost-button" type="button">清空本地草稿</button>
|
|
381
|
+
</div>
|
|
382
|
+
</div>
|
|
383
|
+
</section>
|
|
384
|
+
|
|
385
|
+
<section class="card trace-card span-12 h-280" data-card-id="trace" data-card-label="这一轮为什么">
|
|
386
|
+
<header class="card-head">
|
|
387
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-route"></use></svg></span>
|
|
388
|
+
<h2>这一轮为什么</h2>
|
|
389
|
+
<span class="card-trail" id="traceHint">最近 3 轮</span>
|
|
390
|
+
</header>
|
|
391
|
+
<div class="trace-head-row"><span>时间</span><span>状态变化</span><span>意图</span><span>长度来源</span><span>闸命中</span><span>记忆</span></div>
|
|
392
|
+
<div class="well list-well">
|
|
393
|
+
<div class="trace-list" id="traceList"><p class="state-note">还没有记录</p></div>
|
|
350
394
|
</div>
|
|
351
395
|
</section>
|
|
352
396
|
|
|
353
|
-
<section class="card
|
|
354
|
-
<
|
|
355
|
-
|
|
397
|
+
<section class="card runtime-card span-4 h-200" data-card-id="runtime" data-card-label="运行时">
|
|
398
|
+
<header class="card-head">
|
|
399
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-clock"></use></svg></span>
|
|
400
|
+
<h2>运行时</h2>
|
|
401
|
+
<span class="card-trail" id="runSession">会话 -</span>
|
|
402
|
+
</header>
|
|
403
|
+
<dl class="data-list">
|
|
404
|
+
<div><dt>页面运行</dt><dd id="runtimeUptime">—</dd></div>
|
|
405
|
+
<div><dt>采样点</dt><dd id="runtimeTurns">—</dd></div>
|
|
406
|
+
<div><dt>向量模式</dt><dd id="runtimeVector">—</dd></div>
|
|
407
|
+
<div><dt>状态刷新</dt><dd>5 <small>秒</small></dd></div>
|
|
408
|
+
<div><dt>统计刷新</dt><dd>30 <small>秒</small></dd></div>
|
|
409
|
+
</dl>
|
|
410
|
+
</section>
|
|
411
|
+
|
|
412
|
+
<section class="card diagnostics-card span-8 h-200" data-card-id="diagnostics" data-card-label="缓存与诊断">
|
|
413
|
+
<header class="card-head">
|
|
414
|
+
<span class="card-ico"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><use href="#i-cache"></use></svg></span>
|
|
415
|
+
<h2>缓存与诊断</h2>
|
|
416
|
+
<span class="card-trail">30 秒刷新</span>
|
|
417
|
+
</header>
|
|
418
|
+
<dl class="data-list data-list-inline">
|
|
419
|
+
<div><dt>缓存命中</dt><dd id="cacheStatText">暂无数据</dd></div>
|
|
420
|
+
<div><dt>cache_read / prompt</dt><dd id="cacheDetail">—</dd></div>
|
|
421
|
+
<div><dt>会话</dt><dd id="diagSession">—</dd></div>
|
|
356
422
|
<div><dt>数据目录</dt><dd id="dataDirText">宿主托管</dd></div>
|
|
357
|
-
<div><dt>插件版本</dt><dd id="pluginVersion">0.1
|
|
358
|
-
<div><dt
|
|
423
|
+
<div><dt>插件版本</dt><dd id="pluginVersion">0.2.1</dd></div>
|
|
424
|
+
<div><dt>降级项</dt><dd id="diagDegraded">无</dd></div>
|
|
425
|
+
<div><dt>状态生成</dt><dd id="diagGenerated">—</dd></div>
|
|
426
|
+
<div><dt>适配器版本</dt><dd id="diagAdapter">—</dd></div>
|
|
359
427
|
</dl>
|
|
360
|
-
<div class="advanced-actions">
|
|
361
|
-
<button id="resetLayout" class="advanced-button" type="button">恢复默认布局</button>
|
|
362
|
-
<button id="clearDraft" class="advanced-button" type="button">清空本地草稿</button>
|
|
363
|
-
</div>
|
|
364
428
|
</section>
|
|
365
429
|
</div>
|
|
366
430
|
|
|
367
431
|
<section class="add-cards" id="addCards" hidden>
|
|
368
|
-
<h3
|
|
432
|
+
<h3>已隐藏的卡片</h3>
|
|
369
433
|
<div class="add-list" id="addList"></div>
|
|
370
434
|
</section>
|
|
371
435
|
|
|
372
|
-
<nav class="tabbar" id="tabBar" aria-label="分组导航">
|
|
373
|
-
<button class="tab-item active" type="button" data-tab="dashboard" aria-selected="true">
|
|
374
|
-
<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="3" width="6" height="6" rx="1.5"/><rect x="11" y="3" width="6" height="6" rx="1.5"/><rect x="3" y="11" width="6" height="6" rx="1.5"/><rect x="11" y="11" width="6" height="6" rx="1.5"/></svg>
|
|
375
|
-
<span>仪表盘</span>
|
|
376
|
-
</button>
|
|
377
|
-
<button class="tab-item" type="button" data-tab="memory" aria-selected="false">
|
|
378
|
-
<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 3.5h10v13l-5-3-5 3z"/></svg>
|
|
379
|
-
<span>记忆</span>
|
|
380
|
-
</button>
|
|
381
|
-
<button class="tab-item" type="button" data-tab="relation" aria-selected="false">
|
|
382
|
-
<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 16.2s-5.4-3.4-5.4-7a2.9 2.9 0 015.4-1.7 2.9 2.9 0 015.4 1.7c0 3.6-5.4 7-5.4 7z"/></svg>
|
|
383
|
-
<span>关系</span>
|
|
384
|
-
</button>
|
|
385
|
-
<button class="tab-item" type="button" data-tab="settings" aria-selected="false">
|
|
386
|
-
<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="10" cy="10" r="2.6"/><path d="M10 3.2v2M10 14.8v2M3.2 10h2M14.8 10h2M5.2 5.2l1.4 1.4M13.4 13.4l1.4 1.4M14.8 5.2l-1.4 1.4M6.6 13.4l-1.4 1.4"/></svg>
|
|
387
|
-
<span>配置</span>
|
|
388
|
-
</button>
|
|
389
|
-
<button class="tab-item" type="button" data-tab="tools" aria-selected="false">
|
|
390
|
-
<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M11.6 4.4a3.2 3.2 0 00-4 4l-4.1 4.1 2 2 4.1-4.1a3.2 3.2 0 004-4l-2 2-1.6-1.6 1.6-2.4z"/></svg>
|
|
391
|
-
<span>工具</span>
|
|
392
|
-
</button>
|
|
393
|
-
</nav>
|
|
394
|
-
|
|
395
|
-
<div class="layout-toast" id="layoutToast" role="status" hidden></div>
|
|
396
|
-
|
|
397
436
|
<footer class="footer">
|
|
398
|
-
<span id="footerMeta">会话 -
|
|
399
|
-
<span
|
|
437
|
+
<span id="footerMeta">会话 - 每 5 秒刷新</span>
|
|
438
|
+
<span>只读投影</span>
|
|
400
439
|
</footer>
|
|
440
|
+
|
|
441
|
+
<div class="layout-toast" id="layoutToast" role="status" hidden></div>
|
|
401
442
|
</main>
|
|
402
|
-
|
|
443
|
+
|
|
444
|
+
<nav class="tabbar" id="tabBar" aria-label="页面切换">
|
|
445
|
+
<button class="tab-item active" type="button" data-tab="dashboard" aria-selected="true">
|
|
446
|
+
<svg class="ico" aria-hidden="true"><use href="#i-dashboard"></use></svg><span>仪表盘</span>
|
|
447
|
+
</button>
|
|
448
|
+
<button class="tab-item" type="button" data-tab="memory" aria-selected="false">
|
|
449
|
+
<svg class="ico" aria-hidden="true"><use href="#i-memory"></use></svg><span>记忆</span>
|
|
450
|
+
</button>
|
|
451
|
+
<button class="tab-item" type="button" data-tab="relation" aria-selected="false">
|
|
452
|
+
<svg class="ico" aria-hidden="true"><use href="#i-relation"></use></svg><span>关系</span>
|
|
453
|
+
</button>
|
|
454
|
+
<button class="tab-item" type="button" data-tab="settings" aria-selected="false">
|
|
455
|
+
<svg class="ico" aria-hidden="true"><use href="#i-settings"></use></svg><span>配置</span>
|
|
456
|
+
</button>
|
|
457
|
+
<button class="tab-item" type="button" data-tab="tools" aria-selected="false">
|
|
458
|
+
<svg class="ico" aria-hidden="true"><use href="#i-tools"></use></svg><span>工具</span>
|
|
459
|
+
</button>
|
|
460
|
+
</nav>
|
|
461
|
+
|
|
462
|
+
<script src="panel-layout.js?v=8"></script>
|
|
403
463
|
<script src="trace-view.js?v=5"></script>
|
|
404
|
-
<script src="panel.js?v=
|
|
464
|
+
<script src="panel.js?v=9"></script>
|
|
405
465
|
</body>
|
|
406
|
-
</html>
|
|
466
|
+
</html>
|