# 环境变量与脚本

> 保存第三方服务凭据，并在一次任务或可复用 JavaScript 脚本中按需使用。

- 原文: https://www.getbeav.com/docs/workflows/reusable-scripts

当一段流程需要反复执行，例如从第三方 API 读取数据、整理成固定格式，或把结果同步到另一个服务，可以让 Beav 把它保存为可复用脚本。脚本由 Beav 内置运行时执行，不要求电脑另行安装 Node.js。

## 先保存需要的环境变量

进入 **设置 → 环境与密钥**，添加第三方服务需要的地址、令牌或 API Key。

* 令牌、密钥和密码请选择 **Secret**；它们保存在系统钥匙串中。
* 非敏感配置，例如 API 地址或固定项目 ID，可以保存为普通值。
* 环境变量是整个 Beav App 共享的，不按工作空间重复保存。

保存环境变量不等于每个脚本都能读取它。创建脚本时，必须明确声明它需要哪些变量；脚本只会收到这份声明中的变量。

## 在一次任务中使用

环境变量不只用于脚本。需要调用第三方服务时，直接在对话中说明要完成的事，以及应使用的变量名称即可；不需要把 API Key 或 Token 粘贴到对话中。

```text
使用环境变量 ACME_API_KEY 和 ACME_API_URL，
查询今天的订单并按商品汇总。不要显示密钥。
```

Agent 可以确认哪些变量名称已设置，但看不到普通值或 Secret 的实际内容。只有在实际执行已请求的任务时，系统才会把明确引用的变量提供给对应调用。环境变量不会自动提供给所有任务、脚本或工作空间；每次使用时都应写明变量名称。

## 创建脚本

在对话中清楚说明要自动化的重复流程、输入和预期输出，并直接要求创建可复用脚本。例如：

```text
创建一个可复用脚本：从 Acme API 拉取今天的订单，
按商品汇总数量和销售额，再输出一段中文日报。
它需要使用环境变量 ACME_API_KEY 和 ACME_API_URL。
只在当前工作空间使用。
```

也可以要求在所有工作空间复用：

```text
创建一个可复用脚本，在所有工作空间都能使用。
它接收一个关键词，调用第三方检索 API，输出前十条结果及链接。
使用环境变量 SEARCH_API_KEY。
```

默认情况下，当前已有工作空间时脚本只保存在当前工作空间；没有工作空间时，脚本保存为个人可用脚本。若同名脚本已存在，Beav 会更新同一作用域中的版本，不会覆盖内置技能或另一作用域的同名脚本。

## 运行与复用

以后在对话中说出脚本名称并提供参数即可。例如：

```text
运行“今日订单日报”，统计日期用 2026-08-05。
```

或：

```text
用“行业检索”搜索 AI 视频工具，给我可直接打开的链接。
```

Agent 会先启用对应脚本，再传入本次参数并返回结果。脚本结果适合继续用于创作、稿件、知识库或后续媒体任务；不要把 API Key、Token 或其他密钥写进对话或要求脚本输出它们。

## 不需要安装开发环境

Beav 创建的脚本使用 JavaScript，并由 App 内置运行时执行，因此电脑上不需要安装 Node.js 或其他编程环境。它适合处理固定输入、调用 HTTP/HTTPS API，并将结果交回对话。

如果你需要查看或调整脚本代码，它可使用的能力很小且明确：

* `process.env`：读取创建时声明的环境变量，例如 `process.env.SEARCH_API_KEY`。
* `process.argv`：读取运行时传入的文本参数。
* `beav.fetch({ url, method, headers, body })`：发起 HTTP 或 HTTPS 请求，读取状态、响应头和正文。
* `print(...)`：把结果交回对话。

脚本不能使用 `require`、`import`、文件系统、子进程或电脑上安装的命令行工具，也不能使用顶层 `await`。这些边界让脚本可以在没有编程环境的电脑上稳定执行，并避免脚本越过已声明的环境变量和网络请求范围。

## 更新与排错

如果接口字段、参数或认证方式改变，直接让 Agent 更新同名脚本，并再次写明需要的环境变量。出现认证失败时，先检查 **设置 → 环境与密钥** 中的变量名称和值，再确认脚本声明的名称完全一致。

删除环境变量会让依赖它的脚本无法继续运行。删除前请先更新或移除使用该变量的脚本。
