# @browserbasehq/sdk-functions 中文文档

规范地址：https://npmcn.com/package/%40browserbasehq/sdk-functions/

版本：1\.0\.3
npm 元数据更新时间：2026-09-30T04:19:32.130Z
中文译文更新时间：2026-11-08T16:21:01.482Z
软件包许可：ISC

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40browserbasehq/sdk-functions
原文对照：https://npmcn.com/package/%40browserbasehq/sdk-functions/?lang=original
项目主页：https://github.com/browserbase/sdk-functions-node#readme
源码仓库：https://github.com/browserbase/sdk-functions-node

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：286 kB，14 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：7 个
- 首次发布：2025-11-20T03:24:18.434Z
- 最新版本发布：2026-09-30T04:19:30.990Z
- 近 30 天下载量：22054（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：10（近 12 个月 10 个）

## 中文简介

[![NPM version](https://img.shields.io/npm/v/@browserbasehq/sdk-functions.svg)](https://npmjs.org/package/@browserbasehq/sdk-functions)

## 安装

```sh
npm install @browserbasehq/sdk-functions
```

也可以使用：`pnpm add @browserbasehq/sdk-functions`、`yarn add @browserbasehq/sdk-functions`、`bun add @browserbasehq/sdk-functions`

## README

# 浏览器库函数节点 SDK

[![NPM version](https://img.shields.io/npm/v/@browserbasehq/sdk-functions.svg)](https://npmjs.org/package/@browserbasehq/sdk-functions)

浏览器库函数 SDK 允许您在 [浏览器库](https://browserbase.com/)。每个函数都得到一个管理下的浏览器会话——写出您的自动化逻辑,在本地测试,然后发布到云中.

文件全文可在以下网址查阅: [页面存档备份,存于互联网档案馆. docs.browserbase.com](https://docs.browserbase.com/functions/quickstart)。 。 。 .

## 安装

```sh
pnpm add @browserbasehq/sdk-functions
```

或带 npm :

```sh
npm install @browserbasehq/sdk-functions
```

## 快速启动

与CLI合作的新项目:

```sh
pnpm dlx @browserbasehq/sdk-functions init my-project
cd my-project
```

将浏览器库 API 密钥添加到 `.env`数字 :

```sh
BROWSERBASE_API_KEY=your_api_key_here
```

启动函数使用 [阶段手](https://docs.stagehand.dev/),它需要在浏览器会话中扩展。 上传扩展名后粘贴返回的 `id` 输入 `extensionId` 内 `index.ts`数字 :

```sh
browse cloud extensions upload node_modules/@browserbasehq/stagehand/dist/assets/stagehand-extension.zip
```

启动本地开发服务器 :

```sh
pnpm bb dev index.ts
```

准备就绪后,公布至浏览器库:

```sh
pnpm bb publish index.ts
```

礛 [附加您的 API 密钥作为密钥](https://npmcn.com/package/%40browserbasehq/sdk-functions/#readme-secrets) 到已发布的函数.

## 使用量

### 基本函数

```ts
import { defineFn } from "@browserbasehq/sdk-functions";

defineFn("hello-world", async () => {
  return { message: "Hello from Browserbase!" };
});
```

### 浏览器自动化

每个函数都收到 `context` 有管理浏览器会话。 连接 [阶段手](https://docs.stagehand.dev/) 按会话编号排列:

```ts
import { defineFn } from "@browserbasehq/sdk-functions";
import { browserbase, Stagehand } from "@browserbasehq/stagehand";
import { z } from "zod/v4";

defineFn(
  "scrape-titles",
  async (context) => {
    const browser = await browserbase.connect({
      // The local dev server has no secrets, so fall back to .env.
      apiKey:
        context.secrets.BROWSERBASE_API_KEY ?? process.env.BROWSERBASE_API_KEY!,
      sessionId: context.session.id,
    });
    // In this example, Stagehand uses the Model Gateway where Browserbase charges for the tokens
    const stagehand = await Stagehand.create({ browser });
    const page = (await browser.context.activePage())!;

    await page.goto("https://news.ycombinator.com");
    const { data } = await stagehand.extract(
      "Extract the titles of the top 5 stories",
      z.object({ titles: z.array(z.string()).max(5) }),
    );

    await stagehand.close();
    return { titles: data.titles };
  },
  // The ID from `browse cloud extensions upload`. Stagehand needs its extension in the session.
  { sessionConfig: { extensionId: "your-extension-id" } },
);
```

### 参数验证

使用 [佐德语Name](https://zod.dev/) 用于验证传递到您函数的参数的计划 :

```ts
import { defineFn } from "@browserbasehq/sdk-functions";
import z from "zod";

defineFn(
  "multiply",
  async (_context, params) => {
    return { result: params.a * params.b };
  },
  {
    parametersSchema: z.object({
      a: z.number(),
      b: z.number(),
    }),
  },
);
```

### 自定义浏览器配置

过 `sessionConfig` 以自定义浏览器会话(使用与 [浏览器 SDK 会话创建参数](https://docs.browserbase.com/reference/api/create-a-session):

```ts
import { defineFn } from "@browserbasehq/sdk-functions";
import { browserbase, Stagehand } from "@browserbasehq/stagehand";
import { z } from "zod/v4";

defineFn(
  "stealth-scraper",
  async (context) => {
    const browser = await browserbase.connect({
      apiKey:
        context.secrets.BROWSERBASE_API_KEY ?? process.env.BROWSERBASE_API_KEY!,
      sessionId: context.session.id,
    });
    const stagehand = await Stagehand.create({ browser });
    const page = (await browser.context.activePage())!;

    await page.goto("https://example.com");
    const { data } = await stagehand.extract(
      "Extract the main text of the page",
      z.object({ content: z.string() }),
    );

    await stagehand.close();
    return { content: data.content };
  },
  {
    sessionConfig: {
      extensionId: "your-extension-id", // Stagehand's extension
      browserSettings: { advancedStealth: true },
    },
  },
);
```

### 秘诀

在加密的项目秘密中保留 API 密钥 。 函数所附带的每个秘密如下: `context.secrets[name]`。已读取 Stagehand 示例 `BROWSERBASE_API_KEY` 这边 他们不需要模型 API 键:没有 `model` 选项, Stagehand 使用 [浏览器模式网关](https://docs.stagehand.dev/v4/configuration/models#model-gateway),它为每个呼叫选择一个模型。 令牌的浏览器收费 .

创建该密钥并将其附加到已出版的函数中 [`browse` 国 际](https://www.npmjs.com/package/browse)数字 :

```sh
browse cloud secrets create BROWSERBASE_API_KEY --env BROWSERBASE_API_KEY
browse functions secrets attach <functionId> <secretId>
```

使用函数 ID 从 `builtFunctions[].id` 在发布输出中。 本地开发服务器不会传递秘密,所以示例会回到其中的值 `.env`。 。 。 .

## CLI 参考

这个 `bb` CLI包含在套件中.

| 命令 | 说明 |
| --- | --- |
| `bb init [project-name]` | 脚手架新项目( 默认为 `my-browserbase-function`(中文(简体) ) |
| `bb dev <entrypoint>` | 启动本地开发服务器 |
| `bb publish <entrypoint>` | 将函数部署到浏览器库 |
| `bb invoke <functionId>` | 启动已部署的职能 |

### `bb init`

```sh
bb init my-project
bb init my-project --package-manager npm
```

选项 :

-   `-p, --package-manager <manager>` 使用软件包管理器(`npm` 或者说 `pnpm`,默认为 `pnpm`(中文(简体) )

### `bb dev`

```sh
bb dev index.ts
bb dev index.ts --port 3000
```

选项 :

-   `-p, --port <number>` —— 要听的端口( 默认 : `14113`(中文(简体) )
-   `-h, --host <string>` - 主机绑定(默认: `127.0.0.1`(中文(简体) )

### `bb publish`

```sh
bb publish index.ts
bb publish index.ts --dry-run
```

选项 :

-   `--dry-run` - 显示不上传将公布的内容
-   `-u, --api-url <url>` —自定义 API 端点 URL

### `bb invoke`

```sh
bb invoke <functionId>
bb invoke <functionId> --params '{"key": "value"}'
```

选项 :

-   `-p, --params <json>` JSON 参数传递给函数
-   `--no-wait` - 不要等待 引用完成
-   `--check-status <invocationId>` - 检查现有援引的情况
-   `-u, --api-url <url>` —自定义 API 端点 URL

## 配置

在环境或在一个环境中设置变量 `.env` 用于 CLI 和本地开发服务器的文件。 已部署的职能从 [隐藏](https://npmcn.com/package/%40browserbasehq/sdk-functions/#readme-secrets) 换句话说.

| 变量 | 需求 | 说明 |
| --- | --- | --- |
| `BROWSERBASE_API_KEY` | 对 | 您的浏览器库 API 密钥 |

获取您的 API 密钥 [浏览器库.com](https://browserbase.com/)。 。 。 .

## 所需资源

-   节点.js 18+
-   类型脚本QQ 4.5

## 常见问题

### 如何安装 @browserbasehq/sdk-functions？

在项目目录运行 npm install @browserbasehq/sdk-functions，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 bb，可以用 npx bb 直接运行。

### @browserbasehq/sdk-functions 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @browserbasehq/sdk-functions 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @browserbasehq/sdk-functions 可以商用吗？

@browserbasehq/sdk-functions 使用 ISC 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @browserbasehq/sdk-functions 的下载量有多少？

根据 npm 官方下载统计，@browserbasehq/sdk-functions 在 2026/10/09 – 2026/11/07 这 30 天内被下载 22,054 次，日均约 735 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @browserbasehq/sdk-functions 还在维护吗？

最新版本 1\.0\.3 发布于 2026/09/30（1 个月前）；至今共发布 10 个版本，其中过去 12 个月发布了 10 个；首次发布于 2025/11/20。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

