diff --git a/assets/Amily2-optimization.html b/assets/Amily2-optimization.html
new file mode 100644
index 0000000..c26cad9
--- /dev/null
+++ b/assets/Amily2-optimization.html
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 开启后,会将角色绑定的世界书内容作为参考信息发送给API。
+
+
+
+
+
+
+ 从最近的聊天历史中提取指定数量的条目作为上下文发送。
+
+
+
+
+
+
+
+ 从上到下对准备发送到上下文中的世界书内容进行一个按照对应字符数量的截断,防止世界书内容过多引起AI不正常回复。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
勾选需要启用的世界书。插件将只从选定的世界书中读取条目。
+
+
+
+
+
+
+
+
+
下方会列出当前模式(手动或角色卡)下所有可用世界书的条目。请勾选需要启用的条目。
+
+
+
+
diff --git a/assets/amily2-modal.html b/assets/amily2-modal.html
index 12fa558..52e5613 100644
--- a/assets/amily2-modal.html
+++ b/assets/amily2-modal.html
@@ -97,10 +97,13 @@
-
@@ -175,22 +178,34 @@
+
+
+
+
+
+
+
+
-
-
-
-
-
勾选后将通过SillyTavern后端获取模型,无需填写API Key。
-
+
+
+
+
+
+
diff --git a/assets/optimization.css b/assets/optimization.css
new file mode 100644
index 0000000..24d540e
--- /dev/null
+++ b/assets/optimization.css
@@ -0,0 +1,221 @@
+/* --- Amily2 剧情优化面板统一样式 --- */
+
+#amily2_plot_optimization_panel .amily2-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 0 5px;
+ width: 100%;
+}
+
+#amily2_plot_optimization_panel .additional-features-title {
+ font-size: 1.2em;
+ font-weight: bold;
+ color: #eee;
+}
+
+#amily2_plot_optimization_panel .additional-features-title i {
+ margin-right: 8px;
+ color: #7e57c2;
+}
+
+#amily2_plot_optimization_panel hr.header-divider {
+ border: none;
+ border-top: 1px solid rgba(255,255,255,0.1);
+}
+
+#amily2_plot_optimization_panel .settings-group {
+ border: 1px solid rgba(255, 255, 255, 0.2);
+ border-radius: 8px;
+ padding: 15px;
+ margin: 0 0 20px 0;
+ display: flex;
+ flex-direction: column;
+ gap: 15px;
+}
+
+#amily2_plot_optimization_panel .settings-group legend {
+ font-size: 1.1em;
+ font-weight: bold;
+ color: #eee;
+ padding: 0 10px;
+ margin-left: 10px;
+}
+
+#amily2_plot_optimization_panel .settings-group legend > i {
+ margin-right: 8px;
+ color: #7e57c2;
+}
+
+#amily2_plot_optimization_panel .amily2_opt_settings_block,
+#amily2_plot_optimization_panel .amily2_opt_settings_block_radio {
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+}
+
+#amily2_plot_optimization_panel .amily2_opt_settings_block label,
+#amily2_plot_optimization_panel .amily2_opt_settings_block_radio > label {
+ font-weight: bold;
+ color: #ddd;
+ margin-bottom: 0;
+}
+
+#amily2_plot_optimization_panel .amily2_opt_settings_block .notes,
+#amily2_plot_optimization_panel .amily2_opt_settings_block_hint {
+ font-size: 0.8em;
+ color: #aaa;
+ opacity: 0.9;
+ font-style: italic;
+ align-self: flex-start;
+ padding-left: 5px;
+ margin-top: 0;
+}
+
+#amily2_plot_optimization_panel .settings-group > .amily2_opt_settings_block:nth-child(2),
+#amily2_plot_optimization_panel .settings-group > .amily2_opt_settings_block:nth-child(3) {
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+}
+#amily2_plot_optimization_panel .settings-group > .amily2_opt_settings_block:nth-child(2) .notes,
+#amily2_plot_optimization_panel .settings-group > .amily2_opt_settings_block:nth-child(3) .notes {
+ flex-basis: 50%;
+ text-align: right;
+ padding-left: 10px;
+}
+
+
+#amily2_plot_optimization_panel .amily2_opt_preset_selector_wrapper {
+ display: flex;
+ gap: 5px;
+ align-items: center;
+}
+#amily2_plot_optimization_panel .amily2_opt_preset_selector_wrapper select {
+ flex-grow: 1;
+}
+#amily2_plot_optimization_panel .amily2_opt_preset_selector_wrapper .menu_button {
+ padding: 0 10px;
+}
+
+#amily2_plot_optimization_panel .settings-group .settings-group {
+ padding: 10px;
+ border-style: dashed;
+}
+#amily2_plot_optimization_panel .settings-group .settings-group .amily2_opt_settings_block {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 15px;
+}
+
+#amily2_plot_optimization_panel .amily2_opt_label_with_button_wrapper,
+#amily2_plot_optimization_panel .amily2_opt_label_with_controls_wrapper {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
+#amily2_plot_optimization_panel .amily2_opt_reset_button {
+ background-color: transparent;
+ border: none;
+}
+
+#amily2_plot_optimization_panel .toggle-switch {
+ position: relative; display: inline-block; width: 50px; height: 26px; flex-shrink: 0;
+}
+#amily2_plot_optimization_panel .toggle-switch input { opacity: 0; width: 0; height: 0; }
+#amily2_plot_optimization_panel .slider {
+ position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0;
+ background-color: #333; border-radius: 26px; transition: .4s;
+}
+#amily2_plot_optimization_panel .slider:before {
+ position: absolute; content: ""; height: 20px; width: 20px; left: 3px; bottom: 3px;
+ background-color: white; border-radius: 50%; transition: .4s;
+}
+#amily2_plot_optimization_panel input:checked + .slider { background-color: #7e57c2; }
+#amily2_plot_optimization_panel input:checked + .slider:before { transform: translateX(24px); }
+
+#amily2_plot_optimization_panel .amily2_opt_radio_group {
+ display: flex;
+ border: 1px solid #555;
+ border-radius: 8px;
+ overflow: hidden;
+}
+#amily2_plot_optimization_panel .amily2_opt_radio_group input[type="radio"] { display: none; }
+#amily2_plot_optimization_panel .amily2_opt_radio_group label {
+ flex: 1;
+ text-align: center;
+ padding: 8px 10px;
+ cursor: pointer;
+ background-color: #333;
+ color: #ccc;
+ transition: all 0.3s ease;
+ border-left: 1px solid #555;
+ margin: 0 !important;
+ font-weight: normal !important;
+}
+#amily2_plot_optimization_panel .amily2_opt_radio_group label:first-of-type { border-left: none; }
+#amily2_plot_optimization_panel .amily2_opt_radio_group input[type="radio"]:checked + label {
+ background-color: #7e57c2;
+ color: white;
+ font-weight: bold !important;
+}
+
+#amily2_plot_optimization_panel .amily2_opt_model_selector_wrapper {
+ display: flex;
+ gap: 5px;
+}
+#amily2_plot_optimization_panel .amily2_opt_model_selector_wrapper select {
+ flex-grow: 1;
+}
+
+#amily2_plot_optimization_panel #amily2_opt_worldbook_entry_controls {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+#amily2_plot_optimization_panel #amily2_opt_worldbook_entry_count {
+ font-size: 0.9em;
+ color: #ccc;
+}
+
+#amily2_plot_optimization_panel .amily2_opt_worldbook_entry_list {
+ max-height: 200px;
+ overflow-y: auto;
+ border: 1px solid #444;
+ padding: 10px;
+ border-radius: 8px;
+ background-color: #1A1A1A;
+ margin-top: 8px;
+}
+
+#amily2_plot_optimization_panel .amily2_opt_footer {
+ text-align: center;
+ padding-top: 15px;
+ margin-top: 10px;
+}
+#amily2_plot_optimization_panel .amily2_opt_footer .notes {
+ font-size: 0.8em;
+ color: #aaa;
+ opacity: 0.9;
+ font-style: italic;
+}
+
+/* Override default .text_pole styles for the multi-select worldbook list */
+#amily2_plot_optimization_panel #amily2_opt_selected_worldbooks[multiple] {
+ height: auto !important; /* Allow the 'size' attribute to determine the height */
+ padding: 5px;
+ background-color: var(--bg1) !important;
+ border: 1px solid var(--border);
+ -webkit-appearance: none !important; /* Remove default appearance */
+ appearance: none !important;
+}
+
+#amily2_plot_optimization_panel #amily2_opt_selected_worldbooks[multiple] option {
+ padding: 5px;
+ border-bottom: 1px solid var(--border);
+}
+
+#amily2_plot_optimization_panel #amily2_opt_selected_worldbooks[multiple] option:checked {
+ background-color: var(--accent);
+ color: var(--text_light);
+}