AI が動かす前提で CLI を設計する
シリーズ・第 5 回(最終回) — 「個人で出版ツールを作って配るまで」(全 5 回)。前回はbrew と scoop で配る話でした。一覧は シリーズの記事一覧 から。今回のテーマは「AI が動かす前提の CLI 設計」です。
crofty は、端末から打つ素朴な CLI です。ただ、設計の前提が少しだけ変わっています。
「人が crofty を入れて最初の設定をしたら、あとはその人の AI(エージェント)が回す」。そういう使われ方を想定しています。人が毎回コマンドを覚えて打つのではなく、人の代わりにエージェントが crofty を動かす。そのときに困らない作りにしておく、ということです。
操作する相手に AI を含めると、CLI の設計はどう変わるか。シリーズ最終回は、その話です。
クリックでなく、出力を窓口にする
人とエージェントでは、できることが違います。人は画面をクリックでき、ドキュメントを読めます。エージェントはクリックできませんが、コマンドを実行して、その出力を読めます。
この違いから、設計の重心が「画面」から「出力テキスト」に移ります。だから crofty は、GUI や管理画面を作りません。代わりに、コマンドの出力を、人にもエージェントにも読める窓口にすることに力を入れています。具体的には、次の 3 つです。
① 何ができるかは、聞けば分かる
機能をドキュメントの奥に埋めず、ツール自身に聞けるようにします。
エージェントが最初に知りたいのは「どんなコマンドがあって、どう使うのか」です。crofty agent は、その全体像 ― コマンドと引数、使う順番、状態を読むための口 ― を一度にまとめて返します。AI にまず読ませる一枚で、これを実行すれば、あとは自分で動き出せます。
そのうえで、目的別の窓口もあります。crofty features は「何ができて、どう有効にするか」を返します。
$ crofty features
crofty features — what you can do, and how to turn each thing on.
Out of the box (works in a fresh project):
rss an Atom/RSS feed and a 'Follow by RSS' link
→ automatic — nothing to set
share reader share buttons, and `crofty share` …
→ automatic on posts; `crofty share <path>` for authors
Restyle (owned, contract-safe):
looks ready-made colour/type presets (quiet-paper, …)
→ crofty theme set <name>
各行に「何ができるか」と「どう有効にするか」がセットで出ます。crofty config を打てば、「今どうなっているか」も同じように返ります。どれも、人が読んでも AI が読んでも、ドキュメントを探さずに動き出すための窓口です。
② 毎回「次の一手」を出す
コマンドは、結果だけでなく「次に何をするか」を出力に書きます。たとえばビルドの後はこうです。
$ crofty build
✓ built → ./dist
next:
crofty preview # look at it locally first (no account)
crofty deploy # put it online (connects a free Cloudflare account)
next: があるので、手順を覚えていなくても、出力をたどれば次に進めます。人にとっては親切なヒントで、エージェントにとっては行動の手がかりになります。共有用の出力に --json を添えるなど、機械可読の口も用意しています。
③ 勝手に書き換えず、見せる
crofty は、自分が所有するファイルは書きますが、利用者のもの ― たとえば hugo.yaml ― は勝手に書き換えません。代わりに「ここをこう変えてください」と案内します。
これは人にもエージェントにも効きます。何が起きるか・何を変えるべきかが出力に見えるので、ブラックボックスになりません。勝手に状態を変えない道具は、エージェントに任せても暴走しにくい、ということでもあります。
まとめ
操作する相手に AI を含めると、CLI の設計は「クリック」から「読めて・聞けて・次が分かるテキスト」へ寄りました。GUI を作らない代わりに、出力そのものを最良の窓口にする。それが crofty の選んだ形です。
これで全 5 回のシリーズはおしまいです。所有して出版するために薄いパイプラインを作り、配ったあとも中身を変えられるよう出力を契約し、多言語を設計し、brew と scoop で配り、そして人と AI の両方が動かせるように整えてきました。小さな道具を作って配る誰かの、どこか一場面で役に立てば、それでじゅうぶんです。
← 前の記事:自作 CLI を brew と scoop で配る | シリーズはこれで完結です。