Spaces:
Sleeping
Sleeping
| """proteus.cli.commands.memory — the ``memory`` subcommand (generate + save checkpoint).""" | |
| from __future__ import annotations | |
| import argparse | |
| import sys | |
| from proteus.game.agents import VanillaAgent | |
| from proteus.game.engine.difficulty import Difficulty | |
| from proteus.game.scenarios.base import list_scenarios | |
| from proteus.providers import make_provider | |
| from proteus.game.runtime.memory import save_checkpoint | |
| from proteus.game.runtime.memory_gen import generate_memory | |
| from proteus.cli.commands.run import _resolve_persona | |
| def _cmd_memory(args: argparse.Namespace) -> int: | |
| try: | |
| provider = make_provider(args.model) | |
| except ValueError as exc: | |
| print(str(exc), file=sys.stderr) | |
| return 2 | |
| if args.scenario not in list_scenarios(): | |
| print( | |
| f"Unknown scenario {args.scenario!r}. " | |
| f"Available scenarios: {', '.join(list_scenarios())}.", | |
| file=sys.stderr, | |
| ) | |
| return 2 | |
| persona, persona_err = _resolve_persona(args.persona) | |
| if persona_err is not None: | |
| print(persona_err, file=sys.stderr) | |
| return 2 | |
| agent = VanillaAgent(provider) | |
| ckpt = generate_memory( | |
| args.scenario, agent, | |
| difficulty=Difficulty(args.difficulty), seed=args.seed, | |
| memory_turns=args.memory_turns, model_name=provider.model_name, | |
| persona=persona, | |
| ) | |
| if args.out: | |
| from pathlib import Path | |
| path = Path(args.out) | |
| path.parent.mkdir(parents=True, exist_ok=True) | |
| path.write_text(ckpt.model_dump_json(), encoding="utf-8") | |
| written = path | |
| else: | |
| written = save_checkpoint(ckpt, root=args.memory_root) | |
| print( | |
| f"memory {ckpt.scenario} seed={ckpt.seed} {ckpt.difficulty} " | |
| f"model={ckpt.model} turns={len(ckpt.memory_turns)} -> {ckpt.outcome}" | |
| ) | |
| print(f"checkpoint written to {written}") | |
| return 0 | |