# @fungi\.computer/bird-dog 中文文档

规范地址：https://npmcn.com/package/%40fungi.computer/bird-dog/

版本：0\.3\.6
npm 元数据更新时间：2026-11-08T12:21:36.861Z
中文译文更新时间：2026-11-15T18:32:03.088Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40fungi.computer/bird-dog
原文对照：https://npmcn.com/package/%40fungi.computer/bird-dog/?lang=original
项目主页：https://github.com/fungi-computer/bird-dog#readme
源码仓库：https://github.com/fungi-computer/bird-dog

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

- 包体积（解压后）：73 kB，12 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：2 个
- 首次发布：2026-10-15T07:59:46.951Z
- 最新版本发布：2026-11-08T12:21:36.667Z
- 近 30 天下载量：10600（2026-10-16 至 2026-11-14，npm 官方下载统计）
- 已发布版本数：12（近 12 个月 12 个）

## 中文简介

永久地址代理邮件, 覆盖一般的监视者工作

## 安装

```sh
npm install @fungi.computer/bird-dog
```

也可以使用：`pnpm add @fungi.computer/bird-dog`、`yarn add @fungi.computer/bird-dog`、`bun add @fungi.computer/bird-dog`

## README

# 鸟狗 (`@fungi.computer/bird-dog`(中文(简体) )

BirdDog 将地址代理翻译为 Watchdog 工作并构建回复 当工作解决。 它拥有信封语法 回复密钥和和解 内容。 每个主机阶段通过现有的载货邮站进行批复 主人; 守望犬拥有送货的尝试和唤醒.

每个发件人和收件人都是普通的代理会话. 父母和子女 关系仍保留在主机的域名记录中.

## 安装或设置

```sh
npm install @fungi.computer/bird-dog
```

BirdDog只是无害环境管理。 这取决于 `@fungi.computer/watchdog` 财务报告和审定财务报表 `effect`, (中文(简体) ), npm 为你安装的。 它没有自己的I/O, 所以它运行在节点, Cloudflare 工人或任何可以在其现有邮件中进行批发的运行时间 货主.

条目:

-   `@fungi.computer/bird-dog`: 承诺 API 打开 `BirdDog` 及其类型.
-   `@fungi.computer/bird-dog/effect`: " 效果 " 邮件室`make`, (中文(简体) ), `settlementReplies`中,该效应Schema解析器和 `BirdDogError`。 。 。 . `settlementReplies` 为主机所属的邮站建立相同的回复信封 运输.

## 快开始

这会构建一个回复批次。 实例打印它; 持久主机阶段 在其现有的承运人邮政交易中进行批次交易.

```ts
import { BirdDog, type BirdDogMail } from "@fungi.computer/bird-dog";

const parent = {
  kind: "agent",
  agentId: "parent",
  sessionId: "parent-session",
} as const;
const child = {
  kind: "agent",
  agentId: "child",
  sessionId: "child-session",
} as const;

const room = await BirdDog.make({
  stage: async (mail: readonly BirdDogMail[]) => {
    for (const reply of mail) console.log(reply.content);
  },
  now: () => Date.now(),
});

// 1. Turn accepted work into a Watchdog job. Hand this to Watchdog's ingest.
const job = BirdDog.agentJob({
  delivery: "followUp",
  work: {
    jobId: "job-1",
    sessionId: child.sessionId,
    commandFactId: "command-1",
  },
  mail: {
    key: "delegation-1",
    to: child,
    from: parent,
    replyTo: [parent],
    content: "Find out why the build is red",
    createdAt: Date.now(),
  },
});

// 2. Your Watchdog executor decodes the payload and runs the child's work.
const payload = BirdDog.decodeAgentJob(job);
console.log(payload.work.commandFactId); // "command-1"

// 3. When Watchdog settles the job, stage the replies.
await room.fanOut({
  job: { ...job, state: "settled", outcome: "completed" },
  content: "A test fixture was missing. Fixed it.",
});
```

在真正的主持人中,定居的工作来自守望狗和 `stage` 承诺 在和解光标推进之前整批。 重放稳定的回复密钥 保留了第一个被分级的字母,包括其原来的时间戳.

## 核心概念

**通讯地址.** 一个代理地址是 `{ kind: "agent", agentId, sessionId }`. 身份证 是 1 到 256 个字符。 副剂没有特殊种类.

**邮件.** A 类 `BirdDogMail` 有马厩 `key`页:1 `to` 财务报告和审定财务报表 `from` 地址, a `replyTo` 列表,字符串 `content` (单位:千美元) `createdAt` 以毫秒计的时间。 钥匙 必须在复试中识别请求。 BirdDog 从每个回复密钥中获取 这个.

**探员工作.** `BirdDog.agentJob({ work, delivery, mail? })` 验证 输入并返回已排队的监视者任务。 这份工作是 `queue` 目标 `sessionId`它的车道是 `default`,其优先事项是 `0`,其有效载荷载 页:1 `sessionId`,则 `commandFactId` 和可选邮件. `work.recovery` 直接通过观察者的恢复政策。 因为它是 同步,您可以在所有者交易中调用,并将结果传递给 监视者 `transactional.enqueueAcceptedJob`。 。 。 . `BirdDog.decodeAgentJob(job)` 将有效载荷解析到执行器一侧。 观察者从来不读它.

**风出.** `fanOut({ job, content, diagnostic? })` 找份固定工作,请 内容欠通讯员和会议的终极诊断。 已经过去了 每份答复一次 `replyTo` 地址: `stage`键入 `<mail key>:reply:<index>`。 。 。 . 每个答复的 `from` 是邮件的收件者,它的 `content` 您的内容 逐字记录(或当是空的, `The delegated work ended <outcome> without reply text.`,所以答复总是 可接受文本)及其类型 `reply` 解决事实:

```ts
{
  commandId: "command-1", // the settled work's commandFactId
  outcome: "failed", // the exact Watchdog outcome
  diagnostic: "provider_error: 401 Authorization: Bearer [redacted]",
}
```

`outcome` 这正是工作: `completed`, (中文(简体) ), `failed`, (中文(简体) ), `interrupted`, (中文(简体) ), `cancelled` 或者说 `outcome_unknown`。仅限 `failed`, (中文(简体) ), `interrupted` 财务报告和审定财务报表 `outcome_unknown` 答复附有诊断. `boundedDiagnostic` 做一个 线条,口罩证书形状的值(授权-化学证书,命名为 密钥、令牌、秘密和密码以及长的字母和数字运行),然后切 给 `BIRD_DOG_DIAGNOSTIC_MAX_LENGTH` (200)个人物. A 类 `cancelled` 任务 提供已提供的取消结果作为其内容。 一个和解 `meta` 用于您自己的粉丝出局包装, 如命名取消者; 回复从不 拿着 没有邮件的工作什么也没有.

接收者的主机拥有认证和演示文稿. 它相信这个 `reply` 只有在核对其寄来的信件的答复后,再决定谁 编写线条及其模型如何看待它.

**主办口岸.** `BirdDog.make` 带 `stage(mail)` 财务报告和审定财务报表 `now()`硬化是一个 批量操作,使主机可以解剖地执行所有回复。 主机保留 稳定钥匙、准备的交货事实和通过承运人邮报的收据。 监视者 准备尝试,在重新开放后恢复复试,并报告下一次醒悟.

## API 参考

生成的引用在 [文档/api](https://npmcn.com/package/%40fungi.computer/bird-dog/docs/api/README.md)。 。 。 .

-   `@fungi.computer/bird-dog`数字 : `BirdDog` 与 `agentJob`, (中文(简体) ), `decodeAgentJob` 财务报告和审定财务报表 `make`,加上 `BirdDogMail`, (中文(简体) ), `BirdDogAgentReference`, (中文(简体) ), `BirdDogAgentWork`, (中文(简体) ), `BirdDogAgentJobPayload`, (中文(简体) ), `BirdDogReply`, (中文(简体) ), `BirdDogOptions`, (中文(简体) ), `BirdDogSettlement` 财务报告和审定财务报表 `BirdDogRuntime` 类型.
-   `@fungi.computer/bird-dog/effect`数字 : `make`, (中文(简体) ), `agentJobFromInput`, (中文(简体) ), `decodeAgentJob`, (中文(简体) ), `settlementReplies`, (中文(简体) ), `boundedDiagnostic`, (中文(简体) ), `BIRD_DOG_DIAGNOSTIC_MAX_LENGTH`, (中文(简体) ), `BirdDogError`, (中文(简体) ), `EffectBirdDogOptions`, (中文(简体) ), `BirdDogEffect` 和计谋 `BirdDogAgentReferenceSchema`, (中文(简体) ), `BirdDogReplySchema`, (中文(简体) ), `BirdDogMailSchema`, (中文(简体) ), `BirdDogAgentWorkSchema`, (中文(简体) ), `BirdDogAgentJobPayloadSchema` 财务报告和审定财务报表 `BirdDogAgentJobInputSchema`。 。 。 .

## 实例和检查

效果切入点与效果值相同。 使用 `job` 从 快速开始,这个打印 和解答复批次:

```ts
import * as Effect from "effect/Effect";
import { make } from "@fungi.computer/bird-dog/effect";

const room = await Effect.runPromise(
  make({
    stage: (mail) =>
      Effect.sync(() => {
        for (const reply of mail) console.log(reply.content);
      }),
    now: () => Date.now(),
  }),
);
await Effect.runPromise(
  room.fanOut({
    job: { ...job, state: "settled", outcome: "completed" },
    content: "A test fixture was missing. Fixed it.",
  }),
);
```

使用策略来分析您进程以外的邮件 :

```ts
import * as Schema from "effect/Schema";
import { BirdDogMailSchema } from "@fungi.computer/bird-dog/effect";

const mail = Schema.decodeUnknownSync(BirdDogMailSchema)(JSON.parse(body));
```

包件测试包括职务翻译、打入的结算答复、定界和 校正诊断和批量故障 承运人和当地消费者 测试包括耐用回盘、丢失收据和重新开放.

```sh
pnpm test
```

## 限制和错误

`agentJob` 财务报告和审定财务报表 `decodeAgentJob` 拒绝使用已维护的无效输入 计划 一个失败的许诺中转端口变成 `BirdDogError("mail staging failed")` 原出错为其 `cause`。 。 。 . 呼叫者必须保留和解光标,直到成功。 交付 至少保留一次:接收者必须承认重复的邮件密钥.

## 贡献和许可证

BirdDog持有麻省理工学院的执照. 见 [自由主义](https://npmcn.com/package/%40fungi.computer/bird-dog/LICENSE)。 。 。 .

## 常见问题

### @fungi\.computer/bird-dog 是什么？

永久地址代理邮件, 覆盖一般的监视者工作

### 如何安装 @fungi\.computer/bird-dog？

在项目目录运行 npm install @fungi\.computer/bird-dog，或使用 pnpm add / yarn add / bun add。

### @fungi\.computer/bird-dog 支持 TypeScript 吗？

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

### @fungi\.computer/bird-dog 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @fungi\.computer/bird-dog 可以商用吗？

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

### @fungi\.computer/bird-dog 的下载量有多少？

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

### @fungi\.computer/bird-dog 还在维护吗？

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

