AIニュース最前線
最新ニュースAI日報Hacker日報週報動画AIツールトレンド企業

AIニュース最前線

世界中のAI最新情報を日本語で毎時更新

最新ニュース日報トレンド企業プレミアムRSS
© 2026 ainew.jp特定商取引法に基づく表記
ニュース一覧元記事を開く
TLDR AI·2026年6月1日 09:00·約6分で読める

Pi の拡張機能「pi-dynamic-workflows」:Claude-Code スタイルの動的ワークフローを実現

#Multi-Agent Systems#LLM Orchestration#Code Analysis#Open Source Tools#Pi AI
TL;DR

Pi AI エディタ向け拡張機能「pi-dynamic-workflows」が、Anthropic の Claude Code に匹敵する動的ワークフロー機能を導入し、単一モデルによる逐次処理からマルチサブエージェントへの並列実行と結果統合へとパラダイムシフトをもたらした。

AI深層分析2026年6月2日 23:06
4
重要/ 5段階
深度40%
4
関連度30%
5
実用性20%
5
革新性10%
4

キーポイント

1

動的ワークフロー機能の実装

Pi エディタに「workflow」ツールを追加し、モデルが JavaScript スクリプトを記述して作業を複数の孤立したサブエージェントに分散実行する仕組みを提供します。

2

Claude Code からのインスピレーション

Anthropic が発表した Claude Code の動的ワークフロー機能に触発され、同様の「ファンアウト(並列展開)」と「合成」の概念をオープンソース拡張として実装しました。

3

具体的なユースケースと利点

コードベース監査、多角的レビュー、大規模なリファクタリング、広範囲のリサーチなど、複雑で多段階のタスクにおいて、従来の逐次処理よりも効率的かつ高品質な結果を導き出します。

4

直感的な実行と管理

自然言語での指示によりワークフローが自動生成され、進行状況がリアルタイムで表示されるほか、Esc キーによる即時停止やサブエージェントの中止も容易に可能です。

5

フェーズベースの実行フロー

コードは 'Scan' と 'Analyze' という明確なフェーズに分割されており、各段階でエージェントが独立してタスクを実行する構造を示しています。

6

前段の結果を後段の入力へ連携

'Analyze' フェーズにおいて、先行する 'Scan' フェーズの出力結果(inventory)をコンテキストとして直接引き渡し、モジュール要約を生成しています。

7

動的フェーズとエディタ支援

スクリプト実行中にフェーズが自動的に発見され、スキップされたブランチは空の進捗行として表示されないため、フローが自然に動作します。また、型定義を記述することで、editor 内で workflow グローバル変数に対するインテリセンスが有効になります。

影響分析・編集コメントを表示

影響分析

この拡張機能は、ローカル AI エディタの能力を大幅に向上させ、複雑なソフトウェア開発タスクにおいて「マルチエージェント・システム」の利点を一般ユーザーが手軽に利用できるようにしました。Anthropic の最新機能をオープンソースコミュニティが迅速に実装し、Pi などのプラットフォームで即座に提供できる点は、AI ツールの進化スピードと生態系の成熟度を象徴する出来事です。

編集コメント

Claude Code の最新機能を、Pi という軽量なエディタ環境で再現した点は、AI ツールの標準化とオープンソースの迅速な対応力を示す好例です。開発者の生産性を劇的に高める可能性を秘めています。

Claude-Code スタイルの動的ワークフローを Pi 向けに実装したものです。

この Pi 拡張機能は、ワークフローツールを追加します。1 つのアシスタントが順次すべての作業を行うのではなく、モデルが小さな JavaScript スクリプトを作成して作業を多数の孤立したサブエージェントに分散し、その後結果を統合します。

コードベースの監査、多角的なレビュー、大規模なリファクタリング、およびファンアウト型(並列展開)のリサーチに最適です。

Anthropic の Claude Code における動的ワークフロー にインスパイアされています。

インストール

pi install npm:pi-dynamic-workflows

またはローカルチェックアウトから

pi install /path/to/pi-dynamic-workflows

その後、Pi 内で以下を実行してください:

/reload

これで完了です。拡張機能はワークフローツールを登録し、セッション開始時に自動的に有効化されます。

使用方法

平文で Pi にワークフローの実行を依頼するだけです:

このリポジトリを検査して主要なモジュールを要約するワークフローを実行してください。

モデルがワークフロースクリプトを作成し、ワークフローツールを呼び出します。進行状況はインラインでリアルタイムに表示されます:

◆ Workflow: inspect_project (3/3 done)

✓ Scan 1/1

#1 ✓ repo inventory

✓ Analyze 2/2

#2 ✓ source modules

#3 ✓ final summary

実行中のワークフローをキャンセルするには Esc キーを押してください。アクティブなサブエージェントは中止され、スキップされたものとして表示されます。

ワークフロースクリプトの構造

ワークフローは通常の JavaScript です。最初の文ではリテラルメタデータをエクスポートする必要があります。name と description は必須であり、phases は期待されるアウトラインのためのオプションのドキュメントです。ライブ進行状況ビューは、実行時に phase(...) 呼び出しによって駆動されます:

export const meta = {

name: 'inspect_project',

description: 'リポジトリを検索し、主要なモジュールを要約する',

phases: [

{ title: 'スキャン' },

{ title: '分析' },

],

}

phase('Scan')

const inventory = await agent('リポジトリの構造を検索してください。', {

label: 'リポジトリ目録',

})

phase('Analyze')

const summary = await agent(

'この目録から主要なモジュールを要約してください:\n' + inventory,

{ label: 'モジュール要約' },

)

return { inventory, summary }

フェーズはスクリプト実行中に発見されるため、条件分岐やループで生成されたフェーズも自然に動作します。ブランチがスキップされた場合、そのフェーズは空の進行状況行として表示されません。

エディタインテリセンス

再利用可能なワークフローファイルでは、ワークフローグローバル変数に対するエディタのヒントを有効化できます:

/// <reference types="pi-dynamic-workflows/workflow" />

これにより、TypeScript 対応のエディタに対して agent、parallel、pipeline、phase、log、args、cwd、budget が宣言されます。

利用可能なグローバル変数

グローバル変数 | 説明

---|---

agent(prompt, opts) | 孤立したサブエージェントを起動します。最終的なテキストを返すか、opts.schema を指定された場合は検証済みのオブジェクトを返します。

parallel(thunks) | () => agent(...) の形式の関数配列を並行して実行します。結果は入力順に返されます。

pipeline(items, ...stages) | 各アイテムを逐次的なステージを通じて処理します。アイテムは分岐しながら進みます。各ステージには (prev, original, index) が渡されます。

phase(title) | 現在のフェーズを示します。ライブの進行状況ビューでのグループ化に使用されます。

log(message) | ワークフローレベルのログ行を追加します。

args

ツールの args パラメータを介して渡されるオプションの JSON 値。

cwd, process.cwd()

サブエージェントの現在の作業ディレクトリ。

budget

{ total, spent(), remaining() } トークン予算トラッカー。

決定性ルール

ワークフロースクリプトは Node の vm サンドボックス内で評価されます。以下の機能は意図的に利用できません:

  • Date.now(), new Date()
  • Math.random()
  • require, import, fs, network APIs(ネットワーク API)
  • メタ内のスプレッド、計算されたキー、テンプレート補間、関数呼び出し

これにより、メタが解析可能に保たれ、実行結果が再現可能となり、攻撃対象領域を最小限に抑えます。

構造化されたサブエージェント出力

opts.schema を介して JSON スキーマを渡すと、サブエージェントは検証済みのオブジェクトを返します:

const finding = await agent('Find security-sensitive files.', {

label: 'security scan',

schema: {

type: 'object',

properties: {

paths: { type: 'array', items: { type: 'string' } },

reason: { type: 'string' },

},

required: ['paths', 'reason'],

},

})

内部では、これは terminate: true を持つ Pi の structured_output ツールであり、サブエージェントはその呼び出しで終了し、追加のアシスタントターンは発生しません。

仕組み

ユーザープロンプト

→ Pi モデルがワークフロースクリプトを記述

→ ワークフローツールがスクリプトを解析し、vm サンドボックス内で実行

→ スクリプトが agent(), parallel(), pipeline() を呼び出し

→ 各 agent() がメモリ内の Pi サブエージェントセッションを起動

→ スナップショットがコンパクトな進捗としてストリームバックされる

→ 最終的な構造化結果が親アシスタントに返される

サブエージェントは、標準的なコーディングツールを備えた新規のメモリ内 Pi セッションで実行されるため、通常の Pi のターンと同様にファイルの読み込み、シェルコマンドの実行、構造化出力の呼び出しが可能となります。

ライブラリモジュール

File

Purpose

src/workflow.ts

AST 検証済みパーサーおよびサンドボックス化されたワークフローランタイム。

src/workflow-tool.ts

Pi ワークフローツール、プロンプトガイドライン、レンダリング、中止処理。

src/agent.ts

WorkflowAgent(メモリ内 Pi サブエージェントランナー)。

src/structured-output.ts

TypeBox/JSON Schema に基づく構造化出力をバックエンドとする終了用構造化出力ツール。

src/display.ts

ワークフロースナップショットおよびコンパクトテキストレンダラー。

extensions/workflow.ts

Pi 拡張のエントリーポイント。

開発環境構築

npm install

npm test # biome チェック + tsc + ユニットテスト

npm run dev

パーサーのユニットテストは tests/workflow-parser.test.ts にあり、承認されるスクリプト形状と拒絶されるスクリプト形状の両方を網羅しています。

現状

これはプロトタイプです。コアとなるワークフロープリミティブ(スクリプト、サブエージェント、並列/パイプライン、フェーズ、中止、構造化出力)を実装していますが、永続化された実行や再開可能な実行、および /workflows マネージャーの実装はまだ行われていません。

ライセンス

MIT

原文を表示

Claude-Code-style dynamic workflows for Pi.

A Pi extension that adds a workflow tool. Instead of one assistant doing everything sequentially, the model writes a small JavaScript script that fans out the work across many isolated subagents, then synthesizes the results.

Great for codebase audits, multi-perspective review, large refactors, and fan-out research.

Inspired by Anthropic's dynamic workflows in Claude Code.

Install

code
pi install npm:pi-dynamic-workflows
# or from a local checkout
pi install /path/to/pi-dynamic-workflows

Then in Pi:

code
/reload

That's it. The extension registers a workflow tool and activates it on session start.

Usage

Just ask Pi for a workflow in plain language:

code
Run a workflow to inspect this repository and summarize the main modules.

The model will write a workflow script and call the workflow tool. Live progress shows up inline:

code
◆ Workflow: inspect_project (3/3 done)
  ✓ Scan 1/1
    #1 ✓ repo inventory
  ✓ Analyze 2/2
    #2 ✓ source modules
    #3 ✓ final summary

Press Esc to cancel a running workflow. Active subagents are aborted and surfaced as skipped.

Workflow script shape

A workflow is plain JavaScript. The first statement must export literal metadata. name and description are required; phases is optional documentation for an expected outline. The live progress view is driven by phase(...) calls at runtime:

code
export const meta = {
  name: 'inspect_project',
  description: 'Inspect a repository and summarize the main modules',
  phases: [
    { title: 'Scan' },
    { title: 'Analyze' },
  ],
}

phase('Scan')
const inventory = await agent('Inspect the repository structure.', {
  label: 'repo inventory',
})

phase('Analyze')
const summary = await agent(
  'Summarize the main modules from this inventory:\n' + inventory,
  { label: 'module summary' },
)

return { inventory, summary }

Phases are discovered as the script runs, so conditional and loop-created phases work naturally. If a branch is skipped, its phase does not show up as an empty progress row.

Editor IntelliSense

Reusable workflow files can opt into editor hints for workflow globals:

code
/// <reference types="pi-dynamic-workflows/workflow" />

This declares agent, parallel, pipeline, phase, log, args, cwd, and budget for TypeScript-aware editors.

Available globals

Global

Description

agent(prompt, opts)

Spawn an isolated subagent. Returns its final text or, with opts.schema, a validated object.

parallel(thunks)

Run an array of () => agent(...) thunks concurrently. Results are returned in input order.

pipeline(items, ...stages)

Run each item through sequential stages while items fan out. Each stage receives (prev, original, index).

phase(title)

Mark the current phase. Used for grouping in the live progress view.

log(message)

Append a workflow-level log line.

args

Optional JSON value passed in via the tool's args parameter.

cwd, process.cwd()

Current working directory for subagents.

budget

{ total, spent(), remaining() } token budget tracker.

Determinism rules

Workflow scripts are evaluated inside a Node vm sandbox. The following are intentionally unavailable:

  • Date.now(), new Date()
  • Math.random()
  • require, import, fs, network APIs
  • spreads, computed keys, template interpolation, function calls inside meta

This keeps meta parseable, runs reproducible, and the surface area small.

Structured subagent output

Pass a JSON Schema via opts.schema and the subagent will return a validated object:

code
const finding = await agent('Find security-sensitive files.', {
  label: 'security scan',
  schema: {
    type: 'object',
    properties: {
      paths: { type: 'array', items: { type: 'string' } },
      reason: { type: 'string' },
    },
    required: ['paths', 'reason'],
  },
})

Under the hood this is a Pi structured_output tool with terminate: true, so the subagent ends on that call without an extra assistant turn.

How it works

code
user prompt
  → Pi model writes a workflow script
  → workflow tool parses + runs script in a vm sandbox
  → script calls agent(), parallel(), pipeline()
  → each agent() spawns an in-memory Pi subagent session
  → snapshots stream back as compact progress
  → final structured result returned to the parent assistant

Subagents run in fresh in-memory Pi sessions with the standard coding tools, so they can read files, run shell commands, and call structured output exactly like a normal Pi turn.

Library modules

File

Purpose

src/workflow.ts

AST-validated parser and sandboxed workflow runtime.

src/workflow-tool.ts

The Pi workflow tool, prompt guidelines, rendering, abort handling.

src/agent.ts

WorkflowAgent, an in-memory Pi subagent runner.

src/structured-output.ts

Terminating structured-output tool backed by TypeBox/JSON Schema.

src/display.ts

Workflow snapshots and compact text renderers.

extensions/workflow.ts

The Pi extension entrypoint.

Development

code
npm install
npm test     # biome check + tsc + unit tests
npm run dev

Parser unit tests live in tests/workflow-parser.test.ts and cover both accepted and rejected script shapes.

Status

This is a prototype. It implements the core workflow primitive (script, subagents, parallel/pipeline, phases, abort, structured output) but does not yet implement persisted or resumable runs, or a /workflows manager.

License

MIT

この記事をシェア

関連記事

LangChain Blog★42026年6月16日 01:48

マルチエージェントシステムをいつどのように構築するか

LangChain は、複数の AI エージェントが協調して複雑なタスクを解決するマルチエージェントシステムの設計手法と実装タイミングについて解説している。

LangChain Blog★42026年6月17日 03:04

深層エージェントにおけるコンテキスト管理

LangChain Blog は、複雑なタスクを処理する深層エージェントの性能向上のために、コンテキストを効果的に管理・最適化する手法について解説している。

LangChain Blog★32026年6月16日 01:43

エージェントフレームワークをどう捉えるべきか

LangChain Blog は、開発者が複雑なエージェントフレームワークの設計思想や選択基準を理解するための思考法を解説している。

今日のまとめ

AI日報で今日の重要ニュースをまとめ読み

ニュース一覧に戻る元記事を読む