为了账号安全,请及时绑定邮箱和手机立即绑定

Goose 与其他 AI 编程工具的核心差异

标签:
人工智能

我刚刚完成了 Goose 的 Advent of AI 系列挑战,涵盖了从 CI 自动化到手势控制应用,再到具有 UI 的模型上下文协议(MCP)服务器等各个方面。

手势项目测试演示

这些挑战几乎全部在 Goose 中完成。初期主要使用 GUI 界面,随着熟练度提升逐渐转向 CLI。偶尔会切换到 Claude 完成特定任务,但 Goose 始终是我的主要开发环境。我的标准工作流程是:将挑战任务转化为产品需求文档(PRD),对于复杂项目还会补充评估标准,然后进行具体实现。

经过两周多的深度使用,我总结出了 Goose 的独特价值。首先从基础功能说起。

基础功能概览

Goose 具备 AI 代理应有的全部核心功能:带聊天界面的 GUI、命令行接口(CLI),并且与其他主流代理一样支持多模型架构(可连接任何 LLM 服务商,包括本地模型)。部分 CLI 功能还能在 CI/CD 流水线中发挥作用。

Goose 聊天界面

模型选择对话框

此外,它还原生支持 MCP 协议、聊天历史记录、命名会话、并行任务执行的子代理自定义上下文技能,并且作为开源项目发布。

GitHub logo block / goose

开源可扩展的 AI 代理,超越代码建议——支持任意 LLM 的安装、执行、编辑和测试

goose

本地化、可扩展、开源的 AI 代理,自动化工程任务

Discord CI

goose 是运行在本地的 AI 代理,能够从头到尾自动化复杂的开发任务。不仅仅是代码建议,goose 可以从零开始构建完整项目、编写和执行代码、调试故障、编排工作流,并与外部 API 交互——完全自主运行。

无论是进行原型设计、优化现有代码还是管理复杂的工程流水线,goose 都能适应您的工作流程并精准执行任务。

goose 设计追求最大灵活性:支持任意 LLM 和多模型配置以优化性能和成本,无缝集成 MCP 服务器,提供桌面应用和 CLI 两种形式——是希望提升开发效率的开发者的理想 AI 助手。

观看视频

快速链接
需要帮助?

在 GitHub 上查看

上述功能大多并非独有。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 架构示意图

当然,Goose 也具备 AI 代理应有的所有基础功能,使其成为可靠的技术选择。

入门指南

您可以将现有 AI 订阅服务用于 Goose:GitHub Copilot、Cursor、OpenAI、Anthropic 或任何 OpenAI 兼容的服务商。Goose 支持模型无关的架构。

如果没有现有订阅,可以从 Ollama 和本地模型开始体验。这种方式完全免费、私有化,且全部在本地运行。

实践建议

理解 Goose 的最快方式是尝试 Advent of AI 挑战。虽然今年的活动已结束,但其中的挑战任务是熟悉 Goose 功能的绝佳材料。

建议不要一开始就迁移现有工作流。先尝试将一项重复性任务自动化的工作流模板,随后再考虑整体工作流迁移。

具体实现案例可参考 Advent of AI 2025 代码库

延伸阅读材料:

图片来源:Paolo Gregotti 发布于 Unsplash

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消