Add proposer role prompt to panel members
Panel members run read-only (PlanMode / tool-less) but kept their normal agent prompt, so they repeatedly attempted write/execute/git actions that the read-only filter blocks — getting stuck in failing tool loops and wasting tokens. Append an explicit proposer role clarification to each member's system prompt so they go straight to analysis + text proposal and leave the actual writing/committing to the synthesizer agent. - ChatService: PanelMemberRolePrompt constant (read-only, propose-only) - PrepareContext: append the role prompt to each panel member's SystemPrompt - Covers all three provider paths (Anthropic direct, CLI/OpenAI via ExtractSystemPromptText) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
b7ff928340
commit
aa0b8ee493
1 file changed
+26
-1
+26
-1
@@ -29,6 +29,24 @@ public class ChatService
|
||||
private int MaxHistory => _settings.GetInt("MaxHistory", 220);
|
||||
private int ReminderInterval => _settings.GetInt("ReminderInterval", 30);
|
||||
|
||||
// Rollen-Klarstellung für Panel-Member (Fusion/MoA). Member laufen READ-ONLY (PlanMode bzw.
|
||||
// tool-los). Ohne diesen Hinweis behält jeder Member seinen normalen Agent-Prompt und versucht
|
||||
// oft Schreib-/Execute-/git-Aktionen, die gefiltert werden → er "beißt sich fest" in wiederholten,
|
||||
// fehlschlagenden Tool-Versuchen. Der Hinweis lenkt ihn auf reine Analyse/Vorschlag; das tatsächliche
|
||||
// Umsetzen (Schreiben, Ausführen, Committen) übernimmt der Synthese-Agent (Session-Worker).
|
||||
private const string PanelMemberRolePrompt = @"## KRITISCH: Deine Rolle als Panel-Agent (Proposer)
|
||||
|
||||
Du bist einer von mehreren KI-Agenten, die PARALLEL und UNABHÄNGIG dieselbe Anfrage beantworten. Aus euren Antworten synthetisiert anschließend ein separater Agent EINE Gesamtantwort für den User.
|
||||
|
||||
### Du arbeitest READ-ONLY
|
||||
Dir stehen NUR lesende Tools zur Verfügung (Dateien lesen, suchen, auflisten). Schreibende oder ausführende Aktionen – Dateien anlegen/ändern/löschen, Shell-/Build-Befehle, git/commit, Deployment – sind für dich DEAKTIVIERT und werden blockiert. Versuche sie GAR NICHT ERST: Du kommst damit nicht weiter, verschwendest nur Zeit und blockierst dich selbst in fehlschlagenden Tool-Versuchen.
|
||||
|
||||
### Deine Aufgabe
|
||||
Liefere deinen besten VORSCHLAG als Text-Antwort: Analyse, Lösung, konkrete Code-Vorschläge, Begründung. Nutze die lesenden Tools, um dich am echten Stand zu orientieren – aber führe nichts aus und ändere nichts. Beschreibe stattdessen klar, WAS zu tun ist. Das tatsächliche Umsetzen übernimmt der Synthese-Agent.
|
||||
|
||||
### Wichtig
|
||||
Nur deine finale Text-Antwort wird weiterverwendet. Formuliere sie vollständig und eigenständig, sodass sie auch ohne deine Tool-Schritte verständlich ist. Antworte zügig und direkt – kein Schreib-/Commit-Versuch.";
|
||||
|
||||
public static string ResolveModelId(string model)
|
||||
{
|
||||
// OpenAI-kompatible Provider werden unverändert durchgereicht (Format: "provider:model")
|
||||
@@ -155,7 +173,14 @@ public class ChatService
|
||||
foreach (var pid in panelIds)
|
||||
{
|
||||
var pc = await BuildSubAgentContext(pid, sessionId, workspace, session, user);
|
||||
if (pc != null) panelContexts.Add(pc);
|
||||
if (pc != null)
|
||||
{
|
||||
// Proposer-Rolle klarstellen (read-only) → Member versuchen nicht mehr vergeblich
|
||||
// zu schreiben/committen und "beißen sich fest". Gilt für alle Provider-Pfade
|
||||
// (Anthropic nutzt SystemPrompt direkt, CLI/OpenAI via ExtractSystemPromptText).
|
||||
pc.SystemPrompt.Add(new { type = "text", text = PanelMemberRolePrompt });
|
||||
panelContexts.Add(pc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user