mcpField
D
dbos-typescript

dbos-typescript

github.com/sickn33开发49.2k70 次安装今天更新
代码仓库

关于 dbos-typescript

面向 TypeScript 开发者的 DBOS 持久化工作流实践技能,指导构建可靠应用,涵盖配置、工作流与步骤设计、队列、通信、测试和客户端使用。

主要功能

  1. 01配置并启动 DBOS
  2. 02设计确定性工作流
  3. 03将外部操作封装为步骤
  4. 04使用队列控制并发
  5. 05采用工作流通信模式
  6. 06测试 DBOS 应用

适用场景

  1. 01在 TypeScript 应用中引入 DBOS
  2. 02构建包含持久化步骤的工作流
  3. 03限制工作流并发执行
  4. 04测试 DBOS 应用

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill dbos-typescript

安装后在 Claude Code 中输入/dbos-typescript确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

AGENTS.md
CLAUDE.md
references/
advanced-patching.md
advanced-versioning.md
_sections.md
client-setup.md
client-enqueue.md
comm-events.md
comm-messages.md
comm-streaming.md
lifecycle-config.md
pattern-debouncing.md
pattern-idempotency.md
pattern-classes.md
lifecycle-express.md
pattern-scheduled.md
pattern-sleep.md
queue-basics.md
queue-deduplication.md
queue-concurrency.md
queue-listening.md
queue-partitioning.md
workflow-control.md
step-basics.md
step-transactions.md
workflow-background.md
step-retries.md
workflow-constraints.md
queue-rate-limiting.md
test-setup.md

详细介绍

DBOS TypeScript 最佳实践

使用 DBOS 持久化工作流构建可靠、容错的 TypeScript 应用的指南。

适用场景

在以下情况下参考这些指南:

  • 将 DBOS 添加到现有 TypeScript 代码中
  • 创建工作流和步骤
  • 使用队列控制并发
  • 实现工作流通信(事件、消息、流)
  • 配置和启动 DBOS 应用
  • 在外部应用中使用 DBOSClient
  • 测试 DBOS 应用

按优先级划分的规则类别

优先级类别影响前缀
1生命周期严重lifecycle-
2工作流严重workflow-
3步骤高step-
4队列高queue-
5通信中comm-
6模式中pattern-
7测试低至中test-
8客户端中client-
9高级低advanced-

关键规则

安装

安装与现有应用兼容的受支持 SDK 版本,并将其固定在锁文件中。对于新项目,请先确认当前官方版本:

npm install @dbos-inc/dbos-sdk@<verified-version>
DBOS 配置与启动

运行任何工作流之前,DBOS 应用必须配置并启动 DBOS:

import { DBOS } from "@dbos-inc/dbos-sdk";

async function main() {
  DBOS.setConfig({
    name: "my-app",
    systemDatabaseUrl: process.env.DBOS_SYSTEM_DATABASE_URL,
  });
  await DBOS.launch();
  await myWorkflow();
}

main().catch(error => { console.error(error); process.exitCode = 1; });
工作流与步骤结构

工作流由步骤组成。任何执行复杂操作或访问外部服务的函数,都必须通过 DBOS.runStep 作为步骤运行:

import { DBOS } from "@dbos-inc/dbos-sdk";

async function fetchData() {
  return await fetch("https://api.example.com").then(r => r.json());
}

async function myWorkflowFn() {
  const result = await DBOS.runStep(fetchData, { name: "fetchData" });
  return result;
}
const myWorkflow = DBOS.registerWorkflow(myWorkflowFn);
关键限制
  • 不要在步骤中调用、启动或加入队列的工作流
  • 不要使用线程或不受控的并发来启动工作流;请使用 DBOS.startWorkflow 或队列
  • 工作流必须具有确定性;非确定性操作应放在步骤中
  • 不要从工作流或步骤中修改全局变量

使用方法

阅读各条规则文件,了解详细说明和示例:

references/lifecycle-config.md
references/workflow-determinism.md
references/queue-concurrency.md

参考资料

限制

  • 示例是特定版本的示意代码;请根据已安装的 SDK 核实函数签名和迁移指南。启动前注册工作流和步骤。妥善保管数据库凭据。
  • 步骤重放和重试可能会重复产生外部影响。请使用服务提供方稳定的幂等键和应用事务;仅凭工作流 ID 并不能保证卡片只扣款一次。
  • 数据库重置、取消、恢复和分叉示例都需要明确的目标和授权;它们可能会销毁数据、绕过队列限制或重复产生影响。
  • 仅当任务明显符合上述范围时,才使用此技能。
  • 不要将输出视为可替代特定环境验证、测试或专家审查的内容。
  • 如果缺少必需的输入、权限、安全边界或成功标准,请停止并请求澄清。

评论

支持 Markdown