mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
refactor: improve code readability and consistency across multiple files
This commit is contained in:
@@ -403,4 +403,3 @@ func (r *ToolRegistry) GetAll() []Tool {
|
||||
}
|
||||
return tools
|
||||
}
|
||||
|
||||
|
||||
+21
-7
@@ -72,11 +72,19 @@ func (t *SpawnTool) Execute(ctx context.Context, args map[string]any) *ToolResul
|
||||
|
||||
// ExecuteAsync implements AsyncExecutor. The callback is passed through to the
|
||||
// subagent manager as a call parameter — never stored on the SpawnTool instance.
|
||||
func (t *SpawnTool) ExecuteAsync(ctx context.Context, args map[string]any, cb AsyncCallback) *ToolResult {
|
||||
func (t *SpawnTool) ExecuteAsync(
|
||||
ctx context.Context,
|
||||
args map[string]any,
|
||||
cb AsyncCallback,
|
||||
) *ToolResult {
|
||||
return t.execute(ctx, args, cb)
|
||||
}
|
||||
|
||||
func (t *SpawnTool) execute(ctx context.Context, args map[string]any, cb AsyncCallback) *ToolResult {
|
||||
func (t *SpawnTool) execute(
|
||||
ctx context.Context,
|
||||
args map[string]any,
|
||||
cb AsyncCallback,
|
||||
) *ToolResult {
|
||||
task, ok := args["task"].(string)
|
||||
if !ok || strings.TrimSpace(task) == "" {
|
||||
return ErrorResult("task is required and must be a non-empty string")
|
||||
@@ -93,14 +101,21 @@ func (t *SpawnTool) execute(ctx context.Context, args map[string]any, cb AsyncCa
|
||||
}
|
||||
|
||||
// Build system prompt for spawned subagent
|
||||
systemPrompt := fmt.Sprintf(`You are a spawned subagent running in the background. Complete the given task independently and report back when done.
|
||||
systemPrompt := fmt.Sprintf(
|
||||
`You are a spawned subagent running in the background. Complete the given task independently and report back when done.
|
||||
|
||||
Task: %s`, task)
|
||||
Task: %s`,
|
||||
task,
|
||||
)
|
||||
|
||||
if label != "" {
|
||||
systemPrompt = fmt.Sprintf(`You are a spawned subagent labeled "%s" running in the background. Complete the given task independently and report back when done.
|
||||
systemPrompt = fmt.Sprintf(
|
||||
`You are a spawned subagent labeled "%s" running in the background. Complete the given task independently and report back when done.
|
||||
|
||||
Task: %s`, label, task)
|
||||
Task: %s`,
|
||||
label,
|
||||
task,
|
||||
)
|
||||
}
|
||||
|
||||
// Use spawner if available (direct SpawnSubTurn call)
|
||||
@@ -115,7 +130,6 @@ Task: %s`, label, task)
|
||||
Temperature: t.temperature,
|
||||
Async: true, // Async execution
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
result = ErrorResult(fmt.Sprintf("Spawn failed: %v", err)).WithError(err)
|
||||
}
|
||||
|
||||
+27
-7
@@ -147,7 +147,11 @@ func (sm *SubagentManager) Spawn(
|
||||
return fmt.Sprintf("Spawned subagent for task: %s", task), nil
|
||||
}
|
||||
|
||||
func (sm *SubagentManager) runTask(ctx context.Context, task *SubagentTask, callback AsyncCallback) {
|
||||
func (sm *SubagentManager) runTask(
|
||||
ctx context.Context,
|
||||
task *SubagentTask,
|
||||
callback AsyncCallback,
|
||||
) {
|
||||
task.Status = "running"
|
||||
task.Created = time.Now().UnixMilli()
|
||||
|
||||
@@ -176,7 +180,17 @@ func (sm *SubagentManager) runTask(ctx context.Context, task *SubagentTask, call
|
||||
var err error
|
||||
|
||||
if spawner != nil {
|
||||
result, err = spawner(ctx, task.Task, task.Label, task.AgentID, tools, maxTokens, temperature, hasMaxTokens, hasTemperature)
|
||||
result, err = spawner(
|
||||
ctx,
|
||||
task.Task,
|
||||
task.Label,
|
||||
task.AgentID,
|
||||
tools,
|
||||
maxTokens,
|
||||
temperature,
|
||||
hasMaxTokens,
|
||||
hasTemperature,
|
||||
)
|
||||
} else {
|
||||
// Fallback to legacy RunToolLoop
|
||||
systemPrompt := `You are a subagent. Complete the given task independently and report the result.
|
||||
@@ -357,14 +371,21 @@ func (t *SubagentTool) Execute(ctx context.Context, args map[string]any) *ToolRe
|
||||
label, _ := args["label"].(string)
|
||||
|
||||
// Build system prompt for subagent
|
||||
systemPrompt := fmt.Sprintf(`You are a subagent. Complete the given task independently and provide a clear, concise result.
|
||||
systemPrompt := fmt.Sprintf(
|
||||
`You are a subagent. Complete the given task independently and provide a clear, concise result.
|
||||
|
||||
Task: %s`, task)
|
||||
Task: %s`,
|
||||
task,
|
||||
)
|
||||
|
||||
if label != "" {
|
||||
systemPrompt = fmt.Sprintf(`You are a subagent labeled "%s". Complete the given task independently and provide a clear, concise result.
|
||||
systemPrompt = fmt.Sprintf(
|
||||
`You are a subagent labeled "%s". Complete the given task independently and provide a clear, concise result.
|
||||
|
||||
Task: %s`, label, task)
|
||||
Task: %s`,
|
||||
label,
|
||||
task,
|
||||
)
|
||||
}
|
||||
|
||||
// Use spawner if available (direct SpawnSubTurn call)
|
||||
@@ -377,7 +398,6 @@ Task: %s`, label, task)
|
||||
Temperature: t.temperature,
|
||||
Async: false, // Synchronous execution
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return ErrorResult(fmt.Sprintf("Subagent execution failed: %v", err)).WithError(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user