ci: auto build & obfuscate [2026-04-19 03:01:12] (Jenkins #16)

This commit is contained in:
Jenkins CI
2026-04-19 03:01:12 +08:00
parent 58ff3c3faf
commit 8d590073f4
28 changed files with 761 additions and 384 deletions

View File

@@ -241,20 +241,12 @@
</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 class="hly-control-block" style="margin-top: 10px;">
<label style="font-weight: bold;">提取规则配置</label>
<select id="historiography-rule-profile-select" class="hly-imperial-brush" style="width: 100%;"></select>
<small class="hly-notes">选择在「规则配置中心」里创建的提取规则,应用于微言录和宏史卷总结。</small>
</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">

View File

@@ -252,16 +252,10 @@
</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 class="control-block-with-switch" style="margin-bottom: 10px; display: flex; flex-direction: column; align-items: flex-start; gap: 8px;">
<label style="font-weight: bold;">提取规则配置</label>
<select id="table-rule-profile-select" class="text_pole" style="width: 100%;"></select>
<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>

View File

@@ -251,19 +251,10 @@
</div>
</div>
<div class="hly-control-block" style="flex-direction: row; justify-content: space-between; align-items: center;">
<label for="hly-tag-extraction-toggle">标签提取</label>
<label class="hly-toggle-switch">
<input type="checkbox" id="hly-tag-extraction-toggle" data-setting-key="condensation.tagExtractionEnabled" data-type="boolean">
<span class="slider"></span>
</label>
</div>
<div id="hly-tag-input-container" class="hly-control-block" style="display: none;">
<label for="hly-tag-input">输入标签 (以逗号分隔):</label>
<textarea id="hly-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;">
<button id="hly-exclusion-rules-btn" class="hly-action-button">内容排除</button>
<div class="hly-control-block" style="margin-top: 8px;">
<label style="font-weight: bold;">提取规则配置</label>
<select id="hly-condensation-rule-profile-select" class="hly-imperial-brush" style="width: 100%;"></select>
<small class="hly-notes">选择在「规则配置中心」里创建的提取规则,应用于浓缩处理。</small>
</div>
<div class="hly-button-group">
<button class="hly-action-button success" onclick="startHLYCondensation()"> 开始凝识</button>
@@ -405,7 +396,7 @@
</div>
</div>
<div id="hly-kb-list-local" class="hly-kb-list">
<p id="hly-kb-list-local-placeholder" style="color: #888;">当前角色没有知识库。通过“书库编纂中的功能可自动创建。</p>
<p id="hly-kb-list-local-placeholder" style="color: #888;">当前角色没有知识库。通过“书库编纂"中的功能可自动创建。</p>
<!-- Local KBs will be populated here -->
</div>
<div class="hly-button-group" style="margin-top: 15px;">
@@ -456,10 +447,11 @@
<span class="slider"></span>
</label>
</div>
<div class="hly-button-group" style="justify-content: flex-start;">
<button id="hly-query-preprocessing-rules-btn" class="hly-action-button">配置处理规则</button>
<div class="hly-control-block" style="margin-top: 8px;">
<label style="font-weight: bold;">处理规则配置</label>
<select id="hly-query-preprocessing-rule-profile-select" class="hly-imperial-brush" style="width: 100%;"></select>
<small class="hly-notes">选择在「规则配置中心」里创建的提取规则,应用于查询预处理(标签提取 + 内容排除)。</small>
</div>
<small class="hly-notes">此功能类似于“凝识法则”,可对您最近的几条聊天记录(即用于检索的文本)进行标签提取和内容排除,以生成更纯净、更高效的检索查询。</small>
</fieldset>
<fieldset class="hly-settings-group">

View File

@@ -2,8 +2,8 @@
<div class="additional-features-title">
<i class="fas fa-key"></i> API 连接配置
</div>
<button id="amily2_back_to_main_from_api_config" class="menu_button secondary small_button interactable">
返回主殿 <i class="fas fa-arrow-right"></i>
<button id="amily2_back_to_main_from_api_config" class="menu_button secondary small_button interactable amily2-vbtn">
<span class="vbtn-icon"><i class="fas fa-arrow-right"></i></span><span class="vbtn-label">返回主殿</span>
</button>
</div>
<hr class="header-divider" style="margin-top: 5px; margin-bottom: 10px;">
@@ -26,16 +26,16 @@
<label>当前密钥对指纹</label>
<div style="display:flex; gap:6px; align-items:center;">
<code id="amily2_keypair_fingerprint" style="flex:1; padding:4px 8px; background:var(--black30a); border-radius:4px; font-size:0.85em;">(未生成)</code>
<button id="amily2_generate_keypair" class="menu_button interactable small_button" title="生成新密钥对(会清除所有已加密的 Key">
<i class="fas fa-sync-alt"></i> 重新生成
<button id="amily2_generate_keypair" class="menu_button interactable small_button amily2-vbtn" title="生成新密钥对(会清除所有已加密的 Key">
<span class="vbtn-icon"><i class="fas fa-sync-alt"></i></span><span class="vbtn-label">重新生成</span>
</button>
</div>
<div style="display:flex; gap:6px; margin-top:6px; flex-wrap:wrap;">
<button id="amily2_export_key_bundle" class="menu_button interactable small_button" title="导出当前设备的私钥包,用于新设备恢复解密权限">
<i class="fas fa-download"></i> 导出私钥
<button id="amily2_export_key_bundle" class="menu_button interactable small_button amily2-vbtn" title="导出当前设备的私钥包,用于新设备恢复解密权限">
<span class="vbtn-icon"><i class="fas fa-download"></i></span><span class="vbtn-label">导出私钥</span>
</button>
<button id="amily2_import_key_bundle" class="menu_button interactable small_button" title="导入先前导出的私钥包,恢复云同步密钥的解密能力">
<i class="fas fa-upload"></i> 导入私钥
<button id="amily2_import_key_bundle" class="menu_button interactable small_button amily2-vbtn" title="导入先前导出的私钥包,恢复云同步密钥的解密能力">
<span class="vbtn-icon"><i class="fas fa-upload"></i></span><span class="vbtn-label">导入私钥</span>
</button>
<input id="amily2_import_key_bundle_input" type="file" accept=".json,application/json" style="display:none;" />
</div>
@@ -52,17 +52,17 @@
<div style="display:flex; gap:6px; margin-bottom:10px; flex-wrap:wrap;">
<button class="menu_button small_button amily2_profile_type_filter active" data-type="all">全部</button>
<button class="menu_button small_button amily2_profile_type_filter" data-type="chat">
<i class="fas fa-comments"></i> 对话模型
<button class="menu_button small_button amily2_profile_type_filter amily2-vbtn" data-type="chat">
<span class="vbtn-icon"><i class="fas fa-comments"></i></span><span class="vbtn-label">对话模型</span>
</button>
<button class="menu_button small_button amily2_profile_type_filter" data-type="embedding">
<i class="fas fa-project-diagram"></i> 向量嵌入
<button class="menu_button small_button amily2_profile_type_filter amily2-vbtn" data-type="embedding">
<span class="vbtn-icon"><i class="fas fa-project-diagram"></i></span><span class="vbtn-label">向量嵌入</span>
</button>
<button class="menu_button small_button amily2_profile_type_filter" data-type="rerank">
<i class="fas fa-sort-amount-down"></i> 重排序
<button class="menu_button small_button amily2_profile_type_filter amily2-vbtn" data-type="rerank">
<span class="vbtn-icon"><i class="fas fa-sort-amount-down"></i></span><span class="vbtn-label">重排序</span>
</button>
<button id="amily2_add_profile" class="menu_button small_button interactable" style="margin-left:auto;">
<i class="fas fa-plus"></i> 新建配置
<button id="amily2_add_profile" class="menu_button small_button interactable amily2-vbtn" style="margin-left:auto;">
<span class="vbtn-icon"><i class="fas fa-plus"></i></span><span class="vbtn-label">新建配置</span>
</button>
</div>
@@ -139,16 +139,16 @@
<div style="display:flex; gap:6px; align-items:stretch;">
<input id="amily2_pf_model" type="text" class="text_pole" placeholder="手动填写或点击「获取」" style="flex:1;" />
<select id="amily2_pf_model_select" class="text_pole" style="flex:1; display:none;"></select>
<button id="amily2_pf_fetch_models" class="menu_button small_button interactable" type="button" title="从 API 获取可用模型列表(需先填写地址和 Key">
<i class="fas fa-list"></i> 获取
<button id="amily2_pf_fetch_models" class="menu_button small_button interactable amily2-vbtn" type="button" title="从 API 获取可用模型列表(需先填写地址和 Key">
<span class="vbtn-icon"><i class="fas fa-list"></i></span><span class="vbtn-label">获取</span>
</button>
</div>
</div>
<!-- 测试连接 -->
<div style="display:flex; align-items:center; gap:10px; margin-bottom:10px;">
<button id="amily2_pf_test_conn" class="menu_button small_button interactable" type="button">
<i class="fas fa-plug"></i> 测试连接
<button id="amily2_pf_test_conn" class="menu_button small_button interactable amily2-vbtn" type="button">
<span class="vbtn-icon"><i class="fas fa-plug"></i></span><span class="vbtn-label">测试连接</span>
</button>
<span id="amily2_pf_test_result" style="font-size:0.85em;"></span>
</div>
@@ -222,11 +222,11 @@
<!-- 操作按钮 -->
<div style="display:flex; gap:8px; margin-top:16px;">
<button id="amily2_profile_modal_cancel" class="menu_button secondary interactable">
<i class="fas fa-times"></i> 取消
<button id="amily2_profile_modal_cancel" class="menu_button secondary interactable amily2-vbtn">
<span class="vbtn-icon"><i class="fas fa-times"></i></span><span class="vbtn-label">取消</span>
</button>
<button id="amily2_profile_modal_save" class="menu_button interactable">
<i class="fas fa-save"></i> 保存
<button id="amily2_profile_modal_save" class="menu_button interactable amily2-vbtn">
<span class="vbtn-icon"><i class="fas fa-save"></i></span><span class="vbtn-label">保存</span>
</button>
</div>
</div>

View File

@@ -0,0 +1,45 @@
<div class="settings-group" id="amily2_rule_config_panel_root">
<fieldset class="settings-group">
<legend><i class="fas fa-list-check"></i> 规则配置中心</legend>
<div style="display:flex; gap:16px; align-items:flex-start;">
<div style="width: 260px; flex-shrink:0;">
<div style="display:flex; gap:8px; margin-bottom:10px;">
<button id="amily2_rule_profile_new" class="menu_button small_button amily2-vbtn"><span class="vbtn-icon"><i class="fas fa-plus"></i></span><span class="vbtn-label">新建</span></button>
</div>
<div id="amily2_rule_profile_list" style="display:flex; flex-direction:column; gap:8px;"></div>
</div>
<div style="flex:1; min-width:0;">
<div class="amily2_settings_block">
<label for="amily2_rule_profile_name">配置名称</label>
<input id="amily2_rule_profile_name" class="text_pole" type="text" placeholder="例如:通用提取规则">
</div>
<div class="amily2_settings_block" style="margin-top:10px;">
<label><input id="amily2_rule_profile_tag_toggle" type="checkbox"> 启用标签提取</label>
</div>
<div id="amily2_rule_profile_tags_wrap" class="amily2_settings_block" style="display:none; margin-top:10px;">
<label for="amily2_rule_profile_tags">标签列表</label>
<textarea id="amily2_rule_profile_tags" class="text_pole" rows="3" placeholder="例如content,details,summary"></textarea>
</div>
<div class="amily2_settings_block" style="margin-top:10px;">
<label>排除规则</label>
<div id="amily2_rule_profile_rules" style="display:flex; flex-direction:column; gap:8px; margin:8px 0;"></div>
<button id="amily2_rule_profile_add_rule" class="menu_button small_button amily2-vbtn"><span class="vbtn-icon"><i class="fas fa-plus"></i></span><span class="vbtn-label">添加规则</span></button>
</div>
<div style="display:flex; gap:8px; margin-top:16px;">
<button id="amily2_rule_profile_save" class="menu_button menu_button_primary amily2-vbtn"><span class="vbtn-icon"><i class="fas fa-save"></i></span><span class="vbtn-label">保存</span></button>
<button id="amily2_rule_profile_delete" class="menu_button danger amily2-vbtn"><span class="vbtn-icon"><i class="fas fa-trash-alt"></i></span><span class="vbtn-label">删除</span></button>
<button id="amily2_back_to_main_from_rule_config" class="menu_button amily2-vbtn"><span class="vbtn-icon"><i class="fas fa-arrow-left"></i></span><span class="vbtn-label">返回</span></button>
</div>
</div>
</div>
</fieldset>
</div>
<style>
#amily2_rule_config_panel .amily2-rule-row,
#amily2_rule_config_panel_root .amily2-rule-row {
display: grid;
grid-template-columns: 1fr 1fr auto;
gap: 8px;
align-items: center;
}
</style>

View File

@@ -772,3 +772,18 @@ hr.header-divider {
padding-bottom: 8px;
border-bottom: 1px solid var(--SmartThemeBorderColor);
}
/* 图标在上、文字在下的垂直按钮 */
.amily2-vbtn {
display: inline-flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 3px;
padding: 8px 12px;
min-width: 56px;
text-align: center;
line-height: 1;
}
.amily2-vbtn .vbtn-icon { font-size: 1.15em; }
.amily2-vbtn .vbtn-label { font-size: 0.82em; white-space: nowrap; }