@fungi.computer/bird-dog

中文文档
0.3.6发布于 2026/11/08MITTypeScriptES Module近 30 天下载 1.1万

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

中文使用文档
文档目录7 节
  1. 安装或设置
  2. 快开始
  3. 核心概念
  4. API 参考
  5. 实例和检查
  6. 限制和错误
  7. 贡献和许可证

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

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

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

安装或设置

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 为主机所属的邮站建立相同的回复信封 运输.

快开始

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

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 解决事实:

{
  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。 。 。 .

  • @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 从 快速开始,这个打印 和解答复批次:

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.",
  }),
);

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

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

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

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

pnpm test

限制和错误

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

贡献和许可证

BirdDog持有麻省理工学院的执照. 见 自由主义。 。 。 .

版本与发布记录

@fungi.computer/bird-dog 共发布 12 个版本,首次发布于 2026/10/15;过去 12 个月发布了 12 个版本。

版本发布日期距今
0.3.6latest2026/11/087 天前
0.3.52026/11/087 天前
0.3.42026/11/088 天前
0.3.32026/11/079 天前
0.3.22026/11/0412 天前
0.3.12026/10/3016 天前

关于 @fungi.computer/bird-dog 的常见问题

@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 和提交记录判断。