CashClaw: Moltlaunchマーケットプレイスに常駐するTypeScript製エージェントの実装を読む
An autonomous agent that takes work, does work, gets paid, and gets better at it.
ひと目でわかる
- これは何?
- タスク受注から納品、評価の取り込み、アイドル時の自己学習までを単一のNode.jsプロセスで回すエージェント。中核はツール経由の副作用とBM25検索による記憶注入で、マーケットプレイスへの依存はREADME自身が「剥がせる」と認めている。
- 誰に向いている?
- Moltlaunch上でタスクを受注するエージェントを最短で動かしたい人、あるいはツール呼び出し型エージェントのリファレンス実装としてTypeScriptのコードを読みたい人に向く。逆に、マーケットプレイスに依存しない自律エージェントをゼロから設計したい人には遠回りになる。
- 商用利用できる?
- できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
- 今もメンテナンスされている?
- 活動が鈍っています。最後のコミットは 6 か月前です。
- 何の言語で書かれている?
- 主に TypeScript です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
CashClawが埋めようとしている穴は「受注から納品までの配管」
LLMに仕事をさせる部分は今や難しくない。難しいのは、仕事が向こうから非同期に飛んでくる環境で、見積もりを出し、断る判断をし、納品し、評価を受け取り、その評価を次回の判断材料に戻すという配管を切れ目なく回すことだ。CashClawはこの配管をひとつのNode.jsプロセスにまとめたTypeScript実装である。READMEの説明によれば、対象はMoltlaunchというオンチェーンのワークネットワークで、クライアントがタスクを投稿し、エージェント同士が競合して受注する。CashClawはその一参加者として動く。想定読者は、自分のマシン上でエージェントを常駐させ、ウォレットとAPIキーを管理することを厭わない開発者だ。マネージドサービスではなく、`npm install -g cashclaw-agent`でローカルに入れる前提のツールである点は最初に押さえておきたい。
副作用はすべてツールに閉じ込められている
中核は`loop/index.ts`にあるマルチターンのツール呼び出しループだ。処理の流れはREADMEの記述に沿うとこうなる。まずシステムプロンプトを組み立てる。ここにはエージェントの身元、価格ルール、性格設定、学習済みの知識、そして条件付きでAgentCashのAPIカタログが入る。次にタスクの文脈を最初のユーザーメッセージとして注入する。LLMは推論とツール呼び出しを返し、実行側がツールを走らせて結果を戻す。LLMがツールを呼ばなくなるか、最大ターン数(既定10)に達するまでこれを繰り返す。
設計上の要点は、LLMがAPIを直接叩かないことだ。すべての副作用はツール経由で、その実体は`mltl` CLIのシェルアウトか`npx agentcash`の呼び出しである。ツールは13個あり、マーケットプレイス系が8つ(`read_task`、`quote_task`、`decline_task`、`submit_work`、`send_message`、`list_bounties`、`claim_bounty`)、ユーティリティ系が4つ(`check_wallet_balance`、`read_feedback_history`、`memory_search`、`log_activity`)、AgentCash系が2つ(`agentcash_fetch`、`agentcash_balance`)という分類になる。タスクの状態遷移もREADMEに明示されていて、`requested`でLLMが評価して見積もりか辞退かを選び、`accepted`で成果物を生成して`submit_work`し、`revision`ならクライアントのフィードバックを読んで再提出、`completed`で評価とコメントを保存して知識ベースを更新する。
この構造の利点は監査性だ。どのツールがいつ呼ばれたかを見れば、エージェントが何をしたかは追える。逆に、ツールの粒度が粗いので、LLMが`quote_task`に不適切な価格を入れてしまえばそのまま送信される。価格ルールをシステムプロンプトに書くだけでは防げない部分が残る。
記憶はBM25と時間減衰で引かれる
自己学習の実装がこのプロジェクトの個性である。アイドル時、既定では30分ごとに学習セッションが走り、三つのトピックを順番に回す。フィードバック分析は評価の傾向を探るもので、フィードバックが存在するときだけ実行される。専門分野の調査は設定された専門領域を深掘りし、常に実行される。タスクシミュレーションは現実的なタスクを生成してアプローチを組み立てる練習で、これも常に実行される。各セッションは知識エントリを生成し、`~/.cashclaw/knowledge.json`に保存される。
使われ方が二段階ある。自動の経路では、タスクが届くたびにトークン化し、知識とフィードバックのエントリに対してBM25+検索をかけ、`score * e^(-lambda * ageDays)`という時間減衰(半減期30日)を適用して上位5件をシステムプロンプトの`## Relevant Context`として注入する。直近N件ではなく、今のタスクに合致する文脈が入るという主張だ。もう一つは能動的想起で、LLMがタスクの途中で`memory_search`を呼び、自分の記憶に問い合わせられる。
ここは率直に言って弱点でもある。BM25は語彙の一致に依存するので、タスク文と知識エントリで使われる語がずれていればヒットしない。埋め込みベースの検索ではなくキーワード検索を選んでいる以上、この限界は構造的に残る。時間減衰の半減期30日という数字も、四半期単位でしか更新されない専門知識には短すぎる可能性がある。READMEはこの点について根拠を示していない。
セットアップはウィザード任せ、CLIは別途必要
導入手順はREADMEに明記されている。まず`npm install -g cashclaw-agent`、続いて`npm install -g moltlaunch`でMoltlaunch CLIを入れる。その後`cashclaw`を実行すると`http://localhost:3777`が開き、セットアップウィザードが立ち上がる。ウィザードは4段階で、ウォレット(`mltl`ウォレットを検出、初回は自動作成)、エージェント(名前、説明、スキル、価格を設定してオンチェーン登録)、LLM(Anthropic、OpenAI、OpenRouterのいずれかに接続し、テスト呼び出しを実行)、設定(価格戦略、自動化トグル、タスク上限)という順に進む。
LLMプロバイダの実装で目を引くのは、SDK依存がゼロで、すべて生の`fetch()`で叩く点だ。Anthropicは`api.anthropic.com/v1/messages`で既定モデルが`claude-sonnet-4-20250514`、OpenAIは`api.openai.com/v1/chat/completions`で`gpt-4o`、OpenRouterは`openrouter.ai/api/v1/chat/completions`で`openai/gpt-5.4`とREADMEの表に記載されている。OpenAIとOpenRouterは共通アダプタを使い、Anthropicのネイティブなツール形式とOpenAIの`tool_calls`形式を相互変換する。依存を薄く保つ判断は、監査しやすさと引き換えに、プロバイダ側のAPI変更を自分で追う責任を負うことになる。
Moltlaunchに縛られない、とREADMEは言う
READMEは「Moltlaunchは必要ない」と明言し、フォークしてマーケットプレイスを外し、Fiverrに繋ぐなり自前のクライアントに向けるなり好きにしてよいと書く。実際、マーケットプレイス系ツールは`mltl` CLIへのシェルアウトに集約されているので、その層を差し替える設計にはなっている。ただし差し替えの作業量は公開されていない。ツール定義、システムプロンプト、状態遷移の語彙がMoltlaunchのタスクモデル(`requested`、`accepted`、`revision`、`completed`)に合わせて書かれているため、別のマーケットプレイスに載せるならこの状態機械ごと書き換える前提で読むべきだ。
比較対象として、LangGraphやCrewAIのようなエージェントフレームワークは、ツール呼び出しループを汎用の抽象として提供し、特定のマーケットプレイスを前提にしない。代わりに、見積もり、納品、評価取り込みといった業務フローは自分で組む。CashClawはその逆で、業務フローは最初から入っているが、載る先はMoltlaunchに固定されている。どちらが良いかは、あなたが「エージェントの配管を書きたいのか、Moltlaunchで働かせたいのか」で決まる。
報酬と支払いが二系統ある点に注意する
ツール一覧を読むと、資金の流れが二つあることが分かる。一つは`check_wallet_balance`が確認するBase上のETH残高で、これはMoltlaunchでの受注報酬に関わる。もう一つは`agentcash_balance`が確認するUSDC残高で、`agentcash_fetch`による有償API呼び出し(検索、スクレイプ、画像生成など)の支払いに使われる。つまりエージェントは稼ぎながら同時に使う。タスク単価が安く、成果物を作る過程で有償APIを何度も呼ぶ構成にすると、収支が逆転しうる。READMEはこの収支について何も述べていない。導入前に自分のタスク種別でどれだけ`agentcash_fetch`を呼ぶことになるかを見積もる必要がある。
ライセンスはMITである。フォークしてマーケットプレイスを外すことがREADMEで推奨されている以上、ライセンス上の障壁は低い。ただし、オンチェーン登録やウォレット鍵の管理、有償APIの利用規約は別問題であり、MITライセンスがそれらを許諾するわけではない。ここは法的助言ではなく、確認事項の列挙として読んでほしい。
向く場合と向かない場合、最初に確かめること
向くのは、Moltlaunchで実際に受注したい人と、ツール呼び出し型エージェントの実装を読んで自分の設計に取り込みたい人だ。特に、システムプロンプトへの記憶注入をBM25と時間減衰で組む方法、LLMにAPIを直接触らせずツールに閉じ込める方法、SDKなしで複数プロバイダをアダプタで吸収する方法は、そのまま参考にできる。
向かないのは、マーケットプレイスに依存しない汎用エージェントを求めている人、キーワード検索ではなく意味検索で記憶を引きたい人、そして常駐プロセスとウォレット鍵を自分のマシンで管理したくない人だ。最後の層は運用コストに直結する。学習セッションは30分ごとに走り、そのたびにLLM呼び出しが発生する。受注がゼロの時間帯もトークンは消費される。
最初に確かめるべきは3点。`mltl` CLIが自分の環境で入手・認証できるか。Base上のウォレットをどの鍵で運用するか。そして`~/.cashclaw/knowledge.json`を誰が定期的に開いて不要なエントリを削除するか。ダッシュボードには知識エントリを展開して削除し、出典とトピックタグを確認する機能があるとREADMEに書かれている。この削除作業を放置すると、誤った知識が時間減衰で薄まりながらも上位5件に残り続ける。
編集部の結論
Moltlaunch上でタスクを受注するエージェントを最短で動かしたい人、あるいはツール呼び出し型エージェントのリファレンス実装としてTypeScriptのコードを読みたい人に向く。逆に、マーケットプレイスに依存しない自律エージェントをゼロから設計したい人には遠回りになる。導入前に確認すべきは、`mltl` CLIの入手方法とBase上のウォレット運用、`npx agentcash`経由の従量課金が自分のタスク単価で黒字になるか、そして`~/.cashclaw/knowledge.json`に蓄積される知識を誰が削除・監査するかである。特に最後の点は、誤った知識エントリがBM25で上位に入り続ける限り、エージェントの出力品質を静かに下げる。
コミュニティノート