TypeScript版のPi(コーディング支援AI)アプリケーション、拡張機能、またはパッケージをPython版のPydantic AI(Pydantic AIは堅牢なAIアプリケーション開発フレームワーク)およびPydantic AI Harnessを使用した形式に移行します。 次のような場合に使用: - ソースコードが`@earendil-works/pi-*`をインポートしている - `createAgentSession`を呼び出している - Pi拡張機能を登録している - Piのツール、フック(処理の割り込み地点)、スキル(AI機能の個別モジュール)、セッション(作業環境)、圧縮機能(コード最適化)、プロバイダー(外部サービス連携)、TUI(テキスト画面のユーザーインターフェース)、RPC(遠隔手続き呼び出し)、またはパッケージに依存している
Migrate TypeScript Pi coding-agent applications, extensions, or packages to Python with Pydantic AI and Pydantic AI Harness. Use when source code imports `@earendil-works/pi-*`, calls `createAgentSession`, registers Pi extensions, or relies on Pi tools, hooks, skills, sessions, compaction, providers, TUI, RPC, or packages.
観測可能な動作を保存する(Pi の TypeScript API は保存しない)。最小限の完全な呼び出しパスをマイグレーションし、製品・ホストのインフラは既存アプリケーション内に留める。
リポジトリの説明書、package.json、Pi の設定、テスト、拡張機能やパッケージのマニフェスト、実行ポイントを読む。インストール済みの Pi、Pydantic AI、Harness のバージョンを記録する。
Pi CLI、RPC の境界、または createAgentSession().prompt() から出発する実際のリクエストを 1 つ追跡する。リソース検出、システム指示、ツール、拡張機能、モデルリクエスト、メッセージ、圧縮・再試行、イベント、セッションエントリ、UI/RPC 出力、副作用を通じて追跡する。重点的なベースライン、または特性テストを確立する。
すべての有効な拡張機能ファクトリーとパッケージリソースをリスト化する。各 pi.on(...)、registerTool、registerCommand、プロバイダー登録、レンダラー/UI 貢献、スキル(専門知識・機能セット)、プロンプト、保存されたエントリについて、発火ポイント、信頼できる入力、変更、出力、状態の所有者、呼び出し側から見える効果を記録する。
これらの契約(機能仕様)が存在する場合は分離する:
観測された各契約、その所有者、意味的な違い、実行可能な証拠を記録する。インストールされても非アクティブな Pi パッケージ機能はマイグレーション対象外である。
検出された機能については「Research and concept mapping」を参照。実装前に「Verification and cutover」も読むこと。
Pi 拡張機能は Pydantic AI の機能に最も近いソース概念だが、より広い範囲を持つ。拡張機能はエージェント動作とターミナル UI、コマンド、プロバイダー登録、リソース検出、ホストのライフサイクルを組み合わせられる。拡張機能ファイルではなく、責務をポート(移行)する:
再利用可能なモデル向け動作—ツール、指示、モデル設定、履歴・イベント処理、ガードレール(安全制限)、エージェントループフック—をライフサイクルが一致する既存の Core または Harness 機能にマップする。
関連する指示とツールをコア Capability にバンドル。AbstractCapability をサブクラス化するのは、ライフサイクルフック、適応的なモデル・設定、ネイティブツール、型付き機能イベントが必要な再利用可能な動作のみとする。
CLI コマンド、フラグ、キーボードショートカット、TUI レンダラー・ダイアログ、セッション選択、プロジェクト信頼度、パッケージインストール、プロバイダー認証情報設定は Python アプリケーションまたはインターフェースアダプター内に留める。Pi 拡張機能が所有しているからといって、これらがエージェント機能ではない。
混在する拡張機能をその分界線で分割する。権限管理拡張機能は ToolGuardrail または承認機能とアプリケーション所有の承認者 UI になり、コーディングパッケージは Coder とホスト設定になり、プロバイダー拡張機能はモデル・プロバイダー統合のままとなる。
順序は証拠がそれが重要だと示す場合のみ保存する。Pi ハンドラーの読み込み順と Pydantic AI 機能・フックの順序は異なる契約である。
Core: pydantic_ai.Agent をエージェントループ、型付き依存関係、ツール・ツールセット、出力、正規化メッセージ、機能・フック、ストリーミング、承認、使用量制限、計測、MCP、プロバイダー・モデル統合に使用する。
Harness: Pi の通常のコーディングツールの構成が厳密に一致する場合のみ Coder を使用する。観測された動作に対してのみ、FileSystem、Shell、Skills、Planning、SubAgents、ガードレール、圧縮、ツール出力制限、ステップ永続性などの重点的な機能を追加する。
アプリケーション・インターフェース: CLI/TUI/RPC、認証、プロジェクト信頼度、設定、プロバイダーログイン・カタログ、セッション閲覧、パッケージ管理、デプロイメント、転送は意図的に保持または置き換える。
Graph: 決定論的ワークフロー(実行順序が常に同じ処理)には plain async Python または pydantic_graph を使用。プロンプトやサブエージェントで符号化しない。
ギャップ: 対応する公開 API がない動作を名付けて、その影響を説明し、限定的なアダプターをテストする。同等性を主張するために Pi の拡張機能バスや JSONL 形式をクローン化しない。
通常の組み込みマイグレーションは、1 つの再利用可能な Agent、Coder、またはより小規模な機能の組み合わせ、型付き依存関係のアプリケーションサービス、アプリケーション所有のメッセージ・セッションストア、既存の RPC または UI 境界の薄いアダプターである。
ctx(コンテキスト)、プロジェクト信頼度、認証情報、セッションマネージャー、サービスハンドルは信頼できるホストコンテキスト。型付き依存関係またはアプリケーションサービスに相当する機能を配置し、モデル選択ツール引数には決して入れない。
Pi セッション JSONL はモデルコンテキスト以上を含む追記のみの分岐ホストログ。result.all_messages() はモデル履歴を保存し、ツリーナビゲーション、ラベル、拡張機能エントリ、圧縮レコード、モデル変更、キュー、放棄された分岐は保存しない。変換、互換性ストア、受け入れられた新規開始のいずれかを選択してテストする。
Pi の圧縮、コンテキスト傍受、ステアリング・フォローアップキュー、再試行、分岐サマリーには特定のタイミング。core・Harness シーム(対応ポイント)を独立して選択し、順序をテスト。汎用メッセージ履歴または要約は自動同等ではない。
tool_call 権限ゲートを効果でマップ。検証・ブロック・修正にはガードレール、承認待ちのアクションには遅延ツールを使用。ID、認可、UI、監査、永続性、冪等性はアプリケーション内に留める。
Pi 拡張機能はホスト権限で任意の TypeScript を実行。Pydantic AI 機能もアプリケーションコードを実行。どちらもサンドボックスではない。信頼できないコマンドやコードには OS・コンテナ・クラウド分離境界を使用する。
Harness Skills は設定された SKILL.md 指示をオンデマンド読み込みするが、Pi の検出ルート、リソースファイル、スクリプト、リロード、パッケージインストール、動作フロントマターは再現しない。観測された場合は別途保存する。
SubAgents はモデル指示の分離したタスクのみに使用。決定論的オーケストレーションと Pi のサブプロセス・tmux・パッケージ固有のセマンティクスはアプリケーションコード内に留める。
動的ツール有効化を core ToolSearch またはオンデマンド機能にマップするのは、読み込みタイミング、スキーマ、プロンプト・キャッシュ変更、プロバイダー フォールバック動作をテスト後のみ。
Pydantic AI 実行イベントと機能イベントは Pi の拡張機能イベントバス、RPC プロトコル、TUI レンダーライフサイクルを再現しない。消費者が使用する安定したフィールドのみ適応させる。
Pi プロバイダー拡張機能とペイロードフックは認証、カタログ、ワイヤペイロード、ヘッダー、ストリーミングを変更する可能性。Pydantic AI モデル・プロバイダーまたはアプリケーション転送層で実装し、プロバイダーコントラクトテストを実行。汎用機能に隠さない。
対応する CLI、RPC、SDK、ジョブ、UI 境界を保存し、エージェント所有の内部のみ置き換える。
core と最小限のコーディング機能から開始。追跡された契約が必要になった後のみ、より広い Harness 動作を追加する。
ソース拡張機能ごとに分割を文書化:機能動作、アプリケーション・インターフェース動作、保持された統合、ギャップ。各側面を実際の境界を通じてテストする。
RPC・イベント、保存レコードに言語中立的なフィクスチャーを使用。ツール引数・結果、エラー、イベント順序、セッション継続、UI 決定、副作用をテスト。オフライン決定論的モデルを使用。プロバイダー動作専用の記録・ライブプロバイダーテストのみ追加。
保持されたパスが不要になった後のみ、Pi パッケージ、設定、Node ランタイム、拡張機能アダプターを削除する。
意味的に重要な変更を実装する前に説明:Pi 動作、ターゲット動作、呼び出し側への影響、推奨選択肢、残存リスクを述べる。
「Verification and cutover」の完了基準を適用。偽、記録、ライブプロバイダー、ターミナル、再開、サンドボックス証拠に正確にラベル付けする。
Preserve observable behavior, not Pi's TypeScript API. Migrate the smallest complete caller path and keep product/host infrastructure in the application.
package.json, Pi settings, tests, extension/package manifests, and runtime entrypoints. Record the installed Pi, Pydantic AI, and Harness versions.createAgentSession().prompt() through resource discovery, system instructions, tools, extensions, model requests, messages, compaction/retry, events, session entries, UI/RPC output, and side effects. Establish a focused baseline or characterization test.pi.on(...), registerTool, registerCommand, provider registration, renderer/UI contribution, skill, prompt, and persisted entry, record its firing point, trusted inputs, mutations, output, state owner, and caller-visible effect.Read Research and concept mapping for the detected features. Read Verification and cutover before implementation.
A Pi extension is the closest source concept to a Pydantic AI capability, but it is broader. An extension can combine agent behavior with terminal UI, commands, provider registration, resource discovery, and host lifecycle. Port responsibilities, not the extension file:
Capability; subclass AbstractCapability only for reusable behavior that needs lifecycle hooks, adaptive models/settings, native tools, or typed capability events.ToolGuardrail or approval capability plus an application-owned approver UI; a coding package may become Coder plus host configuration; a provider extension remains a model/provider integration.pydantic_ai.Agent for the agent loop, typed dependencies, tools/toolsets, outputs, normalized messages, capabilities/hooks, streaming, approvals, usage limits, instrumentation, MCP, and provider/model integration.Coder for Pi's ordinary coding tools only when its exact composition fits. Add focused capabilities such as FileSystem, Shell, Skills, Planning, SubAgents, guardrails, compaction, tool-output limits, or step persistence only for observed behavior.pydantic_graph for deterministic workflows; do not encode them in prompts or subagents.The normal embedded migration is one reusable Agent, Coder or a smaller capability composition, application services in typed dependencies, an application-owned message/session store, and a thin adapter at the existing RPC or UI boundary.
ctx, project trust, credentials, session managers, and service handles are trusted host context. Put equivalents in typed dependencies or application services, never model-chosen tool arguments.result.all_messages() preserves model history, not tree navigation, labels, extension entries, compaction records, model changes, queues, or abandoned branches. Choose and test conversion, a compatibility store, or an accepted fresh start.tool_call permission gates by effect. Use guardrails for validation/block/redaction and deferred tools for an action that must await approval. Keep identity, authorization, UI, audit, persistence, and idempotency in the application.Skills loads configured SKILL.md instructions on demand but does not reproduce Pi's discovery roots, resource files, scripts, reload, package installation, or behavioral frontmatter. Preserve those separately when observed.SubAgents only for model-directed isolated tasks. Keep deterministic orchestration and Pi subprocess/tmux/package-specific semantics in application code.ToolSearch or on-demand capabilities only after testing load timing, schemas, prompt/cache changes, and provider fallback behavior.Explain consequential semantic changes before implementing them: state the Pi behavior, target behavior, caller impact, recommended choice, and remaining risk.
Apply the completion criterion in Verification and cutover. Label fake, recording, live-provider, terminal, restart, and sandbox evidence accurately.
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。