跳到主要内容

Developer 扩展

🎥Plug & Play
Watch the demo

Developer 扩展让 goose 自动化以开发者为中心的任务,例如编辑文件、执行 shell 命令和搭建项目。它还提供代码库分析工具。

本教程介绍如何启用并使用 Developer MCP 服务器。它是 goose 的内置扩展。

配置​

信息

安装 goose 后,Developer 扩展默认已启用。

  1. Click the button in the top-left to open the sidebar
  2. Click Extensions in the sidebar
  3. Toggle Developer on

使用示例​

在这个示例中,我将让 goose 自动搭建 JavaScript 开发环境,包含 Express、Mongoose、Nodemon、Dotenv,并初始化 Git。

  1. 在 goose Desktop 中打开一个新会话

goose 提示词​

搭建一个新的 JavaScript 项目,包含 Express、Mongoose、Nodemon 和 Dotenv。获取这些包的最新版本,用这些版本生成 README,并初始化 Git

大约 1 分钟后,goose 就搭好了我的整个开发环境!🎉

goose 输出​

我来帮你搭建一个包含这些依赖的新 JavaScript 项目。步骤如下:

1. 首先创建一个新目录并初始化项目
2. 然后安装依赖
3. 创建详细的 README
4. 初始化 git
5. 创建一些起步文件
6. 开始:

[... shell 命令,已创建的文件 ...]

很好!我已经搭建了一个完整的 Express 项目,并集成了 MongoDB 和 Dotenv:

1. 创建了新项目目录并初始化了 npm
2. 安装了 Express、Mongoose 和 dotenv 依赖
3. 搭建了基本项目结构,目录包括:
- config/
- models/
- routes/
- controllers/
4. 创建了必要文件:
- index.js(主服务器文件)
- .env(环境变量)
- .ignore(包含常见的 node.js 忽略项)
5. 添加了一个包含基本 name 和 email 字段的用户模型
6. 创建了带两个方法的用户控制器:
- getUsers(GET 所有用户)
- createUser(POST 新用户)
7. 在 `/api/routes` 下添加了用户路由
8. 在 package.json 中更新了启动脚本
9. 创建了全面的 README.md,包含:
- 安装脚本
- 项目结构
- 可用脚本
- 环境变量
- 最新包版本

项目结构如下:

my-express-app/
├── config/ # Configuration files
├── models/ # MongoDB models
│ └── User.js # User model
├── routes/ # API routes
│ └── userRoutes.js
├── controllers/ # Route controllers
│ └── userController.js
├── .env # Environment variables
├── .gitignore # Git ignore file
├── index.js # Entry point
└── package.json # Project dependencies and scripts

开始开发时你可以:

1. 运行 `npm install` 安装依赖
2. 用 `npm run dev` 启动服务器

API 将可在以下地址访问:
- `http://localhost:3000/api/users`(GET 获取所有用户)
- `http://localhost:3000/api/users`(POST 创建新用户)

你可以用 Postman 或 curl 等工具测试 API。例如,创建一个新用户:

curl x POST http://localhost:3000/api/users \
-H "Content-Type: application/json" \
-d '{"name": "Ebony Louis" , "email": "ebony@example.com"}'

需要我添加其他功能,或对这个搭建做进一步改进吗?

Shell 命令中的环境变量​

shell 工具执行的 shell 命令会继承正在运行的 goose 进程的环境。通常包括:

  • PATH、HOME、USER 等系统变量
  • 启动 goose 的进程中已有的环境变量(例如你从 shell 启动 goose 时终端的环境)
  • goose 注入的会话特定变量,例如用于会话隔离工作流的 AGENT_SESSION_ID

这使得依赖环境配置的工作流成为可能,例如需要身份验证的 CLI 操作和构建过程。

信息

goose Desktop 或通过启动器启动时,可能使用不同的环境,并且可能不会加载你的 shell 启动文件。

敏感信息

环境变量可能包含 API 密钥和令牌等敏感值(例如 GITHUB_TOKEN、AWS_ACCESS_KEY_ID)。

配置访问控制​

默认情况下,goose 可以用你的用户权限运行系统命令,并编辑任何可访问的文件,无需你的批准。这是因为 goose 默认运行在 Autonomous 权限模式,并且可以使用 Developer 扩展的 shell 和文件编辑工具。这种配置让 goose 能快速、独立地工作,但也有可能出现意外结果。了解可用的访问控制功能,有助于你按自己的舒适程度和具体需求配置 goose。

提示

下方的快速配置示例介绍了几种加强对 goose 行为控制的方法。

Developer 扩展工具​

Developer 扩展提供以下工具:

工具说明使用场景风险等级
shell执行 shell 命令运行测试、安装包、git 操作⚠️ 高
可以用你的用户权限运行任何系统命令
write创建或覆盖文件创建文件、更新生成的资源、写入配置⚠️ 高
可以修改任何可访问的文件
edit替换文件中的精确文本代码重构、定向编辑、删除匹配文本⚠️ 高
可以修改任何可访问的文件
tree列出带行数的目录树在读取文件之前了解项目结构✅ 低
只读的文件列表
read_image读取本地或远程图片供模型查看查看截图、图表和视觉资源✅ 低
只读的图片访问

代码结构分析请使用单独的 Analyze 平台扩展。

访问控制功能​

你可以叠加多种控制,以匹配你的风险承受能力和工作流:

  • **goose 权限模式**控制 goose 何时请求批准:

    模式说明使用场景
    Autonomous
    CLI:auto
    无需批准适合在安全环境中的有经验用户
    Manual Approval
    CLI:approve
    审阅每一个操作建议用于敏感工作,或当你希望最大限度控制时
    Smart Approval
    CLI:smart_approve
    由 AI 决定哪些需要审阅折中方案
    Chat Only
    CLI:chat
    禁用所有工具用于最高安全性,以及不支持工具调用的模型
  • **工具权限**让你在 Manual Approval 或 Smart Approval 模式下,为单个扩展工具设置 Always allow、Ask before 和 Never allow

在会话中切换模式

你可以在会话中更改 goose 权限模式,无需重启:

  • CLI:使用 /mode 命令(例如 /mode approve)
  • Desktop:使用底部菜单中的 模式选择按钮

快速配置示例​

在处理敏感系统、探索不熟悉的代码库、使用不受信任的模型,或只是希望在执行前审阅操作时,你可能希望对 goose 的操作有更多控制。

下面是一个启用监督的配置示例:

  1. **将权限模式**设为 Smart Approval 或 Manual Approval:

    # ~/.config/goose/config.yaml
    GOOSE_MODE: smart_approve # or approve
  2. 根据你的需求配置工具权限

随着你对 goose 的行为更加熟悉,可以调整这些设置,在为环境保持适当防护的同时减少摩擦。

信息

另见安全指南,了解如何安全使用 goose。

更多资源​