Agent Skills by ALSEL
汎用LLM・AI開発⭐ リポ 1品質スコア 63/100

deepagent-stream-token-usage

deepagentsでサブエージェントを含み、streamModeにmessages/updatesが設定されている場合、ストリーミングチャンクから本会話のトークン使用量を集計できます。オプションでmainエージェント/サブエージェント別に使用量を分割することもできます。

description の原文を見る

在 deepagents 带 subagents、streamMode 含 messages/updates 时,从流式 chunk 汇总本次会话(及可选按 main/subagent 拆分)的 Token 用量。

SKILL.md 本文

deepagent-stream-token-usage

適用シーン

  • agent.stream(input, { streamMode: ["updates", "messages"] }) が二要素タプル chunk [mode, payload] を返す。
  • 本セッション合計の input/output/total が必要、または メイン オーケストレーション / 各 subagent ごとに使用量を分割したい場合。

使用量がどこに現れるか(test/agent-stream.txt と組み合わせ)

  1. mode === "messages"
    payload = [messageChunk, bundleMetadata]
    単一のモデル生成がほぼ終了する際、messageChunk に以下が現れます:

    • usage_metadata(優先):input_tokensoutput_tokenstotal_tokens、およびオプションの input_token_details(例:cache_read)。
    • response_metadata.usage(OpenAI 形式):prompt_tokenscompletion_tokenstotal_tokens など。
      同じストリーム内に同じ id(例:chatcmpl-…)を持つ chunk が連続して複数出現する可能性があります。完全な数値を持つ usage_metadata は通常生成の末尾に現れます(サンプルではおよそ 13–14 行目がメイン オーケストレーション、23–24 行目が tools: サブグラフ)。
  2. mode === "updates" かつ model_request(または model)が存在する場合
    内部の messages にある AI メッセージも usage_metadata / response_metadata.usage を持つ可能性があります(サンプル 15 行目)。
    注意:同一の chatcmpl-* 上で、response_metadata.usageprompt_tokensusage_metadata.input_tokens一致しない場合があります(グラフ内累計 vs 単一呼び出し)。集計時は usage_metadata を優先しますusage_metadata がない場合のみ、prompt_tokens / completion_tokens を input/output の推定として使用します。

  3. 中間フラグメント
    多数の chunk の response_metadata.usage は空オブジェクト {} です。累加しないでください。そうするとミス判定につながります。

セッション合計使用量アルゴリズム(推奨)

  1. Map<completionId, { input, output, total }> を維持します。completionId はメッセージ上の kwargs.id / idchatcmpl-… または等価)から取得します。
  2. 各 chunk を反復処理します:
    • messagespayload[0] から使用量を解析します。usage_metadata があり total_tokens が有効な数値の場合、map.set(id, { input, output, total }) を実行します(後の書き込みが前の書き込みを上書きし、同じ id で複数セグメントが繰り返される場合も結果は一貫しています)。
    • updatesmodel_request.messages(および互換性のある model):その中の各 AI メッセージについて同様に解析し、同じ map に対して set を実行します(ストリーム末尾と同じ id の場合は重複排除し、最後の書き込みのみ保持。updates のみにその id が現れた場合も記録されます)。
  3. セッション合計sumInput = Σ v.inputsumOutput = Σ v.outputsumTotal = Σ v.total(または sumInput + sumOutput で検証。キャッシュ課金の対象かどうかはプロバイダーに確認してください)。
  4. しないことresponse_metadata.usage.total_tokensusage_metadata を混在させて加算しないこと。同一 id では 1 セットのみ保持し、usage_metadata を優先します。

main / subagent ごとの分割(オプション)

「Subagent の帰属」ルールと同じです:

  • payload[1].checkpoint_nstools: で始まらない → このメッセージの使用量は main に記録します。
  • tools: で始まる → 現在の 解析済み tasksubagent_type に記録します(updates.model_request の処理時に pendingSubagent を維持し、updates.toolstask ToolMessage 後にクリアする必要があります)。

(completionId) に同時に agentKeymain / hello_agent / …)のタグを付け、その後 agentKeyinput/output をグループ化して合計を求めます(注意:同じ subagent の複数回呼び出しは複数の completion id を生成し、グループ化して合算するだけです)。

実装のヒント(TypeScript)

  • LangChain シリアル化オブジェクトから読み取ります:msg.kwargs?.usage_metadatamsg.kwargs?.response_metadata?.usagemsg.kwargs?.id
  • ランタイム クラス インスタンス:トップレベルの usage_metadata / id である可能性があり、両方と互換性がある必要があります。
  • usage_metadata がない場合は、prompt_tokens/completion_tokens を input/output にマッピングしてから map に書き込みます。

制限事項

  • 使用量は プロバイダーが返す課金フィールド に基づきます。サブグラフとメイン オーケストレーションは各自 1 回の completion に対応する 1 つの chatcmpl-* に相当し、セッション合計 = 各 completion の合計です。
  • フレームワークまたはプロバイダーのアップグレード後にフィールド名が変わる可能性があります。実際の chunk に基づいてサンプリング回帰テストを行ってください。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
caoaolong
リポジトリ
caoaolong/vscode-cadb
ライセンス
MIT
最終更新
2026/5/9

Source: https://github.com/caoaolong/vscode-cadb / ライセンス: MIT

関連スキル

OpenAILLM・AI開発⭐ リポ 6,054

agent-browser

AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。

by JimmyLv
汎用LLM・AI開発⭐ リポ 1,982

anyskill

AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 1,982

engram

AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 21,584

skyvern

AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。

by Skyvern-AI
汎用LLM・AI開発⭐ リポ 1,149

pinchbench

PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。

by pinchbench
汎用LLM・AI開発⭐ リポ 4,693

openui

OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。

by thesysdev
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: caoaolong · caoaolong/vscode-cadb · ライセンス: MIT