Posts に戻る

Pi に「理解負債」を解消する workflow を追加した話

理解負債 workflow AI

TL;DR

最近、AI coding agent の Pi を使っている。 Pi は prompt や extension を自分用に追加できるので、AI 開発で溜まりやすい 理解負債 を解消する workflow を作ることにした。

ここでいう理解負債とは、AI に説明してもらった直後は「わかった気がする」けれど、あとから自分では説明できない状態のこと。

今回作ったのは、理解負債を見つけて終わりにするのではなく、次の流れで解消まで進める仕組み。

会話から理解不足を検知する
  ↓
理解負債として記録する
  ↓
確認質問をする
  ↓
正答なら1段階だけ昇格する
  ↓
不正答なら、どこで詰まったかを残す
  ↓
次回、その失敗ポイントから復習する

背景

Pi は、AI coding agent を自分の開発スタイルに合わせて拡張できるツール。 自分用の prompt を追加したり、作業ログや memory の運用ルールを決めたり、extension で独自の workflow を組み込んだりできる。

AI エージェントを使っていると、コードリーディングや実装方針の相談がかなり速く進む。 一方で、説明を受ける量が増えるほど、次のような状態も起きやすくなる。

  • 説明を聞いた直後は理解した気がする
  • でも、あとから同じ内容を自分で説明できない
  • コードの入力から出力までの流れを追えない
  • なぜその設計にしたのか言語化できない

この「理解したつもりだけど、まだ自分のものになっていない状態」を、この記事では 理解負債 と呼ぶ。

問題

AI エージェントを使うと、開発スピードはかなり上がる。 実装方針を相談し、コードを読んでもらい、修正案を出してもらうことで、成果物は以前より速く完成する。

ただ、その速さの裏で、自分の理解が追いつかないことがある。 成果物は動いている。でも、その中身を自分が説明できない。 この状態を放置すると、あとから保守・修正するときに ブラックボックス化した負債 になる。

成果物は完成するが、中身がブラックボックスになる

AI が生成・提案したコードは、その場では正しく動いているように見える。 しかし、あとから同じ処理を自分で説明しようとすると、入力と出力の流れや、途中のデータ変換を説明できないことがある。

つまり、成果物が完成していることと、自分がその中身を理解していることは別だった。

理解が曖昧なまま次の作業へ進んでしまう

開発中は、実装・レビュー・修正の流れが優先される。 そのため、「ここは少し曖昧だった」という箇所があっても、作業が進むうちに埋もれやすい。

特に commit 前や作業完了時に思い出せないと、理解が曖昧なまま変更だけが残る。 その結果、未来の自分がコードを直すときに「なぜこうなっているのか」がわからなくなる。

方針

そこで、理解負債を解消するための workflow を設計することにした。

Pi 側では、custom tool・自作 prompt・memory の運用ルールを組み合わせて、次の役割に分けて考えた。

役割 位置づけ 何をするか
会話での検知 AI との対話ルール ユーザーが説明できなかった箇所、誤解した箇所を AI が拾う
understanding_debt custom tool 理解負債の一覧・追加・更新を管理する
/debt-check 自作 prompt 1つの理解負債に対して確認質問を出す
memory tag memory の運用ルール 失敗・理解済みの記録を次回の復習に使う
commit 前の通知 作業区切りの check 作業の区切りで、残っている理解負債に気づけるようにする

理解負債そのものは、次の3段階で扱う。

Lv 状態 目標
Lv1 まだ理解できていない まず説明できるようにする
Lv2 説明できる コードの流れを追えるようにする
Lv3 コードを読める 実装・レビューで使える状態

重要なのは、正答しても一気に完了にしないこと。 Lv1 から Lv3 に飛ばすのではなく、正答したら 1段階だけ昇格 する。

実装・運用イメージ

会話から理解不足を検知する

この仕組みのポイントは、コードだけではなく ユーザーとの会話 を見ること。

例えば、AI がある処理の流れを説明したあとに、確認質問をする。

AI: この値は、どこで別の形式に変換されて、最後にどの処理へ渡されますか?
ユーザー: たぶん、そのまま使われると思います
AI: 「値が途中で変換される箇所」と「最終的な受け渡し先」がまだ曖昧そう

この場合、AI は「この概念がわかっていない」と雑に記録するのではなく、どこで詰まったかを具体的に残す。

#understanding-fail [[値の変換と受け渡し]]
入力値が途中で別の形式に変換され、その変換後の値が次の処理へ渡される流れを説明できなかった。

こうしておくと、次回は同じ説明を最初から繰り返すのではなく、「どこで値が変換されるのか」「変換後にどこへ渡されるのか」だけを重点的に復習できる。

逆に、ユーザーが内部ロジックやデータの流れを説明できた場合は、理解済みとして記録する。

#understanding-learned [[設計判断の理由]]
すぐに実装せず、先に仕様や影響範囲を整理する理由を説明できた。

つまり、AI が勝手に「理解した」と決めるのではなく、確認質問と回答を材料にして判定する。

/debt-check では1件だけ確認する

ここでは、自作 prompt として /debt-check を用意した。 理解負債の確認では、対象を1つだけ選ぶ。 複数を同時に確認しない。

/debt-check
  ↓
Lv1 または Lv2 の項目を1つ選ぶ
  ↓
確認質問を1つ出す
  ↓
ユーザーの回答を待つ

一度に複数聞くと、どれを理解できていて、どれを理解できていないのかが曖昧になる。 そのため、確認は1回に1テーマだけにした。

commit 前に理解負債を思い出せるようにする

もう1つ大事なのが、作業の区切りで通知すること。

理解負債は、実装中は後回しになりやすい。 特に commit 前は「この変更を残す前に、理解が曖昧なままの箇所がないか」を確認するよいタイミングになる。

そこで、理解負債が残っている場合は、commit 前や作業完了前に気づけるようにする。 例えば、agent の応答や作業完了前の check で「未解消の理解負債があります」と表示し、必要なら /debt-check に進める。

実装する
  ↓
レビューする
  ↓
commit 前に理解負債を確認する
  ↓
残っていれば通知する
  ↓
必要なら /debt-check で1つだけ確認する

ポイントは、commit を必ず止めることではなく、理解が曖昧なまま作業を閉じようとしていることに気づける ようにすること。

これにより、理解負債が「あとで見るリスト」ではなく、日々の開発 workflow の中で自然に戻ってくる。

正答時は1段階だけ昇格する

Lv1: 未理解
  ↓ 正答
Lv2: 説明できる
  ↓ コードの流れも説明できる
Lv3: コードを読める

このように段階を分けると、「説明はできるが、まだコードは追えない」という中間状態を扱える。

不正答時は失敗ポイントを残す

不正答の場合は、単に「間違い」とは扱わない。 何を誤解したのか、どのデータ変換を追えなかったのかを残す。

これにより、次回の復習対象が明確になる。

理解済みは慎重に記録する

正答した場合も、何でも understanding-learned にするわけではない。

記録するのは、次のような場合だけ。

  • 内部ロジックを説明できた
  • 入力から出力までのデータ変換を説明できた
  • なぜその設計にしたか説明できた
  • edge case や失敗条件を説明できた

「なんとなくわかった」だけでは理解済みにしない。

Before / After

Before

AI に説明してもらう
  ↓
なんとなくわかった気がする
  ↓
中身を説明できないまま作業が進む
  ↓
あとから見たときにブラックボックスになる

After

AI に説明してもらう
  ↓
AI が確認質問をする
  ↓
回答から曖昧な点を検知する
  ↓
必要なものだけ理解負債にする
  ↓
commit 前や作業完了前に残っている負債を通知する
  ↓
/debt-check で1つ確認する
  ↓
正答なら1段階昇格
  ↓
不正答なら失敗ポイントを記録
  ↓
次回、その失敗ポイントから再確認

学び

Pi のように自分で workflow を足せる AI coding agent では、コード生成やレビューだけでなく、自分の学習 loop も拡張できる。

理解負債は、単なるメモではなく小さな issue に近い。 Issue に title だけあっても、close 条件がなければ進まない。

同じように、理解負債にも次の情報が必要になる。

  • 何がわかっていないか
  • どの状態になれば解消とみなすか
  • どう確認するか
  • 間違えた場合、何を次回復習するか

つまり、理解負債管理で大事なのは「見つけること」だけではなく、「解消までの導線」だった。

まとめ

AI エージェントとの開発では、説明を受ける機会が増えるほど「わかった気がする」状態も増えやすい。

だからこそ、理解負債を解消する workflow が必要になる。

会話から検知する
理解負債として扱う
作業の区切りで通知する
確認する
昇格する
失敗を残す
次回復習する

この一連の流れを Pi に組み込むことで、理解負債を日々の開発 workflow の中で継続的に解消できるようになる。