プロジェクトLegion
この半年近く、ロクにエントリも書かず、Twitterにもあまり出ず、ひたすらコード書いたり実験したりしていました。
CassetteOS Ver 2の開発もしなきゃいけないんですが、これもペンディング状態です。 この辺のことは、
にも書いています。
そろそろ成果物も出来て来たので、やっていたことを書いておこうと思います。
やっていたこと
↑のエントリに書いたことが全ての始まりです。 ここで書いているものを実用レベルに持って行くことがゴールでした。
その結果、
- skillsが使える程度のハーネス
- Mattermostの入口
- 業務のために必要なfunctionやMCP
は稼動するようになりました。 これはそこそこ早い時期です。 4月の初め頃にはとりあえず動くようになりました。
その途中で思ったこと
自分で手を動かして実装をしたりテストしたりしていると、色々気がついたり発見したりすることがあります。 その一つが、
なんですが、このことをずっと考え続けていて、以下のことを考えました。
- バックオフィスをAPI化エージェント化すれば、SMB(中小零細スタートアップ)のバックオフィスをAI化できる
- OpenClaw的に仕事をさせれば、より高度にAI化したオフィスが作れる
- こういったものをまとめて「コンビナート」という概念が作れるのではないか?
ということです。 個人的には「コンビナート」という概念はとても気に入ってていて、それはOrcinusの理念とも一致しますし、「AI化オフィス」ということを考えると、避けては通れない話ではないかと思うようになりました。
ということで、「コンビナート」を作るということも含めて、システムの開発をするようになりました。
そこで思ったことは、圧倒的なパワー不足です。
普通のAIハーネスレベルの機能を持ったものが作れたとは言え、また流行りのskillsまで実装したとは言え、できたものはあくまでも「オレオレハーネス」に過ぎません。 エコシステムの類は何もありません。 全部自分で書かなければなりません。 もちろん既存ハーネスを横目で見ながら作ったものですから、既存ハーネスにはないメリットも大量にありますが、エコシステムの規模や成熟度は比較になりません。
そこで「オレオレハーネス」の部分はこのシステム(Legionと命名しています)固有機能の部分で活用することにして、ここで必要な機能は今後強化し活用する。 ただし、実際にタスクをこなす部分については既存ハーネスを活用して、うまくインターフェイスを取ることを考えるということにしました。
作っているもの
そういったことがあって、主に作っているものはオーケストレータとそれに関係する部分が主になりました。
現在の構成はこんな感じ。
このような構成にすれば、「すごく頭良くて実績もあってエコシステムもしっかりしているハーネス」の力を使いつつ、私が(弊社が)やりたいことを自分の制御化で実現できるわけです。
もうちょっとkwsk
今のところ、「専門家エージェント」としてはOpenCodeを使っています。 OpenCodeであることに本質はなくて、単に外部からAPIで操作できるハーネスであれば、それで十分です。 元々gemini-cliでやりたかった(その直前に使っていたのがそれだから)のですが、gemini-cliはこの機能を持っていなかったので使えなくて… という経緯があります。 このせいで「自作ハーネス」という不健全な方向に走りタイムロスしてしまいましたが、使えるハーネスがいくつも(Claude CodeもAntiGravityでも)あることに気がついてからは、軸足はハーネス開発よりもオーケストレーションに移りつつあります。 まぁそうこうしているうちに、この辺の処理を主にやっている社長(mayumi)が、いろんなハーネスを使ってしまってて… という事情もあったりしますけど。
「専門家エージェント」同士やオーケストレータとのやりとりは「メールボックス」を用意しています。
構造的には、メールボックスをアクセスするところはこちらのコードで、そこからspawnしたOpenCode(汎用ハーネス)がAPIで指令待ちをしているという感じです。
プロンプトでメールボックスのアクセスは当然書けますが、そこにLLM使う意味はほぼない(つまりトークン消費がムダ)ので、こちらでコードを書いています。
「専門家エージェント」はsandboxの中にいます。 当初は「必要だけど急ぎはしない」と思っていたのですが、OpenCodeはムダに強力で、「そこになかったらないですね」が通じません。 自分のアクセスできる限りのところを探し回り、そこで見つからなければ探索用のツールを自作し… みたいなことを始めてしまうので、sandboxの中で大人しくしてもらうことにしました。
この構造のヒントは、MonClawから来ています。 MonClawはその名の通り「Claw系」のソフトですが、「頭脳」の部分はOpenCodeです。
ペルソナ
実はこのシステムは「ペルソナ」を強く意識しています。
「キャラクタが存在している感じ」というのは、それはそれで嬉しいことだということがあるのですが、それ以上に 「仕事の質」が向上することを発見したからです。
後で書くように、Legionはその名の通り「何人も存在している」システムです。 「事業部」を実装するということが元々の目的なので、「人数」は一人ではありません。 でもやっていることは色々ですから、「人」と「仕事」をうまく結びつけるためのラベルが必要になります。 ですから、「個々の名前」が必要である… ことはすぐにわかると思います。
他方、そのペルソナの違いが何に関係があるかと言えば、それは全ての仕事の質に関係があるようなのです。
たとえば「お勧めOSSについての調査」という、単純な調査タスクの場合、別にペルソナとかなくてもいいような気がします。 いや、もっとわかりやすいことから言えば、「あるプログラムを書く」ことに個性なんて要求することはないような気がします。
そこで実験的にペルソナを与えて、「お勧めOSSについての調査」をさせてみました。 もちろん比較対象はペルソナなしのエージェントです。
結果はまるで違うものになりました。 ごく雑な言い方をすればペルソナを与えると「AI臭さが消え、成果が生き生きしたもの」となりました。 それも「わかる人ならわかる」ような微妙な差異ではなく、おそらく誰もが「えー?」と思うくらい違います。 別の言い方をすれば、AIにありがちの「全方位感」が消え、「目線」がはっきりしたとも言えます。 つまり、客観性を要求する成果物であっても「個性」が出るということです。
大勢でクリエイティブな仕事をする時、この「個性」をいかに活かすかが重要だと思いますし、わざわざ「何人も存在している」意味はそこにあります。
そして、この「作業者のペルソナ」を意識したハーネスは存在していません。 ここは作るしかありません。
OpenClawの嬉しさ
これを作っている時に「OpenClawの嬉しさとは何だったのか?」ということを考えてみました。 また、ChatGPTやGoogle AIにも聞いてみました。 そこで挙げられたのは、
- 常駐していつでもいつものツール(チャットシステム)から使える
- 常駐してイベントに合わせて自動で動いてくれる
- そういったものが一貫したペルソナ、一貫した文脈で実現される
というようなことが嬉しいのではないかという結論でした。 確かに「Claw系」のソフトはたいていそうです。 これは別の見方をすると、
OpenClawという同僚
ができた感じだとも言えます。
LegionにMattermostのインターフェイスを作った時には、「そこにいる」という感じが確かにしましたからね。
そんなわけで、Legionは「オフィスの集団(legion)」という方向を目指すことにしました。
今後
こういったエントリを書いているということは、そこそこ方針も安定し、動作するようになったということで一息ついているということです。 この先は「実用品」ということでブラッシュアップして行くことになります。
目の前のTODOとしては
- 他のペルソナも同居させる(できるはずなんですが)
- 「専門家」を充実させる
- 他のハーネスのインターフェイスも作る(これはAIコーディングで十分だと思います)
- web UIをちゃんとする
というあたりです。 とりあえずはPaperclipのような感じのUIも作りたいですね。