Sailhouseは、"Agent Control Plane "を中心とした開発者向けのイベント駆動型インフラストラクチャプラットフォームです。このプラットフォームは、開発者がAIエージェントやあらゆる種類の非同期アプリケーションを迅速かつ確実に構築・リリースできるように設計されています。従来のインテリジェンス開発では、複雑なオーケストレーションフレームワークやメッセージキューを必要とすることが多かったのですが、Sailhouseは軽量なソリューションを提供します。開発者がダイナミックなワークフローを定義できるイベント駆動型モデルを通じて、複数のインテリジェンスやサービス間のコラボレーションをオーケストレーションします。スケジュールされたタスクを時間通りに実行する必要がある場合でも、複数のステップを並行して処理する必要がある複雑なワークフローでも、Sailhouseはそのためのツールを提供します。このプラットフォームは、AWS、GCP、Vercelなどの主要なクラウドサービス上でのデプロイをサポートしており、特定のプログラミング言語に依存しないため、開発者は使い慣れた技術スタックを使用して開発を行うことができます。
機能一覧
- タイムトリガ時間指定イベントやCronスケジュールタスクの設定に対応し、将来の特定の時点や一定のサイクルで自動的にタスクを起動させることができます。
- 待機グループ複雑なマルチステップワークフローの処理に適しています。
- クロスプラットフォームの互換性AWS、Azure、GCPなどの主要なクラウドベンダーでも、Vercel、Netlifyなどのサーバーレスプラットフォームでも問題なく動作します。
- 柔軟なイベント受信モードプッシュ "と "プル "の両方のモードがサポートされています。開発者は HTTP エンドポイントを設定してプッシュイベントを受け取るか、ワーカーを書いてキューから積極的にイベントをプルすることができます。
- イベント・フィルタリングサブスクリプション時にフィルタリングルールを設定できるようにし、適格なイベントのみを受信し、無関係なメッセージの処理を回避する。
- 制限速度イベントの処理速度を制御することで、トラフィックの過負荷によるダウンストリーム・サービスのクラッシュを防ぐことができます。
ヘルプの使用
Sailhouseは、イベントドリブンアプリケーションの開発を簡素化し、開発者が複雑なインフラストラクチャを気にすることなくビジネスロジックに集中できるようにすることを目的として設計されました。次のセクションでは、Sailhouseのコア機能の使用方法について詳しく説明します。
コア・コンセプト
使用する前に、3つの基本概念を理解することが重要である:
- イベントイベントとは、"ユーザーが支払いを完了した "とか "ファイルを処理する必要がある "といった、システムで起こった何かの記録である。通常、イベントを説明するデータが含まれます。
- トピックステーマとは、カテゴリー分けされたイベントのチャンネルです。プロデューサーは対応するトピックに特定のタイプのイベントを投稿する。例えば、コードレビューに関するすべてのイベントは、次の名前のトピックに投稿できます。
code-review
テーマだ。 - サブスクリプションサブスクリプションは、コンシューマがイベントを消費する方法である。コンシューマは、1つまたは複数のトピックを購読することで、興味のあるイベントを受け取ります。
インストールと設定
Sailhouseは、主に公式に提供されているSDKを通じて、ユーザーのアプリケーションと対話します。
- アカウント登録まず、セイルハウスのオフィシャルサイトでアカウントを登録し、コンソールにログインしてください。
- アプリケーションの作成コンソールでアプリケーションを作成します。作成後、Sailhouseサービスと通信するためのAPIキーが生成されます。
- SDKのインストール例えばJavaScript/TypeScriptであれば、npmやyarnを使ってインストールできます:
npm install @sailhouse/client
基本操作:イベントの送受信
1.イベントの公開
イベントの送信はとても簡単です。まず、Sailhouseクライアントを初期化します。publish
方法。
サンプルコード(JavaScript)。
import { Sailhouse } from '@sailhouse/client';
// 使用你在控制台获取的API密钥初始化客户端
const sailhouse = new Sailhouse({ apiKey: 'YOUR_API_KEY' });
async function publishReviewTask() {
await sailhouse.publish({
topic: 'security-review', // 指定要发布到的主题
data: { // 附带的数据
commitId: 'a1b2c3d4',
repo: 'my-project'
}
});
console.log('安全审查任务事件已发送。');
}
publishReviewTask();
2.イベントの受信
Sailhouseでは、PushとPullの2つの方法でイベントを受け取ることができます。
方法1:プッシュ購読
これが最もシンプルな方法だ。公開HTTP(S) APIエンドポイント(Webhookとしても知られています)を提供するだけです。あなたが購読しているトピックに新しいイベントが投稿されると、Sailhouseは即座にあなたのエンドポイントにHTTP POSTリクエストとしてイベントを送信します。
- ワークフロー:
- プロジェクトにAPIルートを作成します。
/api/webhooks/sailhouse
. - Sailhouseコンソールでサブスクリプションを作成し、"Push "モードを選択し、APIエンドポイントURLを入力します。
- APIエンドポイントは、以下のような形式のJSONデータを受け取る:
{ "id": "event_id_string", "topic": "security-review", "data": { "commitId": "a1b2c3d4", "repo": "my-project" } }
- サーバー側のコードはリクエストを受け取り
data
フィールドを作成し、適切なビジネス・ロジックを実行する。
- プロジェクトにAPIルートを作成します。
モード2:プル・サブスクリプション
サービスがファイアウォールの内側にあったり、固定のパブリックIPを持っていない場合は、プルモードの方が良いでしょう。あなたのアプリケーション(多くの場合Workerと呼ばれます)はSailhouseから能動的にイベントをリクエストします。
- ワークフロー:
- Sailhouseコンソールでサブスクリプションを作成し、"Pull "モードを選択します。
- Workerコードでは、SDKの
pull
SDKは、開発を簡単にするために、長いポーリングのような細部の世話をする。
サンプルコード(JavaScript Worker): 1.1.1.1.1.1.1
import { Sailhouse } from '@sailhouse/client';
const sailhouse = new Sailhouse({ apiKey: 'YOUR_API_KEY' });
async function processEvents() {
console.log('Worker启动,开始拉取事件...');
// 循环拉取指定订阅的事件
for await (const event of sailhouse.pull({ subscription: 'security-review-worker' })) {
try {
console.log('收到事件:', event.data);
// 在这里执行你的业务逻辑
// ...
// 任务处理完成后,确认事件已被成功处理
await event.ack();
} catch (error) {
console.error('处理事件失败:', error);
// 如果处理失败,可以选择让事件重新入队
await event.nack();
}
}
}
processEvents();
高度な機能:待機グループの使用
Waiting Groupsは、複数の並行タスクを調整するSailhouseの機能です。この機能は、次のステップに進む前にタスクのグループがすべて完了したことを確認する必要がある場合に便利です。
たとえば、コード・マージ・リクエストは、セキュリティ・レビューとコード・スタイル・レビューの両方のプロセスを通過する必要があります。あなたはsailhouse.wait
このワークフローを編成する。
サンプルコード(JavaScript)。
import { Sailhouse } from '@sailhouse/client';
const sailhouse = new Sailhouse({ apiKey: 'YOUR_API_KEY' });
async function startCodeReviewWorkflow() {
// `wait`方法会做两件事:
// 1. 立即将两个审查任务事件分别发送到'security-review'和'style-review'主题。
// 2. 创建一个监听器,等待这两个任务都完成后,自动向'code-review-complete'主题发送一个新事件。
await sailhouse.wait(
'code-review-complete', // 当所有任务完成后,向此主题发送事件
[
{
topic: 'security-review', // 第一个任务
data: { commitId: 'a1b2c3d4', repo: 'my-project' },
},
{
topic: 'style-review', // 第二个任务
data: { commitId: 'a1b2c3d4', repo: 'my-project' },
},
]
);
console.log('代码审查工作流已启动。');
}
startCodeReviewWorkflow();
こうすることで、複数の並列タスクの進捗を追跡するための複雑なステート管理ロジックを自分で書く必要がなくなる。
アプリケーションシナリオ
- AIインテリジェンス・ボディ ワークフロー・オーケストレーション
Sailhouseは、異なる機能を持つ複数のAIインテリジェンスのコラボレーションを必要とする複雑なタスクの中心的な役割を果たすことができます。例えば、「自動レポート生成」タスクには、データ収集インテリジェンス、データ分析インテリジェンス、チャート生成インテリジェンス、テキスト作成インテリジェンスが含まれる場合があります。Sailhouseは待機グループ機能を使用して、後続のタスクをトリガーする前に前のタスクがすべて完了していることを確認し、最後にすべての結果を集約することができます。 - 非同期バックグラウンド・タスク処理
Webアプリケーションでは、特定の操作(メールの送信、ビデオのトランスコード、データレポートの生成など)は非常に時間がかかるため、ユーザーリクエストと同期して実行するべきではありません。開発者はこれらのタスクをイベントとしてSailhouseに公開することができ、イベントはWorkerサービスにサブスクライブされ、バックグラウンドで非同期に処理されます。これにより、アプリケーションの応答性とユーザーエクスペリエンスが大幅に向上します。 - 計画されたタスクとデータの同期
1日の早い時間にデータベースをバックアップする、1時間に1回サードパーティAPIからデータを同期する、特定の日に購読者にマーケティングメールを送信するなど、定期的に実行する必要があるタスクには、SailhouseのCronスケジュールタスクやタイムドイベント機能をご利用いただけます。開発者は実行期間とタスクの内容を定義するだけで、Sailhouseはタスクが時間通りにトリガーされるようにします。
品質保証
- セイルハウスが言う「コントロールプレーン」とは?
Sailhouseでいう「コントロールプレーン」とは、分散コンポーネント(インテリジェンスやサービス)をオーケストレーションし管理するインフラレイヤーのことです。Sailhouseはビジネスコードに介入することはありませんし、ルールに従わなければならない「フレームワーク」でもありません。代わりに、個々のサービスが互いに通信し、コラボレーションできるようにする一連のツール(イベントルーティング、タイマー、ワークフローオーケストレーションなど)を提供します。 - Sailhouseがサポートしているプログラミング言語とクラウドプラットフォームを教えてください。
Sailhouseは、言語やプラットフォームにとらわれないように設計されています。その核となるのはHTTP APIまたはSDKを介したインタラクションで、理論的にはHTTPリクエストを送信できる言語であればどの言語でも使用できます。開発を簡素化するために、主要言語用の公式SDKが提供される予定です。デプロイに関しては、AWS、GCP、Azureのような大規模なクラウドプラットフォーム、Vercel、Netlifyのようなサーバーレスプラットフォーム、さらにはローカルの開発マシンなど、どこでもインテリジェンスやサービスを実行することができる。 - プッシュ型とプル型のサブスクリプションモデルの違いは何ですか?
プッシュモードは、Sailhouseがアクティブに指定したURLにイベントを送信します。このアプローチは低レイテンシーで実装が簡単で、固定パブリックIPを持つサービス(サーバーにデプロイされたAPIやサーバーレス機能など)に適しています。Pullモードは、アプリケーションが積極的にSailhouseにイベントをリクエストします。このアプローチはより柔軟性があり、イントラネット環境や開発環境で動作するサービス、またはパブリックポートを公開することに抵抗があるサービスに適しています。サービスの処理能力が限られている場合、プルモードでは自身の負荷に基づいてイベントを消費する速度を制御することもできます。