feat(drafting): טיוטת-ביניים דטרמיניסטית — נעיצת Opus 4.8 + effort per-בלוק (#204)
מנגנון-הייצור (claude_session→claude -p) לא העביר model/effort: BLOCK_CONFIG הגדיר temp+model per-בלוק שהיו מטא-דאטה-מת (block_writer.py:447 העביר רק prompt/timeout/tools). הייצור רץ על מודל ברירת-המחדל של ה-CLI עם פרומפטים-חופשיים → מקור אי-העקביות בטיוטת-הביניים. תיקון (עקביות-מבנית, WS5): - נעיצת model="claude-opus-4-8" (GENERATION_MODEL) לכל בלוקי-ה-AI + effort per-בלוק שמועבר בפועל דרך claude_session.query → `claude -p --model --effort`. מפת-effort: ה=medium · ו=medium · ז=high · ח=medium · ט=high · יא=high · י=xhigh. - ניסוח-פתיחה קבוע לבלוק-ה (תמיד "לפנינו ערר…", סוף ל-OR "עניינה של החלטה זו"). - מבנה-פנימי קבוע לבלוק-ה; סדר-בלוקים בייצוא כבר קבוע (_INTERIM_BLOCK_ORDER). - הסרת שדות temp/model המתים מ-BLOCK_CONFIG; "temp" deprecated (Opus 4.7/4.8 דוחים temperature→400). decision_blocks.temperature נשמר=0 לתאימות-עמודה בלבד. - timeout נגזר מ-effort (לא מפיצול sonnet/opus שכבר לא קיים). - עדכון endpoint reference /api/settings/mcp/blocks + blocks-tab + McpBlock לחשוף effort. - ספ: docs/block-schema.md §3 (effort מחליף temperature), docs/spec/06-export.md (דטרמיניזם-מבני של טיוטת-הביניים). G2 (מקור-אמת יחיד) — אין מסלול-ייצור מקביל: write_interim_draft מתזמר את אותו write_and_store_block→write_block של ההחלטה המלאה. claude_session-local-only — הייצור נשאר דרך גשר-ה-CLI, לא SDK/קונטיינר. INV-EX1 — סדר-ייצוא דטרמיניסטי נשמר; G11 — עקרונות-הכתיבה ל-12 הבלוקים נשמרים. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
10
web/app.py
10
web/app.py
@@ -4626,15 +4626,21 @@ async def api_mcp_blocks():
|
||||
"block-yod-alef": "Disposition",
|
||||
"block-yod-bet": "Disposition (signatures)",
|
||||
}
|
||||
from legal_mcp.services.block_writer import GENERATION_MODEL
|
||||
|
||||
blocks = []
|
||||
for block_id, cfg in sorted(BLOCK_CONFIG.items(), key=lambda kv: kv[1]["index"]):
|
||||
is_ai = cfg["model"] == "ai"
|
||||
blocks.append({
|
||||
"id": block_id,
|
||||
"index": cfg["index"],
|
||||
"title": cfg["title"],
|
||||
"gen_type": cfg["gen_type"],
|
||||
"model": cfg["model"],
|
||||
"temperature": cfg.get("temp"),
|
||||
# AI blocks are pinned to one model (#204); template blocks = "script".
|
||||
"model": GENERATION_MODEL if is_ai else cfg["model"],
|
||||
# The live generation knob (replaces the deprecated `temperature`,
|
||||
# which is not a real param on Opus 4.7/4.8). None for template blocks.
|
||||
"effort": cfg.get("effort") if is_ai else None,
|
||||
"max_tokens": cfg.get("max_tokens"),
|
||||
"creac_role": CREAC_ROLE.get(block_id),
|
||||
"jwm_purpose": JWM_PURPOSE.get(block_id),
|
||||
|
||||
Reference in New Issue
Block a user