**オピニオン・ドリブンで最小限に設計したコーディングエージェント構築から学んだこと**

2026/02/01 18:33

**オピニオン・ドリブンで最小限に設計したコーディングエージェント構築から学んだこと**

RSS: https://news.ycombinator.com/rss

要約

<|channel|>final <|constrain|>## Japanese Translation:

改善された概要

pi は、以下の4つのコアパッケージで構成される軽量なコードエージェントハーネスです:

  • pi-ai
    – Anthropic、OpenAI、Google、xAI、Groq、Cerebras、OpenRouter などをサポートする統一 LLM API。プロバイダー固有の挙動を標準化し、ストリーム処理とツール呼び出し(TypeBox スキーマ付き)を提供します。また、トークン使用量/コストの追跡、abort シグナルへの対応、増分 JSON の解析、および
    <thinking>
    タグによるコンテキストハンドオフを行い、セッション中にプロバイダーを切り替えることができます。

  • pi-agent-core
    – ツール実行、結果のLLMへのフィードバック、メッセージキュー管理、UI統合用イベント発火、および
    Agent
    ステートクラスの公開を行うイベント駆動型ループです。ハードなステップ制限はなく、外部ファイル(
    TODO.md
    PLAN.md
    )やツール(tmux)による計画に依存します。

  • pi-tui
    – 差分更新で効率的に描画し、ANSI エスケープコードを使用する保持モードのターミナルUIフレームワークです。エディタ、Markdown レンダラー、自動補完などのコンポーネントが含まれます。

  • CLI (

    pi-coding-agent
    ) – 上記パッケージをラップし、4つのコアツール(
    read
    write
    edit
    bash
    )をリストした簡潔なシステムプロンプト(約1000トークン)を提供します。ファイル操作に関するガイドラインも含み、重い設定なしでエージェントを起動できます。

ハーネスはデフォルトで YOLO モード(制限のないファイルシステムアクセス、安全機構無し)で実行されますが、CLI フラグでコンテナや限定ツールセットに制約することも可能です。組み込みの to‑dos、計画モード、MCP サポート、バックグラウンド bash、サブエージェントなどの上位レベル機能は意図的に省略し、ユーザーが外部で管理できるよう設計しています。

pi は Claude Opus 4.5 を用いて Terminal‑Bench 2.0 でベンチマークされ、競争力のあるリーダーボードスコアを達成しました。最小限かつ可観測なワークフローを維持しながら、将来の更新ではワークフローの簡素化、ストリームツール結果の有効化、コンテナ化または制限付きツールモードの探索が計画されています。これにより、フレームワークは高速プロトタイピング、内部ツール開発、研究プロジェクト向けにシンプルで柔軟なままであり、可観測性を重視した環境に適しています。

本文

2025‑11‑30


少ししかないが、私のものだ

pi‑ai と pi‑agent-core
そこにある。
四つの光…API
コンテキストハンドオフ
我々は多モデル世界で生きている
構造化されたツール結果分割
最小限のエージェントスキャフォールド
pi‑tui
二種類のTUI
保持モード UIDifferential レンダリング
pi‑coding-agent
まとめ


背景

過去三年間、私はLLMを補助的なコーディングに利用してきました。もしこの記事を読んでいるなら、あなたも同じ進化の道を歩んだことでしょう:ChatGPT へコードをコピー&ペースト → Copilot のオートコンプリート(うまく機能しない)→ Cursor → Claude Code、Codex、Amp、Droid、opencode など新しいコーディングエージェントのハーネス。

私は主に Claude Code を使用していました。4 月に Cursor を一年半試した後、最初に手に入れたものです。当時は非常にシンプルで私のワークフローにピッタリでした。しかし最近では Claude Code は機能が多すぎて 80 % が不要になり、リリースごとにシステムプロンプトやツールが変わるためワークフローが壊れます。しかもちらつきがあります。

長年にわたりさまざまな複雑なエージェント(例:ブラウザ内で動く Sitegeist)を構築してきました。その中で「コンテキストエンジニアリング」が極めて重要だと学びました。モデルに渡すコンテキストを正確に制御することで、特にコード生成時の出力が向上します。既存ハーネスは背後で注入した情報を UI に表示せず、設定が難しいです。

さらに、入力・出力などインタラクションの各側面を自動化し、セッション形式を簡潔に文書化できるようにしたいと考えました。多くのハーネスは API がオーガニックに進化して重たく、開発者体験が悪化しています。

自己構築の理由

自分でコードを書くことで「何を必要か」を明確にできるので、以下のモジュールを作成しました:

モジュール役割
pi‑ai複数プロバイダー(Anthropic, OpenAI, Google, xAI, Groq 等)を統一した LLM API。ストリーミング、ツール呼び出し、思考/推論サポート、トークン・コスト追跡。
pi‑agent-coreツール実行・検証・イベントストリーミングを扱うエージェントループ。
pi‑tui差分レンダリングと同期出力でフリッカーのないターミナル UI フレームワーク。
pi‑coding-agentCLI で統合し、セッション管理・カスタムツール・テーマ・プロジェクトコンテキストを提供。

「必要なものだけ作る」という哲学に基づき、不要な機能は実装していません。

pi‑ai

pi‑ai は 4 つの主要 API(OpenAI Completions/Responses, Anthropic Messages, Google Gemini)を抽象化します。プロバイダー固有の挙動(例:

store
,
max_tokens
,
reasoning_effort
など)をラップし、テストスイートで画像入力・推論トレース・ツール呼び出しを検証しています。

コンテキストハンドオフ

プロバイダー間のコンテキストは「思考トレース」を

<thinking></thinking>
タグ付きで転送します。以下は例です:

import { getModel, complete, Context } from '@mariozechner/pi-ai';

const claude = getModel('anthropic', 'claude-sonnet-4-5');
let context: Context = { messages: [] };

context.messages.push({ role: 'user', content: 'What is 25 * 18?' });
const claudeResponse = await complete(claude, context, { thinkingEnabled: true });
context.messages.push(claudeResponse);

const gpt = getModel('openai', 'gpt-5.1-codex');
context.messages.push({ role: 'user', content: 'Is that correct?' });
const gptResponse = await complete(gpt, context);

ストリーミング & アボート

const model = getModel('openai', 'gpt-5.1-codex');
const controller = new AbortController();
setTimeout(() => controller.abort(), 2000);

for await (const event of stream(model, { messages: [{ role: 'user', content: 'Write a long story' }] }, { signal: controller.signal })) {
  if (event.type === 'text_delta') process.stdout.write(event.delta);
}

ツール結果の分離

ツールは LLM 用テキストと UI 表示用データを同時に返せます。例:

const weatherTool: AgentTool<typeof weatherSchema, { temp: number }> = {
  name: 'get_weather',
  parameters: weatherSchema,
  execute: async (_, args) => ({
    output: `Temperature in ${args.city}: ${Math.round(Math.random() * 30)}°C`,
    details: { temp: Math.round(Math.random() * 30) }
  })
};

pi‑agent-core

エージェントループは「メッセージ → ツール呼び出し → 結果を LLM に戻す」まで自動で繰り返します。最大ステップ制御は実装していませんが、必要なら

Agent
クラスに追加できます。

pi‑tui

差分レンダリングアルゴリズム:

  1. 初回:全行を書き出す
  2. 幅変更時:スクリーンをクリアして再描画
  3. 通常更新:最初に変わった行まで移動し、そこから再描画

フリッカー防止のため、CSI

?2026h
/
?2026l
で出力をバッファリングします。Ghostty や iTerm2 では完全にフリックレスです。

pi‑coding-agent

  • Windows, Linux, macOS(Node.js があれば)
  • マルチプロバイダー・モデル切替
  • セッション管理:続行、再開、ブランチ
  • プロジェクトコンテキストファイル(AGENTS.md)を階層的にロード
  • スラッシュコマンドで共通操作
  • カスタムテーマ & ライブリロード
  • エディタ:ファイル検索・パス補完・ドラッグ&ドロップ・複数行貼り付け
  • 画像サポート(ビジョン対応モデル)
  • HTML 出力、ヘッドレス JSON ストリーミング
  • コスト・トークン追跡

システムプロンプト(例)

You are an expert coding assistant. You help users with coding tasks by reading files, executing commands, editing code, and writing new files.
...
Documentation: /path/to/README.md

ツール定義

  • read – ファイル読み取り
  • write – 書き込み(新規または上書き)
  • edit – 正確なテキスト置換
  • bash – シェルコマンド実行

省略した機能

機能理由
to‑do リストモデルが状態を追跡するのは混乱を招く。ファイルで管理。
計画モードセッション間でファイルに書き出すことで可視化可能。
MCP サポートコンテキストオーバーヘッドが大きい。CLI ツール+README で代替。
バックグラウンド Bashプロセス管理が複雑。tmux を推奨。
サブエージェント視認性が低く、デバッグ難易度増。必要なら自前で
bash
で起動。

ベンチマーク

Terminal‑Bench 2.0 により Claude Opus 4.5 と他ハーネス(Codex, Cursor, Windsurf 等)を比較。結果は 2025年12月現在のリーダーボードに掲載されています。


まとめ

pi は「必要最低限」で構築したエージェントハーネスです。コンテキスト制御、差分レンダリング、ツール結果分離などを実装し、日々の作業で高い信頼性と速度を提供しています。追加機能(圧縮・ツール結果ストリーム等)は検討中ですが、現時点では十分です。

貢献歓迎ですが、プロジェクトは集中管理を重視します。要件に合わない場合はフォークしていただければ幸いです。ご質問やフィードバックはお気軽にどうぞ。

同じ日のほかのニュース

一覧に戻る →

2026/02/02 4:47

RCE をクリックすると、Moltbot のデータやキーが盗まれます。

## Japanese Translation: --- ## 要約 OpenClaw(旧 Moltbot/ClawdBot)は、10万人以上の開発者に信頼されているオープンソースAIパーソナルアシスタントであり、1クリックだけで攻撃者が完全な管理権限を取得できる重大なロジック欠陥があります。 この攻撃は3段階で進行します: 1. **取り込み** – 悪意あるURLに `gatewayUrl` クエリパラメータが含まれます。 2. **接続** – OpenClaw は即座に `connectGateway()` を呼び出し、攻撃者制御のゲートウェイへ WebSocket 接続を開きます。 3. **トークン流出** – authToken が自動的に WebSocket ハンドシェイクで送信されます。OpenClaw は Origin ヘッダーを検証しないため、localhost 接続でも(Cross‑Site WebSocket Hijacking)です。 盗まれたトークンは `operator.admin` と `operator.approvals` を付与し、攻撃者は以下のことが可能になります: - `exec.approvals.set` で安全プロンプトを無効化 - `config.patch` をパッチして `tools.exec.host` を “gateway” に設定し、コンテナ化された実行を回避 - 任意のコマンドを実行(例:`node.invoke` → `system.run`) この欠陥は v2026.1.24‑1 以前のすべての OpenClaw バージョンで利用可能です。 *depthfirst General Security Intelligence* と別の研究者により独立して発見され、GitHub Advisory を通じて公開されています。 **対策:** 近日リリース予定のパッチではゲートウェイURL用の確認ダイアログを追加し、自動接続機能を削除します。ユーザーは直ちにアップグレードし、漏洩の可能性があるトークンをローテーションし、疑わしいゲートウェイ活動を監視してローカルシステム乗っ取り・データ侵害・妨害行為を防止してください。

2026/02/02 2:36

Apple I 広告(1976年)

## Japanese Translation: Apple Computerの新しいマイクロコンピュータは、単一ボードに収まり、$666.66で販売されるコンパクトなオールインワン「ハッスルフリー」システムです。MOS 6502プロセッサ、16個の4 Kチップから構成された8 KダイナミックRAM、960文字を24×40で表示し自動スクロールが可能な統合ビデオターミナル(RFモジュレータ経由でテレビに接続できる)と独自の1 Kビデオメモリを使用しています。ユニットには内蔵電源が備わっており、大容量28アンペアの電源、スイッチ、LEDは不要です。大型テレタイプ機械と比べてサイズ・コスト・保守性を削減し、出力速度は6倍に速く、Apple BASICがタープレートにプリロードされており、オプションソフトウェアもほぼ無料または無償で提供されます。予定されたアップグレードとしては、32 KオンボードRAMオプションのため16 Kチップへの切替とエッジコネクタを介した65 Kまでの拡張があり、キャセットインターフェースは縦型コネクタに接続し1500 bpsでデータ転送(約20秒で4 Kバイトの読み書き)を行います。ファームウェアはPROMに格納されており、16進入力・デバッグ・画面上直接印刷が可能です。Apple Computerは既に主要コンピュータストアで在庫があり、小売業者や販売代理店はホビイストや小規模事業者へ手頃で保守不要なコンピュータを簡単に供給できます。

2026/02/02 6:30

「40年にわたるコピー保護ドングルを打ち破る」

## Japanese Translation: > 著者は、2026年のWindows 98会計事務所で使用されていたSoftware West社の1990年代製RPG IIコンパイラが、並列ポート用ハードウェアコピー保護ドングルを必要としていることを発見しました。`RPGC.EXE`とそのエディタ`SEU.EXE`は両方ともドングルの有無を確認します。ドングルがない場合、SEUは数秒後に「No dongle, no edit.」というメッセージで終了します。 > アセンブルコードを見ると、セグメント0800内に0x90バイトのルーチンがあり、並列ポートへのIN/OUTを行い、定数値(`BX`、ここでは`BH=76h`)を返しています。このルーチンを`MOV BX, 7606h`(バイト列 `BB 06 76 CB`)に書き換えるとドングルチェックが回避され、SEUは即座に終了します。 > 全てのコンパイラ実行ファイルには同一のコピー保護ロジックが含まれているため、この4バイトのパッチを適用すると、ハードウェアなしでコンパイラがパッチ済み出力バイナリを生成できるようになります。保護は単に定数番号を検証するだけであり、容易に破棄可能です。個人データを削除すれば、このコンパイラは無料の歴史的アーティファクトとして公開されます。

**オピニオン・ドリブンで最小限に設計したコーディングエージェント構築から学んだこと** | そっか~ニュース