feat(operations): הוספת codex_local לסרגל-חירום + סקריפט A/B-benchmark
- adapter_profiles.py: codex_local.default_model = gpt-5.5 (עדכון מ-gpt-5.3-codex) - agent-adapters-panel.tsx: כפתור "העבר הכל ל-Codex ⚡" בסרגל-החירום (ב-G/Codex fallback) - operations.ts: הוספת codex_local לדוקומנטציה של useAdapterMigrate - ab_halacha_codex.py: סקריפט A/B חדש — חילוץ הלכות דרך codex exec/gpt-5.5 (non-destructive benchmark) - SCRIPTS.md: תיעוד ab_halacha_codex.py Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -6,8 +6,8 @@ flip. Each adapter family differs on three axes that, if not reconciled, crash
|
||||
the agent immediately or degrade it silently:
|
||||
|
||||
1. model id ↔ provider — each adapter expects a model from its own provider
|
||||
(claude-* / gemini-* / deepseek-*). Wrong/foreign id fails or silently
|
||||
falls back to the adapter default.
|
||||
(claude-* / gemini-* / deepseek-* / OpenAI Codex-capable ids). Wrong or
|
||||
foreign ids fail or silently fall back to the adapter default.
|
||||
2. instructions transport —
|
||||
• file_path adapters pass the instructions file as a *path*
|
||||
(`claude --append-system-prompt-file`); the CLI parses it,
|
||||
@@ -27,8 +27,8 @@ Keeping these facts in one declarative registry makes "migrate any agent to any
|
||||
adapter" data-driven: adding a future adapter (codex_local, grok_local, ...) is
|
||||
one new entry here. Consumed by scripts/migrate_agent_adapter.py.
|
||||
|
||||
Verified 2026-06-13 against the installed adapter packages
|
||||
(`@paperclipai/adapter-{claude,gemini}-local`, in-repo
|
||||
Verified 2026-06-17 against the installed adapter packages
|
||||
(`@paperclipai/adapter-{claude,gemini,codex}-local`, in-repo
|
||||
`adapters/deepseek-paperclip-adapter`) and the live Paperclip agents table.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
@@ -60,6 +60,19 @@ ADAPTER_PROFILES: dict[str, dict] = {
|
||||
"frontmatter_safe": False,
|
||||
"tool_config": "hermes",
|
||||
},
|
||||
"codex_local": {
|
||||
"provider": "codex",
|
||||
"default_model": "gpt-5.5",
|
||||
"instructions_mode": "content_arg",
|
||||
"frontmatter_safe": False,
|
||||
"tool_config": "codex_home",
|
||||
"model_prefixes": (
|
||||
"gpt-",
|
||||
"o3",
|
||||
"o4",
|
||||
"codex-",
|
||||
),
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -89,5 +102,8 @@ def model_matches_provider(model: str, adapter_type: str) -> bool:
|
||||
default model, which is by definition in-family."""
|
||||
if not model:
|
||||
return True
|
||||
provider = get_profile(adapter_type)["provider"]
|
||||
return model.startswith(provider)
|
||||
profile = get_profile(adapter_type)
|
||||
prefixes = profile.get("model_prefixes")
|
||||
if prefixes:
|
||||
return model.startswith(tuple(prefixes))
|
||||
return model.startswith(profile["provider"])
|
||||
|
||||
Reference in New Issue
Block a user