mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-25 14:53:34 +00:00
fix(engine): strengthen CodeAct prompt to prevent shallow text answers
The model was answering "Suggested 45 improvements" as a brief text summary from training data without actually searching or listing them. The trace showed: no code block, no tool calls, no FINAL(). Prompt changes: - Rule 1: "ALWAYS respond with a ```repl code block. NEVER answer with plain text only." (was: "Always write code... plain text for brief explanations") - Rule 2 (NEW): "NEVER answer from memory or training data alone. Always use tools to get real, current information before answering." - Rule 3: FINAL answer "should be detailed and complete — not just a summary like 'found 45 items'" - Rule 8 (NEW): "Include the actual content in your FINAL() answer, not just a count or summary. Users want to see the details." Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
This commit is contained in:
@@ -28,9 +28,11 @@ You can write multiple code blocks across turns. Variables persist between block
|
||||
|
||||
## Important rules
|
||||
|
||||
1. Always write code in ```repl blocks — plain text responses are for brief explanations only
|
||||
2. When you have the final answer, call `FINAL(answer)` inside a code block
|
||||
3. Tool results are returned as Python objects — use them directly, don't parse JSON
|
||||
4. If a tool call fails, the error appears as a Python exception — handle it or try a different approach
|
||||
5. For large data, process it in chunks using llm_query() on subsets rather than loading everything into context
|
||||
6. Outputs are truncated to 8000 chars — use variables to store large intermediate results
|
||||
1. ALWAYS respond with a ```repl code block. NEVER answer with plain text only. Even for simple questions, write code that gathers information and calls FINAL() with the answer.
|
||||
2. NEVER answer from memory or training data alone. Always use tools (web_search, llm_context, shell, read_file, etc.) to get real, current information before answering.
|
||||
3. When you have the final answer, call `FINAL(answer)` inside a code block. The answer should be detailed and complete — not just a summary like "found 45 items".
|
||||
4. Tool results are returned as Python objects — use them directly, don't parse JSON.
|
||||
5. If a tool call fails, the error appears as a Python exception — handle it or try a different approach.
|
||||
6. For large data, process it in chunks using llm_query() on subsets rather than loading everything into context.
|
||||
7. Outputs are truncated to 8000 chars — use variables to store large intermediate results.
|
||||
8. Include the actual content in your FINAL() answer, not just a count or summary. Users want to see the details.
|
||||
|
||||
Reference in New Issue
Block a user