Phase 11 final: Tool-Restriction via System-Prompt statt SDK-Whitelist
In claude-agent-sdk 0.2.104 vererbt sich tools/disallowedTools auf Sub-Agents — keine saubere Trennung Main vs. Sub via Query-Options. Fix: Tool-Preset (claude_code) fuer alle Modi freischalten, Modus- Verhalten ausschliesslich via System-Prompt (Orchestrator-Prompts) durchsetzen. Sub-Agents haben jetzt funktionierenden Bash-Zugriff, liefern echte ls-Ausgaben statt Halluzinationen. Phase 11 ist damit final funktional: - Solo: alle Tools, direkter Zugriff - Handlanger: Delegation via Prompt durchgesetzt - Experten: Multi-Agent via Prompt durchgesetzt - Auto: Heuristik wechselt zwischen den Modi Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
79b8525ede
commit
0c095a4d49
1 changed files with 6 additions and 13 deletions
|
|
@ -382,27 +382,20 @@ async function sendMessage(message, requestId, model = null, contextOverride = n
|
||||||
queryOptions.resume = resumeSessionId;
|
queryOptions.resume = resumeSessionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tool-Konfig je nach Modus.
|
// In @anthropic-ai/claude-agent-sdk 0.2.104 vererbt sich JEDE tools/disallowedTools-
|
||||||
// WICHTIG: disallowedTools vererbt sich auf Sub-Agents!
|
// Konfiguration auf Sub-Agents. Es gibt keine saubere Trennung Main vs. Sub.
|
||||||
// Deshalb Whitelist via `tools` nutzen — die gilt nur fuer Main,
|
// Daher: Tool-Preset fuer alle Modi freischalten, Restriktion via System-Prompt.
|
||||||
// Sub-Agents bekommen das volle Standard-Tool-Set.
|
queryOptions.tools = { type: 'preset', preset: 'claude_code' };
|
||||||
queryOptions.allowedTools = ['Task', 'TodoWrite', 'Read', 'Grep', 'Glob', 'Write', 'Edit', 'Bash'];
|
queryOptions.allowedTools = ['Task', 'TodoWrite', 'Read', 'Grep', 'Glob', 'Write', 'Edit', 'Bash'];
|
||||||
|
|
||||||
if (effectiveMode === 'handlanger') {
|
if (effectiveMode === 'handlanger') {
|
||||||
queryOptions.tools = ['Task', 'TodoWrite'];
|
sendMonitorEvent('agent', 'Handlanger: Delegation per System-Prompt durchgesetzt', {
|
||||||
sendMonitorEvent('agent', 'Handlanger: Main nur Task+TodoWrite, Sub-Agents mit vollem Tool-Set', {
|
|
||||||
mode: effectiveMode,
|
mode: effectiveMode,
|
||||||
mainTools: queryOptions.tools,
|
|
||||||
});
|
});
|
||||||
} else if (effectiveMode === 'experten') {
|
} else if (effectiveMode === 'experten') {
|
||||||
queryOptions.tools = ['Task', 'TodoWrite', 'Read', 'Grep', 'Glob'];
|
sendMonitorEvent('agent', 'Experten: Multi-Agent via System-Prompt', {
|
||||||
sendMonitorEvent('agent', 'Experten: Main lesen+delegieren, Sub-Agents voll', {
|
|
||||||
mode: effectiveMode,
|
mode: effectiveMode,
|
||||||
mainTools: queryOptions.tools,
|
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
// solo: volles Preset
|
|
||||||
queryOptions.tools = { type: 'preset', preset: 'claude_code' };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let conversation = query({
|
let conversation = query({
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue