instrument-existing-agent-with-prefactor-sdk について
Prefactorを使わずに構築された稼働中のエージェントへ、トレースを追加するスキルです。実行境界を計測し、実行やLLM・ツール呼び出しを対象に、コンテキスト伝播とエラー処理を維持します。
主な機能
- 01既存エージェントへのトレース追加
- 02組み込みまたはカスタムアダプターの利用
- 03実行と子Spanの作成
- 04コンテキスト伝播とエラー記録
- 05トレースと終了状態の検証
活用シーン
- 01既存LangChainエージェントのトレース
- 02AI SDKのLLM・ツール呼び出しの記録
- 03OpenClawエージェントへの実行トレース追加
- 04ストリームのキャンセル・エラー経路の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ prefactordev/ typescript-sdk --skill instrument-existing-agent-with-prefactor-sdkインストール後、Claude Code で/instrument-existing-agent-with-prefactor-sdkを入力して読み込まれたか確認します。
同梱ファイルreferences/coding-tool-triggers.mdreferences/instrumentation-checklist.md
詳細
既存のエージェントに Prefactor SDK で計装を追加する
Prefactor を使わずに構築された、動作中のエージェントに計装を追加します。
基本原則:ビジネスロジックではなく、境界を計装します。
クイックスタート
skills/bootstrap-existing-agent-with-prefactor-cli/SKILL.mdを使って Prefactor の認証情報を設定します(prefactor setupまたはprefactor setup --create)。- プロジェクトを調べ、既存のパッケージマネージャー(
bun、npm、pnpm、またはyarn)で適切な Prefactor アダプターをインストールします。 - ランタイムの経路を特定します:組み込みアダプター(
@prefactor/langchain、@prefactor/ai、@prefactor/openclaw、@prefactor/claude)またはカスタムの@prefactor/coreアダプター。 - トップレベルの実行スパンを1つ追加し、LLM/ツールの境界に子スパンを追加します。
- コンテキストの伝播と、パッケージ名で始まるスパンタイプを維持します。
- エラーメタデータを記録し、元のエラーを再スローします。
- 成功、エラー、キャンセル、ストリームの終了経路でスパンを終了します。
- プロジェクトのビルド/テスト/型チェックのフローで検証し、
prefactor agent_instances list --agent_id <agent_id>とprefactor agent_instances agent_context <instance_id>でトレースを確認します。
前提条件
計装する前に、prefactor setup の出力に基づいて、次のランタイム認証情報が設定されていることを確認してください。
PREFACTOR_API_URLPREFACTOR_API_TOKENPREFACTOR_AGENT_IDPREFACTOR_AGENT_IDENTIFIER(setup から取得。通常は1.0.0)
また、プロジェクトのパッケージマネージャーで依存関係がインストールされていることも確認してください。
@prefactor/langchain、@prefactor/ai、@prefactor/openclaw、@prefactor/claudeのいずれか- 組み込みアダプターが利用できない場合に限り、
@prefactor/core
コーディングツールのトリガーフレーズ
ユーザーから次のいずれかを求められた場合は、このスキルを適用してください。
- 「この既存のエージェントに計装を追加して」
- 「このエージェントはすでに動作するので、prefactor のトレースを追加して」
- 「この既存の langchain/ai エージェントを prefactor でラップして」
- 「ツール呼び出しと実行のトレースを追加して」
- 「コーディングツールのタイムラインにツール呼び出しが表示されない」
カスタムプロバイダースキルとの併用
両方のスキルが必要になることがあります。
- フレームワーク/プロバイダーが Prefactor アダプターですでにサポートされている場合は、このスキルをそのまま使用してください。
- フレームワーク/プロバイダーがまだサポートされていない場合は、まず
skills/create-provider-package-with-core/SKILL.mdを使ってカスタムアダプターを作成し、その後このスキルを使って既存のエージェントにそのアダプターで計装を追加してください。
未対応の場合の推奨手順:
@prefactor/coreでプロバイダーアダプターを作成します。- 既存のエージェントのエントリーポイントにアダプターを統合します。
- 実際の実行で、実行/LLM/ツール/エラーのスパンを検証します。
実装ルール
- 低レベルの
@prefactor/coreよりも、組み込みアダプターを優先します。- LangChain →
@prefactor/langchain - AI SDK →
@prefactor/ai - OpenClaw →
@prefactor/openclaw
- LangChain →
- アダプターがある場合は、選択した同じアダプターパッケージ(
@prefactor/aiまたは@prefactor/langchain)からinit、withSpan、shutdownをインポートします。 withSpanに明示的なトレーサーを渡さない限り、アダプターのinitと、@prefactor/coreからインポートしたwithSpan/shutdownを混在させないでください。- 理由:ヘルパーのインポートを混在させると、
No active tracer foundが発生する可能性があります(たとえば、パッケージインスタンスがネストしている場合)。その結果、手動で追加したカスタムスパンが失われます。 - 次の例のように、インポート元のパッケージを明示します。
import { init, withSpan, shutdown } from '@prefactor/ai';
// or
import { init, withSpan, shutdown } from '@prefactor/langchain';
- この混在インポートによるトレーサーのリスクは、アダプタースタイルのフロー(
@prefactor/ai、@prefactor/langchain)に該当しますが、@prefactor/openclawのプラグインランタイムモデルには該当しません。 - 組み込みアダプターがない場合は、
skills/create-provider-package-with-core/SKILL.mdに従ってください。 - プロバイダーのスパンタイプは、パッケージ名で始まる形式(
langchain:*、ai-sdk:*、openclaw:*)にします。 - 親子のトレースツリーを維持できるよう、アクティブなコンテキスト内でネストされた処理を実行します。
- 入出力を安全に記録します(シークレットのマスキング、切り詰め制限の適用)。
- 計装によってユーザーコードがクラッシュしてはなりません。
検証
プロジェクトに相当する検証コマンド(例:ビルド、型チェック、テスト)を実行します。
また、実際のエージェントリクエストを少なくとも 1 回実行し、次の点を確認します。
- トップレベルの実行スパンが存在する
- 子の LLM/ツールスパンが正しくネストされている
- 成功時と失敗時の両方で終端ステータスが表示される
参考資料
- コーディングツール向けのキーワードカバレッジとトリガーの文言については、
references/coding-tool-triggers.mdを参照してください。 - 実行チェックリストと失敗時の診断については、
references/instrumentation-checklist.mdを参照してください。
よくある間違い
- 境界ではなく、すべてのヘルパーを計装する。
- 汎用的なスパンタイプを使用する。
- ログ記録後に例外を握りつぶす。
- ストリームのキャンセル/エラー時の完了パスを見落とす。
コメント
Markdown 対応