diff --git a/internal/projectprompt/shell_tools.go b/internal/projectprompt/shell_tools.go index f5e98809..6314a181 100644 --- a/internal/projectprompt/shell_tools.go +++ b/internal/projectprompt/shell_tools.go @@ -2,7 +2,7 @@ package projectprompt // ShellExecExecuteGuidanceSection 供单代理/多代理系统提示追加:exec 与 execute 分工(尽量短)。 func ShellExecExecuteGuidanceSection() string { - return `Shell(exec/execute):有专用 MCP 工具时优先专用工具;系统命令(管道、workdir、后台 &)用 exec;skills/ 内脚本(配合 read_file、skill)用 execute;多步扫描分拆调用,禁止一条 shell 串多个扫描器。下载/临时文件须写入系统提示中的「会话工作目录」,禁止用 /tmp。` + return `Shell(exec/execute):有专用 MCP 工具时优先专用工具;系统命令(管道、workdir、后台 &)用 exec;skills/ 内脚本(配合 read_file、skill)用 execute;多步扫描分拆调用,禁止一条 shell 串多个扫描器。长脚本、请求体或 Payload 必须先用 write_file 写入会话工作目录,再用 exec/execute 执行短命令;禁止把长内容嵌入 command。下载/临时文件须写入系统提示中的「会话工作目录」,禁止用 /tmp。` } // ShellExecExecuteGuidanceReconSuffix 侦察子代理可选追加(一行)。 diff --git a/internal/vision/client.go b/internal/vision/client.go index dbbe52b7..721aa18d 100644 --- a/internal/vision/client.go +++ b/internal/vision/client.go @@ -60,11 +60,13 @@ func (c *Client) Analyze(ctx context.Context, img ImagePayload, question string) } httpClient = openai.NewEinoHTTPClient(&oa, httpClient) + maxCompletionTokens := oa.MaxCompletionTokensEffective() modelCfg := &einoopenai.ChatModelConfig{ - APIKey: oa.APIKey, - BaseURL: strings.TrimSuffix(oa.BaseURL, "/"), - Model: oa.Model, - HTTPClient: httpClient, + APIKey: oa.APIKey, + BaseURL: strings.TrimSuffix(oa.BaseURL, "/"), + Model: oa.Model, + HTTPClient: httpClient, + MaxCompletionTokens: &maxCompletionTokens, } chatModel, err := einoopenai.NewChatModel(ctx, modelCfg) if err != nil {