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 で配る | シリーズはこれで完結です。