fix(hindsight): specify UTF-8 encoding for file I/O on Windows

On Windows with CJK locales (e.g. Chinese/GBK), pathlib.Path.read_text()
defaults to the system encoding instead of UTF-8, causing UnicodeDecodeError
when reading .env or .json config files that contain non-ASCII characters.

Explicitly pass encoding='utf-8' to all read_text() and write_text() calls
in the hindsight memory provider plugin.
This commit is contained in:
jeay 2026-07-02 09:18:45 +08:00 committed by Teknium
parent 411a686de2
commit e02170f54a

View file

@ -895,7 +895,7 @@ class HindsightMemoryProvider(MemoryProvider):
env_path = Path(hermes_home) / ".env"
existing_llm_key = ""
if env_path.exists():
for line in env_path.read_text().splitlines():
for line in env_path.read_text(encoding="utf-8").splitlines():
if line.startswith("HINDSIGHT_LLM_API_KEY="):
existing_llm_key = line.split("=", 1)[1]
break
@ -925,7 +925,7 @@ class HindsightMemoryProvider(MemoryProvider):
env_path.parent.mkdir(parents=True, exist_ok=True)
existing_lines = []
if env_path.exists():
existing_lines = env_path.read_text().splitlines()
existing_lines = env_path.read_text(encoding="utf-8").splitlines()
updated_keys = set()
new_lines = []
for line in existing_lines:
@ -938,7 +938,7 @@ class HindsightMemoryProvider(MemoryProvider):
for k, v in env_writes.items():
if k not in updated_keys:
new_lines.append(f"{k}={v}")
env_path.write_text("\n".join(new_lines) + "\n")
env_path.write_text("\n".join(new_lines) + "\n", encoding="utf-8")
if mode == "local_embedded":
materialized_config = dict(provider_config)