上傳檔案到「modules/story-summary」
This commit is contained in:
@@ -358,118 +358,106 @@
|
||||
</div>
|
||||
|
||||
<div id="vector-config-area" class="hidden">
|
||||
<!-- API Key -->
|
||||
<div class="settings-row" style="margin-top:16px">
|
||||
<div class="settings-field full">
|
||||
<label>硅基流动 API Key</label>
|
||||
<input type="password" id="vector-api-key" placeholder="sk-xxx">
|
||||
<div class="settings-hint">
|
||||
💡 <a href="https://siliconflow.cn" target="_blank">硅基流动</a>
|
||||
内置使用的模型完全免费,注册拿 Key 即可。建议完成实名认证以获得更高并发
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 测试连接 -->
|
||||
<div class="settings-row">
|
||||
<div class="settings-field full">
|
||||
<div class="engine-status-row">
|
||||
<div class="engine-status" id="online-api-status">
|
||||
<span class="status-dot"></span>
|
||||
<span class="status-text">未测试</span>
|
||||
<!-- Step 0: API Key -->
|
||||
<div class="neo-card" style="margin-top: 24px;">
|
||||
<div class="neo-card-title">
|
||||
<span class="neo-badge">Step.0</span>
|
||||
<span>填写 API Key</span>
|
||||
</div>
|
||||
<div class="settings-row">
|
||||
<div class="settings-field full">
|
||||
<label>硅基流动 API Key</label>
|
||||
<input type="password" id="vector-api-key" placeholder="sk-xxx">
|
||||
<div class="settings-hint">
|
||||
💡 <a href="https://siliconflow.cn" target="_blank">硅基流动</a>
|
||||
内置使用的模型完全免费。建议实名认证以获得更高并发。
|
||||
</div>
|
||||
<button class="btn btn-sm" id="btn-test-vector-api">测试连接</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 文本过滤规则 -->
|
||||
<div class="settings-collapse" id="filter-rules-collapse">
|
||||
<div class="settings-collapse-header" id="filter-rules-toggle">
|
||||
<span>文本过滤规则 · <strong id="filter-rules-count">0</strong> 条</span>
|
||||
<svg class="collapse-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2">
|
||||
<polyline points="6 9 12 15 18 9"></polyline>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="settings-collapse-content hidden" id="filter-rules-content">
|
||||
<div class="filter-rules-section" style="margin-top:0">
|
||||
<div class="filter-rules-header">
|
||||
<p class="settings-hint" style="margin:0">过滤干扰内容(如思考标签)</p>
|
||||
<button class="btn btn-sm btn-add" id="btn-add-filter-rule">
|
||||
<svg viewBox="0 0 24 24" width="14" height="14" fill="none"
|
||||
stroke="currentColor" stroke-width="2">
|
||||
<line x1="12" y1="5" x2="12" y2="19"></line>
|
||||
<line x1="5" y1="12" x2="19" y2="12"></line>
|
||||
</svg>
|
||||
添加
|
||||
</button>
|
||||
<div class="settings-row">
|
||||
<div class="settings-field full">
|
||||
<div class="engine-status-row" style="margin-top: 0;">
|
||||
<div class="engine-status" id="online-api-status">
|
||||
<span class="status-dot"></span>
|
||||
<span class="status-text">未测试</span>
|
||||
</div>
|
||||
<button class="btn btn-sm" id="btn-test-vector-api">测试连接</button>
|
||||
</div>
|
||||
<div id="filter-rules-list" class="filter-rules-list"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ═══════════════════════════════════════════════════════════ -->
|
||||
<!-- 记忆锚点(L0 文本层)-->
|
||||
<!-- ═══════════════════════════════════════════════════════════ -->
|
||||
<div class="anchor-section">
|
||||
<div class="anchor-header">
|
||||
<div class="anchor-title">
|
||||
<span class="anchor-icon">📌</span>
|
||||
<span>记忆锚点</span>
|
||||
</div>
|
||||
<div class="anchor-hint">从对话中提取叙事锚点(情绪、地点、动作、揭示等),首次提取较慢(约每百楼 3 分钟)</div>
|
||||
<!-- Step 1: Memory Anchors -->
|
||||
<div class="neo-card">
|
||||
<div class="neo-card-title">
|
||||
<span class="neo-badge">Step.1</span>
|
||||
<span>生成记忆锚点</span>
|
||||
</div>
|
||||
<div class="settings-hint" style="margin-bottom: 12px; margin-top: -8px;">
|
||||
从对话中提取叙事锚点(情绪、地点、动作、揭示等)。首次提取较慢(约每百楼 3 分钟)。
|
||||
</div>
|
||||
|
||||
<div class="anchor-stats" id="anchor-stats">
|
||||
<div class="anchor-stat-item">
|
||||
<span class="anchor-stat-label">已提取楼层:</span>
|
||||
<span class="anchor-stat-value"><strong id="anchor-extracted">0</strong></span>
|
||||
</div>
|
||||
<span class="anchor-stat-sep">/</span>
|
||||
<div class="anchor-stat-item">
|
||||
<span class="anchor-stat-label">总 AI 楼层:</span>
|
||||
<span class="anchor-stat-value"><strong id="anchor-total">0</strong></span>
|
||||
</div>
|
||||
<div class="anchor-stat-pending" id="anchor-pending-wrap">
|
||||
<span>(待提取 <strong id="anchor-pending">0</strong> 楼)</span>
|
||||
</div>
|
||||
<span class="anchor-stat-sep">·</span>
|
||||
<div class="anchor-stat-item">
|
||||
<span class="anchor-stat-label">L0 Atoms:</span>
|
||||
<span class="anchor-stat-value"><strong id="anchor-atoms-count">0</strong>
|
||||
条</span>
|
||||
</div>
|
||||
<span class="anchor-stat-sep" id="anchor-extra-sep" style="display:none">·</span>
|
||||
<div class="anchor-stat-item" id="anchor-extra-wrap" style="display:none">
|
||||
<span id="anchor-extra"></span>
|
||||
<!-- Stats -->
|
||||
<div class="settings-row">
|
||||
<div class="settings-field full">
|
||||
<div class="vector-stats" id="anchor-stats">
|
||||
<div class="vector-stat-col">
|
||||
<span class="vector-stat-label">已提取:</span>
|
||||
<span class="vector-stat-value"><strong
|
||||
id="anchor-extracted">0</strong></span>
|
||||
</div>
|
||||
<span class="vector-stat-sep">/</span>
|
||||
<div class="vector-stat-col">
|
||||
<span class="vector-stat-label">总楼层:</span>
|
||||
<span class="vector-stat-value"><strong
|
||||
id="anchor-total">0</strong></span>
|
||||
</div>
|
||||
<div class="vector-stat-col" id="anchor-pending-wrap"
|
||||
style="color: #f59e0b;">
|
||||
(待提取 <strong id="anchor-pending">0</strong>)
|
||||
</div>
|
||||
<span class="vector-stat-sep">·</span>
|
||||
<div class="vector-stat-col">
|
||||
<span class="vector-stat-label">L0 Atoms:</span>
|
||||
<span class="vector-stat-value"><strong
|
||||
id="anchor-atoms-count">0</strong></span>
|
||||
</div>
|
||||
<span class="vector-stat-sep" id="anchor-extra-sep"
|
||||
style="display:none">·</span>
|
||||
<div class="vector-stat-col" id="anchor-extra-wrap" style="display:none">
|
||||
<span id="anchor-extra"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 进度条 -->
|
||||
<div class="anchor-progress hidden" id="anchor-progress">
|
||||
<!-- Progress -->
|
||||
<div class="engine-progress hidden" id="anchor-progress">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-inner"></div>
|
||||
</div>
|
||||
<span class="progress-text">0/0</span>
|
||||
</div>
|
||||
|
||||
<!-- 操作按钮 -->
|
||||
<div class="anchor-actions" id="anchor-action-row">
|
||||
<button class="btn btn-sm btn-p" id="btn-anchor-generate">生成</button>
|
||||
<button class="btn btn-sm btn-del" id="btn-anchor-clear">清空</button>
|
||||
<button class="btn btn-sm hidden" id="btn-anchor-cancel">取消</button>
|
||||
<!-- Buttons -->
|
||||
<div class="settings-btn-row" id="anchor-action-row">
|
||||
<button class="btn btn-sm btn-p" id="btn-anchor-generate"
|
||||
style="flex:1">生成锚点</button>
|
||||
<button class="btn btn-sm btn-del" id="btn-anchor-clear" style="flex:1">清空</button>
|
||||
<button class="btn btn-sm hidden" id="btn-anchor-cancel" style="flex:1">取消</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ═══════════════════════════════════════════════════════════ -->
|
||||
<!-- 当前聊天向量 -->
|
||||
<!-- ═══════════════════════════════════════════════════════════ -->
|
||||
<div class="vector-chat-section">
|
||||
<!-- Step 2: Generate Vectors -->
|
||||
<div class="neo-card">
|
||||
<div class="neo-card-title">
|
||||
<span class="neo-badge">Step.2</span>
|
||||
<span>生成向量</span>
|
||||
</div>
|
||||
|
||||
<div class="settings-row">
|
||||
<div class="settings-field full">
|
||||
<label>当前聊天向量</label>
|
||||
<div class="vector-stats" id="vector-stats">
|
||||
<div class="vector-stat-col">
|
||||
<span class="vector-stat-label">L0 Vectors:</span>
|
||||
@@ -492,13 +480,14 @@
|
||||
<div class="vector-mismatch-warning hidden" id="vector-mismatch-warning">
|
||||
⚠ 需重新生成向量
|
||||
</div>
|
||||
<div class="vector-empty-warning hidden" id="vector-empty-l0-warning">
|
||||
<div class="vector-empty-warning hidden" id="vector-empty-l0-warning"
|
||||
style="font-size: 0.75rem; color: #f59e0b; margin-top: 6px;">
|
||||
⚠ 记忆锚点为空,建议先生成
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 进度条 -->
|
||||
<!-- Progress -->
|
||||
<div class="engine-progress hidden" id="vector-gen-progress">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-inner"></div>
|
||||
@@ -506,31 +495,61 @@
|
||||
<span class="progress-text">0%</span>
|
||||
</div>
|
||||
|
||||
<!-- 操作按钮 -->
|
||||
<!-- Buttons -->
|
||||
<div class="settings-btn-row" id="vector-action-row">
|
||||
<button class="btn btn-sm btn-p" id="btn-gen-vectors">生成向量</button>
|
||||
<button class="btn btn-sm btn-del" id="btn-clear-vectors">清除</button>
|
||||
<button class="btn btn-sm hidden" id="btn-cancel-vectors">取消</button>
|
||||
<button class="btn btn-sm btn-p" id="btn-gen-vectors" style="flex:1">生成向量</button>
|
||||
<button class="btn btn-sm btn-del" id="btn-clear-vectors" style="flex:1">清除</button>
|
||||
<button class="btn btn-sm hidden" id="btn-cancel-vectors" style="flex:1">取消</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Tools & Settings -->
|
||||
<div>
|
||||
<div class="neo-tools-header">
|
||||
<span>设置与工具</span>
|
||||
<span style="opacity:0.5">///</span>
|
||||
</div>
|
||||
|
||||
<div class="settings-hint" style="margin-top:8px">
|
||||
向量化现有数据
|
||||
</div>
|
||||
|
||||
<!-- 导入导出 -->
|
||||
<div class="vector-io-section">
|
||||
<div class="settings-row">
|
||||
<div class="settings-field full">
|
||||
<label>向量迁移</label>
|
||||
<div class="settings-btn-row" style="margin-top:8px">
|
||||
<button class="btn btn-sm" id="btn-export-vectors">导出</button>
|
||||
<button class="btn btn-sm" id="btn-import-vectors">导入</button>
|
||||
</div>
|
||||
<div class="settings-hint" id="vector-io-status"></div>
|
||||
<!-- Filter Rules -->
|
||||
<div class="settings-collapse" id="filter-rules-collapse"
|
||||
style="margin-top:0; margin-bottom: 16px;">
|
||||
<div class="settings-collapse-header" id="filter-rules-toggle">
|
||||
<span>文本过滤规则 · <strong id="filter-rules-count">0</strong> 条</span>
|
||||
<svg class="collapse-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor"
|
||||
stroke-width="2">
|
||||
<polyline points="6 9 12 15 18 9"></polyline>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="settings-collapse-content hidden" id="filter-rules-content"
|
||||
style="border-left: 1px solid var(--bdr); border-right: 1px solid var(--bdr); border-bottom: 1px solid var(--bdr); border-radius: 0 0 6px 6px; margin-top: -2px;">
|
||||
<div class="filter-rules-header">
|
||||
<p class="settings-hint" style="margin:0">过滤干扰内容(如思考标签)</p>
|
||||
<button class="btn btn-sm btn-add" id="btn-add-filter-rule">
|
||||
<svg viewBox="0 0 24 24" width="14" height="14" fill="none"
|
||||
stroke="currentColor" stroke-width="2">
|
||||
<line x1="12" y1="5" x2="12" y2="19"></line>
|
||||
<line x1="5" y1="12" x2="19" y2="12"></line>
|
||||
</svg> 添加
|
||||
</button>
|
||||
</div>
|
||||
<div id="filter-rules-list" class="filter-rules-list"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Import/Export -->
|
||||
<div class="settings-row">
|
||||
<div class="settings-field full">
|
||||
<div class="settings-btn-row" style="margin-top:8px">
|
||||
<button class="btn btn-sm" id="btn-export-vectors"
|
||||
style="flex:1">导出向量数据</button>
|
||||
<button class="btn btn-sm" id="btn-import-vectors"
|
||||
style="flex:1">导入向量数据</button>
|
||||
</div>
|
||||
<div class="settings-hint" id="vector-io-status"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user