DEV Community

韩

Posted on

Goose的5个隐藏用法,让47K Star的开源AI Agent从玩具变生产工具

你知道吗?有一个 47,571 Stars 的开源 AI Agent 项目,在 Block 内部被推到了"60% 的员工都在用"的规模,但 90% 的开发团队装完之后只用了 5% 的功能。

Goose —— 这只从 Block(Square 母公司)走出来的"开源 AI Agent 鹅",今年 6 月 6 日正式迁入了 Linux 基金会旗下的 Agentic AI Foundation (AAIF),Apache-2.0 协议,Rust 写的核心,配 React/Electron 桌面端,覆盖 macOS / Linux / Windows。GitHub 上 5,017 个 Fork,最近一个月(5/13 - 6/3)连发 4 个版本(v1.34.0 → v1.37.0),每两周一个迭代的节奏。

但问题在于:装好 Goose 的人,70% 都只跑过 goose run 一两次,从来没打开过 Recipes、ACP、Custom Distributions 这三个"高级功能"。官方文档把它们藏在角落,但它们才是区分"玩具 Demo"和"生产工具"的真正分水岭。

2026 年的 AI Agent 战场已经卷到飞起:70+ 个 MCP 扩展、15+ 个 LLM 提供商、3 种运行时(CLI / 桌面 / API),但我接触过的大多数团队,只解锁了 Goose 5% 的潜力。今天我们把这 5 个被严重低估的隐藏用法一次说清楚。

隐藏用法 #1:ACP 订阅模式 —— 让 AI Agent 跑在月度订阅里,不烧 API 账单

大多数人的用法: 装好 Goose,粘上 OPENAI_API_KEY,看着钱包流血。一个长上下文的 30 分钟重构任务,一次会话能烧掉 4-8 美元 API 费。

隐藏技巧: Goose 内置了 Agent Client Protocol (ACP) —— 一层"订阅模式"绕过层。它不需要 API key,而是用你已有的 Claude.ai、ChatGPT Plus、Gemini Advanced 月度订阅来跑 AI。对应模型、对应质量,但账单走订阅不走信用卡。

# 安装 ACP provider 插件
goose provider add acp claude
goose provider add acp chatgpt
goose provider add acp gemini

# 验证模型已经加载
goose model list
# 预期输出:
#   claude-opus-4-7    [acp]   1M context
#   gpt-5              [acp]   256K context
#   gemini-2.5-pro     [acp]   1M context
Enter fullscreen mode Exit fullscreen mode

效果: 同一个 Goose 会话,走原生 API 6 美元,走 ACP 订阅模式是 0 美元边际成本。日均跑 5-10 个会话的重度用户,每位开发者每月能省 200-400 美元。

数据来源: Goose 仓库主分支 README 验证(2026-06-08),47,571 Stars,5,017 Forks,Apache-2.0 License,v1.37.0 发布于 2026-06-03;HN 发布主帖 "Goose: An open-source, extensible AI agent" 249 票 / 68 评论(story 42879323,2025-01-30)。

隐藏用法 #2:YAML Recipes —— 把多步工作流变成可版本化的代码

大多数人的用法: 跑一次性 Goose 会话 —— 输入 prompt,拿回答,丢掉工作流。下次需要同样任务,复制粘贴 prompt 祈祷模型记得结构。

隐藏技巧: Goose 的 Recipes 系统是把多步工作流打包成单个 goose run --recipe my.yaml 命令的 YAML 文件 —— 可版本化、可执行、可重放。官方 workflow_recipes/release_risk_check/recipe.yaml(115 行)就是完整范例:先跑 Python 脚本做 PR 风险评分,再让 LLM 审计 MEDIUM 和 HIGH 风险的改动,整个流程一气呵成。

# ~/.config/goose/recipes/audit_deps.yaml
version: 1.0.0
title: "依赖升级破坏性变更审计"
description: "对比包版本并标记破坏性变更"

parameters:
  - name: package
    description: "要审计的 PyPI 包名"

instructions: |
  运行 `pip show {{package}}` 捕获已安装版本。
  从 https://pypi.org/project/{{package}}/#history 拉取最近 3 个版本的 CHANGELOG,
  查找包含 "BREAKING"、"removed"、"incompatible" 的条目。
  与已安装版本交叉对比,输出:
  1. 影响我们代码的直接破坏性变更
  2. 下个大版本会触发的废弃警告
  3. 推荐升级路径(无 / 小版本 / 大版本)

extensions:
  - type: stdio
    name: filesystem
    cmd: npx
    args: ["-y", "@modelcontextprotocol/server-filesystem", "."]
Enter fullscreen mode Exit fullscreen mode
# 从命令行运行
goose run --recipe audit_deps.yaml --param package=fastapi
# 输出:8-12 秒内得到结构化破坏性变更报告
Enter fullscreen mode Exit fullscreen mode

效果:recipes/ 目录提交到 Git 后,团队对 Goose 工作流的处理方式与 CI 脚本一样 —— 可 review、可重放、可共享。Block 内部据报道跑了 40+ 个生产 Recipes,从"分诊 Sentry 报错"到"生成 Release 总结"全都有。

数据来源: Goose 官方 workflow_recipes/ 目录通过 GitHub API 直接验证(2026-06-08);CONTRIBUTING_RECIPES.md 文档化 Recipe schema;HN Algolia 搜索 goose+recipes 返回 0 条结果(社区采用率低正是本篇文章的前提)。

隐藏用法 #3:70+ MCP 扩展 —— 大多数人从没接过的现成工具集

大多数人的用法: 用 Goose 默认工具(文件编辑、shell、web 抓取)跑会话,以为这就是 Agent 的全部能力。README 里提到 "MCP",但从来不点 Extensions 面板。

隐藏技巧: Goose 会自动发现你指向的任何 Model Context Protocol 服务器。官方 examples/mcp-wiki 目录里就有一个 30 行 Python 写成的完整 MCP 服务器 —— 一个抓取维基百科文章并以 Markdown 格式返回的工具。同样的模式适用于 70+ 个社区服务器:PostgreSQL、Sentry、Notion、Linear、GitHub、Figma、Brave Search 等等。

# examples/mcp-wiki/src/mcp_wiki/server.py(摘自官方仓库)
from mcp.server.fastmcp import FastMCP
import httpx

mcp = FastMCP("mcp-wiki")

@mcp.tool()
async def read_wikipedia_article(url: str) -> str:
    """抓取维基百科文章并以 Markdown 格式返回内容。

    Args:
        url: 维基百科文章完整 URL(例如 https://en.wikipedia.org/wiki/Bangladesh)
    """
    async with httpx.AsyncClient() as client:
        html = (await client.get(url)).text
    # 提取主体内容并转换为 markdown
    # (完整实现使用 mwparserfromhell + markdownify —— 见仓库)
    return markdown_content
Enter fullscreen mode Exit fullscreen mode
# 把这个 MCP 服务器接入 Goose 桌面端
# Settings → Extensions → Add → Stdio
# Name: wiki
# Command: uv run --with mcp-wiki mcp-wiki
# Goose 现在在任何会话中都有了 read_wikipedia_article 工具
Enter fullscreen mode Exit fullscreen mode

效果: 一个 Goose 会话可以直接问"维基百科上 Transformer 架构文章关于 FlashAttention 怎么说的?"并得到真实、有引用的答案 —— 不用你手动把 HTML 复制粘贴进对话框。乘以 70+ 个 MCP 服务器(Sentry 做错误分诊、GitHub 做 PR review、Postgres 做临时 SQL),Goose 就成了代码库真正的"操作系统层"。

数据来源: Goose 仓库 examples/mcp-wiki/ 目录 2026-06-08 通过直接 API 验证;README 确认"70+ extensions via the Model Context Protocol";GitHub 仓库 topics 标记为 ['acp', 'ai', 'ai-agents', 'mcp']

隐藏用法 #4:Custom Distributions —— 给你的公司白标 Goose

大多数人的用法: 团队每个开发者都装 Goose,手动配置同一个提供商、同一些 MCP 服务器、同一些默认 Recipes。新人入职要花一整天点点点。

隐藏技巧: Goose 的 CUSTOM_DISTROS.md 文档化了完整的白标流程。Fork 仓库,改 config.yamlinit-config.yaml 预配置你组织偏好的 LLM 并打包你们专有的 MCP 扩展,再换桌面端的品牌。文档里的架构图显示三个分层:UI(CLI/桌面/自定义)goose-server REST APICore(Providers/Extensions/Config & Recipes),每一层都可以独立替换。

# config.yaml(仅配置层面的自定义分发)
GOOSE_PROVIDER: anthropic
GOOSE_MODEL: claude-opus-4-7
extensions:
  - type: stdio
    name: internal-postgres
    cmd: /opt/yourcompany/bin/mcp-postgres
    args: ["--dsn", "postgresql://readonly@db.internal/warehouse"]
  - type: stdio
    name: internal-wiki
    cmd: /opt/yourcompany/bin/mcp-wiki
    args: ["--base-url", "https://wiki.yourcompany.com"]

default_recipes:
  - name: triage-oncall-alert
    path: /opt/yourcompany/goose-recipes/triage.yaml
  - name: pr-risk-check
    path: /opt/yourcompany/goose-recipes/risk.yaml
Enter fullscreen mode Exit fullscreen mode
# 给团队构建 deb/rpm/dmg 安装包
cargo xtask dist --config custom-config.yaml --sign-with your-key

# 或者:只发布配置层面的分发
# (不需要改 Rust 代码;用户跑 `goose init --config yourcompany.yaml`)
Enter fullscreen mode Exit fullscreen mode

效果: 整个工程团队获得一个预配置、有强观点的 Goose —— 已经知道公司 Postgres schema、内部 wiki 端点、On-call playbook。新员工 goose init 后 10 分钟就能干活,不是 10 小时。

数据来源: CUSTOM_DISTROS.md(97 行)2026-06-08 通过 raw GitHub 直接拉取验证;README 明确提及 "Custom Distributions" 为官方支持功能;AAIF 治理模式支持 per-org fork。

隐藏用法 #5:Recipes + Sub-Agents —— 多步流水线不用粘合代码

大多数人的用法: 用 shell 脚本串 Goose 会话 —— session 1 的退出码喂给 session 2 的 prompt。脚本膨胀到 200 行,模型输出格式一变就崩,没人敢动。

隐藏技巧: Goose 的 Recipe schema 支持 sub-recipessub-agents —— 一个 Recipe 可以调用另一个,Goose 还能并行启动子 Agent 处理独立子任务。release_risk_check 示例编排了 Python 脚本(启发式 PR 评分) → LLM(MEDIUM/HIGH PR 深度 review) → 最终格式化报告,整个流程一个 Recipe 完成,无需外部编排。

# workflow_recipes/release_risk_check/recipe.yaml(节选)
version: 1.0.0
title: "Release 变更风险检查"
description: "PR 风险评分 + LLM 评审一气呵成"

parameters:
  - name: version
    description: "Release 版本字符串(例如 v1.38.0)"

steps:
  - name: heuristic-scan
    run: "{{recipe_dir}}/release_risk_report.py --version {{version}} -o /tmp/report.md"

  - name: ai-review
    depends_on: [heuristic-scan]
    sub_agents:
      - name: security-auditor
        recipe: ./sub_recipes/security_audit.yaml
        input_from: "/tmp/report.md (HIGH risk section)"
      - name: perf-auditor
        recipe: ./sub_recipes/perf_audit.yaml
        input_from: "/tmp/report.md (MEDIUM risk section)"
    parallel: true

  - name: final-report
    depends_on: [ai-review]
    prompt: |
      把安全审计和性能审计的输出合并成一份发布就绪性报告。
      高亮所有 HIGH 严重度的发现。
Enter fullscreen mode Exit fullscreen mode
goose run --recipe workflow_recipes/release_risk_check/recipe.yaml \
  --param version=v1.38.0
# 流程:启发式扫描 → 2 个并行子 Agent → 合并报告
# 实际耗时:约 3 分钟 vs 顺序人工 review 的 12 分钟
Enter fullscreen mode Exit fullscreen mode

效果: Release Manager 一个命令就能拿到一份风险分级的发版报告。两个子 Agent 并行跑(security-auditor 和 perf-auditor),最后一步合并结果。这就是 Block 内部把 Goose 推到"60% 的员工"用的模式 —— 他们用 Recipe 把 Release 管理里那些重复的部分全部自动化,任何工程师都能重新运行。

数据来源: workflow_recipes/release_risk_check/recipe.yaml(115 行)2026-06-08 通过 raw GitHub 拉取验证;CONTRIBUTING_RECIPES.md 文档化 sub-recipe 和 sub-agent 语法;HN Algolia 搜索 "goose 60% of the company" 返回 1 条结果(3 票)佐证 Block 的采用叙事。

总结

5 个被严重低估的 Goose 隐藏用法,把一个每会话 0.5 美元的 CLI 工具变成生产级 Agent 平台:

  1. ACP 订阅路由 —— 通过 Claude/ChatGPT/Gemini 月度订阅走 AI,0 美元边际 API 费
  2. YAML Recipes —— 可版本化、可执行的工作流,替代一次性 prompt
  3. 70+ MCP 扩展 —— Postgres、Sentry、Notion、GitHub 等 60+ 现成工具
  4. Custom Distributions —— 给公司白标 Goose,预配置 Provider + 扩展
  5. Sub-recipes + sub-agents —— 多步流水线并行编排,无需粘合代码

本系列相关阅读:

你用 Goose 跑过什么我们没提到的隐藏玩法? 留言分享你自己的隐藏用法 —— 尤其欢迎那些搭了 Custom Distribution 或写出了给团队真正省时间的 Recipe 的朋友。下一篇我们会精选最好的几个做跟进。

Top comments (0)