ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

goose v1.25.0 版本深度解读:统一 Summon 扩展、Agentic CLI 增强、GUI 配方配置与构建供应链安全

goose v1.25.0 版本深度解读:统一 Summon 扩展、Agentic CLI 增强、GUI 配方配置与构建供应链安全 goose v1.25.0 版本深度解读统一 Summon 扩展、Agentic CLI 增强、GUI 配方配置与构建供应链安全【免费下载链接】goosean open source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM项目地址: https://gitcode.com/GitHub_Trending/goose3/goosegoose v1.25.0 是该项目一个开源、可扩展、可与任意 LLM 协作执行安装、运行、编辑与测试任务的 AI Agent发布历程中一次重量级版本更新其官方发布说明收录于仓库 documentation/blog/2026-02-23-goose-v1-25-0/index.md。本文以该发布说明为骨架结合本仓库的源码实现、扩展文档与桌面端代码逐项拆解 v1.25.0 的七大主线macOS 沙箱化实验、统一 Summon 扩展、MCP Apps 富 UI 集成、GUI 中直接编辑 Recipe 的模型与提供商、Agentic CLI 提供商的全面升级、CLI 流式 Markdown 渲染以及 SLSA 构建来源证明。读完你可以完整掌握这些能力的配置方式、使用姿势与底层实现依据并能在后续版本中按图索骥。 macOS 沙箱化曾经的实验性安全增强与当前的安全基线发布说明将可选的 macOS 安全沙箱定义为 v1.25.0 的头号特性当时 goose Desktop 引入了一个可选沙箱通过GOOSE_SANDBOXtrue开启底层采用 seatbelt 技术Apple 用于沙箱化自家应用的同一套机制可提供的保护包括文件系统限制限制 goose 可读写的目录防止它修改自身配置或访问项目之外的敏感区域网络可见性跟踪并限制 goose 访问的 URL零开销复用 macOS 内置的sandbox-exec没有性能损耗适用于任意工具由于在操作系统层面做沙箱无论使用哪个 MCP 扩展或工具都一视同仁。需要特别说明的重要更正该发布说明在文档内对该小节标注了danger: Outdated提示——上述 macOS seatbelt 沙箱属实验特性已经被移除。当前gooseserver 进程负责执行工具的部分以与你的用户账户相同的权限运行并未做操作系统层面的沙箱。因此当前版本请勿再依赖GOOSE_SANDBOX安全控制应交给 goose 自身的权限模式机制。在如今的版本中官方推荐的安全控制手段是GOOSE_MODE取值如approve、smart_approve用于限制哪些工具可以在不经过确认的情况下运行。相关变量统一整理在仓库的 环境变量指南Tool Configuration 一节。安全边界从“进程级 OS 沙箱”回退为“会话级工具权限审批”意味着权限语义由运行代理的机器转移到 goose 自身的 permission/approval 流程这在跨平台Windows/Linux/macOS部署上更容易保持一致行为。 Unified Summon 扩展用 load / delegate 统一技能加载与子代理委托v1.25.0 在架构层面的最大简化是把此前两套相互重叠的机制subagent 子代理、Skills 技能合并为一个统一的 Summon 扩展旧subagents用于创建独立运行、自带上下文的子任务旧Skills用于把预定义能力加载进上下文。两者在概念上交叉、难以理解。v1.25.0 用 Summon 扩展把两种能力统一为两个干净的工具load把 Skills/Recipes 等资源加载进 goose 的当前上下文取代旧的 Skills 系统delegate把任务委托给一个独立上下文运行的子代理取代旧的 subagent 系统支持临时指令、预定义 subrecipe/recipe/agent或两者组合。官方给出的收益非常直白只需理解一个扩展子代理与 recipe/subrecipe 天然协作旧的 skills 扩展若仍被配置会被优雅忽略deprecated。扩展的实际形态与工具参数源码视角Summon 扩展在本仓库中的实体实现位于 crates/goose/src/agents/platform_extensions/summon.rs其注册名为summon见EXTENSION_NAME源码第 37 行说明它与 apps、scheduler、todo 等一样属于 goose 内置的平台扩展族同目录下可见apps.rs、scheduler.rs、orchestrator.rs等。该扩展通过create_load_tool第 645 行起与create_delegate_tool第 684 行起以标准 MCP Tool 的形式对外暴露。load工具的入参源码 schema见 summon.rs参数类型/默认说明sourcestring要加载的资源名subrecipe/recipe/agent省略则列出当前可用全部资源cancelboolean, 默认 false针对正在运行的后台任务取消任务并返回已产生的输出peekboolean, 默认 false针对正在运行的后台任务不阻塞地查看进度返回已运行轮次、空闲时间与最近的工具活动delegate工具的入参源码 schema见 summon.rs参数类型/默认说明instructionsstring任务指令ad-hoc临时任务必填sourcestring要运行的 recipe/agent 名称parametersobject传给 source 的参数仅与 source 搭配有效extensionsstring[]要启用的扩展省略继承父会话全部空数组不带任何扩展providerstring覆盖 LLM 提供商modelstring覆盖模型temperaturenumber覆盖采样温度max_turnsinteger, min 1委托任务最大轮数覆盖 recipe 的settings.max_turns与GOOSE_SUBAGENT_MAX_TURNScontextstring注入子代理 system prompt 的参考上下文背景资料、文件内容或约束working_dirstring子代理工作目录必须在父会话工作目录之内默认继承父会话asyncboolean, 默认 false是否后台运行三种 delegate 模式来自create_delegate_tool的工具描述Ad-hoc 临时模式只提供instructions执行一次性定制任务Source 模式只提供source运行一个 subrecipe、recipe 或 agent组合模式sourceinstructions结合例如source: deploy, instructions: deploy to staging。工具描述还给出高效的委托原则子代理只知道指令 source 内容无法相互协调因此同文件写操作会发生冲突纯只读研究可以放心并行写任务必须严格按文件分区推荐的工作流是拆解任务 → 发起多个async: true后台委托 → 逐个load(source: taskId)收结果 → 汇总。这背后对应 summon.rs 中一整套后台任务管理设施BackgroundTask/CompletedTask、CancellationToken、通知缓冲与转发等。启用 Summon 扩展Summon 是内置平台扩展v1.25.0 可用。启用方式以官方 Summon 扩展文档 为准goose Desktop在扩展设置中直接启用名为 Summon 的内置扩展goose CLI运行goose configure→ 选择Toggle Extensions→ 在扩展列表中用空格勾选summon→ 回车提交。一个完整的用法示例官方文档原例在.agents/recipes/下创建可复用 reciperelease-notes.yamltitle: Release Notes description: Draft release notes from recent git changes instructions: | Review the recent git history and changed files. Write concise release notes with: - user-facing changes - fixes - migration notes, if any prompt: Draft release notes for the current branch.然后在会话中让 goose 委托它Use summon to delegate the release-notes recipe for this branch.对应的自然语言/直接工具调用形式包括见 Summon 文档 的 Common Summon Commandsload() load(source: release-notes) delegate(source: release-notes) delegate(instructions: Review these docs and report stale links) delegate(source: release-notes, async: true) load(source: 20260219_1, peek: true) load(source: 20260219_1)其中load()无参调用会列出当前可用资源subrecipes/recipes/agents源码中按(类型, 名称)排序并做了 60 秒缓存与去重见 summon.rs后台任务delegate(..., async: true)会返回任务 id如20260219_1随后用load(source: task_id)阻塞等待结果、peek: true查询进度、cancel: true取消任务。关于委托的资源类型官方文档说明 Summon 可加载三类 sourceRecipes带提示词与参数的可复用任务定义、Agents存放在 agent 目录的可复用 agent 定义、Subrecipes当前 recipe 私有的子任务而 Skills 依然由独立的 Skills 平台扩展 负责加载二者职责在文档层已被清晰地分离。子代理资源上限的默认值与覆盖链路如果你关心子代理的最大轮数官方文档表格显示默认Max Turns 为 25见 subagents 指南覆盖优先级为 recipe 的settings.max_turns→ subagent 工具调用中的max_turns参数 →GOOSE_SUBAGENT_MAX_TURNS环境变量见 环境变量指南 与 recipe 参考。这正好印证了delegate参数表中max_turns覆盖settings.max_turns和GOOSE_SUBAGENT_MAX_TURNS的声明形成环境默认 → recipe 设定 → 单次调用覆盖的完整链路。️ MCP Apps UI 集成扩展在 goose Desktop 里渲染富交互界面v1.25.0 把mcp-ui/client的AppRenderer集成进 goose DesktopMCP 扩展从此不再局限于纯文本输出而是可以提供完整的 HTML/JavaScript 界面并内联渲染在对话流中。这意味着 MCP 扩展可以带来仪表盘、可视化、表单等一整类新交互体验。围绕该能力的配套改进包括Fallback request handler 支持App 可以向 MCP server 发起回程请求以获取动态数据rmcp 升级goose 现在向服务器通告 MCP Apps UI 扩展能力。发布说明中记录升级到 rmcp 0.15.0在本仓库当前代码中rmcp 是 workspace 级依赖根 Cargo.toml 声明rmcp { version 3.0.0, ... }可以看到该依赖随版本持续演进独立 goose Apps 过滤Apps 页面现在只展示独立的 goose Apps让发现更干净。从源码侧看goose 把 Apps 本身实现为一个平台扩展见 crates/goose/src/agents/platform_extensions/apps.rs与 summon、scheduler 等并列而负责 UI 侧行为的逻辑集中在桌面端 ui/desktop/src 的组件树中。MCP 服务端通告能力、客户端渲染 HTML/JS 的职责划分使得同一套 MCP Apps 既能在桌面端获得富交互也可在无 UI 的 CLI 场景下退化为普通文本结果——这正是UI 增强不破坏协议兼容的落地方式。 在 GUI 中编辑 Recipe 的模型、提供商与扩展Recipes配方本身用于定义可复用工作流含特定指令、扩展与配置。在 v1.25.0 之前切换某个 recipe 所用的模型或提供商需要打开底层 YAML 手工找到对应字段v1.25.0 之后goose Desktop 允许以可视化方式按 recipe 进行配置修改 recipe 使用的 model 与 provider添加或移除扩展保存后立即运行更新后的 recipe。同时recipe 详情视图修正了一个体验问题此前详情页展示的是全局默认 provider/model现在正确显示 recipe 自身配置里声明的 provider 与 model。例如一个代码评审 recipe固定跑在 Claude Sonnet 上那么无论你的全局默认提供商是什么UI 都会如实展示 Claude Sonnet。上图即发布说明附带的真实截图编辑窗口 View/edit recipe 提供三个可选配置区——Provider示例选 Databricks、Model示例选 gpt-5-nano、Extensions列表内 Developer 已启用、Airtable 未启用全部为下拉/开关式操作无需触碰 YAML。桌面端对应实现位于 ui/desktop/src/components/recipes 组件目录其中 shared/RecipeFormFields.tsx 负责表单字段、shared/SubRecipeEditor.tsx 负责子配方编辑。如果你想了解 recipe 的 YAML 全字段语义含settings、参数、max_turns等可对照 recipe 参考文档 与仓库中的示例 recipes 阅读。 Agentic CLI Providers 全面升级goose 的 agentic CLI providers把任务委托给 Claude Code、Codex、Gemini CLI 等其他 AI 编码代理在本版本获得批量增强MCP 扩展现在可用于 Agentic Providers此前 MCP 扩展只对标准 API provider 生效v1.25.0 起Claude Code、Codex、Gemini CLI 都能使用 MCP 扩展。goose 在底层把扩展配置转换为各 CLI 的原生格式从而实现同一套 MCP 扩展在所有 provider 间复用。源码证据非常直接对Claude Codeprovider 实现 crates/goose/src/providers/claude_code.rs 在构造命令时追加--mcp-config 文件与--strict-mcp-config把 goose 的扩展配置以 JSON 文件交给 Claude Code 加载对Codexprovider 实现 crates/goose/src/providers/codex.rs 逐项拼装mcp_servers.key.url/http_headers/command/args/env形式的 TOML override 字符串随后的单元测试同文件约第 795–858 行直接断言了诸如mcp_servers.lookup.commandnode、mcp_servers.mcp_kiwi_com.urlhttps://mcp.kiwi.com等生成结果验证了转换逻辑的正确性。Claude Code 流式输出与动态模型切换流式输出Claude Code provider 使用stream-json输入/输出格式构建命令见 claude_code.rs 的build_stream_json_command响应不再等到全部完成才返回而是边工作边把结果推送给用户长任务观感显著变好动态切换模型现在可以在使用 Claude Code 的会话中中途列出可用模型并切换例如从 Sonnet 切到 Haiku 处理简单任务无需重启会话。对应源码包括send_set_model约第 188 行、fetch_supported_models约第 685 行与extract_model_aliases约第 526 行——先拉取模型列表、解析别名再向运行中的 CLI 发送--model切换指令。Gemini CLI 的 stream-json 与会话复用Gemini CLI provider 同样改为 stream-json 输出以获得更好的实时反馈并跨多次交互复用会话以提升效率官方发布说明所述如需核对该 provider 的当前实现可查看 crates/goose/src/providers 目录下的对应模块。✨ CLI 流式 Markdown 渲染让半截语法不再闪屏长期困扰 CLI 用户的一个观感问题是goose 流式输出时偶发的半个加粗标记或断裂的代码块会瞬间闪现。v1.25.0 通过引入新的MarkdownBuffer修复了这一现象。模块级文档见 crates/goose-cli/src/session/streaming_buffer.rs清楚说明了设计MarkdownBuffer是一个为安全增量渲染服务的缓冲器用一个状态机解析器跟踪仍未闭合的 markdown 构造代码块、加粗、链接、行内代码等只在构造完整时才把内容 flush 给终端let mut buf MarkdownBuffer::new(); // 加粗只写了一半缓冲直到闭合 assert_eq!(buf.push(Hello **wor), Some(Hello .to_string())); assert_eq!(buf.push(ld**!), Some(**world**!.to_string())); // 流结束时 flush 剩余内容 let remaining buf.flush();MarkdownBuffer结构体定义与push/flush入口可分别在 streaming_buffer.rs 与 streaming_buffer.rs 找到文件内自带大量行为测试如 unclosed code block flushes at end、unclosed bold flushes、unclosed inline code flushes 等约第 663–815 行直接验证了未闭合构造在流结束时统一 flush、不产生半截语法的核心保证。该模块还顺带提供了可配置的超长代码块截断默认超过 50 行DEFAULT_MAX_CODE_BLOCK_LINES的代码块会被折叠只保留前 20 行DEFAULT_TRUNCATED_SHOW_LINES并可通过GOOSE_MAX_CODE_BLOCK_LINES、GOOSE_TRUNCATED_SHOW_LINES调整或用GOOSE_NO_CODE_TRUNCATION1/true彻底关闭截断见 streaming_buffer.rs。最终效果是markdown 渐进式渲染且格式始终完整不再有视觉毛刺。️ SLSA 构建来源证明可加密验证每一份发布产物供应链安全层面从 v1.25.0 起每份 goose 发布产物都附带签名 provenance attestation——覆盖 CLI 二进制、桌面安装包、Linux 包与 Docker 镜像通过 Sigstore 签署 SLSASupply Chain Levels for Software Artifacts构建来源证明。这样你可以加密学地验证任意产物确实由官方仓库、官方 CI 流水线构建gh attestation verify artifact --repo aaif-goose/goose官方说明指出该实现覆盖全部发布工作流stable 稳定版、canary、nightly 以及 Docker 镜像并做到 action 版本固定与权限范围正确收缩。若想了解该仓库整体的发版流程与核对清单可进一步查看根目录下的 RELEASE.md 与 RELEASE_CHECKLIST.md。小结与升级指引综合来看v1.25.0 的主题可以概括为更统一Summon 合并两套委托体系、更直观Desktop 可渲染富 UI、可图形化改 Recipe、更强Agentic CLI 支持 MCP 扩展/流式/动态换模型、CLI markdown 渲染质量提升、更可信SLSA 来源证明而 macOS seatbelt 沙箱作为实验特性推出后已按文档标注移除当前安全能力以GOOSE_MODE工具审批机制为准。要体验或跟进该版本的功能请以仓库根目录 README.md 中描述的安装/更新方式为准Desktop 与 CLI 的安装路径会随版本持续更新功能细节上Summon 扩展文档、环境变量指南、subagents 指南 与 recipe 参考 是继续深入的最短路径相关实现均可回查本仓库源码。【免费下载链接】goosean open source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM项目地址: https://gitcode.com/GitHub_Trending/goose3/goose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表