我刚刚完成了 Goose 的 Advent of AI 系列挑战,涵盖了从 CI 自动化到手势控制应用,再到具有 UI 的模型上下文协议(MCP)服务器等各个方面。
这些挑战几乎全部在 Goose 中完成。初期主要使用 GUI 界面,随着熟练度提升逐渐转向 CLI。偶尔会切换到 Claude 完成特定任务,但 Goose 始终是我的主要开发环境。我的标准工作流程是:将挑战任务转化为产品需求文档(PRD),对于复杂项目还会补充评估标准,然后进行具体实现。
经过两周多的深度使用,我总结出了 Goose 的独特价值。首先从基础功能说起。
基础功能概览Goose 具备 AI 代理应有的全部核心功能:带聊天界面的 GUI、命令行接口(CLI),并且与其他主流代理一样支持多模型架构(可连接任何 LLM 服务商,包括本地模型)。部分 CLI 功能还能在 CI/CD 流水线中发挥作用。
此外,它还原生支持 MCP 协议、聊天历史记录、命名会话、并行任务执行的子代理、自定义上下文技能,并且作为开源项目发布。
block / goose
开源可扩展的 AI 代理,超越代码建议——支持任意 LLM 的安装、执行、编辑和测试
goose本地化、可扩展、开源的 AI 代理,自动化工程任务
goose 是运行在本地的 AI 代理,能够从头到尾自动化复杂的开发任务。不仅仅是代码建议,goose 可以从零开始构建完整项目、编写和执行代码、调试故障、编排工作流,并与外部 API 交互——完全自主运行。
无论是进行原型设计、优化现有代码还是管理复杂的工程流水线,goose 都能适应您的工作流程并精准执行任务。
goose 设计追求最大灵活性:支持任意 LLM 和多模型配置以优化性能和成本,无缝集成 MCP 服务器,提供桌面应用和 CLI 两种形式——是希望提升开发效率的开发者的理想 AI 助手。
快速链接 需要帮助?…
上述功能大多并非独有。OpenCode(同样开源)、Cursor、Copilot、Claude Code 和 Windsurf 都具备类似能力。
如果 Goose 仅此而已,就不值得专门撰文分析。
Goose 的真正差异点Goose 的定位并非与 Cursor 的自动补全或 Copilot 的内联建议功能竞争。它属于不同的类别——更像是代理行为的构建系统,而非简单的 IDE 集成增强。
经过实际使用,三个特点尤为突出。(据 Block 公司数据,其 60% 的员工每周使用 Goose,报告显示开发时间节省 50-75%。)
工作流模板:可复用的 AI 流程
大多数 AI 工具提供保存的提示词或模板。Goose 的工作流模板是具备实际执行能力的结构化流程定义。
在 Advent of AI 的第 9 天和第 15 天挑战中,我使用了工作流模板和子模板来构建项目。
工作流模板实际提供以下功能:
- 流程阶段间参数传递——定义一次
{{event_name}},全程使用 - 子模板组合——从父模板调用子模板
- 环境扩展——模板自动获取全局配置的 MCP 服务器和内置扩展
- 显式扩展指定——为模板固定特定 MCP 服务器/工具(目前仅 YAML 支持)
- 结构化输入——定义带类型、要求和描述的参数
以下是使用协调三个平台特定子模板的社交媒体活动模板(Advent of AI 第 15 天)界面:
完整 YAML 结构:
version: 1.0.0
title: Social Media Campaign Generator
description: Generate complete cross-platform social media campaign using sub-recipes
instructions: |
You are a social media campaign coordinator creating a comprehensive multi-platform campaign.
Generate a complete social media campaign for the following event:
- event_name: {{event_name}}
- event_date: {{event_date}}
- event_description: {{event_description}}
- target_audience: {{target_audience}}
- call_to_action: {{call_to_action}}
Campaign Strategy:
Execute the following sub-recipes to create platform-specific content:
1. Instagram Content: Run the instagram-post.yaml recipe
2. Twitter/X Thread: Run the twitter-thread.yaml recipe
3. Facebook Event: Run the facebook-event.yaml recipe
[Format and present complete campaign organized by platform]
prompt: Generate complete social media campaign for {{event_name}}
sub_recipes:
- name: "instagram_content"
path: "./instagram-post.yaml"
values:
event_name: "{{event_name}}"
event_date: "{{event_date}}"
event_description: "{{event_description}}"
target_audience: "{{target_audience}}"
call_to_action: "{{call_to_action}}"
- name: "twitter_content"
path: "./twitter-thread.yaml"
values:
event_name: "{{event_name}}"
event_date: "{{event_date}}"
event_description: "{{event_description}}"
target_audience: "{{target_audience}}"
call_to_action: "{{call_to_action}}"
- name: "facebook_content"
path: "./facebook-event.yaml"
values:
event_name: "{{event_name}}"
event_date: "{{event_date}}"
event_description: "{{event_description}}"
target_audience: "{{target_audience}}"
call_to_action: "{{call_to_action}}"
parameters:
- key: event_name
input_type: string
requirement: required
description: Name of the festival event
- key: event_date
input_type: string
requirement: required
description: When the event is happening
- key: event_description
input_type: string
requirement: required
description: What the event is about
- key: target_audience
input_type: string
requirement: required
description: Who should attend
- key: call_to_action
input_type: string
requirement: required
description: What you want people to do
运行此模板时,Goose 会用相同参数执行每个子模板。各子模板处理其平台特定逻辑,父模板负责整体协调。
还可以固定模板应使用的 MCP 扩展。目前仅 YAML 支持此功能,但对确保工作流可复现性非常重要。这能保证模板始终使用指定工具运行,不受全局配置影响。
典型的工程工作流示例是通过查询 Linear、GitHub 和 Notion 生成周报。具体实现可参考此代码片段。
还可以将模板设置为斜杠命令。
配置完成后,只需在 GUI 或 REPL 中运行 /weekly-status,即可获得包含问题链接、拉取请求等信息的格式化报告。
架构层面的重要意义:
如果没有工作流模板,您需要复制粘贴提示词并在步骤间手动传递数值。而模板提供了版本控制(YAML 文件存入 git 可追踪变更、回滚错误)、团队协作(团队成员使用完全相同的工作流)、组合能力(从经过测试的简单模块构建复杂工作流)和调试支持(每个子模板独立运行,可单独测试)。
这不同于简单的"保存提示词",而是完整的工作流基础设施。
与其他工具的差异:
大多数 AI 编程工具以某种形式支持规则配置。Cursor 有 .cursor/rules,Cline 有 .clinerules,还有跨工具工作的 AGENTS.md 标准。这些都是项目特定的提示指南,能改进代理对代码库和偏好的理解,但并非可复用的工作流。
核心区别在于:规则文件告诉代理"在此项目编写代码时遵循这些模式",而工作流模板指示"按顺序执行这些特定步骤并使用这些参数"。前者是优化提示策略,后者是工作流编排。
简而言之:规则改变代理的行为方式,模板改变代理的执行内容。
规则文件无法相互组合、传递参数或作为独立工作流运行。它们是优化提示的上下文信息,而非可执行的基础设施。
与其他工具的斜杠命令相比,那些只是带占位符的保存提示词,无法编排多阶段工作流、调整阶段间参数或与其他工作流组合。
模板 + 子代理:并行工作流
通过子代理,工作流模板提供了有效协调并行任务的基础设施。以下是生成 4 个并行子代理的视频处理模板:
version: 1.0.0
title: Video Tools
description: A set of tools for processing videos
instructions: |
You are a video processing assistant
Process {{video_file}} with real-time progress updates.
STEP 1 - Immediate acknowledgment:
Run: echo "🎬 Processing video: {{video_file}}" | tee /dev/tty
STEP 2 - Check dependencies (ffmpeg, ffprobe)
STEP 3 - Analyze video (duration, resolution, codec, audio presence)
STEP 4 - Launch parallel subagents:
=== SUBAGENT 1: Smart Compression ===
- Analyze video type (screencast vs camera footage)
- Choose optimal CRF value (18-28 range) based on content
- Adjust resolution if beneficial (4K→1080p for screencasts)
- Compress with ffmpeg: -c:v libx264 -crf [chosen] -preset medium
- Output: {{video_file}}_compressed.mp4
- Report before/after sizes and compression ratio
=== SUBAGENT 2: Intelligent Thumbnails ===
- Detect video content type
- For screencasts: extract at 20%, 40%, 60%, 80%, 100% intervals
- For camera footage: use ffmpeg scene detection for key frames
- Generate 5 thumbnails at 320px width
- Output: {{video_file}}_thumb_1.jpg through _thumb_5.jpg
=== SUBAGENT 3: Audio Extraction (ONLY IF AUDIO DETECTED) ===
- Extract audio using ffmpeg: -c:a libmp3lame -q:a 2
- Output: {{video_file}}_audio.mp3
- Report audio file size and bitrate
=== SUBAGENT 4: Transcription & Analysis (ONLY IF AUDIO DETECTED) ===
- Run: uv run --with openai-whisper whisper {{video_file}} --model base
- Output: .txt, .srt, .vtt, .tsv, .json caption files
- Analyze transcript: word count, speaking pace, content type
- Brief content summary
STEP 5 - Monitor subagents and report completions immediately
STEP 6 - Final summary with all generated files
prompt: process {{video_file}}
parameters:
- key: video_file
input_type: string
requirement: required
description: The video file to optimize
每个子代理通过 echo | tee /dev/tty 独立运行并更新进度。模板负责协调各子代理、优雅处理故障(如压缩失败仍能获取缩略图),并提供统一摘要。
如果没有模板,您只能保存需要手动编辑文件名的提示词。处理不同视频时需要查找替换文件名,与团队成员共享工作流时需要发送整个对话记录。
使用模板后,一行命令即可处理视频:/video-tools any-file.mp4。还可以通过深度链接一键导入共享模板。
模板支持参数化、版本控制(可选)和独立工作流共享。
基础设施对团队协作的价值:
工作流模板不仅提升个人效率,更重要的是将代理工作流转化为机构知识而非个人经验。
可审计性:Goose 会话可导出为包含完整元数据的 JSON:token 使用量、模型配置、工作目录、时间戳。您可以准确了解工作流成本、执行情况以及完整的对话历史。
会话导出示例:
{
"id": "20251228_72",
"working_dir": "/Users/nicktaylor/dev/oss/wishlist-mcp",
"name": "Nike Sales Bar Chart",
"created_at": "2025-12-28T19:53:24Z",
"total_tokens": 10297,
"input_tokens": 10034,
"output_tokens": 263,
"provider_name": "anthropic",
"model_config": {
"model_name": "claude-opus-4-5-20251101",
"context_limit": 200000
},
"conversation": [...]
}
与大多数云模型提供的"批量数据导出"相比,单会话导出支持跟踪工作流成本、分析 token 使用模式并复现精确的执行环境。
团队协作:新成员可运行 /onboarding 快速上手,无需查阅复杂的操作文档。当所有成员使用相同的固定扩展运行相同模板时,能够减少环境差异导致的问题。
标准化:Goose 是 Linux 基金会AI 代理互操作性基金会(AAIF)的早期贡献者。模板和 MCP 集成使您能够适应新兴标准,避免厂商锁定。
提示词代表个人知识,而工作流模板可以成为机构知识。
MCP-UI 渲染支持
大多数 MCP 客户端将工具响应渲染为纯文本。Goose 的 GUI 能够将 MCP-UI 组件渲染为实际的交互式控件。
在 Advent of AI 第 17 天,我构建了返回 UI 组件的愿望清单 MCP 服务器。
在 Goose 中,它显示为交互式控件。在不支持 UI 的其他 MCP 客户端中,仅显示为文本内容。
自动可视化扩展也利用此功能,提供可交互的渲染可视化结果,而非简单的文本数据转储。
目前仅三个客户端正确支持 MCP-UI:Goose、ChatGPT(通过其 Apps SDK)和 LibreChat。能够渲染 UI 组件而非仅显示文本的客户端提供更佳的用户体验。
终端集成架构
Goose 提供两种工作模式:完整 REPL(类似其他 CLI 的交互式对话)和终端集成(@goose "执行此操作")。
终端集成实现无缝辅助体验。您在正常终端环境中工作,调用 Goose 执行特定任务,完成后自动返回原工作流程。
第 13 天示例:
❯ @goose "继续 PRD,我们上次停留在数据组织部分"
Goose 读取 PRD 文档,检查项目中已完成内容,并指导下一步操作。整个过程无需会话管理。
这种架构支持任务交接处理:
❯ @goose "全局安装此包"
# Goose:"您需要运行:sudo npm install -g whatever"
❯ sudo npm install -g whatever # 使用权限执行
❯ @goose "好的继续" # Goose 检测到已执行,继续任务
无需打开单独终端执行代理无法完成的操作,再返回原会话断点。保持当前终端会话的工作连续性。
终端集成还支持跨终端会话持久化:
eval "$(goose term init zsh --session my-project)"
关闭终端后重新打开,运行相同命令即可恢复之前的对话上下文。
这套基础设施旨在将 AI 辅助无缝集成到现有工作流中,而非完全替代。
适用场景与局限性GUI 界面更适合长时间交互对话或 CLI 的 REPL 模式。终端集成更适合快速任务或连续性工作。
如前所述,Goose 支持并行任务执行的子代理。每个子代理在独立的隔离会话中运行,单个子代理失败不会影响其他任务的完成结果。
子代理基础设施运行稳定。唯一遇到的问题是使用 GPT-4.1 时(token 不足时切换),Goose 无法生成子代理,具体原因不明。Anthropic 的 Sonnet 4.x 和 Opus 模型与子代理功能配合完美。
工作流模板的 YAML 验证功能有待加强。在第 9 天要求模型生成模板时,多次出现格式错误。尽管已提供 https://block.github.io/goose/llms.txt 作为参考,模型仍难以生成有效的 Goose 模板格式。
工具选型建议不同工具针对不同的使用场景设计。
如果需要最佳的行内自动补全功能,推荐 Cursor 或 VS Code 中的 GitHub Copilot(其多行建议和上下文感知能力出色)。
如果需要深度 VS Code 集成,GitHub Copilot 提供最原生的扩展支持。
如果偏好终端界面,Claude Code 或 OpenCode 是不错的选择。
如果需要可重复工作流的基础设施,Goose 是理想选择。
Goose 在以下场景中表现突出:
- 重复构建同类项目(模板避免重复提示)
- 希望不离开终端环境获得 AI 辅助(嵌入式模式)
- 团队需要可复现的工作流(YAML 文件版本控制)
- 构建需要交互式 UI 的工具(MCP-UI 渲染支持)
当然,Goose 也具备 AI 代理应有的所有基础功能,使其成为可靠的技术选择。
入门指南您可以将现有 AI 订阅服务用于 Goose:GitHub Copilot、Cursor、OpenAI、Anthropic 或任何 OpenAI 兼容的服务商。Goose 支持模型无关的架构。
如果没有现有订阅,可以从 Ollama 和本地模型开始体验。这种方式完全免费、私有化,且全部在本地运行。
实践建议理解 Goose 的最快方式是尝试 Advent of AI 挑战。虽然今年的活动已结束,但其中的挑战任务是熟悉 Goose 功能的绝佳材料。
建议不要一开始就迁移现有工作流。先尝试将一项重复性任务自动化的工作流模板,随后再考虑整体工作流迁移。
具体实现案例可参考 Advent of AI 2025 代码库。
延伸阅读材料:
- RPI 模式(研究→计划→实施)
- 安全检测工作流(真实团队使用案例)
- 代码执行模式(实验性、更高效的 MCP)
- Steve Yegge 在 Latent Space 播客中关于氛围编码和代理编排的讨论(技术发展方向)
图片来源:Paolo Gregotti 发布于 Unsplash
共同学习,写下你的评论
评论加载中...
作者其他优质文章







