mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
fix: address load_image PR review feedback
- Exclude load_image from sub-agent tools via Unregister after Clone, since RunToolLoop does not call resolveMediaRefs - Add ToolRegistry.Unregister() method - Fix scope collision: use channel:chatID instead of filename - Add channel/chatID context resolution matching send_file pattern - Add comment explaining iteration > 1 guard on resolveMediaRefs - Remove emoji from ForUser for consistency with send_file - Add load_image_test.go
This commit is contained in:
+10
-1
@@ -363,7 +363,12 @@ func registerSharedTools(
|
||||
// tools registered so far (file, web, etc.) but NOT spawn/
|
||||
// spawn_status which are added below — preventing recursive
|
||||
// subagent spawning.
|
||||
subagentManager.SetTools(agent.Tools.Clone())
|
||||
subagentTools := agent.Tools.Clone()
|
||||
// load_image depends on resolveMediaRefs which only runs in
|
||||
// the main agent loop, not in RunToolLoop. Remove it from
|
||||
// sub-agent tools so the LLM won't call it in vain.
|
||||
subagentTools.Unregister("load_image")
|
||||
subagentManager.SetTools(subagentTools)
|
||||
if spawnEnabled {
|
||||
spawnTool := tools.NewSpawnTool(subagentManager)
|
||||
spawnTool.SetSpawner(NewSubTurnSpawner(al))
|
||||
@@ -1817,6 +1822,10 @@ turnLoop:
|
||||
providerToolDefs = filtered
|
||||
}
|
||||
|
||||
// Resolve media:// refs produced by tool results (e.g. load_image).
|
||||
// Skipped on iteration 1 because inbound user media is already resolved
|
||||
// before entering the loop; only subsequent iterations can contain new
|
||||
// tool-generated media refs that need base64 encoding.
|
||||
if iteration > 1 {
|
||||
messages = resolveMediaRefs(messages, al.mediaStore, maxMediaSize)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user