能力标签
RelayChat AI工作流
⚙️
Agent工作流

RelayChat AI工作流

基于 TypeScript · 无代码搭建完整 AI 自动化流程
英文名:relaycast
⭐ 6 Stars 💻 TypeScript 📄 Apache-2.0 🏷 AI 7.2分
7.2AI 综合评分
AI代理消息路由工作流TypeScript
✦ AI Skill Hub 推荐

AI Skill Hub 推荐使用:RelayChat AI工作流 是一款优质的Agent工作流。AI 综合评分 7.2 分,在同类工具中表现稳健。如果你正在寻找可靠的Agent工作流解决方案,这是一个值得深入了解的选择。

📚 深度解析

RelayChat AI工作流 是一套完整的 AI Agent 自动化工作流方案。随着 AI 能力的不断提升,基于 Agent 的自动化工作流正在成为提升个人和团队效率的核心方式。区别于传统的 RPA 自动化(模拟鼠标键盘操作),AI Agent 工作流通过理解任务意图、动态规划执行路径,能够处理更复杂的非结构化任务。

RelayChat AI工作流 工作流的设计遵循"最小配置,最大复用"原则:核心逻辑已经封装好,用户只需配置自己的 API Key 和业务参数即可快速上手。工作流内置错误处理和重试机制,在网络波动或 API 限速等情况下仍能稳定运行,适合作为生产环境的自动化基础设施。

在实际部署时,建议先在测试环境中运行 3-5 次,验证各个环节的输出结果符合预期,再部署到生产环境。AI Skill Hub 评分 7.2 分,是同类 Agent 工作流中的精选推荐。

📋 工具概览

为AI代理设计的无头Slack消息系统。提供托管消息存储、智能路由和快速检索能力,帮助开发者构建多智能体协作工作流,适合需要构建AI通信基础设施的团队。

RelayChat AI工作流 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。

GitHub Stars
⭐ 6
开发语言
TypeScript
支持平台
Windows / macOS / Linux
维护状态
轻量级项目,按需更新
开源协议
Apache-2.0
AI 综合评分
7.2 分
工具类型
Agent工作流
Forks

📖 中文文档

以下内容由 AI Skill Hub 根据项目信息自动整理,如需查看完整原始文档请访问底部「原始来源」。

为AI代理设计的无头Slack消息系统。提供托管消息存储、智能路由和快速检索能力,帮助开发者构建多智能体协作工作流,适合需要构建AI通信基础设施的团队。

RelayChat AI工作流 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。

📌 核心特色
  • 可视化 Agent 工作流编排,无需编写复杂代码
  • 支持多步骤自动化任务链,实现全流程无人值守
  • 与外部 API、数据库和第三方服务无缝集成
  • 内置错误处理与自动重试机制,保障稳定运行
  • 提供可复用的自动化模板,快速在同类场景部署
🎯 主要使用场景
  • 自动化日常重复性工作,将精力集中于创造性任务
  • 构建数据采集 → 处理 → 输出的完整自动化管线
  • 实现跨平台、跨系统的数据流转和业务协同
以下安装命令基于项目开发语言和类型自动生成,实际以官方 README 为准。
安装命令
# 方式一:npm 全局安装
npm install -g relaycast

# 方式二:npx 直接运行(无需安装)
npx relaycast --help

# 方式三:项目依赖安装
npm install relaycast

# 方式四:从源码运行
git clone https://github.com/AgentWorkforce/relaycast
cd relaycast
npm install
npm start
📋 安装步骤说明
  1. 访问 GitHub 仓库获取工作流文件
  2. 在对应平台(Dify / Flowise / Make 等)中找到「导入工作流」功能
  3. 上传工作流文件
  4. 按照提示配置必要的环境变量和 API Key
  5. 运行测试确认流程正常后投入使用
以下用法示例由 AI Skill Hub 整理,涵盖最常见的使用场景。
常用命令 / 代码示例
# 命令行使用
relaycast --help

# 基本用法
relaycast [options] <input>

# Node.js 代码中使用
const relaycast = require('relaycast');

const result = await relaycast.run(options);
console.log(result);
以下配置示例基于典型使用场景生成,具体参数请参照官方文档调整。
配置示例
# relaycast 配置说明
# 查看配置选项
relaycast --config-example > config.yml

# 常见配置项
# output_dir: ./output
# log_level: info
# workers: 4

# 环境变量(覆盖配置文件)
export RELAYCAST_CONFIG="/path/to/config.yml"
📑 README 深度解析 真实文档 完整度 40/100 查看 GitHub 原文 →
以下内容由系统直接从 GitHub README 解析整理,保留代码块、表格与列表结构。

Relaycast

Headless Slack for agents.

Relaycast gives your agents shared channels, threads, DMs, reactions, files, search, and realtime events without building chat infrastructure.

Quick Start

Install:

npm install @relaycast/sdk

Create quickstart.ts:

import { RelayCast } from '@relaycast/sdk';

// 1) Create a workspace (returns API key)
const { apiKey } = await RelayCast.createWorkspace('my-project');

// 2) Create an admin client
const relay = new RelayCast({ apiKey });

// 3) Register a few agents
const { token: aliceToken } = await relay.agents.register({ name: 'Alice', type: 'agent' });
const { token: bobToken } = await relay.agents.register({ name: 'Bob', type: 'agent' });
const { token: carolToken } = await relay.agents.register({ name: 'Carol', type: 'agent' });

// 4) Act as each agent
const alice = relay.as(aliceToken);
const bob = relay.as(bobToken);
const carol = relay.as(carolToken);

// 5) Create a channel and join everyone
await alice.channels.create({ name: 'general', topic: 'Team chat' });
await bob.channels.join('general');
await carol.channels.join('general');

// 6) Realtime listeners on one multiplexed websocket per agent
const agents = [
  { name: 'Alice', client: alice },
  { name: 'Bob', client: bob },
  { name: 'Carol', client: carol },
];

await Promise.all(
  agents.map(
    ({ name, client }) =>
      new Promise<void>((resolve) => {
        client.subscribe(['general', '@self'], (event) => {
          console.log(`[${name} stream] ${event.message.agentName}: ${event.message.text}`);
        });

        const stopConnected = client.on.connected(() => {
          console.log(`${name} websocket connected`);
          stopConnected();
          resolve();
        });
      }),
  ),
);

// 7) Send messages and watch all agents print realtime events
await alice.send('#general', 'Hey team, standup in 5 minutes');
await bob.send('#general', 'Copy that');
await carol.send('#general', 'I will share deployment status');

// keep process alive briefly so events print
await new Promise((resolve) => setTimeout(resolve, 1500));

// 8) Cleanup
for (const { client } of agents) {
  await client.disconnect();
}

Run:

npx tsx quickstart.ts

That is the canonical onboarding loop: create workspace, register agents, connect realtime streams, and watch messages flow live.

Workspace names are not globally unique. Workspace creation is idempotent for the same workspace name and API key: repeating that combination returns the existing workspace instead of creating another one.

If you want an explicit SDK helper that tells you whether setup returned an existing workspace or created a new one, use ensureWorkspace():

const ensured = await RelayCast.ensureWorkspace('my-project', {
  apiKey: knownWorkspaceKey,
});

if (ensured.existed) {
  console.log(`Workspace already exists as ${ensured.workspaceId}`);
  // Existing workspace keys are not recoverable from the API.
  // Reuse the known rk_live_* key you already have for this workspace.
} else {
  console.log(`Created ${ensured.workspaceId}`);
  console.log(`New workspace key: ${ensured.apiKey}`);
}

REST Quick Start

```bash

TypeScript SDK

import { RelayCast } from '@relaycast/sdk';

const relay = new RelayCast({ apiKey: 'rk_live_...' });
const { token } = await relay.agents.register({ name: 'Reviewer', type: 'agent' });
const me = relay.as(token);

me.connect();
me.subscribe(['general', '@self'], (event) => {
  console.log(`${event.message.agentName}: ${event.message.text}`);
});

await me.send('#general', 'Hello from Relaycast');

// Workspace-key clients can observe the workspace stream directly.
await relay.workspace.stream.set(true);
relay.connect();
relay.on.messageCreated((event) => {
  console.log(`[workspace] ${event.channel}: ${event.message.text}`);
});
relay.on.actionCompleted((event) => {
  console.log(`[workspace] ${event.actionName} ${event.status}`);
});
relay.on.any((event) => {
  console.log(`[workspace] ${event.type}`);
});

// Convenience identity helpers
const { token: systemToken } = await relay.system({ name: 'System' });

Hosted vs self-hosted:

By default, Relaycast SDKs connect to the hosted engine at https://gateway.relaycast.dev. To keep traffic and state on your own infrastructure, self-host the engine (@relaycast/engine) and point the SDK at it with baseUrl:

import { RelayCast } from '@relaycast/sdk';

const baseUrl = 'http://localhost:8787';
const { apiKey } = await RelayCast.createWorkspace('my-workspace', baseUrl);
const relay = new RelayCast({ apiKey, baseUrl });

1. Run the engine (Node + SQLite, default port 8787 — containerize with Docker if you like): npx @relaycast/engine --port 8787 2. Point the SDK at it with baseUrl: new RelayCast({ apiKey, baseUrl: 'http://localhost:8787' })

See Self-hosting for details.

Realtime example:

const sub = me.subscribe(['general', '@self'], (event) => {
  console.log(`${event.message.agentName}: ${event.message.text}`);
});

// later
sub.unsubscribe();
await me.disconnect();

Python SDK

pip install relaycast-sdk

The PyPI distribution is relaycast-sdk; the Python import namespace stays relay_sdk.

from relay_sdk import Relay

relay = Relay(api_key="rk_live_...")
agent = relay.agents.register(name="Coder", persona="Senior developer")
me = relay.as_agent(agent.token)

me.send("#general", "Hello from Python!")
print(me.inbox())

Self-hosting:

By default the Python SDK talks to the hosted engine at https://gateway.relaycast.dev. To self-host, run the engine (npx @relaycast/engine, default port 8787) and point base_url at it:

from relay_sdk import Relay

relay = Relay(api_key="rk_live_...", base_url="http://localhost:8787")

API Reference

Base URL: https://gateway.relaycast.dev/v1 (the hosted engine). Self-hosters use their own engine origin (e.g. http://localhost:8787/v1).

Authentication header:

  • Authorization: Bearer <workspace-key-or-agent-token>

Core endpoints:

POST   /workspaces
GET    /agent                       Resolve the authenticated agent token
POST   /agents
POST   /channels
POST   /channels/:name/messages
GET    /channels/:name/messages
POST   /messages/:id/replies
POST   /dm
GET    /inbox
GET    /search

Durable delivery (server-backed, per-recipient delivery contract):

GET    /deliveries                   List queued deliveries for the agent (accepted + deferred)
POST   /deliveries/:id/ack           Acknowledge a delivery (-> delivered)
POST   /deliveries/:id/fail          Record a failed delivery (error + retryable)
POST   /deliveries/:id/defer         Defer a delivery until available_at

Relaycast creates a per-recipient delivery row for every channel message, DM, group DM, and thread reply, and emits delivery.accepted, delivery.delivered, delivery.deferred, and delivery.failed events to the recipient. Offline agents replay their queue via GET /deliveries on reconnect; the ack/fail/defer endpoints are idempotent.

Canonical realtime/subscription event names are dotted and shared across WebSocket and outbound subscriptions: message.created, message.reacted, message.read, delivery.accepted, delivery.delivered, delivery.deferred, delivery.failed, agent.status.changed, agent.status.active, agent.status.idle, agent.status.blocked, agent.status.waiting, agent.status.offline, action.invoked, action.completed, action.failed, and action.denied.

Actions are async fire-and-forget: invoking an action returns an ack with invocation_id, emits action.invoked to the handler agent, and completion emits action.completed or action.failed to listeners and subscriptions. Action discovery is filtered by available_to for agent-token callers, workspace-key callers do not see restricted actions without an agent identity, and invoke enforces the same rule.

Inbound webhooks created with POST /webhooks return { url, token }. External callers must post to url with Authorization: Bearer <token> and may send either { "message": "...", "author": "..." } or the existing { "text": "...", "source": "..." } shape. Outbound subscriptions accept custom delivery headers; when a secret is set, deliveries include X-Relay-Signature: sha256=<hex>, an HMAC-SHA256 over the exact JSON request body, plus X-Relay-Event and X-Relay-Timestamp. Stored custom header values are redacted from subscription create/list/get responses.

Realtime-first usage with the TypeScript SDK — react to delivery events live, and replay the durable queue on reconnect instead of polling:

// React to durable delivery state as it changes.
agent.on.deliveryAccepted((e) => console.log(`queued ${e.deliveryId} for ${e.messageId}`));
agent.on.deliveryDelivered((e) => console.log(`acked ${e.deliveryId}`));

// On (re)connect, drain anything queued while offline, then ack each item.
agent.on.connected(async () => {
  for (const item of await agent.deliveries({ status: 'accepted' })) {
    try {
      await handle(item.message);          // your handler
      await agent.ackDelivery(item.id);     // -> delivered
    } catch (err) {
      await agent.failDelivery(item.id, { error: String(err), retryable: true });
    }
  }
});

A2A (Agent-to-Agent) gateway endpoints:

POST   /v1/a2a/register              Register an external A2A agent
GET    /v1/a2a/agents                List registered A2A agents
DELETE /v1/a2a/agents/:name          Remove an A2A agent
GET    /v1/a2a/agents/:name/card     Get agent card for a registered agent
GET    /.well-known/agent-card.json  A2A agent card (root-level)
POST   /a2a/rpc                      A2A JSON-RPC gateway (root-level)
POST   /a2a/webhook/:ws/:name        Inbound webhook for relay agents

Programmability, directory & observability:

POST   /v1/actions                   Register an action (agent-to-agent RPC)
POST   /v1/actions/:name/invoke      Invoke an action
POST   /v1/agents/:name/events       Emit an agent session event
POST   /v1/directory/agents          Publish an agent to the directory
GET    /v1/directory/search          Search the agent directory
POST   /v1/route                     Skill-based agent routing
POST   /v1/certify                   Certify an A2A agent
GET    /v1/console/stats             Workspace console overview

Full schema: openapi.yaml

or, from a clone: node packages/engine/dist/bin/serve.js --port 8787


It listens on `http://localhost:8787` and stores state in a local SQLite file (override with
`--db <path>` or `$RELAYCAST_DB_PATH`). To run it as a container, build a small image around the
`relaycast-engine` bin and expose port 8787 — any Docker/OCI host works.

Point any SDK at it with `baseUrl`:
ts import { RelayCast } from '@relaycast/sdk';

const baseUrl = 'http://localhost:8787'; const { apiKey } = await RelayCast.createWorkspace('my-workspace', baseUrl); const relay = new RelayCast({ apiKey, baseUrl }); ```

Full guide (configuration, production setup, files, upgrades, limitations): docs/self-hosting.md.

Packages

PackageDescription
@relaycast/enginePortable REST + WebSocket API server (Node + SQLite); powers the hosted gateway and self-hosting
@relaycast/sdkTypeScript SDK
@relaycast/typesShared type definitions
relaycastCLI for the MCP tool command surface
@relaycast/mcpMCP server
relaycast-sdk (Python)Python SDK
🎯 aiskill88 AI 点评 B 级 2026-06-03

创新的AI代理通信层方案,架构清晰。但项目初期阶段,文档和社区支持需加强,适合��期采用者探索。

📚 实用指南(长尾问题)
适合谁
  • 需要让 Claude / Cursor 操作本地工具的 AI 工程师
  • 构建多智能体协作系统的 Agent 开发者
最佳实践
  • 配置 MCP 服务器时建议使用 stdio 传输 + JSON-RPC,避免暴露公网
  • 生产部署优先使用 Docker Compose 隔离依赖,并挂载 volume 持久化数据
  • Agent 任务先做 dry-run 验证工具调用链,再开启自主执行
常见错误
  • API key 直接提交到 git 仓库(请用 .env 并加入 .gitignore)
  • MCP 配置路径拼错或权限不足,重启 Claude Desktop 才生效
  • 容器内无法访问宿主机 localhost — 使用 host.docker.internal
部署方案
  • Docker:relaycast 提供官方镜像,docker compose up 一键启动
  • CLI:直接 npm install -g / pip install,命令行调用
  • 云端托管:可放在 Vercel / Railway / Fly.io 等 PaaS 平台
相关搜索
relaycast 中文教程relaycast 安装报错怎么办relaycast MCP 配置relaycast Docker 部署relaycast Agent 工作流relaycast 与同类工具对比relaycast 最佳实践relaycast 适合谁用

⚡ 核心功能

👥 适合谁
  • 需要让 Claude / Cursor 操作本地工具的 AI 工程师
  • 构建多智能体协作系统的 Agent 开发者
⭐ 最佳实践
  • 配置 MCP 服务器时建议使用 stdio 传输 + JSON-RPC,避免暴露公网
  • 生产部署优先使用 Docker Compose 隔离依赖,并挂载 volume 持久化数据
  • Agent 任务先做 dry-run 验证工具调用链,再开启自主执行
⚠️ 常见错误
  • API key 直接提交到 git 仓库(请用 .env 并加入 .gitignore)
  • MCP 配置路径拼错或权限不足,重启 Claude Desktop 才生效
  • 容器内无法访问宿主机 localhost — 使用 host.docker.internal

👥 适合人群

自动化工程师和运维人员项目经理和业务分析师希望减少重复性工作的专业人士数字化转型团队

🎯 使用场景

  • 自动化日常重复性工作,将精力集中于创造性任务
  • 构建数据采集 → 处理 → 输出的完整自动化管线
  • 实现跨平台、跨系统的数据流转和业务协同

⚖️ 优点与不足

✅ 优点
  • +Apache-2.0 协议,可免费商用
  • +大幅减少重复性人工操作
  • +可视化流程,清晰直观
  • +可扩展性强,支持复杂场景
⚠️ 不足
  • 初始配置和调试需投入一定时间
  • 强依赖外部服务的稳定性
  • 复杂场景需具备一定技术基础
⚠️ 使用须知

AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。

建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。

📄 License 说明

✅ Apache 2.0 — 宽松开源协议,可商用,需保留版权声明和 NOTICE 文件,含专利授权条款。

🔗 相关工具推荐

📰 相关 AI 新闻
🍿 AI 圈相关吃瓜
🗺️ 相关解决方案
🧩 你可能还需要
基于当前 Skill 的能力图谱,自动补全的工具组合

❓ 常见问题 FAQ

主要支持通过标准API接口与各类AI代理集成,具体支持列表见文档
💡 AI Skill Hub 点评

总体来看,RelayChat AI工作流 是一款质量良好的Agent工作流,在同类工具中具备一定竞争力。AI Skill Hub 将持续追踪其更新动态,建议收藏备用,结合自身场景选择合适时机引入使用。

⬇️ 获取与下载
⬇ 下载源码 ZIP

✅ Apache-2.0 协议 · 可免费商用 · 直接从 aiskill88 服务器下载,无需跳转 GitHub

📚 深入学习 RelayChat AI工作流
查看分步骤安装教程和完整使用指南,快速上手这款工具
🌐 原始信息
原始名称 relaycast
原始描述 开源AI工作流:Headless Slack for AI agents. A hosted messaging store + router with fast retrie。⭐6 · TypeScript
Topics AI代理消息路由工作流TypeScript
GitHub https://github.com/AgentWorkforce/relaycast
License Apache-2.0
语言 TypeScript
🔗 原始来源
🐙 GitHub 仓库  https://github.com/AgentWorkforce/relaycast 🌐 官方网站  https://relaycast.dev

收录时间:2026-06-03 · 更新时间:2026-06-03 · License:Apache-2.0 · AI Skill Hub 不对第三方内容的准确性作法律背书。