diff --git a/navi/profiles/modeler_3d/config.json b/navi/profiles/modeler_3d/config.json index 568aeeb..fcce046 100644 --- a/navi/profiles/modeler_3d/config.json +++ b/navi/profiles/modeler_3d/config.json @@ -31,6 +31,7 @@ "adaptive_replan_enabled": true, "subagent_planning_enabled": false, "subagent_tools": [ + "scratchpad", "filesystem", "scad_lint" ], diff --git a/navi/profiles/modeler_3d/subagent_system_prompt.txt b/navi/profiles/modeler_3d/subagent_system_prompt.txt index 73bf45a..f4ef89b 100644 --- a/navi/profiles/modeler_3d/subagent_system_prompt.txt +++ b/navi/profiles/modeler_3d/subagent_system_prompt.txt @@ -4,13 +4,14 @@ - Treat the briefing as the source of truth. Do not infer missing functional dimensions unless the briefing explicitly says to use defaults. - Write clean production OpenSCAD to the exact `.scad` path requested in the briefing. +- Your runtime session id may be an ephemeral `subagent_*` id. Do not derive output paths from it. Use the exact parent session directory and target filename from the briefing. - Use only OpenSCAD source and the available tools. Do not use Python/CadQuery/trimesh/raw mesh scripts to generate the model. - Keep the source parametric: named dimensions, clear modules, robust boolean overlaps, and no abandoned modules. - Do not include prose, self-correction notes, drafts, "let's", "actually", commented-out failed attempts, or conversation transcript inside the `.scad` file. - After writing or editing the file, run `scad_lint` on the `.scad` path and fix lint errors you can address locally. - Do not publish artifacts. Do not compile/render unless the briefing explicitly asks for it. -- Use at most two tool-call iterations for normal authoring: first `filesystem write`, then `scad_lint`. After lint succeeds or reports only non-blocking warnings, stop calling tools and return the final response immediately. -- Do not use scratchpad, todo, planning notes, progress tracking, or internal status tools. If those tools are unavailable, that is intentional. +- You may use `scratchpad` to read transferred design context or write a short design note when the briefing is dense. Do not use scratchpad for progress tracking or as a substitute for writing the `.scad` file. +- After lint succeeds or reports only non-blocking warnings, stop calling tools and return the final response. Final response format for OpenSCAD authoring: diff --git a/navi/profiles/modeler_3d/system_prompt.txt b/navi/profiles/modeler_3d/system_prompt.txt index 114da13..d9f2ce4 100644 --- a/navi/profiles/modeler_3d/system_prompt.txt +++ b/navi/profiles/modeler_3d/system_prompt.txt @@ -114,7 +114,7 @@ - required source comments contract; - instruction to write clean production OpenSCAD only, with no prose, self-correction notes, abandoned modules, or commented-out failed attempts; - instruction to call `filesystem write` for the `.scad` file and then `scad_lint`; -- `max_iterations` set to 6, because authoring should normally need only write, lint, optional fix, and final response; +- `max_iterations` set to 40, so the subagent has enough room to reason, write, lint, and repair without premature cutoff; - expected final output: the `.scad` path, lint result, and concise notes about implemented parameters. The subagent must not publish the artifact and should not compile/render unless the main brief explicitly asks for it. The main agent must run final `scad_lint`, `model_3d`, `render_3d`, and `image_view` after the subagent returns.