mirror of
https://github.com/Youzini-afk/ST-Bionic-Memory-Ecology.git
synced 2026-05-15 22:30:38 +08:00
feat: 重构配置工作区
This commit is contained in:
248
index.js
248
index.js
@@ -1568,254 +1568,6 @@ async function onReembedDirect() {
|
||||
await onRebuildVectorIndex();
|
||||
}
|
||||
|
||||
// ==================== 设置 UI ====================
|
||||
|
||||
function bindSettingsUI() {
|
||||
const settings = getSettings();
|
||||
|
||||
// 开关
|
||||
$("#st_bme_enabled")
|
||||
.prop("checked", settings.enabled)
|
||||
.on("change", function () {
|
||||
settings.enabled = $(this).prop("checked");
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
// 提取频率
|
||||
$("#st_bme_extract_every")
|
||||
.val(settings.extractEvery)
|
||||
.on("input", function () {
|
||||
settings.extractEvery = clampInt($(this).val(), 1, 1, 50);
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
$("#st_bme_extract_context_turns")
|
||||
.val(settings.extractContextTurns)
|
||||
.on("input", function () {
|
||||
settings.extractContextTurns = clampInt($(this).val(), 2, 0, 20);
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
// 召回开关
|
||||
$("#st_bme_recall_enabled")
|
||||
.prop("checked", settings.recallEnabled)
|
||||
.on("change", function () {
|
||||
settings.recallEnabled = $(this).prop("checked");
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
// LLM 精确召回
|
||||
$("#st_bme_recall_llm")
|
||||
.prop("checked", settings.recallEnableLLM)
|
||||
.on("change", function () {
|
||||
settings.recallEnableLLM = $(this).prop("checked");
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
$("#st_bme_recall_top_k")
|
||||
.val(settings.recallTopK)
|
||||
.on("input", function () {
|
||||
settings.recallTopK = clampInt($(this).val(), 15, 1, 100);
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
$("#st_bme_recall_max_nodes")
|
||||
.val(settings.recallMaxNodes)
|
||||
.on("input", function () {
|
||||
settings.recallMaxNodes = clampInt($(this).val(), 8, 1, 50);
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
// 注入深度
|
||||
$("#st_bme_inject_depth")
|
||||
.val(settings.injectDepth)
|
||||
.on("input", function () {
|
||||
settings.injectDepth = clampInt($(this).val(), 4, 0, 9999);
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
// 评分权重
|
||||
$("#st_bme_graph_weight")
|
||||
.val(settings.graphWeight)
|
||||
.on("input", function () {
|
||||
settings.graphWeight = clampFloat($(this).val(), 0.6, 0, 1);
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
$("#st_bme_vector_weight")
|
||||
.val(settings.vectorWeight)
|
||||
.on("input", function () {
|
||||
settings.vectorWeight = clampFloat($(this).val(), 0.3, 0, 1);
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
$("#st_bme_importance_weight")
|
||||
.val(settings.importanceWeight)
|
||||
.on("input", function () {
|
||||
settings.importanceWeight = clampFloat($(this).val(), 0.1, 0, 1);
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
// Embedding API
|
||||
$("#st_bme_embed_url")
|
||||
.val(settings.embeddingApiUrl)
|
||||
.on("input", function () {
|
||||
settings.embeddingApiUrl = $(this).val().trim();
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
$("#st_bme_embed_key")
|
||||
.val(settings.embeddingApiKey)
|
||||
.on("input", function () {
|
||||
settings.embeddingApiKey = $(this).val().trim();
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
$("#st_bme_embed_model")
|
||||
.val(settings.embeddingModel)
|
||||
.on("input", function () {
|
||||
settings.embeddingModel = $(this).val().trim();
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
// 操作按钮
|
||||
$("#st_bme_btn_view_graph").on("click", onViewGraph);
|
||||
$("#st_bme_btn_rebuild").on("click", onRebuild);
|
||||
$("#st_bme_btn_compress").on("click", onManualCompress);
|
||||
$("#st_bme_btn_export").on("click", onExportGraph);
|
||||
$("#st_bme_btn_import").on("click", onImportGraph);
|
||||
$("#st_bme_btn_view_injection").on("click", onViewLastInjection);
|
||||
$("#st_bme_btn_test_embed").on("click", onTestEmbedding);
|
||||
|
||||
// ====== v2 增强设置 UI 绑定 ======
|
||||
|
||||
// P0: 记忆进化
|
||||
$("#st_bme_evolution")
|
||||
.prop("checked", settings.enableEvolution)
|
||||
.on("change", function () {
|
||||
settings.enableEvolution = $(this).prop("checked");
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
$("#st_bme_evo_neighbors")
|
||||
.val(settings.evoNeighborCount)
|
||||
.on("input", function () {
|
||||
settings.evoNeighborCount = clampInt($(this).val(), 5, 1, 20);
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
$("#st_bme_evo_consolidate_every")
|
||||
.val(settings.evoConsolidateEvery)
|
||||
.on("input", function () {
|
||||
settings.evoConsolidateEvery = clampInt($(this).val(), 50, 1, 500);
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
// P0: 精确对照
|
||||
$("#st_bme_precise_conflict")
|
||||
.prop("checked", settings.enablePreciseConflict)
|
||||
.on("change", function () {
|
||||
settings.enablePreciseConflict = $(this).prop("checked");
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
$("#st_bme_conflict_threshold")
|
||||
.val(settings.conflictThreshold)
|
||||
.on("input", function () {
|
||||
settings.conflictThreshold = clampFloat($(this).val(), 0.85, 0.5, 0.99);
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
// P0: 全局概要
|
||||
$("#st_bme_synopsis")
|
||||
.prop("checked", settings.enableSynopsis)
|
||||
.on("change", function () {
|
||||
settings.enableSynopsis = $(this).prop("checked");
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
$("#st_bme_synopsis_every")
|
||||
.val(settings.synopsisEveryN)
|
||||
.on("input", function () {
|
||||
settings.synopsisEveryN = clampInt($(this).val(), 5, 1, 100);
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
// P1: 认知边界
|
||||
$("#st_bme_visibility")
|
||||
.prop("checked", settings.enableVisibility ?? false)
|
||||
.on("change", function () {
|
||||
settings.enableVisibility = $(this).prop("checked");
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
// P1: 交叉检索
|
||||
$("#st_bme_cross_recall")
|
||||
.prop("checked", settings.enableCrossRecall ?? false)
|
||||
.on("change", function () {
|
||||
settings.enableCrossRecall = $(this).prop("checked");
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
// P2: 惊奇度分割
|
||||
$("#st_bme_smart_trigger")
|
||||
.prop("checked", settings.enableSmartTrigger)
|
||||
.on("change", function () {
|
||||
settings.enableSmartTrigger = $(this).prop("checked");
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
$("#st_bme_trigger_patterns")
|
||||
.val(settings.triggerPatterns || "")
|
||||
.on("input", function () {
|
||||
settings.triggerPatterns = $(this).val();
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
$("#st_bme_smart_trigger_threshold")
|
||||
.val(settings.smartTriggerThreshold)
|
||||
.on("input", function () {
|
||||
settings.smartTriggerThreshold = clampInt($(this).val(), 2, 1, 10);
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
// P2: 主动遗忘
|
||||
$("#st_bme_sleep_cycle")
|
||||
.prop("checked", settings.enableSleepCycle)
|
||||
.on("change", function () {
|
||||
settings.enableSleepCycle = $(this).prop("checked");
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
$("#st_bme_forget_threshold")
|
||||
.val(settings.forgetThreshold)
|
||||
.on("input", function () {
|
||||
settings.forgetThreshold = clampFloat($(this).val(), 0.5, 0.1, 1);
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
$("#st_bme_sleep_every")
|
||||
.val(settings.sleepEveryN)
|
||||
.on("input", function () {
|
||||
settings.sleepEveryN = clampInt($(this).val(), 10, 1, 200);
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
// P2: 概率触发
|
||||
$("#st_bme_prob_recall")
|
||||
.prop("checked", settings.enableProbRecall)
|
||||
.on("change", function () {
|
||||
settings.enableProbRecall = $(this).prop("checked");
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
$("#st_bme_prob_chance")
|
||||
.val(settings.probRecallChance)
|
||||
.on("input", function () {
|
||||
settings.probRecallChance = clampFloat($(this).val(), 0.15, 0.01, 0.5);
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
// P2: 反思条目
|
||||
$("#st_bme_reflection")
|
||||
.prop("checked", settings.enableReflection)
|
||||
.on("change", function () {
|
||||
settings.enableReflection = $(this).prop("checked");
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
$("#st_bme_reflect_every")
|
||||
.val(settings.reflectEveryN)
|
||||
.on("input", function () {
|
||||
settings.reflectEveryN = clampInt($(this).val(), 10, 1, 200);
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
}
|
||||
|
||||
// ==================== 初始化 ====================
|
||||
|
||||
(async function init() {
|
||||
|
||||
Reference in New Issue
Block a user