feat(piagent): give image generator inline reference placement context

Derive an ordered map of each inline reference image to the surrounding
prompt text describing its role, and feed it into the decision, research,
task-plan, conversation and image-prompt builders. The image prompt now
carries this placement so reference roles are not swapped.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-08 16:17:52 +08:00
parent 9622b27de9
commit 68427ad91a
4 changed files with 339 additions and 2 deletions
@@ -577,6 +577,9 @@ func buildDecisionPrompt(req design.AgentDecisionRequest) string {
"",
"Input summary:",
agentMessageContentSummary(req.Messages),
"",
"Inline reference placement:",
inlineReferencePlacementContext(req.Prompt, req.Messages),
}, "\n")
}
@@ -598,6 +601,9 @@ func buildResearchDecisionPrompt(req design.AgentResearchDecisionRequest) string
req.Prompt,
agentMessageContentSummary(req.Messages),
"",
"Inline reference placement:",
inlineReferencePlacementContext(req.Prompt, req.Messages),
"",
"Mode: " + req.Mode,
}, "\n")
}
@@ -624,6 +630,9 @@ func buildAgentTaskPlanPrompt(req design.AgentTaskPlanRequest) string {
req.Prompt,
agentMessageContentSummary(req.Messages),
"",
"Inline reference placement:",
inlineReferencePlacementContext(req.Prompt, req.Messages),
"",
"Mode: " + req.Mode,
"Web search: " + searchState,
"",
@@ -648,6 +657,9 @@ func buildConversationPrompt(req design.AgentConversationRequest) string {
"Inline references:",
agentMessageContentSummary(req.Messages),
"",
"Inline reference placement:",
inlineReferencePlacementContext(req.Prompt, req.Messages),
"",
"User message:",
req.Prompt,
"",
@@ -697,6 +709,9 @@ func buildImagePromptPlannerInput(req design.AgentImagePromptRequest) string {
req.Prompt,
agentMessageContentSummary(req.Messages),
"",
"Inline reference placement:",
inlineReferencePlacementContext(req.Prompt, req.Messages),
"",
"Mode: " + req.Mode,
}, "\n")
}