Skip to content

Commit b030e28

Browse files
committed
fix(memory): add dream schedule toggle
1 parent af13614 commit b030e28

17 files changed

Lines changed: 102 additions & 25 deletions

File tree

console/src/api/types/agent.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ export interface EmbeddingModelConfig {
5353
export interface ReMeLightMemoryConfig {
5454
summarize_when_compact: boolean;
5555
auto_memory_interval: number | null;
56+
dream_cron_enabled: boolean;
5657
dream_cron: string;
5758
auto_memory_search_config: AutoMemorySearchConfig;
5859
embedding_model_config: EmbeddingModelConfig;

console/src/locales/en.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2032,8 +2032,10 @@
20322032
"memorySummaryTitle": "Long-term Memory Config",
20332033
"memorySummaryEnabled": "Activate Memory Summary",
20342034
"memorySummaryEnabledTooltip": "Automatically generate and save memory summaries during context compaction",
2035-
"dreamCron": "Dream",
2036-
"dreamCronTooltip": "Cron expression for periodically optimizing long-term memories through dream state (leave empty to disable)",
2035+
"dreamCronEnabled": "Enable Dream",
2036+
"dreamCronEnabledTooltip": "Enable the scheduled dream-based memory optimization job",
2037+
"dreamCron": "Dream Schedule",
2038+
"dreamCronTooltip": "Cron expression for periodically optimizing long-term memories through dream state; use the switch above to enable or disable it",
20372039
"dreamCronPlaceholder": "0 23 * * *",
20382040
"autoMemorySearch": "Auto Memory Search (Beta)",
20392041
"autoMemorySearchTooltip": "Auto memory search to run on every conversation turn. Each query will automatically invoke memory search capabilities, helping QwenPaw understand you better — but this increases token consumption.",

console/src/locales/id.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2051,8 +2051,10 @@
20512051
"memorySummaryTitle": "Konfigurasi Memori Jangka Panjang",
20522052
"memorySummaryEnabled": "Aktifkan Ringkasan Memori",
20532053
"memorySummaryEnabledTooltip": "Secara otomatis menghasilkan dan menyimpan ringkasan memori selama kompaksi konteks",
2054-
"dreamCron": "Mimpi",
2055-
"dreamCronTooltip": "Ekspresi cron untuk mengoptimalkan memori jangka panjang secara berkala melalui status mimpi (biarkan kosong untuk menonaktifkan)",
2054+
"dreamCronEnabled": "Aktifkan Mimpi",
2055+
"dreamCronEnabledTooltip": "Aktifkan tugas terjadwal untuk mengoptimalkan memori berbasis mimpi",
2056+
"dreamCron": "Jadwal Mimpi",
2057+
"dreamCronTooltip": "Ekspresi cron untuk mengoptimalkan memori jangka panjang melalui status mimpi; gunakan sakelar di atas untuk mengaktifkan atau menonaktifkan",
20562058
"dreamCronPlaceholder": "0 23 * * *",
20572059
"autoMemorySearch": "Pencarian Memori Otomatis (Beta)",
20582060
"autoMemorySearchTooltip": "Pencarian memori otomatis untuk dijalankan pada setiap giliran percakapan.",

console/src/locales/ja.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1647,8 +1647,10 @@
16471647
"memorySummaryTitle": "長期記憶設定",
16481648
"memorySummaryEnabled": "記憶まとめを起動",
16491649
"memorySummaryEnabledTooltip": "コンテキスト圧縮時に自動的に記憶サマリーを生成・保存します",
1650-
"dreamCron": "ドリームベースの記憶最適化",
1651-
"dreamCronTooltip": "ドリーム状態を通じて定期的に長期記憶を最適化するためのCron式(空欄で無効化)",
1650+
"dreamCronEnabled": "ドリームを有効化",
1651+
"dreamCronEnabledTooltip": "Cron によるドリームベースの記憶最適化タスクを有効にします",
1652+
"dreamCron": "ドリームスケジュール",
1653+
"dreamCronTooltip": "ドリーム状態を通じて定期的に長期記憶を最適化するCron式です。実行は上のスイッチで切り替えます",
16521654
"dreamCronPlaceholder": "0 23 * * *",
16531655
"autoMemorySearch": "自動記憶検索(Beta)",
16541656
"autoMemorySearchTooltip": "毎回の会話で記憶検索を自動実行します。各クエリで自動的に記憶検索機能を呼び出し、QwenPawがあなたをより理解できますが、トークン消費が増加します。",

console/src/locales/pt-BR.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1882,8 +1882,10 @@
18821882
"memorySummaryTitle": "Long-term Memory Configuracao",
18831883
"memorySummaryEnabled": "Activate Memory Summary",
18841884
"memorySummaryEnabledTooltip": "Automatically generate and save memory summaries during context compaction",
1885-
"dreamCron": "Dream",
1886-
"dreamCronTooltip": "Cron expression for periodically optimizing long-term memories through dream state (leave empty to disable)",
1885+
"dreamCronEnabled": "Ativar Dream",
1886+
"dreamCronEnabledTooltip": "Ativa a tarefa agendada de otimização de memória por Dream",
1887+
"dreamCron": "Agendamento do Dream",
1888+
"dreamCronTooltip": "Expressão Cron para otimizar periodicamente memórias de longo prazo; use o interruptor acima para ativar ou desativar",
18871889
"dreamCronPlaceholder": "0 23 * * *",
18881890
"autoMemorySearch": "Busca automática na memória (Beta)",
18891891
"autoMemorySearchTooltip": "Auto memory search to run on every conversation turn. Each query will automatically invoke memory search capabilities, helping QwenPaw understand you better — but this increases token consumption.",

console/src/locales/ru.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1662,8 +1662,10 @@
16621662
"memorySummaryTitle": "Настройки долгосрочной памяти",
16631663
"memorySummaryEnabled": "Запустить сводку памяти",
16641664
"memorySummaryEnabledTooltip": "Автоматически генерировать и сохранять сводки памяти при сжатии контекста",
1665-
"dreamCron": "Оптимизация памяти через сновидения",
1666-
"dreamCronTooltip": "Cron-выражение для периодической оптимизации долгосрочных воспоминаний через состояние сновидения (оставьте пустым, чтобы отключить)",
1665+
"dreamCronEnabled": "Включить сновидения",
1666+
"dreamCronEnabledTooltip": "Включить плановое задание оптимизации памяти через сновидения",
1667+
"dreamCron": "Расписание сновидений",
1668+
"dreamCronTooltip": "Cron-выражение для периодической оптимизации долгосрочных воспоминаний через состояние сновидения; используйте переключатель выше для включения или отключения",
16671669
"dreamCronPlaceholder": "0 23 * * *",
16681670
"autoMemorySearch": "Автоматический поиск по памяти (Beta)",
16691671
"autoMemorySearchTooltip": "Автоматически запускать поиск по памяти при каждом диалоге. Каждый запрос будет автоматически вызывать функцию поиска по памяти, помогая QwenPaw лучше понять вас — но это увеличивает расход токенов.",

console/src/locales/zh.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1891,8 +1891,10 @@
18911891
"memorySummaryTitle": "长期记忆配置",
18921892
"memorySummaryEnabled": "启动记忆总结",
18931893
"memorySummaryEnabledTooltip": "在上下文压缩时自动生成并保存记忆总结",
1894-
"dreamCron": "梦境",
1895-
"dreamCronTooltip": "设置梦境任务自动整理和优化长期记忆(留空则禁用)",
1894+
"dreamCronEnabled": "启用梦境任务",
1895+
"dreamCronEnabledTooltip": "启用按 Cron 定时执行的梦境记忆优化任务",
1896+
"dreamCron": "梦境定时",
1897+
"dreamCronTooltip": "设置梦境任务自动整理和优化长期记忆,是否执行由上方开关控制",
18961898
"dreamCronPlaceholder": "0 23 * * *",
18971899
"autoMemorySearch": "自动记忆搜索(Beta)",
18981900
"autoMemorySearchTooltip": "每轮对话都自动触发记忆搜索。每次 query 进来都会自动调用记忆搜索能力,让 QwenPaw 更懂你,但会增加 token 消耗。",

console/src/pages/Agent/Config/components/ReMeLightMemoryCard.tsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ export function ReMeLightMemoryCard() {
6464
"embedding_model_config",
6565
"model_name",
6666
]);
67+
const dreamCronEnabled =
68+
Form.useWatch(["reme_light_memory_config", "dream_cron_enabled"]) ?? true;
6769
const normalizedBackend = String(backend);
6870
const showApiKey = normalizedBackend !== "ollama";
6971
const showBaseUrl = normalizedBackend !== "gemini";
@@ -101,13 +103,24 @@ export function ReMeLightMemoryCard() {
101103
/>
102104
</Form.Item>
103105

106+
<Form.Item
107+
label={t("agentConfig.dreamCronEnabled")}
108+
name={["reme_light_memory_config", "dream_cron_enabled"]}
109+
valuePropName="checked"
110+
tooltip={t("agentConfig.dreamCronEnabledTooltip")}
111+
>
112+
<Switch />
113+
</Form.Item>
114+
104115
<Form.Item
105116
label={t("agentConfig.dreamCron")}
106117
name={["reme_light_memory_config", "dream_cron"]}
107118
tooltip={t("agentConfig.dreamCronTooltip")}
108-
normalize={(value) => value ?? ""}
109119
>
110-
<Input placeholder={t("agentConfig.dreamCronPlaceholder")} />
120+
<Input
121+
disabled={!dreamCronEnabled}
122+
placeholder={t("agentConfig.dreamCronPlaceholder")}
123+
/>
111124
</Form.Item>
112125

113126
<Form.Item

src/qwenpaw/config/config.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -703,10 +703,17 @@ class ReMeLightMemoryConfig(BaseModel):
703703
"background task burden.",
704704
)
705705

706+
dream_cron_enabled: bool = Field(
707+
default=True,
708+
description=(
709+
"Whether to enable the dream-based memory optimization job"
710+
),
711+
)
712+
706713
dream_cron: str = Field(
707714
default="0 23 * * *",
708715
description="Cron expression for dream-based memory optimization job "
709-
"(empty to disable)",
716+
"(empty string is ignored; use dream_cron_enabled to disable)",
710717
)
711718

712719
auto_memory_search_config: AutoMemorySearchConfig = Field(

src/qwenpaw/config/utils.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -750,13 +750,16 @@ def get_dream_cron(agent_id: Optional[str] = None) -> str:
750750
root config.agents.defaults (legacy behavior).
751751
752752
Returns:
753-
str: Cron expression for dream-based memory optimization job, or empty
754-
string if disabled.
753+
str: Cron expression for dream-based memory optimization job, or an
754+
empty string if disabled.
755755
"""
756756
if agent_id is not None:
757757
try:
758758
agent_config = load_agent_config(agent_id)
759-
return agent_config.running.reme_light_memory_config.dream_cron
759+
memory_config = agent_config.running.reme_light_memory_config
760+
if not getattr(memory_config, "dream_cron_enabled", True):
761+
return ""
762+
return memory_config.dream_cron
760763
except Exception:
761764
return ""
762765
# Legacy: return empty string if no agent_id provided

0 commit comments

Comments
 (0)