mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-04-25 11:18:22 +00:00
* Add MVP memory management actions * Fix memory settings locale coverage * Polish memory management interactions * Add memory search and type filters * Refine memory settings review feedback * docs: simplify memory settings review setup * fix: restore memory updater compatibility helpers * fix: address memory settings review feedback * docs: soften memory sample review wording --------- Co-authored-by: Willem Jiang <willem.jiang@gmail.com> Co-authored-by: JeffJiang <for-eleven@hotmail.com>
82 lines
2.1 KiB
Python
82 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
"""Load the Memory Settings review sample into a local DeerFlow runtime."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
import json
|
|
import shutil
|
|
from datetime import datetime
|
|
from pathlib import Path
|
|
|
|
|
|
def default_source(repo_root: Path) -> Path:
|
|
return repo_root / "backend" / "docs" / "memory-settings-sample.json"
|
|
|
|
|
|
def default_target(repo_root: Path) -> Path:
|
|
return repo_root / "backend" / ".deer-flow" / "memory.json"
|
|
|
|
|
|
def parse_args(repo_root: Path) -> argparse.Namespace:
|
|
parser = argparse.ArgumentParser(
|
|
description="Copy the Memory Settings sample data into the local runtime memory file.",
|
|
)
|
|
parser.add_argument(
|
|
"--source",
|
|
type=Path,
|
|
default=default_source(repo_root),
|
|
help="Path to the sample JSON file.",
|
|
)
|
|
parser.add_argument(
|
|
"--target",
|
|
type=Path,
|
|
default=default_target(repo_root),
|
|
help="Path to the runtime memory.json file.",
|
|
)
|
|
parser.add_argument(
|
|
"--no-backup",
|
|
action="store_true",
|
|
help="Overwrite the target without writing a backup copy first.",
|
|
)
|
|
return parser.parse_args()
|
|
|
|
|
|
def validate_json_file(path: Path) -> None:
|
|
with path.open(encoding="utf-8") as handle:
|
|
json.load(handle)
|
|
|
|
|
|
def main() -> int:
|
|
repo_root = Path(__file__).resolve().parents[1]
|
|
args = parse_args(repo_root)
|
|
|
|
source = args.source.resolve()
|
|
target = args.target.resolve()
|
|
|
|
if not source.exists():
|
|
raise SystemExit(f"Sample file not found: {source}")
|
|
|
|
validate_json_file(source)
|
|
target.parent.mkdir(parents=True, exist_ok=True)
|
|
|
|
backup_path: Path | None = None
|
|
if target.exists() and not args.no_backup:
|
|
timestamp = datetime.now().strftime("%Y%m%d-%H%M%S")
|
|
backup_path = target.with_name(f"{target.name}.bak-{timestamp}")
|
|
shutil.copy2(target, backup_path)
|
|
|
|
shutil.copy2(source, target)
|
|
|
|
print(f"Loaded sample memory into: {target}")
|
|
if backup_path is not None:
|
|
print(f"Backup created at: {backup_path}")
|
|
else:
|
|
print("No backup created.")
|
|
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|