Goose:Block 出品的本地可扩展 AI 工程自动化 Agent 完全指南
posts posts 2026-04-04T20:33:00+08:00Goose 是 Block 出品的开源 AI Agent(35.3k Stars),能够自主完成复杂的工程任务——从零构建项目、编写执行代码、调试失败、对接外部 API。支持任意 LLM、多模型配置、MCP 服务器集成,同时提供桌面应用和 CLI 两种形态。技术笔记AI Agent, 工程自动化, Rust, MCP, 开源Goose:Block 出品的本地可扩展 AI 工程自动化 Agent 完全指南
项目地址:block/goose
今日Star:35.3k(+0)| Forks:3.3k | Releases:126 | License:Apache-2.0
核心定位:本地可扩展的开源 AI Agent,自动化复杂工程任务——超越代码建议,真正执行落地
学习目标
读完本文后,你应该能够:
- 理解 Goose 的核心设计理念和架构
- 掌握 Goose 的安装方式(桌面应用和 CLI)
- 熟练使用 Goose 自动化工程任务
- 理解多模型配置和工作区隔离机制
- 掌握 MCP 服务器集成方法
- 能够构建自定义 Goose 分支(Custom Distributions)
- 理解 Goose 的扩展点和定制化方法
一、问题:为什么需要本地 AI Agent?
传统的 AI 编程助手(如 GitHub Copilot)提供代码补全和建议,但:
- 执行能力有限:只能建议,无法直接执行代码
- 上下文受限:无法完整理解复杂项目的依赖和架构
- 工具链缺失:无法与外部 API、数据库、CI/CD 系统交互
- 协作能力弱:无法处理需要多轮迭代的复杂任务
- 隐私顾虑:代码需要发送到云端处理
Goose 的核心理念:做一个真正能在你的机器上工作的 AI Agent,不只是建议,而是执行。
二、核心特性
Goose 不仅仅是一个代码补全工具,而是一个完整的 AI 工程自动化 Agent:
1. 自主执行能力
你:帮我把这个 React 项目迁移到 Next.js 13
Goose:
→ 分析现有项目结构和依赖
→ 规划迁移步骤
→ 逐个执行文件迁移
→ 处理依赖兼容性
→ 修复迁移过程中的错误
→ 验证最终构建成功2. 任意 LLM 支持
providers:
- name: openai
models:
- gpt-4o
- gpt-4o-mini
- name: anthropic
models:
- claude-sonnet-4-5
- claude-opus-4
- name: google
models:
- gemini-2.5-pro3. 多模型智能路由
autonomous:
# 根据任务复杂度自动选择模型
model_routing:
simple: gpt-4o-mini # 简单任务用小模型省钱
medium: claude-sonnet-4-5
complex: gpt-4o # 复杂任务用强模型4. MCP 服务器集成
mcpServers:
- name: filesystem
command: npx
args: ["-y", "@modelcontextprotocol/server-filesystem", "~/projects"]
- name: slack
command: npx
args: ["-y", "@modelcontextprotocol/server-slack"]5. 工作区隔离
每个项目有独立的工作区上下文,不会互相干扰:
~/projects/ecommerce-app/ # 工作区 A
~/projects/blog/ # 工作区 B6. 桌面应用 + CLI 双形态
| 形态 | 适用场景 | 特点 |
|---|---|---|
| 桌面应用 | 日常开发 | GUI 界面,可视化任务状态 |
| CLI | 自动化/CI | 可编程,脚本集成 |
三、核心架构
┌─────────────────────────────────────────────────────────────┐
│ Goose Core │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Session │ │ LLM │ │ Tool Executor │ │
│ │ Manager │ │ Router │ │ (Code/File/API) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Workspace │ │ MCP │ │ Recipe Engine │ │
│ │ Isolation │ │ Bridge │ │ (Workflows) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│ │
v v
┌─────────────────┐ ┌─────────────────┐
│ Local Files │ │ MCP Servers │
│ (Project A) │ │ (Slack/FS/Git)│
└─────────────────┘ └─────────────────┘核心模块
| 模块 | 职责 |
|---|---|
| Session Manager | 管理对话上下文、历史、状态 |
| LLM Router | 智能路由到合适的 LLM 提供商 |
| Tool Executor | 执行代码、操作文件、调用 API |
| Workspace Isolation | 项目级别隔离,避免干扰 |
| MCP Bridge | 与 MCP 服务器通信 |
| Recipe Engine | 工作流编排和自动化 |
四、安装与快速上手
桌面应用(推荐日常使用)
macOS
# 使用 Homebrew 安装
brew install block/tap/goose
# 或下载 DMG 安装包
# https://github.com/block/goose/releasesWindows
# 使用 winget 安装
winget install Block.goose
# 或下载 MSI 安装包Linux
# 使用 apt 安装
curl -fsSL https://raw.githubusercontent.com/block/goose/main/download_cli.sh | bash
# 或手动下载 .deb/.rpm 包CLI(适合自动化)
# 安装 CLI 版本
npm install -g @block/goose-cli
# 验证安装
goose --version快速开始
# 启动桌面应用
goose
# 或启动 CLI
goose chat "帮我创建一个 React + TypeScript 项目"
# 指定项目路径
goose chat --workspace ~/my-project "分析这个项目的架构"五、使用场景
场景 1:从零构建项目
你:帮我用 FastAPI 创建一个 REST API 项目,包含用户认证和 JWT
Goose:
→ 选择合适的项目模板
→ 创建项目结构
→ 配置依赖(PyJWT, python-jose, passlib)
→ 编写用户模型和 CRUD 接口
→ 实现 JWT 认证中间件
→ 编写单元测试
→ 验证 API 可正常运行场景 2:代码重构
你:这个函数太长了,帮我重构
Goose:
→ 分析函数逻辑
→ 识别可拆分的子功能
→ 创建辅助函数
→ 更新函数调用
→ 确保重构后测试通过场景 3:Bug 调试
你:单元测试失败了,帮我看看
Goose:
→ 运行测试获取详细错误
→ 分析错误堆栈
→ 定位问题代码
→ 分析根因
→ 修复问题
→ 重新运行测试验证场景 4:API 集成
你:帮我集成 Stripe 支付 API
Goose:
→ 安装 Stripe SDK
→ 创建 Stripe 客户端封装
→ 实现支付Intent 创建接口
→ 实现 Webhook 处理
→ 编写集成测试场景 5:CI/CD 配置
你:帮我配置 GitHub Actions 部署流程
Goose:
→ 创建 .github/workflows/ 目录
→ 编写 CI 流水线(测试、构建)
→ 编写 CD 部署配置
→ 配置环境变量和密钥
→ 验证配置正确性六、多模型配置
Goose 支持配置多个 LLM 提供商,实现成本和性能的平衡:
配置示例
# ~/.goose/config.yaml
providers:
anthropic:
api_key: ${ANTHROPIC_API_KEY}
models:
- name: claude-opus-4-5
max_tokens: 8192
- name: claude-sonnet-4-5
max_tokens: 4096
openai:
api_key: ${OPENAI_API_KEY}
models:
- name: gpt-4o
max_tokens: 4096
- name: gpt-4o-mini
max_tokens: 4096
google:
api_key: ${GOOGLE_API_KEY}
models:
- name: gemini-2.5-pro
max_tokens: 8192
# 默认模型选择
defaults:
provider: anthropic
model: claude-sonnet-4-5
# 根据任务复杂度自动选择
autonomous:
model_routing:
strategy: complexity_based
thresholds:
simple: gpt-4o-mini
medium: claude-sonnet-4-5
complex: gpt-4o模型路由策略
autonomous:
model_routing:
# 基于任务复杂度路由
strategy: complexity_based
# 或基于token消耗路由
strategy: cost_optimized
# 或固定使用某模型
strategy: fixed
fixed_model: claude-opus-4-5七、MCP 服务器集成
Model Context Protocol (MCP) 让 Goose 能够与各种外部工具交互:
常用 MCP 服务器
| 服务器 | 功能 |
|---|---|
| filesystem | 读写本地文件 |
| git | Git 操作 |
| slack | Slack 消息发送 |
| github | GitHub API 操作 |
| memory | 持久化记忆 |
| brave-search | 网页搜索 |
配置 MCP 服务器
# ~/.goose/config.yaml
mcpServers:
# 文件系统访问
- name: filesystem
command: npx
args: ["-y", "@modelcontextprotocol/server-filesystem", "~/projects"]
# Git 操作
- name: git
command: npx
args: ["-y", "@modelcontextprotocol/server-github"]
# Slack 通知
- name: slack
command: npx
args: ["-y", "@modelcontextprotocol/server-slack"]
env:
SLACK_BOT_TOKEN: ${SLACK_BOT_TOKEN}使用示例
你:在 Slack 的 #deployments 频道发送部署成功通知
Goose:
→ 连接 Slack MCP 服务器
→ 格式化部署信息
→ 发送到指定频道八、工作区隔离
Goose 使用工作区隔离确保每个项目有独立的上下文:
工作区结构
~/.goose/
├── config.yaml # 全局配置
├── sessions/ # 对话历史
│ ├── project-a/
│ │ ├── session-001
│ │ └── session-002
│ └── project-b/
│ └── session-001
├── memory/ # 持久化记忆
│ └── project-a/
│ └── context.json
└── cache/ # 缓存工作区命令
# 切换工作区
goose workspace switch my-project
# 查看当前工作区
goose workspace current
# 列出所有工作区
goose workspace list
# 清理工作区
goose workspace clean my-project九、Recipe 工作流
Recipe 是 Goose 的自动化工作流引擎:
内置 Recipe
| Recipe | 用途 |
|---|---|
| release_risk_check | 发布风险评估 |
| code_review | 代码审查 |
| test_generation | 测试生成 |
| documentation | 文档生成 |
自定义 Recipe
# my-recipe.yaml
name: deploy-check
description: 部署前检查清单
steps:
- name: run_tests
command: npm test
- name: check_coverage
command: npm run coverage -- --threshold 80
- name: build
command: npm run build
- name: notify
mcp: slack
action: send_message
channel: "#deployments"
message: "部署检查完成"十、扩展与定制
Custom Distributions
Goose 支持构建自定义分发版本,预配置特定提供商、扩展和品牌:
# 创建自定义分发
goose dist create --name my-goose \
--provider anthropic \
--provider openai \
--extension my-custom-extension扩展点
| 扩展点 | 说明 |
|---|---|
| Provider | 添加新的 LLM 提供商 |
| Tool | 添加新的工具能力 |
| Recipe | 添加新的工作流 |
| UI | 自定义桌面应用界面 |
十一、Recipes 贡献指南
创建新 Recipe
# workflow_recipes/my-recipe/RECIPE.md
---
name: my-recipe
description: 描述这个 Recipe 做什么
author: your-name
version: 1.0.0
---
# My Recipe
## 概述
这个 Recipe 用于...
## 使用方法goose recipe run my-recipe –arg value
## 步骤说明
### Step 1: 准备工作
执行初始检查...
### Step 2: 核心任务
主要工作...
### Step 3: 收尾
清理和验证...提交贡献
# Fork 并克隆
git clone https://github.com/your-name/goose.git
cd goose/workflow_recipes
# 创建 Recipe
mkdir -p my-recipe
# 添加 RECIPE.md 和相关文件
# 测试
goose recipe test my-recipe
# 提交 PR
git push origin my-recipe
# 在 GitHub 创建 Pull Request十二、最佳实践
1. 合理选择模型
# 简单任务用小模型省钱
autonomous:
model_routing:
simple: gpt-4o-mini
complex: gpt-4o2. 善用工作区隔离
- 每个项目独立工作区
- 定期清理不需要的会话
- 使用记忆功能保存项目上下文
3. MCP 服务器安全
# 只授权必要的 MCP 服务器
mcpServers:
- name: filesystem
allowedPaths:
- ~/projects
- ~/documents4. 隐私保护
# 使用本地模型
providers:
- name: ollama
endpoint: http://localhost:11434
# 或在配置中排除敏感项目
workspace:
exclude:
- ~/.ssh
- ~/.aws
- ~/wallet十三、常见问题
Q:Goose 和 Copilot有什么区别? A:Copilot 提供代码建议,Goose 是能够执行完整任务的 Agent。Goose 可以帮你创建项目、调试 bug、集成 API,而不只是建议代码。
Q:支持哪些 LLM? A:理论上任何兼容 OpenAI API 格式的模型都支持,包括 Claude、GPT-4、Gemini、本地模型(Ollama)等。
Q:代码安全吗? A:Goose 是本地运行的,所有处理都在你的机器上完成。可以配置使用本地模型(Ollama)完全离线运行。
Q:如何贡献 Recipe?
A:参考 CONTRIBUTING_RECIPES.md 创建 PR。Recipe 存放在 workflow_recipes/ 目录下。
Q:支持哪些平台? A:macOS、Windows、Linux 都支持,提供桌面应用和 CLI 两种形态。
十四、总结
Goose 代表了 AI 编程助手的下一代范式——从代码建议进化到任务执行。
核心优势:
- 真正的执行能力:不只是建议,而是帮你完成整个任务
- 任意 LLM:不绑定特定提供商,成本灵活
- 本地运行:代码不离开你的机器,隐私安全
- MCP 集成:与文件系统、GitHub、Slack 等无缝交互
- 工作区隔离:多项目并行,语境清晰
- Recipe 自动化:工作流可复用、可分享
- 可扩展:Custom Distributions 支持预配置和品牌化
如果你想要一个真正能帮你完成工程任务的 AI Agent,Goose 是目前最成熟的开源选择之一。
相关链接:
- GitHub:https://github.com/block/goose
- 官方文档:https://block.github.io/goose/docs
- 快速开始:https://block.github.io/goose/docs/quickstart
- Discord:https://discord.gg/goose-oss
- Custom Distributions:https://github.com/block/goose/blob/main/CUSTOM_DISTROS.md