Merge pull request #2196 from acamq/fix/toolcall-format

fix(hephaestus): add tool call format instructions to prevent malformed output
This commit is contained in:
acamq
2026-03-08 17:31:42 -06:00
committed by GitHub
2 changed files with 20 additions and 1 deletions

View File

@@ -343,6 +343,23 @@ export function buildAntiPatternsSection(): string {
${patterns.join("\n")}` ${patterns.join("\n")}`
} }
export function buildToolCallFormatSection(): string {
return `## Tool Call Format (CRITICAL)
**ALWAYS use the native tool calling mechanism. NEVER output tool calls as text.**
When you need to call a tool:
1. Use the tool call interface provided by the system
2. Do NOT write tool calls as plain text like \`assistant to=functions.XXX\`
3. Do NOT output JSON directly in your text response
4. The system handles tool call formatting automatically
**CORRECT**: Invoke the tool through the tool call interface
**WRONG**: Writing \`assistant to=functions.todowrite\` or \`json\n{...}\` as text
Your tool calls are processed automatically. Just invoke the tool - do not format the call yourself.`
}
export function buildNonClaudePlannerSection(model: string): string { export function buildNonClaudePlannerSection(model: string): string {
const isNonClaude = !model.toLowerCase().includes('claude') const isNonClaude = !model.toLowerCase().includes('claude')
if (!isNonClaude) return "" if (!isNonClaude) return ""

View File

@@ -17,6 +17,7 @@ import {
buildOracleSection, buildOracleSection,
buildHardBlocksSection, buildHardBlocksSection,
buildAntiPatternsSection, buildAntiPatternsSection,
buildToolCallFormatSection,
categorizeTools, categorizeTools,
} from "../dynamic-agent-prompt-builder"; } from "../dynamic-agent-prompt-builder";
const MODE: AgentMode = "all"; const MODE: AgentMode = "all";
@@ -127,7 +128,7 @@ export function buildHephaestusPrompt(
const hardBlocks = buildHardBlocksSection(); const hardBlocks = buildHardBlocksSection();
const antiPatterns = buildAntiPatternsSection(); const antiPatterns = buildAntiPatternsSection();
const todoDiscipline = buildTodoDisciplineSection(useTaskSystem); const todoDiscipline = buildTodoDisciplineSection(useTaskSystem);
const toolCallFormat = buildToolCallFormatSection();
return `You are Hephaestus, an autonomous deep worker for software engineering. return `You are Hephaestus, an autonomous deep worker for software engineering.
## Identity ## Identity
@@ -166,6 +167,7 @@ ${hardBlocks}
${antiPatterns} ${antiPatterns}
${toolCallFormat}
## Phase 0 - Intent Gate (EVERY task) ## Phase 0 - Intent Gate (EVERY task)
${keyTriggers} ${keyTriggers}