()
| 510 | # ── Main ───────────────────────────────────────────────────────────────────── |
| 511 | |
| 512 | def main() -> None: |
| 513 | args = parse_args() |
| 514 | cfg = load_config(args) |
| 515 | |
| 516 | print(f"\n{'='*60}") |
| 517 | print(f" SkillOpt — Executive Strategy for Self-Evolving Agent Skills") |
| 518 | print(f"{'='*60}") |
| 519 | print(f" env: {cfg.get('env')}") |
| 520 | print(f" optimizer_model: {cfg.get('optimizer_model')}") |
| 521 | print(f" target_model: {cfg.get('target_model')}") |
| 522 | print(f" optimizer_backend:{cfg.get('optimizer_backend', 'openai_chat')}") |
| 523 | print(f" target_backend:{cfg.get('target_backend', 'openai_chat')}") |
| 524 | print(f" reasoning: {cfg.get('reasoning_effort') or 'off'}") |
| 525 | print(f" rewrite_effort: {cfg.get('rewrite_reasoning_effort') or 'off'}") |
| 526 | print(f" epochs: {cfg.get('num_epochs')}") |
| 527 | print(f" train_size: {cfg.get('train_size') or 'from dataset'}") |
| 528 | print(f" steps/epoch: auto") |
| 529 | print(f" batch_size: {cfg.get('batch_size')}") |
| 530 | print(f" edit_budget: {cfg.get('edit_budget')}") |
| 531 | print(f" lr_scheduler: {cfg.get('lr_scheduler', 'constant')}") |
| 532 | print(f" update_mode: {cfg.get('skill_update_mode', 'patch')}") |
| 533 | print(f" min_edit_budget:{cfg.get('min_edit_budget', 2)}") |
| 534 | print(f" minibatch_size: {cfg.get('minibatch_size')}") |
| 535 | print(f" seed: {cfg.get('seed')}") |
| 536 | print(f" meta_skill: {cfg.get('use_meta_skill', False)}") |
| 537 | print(f" skill_aware_reflection: {cfg.get('use_skill_aware_reflection', False)}") |
| 538 | print(f" slow_update: {cfg.get('use_slow_update', False)}") |
| 539 | print(f" out_root: {cfg.get('out_root')}") |
| 540 | print(f"{'='*60}\n") |
| 541 | |
| 542 | # Build adapter |
| 543 | adapter = get_adapter(cfg) |
| 544 | |
| 545 | # Build trainer and run |
| 546 | from skillopt.engine.trainer import ReflACTTrainer |
| 547 | trainer = ReflACTTrainer(cfg, adapter) |
| 548 | summary = trainer.train() |
| 549 | |
| 550 | print(f"\n Output saved to: {cfg['out_root']}") |
| 551 | if summary.get("test_hard") is not None: |
| 552 | print(f" Final test: {summary['test_hard']:.4f}") |
| 553 | |
| 554 | |
| 555 | if __name__ == "__main__": |
no test coverage detected