mirror of
https://github.com/Wx-2025/ST-Amily2-Chat-Optimisation.git
synced 2026-06-06 03:25:51 +00:00
Compare commits
2 Commits
256b295739
...
6ab18f545e
| Author | SHA1 | Date | |
|---|---|---|---|
| 6ab18f545e | |||
| 9625974d33 |
@@ -1,438 +1,438 @@
|
||||
|
||||
<div class="amily2-header">
|
||||
<button id="amily2_back_to_main_settings" class="menu_button secondary small_button interactable">
|
||||
<i class="fas fa-arrow-left"></i> 返回主殿
|
||||
</button>
|
||||
<div id="amily2_open_neige_tutorial" class="additional-features-title interactable" title="查看内阁使用教程" style="cursor: pointer;">
|
||||
<i class="fas fa-landmark-dome"></i> 内阁密室
|
||||
</div>
|
||||
</div>
|
||||
<hr class="header-divider">
|
||||
|
||||
|
||||
<fieldset class="settings-group">
|
||||
<legend><i class="fas fa-scroll"></i> 皇家史册管理员</legend>
|
||||
|
||||
<div class="control-pair-container">
|
||||
<div class="amily2_settings_block">
|
||||
<label for="amily2_auto_hide_enabled">按阈值自动隐藏</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="amily2_auto_hide_enabled" type="checkbox" />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="amily2_settings_block">
|
||||
<label for="amily2_auto_hide_summarized_enabled">隐藏已总结楼层</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="amily2_auto_hide_summarized_enabled" type="checkbox" />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="amily2_settings_block">
|
||||
<button id="amily2_unhide_all_button" class="menu_button secondary small_button interactable" title="一键取消所有已隐藏的楼层">
|
||||
<i class="fas fa-folder-open"></i>
|
||||
<span>全部可见</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<hr style="border-style: dashed; margin: 10px 0;">
|
||||
|
||||
|
||||
<div class="amily2_settings_block">
|
||||
<label for="amily2_auto_hide_threshold">保留最新消息层数: <span id="amily2_auto_hide_threshold_value">30</span></label>
|
||||
<input id="amily2_auto_hide_threshold" type="range" min="5" max="100" step="1" value="30" />
|
||||
<small class="notes">设定始终在你的上下文中保留的最新消息数量。</small>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="settings-group">
|
||||
<legend><i class="fas fa-pen-ruler"></i> 手动敕令司</legend>
|
||||
|
||||
|
||||
<div class="manual-command-block">
|
||||
<label>隐藏范围:</label>
|
||||
<input type="number" id="amily2_manual_hide_from" class="manual-input" placeholder="起始层">
|
||||
<span class="manual-command-divider">-</span>
|
||||
<input type="number" id="amily2_manual_hide_to" class="manual-input" placeholder="结束层">
|
||||
<button id="amily2_manual_hide_confirm" class="menu_button primary small_button interactable">
|
||||
<i class="fas fa-eye-slash"></i> 确认隐藏
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="manual-command-block">
|
||||
<label>取消隐藏:</label>
|
||||
<input type="number" id="amily2_manual_unhide_from" class="manual-input" placeholder="起始层">
|
||||
<span class="manual-command-divider">-</span>
|
||||
<input type="number" id="amily2_manual_unhide_to" class="manual-input" placeholder="结束层">
|
||||
<button id="amily2_manual_unhide_confirm" class="menu_button accent small_button interactable">
|
||||
<i class="fas fa-eye"></i> 确认取消
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<small class="notes" style="text-align: center; display: block; margin-top: 10px;">
|
||||
提示:若“起始层”留空,则仅操作“结束层”所指定的单层。
|
||||
</small>
|
||||
</fieldset>
|
||||
|
||||
|
||||
<fieldset class="settings-group">
|
||||
<legend><i class="fas fa-gavel"></i> 总结与律法</legend>
|
||||
<div class="lore-config-grid">
|
||||
<!-- Left Column -->
|
||||
<div class="amily2_settings_block grid-left-col">
|
||||
<label>总结写入目标:</label>
|
||||
<div class="radio-group vertical">
|
||||
<input type="radio" id="amily2_target_main" name="amily2_lorebook_target" value="character_main" checked>
|
||||
<label for="amily2_target_main">写入【主世界书】</label>
|
||||
<input type="radio" id="amily2_target_dedicated" name="amily2_lorebook_target" value="dedicated">
|
||||
<label for="amily2_target_dedicated">写入【独立档案】</label>
|
||||
</div>
|
||||
<small class="notes">更推荐使用独立档案,会生成一个新的世界书执行总结逻辑。</small>
|
||||
</div>
|
||||
<!-- Right Column -->
|
||||
<div class="grid-right-col">
|
||||
<div class="amily2_settings_block">
|
||||
<label for="amily2_lore_activation_mode">默认激活模式:</label>
|
||||
<select id="amily2_lore_activation_mode" class="text_pole">
|
||||
<option value="always">🔵 蓝灯 (始终激活)</option>
|
||||
<option value="keyed">🟢 绿灯 (关键词触发)</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="amily2_settings_block">
|
||||
<label for="amily2_lore_insertion_position">默认插入位置:</label>
|
||||
<select id="amily2_lore_insertion_position" class="text_pole">
|
||||
<option value="before_char">角色定义之前</option>
|
||||
<option value="after_char">角色定义之后</option>
|
||||
<option value="before_an">作者注释之前</option>
|
||||
<option value="after_an">作者注释之后</option>
|
||||
<option value="at_depth">@D 注入指定深度</option>
|
||||
</select>
|
||||
</div>
|
||||
<div id="amily2_lore_depth_container" class="amily2_settings_block" style="display: none;">
|
||||
<label for="amily2_lore_depth_input">注入深度:</label>
|
||||
<input id="amily2_lore_depth_input" title="深度" class="text_pole" type="number" name="depth" placeholder="2" min="0" max="9999">
|
||||
</div>
|
||||
<div class="amily2_settings_block">
|
||||
<button id="amily2_save_lore_settings" class="menu_button"><i class="fas fa-save"></i> 确认敕令</button>
|
||||
<small id="amily2_lore_save_status" class="notes" style="text-align: center; width: 100%;"></small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
||||
<fieldset class="settings-group">
|
||||
<legend><i class="fas fa-satellite-dish"></i> Ngms API 调用系统</legend>
|
||||
<small class="notes" style="text-align: center; display: block; margin-bottom: 15px;">
|
||||
独立的API调用系统,可与主系统并行使用,支持全兼容和SillyTavern预设两种模式。
|
||||
</small>
|
||||
|
||||
<div class="amily2_settings_block">
|
||||
<label for="amily2_ngms_enabled">启用Ngms API系统</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="amily2_ngms_enabled" type="checkbox" />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="amily2_settings_block" id="amily2_ngms_content" style="display: none;">
|
||||
<div class="control-group">
|
||||
<label for="amily2_ngms_api_mode">API调用模式:</label>
|
||||
<select id="amily2_ngms_api_mode" class="text_pole">
|
||||
<option value="openai_test">全兼容模式</option>
|
||||
<option value="sillytavern_preset">SillyTavern预设模式</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div id="amily2_ngms_config_panel" style="margin-top: 15px;">
|
||||
<!-- 全兼容模式配置 -->
|
||||
<div id="amily2_ngms_compatible_config">
|
||||
<div class="control-group">
|
||||
<label for="amily2_ngms_api_url">API地址:</label>
|
||||
<input type="text" id="amily2_ngms_api_url" class="text_pole" placeholder="https://api.openai.com/v1" />
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label for="amily2_ngms_api_key">API密钥:</label>
|
||||
<input type="password" id="amily2_ngms_api_key" class="text_pole" placeholder="sk-..." />
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label for="amily2_ngms_model">模型:</label>
|
||||
<div class="select-with-refresh">
|
||||
<select id="amily2_ngms_model_select" class="text_pole" style="flex-grow: 1; display: none;">
|
||||
<option value="">-- 请选择模型 --</option>
|
||||
</select>
|
||||
<input type="text" id="amily2_ngms_model" class="text_pole" placeholder="gpt-4" style="flex-grow: 1;" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- SillyTavern预设模式配置 -->
|
||||
<div id="amily2_ngms_preset_config" style="display: none;">
|
||||
<div class="control-group">
|
||||
<label for="amily2_ngms_tavern_profile">选择SillyTavern预设:</label>
|
||||
<select id="amily2_ngms_tavern_profile" class="text_pole">
|
||||
<option value="">-- 请选择预设 --</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 通用参数配置 -->
|
||||
<div class="control-group">
|
||||
<label for="amily2_ngms_max_tokens">最大令牌数:<span id="amily2_ngms_max_tokens_value">4000</span></label>
|
||||
<input type="range" id="amily2_ngms_max_tokens" min="100" max="100000" step="100" value="4000" />
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label for="amily2_ngms_temperature">温度:<span id="amily2_ngms_temperature_value">0.7</span></label>
|
||||
<input type="range" id="amily2_ngms_temperature" min="0" max="2" step="0.1" value="0.7" />
|
||||
</div>
|
||||
|
||||
<!-- 测试按钮组 - 水平排列 -->
|
||||
<div class="ngms-button-row" style="display: flex; gap: 10px; justify-content: center; margin-top: 15px;">
|
||||
<button id="amily2_ngms_test_connection" class="menu_button primary small_button interactable">
|
||||
<i class="fas fa-plug"></i> 测试连接
|
||||
</button>
|
||||
<button id="amily2_ngms_fetch_models" class="menu_button secondary small_button interactable" title="获取可用模型列表">
|
||||
<i class="fas fa-download"></i> 获取模型
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="settings-group" id="amily2_manual_historiography_bureau">
|
||||
<legend><i class="fas fa-gavel"></i> 手动敕史局</legend>
|
||||
<small class="notes" style="text-align: center; display: block; margin-bottom: 15px;">
|
||||
赋予你选取任意对话、熔铸为永恒史册的至高权力。
|
||||
</small>
|
||||
|
||||
|
||||
<fieldset class="settings-group" style="border-style: dashed;">
|
||||
<legend><EFBFBD> 微言录 (Small Summary)</legend>
|
||||
|
||||
|
||||
<div class="amily2_settings_block">
|
||||
<div class="label-with-button">
|
||||
<label for="amily2_mhb_small_prompt_selector">选择编辑的谕旨:</label>
|
||||
<i id="amily2_mhb_small_expand_editor" class="editor_maximize fa-solid fa-maximize right_menu_button interactable" title="展开编辑器" tabindex="0"></i>
|
||||
</div>
|
||||
<select id="amily2_mhb_small_prompt_selector" class="text_pole">
|
||||
<option value="jailbreak">小总结主要提示词</option>
|
||||
<option value="summary">小总结任务提示词</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="amily2_settings_block prompt-editor-area">
|
||||
<textarea id="amily2_mhb_small_editor" class="text_pole" rows="3"></textarea>
|
||||
<div class="editor-buttons-panel">
|
||||
<button id="amily2_mhb_small_save_button" class="menu_button accent small_button interactable"><i class="fas fa-save"></i> 保存当前</button>
|
||||
<button id="amily2_mhb_small_restore_button" class="menu_button secondary small_button interactable"><i class="fas fa-undo"></i> 恢复默认</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="mhb-controls-wrapper">
|
||||
|
||||
<div class="manual-command-block">
|
||||
<label>手动总结范围:</label>
|
||||
<input type="number" id="amily2_mhb_small_start_floor" class="manual-input" placeholder="起始层">
|
||||
<span class="manual-command-divider">-</span>
|
||||
<input type="number" id="amily2_mhb_small_end_floor" class="manual-input" placeholder="结束层">
|
||||
<button id="amily2_mhb_small_manual_execute" class="menu_button primary small_button interactable">
|
||||
<i class="fas fa-fire"></i> 开始
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="hly-control-block" style="flex-direction: row; justify-content: space-between; align-items: center; margin-top: 10px;">
|
||||
<label for="historiography-tag-extraction-toggle">标签提取</label>
|
||||
<label class="hly-toggle-switch">
|
||||
<input type="checkbox" id="historiography-tag-extraction-toggle" data-setting-key="condensation.tagExtractionEnabled" data-type="boolean">
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div id="historiography-tag-input-container" class="hly-control-block" style="display: none;">
|
||||
<label for="historiography-tag-input">输入标签 (以逗号分隔):</label>
|
||||
<textarea id="historiography-tag-input" class="hly-imperial-brush" rows="2" placeholder="例如: content,details" data-setting-key="condensation.tags" data-type="string"></textarea>
|
||||
</div>
|
||||
<div class="hly-button-group" style="justify-content: flex-start; margin-top: 10px; display: flex; align-items: center; gap: 20px;">
|
||||
<button id="historiography-exclusion-rules-btn" class="hly-action-button">内容排除</button>
|
||||
|
||||
<div class="auto-control-pair" style="margin-bottom: 0;">
|
||||
<label for="historiography_auto_summary_interactive" title="开启后,“自动巡录”将弹出交互窗口确认,而不是在后台静默运行。">交互式巡录:</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="historiography_auto_summary_interactive" type="checkbox" />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="auto-command-block" id="amily2_mhb_auto_command_block">
|
||||
|
||||
<button id="amily2_mhb_small_expedition_execute" class="menu_button primary small_button interactable" title="立即发动一次彻底的总结远征,将所有未归档的历史一次性清算。">
|
||||
<i class="fas fa-flag-checkered"></i> 自动批量
|
||||
</button>
|
||||
|
||||
|
||||
<div class="auto-control-pair">
|
||||
<label for="amily2_mhb_small_auto_enabled" title="在您聊天时,于后台默默守护史册的完整。">静默总结:</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="amily2_mhb_small_auto_enabled" type="checkbox" />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="auto-control-pair">
|
||||
<label for="historiography_write_to_lorebook" title="将生成的总结写入世界书。">存世界书:</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="historiography_write_to_lorebook" type="checkbox" checked />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="auto-control-pair">
|
||||
<label for="historiography_ingest_to_rag" title="将生成的总结存入翰林院进行向量化。">上传向量:</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="historiography_ingest_to_rag" type="checkbox" />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="auto-control-pair">
|
||||
<label for="amily2_mhb_small_trigger_count" title="“自动巡录”和“开始远征”的单次作战楼层数。">总结阈值:</label>
|
||||
<input id="amily2_mhb_small_trigger_count" type="number" min="1" class="text_pole" style="width: 70px;" placeholder="30">
|
||||
</div>
|
||||
|
||||
<div class="auto-control-pair">
|
||||
<label for="historiography_retention_count" title="保留最近的对话层数不参与自动总结。">保留层数:</label>
|
||||
<input id="historiography_retention_count" type="number" min="0" class="text_pole" style="width: 70px;" placeholder="5">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<small class="notes" style="text-align: center; display: block; margin-top: 5px;">
|
||||
【自动批量】将立即清算所有未记录的历史。 【静默总结】则在您聊天时,于后台默默守护史册的完整。
|
||||
</small>
|
||||
|
||||
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<!-- 上下分割线 -->
|
||||
<hr class="header-divider" style="margin: 20px 0;">
|
||||
|
||||
<fieldset class="settings-group" style="border-style: dashed;">
|
||||
<legend>📚 史册归档与回溯</legend>
|
||||
<small class="notes" style="text-align: center; display: block; margin-bottom: 15px;">
|
||||
管理多条时间线的史册,随时封存或重启旧的历史。
|
||||
</small>
|
||||
|
||||
<div class="amily2_settings_block">
|
||||
<button id="amily2_mhb_archive_current" class="menu_button secondary small_button interactable" style="width: 100%; margin-bottom: 10px;">
|
||||
<i class="fas fa-archive"></i> 归档当前【对话流水总帐】并停用
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="mhb-selector-container">
|
||||
<div class="mhb-selector-group">
|
||||
<label for="amily2_mhb_archive_selector">选择要回溯的旧史册</label>
|
||||
<div class="select-with-refresh">
|
||||
<select id="amily2_mhb_archive_selector" class="text_pole" style="flex-grow: 1;">
|
||||
<option value="">请刷新列表...</option>
|
||||
</select>
|
||||
<button id="amily2_mhb_refresh_archives" class="menu_button secondary small_button interactable" title="刷新归档列表">
|
||||
<i class="fas fa-sync-alt"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button id="amily2_mhb_restore_archive" class="menu_button primary small_button interactable" style="margin-top: 10px; width: 100%;">
|
||||
<i class="fas fa-trash-restore"></i> 回溯选中史册 (自动归档当前)
|
||||
</button>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<!-- 上下分割线 -->
|
||||
<hr class="header-divider" style="margin: 20px 0;">
|
||||
|
||||
<fieldset class="settings-group" style="border-style: dashed;">
|
||||
<legend>💎 宏史卷 (史册精炼)</legend>
|
||||
|
||||
|
||||
<div class="amily2_settings_block">
|
||||
<div class="label-with-button">
|
||||
<label for="amily2_mhb_large_prompt_selector">选择编辑的谕旨:</label>
|
||||
<i id="amily2_mhb_large_expand_editor" class="editor_maximize fa-solid fa-maximize right_menu_button interactable" title="展开编辑器" tabindex="0"></i>
|
||||
</div>
|
||||
<select id="amily2_mhb_large_prompt_selector" class="text_pole">
|
||||
<option value="jailbreak">大总结主要提示词</option>
|
||||
<option value="summary">大总结任务提示词)</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="amily2_settings_block prompt-editor-area">
|
||||
<textarea id="amily2_mhb_large_editor" class="text_pole" rows="4"></textarea>
|
||||
<div class="editor-buttons-panel">
|
||||
<button id="amily2_mhb_large_save_button" class="menu_button accent small_button interactable"><i class="fas fa-save"></i> 保存当前</button>
|
||||
<button id="amily2_mhb_large_restore_button" class="menu_button secondary small_button interactable"><i class="fas fa-undo"></i> 恢复默认</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="mhb-controls-wrapper">
|
||||
|
||||
<div class="mhb-selector-container">
|
||||
|
||||
<div class="mhb-selector-group">
|
||||
<label for="amily2_mhb_large_worldbook_selector">目标国史馆 (世界书)</label>
|
||||
<div class="select-with-refresh">
|
||||
<select id="amily2_mhb_large_worldbook_selector" class="text_pole" style="flex-grow: 1;">
|
||||
<option value="">刷新列表...</option>
|
||||
</select>
|
||||
<button id="amily2_mhb_large_refresh_worldbooks" class="menu_button secondary small_button interactable" title="刷新世界书列表">
|
||||
<i class="fas fa-atlas"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mhb-selector-group">
|
||||
<label for="amily2_mhb_large_lore_selector">待精炼的史册条目</label>
|
||||
<div class="select-with-refresh">
|
||||
<select id="amily2_mhb_large_lore_selector" class="text_pole" style="flex-grow: 1;">
|
||||
<option value="">请先选择世界书...</option>
|
||||
</select>
|
||||
<button id="amily2_mhb_large_refresh_lores" class="menu_button secondary small_button interactable" title="刷新所选世界书的史册列表">
|
||||
<i class="fas fa-sync-alt"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<button id="amily2_mhb_large_refine_execute" class="menu_button primary small_button interactable" style="margin-top: 15px; width: 100%;">
|
||||
<i class="fas fa-gem"></i> 开始精炼
|
||||
</button>
|
||||
|
||||
<div class="auto-control-pair" style="margin-top: 10px; justify-content: center;">
|
||||
<label for="amily2_vectorize_summary_content">将前段的大总结内容自动送去向量化。</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="amily2_vectorize_summary_content" type="checkbox" />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
||||
<div id="amily2_mhb_hidden_prompts" style="display:none;">
|
||||
<textarea id="amily2_mhb_small_jailbreak_prompt"></textarea>
|
||||
<textarea id="amily2_mhb_small_summary_prompt"></textarea>
|
||||
<textarea id="amily2_mhb_large_jailbreak_prompt"></textarea>
|
||||
<textarea id="amily2_mhb_large_summary_prompt"></textarea>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<div class="amily2-header">
|
||||
<button id="amily2_back_to_main_settings" class="menu_button secondary small_button interactable">
|
||||
<i class="fas fa-arrow-left"></i> 返回主殿
|
||||
</button>
|
||||
<div id="amily2_open_neige_tutorial" class="additional-features-title interactable" title="查看内阁使用教程" style="cursor: pointer;">
|
||||
<i class="fas fa-landmark-dome"></i> 内阁密室
|
||||
</div>
|
||||
</div>
|
||||
<hr class="header-divider">
|
||||
|
||||
|
||||
<fieldset class="settings-group">
|
||||
<legend><i class="fas fa-scroll"></i> 皇家史册管理员</legend>
|
||||
|
||||
<div class="control-pair-container">
|
||||
<div class="amily2_settings_block">
|
||||
<label for="amily2_auto_hide_enabled">按阈值自动隐藏</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="amily2_auto_hide_enabled" type="checkbox" />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="amily2_settings_block">
|
||||
<label for="amily2_auto_hide_summarized_enabled">隐藏已总结楼层</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="amily2_auto_hide_summarized_enabled" type="checkbox" />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="amily2_settings_block">
|
||||
<button id="amily2_unhide_all_button" class="menu_button secondary small_button interactable" title="一键取消所有已隐藏的楼层">
|
||||
<i class="fas fa-folder-open"></i>
|
||||
<span>全部可见</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<hr style="border-style: dashed; margin: 10px 0;">
|
||||
|
||||
|
||||
<div class="amily2_settings_block">
|
||||
<label for="amily2_auto_hide_threshold">保留最新消息层数: <span id="amily2_auto_hide_threshold_value">30</span></label>
|
||||
<input id="amily2_auto_hide_threshold" type="range" min="5" max="100" step="1" value="30" />
|
||||
<small class="notes">设定始终在你的上下文中保留的最新消息数量。</small>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset class="settings-group">
|
||||
<legend><i class="fas fa-pen-ruler"></i> 手动敕令司</legend>
|
||||
|
||||
|
||||
<div class="manual-command-block">
|
||||
<label>隐藏范围:</label>
|
||||
<input type="number" id="amily2_manual_hide_from" class="manual-input" placeholder="起始层">
|
||||
<span class="manual-command-divider">-</span>
|
||||
<input type="number" id="amily2_manual_hide_to" class="manual-input" placeholder="结束层">
|
||||
<button id="amily2_manual_hide_confirm" class="menu_button primary small_button interactable">
|
||||
<i class="fas fa-eye-slash"></i> 确认隐藏
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="manual-command-block">
|
||||
<label>取消隐藏:</label>
|
||||
<input type="number" id="amily2_manual_unhide_from" class="manual-input" placeholder="起始层">
|
||||
<span class="manual-command-divider">-</span>
|
||||
<input type="number" id="amily2_manual_unhide_to" class="manual-input" placeholder="结束层">
|
||||
<button id="amily2_manual_unhide_confirm" class="menu_button accent small_button interactable">
|
||||
<i class="fas fa-eye"></i> 确认取消
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<small class="notes" style="text-align: center; display: block; margin-top: 10px;">
|
||||
提示:若“起始层”留空,则仅操作“结束层”所指定的单层。
|
||||
</small>
|
||||
</fieldset>
|
||||
|
||||
|
||||
<fieldset class="settings-group">
|
||||
<legend><i class="fas fa-gavel"></i> 总结与律法</legend>
|
||||
<div class="lore-config-grid">
|
||||
<!-- Left Column -->
|
||||
<div class="amily2_settings_block grid-left-col">
|
||||
<label>总结写入目标:</label>
|
||||
<div class="radio-group vertical">
|
||||
<input type="radio" id="amily2_target_main" name="amily2_lorebook_target" value="character_main" checked>
|
||||
<label for="amily2_target_main">写入【主世界书】</label>
|
||||
<input type="radio" id="amily2_target_dedicated" name="amily2_lorebook_target" value="dedicated">
|
||||
<label for="amily2_target_dedicated">写入【独立档案】</label>
|
||||
</div>
|
||||
<small class="notes">更推荐使用独立档案,会生成一个新的世界书执行总结逻辑。</small>
|
||||
</div>
|
||||
<!-- Right Column -->
|
||||
<div class="grid-right-col">
|
||||
<div class="amily2_settings_block">
|
||||
<label for="amily2_lore_activation_mode">默认激活模式:</label>
|
||||
<select id="amily2_lore_activation_mode" class="text_pole">
|
||||
<option value="always">🔵 蓝灯 (始终激活)</option>
|
||||
<option value="keyed">🟢 绿灯 (关键词触发)</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="amily2_settings_block">
|
||||
<label for="amily2_lore_insertion_position">默认插入位置:</label>
|
||||
<select id="amily2_lore_insertion_position" class="text_pole">
|
||||
<option value="before_char">角色定义之前</option>
|
||||
<option value="after_char">角色定义之后</option>
|
||||
<option value="before_an">作者注释之前</option>
|
||||
<option value="after_an">作者注释之后</option>
|
||||
<option value="at_depth">@D 注入指定深度</option>
|
||||
</select>
|
||||
</div>
|
||||
<div id="amily2_lore_depth_container" class="amily2_settings_block" style="display: none;">
|
||||
<label for="amily2_lore_depth_input">注入深度:</label>
|
||||
<input id="amily2_lore_depth_input" title="深度" class="text_pole" type="number" name="depth" placeholder="2" min="0" max="9999">
|
||||
</div>
|
||||
<div class="amily2_settings_block">
|
||||
<button id="amily2_save_lore_settings" class="menu_button"><i class="fas fa-save"></i> 确认敕令</button>
|
||||
<small id="amily2_lore_save_status" class="notes" style="text-align: center; width: 100%;"></small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
||||
<fieldset class="settings-group">
|
||||
<legend><i class="fas fa-satellite-dish"></i> Ngms API 调用系统</legend>
|
||||
<small class="notes" style="text-align: center; display: block; margin-bottom: 15px;">
|
||||
独立的API调用系统,可与主系统并行使用,支持全兼容和SillyTavern预设两种模式。
|
||||
</small>
|
||||
|
||||
<div class="amily2_settings_block">
|
||||
<label for="amily2_ngms_enabled">启用Ngms API系统</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="amily2_ngms_enabled" type="checkbox" />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="amily2_settings_block" id="amily2_ngms_content" style="display: none;">
|
||||
<div class="control-group">
|
||||
<label for="amily2_ngms_api_mode">API调用模式:</label>
|
||||
<select id="amily2_ngms_api_mode" class="text_pole">
|
||||
<option value="openai_test">全兼容模式</option>
|
||||
<option value="sillytavern_preset">SillyTavern预设模式</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div id="amily2_ngms_config_panel" style="margin-top: 15px;">
|
||||
<!-- 全兼容模式配置 -->
|
||||
<div id="amily2_ngms_compatible_config">
|
||||
<div class="control-group">
|
||||
<label for="amily2_ngms_api_url">API地址:</label>
|
||||
<input type="text" id="amily2_ngms_api_url" class="text_pole" placeholder="https://api.openai.com/v1" />
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label for="amily2_ngms_api_key">API密钥:</label>
|
||||
<input type="password" id="amily2_ngms_api_key" class="text_pole" placeholder="sk-..." />
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label for="amily2_ngms_model">模型:</label>
|
||||
<div class="select-with-refresh">
|
||||
<select id="amily2_ngms_model_select" class="text_pole" style="flex-grow: 1; display: none;">
|
||||
<option value="">-- 请选择模型 --</option>
|
||||
</select>
|
||||
<input type="text" id="amily2_ngms_model" class="text_pole" placeholder="gpt-4" style="flex-grow: 1;" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- SillyTavern预设模式配置 -->
|
||||
<div id="amily2_ngms_preset_config" style="display: none;">
|
||||
<div class="control-group">
|
||||
<label for="amily2_ngms_tavern_profile">选择SillyTavern预设:</label>
|
||||
<select id="amily2_ngms_tavern_profile" class="text_pole">
|
||||
<option value="">-- 请选择预设 --</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 通用参数配置 -->
|
||||
<div class="control-group">
|
||||
<label for="amily2_ngms_max_tokens">最大令牌数:<span id="amily2_ngms_max_tokens_value">4000</span></label>
|
||||
<input type="range" id="amily2_ngms_max_tokens" min="100" max="100000" step="100" value="4000" />
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label for="amily2_ngms_temperature">温度:<span id="amily2_ngms_temperature_value">0.7</span></label>
|
||||
<input type="range" id="amily2_ngms_temperature" min="0" max="2" step="0.1" value="0.7" />
|
||||
</div>
|
||||
|
||||
<!-- 测试按钮组 - 水平排列 -->
|
||||
<div class="ngms-button-row" style="display: flex; gap: 10px; justify-content: center; margin-top: 15px;">
|
||||
<button id="amily2_ngms_test_connection" class="menu_button primary small_button interactable">
|
||||
<i class="fas fa-plug"></i> 测试连接
|
||||
</button>
|
||||
<button id="amily2_ngms_fetch_models" class="menu_button secondary small_button interactable" title="获取可用模型列表">
|
||||
<i class="fas fa-download"></i> 获取模型
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="settings-group" id="amily2_manual_historiography_bureau">
|
||||
<legend><i class="fas fa-gavel"></i> 手动敕史局</legend>
|
||||
<small class="notes" style="text-align: center; display: block; margin-bottom: 15px;">
|
||||
赋予你选取任意对话、熔铸为永恒史册的至高权力。
|
||||
</small>
|
||||
|
||||
|
||||
<fieldset class="settings-group" style="border-style: dashed;">
|
||||
<legend><EFBFBD> 微言录 (Small Summary)</legend>
|
||||
|
||||
|
||||
<div class="amily2_settings_block">
|
||||
<div class="label-with-button">
|
||||
<label for="amily2_mhb_small_prompt_selector">选择编辑的谕旨:</label>
|
||||
<i id="amily2_mhb_small_expand_editor" class="editor_maximize fa-solid fa-maximize right_menu_button interactable" title="展开编辑器" tabindex="0"></i>
|
||||
</div>
|
||||
<select id="amily2_mhb_small_prompt_selector" class="text_pole">
|
||||
<option value="jailbreak">小总结主要提示词</option>
|
||||
<option value="summary">小总结任务提示词</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="amily2_settings_block prompt-editor-area">
|
||||
<textarea id="amily2_mhb_small_editor" class="text_pole" rows="3"></textarea>
|
||||
<div class="editor-buttons-panel">
|
||||
<button id="amily2_mhb_small_save_button" class="menu_button accent small_button interactable"><i class="fas fa-save"></i> 保存当前</button>
|
||||
<button id="amily2_mhb_small_restore_button" class="menu_button secondary small_button interactable"><i class="fas fa-undo"></i> 恢复默认</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="mhb-controls-wrapper">
|
||||
|
||||
<div class="manual-command-block">
|
||||
<label>手动总结范围:</label>
|
||||
<input type="number" id="amily2_mhb_small_start_floor" class="manual-input" placeholder="起始层">
|
||||
<span class="manual-command-divider">-</span>
|
||||
<input type="number" id="amily2_mhb_small_end_floor" class="manual-input" placeholder="结束层">
|
||||
<button id="amily2_mhb_small_manual_execute" class="menu_button primary small_button interactable">
|
||||
<i class="fas fa-fire"></i> 开始
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="hly-control-block" style="flex-direction: row; justify-content: space-between; align-items: center; margin-top: 10px;">
|
||||
<label for="historiography-tag-extraction-toggle">标签提取</label>
|
||||
<label class="hly-toggle-switch">
|
||||
<input type="checkbox" id="historiography-tag-extraction-toggle" data-setting-key="condensation.tagExtractionEnabled" data-type="boolean">
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div id="historiography-tag-input-container" class="hly-control-block" style="display: none;">
|
||||
<label for="historiography-tag-input">输入标签 (以逗号分隔):</label>
|
||||
<textarea id="historiography-tag-input" class="hly-imperial-brush" rows="2" placeholder="例如: content,details" data-setting-key="condensation.tags" data-type="string"></textarea>
|
||||
</div>
|
||||
<div class="hly-button-group" style="justify-content: flex-start; margin-top: 10px; display: flex; align-items: center; gap: 20px;">
|
||||
<button id="historiography-exclusion-rules-btn" class="hly-action-button">内容排除</button>
|
||||
|
||||
<div class="auto-control-pair" style="margin-bottom: 0;">
|
||||
<label for="historiography_auto_summary_interactive" title="开启后,“自动巡录”将弹出交互窗口确认,而不是在后台静默运行。">交互式巡录:</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="historiography_auto_summary_interactive" type="checkbox" />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="auto-command-block" id="amily2_mhb_auto_command_block">
|
||||
|
||||
<button id="amily2_mhb_small_expedition_execute" class="menu_button primary small_button interactable" title="立即发动一次彻底的总结远征,将所有未归档的历史一次性清算。">
|
||||
<i class="fas fa-flag-checkered"></i> 自动批量
|
||||
</button>
|
||||
|
||||
|
||||
<div class="auto-control-pair">
|
||||
<label for="amily2_mhb_small_auto_enabled" title="在您聊天时,于后台默默守护史册的完整。">静默总结:</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="amily2_mhb_small_auto_enabled" type="checkbox" />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="auto-control-pair">
|
||||
<label for="historiography_write_to_lorebook" title="将生成的总结写入世界书。">存世界书:</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="historiography_write_to_lorebook" type="checkbox" checked />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="auto-control-pair">
|
||||
<label for="historiography_ingest_to_rag" title="将生成的总结存入翰林院进行向量化。">上传向量:</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="historiography_ingest_to_rag" type="checkbox" />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="auto-control-pair">
|
||||
<label for="amily2_mhb_small_trigger_count" title="“自动巡录”和“开始远征”的单次作战楼层数。">总结阈值:</label>
|
||||
<input id="amily2_mhb_small_trigger_count" type="number" min="1" class="text_pole" style="width: 70px;" placeholder="30">
|
||||
</div>
|
||||
|
||||
<div class="auto-control-pair">
|
||||
<label for="historiography_retention_count" title="保留最近的对话层数不参与自动总结。">保留层数:</label>
|
||||
<input id="historiography_retention_count" type="number" min="0" class="text_pole" style="width: 70px;" placeholder="5">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<small class="notes" style="text-align: center; display: block; margin-top: 5px;">
|
||||
【自动批量】将立即清算所有未记录的历史。 【静默总结】则在您聊天时,于后台默默守护史册的完整。
|
||||
</small>
|
||||
|
||||
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<!-- 上下分割线 -->
|
||||
<hr class="header-divider" style="margin: 20px 0;">
|
||||
|
||||
<fieldset class="settings-group" style="border-style: dashed;">
|
||||
<legend>📚 史册归档与回溯</legend>
|
||||
<small class="notes" style="text-align: center; display: block; margin-bottom: 15px;">
|
||||
管理多条时间线的史册,随时封存或重启旧的历史。
|
||||
</small>
|
||||
|
||||
<div class="amily2_settings_block">
|
||||
<button id="amily2_mhb_archive_current" class="menu_button secondary small_button interactable" style="width: 100%; margin-bottom: 10px;">
|
||||
<i class="fas fa-archive"></i> 归档当前【对话流水总帐】并停用
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="mhb-selector-container">
|
||||
<div class="mhb-selector-group">
|
||||
<label for="amily2_mhb_archive_selector">选择要回溯的旧史册</label>
|
||||
<div class="select-with-refresh">
|
||||
<select id="amily2_mhb_archive_selector" class="text_pole" style="flex-grow: 1;">
|
||||
<option value="">请刷新列表...</option>
|
||||
</select>
|
||||
<button id="amily2_mhb_refresh_archives" class="menu_button secondary small_button interactable" title="刷新归档列表">
|
||||
<i class="fas fa-sync-alt"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button id="amily2_mhb_restore_archive" class="menu_button primary small_button interactable" style="margin-top: 10px; width: 100%;">
|
||||
<i class="fas fa-trash-restore"></i> 回溯选中史册 (自动归档当前)
|
||||
</button>
|
||||
|
||||
</fieldset>
|
||||
|
||||
<!-- 上下分割线 -->
|
||||
<hr class="header-divider" style="margin: 20px 0;">
|
||||
|
||||
<fieldset class="settings-group" style="border-style: dashed;">
|
||||
<legend>💎 宏史卷 (史册精炼)</legend>
|
||||
|
||||
|
||||
<div class="amily2_settings_block">
|
||||
<div class="label-with-button">
|
||||
<label for="amily2_mhb_large_prompt_selector">选择编辑的谕旨:</label>
|
||||
<i id="amily2_mhb_large_expand_editor" class="editor_maximize fa-solid fa-maximize right_menu_button interactable" title="展开编辑器" tabindex="0"></i>
|
||||
</div>
|
||||
<select id="amily2_mhb_large_prompt_selector" class="text_pole">
|
||||
<option value="jailbreak">大总结主要提示词</option>
|
||||
<option value="summary">大总结任务提示词)</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="amily2_settings_block prompt-editor-area">
|
||||
<textarea id="amily2_mhb_large_editor" class="text_pole" rows="4"></textarea>
|
||||
<div class="editor-buttons-panel">
|
||||
<button id="amily2_mhb_large_save_button" class="menu_button accent small_button interactable"><i class="fas fa-save"></i> 保存当前</button>
|
||||
<button id="amily2_mhb_large_restore_button" class="menu_button secondary small_button interactable"><i class="fas fa-undo"></i> 恢复默认</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="mhb-controls-wrapper">
|
||||
|
||||
<div class="mhb-selector-container">
|
||||
|
||||
<div class="mhb-selector-group">
|
||||
<label for="amily2_mhb_large_worldbook_selector">目标国史馆 (世界书)</label>
|
||||
<div class="select-with-refresh">
|
||||
<select id="amily2_mhb_large_worldbook_selector" class="text_pole" style="flex-grow: 1;">
|
||||
<option value="">刷新列表...</option>
|
||||
</select>
|
||||
<button id="amily2_mhb_large_refresh_worldbooks" class="menu_button secondary small_button interactable" title="刷新世界书列表">
|
||||
<i class="fas fa-atlas"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mhb-selector-group">
|
||||
<label for="amily2_mhb_large_lore_selector">待精炼的史册条目</label>
|
||||
<div class="select-with-refresh">
|
||||
<select id="amily2_mhb_large_lore_selector" class="text_pole" style="flex-grow: 1;">
|
||||
<option value="">请先选择世界书...</option>
|
||||
</select>
|
||||
<button id="amily2_mhb_large_refresh_lores" class="menu_button secondary small_button interactable" title="刷新所选世界书的史册列表">
|
||||
<i class="fas fa-sync-alt"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<button id="amily2_mhb_large_refine_execute" class="menu_button primary small_button interactable" style="margin-top: 15px; width: 100%;">
|
||||
<i class="fas fa-gem"></i> 开始精炼
|
||||
</button>
|
||||
|
||||
<div class="auto-control-pair" style="margin-top: 10px; justify-content: center;">
|
||||
<label for="amily2_vectorize_summary_content">将前段的大总结内容自动送去向量化。</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="amily2_vectorize_summary_content" type="checkbox" />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
||||
<div id="amily2_mhb_hidden_prompts" style="display:none;">
|
||||
<textarea id="amily2_mhb_small_jailbreak_prompt"></textarea>
|
||||
<textarea id="amily2_mhb_small_summary_prompt"></textarea>
|
||||
<textarea id="amily2_mhb_large_jailbreak_prompt"></textarea>
|
||||
<textarea id="amily2_mhb_large_summary_prompt"></textarea>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
@@ -1,428 +1,428 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Amily2 表格编辑器</title>
|
||||
<link rel="stylesheet" href="table.css">
|
||||
<style>
|
||||
.worldbook-selection-container {
|
||||
display: flex;
|
||||
gap: 15px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.worldbook-column {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-width: 0; /* Prevents flex items from overflowing */
|
||||
}
|
||||
|
||||
.scrollable-container {
|
||||
border: 1px solid var(--input-border-color, #444);
|
||||
border-radius: 5px;
|
||||
padding: 10px;
|
||||
height: 150px;
|
||||
overflow-y: auto;
|
||||
background-color: var(--input-bg-color, #222);
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.scrollable-container .checkbox-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 5px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.scrollable-container .checkbox-item input[type="checkbox"] {
|
||||
margin-right: 8px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.scrollable-container .checkbox-item label {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
select.text_pole {
|
||||
appearance: none;
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
background-image: url("data:image/svg+xml;utf8,<svg fill='white' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>");
|
||||
background-repeat: no-repeat;
|
||||
background-position: right 8px center;
|
||||
background-size: 1.2em;
|
||||
padding-right: 2em !important;
|
||||
border-radius: 5px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="amily2-header">
|
||||
<div class="additional-features-title">
|
||||
<i class="fas fa-table"></i> 内存储司 · 表格核心
|
||||
</div>
|
||||
<button id="amily2_back_to_main_from_forms" class="menu_button secondary small_button interactable">
|
||||
返回主殿 <i class="fas fa-arrow-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<hr class="header-divider" style="margin-top: 5px; margin-bottom: 10px;">
|
||||
|
||||
<div id="upper-controls-wrapper">
|
||||
<fieldset class="settings-group" style="padding: 10px; margin-bottom: 10px;">
|
||||
<legend><i class="fas fa-brain"></i> 中枢决策室</legend>
|
||||
|
||||
<div class="sinan-navigation-deck" style="gap: 5px; margin-bottom: 10px;">
|
||||
<button class="sinan-nav-item active" data-tab="injection-settings"><i class="fas fa-cogs"></i> 注入设置</button>
|
||||
<button class="sinan-nav-item" data-tab="action-center"><i class="fas fa-toolbox"></i> 操作中心</button>
|
||||
<button class="sinan-nav-item" data-tab="ai-template"><i class="fas fa-robot"></i> 指令模板</button>
|
||||
<button class="sinan-nav-item" data-tab="world-settings"><i class="fas fa-globe"></i> 世界读取</button>
|
||||
</div>
|
||||
|
||||
<div class="sinan-content-wrapper">
|
||||
<div id="sinan-injection-settings-tab" class="sinan-tab-pane active">
|
||||
<div class="inline-settings-grid">
|
||||
<label for="table-injection-position">注入位置</label>
|
||||
<select id="table-injection-position" class="text_pole">
|
||||
<option value="2">主提示前</option>
|
||||
<option value="0">主提示后</option>
|
||||
<option value="1">聊天内</option>
|
||||
</select>
|
||||
<label for="table-injection-depth">注入深度</label>
|
||||
<input type="number" id="table-injection-depth" class="text_pole" value="3">
|
||||
<label>注入角色</label>
|
||||
<div class="radio-group">
|
||||
<input type="radio" id="table-role-system" name="table-injection-role" value="0" data-setting-key="injection.role" data-type="integer">
|
||||
<label for="table-role-system">系统</label>
|
||||
<input type="radio" id="table-role-user" name="table-injection-role" value="1" data-setting-key="injection.role" data-type="integer">
|
||||
<label for="table-role-user">用户</label>
|
||||
<input type="radio" id="table-role-ai" name="table-injection-role" value="2" data-setting-key="injection.role" data-type="integer">
|
||||
<label for="table-role-ai">AI</label>
|
||||
</div>
|
||||
<label for="batch-filling-threshold">批处理阈值</label>
|
||||
<input type="number" id="batch-filling-threshold" class="text_pole" value="30">
|
||||
</div>
|
||||
<div class="control-block-with-switch" style="margin-top: 10px;">
|
||||
<label for="show-table-in-chat-toggle">聊天内显示表格</label>
|
||||
<label class="toggle-switch">
|
||||
<input type="checkbox" id="show-table-in-chat-toggle" data-setting-key="show_table_in_chat" data-type="boolean">
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="control-block-with-switch" style="margin-top: 10px;">
|
||||
<label for="render-on-every-message-toggle">持续渲染最新消息</label>
|
||||
<label class="toggle-switch">
|
||||
<input type="checkbox" id="render-on-every-message-toggle" data-setting-key="render_on_every_message" data-type="boolean">
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="sinan-world-settings-tab" class="sinan-tab-pane">
|
||||
<div class="amily2_opt_settings_block">
|
||||
<label for="table_worldbook_enabled">启用世界书</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="table_worldbook_enabled" type="checkbox" />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="amily2_opt_settings_block">
|
||||
<label for="table_worldbook_char_limit">世界书最大字符数: <span id="table_worldbook_char_limit_value">60000</span></label>
|
||||
<input type="range" id="table_worldbook_char_limit" min="1000" max="200000" step="1000" value="60000">
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="amily2_opt_settings_block_radio">
|
||||
<label>世界书来源</label>
|
||||
<div class="amily2_opt_radio_group">
|
||||
<input type="radio" id="table_worldbook_source_character" name="table_worldbook_source" value="character" checked>
|
||||
<label for="table_worldbook_source_character">角色卡主世界书</label>
|
||||
<input type="radio" id="table_worldbook_source_manual" name="table_worldbook_source" value="manual">
|
||||
<label for="table_worldbook_source_manual">手动选择世界书</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="table_worldbook_select_wrapper" style="display: none;">
|
||||
<div class="worldbook-selection-container">
|
||||
<!-- World Book List Column -->
|
||||
<div class="worldbook-column">
|
||||
<div class="amily2_opt_label_with_button_wrapper">
|
||||
<label>选择世界书 (可多选)</label>
|
||||
<button id="table_refresh_worldbooks" class="menu_button" title="刷新世界书列表"><i class="fa-solid fa-sync"></i></button>
|
||||
</div>
|
||||
<div class="table-search-wrapper">
|
||||
<input type="text" id="table_worldbook_search" class="table-search-input" placeholder="搜索世界书名称...">
|
||||
<i class="fas fa-search table-search-icon"></i>
|
||||
</div>
|
||||
<div id="table_worldbook_checkbox_list" class="scrollable-container">
|
||||
<!-- 世界书勾选框将在这里动态生成 -->
|
||||
</div>
|
||||
<small class="notes">勾选需要启用的世界书。</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- World Book Entry List Column -->
|
||||
<div class="worldbook-column" style="margin-top: 10px;">
|
||||
<label>选择条目 (可多选)</label>
|
||||
<div class="table-search-wrapper">
|
||||
<input type="text" id="table_entry_search" class="table-search-input" placeholder="搜索条目名称、关键词...">
|
||||
<i class="fas fa-search table-search-icon"></i>
|
||||
</div>
|
||||
<div id="table_worldbook_entry_list" class="scrollable-container">
|
||||
<!-- 世界书条目勾选框将在这里动态生成 -->
|
||||
</div>
|
||||
<small class="notes">勾选需要注入的条目。</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="sinan-action-center-tab" class="sinan-tab-pane">
|
||||
<div class="control-block-with-switch" style="margin-bottom: 15px; padding: 8px; border: 2px solid #4a9eff; border-radius: 5px; background: rgba(74, 158, 255, 0.1);">
|
||||
<label for="table-system-master-switch" style="font-weight: bold; color: #4a9eff;">
|
||||
<i class="fas fa-power-off"></i> 表格系统总开关
|
||||
</label>
|
||||
<label class="toggle-switch">
|
||||
<input type="checkbox" id="table-system-master-switch" data-setting-key="table_system_enabled" data-type="boolean">
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="control-block-with-switch" style="margin-bottom: 10px;">
|
||||
<label for="table-injection-enabled-toggle">启用表格注入</label>
|
||||
<label class="toggle-switch">
|
||||
<input type="checkbox" id="table-injection-enabled" data-setting-key="table_injection_enabled" data-type="boolean">
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="control-block-with-switch" style="margin-bottom: 10px;">
|
||||
<label for="context-optimization-enabled-toggle">启用上下文优化 (合并世界书)</label>
|
||||
<label class="toggle-switch">
|
||||
<input type="checkbox" id="context-optimization-enabled" data-setting-key="context_optimization_enabled" data-type="boolean">
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="control-block-with-switch" style="margin-bottom: 10px;">
|
||||
<label>填表模式</label>
|
||||
<div class="radio-group">
|
||||
<input type="radio" id="main-api-mode" name="filling-mode" value="main-api" checked>
|
||||
<label for="main-api-mode">原始</label>
|
||||
<input type="radio" id="secondary-api-mode" name="filling-mode" value="secondary-api">
|
||||
<label for="secondary-api-mode">分步</label>
|
||||
<input type="radio" id="optimized-mode" name="filling-mode" value="optimized">
|
||||
<label for="optimized-mode">兼容优化</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 分步填表高级控制 - 仅在分步模式下显示 -->
|
||||
<div id="secondary-filler-controls" style="display: none; border-left: 2px solid #4a9eff; padding-left: 10px; margin-bottom: 10px;">
|
||||
|
||||
<!-- 上下文深度 -->
|
||||
<div class="control-block-with-switch" style="margin-bottom: 10px; flex-direction: column; align-items: flex-start;">
|
||||
<label for="secondary-filler-context">上下文深度</label>
|
||||
<input type="number" id="secondary-filler-context" min="0" max="20" step="1" value="2" class="text_pole" style="width: 80px; margin-top: 5px;">
|
||||
<small class="notes" style="margin-top: 5px; display: block;">填表时参考的历史上下文消息数量。</small>
|
||||
</div>
|
||||
|
||||
<!-- 填表批次 -->
|
||||
<div class="control-block-with-switch" style="margin-bottom: 10px; flex-direction: column; align-items: flex-start;">
|
||||
<label for="secondary-filler-batch">填表批次 (Batch)</label>
|
||||
<input type="number" id="secondary-filler-batch" min="0" max="20" step="1" value="0" class="text_pole" style="width: 80px; margin-top: 5px;">
|
||||
<small class="notes" style="margin-top: 5px; display: block;">单次填表处理的消息数量 (0 = 实时单条模式)。</small>
|
||||
</div>
|
||||
|
||||
<!-- 保留楼层 -->
|
||||
<div class="control-block-with-switch" style="margin-bottom: 10px; flex-direction: column; align-items: flex-start;">
|
||||
<label for="secondary-filler-buffer">保留楼层 (Buffer)</label>
|
||||
<input type="number" id="secondary-filler-buffer" min="0" max="10" step="1" value="0" class="text_pole" style="width: 80px; margin-top: 5px;">
|
||||
<small class="notes" style="margin-top: 5px; display: block;">始终保留不填表的最新消息数量 (缓冲防抖)。</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="table-independent-rules-container" class="control-block-with-switch" style="margin-bottom: 10px; display: none; flex-direction: column; align-items: flex-start; gap: 8px;">
|
||||
<div style="display: flex; justify-content: space-between; align-items: center; width: 100%;">
|
||||
<label for="table-independent-rules-enabled">启用独立提取规则</label>
|
||||
<label class="toggle-switch">
|
||||
<input type="checkbox" id="table-independent-rules-enabled">
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
<button id="table-configure-rules-btn" class="menu_button small_button" style="display: none;"><i class="fas fa-cog"></i> 配置规则</button>
|
||||
<small class="notes">启用后,分步填表和批量填表将使用下方配置的专属规则,而非微言录的规则。</small>
|
||||
</div>
|
||||
<div class="action-center-buttons" style="gap: 8px;">
|
||||
<button id="amily2-open-relationship-graph-btn" class="menu_button accent small_button interactable"><i class="fas fa-project-diagram"></i> 关系图谱</button>
|
||||
<button id="amily2-export-preset-btn" class="menu_button primary small_button interactable"><i class="fas fa-file-export"></i> 导出预设</button>
|
||||
<button id="amily2-export-preset-full-btn" class="menu_button primary small_button interactable"><i class="fas fa-file-archive"></i> 导出备份</button>
|
||||
<button id="amily2-import-preset-btn" class="menu_button secondary small_button interactable"><i class="fas fa-file-upload"></i> 导入预设</button>
|
||||
<button id="amily2-import-global-preset-btn" class="menu_button secondary small_button interactable"><i class="fas fa-globe"></i> 导入全局</button>
|
||||
<button id="amily2-clear-global-preset-btn" class="menu_button danger small_button interactable"><i class="fas fa-undo"></i> 清除全局</button>
|
||||
<button id="amily2-clear-all-tables-btn" class="menu_button danger small_button interactable"><i class="fas fa-trash-alt"></i> 清空内容</button>
|
||||
</div>
|
||||
<p class="notes" style="margin-top: 8px; margin-bottom: 10px;">说明:可以导出不含剧情的"纯净预设"用于分享,或导出包含剧情的"完整备份"用于存档。</p>
|
||||
|
||||
<hr class="section-divider" style="margin: 10px 0;">
|
||||
|
||||
<!-- 历史记录清理区域 -->
|
||||
<fieldset class="settings-group" style="border-style: dashed; padding: 8px; margin-bottom: 10px;">
|
||||
<legend><i class="fas fa-trash-alt"></i> 历史记录清理</legend>
|
||||
<div class="control-block-with-switch" style="margin-bottom: 10px; flex-direction: column; align-items: flex-start;">
|
||||
<label for="clear-records-before-floor">清除此楼层前的表格记录</label>
|
||||
<div style="display: flex; gap: 10px; align-items: center; width: 100%; margin-top: 5px;">
|
||||
<input type="number" id="clear-records-before-floor" class="text_pole" style="flex: 1;" placeholder="输入楼层号 (例如: 100)">
|
||||
<button id="clear-records-btn" class="menu_button danger small_button interactable">
|
||||
<i class="fas fa-eraser"></i> 一键清除
|
||||
</button>
|
||||
</div>
|
||||
<small class="notes" style="margin-top: 5px; display: block;">
|
||||
警告:此操作将永久删除指定楼层之前所有消息中存储的表格快照。这可以显著减小聊天记录文件的大小,但会导致无法回退到这些楼层的表格状态。当前最新的表格状态不会受影响。
|
||||
</small>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<hr class="section-divider" style="margin: 10px 0;">
|
||||
|
||||
<!-- Nccs API 控制区域 -->
|
||||
<fieldset class="settings-group" style="border-style: dashed; padding: 8px; margin-bottom: 10px;">
|
||||
<legend><i class="fas fa-brain"></i> Nccs API 系统</legend>
|
||||
|
||||
<div class="control-block-with-switch" style="margin-bottom: 10px;">
|
||||
<label for="nccs-api-enabled">启用 Nccs API</label>
|
||||
<label class="toggle-switch">
|
||||
<input type="checkbox" id="nccs-api-enabled" data-setting-key="nccsEnabled" data-type="boolean">
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div id="nccs-api-config" style="display: none;">
|
||||
<div class="amily2_opt_settings_block" style="margin-bottom: 10px;">
|
||||
<label for="nccs-api-mode">API 模式</label>
|
||||
<select id="nccs-api-mode" class="text_pole">
|
||||
<option value="openai_test">全兼容模式</option>
|
||||
<option value="sillytavern_preset">SillyTavern预设模式</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="amily2_opt_settings_block" style="margin-bottom: 10px;">
|
||||
<label for="nccs-api-url">API URL</label>
|
||||
<input type="text" id="nccs-api-url" class="text_pole" placeholder="https://api.openai.com/v1">
|
||||
</div>
|
||||
|
||||
<div class="amily2_opt_settings_block" style="margin-bottom: 10px;">
|
||||
<label for="nccs-api-key">API Key</label>
|
||||
<input type="password" id="nccs-api-key" class="text_pole" placeholder="输入您的API密钥">
|
||||
</div>
|
||||
|
||||
<div class="amily2_opt_settings_block" style="margin-bottom: 10px;">
|
||||
<label for="nccs-api-model">模型</label>
|
||||
<div style="display: flex; gap: 5px; align-items: center;">
|
||||
<input type="text" id="nccs-api-model" class="text_pole" placeholder="选择或输入模型">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="amily2_opt_settings_block" style="margin-bottom: 10px;">
|
||||
<label for="nccs-max-tokens">最大Token数: <span id="nccs-max-tokens-value">2000</span></label>
|
||||
<input type="range" id="nccs-max-tokens" min="100" max="100000" step="100" value="2000">
|
||||
</div>
|
||||
|
||||
<div class="amily2_opt_settings_block" style="margin-bottom: 10px;">
|
||||
<label for="nccs-temperature">Temperature: <span id="nccs-temperature-value">0.7</span></label>
|
||||
<input type="range" id="nccs-temperature" min="0" max="2" step="0.1" value="0.7">
|
||||
</div>
|
||||
|
||||
<div class="amily2_opt_settings_block" style="margin-bottom: 10px;">
|
||||
<label for="nccs-sillytavern-preset">SillyTavern 预设</label>
|
||||
<select id="nccs-sillytavern-preset" class="text_pole">
|
||||
<option value="">选择预设</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="nccs-button-row" style="display: flex; gap: 10px; justify-content: center; margin-top: 15px;">
|
||||
<button id="nccs-test-connection" class="menu_button primary small_button interactable">
|
||||
<i class="fas fa-plug"></i> 测试连接
|
||||
</button>
|
||||
<button id="nccs-fetch-models" class="menu_button secondary small_button interactable">
|
||||
<i class="fas fa-download"></i> 获取模型
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<hr class="section-divider" style="margin: 10px 0;">
|
||||
|
||||
<div class="action-center-buttons" id="theme-action-buttons" style="gap: 8px;">
|
||||
<button id="amily2-import-theme-btn" class="menu_button small_button interactable"><i class="fas fa-palette"></i> 导入主题</button>
|
||||
<button id="amily2-export-theme-btn" class="menu_button small_button interactable"><i class="fas fa-paint-brush"></i> 导出主题</button>
|
||||
<button id="amily2-reset-theme-btn" class="menu_button small_button interactable"><i class="fas fa-undo"></i> 恢复默认</button>
|
||||
</div>
|
||||
<p class="notes" style="margin-top: 8px;">说明:导入下载的主题JSON文件,或将当前的外观导出分享。</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="sinan-ai-template-tab" class="sinan-tab-pane">
|
||||
<fieldset class="settings-group" style="border-style: dashed; padding: 8px; margin-bottom: 10px;">
|
||||
<legend><i class="fas fa-scroll"></i> 规则提示词</legend>
|
||||
<div class="amily2_settings_block prompt-editor-area">
|
||||
<textarea id="ai-rule-template-editor" class="text_pole" rows="2"></textarea>
|
||||
<div class="editor-buttons-panel">
|
||||
<button id="ai-rule-template-save-btn" class="menu_button accent small_button interactable"><i class="fas fa-save"></i> 保存</button>
|
||||
<button id="ai-rule-template-restore-btn" class="menu_button secondary small_button interactable"><i class="fas fa-undo"></i> 默认</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="settings-group" style="border-style: dashed; padding: 8px;">
|
||||
<legend><i class="fas fa-tasks"></i> 流程提示词</legend>
|
||||
<div class="amily2_settings_block prompt-editor-area">
|
||||
<textarea id="ai-flow-template-editor" class="text_pole" rows="2"></textarea>
|
||||
<div class="editor-buttons-panel">
|
||||
<button id="ai-flow-template-save-btn" class="menu_button accent small_button interactable"><i class="fas fa-save"></i> 保存</button>
|
||||
<button id="ai-flow-template-restore-btn" class="menu_button secondary small_button interactable"><i class="fas fa-undo"></i> 默认</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<hr class="section-divider" style="margin: 10px 0;">
|
||||
|
||||
<div id="table-filling-controls" style="display: flex; flex-direction: column; gap: 10px; align-items: center;">
|
||||
<!-- 楼层选择区域 -->
|
||||
<div style="display: flex; gap: 10px; align-items: center; justify-content: center;">
|
||||
<label for="floor-start-input" style="font-size: 12px; white-space: nowrap;">起始楼层:</label>
|
||||
<input type="number" id="floor-start-input" class="text_pole" style="width: 80px;" placeholder="1" min="1">
|
||||
<label for="floor-end-input" style="font-size: 12px; white-space: nowrap;">结束楼层:</label>
|
||||
<input type="number" id="floor-end-input" class="text_pole" style="width: 80px;" placeholder="10" min="1">
|
||||
</div>
|
||||
|
||||
<!-- 填表按钮区域 -->
|
||||
<div style="display: flex; gap: 10px; align-items: center; justify-content: center; flex-wrap: wrap;">
|
||||
<button id="fill-table-now-btn" class="menu_button small_button">立即填表</button>
|
||||
<button id="fill-selected-floors-btn" class="menu_button accent small_button">选定楼层填表</button>
|
||||
<button id="fill-current-floor-btn" class="menu_button secondary small_button">填当前楼层</button>
|
||||
<button id="rollback-and-refill-btn" class="menu_button secondary small_button">回退重填</button>
|
||||
<button id="reorganize-table-btn" class="menu_button warning small_button">重新整理</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div id="table-log-display" class="hly-log-display" style="margin-top: 10px; margin-bottom: 10px;">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="all-tables-container" class="hly-scroll">
|
||||
|
||||
<div id="add-table-placeholder" title="敕令新表">
|
||||
<i class="fas fa-plus"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Amily2 表格编辑器</title>
|
||||
<link rel="stylesheet" href="table.css">
|
||||
<style>
|
||||
.worldbook-selection-container {
|
||||
display: flex;
|
||||
gap: 15px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.worldbook-column {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-width: 0; /* Prevents flex items from overflowing */
|
||||
}
|
||||
|
||||
.scrollable-container {
|
||||
border: 1px solid var(--input-border-color, #444);
|
||||
border-radius: 5px;
|
||||
padding: 10px;
|
||||
height: 150px;
|
||||
overflow-y: auto;
|
||||
background-color: var(--input-bg-color, #222);
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.scrollable-container .checkbox-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 5px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.scrollable-container .checkbox-item input[type="checkbox"] {
|
||||
margin-right: 8px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.scrollable-container .checkbox-item label {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
select.text_pole {
|
||||
appearance: none;
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
background-image: url("data:image/svg+xml;utf8,<svg fill='white' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>");
|
||||
background-repeat: no-repeat;
|
||||
background-position: right 8px center;
|
||||
background-size: 1.2em;
|
||||
padding-right: 2em !important;
|
||||
border-radius: 5px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="amily2-header">
|
||||
<div class="additional-features-title">
|
||||
<i class="fas fa-table"></i> 内存储司 · 表格核心
|
||||
</div>
|
||||
<button id="amily2_back_to_main_from_forms" class="menu_button secondary small_button interactable">
|
||||
返回主殿 <i class="fas fa-arrow-right"></i>
|
||||
</button>
|
||||
</div>
|
||||
<hr class="header-divider" style="margin-top: 5px; margin-bottom: 10px;">
|
||||
|
||||
<div id="upper-controls-wrapper">
|
||||
<fieldset class="settings-group" style="padding: 10px; margin-bottom: 10px;">
|
||||
<legend><i class="fas fa-brain"></i> 中枢决策室</legend>
|
||||
|
||||
<div class="sinan-navigation-deck" style="gap: 5px; margin-bottom: 10px;">
|
||||
<button class="sinan-nav-item active" data-tab="injection-settings"><i class="fas fa-cogs"></i> 注入设置</button>
|
||||
<button class="sinan-nav-item" data-tab="action-center"><i class="fas fa-toolbox"></i> 操作中心</button>
|
||||
<button class="sinan-nav-item" data-tab="ai-template"><i class="fas fa-robot"></i> 指令模板</button>
|
||||
<button class="sinan-nav-item" data-tab="world-settings"><i class="fas fa-globe"></i> 世界读取</button>
|
||||
</div>
|
||||
|
||||
<div class="sinan-content-wrapper">
|
||||
<div id="sinan-injection-settings-tab" class="sinan-tab-pane active">
|
||||
<div class="inline-settings-grid">
|
||||
<label for="table-injection-position">注入位置</label>
|
||||
<select id="table-injection-position" class="text_pole">
|
||||
<option value="2">主提示前</option>
|
||||
<option value="0">主提示后</option>
|
||||
<option value="1">聊天内</option>
|
||||
</select>
|
||||
<label for="table-injection-depth">注入深度</label>
|
||||
<input type="number" id="table-injection-depth" class="text_pole" value="3">
|
||||
<label>注入角色</label>
|
||||
<div class="radio-group">
|
||||
<input type="radio" id="table-role-system" name="table-injection-role" value="0" data-setting-key="injection.role" data-type="integer">
|
||||
<label for="table-role-system">系统</label>
|
||||
<input type="radio" id="table-role-user" name="table-injection-role" value="1" data-setting-key="injection.role" data-type="integer">
|
||||
<label for="table-role-user">用户</label>
|
||||
<input type="radio" id="table-role-ai" name="table-injection-role" value="2" data-setting-key="injection.role" data-type="integer">
|
||||
<label for="table-role-ai">AI</label>
|
||||
</div>
|
||||
<label for="batch-filling-threshold">批处理阈值</label>
|
||||
<input type="number" id="batch-filling-threshold" class="text_pole" value="30">
|
||||
</div>
|
||||
<div class="control-block-with-switch" style="margin-top: 10px;">
|
||||
<label for="show-table-in-chat-toggle">聊天内显示表格</label>
|
||||
<label class="toggle-switch">
|
||||
<input type="checkbox" id="show-table-in-chat-toggle" data-setting-key="show_table_in_chat" data-type="boolean">
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="control-block-with-switch" style="margin-top: 10px;">
|
||||
<label for="render-on-every-message-toggle">持续渲染最新消息</label>
|
||||
<label class="toggle-switch">
|
||||
<input type="checkbox" id="render-on-every-message-toggle" data-setting-key="render_on_every_message" data-type="boolean">
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="sinan-world-settings-tab" class="sinan-tab-pane">
|
||||
<div class="amily2_opt_settings_block">
|
||||
<label for="table_worldbook_enabled">启用世界书</label>
|
||||
<label class="toggle-switch">
|
||||
<input id="table_worldbook_enabled" type="checkbox" />
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="amily2_opt_settings_block">
|
||||
<label for="table_worldbook_char_limit">世界书最大字符数: <span id="table_worldbook_char_limit_value">60000</span></label>
|
||||
<input type="range" id="table_worldbook_char_limit" min="1000" max="200000" step="1000" value="60000">
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="amily2_opt_settings_block_radio">
|
||||
<label>世界书来源</label>
|
||||
<div class="amily2_opt_radio_group">
|
||||
<input type="radio" id="table_worldbook_source_character" name="table_worldbook_source" value="character" checked>
|
||||
<label for="table_worldbook_source_character">角色卡主世界书</label>
|
||||
<input type="radio" id="table_worldbook_source_manual" name="table_worldbook_source" value="manual">
|
||||
<label for="table_worldbook_source_manual">手动选择世界书</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="table_worldbook_select_wrapper" style="display: none;">
|
||||
<div class="worldbook-selection-container">
|
||||
<!-- World Book List Column -->
|
||||
<div class="worldbook-column">
|
||||
<div class="amily2_opt_label_with_button_wrapper">
|
||||
<label>选择世界书 (可多选)</label>
|
||||
<button id="table_refresh_worldbooks" class="menu_button" title="刷新世界书列表"><i class="fa-solid fa-sync"></i></button>
|
||||
</div>
|
||||
<div class="table-search-wrapper">
|
||||
<input type="text" id="table_worldbook_search" class="table-search-input" placeholder="搜索世界书名称...">
|
||||
<i class="fas fa-search table-search-icon"></i>
|
||||
</div>
|
||||
<div id="table_worldbook_checkbox_list" class="scrollable-container">
|
||||
<!-- 世界书勾选框将在这里动态生成 -->
|
||||
</div>
|
||||
<small class="notes">勾选需要启用的世界书。</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- World Book Entry List Column -->
|
||||
<div class="worldbook-column" style="margin-top: 10px;">
|
||||
<label>选择条目 (可多选)</label>
|
||||
<div class="table-search-wrapper">
|
||||
<input type="text" id="table_entry_search" class="table-search-input" placeholder="搜索条目名称、关键词...">
|
||||
<i class="fas fa-search table-search-icon"></i>
|
||||
</div>
|
||||
<div id="table_worldbook_entry_list" class="scrollable-container">
|
||||
<!-- 世界书条目勾选框将在这里动态生成 -->
|
||||
</div>
|
||||
<small class="notes">勾选需要注入的条目。</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="sinan-action-center-tab" class="sinan-tab-pane">
|
||||
<div class="control-block-with-switch" style="margin-bottom: 15px; padding: 8px; border: 2px solid #4a9eff; border-radius: 5px; background: rgba(74, 158, 255, 0.1);">
|
||||
<label for="table-system-master-switch" style="font-weight: bold; color: #4a9eff;">
|
||||
<i class="fas fa-power-off"></i> 表格系统总开关
|
||||
</label>
|
||||
<label class="toggle-switch">
|
||||
<input type="checkbox" id="table-system-master-switch" data-setting-key="table_system_enabled" data-type="boolean">
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="control-block-with-switch" style="margin-bottom: 10px;">
|
||||
<label for="table-injection-enabled-toggle">启用表格注入</label>
|
||||
<label class="toggle-switch">
|
||||
<input type="checkbox" id="table-injection-enabled" data-setting-key="table_injection_enabled" data-type="boolean">
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="control-block-with-switch" style="margin-bottom: 10px;">
|
||||
<label for="context-optimization-enabled-toggle">启用上下文优化 (合并世界书)</label>
|
||||
<label class="toggle-switch">
|
||||
<input type="checkbox" id="context-optimization-enabled" data-setting-key="context_optimization_enabled" data-type="boolean">
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="control-block-with-switch" style="margin-bottom: 10px;">
|
||||
<label>填表模式</label>
|
||||
<div class="radio-group">
|
||||
<input type="radio" id="main-api-mode" name="filling-mode" value="main-api" checked>
|
||||
<label for="main-api-mode">原始</label>
|
||||
<input type="radio" id="secondary-api-mode" name="filling-mode" value="secondary-api">
|
||||
<label for="secondary-api-mode">分步</label>
|
||||
<input type="radio" id="optimized-mode" name="filling-mode" value="optimized">
|
||||
<label for="optimized-mode">兼容优化</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 分步填表高级控制 - 仅在分步模式下显示 -->
|
||||
<div id="secondary-filler-controls" style="display: none; border-left: 2px solid #4a9eff; padding-left: 10px; margin-bottom: 10px;">
|
||||
|
||||
<!-- 上下文深度 -->
|
||||
<div class="control-block-with-switch" style="margin-bottom: 10px; flex-direction: column; align-items: flex-start;">
|
||||
<label for="secondary-filler-context">上下文深度</label>
|
||||
<input type="number" id="secondary-filler-context" min="0" max="20" step="1" value="2" class="text_pole" style="width: 80px; margin-top: 5px;">
|
||||
<small class="notes" style="margin-top: 5px; display: block;">填表时参考的历史上下文消息数量。</small>
|
||||
</div>
|
||||
|
||||
<!-- 填表批次 -->
|
||||
<div class="control-block-with-switch" style="margin-bottom: 10px; flex-direction: column; align-items: flex-start;">
|
||||
<label for="secondary-filler-batch">填表批次 (Batch)</label>
|
||||
<input type="number" id="secondary-filler-batch" min="0" max="20" step="1" value="0" class="text_pole" style="width: 80px; margin-top: 5px;">
|
||||
<small class="notes" style="margin-top: 5px; display: block;">单次填表处理的消息数量 (0 = 实时单条模式)。</small>
|
||||
</div>
|
||||
|
||||
<!-- 保留楼层 -->
|
||||
<div class="control-block-with-switch" style="margin-bottom: 10px; flex-direction: column; align-items: flex-start;">
|
||||
<label for="secondary-filler-buffer">保留楼层 (Buffer)</label>
|
||||
<input type="number" id="secondary-filler-buffer" min="0" max="10" step="1" value="0" class="text_pole" style="width: 80px; margin-top: 5px;">
|
||||
<small class="notes" style="margin-top: 5px; display: block;">始终保留不填表的最新消息数量 (缓冲防抖)。</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="table-independent-rules-container" class="control-block-with-switch" style="margin-bottom: 10px; display: none; flex-direction: column; align-items: flex-start; gap: 8px;">
|
||||
<div style="display: flex; justify-content: space-between; align-items: center; width: 100%;">
|
||||
<label for="table-independent-rules-enabled">启用独立提取规则</label>
|
||||
<label class="toggle-switch">
|
||||
<input type="checkbox" id="table-independent-rules-enabled">
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
<button id="table-configure-rules-btn" class="menu_button small_button" style="display: none;"><i class="fas fa-cog"></i> 配置规则</button>
|
||||
<small class="notes">启用后,分步填表和批量填表将使用下方配置的专属规则,而非微言录的规则。</small>
|
||||
</div>
|
||||
<div class="action-center-buttons" style="gap: 8px;">
|
||||
<button id="amily2-open-relationship-graph-btn" class="menu_button accent small_button interactable"><i class="fas fa-project-diagram"></i> 关系图谱</button>
|
||||
<button id="amily2-export-preset-btn" class="menu_button primary small_button interactable"><i class="fas fa-file-export"></i> 导出预设</button>
|
||||
<button id="amily2-export-preset-full-btn" class="menu_button primary small_button interactable"><i class="fas fa-file-archive"></i> 导出备份</button>
|
||||
<button id="amily2-import-preset-btn" class="menu_button secondary small_button interactable"><i class="fas fa-file-upload"></i> 导入预设</button>
|
||||
<button id="amily2-import-global-preset-btn" class="menu_button secondary small_button interactable"><i class="fas fa-globe"></i> 导入全局</button>
|
||||
<button id="amily2-clear-global-preset-btn" class="menu_button danger small_button interactable"><i class="fas fa-undo"></i> 清除全局</button>
|
||||
<button id="amily2-clear-all-tables-btn" class="menu_button danger small_button interactable"><i class="fas fa-trash-alt"></i> 清空内容</button>
|
||||
</div>
|
||||
<p class="notes" style="margin-top: 8px; margin-bottom: 10px;">说明:可以导出不含剧情的"纯净预设"用于分享,或导出包含剧情的"完整备份"用于存档。</p>
|
||||
|
||||
<hr class="section-divider" style="margin: 10px 0;">
|
||||
|
||||
<!-- 历史记录清理区域 -->
|
||||
<fieldset class="settings-group" style="border-style: dashed; padding: 8px; margin-bottom: 10px;">
|
||||
<legend><i class="fas fa-trash-alt"></i> 历史记录清理</legend>
|
||||
<div class="control-block-with-switch" style="margin-bottom: 10px; flex-direction: column; align-items: flex-start;">
|
||||
<label for="clear-records-before-floor">清除此楼层前的表格记录</label>
|
||||
<div style="display: flex; gap: 10px; align-items: center; width: 100%; margin-top: 5px;">
|
||||
<input type="number" id="clear-records-before-floor" class="text_pole" style="flex: 1;" placeholder="输入楼层号 (例如: 100)">
|
||||
<button id="clear-records-btn" class="menu_button danger small_button interactable">
|
||||
<i class="fas fa-eraser"></i> 一键清除
|
||||
</button>
|
||||
</div>
|
||||
<small class="notes" style="margin-top: 5px; display: block;">
|
||||
警告:此操作将永久删除指定楼层之前所有消息中存储的表格快照。这可以显著减小聊天记录文件的大小,但会导致无法回退到这些楼层的表格状态。当前最新的表格状态不会受影响。
|
||||
</small>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<hr class="section-divider" style="margin: 10px 0;">
|
||||
|
||||
<!-- Nccs API 控制区域 -->
|
||||
<fieldset class="settings-group" style="border-style: dashed; padding: 8px; margin-bottom: 10px;">
|
||||
<legend><i class="fas fa-brain"></i> Nccs API 系统</legend>
|
||||
|
||||
<div class="control-block-with-switch" style="margin-bottom: 10px;">
|
||||
<label for="nccs-api-enabled">启用 Nccs API</label>
|
||||
<label class="toggle-switch">
|
||||
<input type="checkbox" id="nccs-api-enabled" data-setting-key="nccsEnabled" data-type="boolean">
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div id="nccs-api-config" style="display: none;">
|
||||
<div class="amily2_opt_settings_block" style="margin-bottom: 10px;">
|
||||
<label for="nccs-api-mode">API 模式</label>
|
||||
<select id="nccs-api-mode" class="text_pole">
|
||||
<option value="openai_test">全兼容模式</option>
|
||||
<option value="sillytavern_preset">SillyTavern预设模式</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="amily2_opt_settings_block" style="margin-bottom: 10px;">
|
||||
<label for="nccs-api-url">API URL</label>
|
||||
<input type="text" id="nccs-api-url" class="text_pole" placeholder="https://api.openai.com/v1">
|
||||
</div>
|
||||
|
||||
<div class="amily2_opt_settings_block" style="margin-bottom: 10px;">
|
||||
<label for="nccs-api-key">API Key</label>
|
||||
<input type="password" id="nccs-api-key" class="text_pole" placeholder="输入您的API密钥">
|
||||
</div>
|
||||
|
||||
<div class="amily2_opt_settings_block" style="margin-bottom: 10px;">
|
||||
<label for="nccs-api-model">模型</label>
|
||||
<div style="display: flex; gap: 5px; align-items: center;">
|
||||
<input type="text" id="nccs-api-model" class="text_pole" placeholder="选择或输入模型">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="amily2_opt_settings_block" style="margin-bottom: 10px;">
|
||||
<label for="nccs-max-tokens">最大Token数: <span id="nccs-max-tokens-value">2000</span></label>
|
||||
<input type="range" id="nccs-max-tokens" min="100" max="100000" step="100" value="2000">
|
||||
</div>
|
||||
|
||||
<div class="amily2_opt_settings_block" style="margin-bottom: 10px;">
|
||||
<label for="nccs-temperature">Temperature: <span id="nccs-temperature-value">0.7</span></label>
|
||||
<input type="range" id="nccs-temperature" min="0" max="2" step="0.1" value="0.7">
|
||||
</div>
|
||||
|
||||
<div class="amily2_opt_settings_block" style="margin-bottom: 10px;">
|
||||
<label for="nccs-sillytavern-preset">SillyTavern 预设</label>
|
||||
<select id="nccs-sillytavern-preset" class="text_pole">
|
||||
<option value="">选择预设</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="nccs-button-row" style="display: flex; gap: 10px; justify-content: center; margin-top: 15px;">
|
||||
<button id="nccs-test-connection" class="menu_button primary small_button interactable">
|
||||
<i class="fas fa-plug"></i> 测试连接
|
||||
</button>
|
||||
<button id="nccs-fetch-models" class="menu_button secondary small_button interactable">
|
||||
<i class="fas fa-download"></i> 获取模型
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<hr class="section-divider" style="margin: 10px 0;">
|
||||
|
||||
<div class="action-center-buttons" id="theme-action-buttons" style="gap: 8px;">
|
||||
<button id="amily2-import-theme-btn" class="menu_button small_button interactable"><i class="fas fa-palette"></i> 导入主题</button>
|
||||
<button id="amily2-export-theme-btn" class="menu_button small_button interactable"><i class="fas fa-paint-brush"></i> 导出主题</button>
|
||||
<button id="amily2-reset-theme-btn" class="menu_button small_button interactable"><i class="fas fa-undo"></i> 恢复默认</button>
|
||||
</div>
|
||||
<p class="notes" style="margin-top: 8px;">说明:导入下载的主题JSON文件,或将当前的外观导出分享。</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="sinan-ai-template-tab" class="sinan-tab-pane">
|
||||
<fieldset class="settings-group" style="border-style: dashed; padding: 8px; margin-bottom: 10px;">
|
||||
<legend><i class="fas fa-scroll"></i> 规则提示词</legend>
|
||||
<div class="amily2_settings_block prompt-editor-area">
|
||||
<textarea id="ai-rule-template-editor" class="text_pole" rows="2"></textarea>
|
||||
<div class="editor-buttons-panel">
|
||||
<button id="ai-rule-template-save-btn" class="menu_button accent small_button interactable"><i class="fas fa-save"></i> 保存</button>
|
||||
<button id="ai-rule-template-restore-btn" class="menu_button secondary small_button interactable"><i class="fas fa-undo"></i> 默认</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="settings-group" style="border-style: dashed; padding: 8px;">
|
||||
<legend><i class="fas fa-tasks"></i> 流程提示词</legend>
|
||||
<div class="amily2_settings_block prompt-editor-area">
|
||||
<textarea id="ai-flow-template-editor" class="text_pole" rows="2"></textarea>
|
||||
<div class="editor-buttons-panel">
|
||||
<button id="ai-flow-template-save-btn" class="menu_button accent small_button interactable"><i class="fas fa-save"></i> 保存</button>
|
||||
<button id="ai-flow-template-restore-btn" class="menu_button secondary small_button interactable"><i class="fas fa-undo"></i> 默认</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<hr class="section-divider" style="margin: 10px 0;">
|
||||
|
||||
<div id="table-filling-controls" style="display: flex; flex-direction: column; gap: 10px; align-items: center;">
|
||||
<!-- 楼层选择区域 -->
|
||||
<div style="display: flex; gap: 10px; align-items: center; justify-content: center;">
|
||||
<label for="floor-start-input" style="font-size: 12px; white-space: nowrap;">起始楼层:</label>
|
||||
<input type="number" id="floor-start-input" class="text_pole" style="width: 80px;" placeholder="1" min="1">
|
||||
<label for="floor-end-input" style="font-size: 12px; white-space: nowrap;">结束楼层:</label>
|
||||
<input type="number" id="floor-end-input" class="text_pole" style="width: 80px;" placeholder="10" min="1">
|
||||
</div>
|
||||
|
||||
<!-- 填表按钮区域 -->
|
||||
<div style="display: flex; gap: 10px; align-items: center; justify-content: center; flex-wrap: wrap;">
|
||||
<button id="fill-table-now-btn" class="menu_button small_button">立即填表</button>
|
||||
<button id="fill-selected-floors-btn" class="menu_button accent small_button">选定楼层填表</button>
|
||||
<button id="fill-current-floor-btn" class="menu_button secondary small_button">填当前楼层</button>
|
||||
<button id="rollback-and-refill-btn" class="menu_button secondary small_button">回退重填</button>
|
||||
<button id="reorganize-table-btn" class="menu_button warning small_button">重新整理</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div id="table-log-display" class="hly-log-display" style="margin-top: 10px; margin-bottom: 10px;">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="all-tables-container" class="hly-scroll">
|
||||
|
||||
<div id="add-table-placeholder" title="敕令新表">
|
||||
<i class="fas fa-plus"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because it is too large
Load Diff
4
index.js
4
index.js
@@ -310,8 +310,8 @@ function loadPluginStyles() {
|
||||
loadStyleFile("style.css"); // 【第一道圣谕】为帝国主体宫殿披上通用华服
|
||||
loadStyleFile("historiography.css"); // 【第二道圣谕】为敕史局披上其专属华服
|
||||
loadStyleFile("hanlinyuan.css"); // 【第三道圣谕】为翰林院披上其专属华服
|
||||
loadStyleFile("amily2-glossary.css"); // 【新圣谕】为术语表披上其专属华服
|
||||
loadStyleFile("table.css"); // 【第四道圣谕】为内存储司披上其专属华服
|
||||
loadStyleFile("amily-glossary-system/amily2-glossary.css"); // 【新圣谕】为术语表披上其专属华服
|
||||
loadStyleFile("amily-data-table/table.css"); // 【第四道圣谕】为内存储司披上其专属华服
|
||||
loadStyleFile("optimization.css"); // 【第五道圣谕】为剧情优化披上其专属华服
|
||||
loadStyleFile("renderer.css"); // 【新圣谕】为渲染器披上其专属华服
|
||||
loadStyleFile("iframe-renderer.css"); // 【新圣谕】为iframe渲染内容披上其专属华服
|
||||
|
||||
@@ -75,7 +75,7 @@ async function initializePanel(contentPanel, errorContainer) {
|
||||
const mainContainer = contentPanel.find('#amily2_chat_optimiser');
|
||||
|
||||
if (mainContainer.length) {
|
||||
const additionalFeaturesContent = await $.get(`${extensionFolderPath}/assets/Amily2-AdditionalFeatures.html`);
|
||||
const additionalFeaturesContent = await $.get(`${extensionFolderPath}/assets/amily-additional-features/Amily2-AdditionalFeatures.html`);
|
||||
const additionalPanelHtml = `<div id="amily2_additional_features_panel" style="display: none;">${additionalFeaturesContent}</div>`;
|
||||
mainContainer.append(additionalPanelHtml);
|
||||
|
||||
@@ -87,7 +87,7 @@ async function initializePanel(contentPanel, errorContainer) {
|
||||
const hanlinyuanPanelHtml = `<div id="amily2_hanlinyuan_panel" style="display: none;">${hanlinyuanContent}</div>`;
|
||||
mainContainer.append(hanlinyuanPanelHtml);
|
||||
|
||||
const memorisationFormsContent = await $.get(`${extensionFolderPath}/assets/Memorisation-forms.html`);
|
||||
const memorisationFormsContent = await $.get(`${extensionFolderPath}/assets/amily-data-table/Memorisation-forms.html`);
|
||||
const memorisationFormsPanelHtml = `<div id="amily2_memorisation_forms_panel" style="display: none;">${memorisationFormsContent}</div>`;
|
||||
mainContainer.append(memorisationFormsPanelHtml);
|
||||
|
||||
@@ -103,7 +103,7 @@ async function initializePanel(contentPanel, errorContainer) {
|
||||
const worldEditorPanelHtml = `<div id="amily2_world_editor_panel" style="display: none;">${worldEditorContent}</div>`;
|
||||
mainContainer.append(worldEditorPanelHtml);
|
||||
|
||||
const glossaryContent = await $.get(`${extensionFolderPath}/assets/amily2-glossary.html`);
|
||||
const glossaryContent = await $.get(`${extensionFolderPath}/assets/amily-glossary-system/amily2-glossary.html`);
|
||||
const glossaryPanelHtml = `<div id="amily2_glossary_panel" style="display: none;">${glossaryContent}</div>`;
|
||||
mainContainer.append(glossaryPanelHtml);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user