From 342e53df021c97811e673309cdfd13131b8cc22f Mon Sep 17 00:00:00 2001 From: sorrow404null Date: Thu, 17 Sep 2026 16:40:02 +0800 Subject: [PATCH] fix(agent): make compaction settings dataclass compatible with Python 3.11+ Use field(default_factory=...) instead of a mutable-default-class instance, which Python 3.11+ dataclasses reject at import time. --- core/agent/compaction.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/agent/compaction.py b/core/agent/compaction.py index 8947eef..01cd9bb 100644 --- a/core/agent/compaction.py +++ b/core/agent/compaction.py @@ -365,7 +365,11 @@ class CompactionPreparation: tokens_before: int = 0 previous_summary: Optional[str] = None file_ops: FileOperations = field(default_factory=FileOperations) - settings: CompactionSettings = DEFAULT_COMPACTION_SETTINGS + # 注意(P2-04 跨平台修复):Python 3.11+ 的 dataclass 禁止不可哈希默认值 + # (eq dataclass 实例 __hash__=None);Ubuntu 24.04 自带 3.12, + # 直接写 `= DEFAULT_COMPACTION_SETTINGS` 在 3.11+ 会 ValueError。 + # default_factory 返回同一共享实例,与 3.10 行为完全一致。 + settings: CompactionSettings = field(default_factory=lambda: DEFAULT_COMPACTION_SETTINGS) def _compaction_diag(line: str) -> None: