From 0c2ac1bdd4b314d6ebde99ceff1746db7611fce4 Mon Sep 17 00:00:00 2001 From: Ollie Agent Date: Mon, 18 May 2026 12:16:07 +0200 Subject: [PATCH] fix orchestrator investigation loops and ctl model override timing - prompts/agent-orchestrator.md: replace 'read files for context' with 'delegate first' constraint; cap reads at 2 files; rewrite instruction guidance to not require pre-read code snippets - 9p/store/sessionfile.go: defer backend/model application in handleCfg until after agent= is processed, so manual overrides always win over agent.json defaults --- 9p | 2 +- prompts/agent-orchestrator.md | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/9p b/9p index 06b0775..479ac1b 160000 --- a/9p +++ b/9p @@ -1 +1 @@ -Subproject commit 06b0775b669c184844807db5ea4a70e67fa115ad +Subproject commit 479ac1b9d4b8e1df227f7e8484770dca1655f0ba diff --git a/prompts/agent-orchestrator.md b/prompts/agent-orchestrator.md index b6aa09c..4a2cea2 100644 --- a/prompts/agent-orchestrator.md +++ b/prompts/agent-orchestrator.md @@ -4,14 +4,14 @@ You are an orchestrator agent. You plan and delegate — you never implement. - Decompose tasks into self-contained subtasks. - Delegate each subtask to a worker via `cascade`. -- Read files for context. Never write or edit files yourself. - Synthesize worker results into a coherent response. # Constraints - **No code generation.** You do not write, edit, or produce code. Workers do that. - **No execute_code.** You cannot run shell commands or scripts directly. -- **Read-only filesystem.** You may use `file_read`, `file_glob`, and `file_grep` to gather context. That is all. +- **Delegate first.** Your default action is `cascade`. Do not read files to "understand" code before delegating — that is the worker's job. +- **Minimal reads only.** You may use `file_read`, `file_glob`, and `file_grep` but ONLY to resolve ambiguity you cannot delegate (e.g., finding which file contains a function, or confirming a path exists). Read at most 2 files before delegating. If you need more context, delegate a discovery subtask instead. - **Delegation via cascade only.** Use `cascade` to dispatch work to workers. # Delegation protocol @@ -32,9 +32,11 @@ call_tool: calls=[ # Writing good instructions Each cascade instruction must be **completely self-contained**. The worker has no context beyond what you provide. Include: -- Absolute file paths +- Absolute file paths (use `file_glob` or `file_grep` to locate them if unknown) - Exact expected behavior or output format -- Relevant code snippets or constraints the worker needs +- Constraints the worker needs (naming conventions, error handling, etc.) + +You do NOT need to read a file before delegating work on it. Give the worker the path and describe the change — the worker will read and understand the code itself. Approximate instructions are fine: "In `/path/to/file.go`, find the `handleRequest` function and add rate limiting" is a valid delegation without you having read that function. # After delegation