agent-signal について
Agent Signalは、チャットの前景リクエストから切り離した、イベント駆動型のエージェント向けバックグラウンド処理を構築する開発スキルです。イベントの解釈からアクション実行への流れに加え、非同期処理、スコープ、完了レシート、テスト、可観測性を説明します。
主な機能
- 01ソース、シグナル、アクション、ポリシーを定義
- 02同期とキュー処理の入口を説明
- 03ハンドラーとポリシーの実装を案内
- 04スコープと冪等性の実践を網羅
- 05トレース、メトリクス、テストを説明
活用シーン
- 01ランタイムイベント起点のバックグラウンド処理を追加
- 02ユーザーやボットのイベントをエージェントのアクションへルーティング
- 03永続的な自己反復の完了フローを実装
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ lobehub/ lobehub --skill agent-signalインストール後、Claude Code で/agent-signalを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/architecture.mdhandlers.mdobservability.md詳細
Agent Signal
このスキルを使用して、フォアグラウンドのチャットリクエストに処理を結び付けずに、エージェント向けのイベント駆動型バックグラウンド処理を実装します。
Agent Signal のランタイム構成は一貫しています。
ソースイベント -> シグナルの解釈 -> アクションの実行 -> 組み込みの結果シグナル
永続的な自己反復処理には、完了時の分岐がもう 1 つあります。
メモリ/スキルのアクション -> execAgent のキューへの登録 -> agent.execution.completed -> selfIteration のレシート投影
ここから始める
references/architecture.mdを読み、パッケージ境界、ランタイムキュー、スコープモデル、非同期ワークフローへの引き継ぎを把握します。- 新しいポリシー、ソースハンドラー、シグナルハンドラー、アクションハンドラーを作成する前に、
references/handlers.mdを読みます。 - トレース、メトリクス、デバッグ、ワークフロースナップショットの確認が必要な場合は、
references/observability.mdを読みます。
適切なエントリーポイントを使う
- サーバーが管理するプロデューサーからパイプラインを即時実行する場合は、
emitAgentSignalSourceEvent(...)を使います。 - ワーカーまたは制御されたバックエンドの処理経路がすでに実行タイミングを管理しており、ランタイムガードのバックエンドを注入できる場合は、
executeAgentSignalSourceEvent(...)を使います。 - 呼び出し元がすぐに応答し、Upstash Workflow にイベントを帯域外で処理させる場合は、
enqueueAgentSignalSourceEvent(...)を使います。 - 周囲の Redis 状態の影響を避けたい分離テストや評価には、
emitAgentSignalSourceEventWithStore(...)を使います。
確認するファイル:
apps/server/src/services/agentSignal/index.tsapps/server/src/workflows/agentSignal/index.tsapps/server/src/workflows/agentSignal/run.ts
コアモデル
source:発生した事実を正規化したものです。ソースは、ランタイムのライフサイクルイベント、ユーザーメッセージ、ボットの受信処理などのプロデューサーから発生します。signal:1 つのソース、または別のシグナルから導出された意味的な解釈です。シグナルは意味、ルーティング、ポリシーの状態を表します。action:1 つのシグナルをもとに計画される、具体的な副作用です。アクションが処理を実行します。policy:ソース、シグナル、アクションのハンドラーを登録する、インストール可能なミドルウェアバンドルです。procedure:独立したランタイムノードではありません。「procedure」は、あるユースケースのエンドツーエンドのフローを指すものとして扱います。つまり、受信ソース、一致するハンドラー、計画されたアクション、実行結果、可観測性までを含みます。
境界を厳密に保ちます。
- 外部で新しいイベントが発生した場合は、新しい
sourceを追加します。 - システムで再利用可能な意味的解釈が必要な場合は、新しい
signalを追加します。 - ランタイムで具体的な副作用が必要な場合は、新しい
actionを追加します。 - これらの要素を連携させる場合は、
policyを追加または更新します。
実装ワークフロー
- ユースケースが同期処理か、静かなバックグラウンド処理かを判断します。
packages/agent-signal/src/source/sourceTypes.tsでソースタイプを定義するか、既存のものを再利用します。apps/server/src/services/agentSignal/policies/types.tsでシグナルタイプとアクションタイプを定義するか、既存のものを再利用します。defineSourceHandler、defineSignalHandler、またはdefineActionHandlerを使ってハンドラーを実装します。- プロデューサーのペイロードを整形する必要がある場合は、
apps/server/src/services/agentSignal/sources/**にソースの正規化またはハイドレーション処理を追加します。 defineAgentSignalHandlers(...)を使ってハンドラーをまとめます。apps/server/src/services/agentSignal/policies/index.tsにポリシーを登録し、必要に応じてランタイムファクトリーに渡します。- ソースイベントを発行またはキューに登録する受信処理のコードを追加または更新します。
- 非同期の自己反復書き込みでは、Agent Signal の操作マーカーを付与し、完了処理の経路からユーザーに表示するレシートを投影します。
- フローの完成とみなす前に、可観測性の対応とテストを追加します。
デフォルトの読み込みセット
- 共有セマンティックコア:
packages/agent-signal/src/index.tspackages/agent-signal/src/base/builders.tspackages/agent-signal/src/base/types.tspackages/agent-signal/src/source/sourceTypes.tspackages/agent-signal/src/source/sourceEvent.ts - サーバーが所有するランタイムとミドルウェア:
apps/server/src/services/agentSignal/runtime/AgentSignalRuntime.tsapps/server/src/services/agentSignal/runtime/AgentSignalScheduler.tsapps/server/src/services/agentSignal/runtime/middleware.tsapps/server/src/services/agentSignal/runtime/context.ts - 既存のポリシー例:
apps/server/src/services/agentSignal/policies/analyzeIntent/index.tsapps/server/src/services/agentSignal/policies/analyzeIntent/feedbackSatisfaction.tsapps/server/src/services/agentSignal/policies/analyzeIntent/feedbackDomain.tsapps/server/src/services/agentSignal/policies/analyzeIntent/feedbackAction.tsapps/server/src/services/agentSignal/policies/analyzeIntent/actions/userMemory.tsapps/server/src/services/agentSignal/policies/analyzeIntent/actions/skillManagement.tsapps/server/src/services/agentSignal/policies/analyzeIntent/completionSkillSynthesis.tsapps/server/src/services/agentSignal/policies/completionPolicy.tsapps/server/src/services/agentSignal/services/selfIteration/completion/buildSelfIterationReceipts.tsapps/server/src/services/agentSignal/services/selfIteration/completion/selfIterationCompletionHandler.ts - 可観測性:
apps/server/src/services/agentSignal/observability/projector.tsapps/server/src/services/agentSignal/observability/traceEvents.tspackages/observability-otel/src/modules/agent-signal/index.ts
実装ルール
- 新しい型を追加する前に、既存のソース、シグナル、アクションの型を再利用してください。
- ソースハンドラーは、重い副作用ではなく、解釈と振り分けに専念させてください。
- アクションハンドラーは、副作用、冪等性、エグゼキューター形式の結果報告を担うようにしてください。メモリ/スキルの自己反復アクションでは、副作用は
execAgentのキューへの登録です。永続的な書き込みとレシートの投影は完了後に行われます。 - 同じソースが複数回届く可能性がある場合は、安定した ID と冪等性キーを使用してください。
- スコープの規律を守ってください。ランタイムは
scopeKeyを使用して、関連するバックグラウンド処理を直列化します。 - 正規化されたノードと結果コントラクトには、
@lobechat/agent-signalの専用共有パッケージの型とビルダーを優先して使用してください。 - キューへの登録アクションからメモリまたはスキルのレシートを投影しないでください。
createSelfIterationCompletionHandler(...)を介して、agent.execution.completedとselfIterationのfinalStateを使用してください。 - 変更したランタイム、ポリシー、またはストアモジュールの近くに、対象を絞ったテストを追加してください。
apps/server/src/services/agentSignal/**/__test__および**/__tests__にある既存のテストが参考パターンです。
参考資料
- アーキテクチャと境界:
references/architecture.md - ハンドラーとポリシーの作成:
references/handlers.md - 可観測性、メトリクス、デバッグ:
references/observability.md
コメント
Markdown 対応