+
Analytics 配置
配置本地 Memind 生成页面的 Umami 统计。默认只连接本机 Umami,不涉及生产环境。
+ {error &&
{error}
}
+ {message &&
{message}
}
+
+ 本地 Umami
+
+
+
+
;
+}
diff --git a/src/admin/pages/MemoryV2Page.tsx b/src/admin/pages/MemoryV2Page.tsx
index b86d6eb..e21352a 100644
--- a/src/admin/pages/MemoryV2Page.tsx
+++ b/src/admin/pages/MemoryV2Page.tsx
@@ -31,6 +31,7 @@ type ModelBackendKey = 'mem0' | 'letta' | 'langgraph';
type CapabilityKey =
| 'candidateMemory'
+ | 'runtimeControl'
| 'policy'
| 'retriever'
| 'lifecycle'
@@ -42,7 +43,7 @@ type CapabilityKey =
type CapabilityField = {
key: string;
label: string;
- type: 'boolean' | 'number' | 'select';
+ type: 'boolean' | 'number' | 'select' | 'text';
options?: Array<{ value: string; label: string }>;
};
@@ -72,6 +73,34 @@ const CAPABILITIES: Array<{
{ key: 'persistenceEnabled', label: '持久化到 MySQL', type: 'boolean' },
],
},
+ {
+ key: 'runtimeControl',
+ label: 'Runtime 控制',
+ icon: 'A',
+ description: '独立于 Memory V2 总开关,控制 Agent 读取、注入、晋升与后续生命周期能力。',
+ fields: [
+ { key: 'agentResolveEnabled', label: '允许 Agent Resolve', type: 'boolean' },
+ { key: 'agentInjectionMode', label: 'Agent 注入模式', type: 'select', options: [
+ { value: 'off', label: 'Off · 关闭' },
+ { value: 'shadow', label: 'Shadow · 只观察不注入' },
+ { value: 'canary', label: 'Canary · 灰度注入' },
+ { value: 'active', label: 'Active · 正式注入' },
+ ] },
+ { key: 'agentCanaryUserIds', label: 'Canary 用户 ID(逗号分隔)', type: 'text' },
+ { key: 'agentResolveLimit', label: 'Agent 召回条数', type: 'number' },
+ { key: 'agentResolveTimeoutMs', label: 'Agent Resolve 超时 Ms', type: 'number' },
+ { key: 'promotionEnabled', label: '允许候选晋升正式记忆', type: 'boolean' },
+ { key: 'compactionV2Enabled', label: '启用 Compact V2', type: 'boolean' },
+ { key: 'reflectionEnabled', label: '启用 Reflection', type: 'boolean' },
+ { key: 'lifecycleWorkerEnabled', label: '启用 Lifecycle Worker', type: 'boolean' },
+ { key: 'lifecycleRolloutMode', label: 'Lifecycle 灰度模式', type: 'select', options: [
+ { value: 'off', label: 'Off · 关闭' },
+ { value: 'canary', label: 'Canary · 仅指定用户' },
+ { value: 'active', label: 'Active · 全量' },
+ ] },
+ { key: 'lifecycleRolloutUserIds', label: 'Lifecycle 用户 ID(逗号分隔)', type: 'text' },
+ ],
+ },
{
key: 'policy',
label: 'Policy',
@@ -315,6 +344,7 @@ function defaultConfig(): MemoryV2AdminConfig {
fallbackRoute: 'agent_orchestration',
},
candidateMemory: { enabled: false, mode: 'active', minImportance: '0.7', minConfidence: '0.8', maxPending: '500', persistenceEnabled: false },
+ runtimeControl: { agentResolveEnabled: false, agentInjectionMode: 'off', agentCanaryUserIds: '', agentResolveLimit: '3', agentResolveTimeoutMs: '1200', promotionEnabled: false, compactionV2Enabled: false, reflectionEnabled: false, lifecycleWorkerEnabled: false, lifecycleRolloutMode: 'off', lifecycleRolloutUserIds: '' },
policy: { enabled: false, saveExplicit: true, rejectSensitive: true, requireEvidence: true, retentionDays: '365' },
retriever: { enabled: false, episodicEnabled: true, semanticEnabled: true, preferenceEnabled: true, goalEnabled: true, limit: '12', tokenBudget: '1800', timeoutMs: '1200' },
lifecycle: { enabled: false, dedupeEnabled: true, conflictReview: true, decayEnabled: false, forgettingEnabled: true, compactIntervalHours: '24' },
@@ -339,6 +369,7 @@ function normalizeConfig(config?: Partial