diff --git a/docker-compose.yml b/docker-compose.yml index 9d92a75..4435d7d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,6 +12,7 @@ services: DIST=$$(find /usr/local/lib -path '*/claude-max-api-proxy/dist' -type d | head -1) && sed -i 's/startServer({ port })/startServer({ port, host: process.env.HOST || \"127.0.0.1\" })/' $$DIST/server/standalone.js && sed -i 's/\"--no-session-persistence\",/\"--no-session-persistence\",\"--dangerously-skip-permissions\",/' $$DIST/subprocess/manager.js && + sed -i 's/\"--dangerously-skip-permissions\",/\"--dangerously-skip-permissions\",\"--append-system-prompt\",options.systemPrompt,/' $$DIST/subprocess/manager.js && sed -i 's/const DEFAULT_TIMEOUT = 300000;/const DEFAULT_TIMEOUT = 86400000;/' $$DIST/subprocess/manager.js && sed -i '/prompt, \\/\\/ Pass prompt as argument/d' $$DIST/subprocess/manager.js && sed -i 's|this\\.process\\.stdin?\\.end();|this.process.stdin?.end(prompt);|' $$DIST/subprocess/manager.js && diff --git a/proxy-patches/openai-to-cli.js b/proxy-patches/openai-to-cli.js index 82151ea..d378975 100644 --- a/proxy-patches/openai-to-cli.js +++ b/proxy-patches/openai-to-cli.js @@ -216,14 +216,16 @@ export function conversationToPrompt(messages) { } export function openaiToCli(request) { + // Persona/System + Tool-Block gehen ueber den ECHTEN System-Prompt-Kanal + // (--append-system-prompt, siehe manager.js buildArgs-Patch). Der Prompt + // enthaelt nur noch den Gespraechsverlauf — so kann das Modell die + // ARIA-Vorgaben nicht mehr als -getaggten User-Content und damit als + // Prompt-Injection fehldeuten. + // systemPrompt ist immer ein String (extractSystemPrompt liefert "" statt + // undefined) → --append-system-prompt "" ist harmlos, kein spawn-Crash. return { - // prompt: solange manager.js --append-system-prompt noch NICHT nutzt, - // bleibt der System-Inhalt zusaetzlich im Prompt (messagesToPrompt), sonst - // ginge die Persona verloren. Sobald der echte Kanal steht: hier auf - // conversationPrompt umstellen. - prompt: messagesToPrompt(request.messages, request.tools), + prompt: conversationToPrompt(request.messages), systemPrompt: extractSystemPrompt(request.messages, request.tools), - conversationPrompt: conversationToPrompt(request.messages), model: extractModel(request.model), sessionId: request.user, };