From 927f5429d17416c214c8b2ecbd7616f4d6f078f1 Mon Sep 17 00:00:00 2001 From: "fennoai[bot]" <231223108+fennoai[bot]@users.noreply.github.com> Date: Fri, 5 Jun 2026 16:18:43 +0000 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4=E8=BF=87?= =?UTF-8?q?=E5=BA=A6=E9=98=B2=E5=BE=A1=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - edit_tool: 删除 replacedCount 冗余赋值(!all 时 count 必然为 1) - write_tool: 删除 writeArgs 中未使用的 Create 字段,移除对 nil map 安全的 ParsedArgs nil 检查 - anthropic/gemini: make([]T, 0) 改为惯用的 var 声明 - agent: 移除 cloneMessages 防御性复制(Complete 是同步调用,无并发修改) Generated with [FennoAI](https://github.com/apps/fennoai) Co-authored-by: minorcell <120795714+minorcell@users.noreply.github.com> --- internal/core/agent.go | 8 +------- internal/provider/anthropic.go | 4 ++-- internal/provider/gemini.go | 6 +++--- internal/tools/edit_tool.go | 9 ++------- internal/tools/write_tool.go | 7 ++----- 5 files changed, 10 insertions(+), 24 deletions(-) diff --git a/internal/core/agent.go b/internal/core/agent.go index 90d94ad..b5f827b 100644 --- a/internal/core/agent.go +++ b/internal/core/agent.go @@ -116,7 +116,7 @@ func (a *Agent) runTurn(ctx context.Context, session *Session, userInput string, response, err := a.client.Complete(ctx, provider.Request{ Model: a.config.Model, - Messages: cloneMessages(session.Messages), + Messages: session.Messages, Tools: a.registry.Definitions(), MaxTokens: a.config.MaxTokens, Temperature: a.config.Temperature, @@ -202,12 +202,6 @@ func (a *Agent) runTurn(ctx context.Context, session *Session, userInput string, return result, fmt.Errorf("agent exceeded max steps (%d)", a.config.MaxSteps) } -func cloneMessages(messages []provider.Message) []provider.Message { - cloned := make([]provider.Message, len(messages)) - copy(cloned, messages) - return cloned -} - func stringifyArguments(arguments json.RawMessage) string { if len(arguments) == 0 { return "{}" diff --git a/internal/provider/anthropic.go b/internal/provider/anthropic.go index 1171676..1f21e70 100644 --- a/internal/provider/anthropic.go +++ b/internal/provider/anthropic.go @@ -73,7 +73,7 @@ func (c *AnthropicClient) Complete(ctx context.Context, req Request) (Response, } var textParts []string - toolCalls := make([]ToolCall, 0) + var toolCalls []ToolCall for _, block := range response.Content { switch block.Type { case "text": @@ -124,7 +124,7 @@ type anthropicResponse struct { } func toAnthropicMessages(messages []Message) (string, []map[string]any, error) { - systemParts := make([]string, 0) + var systemParts []string converted := make([]map[string]any, 0, len(messages)) for _, message := range messages { diff --git a/internal/provider/gemini.go b/internal/provider/gemini.go index 0576991..6f23ab9 100644 --- a/internal/provider/gemini.go +++ b/internal/provider/gemini.go @@ -83,8 +83,8 @@ func (c *GeminiClient) Complete(ctx context.Context, req Request) (Response, err } parts := response.Candidates[0].Content.Parts - textParts := make([]string, 0) - toolCalls := make([]ToolCall, 0) + var textParts []string + var toolCalls []ToolCall for index, part := range parts { if part.Text != "" { textParts = append(textParts, part.Text) @@ -140,7 +140,7 @@ type geminiResponse struct { } func toGeminiMessages(messages []Message) (string, []map[string]any, error) { - systemParts := make([]string, 0) + var systemParts []string converted := make([]map[string]any, 0, len(messages)) for _, message := range messages { diff --git a/internal/tools/edit_tool.go b/internal/tools/edit_tool.go index fc86dfd..68d9b26 100644 --- a/internal/tools/edit_tool.go +++ b/internal/tools/edit_tool.go @@ -106,16 +106,11 @@ func (t *EditTool) edit(target, oldContent, newContent string, all bool) (Result return Result{}, fmt.Errorf("write file %q: %w", target, err) } - replacedCount := count - if !all { - replacedCount = 1 - } - return Result{ - Output: fmt.Sprintf("replaced %d occurrence(s) in %s", replacedCount, target), + Output: fmt.Sprintf("replaced %d occurrence(s) in %s", count, target), Metadata: map[string]any{ "path": target, - "replaced_count": replacedCount, + "replaced_count": count, "total_found": count, "all": all, }, diff --git a/internal/tools/write_tool.go b/internal/tools/write_tool.go index 6d073a9..a002073 100644 --- a/internal/tools/write_tool.go +++ b/internal/tools/write_tool.go @@ -19,7 +19,6 @@ type writeArgs struct { Path string `json:"path"` Content string `json:"content"` Append bool `json:"append,omitempty"` - Create bool `json:"create,omitempty"` } func NewWriteTool(root string) *WriteTool { @@ -73,10 +72,8 @@ func (t *WriteTool) Execute(_ context.Context, invocation Invocation) (Result, e } create := true - if invocation.ParsedArgs != nil { - if v, ok := invocation.ParsedArgs["create"].(bool); ok { - create = v - } + if v, ok := invocation.ParsedArgs["create"].(bool); ok { + create = v } return t.write(target, args.Content, args.Append, create)