Skip to main content
Glama

strawmanus

ManusのアクションレイヤーStrawberryのセッション・セレクタ・再利用レイヤーを融合したブラウザ制御エージェント。

Manusはより優れたを持つ。フラットな12ツールのブラウザAPI、要素検出失敗時の座標フォールバック、JSコンソールの逃げ道、マークダウン優先の認識、そして1イテレーションにつき1ツールという厳格なループ。Strawberry(Dendrite Systems)はより優れた体と記憶を持つ。実際にログインしたブラウザで動作し、自然言語から要素を解決して結果をキャッシュするため、サイトが変更されても自己修復する。成功したタスクは再利用可能なスキルとして保存され、不可逆的な操作の前には必ず確認を求める。

どちらも単独では機能しない。Manusはタスクを繰り返すたびにモデルコストを全額支払い、使い捨てのLinuxサンドボックスで動作するため、構造的にログインの壁を越えられない。Strawberryはクローズドで、プログラムから操作できるプリミティブを公開していない。strawmanusはその組み合わせだ。Manusのアクション空間を、自分のChrome内で駆動し、すべての要素解決をキャッシュする。


インストール

pip install -r requirements.txt && playwright install chromium

observeはAPIキーなしで動作する。モデル駆動のものにはすべてキーが必要だ:

export ANTHROPIC_API_KEY=sk-ant-...

次に環境を確認する:

python -m strawmanus doctor

Related MCP server: agent-browser-mcp

使い方

# See exactly what the agent sees — no API key, no model call
python -m strawmanus observe --url https://github.com/trending

# Run a task
python -m strawmanus run "top 5 trending TypeScript repos today, 2 sources per fact" --expect 5

# Log in once by hand; later headless runs inherit the session
python -m strawmanus auth --url linkedin.com

# Save a successful run as a skill, then replay it with new arguments
python -m strawmanus run "search for Acme Corp" --save-skill find-co --param company="Acme Corp"
python -m strawmanus replay find-co --arg company="Globex Inc"

# Fan subtasks across tabs (they share the logged-in browser)
python -m strawmanus companions "price Linear" "price ClickUp" "price Asana"

# Score against the seat-free Strawberry benchmarks
python -m strawmanus bench --tasks B9,B12 --judge --csv scores.csv

グローバルフラグ: --profile {cloned,real,fresh,attach} · --headless · --max-steps N · --auto-approve · --allow DOMAIN · --parallel N · --cdp URL

状態は~/.strawmanus/に保存される: sm.db(セレクタキャッシュ、メモリ、実行ログ)、skills/runs/<stamp>-<slug>/{report.md,trace.json,guard.json}profile/


仕組み

1. 認識は3つのレイヤーを1つのペイロードにまとめる

[page] url=https://github.com/trending | title='Trending repositories on GitHub today · GitHub' | viewport 1/3 | tabs=1

[interactive] (viewport only; use index, or coordinate_x/coordinate_y for anything missing)
  0[:]<a>Homepage</a>
  1[:]<button>Platform</button>
  ...
  52[:]<a>obra / superpowers</a>
  53[:]<a>275,441</a>
  60[:]<a>You must be signed in to star a repository</a>

[markdown] (whole page, links/images stripped — if this answers the question, do not scroll)
# Trending
## RyanCodrai / turbovec
A vector index built on TurboQuant, written in Rust with Python bindings
348 stars today
...

インタラクティブ要素はビューポートのみで、Manusの正確なindex[:]<tag>text</tag>形式で、elementFromPointによるヒットテストで隠れたコントロールは除外される。マークダウンはドキュメント全体をカバーし、フォールド以下も含む。これが実際のコスト削減の鍵であり、読み取り専用の質問のほとんどはスクロールなしで回答される。スクリーンショットはオプトインで、DOMが本当に曖昧な場合にのみ使用される。

パスワード、OTP、カードフィールドは入力できるようにインデックスされるが、そのテキストと値はモデルのコンテキストに入ることはない:

  4[:]<input type=password><redacted secret field></input>

2. Manusの12ツールをそのまま、さらに5つ

browser_view · browser_navigate · browser_restart · browser_click · browser_input · browser_move_mouse · browser_press_key · browser_select_option · browser_scroll_up · browser_scroll_down · browser_console_exec · browser_console_view

名前は、モデルがすでにそれらに一般化しているため、そのまま維持される。Manusの公開された行動ルールもそのまま適用される。追加されたもの:

ツール

理由

browser_find(description) → index

自然言語セレクタ、キャッシュ優先

browser_wait_for(description)

スリープループの代わりに意味的な待機

browser_extract(description, schema)

型付き抽出、ソースURLを自動的に記録

browser_tabs(action, target)

list / open / switch / close

browser_takeover(reason)

2FA、キャプチャ、支払い — キーボードを人間に返す

クリックは行き詰まるのではなくエスカレーションする: index → スナップショットのbboxからの座標 → browser_console_execbrowser_takeover。ページ上で3回連続して失敗すると、エスカレーションラダーがループに注入される。

3. セレクタキャッシュが最大の利点

(domain, normalized description){selector, fingerprint{tag, role, text_hash}, hits, misses} をSQLiteに保存。

解決順序: キャッシュヒット → フィンガープリントを検証 → 使用。モデル呼び出しはゼロ。不一致またはミスの場合、モデルは要素リストからインデックスを選び、キャッシュが書き換えられる。これはDendriteの自己修復であり、Manusには相当するものがない。正常なページでのスキル再生はモデル呼び出しがまったく不要strawmanus cacheで蓄積されたものが確認できる。

4. 実ブラウザ優先

デフォルトはstrawmanusが所有する永続的なChromeプロファイル。実際のCookie、ログインの壁はすでに解決済み、認証情報はどこにも保存されない。--profile realは実際のプロファイルを使用する(Chromeを閉じる必要がある)、--profile attachは自分で--remote-debugging-port=9222で起動したChromeに接続する、--profile freshは再現可能なベンチマーク用のクリーンなコンテキストを提供する。strawmanus auth --url <site>はDendriteのパターンだ。手動で一度ログインすると、ストレージ状態が保存され、後でヘッドレス実行に使用できる。

5. 不可逆的な操作は黙って実行されない

すべてのアクションは、ディスパッチ前に読み取り / ソフト書き込み / 不可逆に分類される。送信、送信、支払い、削除、投稿、適用、購読、転送、マージ、プッシュ — そして作成フィールドでのEnterキー — は、ターゲットとペイロードのプレビューとともに確認を保留する:

  ⚠  irreversible action held for confirmation
     what: click 'Send invoice' on x.com
      why: click target text contains 'send'
     approve? [y/N]

--auto-approve--allowで渡されたドメインにのみ適用される。保留されたアクションはレポートの「承認待ち(未実行)」にリストされるため、ブロックされたステップは黙って欠落するのではなく、可視化される。すべての決定はguard.jsonに書き込まれる。

6. ソースのない事実は出力できない

Strawberryのベンチマークルーブリックは、後で採点するのではなく、実行時に強制される。事実は、実際に読み取られたURLとともに台帳に入る。検索エンジンの結果ページはソースとして拒否され、モデルは実際のページを開くように指示される。信頼度は機械的に決定される — 高(2つ以上の公式ソース)、中(1つ)、低(推測)— そしてreport.render()は、ソースゼロの主張を出力する代わりに例外を発生させる。レポートは固定のステータス行、ブロッカー、テレメトリ、エージェントの自己評価による自律性で締めくくられる:

**Status:** Complete | **Entities Found:** 5/5 | **Duration:** 6.2 min

7. スキルとコンパニオン

成功したトレースはパラメータ化されたスキルに蒸留される。ノイズツールは削除され、リテラルな引数値は{{param}}に置き換えられ、要素テキストは再生時に各ステップを再配置できるように保持される。コンパニオンはセマフォの背後でタブ全体にサブタスクを展開し、それぞれが独自のイベントストリームを持ち、ログイン済みのブラウザを共有する。


ブラウザをClaudeに直接渡す

上記のすべてはCLIからエージェントを駆動する。serve-mcpはそれを逆転させる。ブラウザはClaudeが会話で保持するツールとなり、ターン間で開いたままの永続的なChromeが、スクリプト化されたループではなくチャット内で推論を行いながら、ツール呼び出しごとに駆動される。

claude mcp add strawmanus -- python -m strawmanus serve-mcp

手作りのJSON-RPC 2.0 over stdio、追加の依存関係なし。17のブラウザツールすべてに加えて9のトレーディングツール。Chromeは登録時ではなく最初のツール呼び出しで起動するため、サーバーを追加してもウィンドウがポップアップしない。browser_takeoverinput()でブロックするのではなく即座に戻る。ここではstdinがプロトコルチャネルであり、ブロックするとサーバーがデッドロックするためだ。代わりにモデルは停止し、会話でユーザーに尋ねる。

トレーディングツールはOlymp Tradeを対象としており、算術レイヤー、すべてのトレードの背後にある推論を記録するジャーナル、そして推論レイヤーのでコードによって強制されるリスク制限を備えているため、拒否は最終的なものとなる。設計上の前提は「エッジなし」が可能性の高い答えであり、デモ証拠ゲートはその答えに到達できるように存在する。実際の資金には、点推定ではなく、95%ウィルソン区間の下限が損益分岐点を超える必要がある。勝率61.7%、+146.80の120トレードのデモ記録でも、edge proven NOと報告される。

TRADING.md に全体像が記載されている。実際の資金にこれを向ける前に読むべきToSと構造的リスクも含まれている。


ベンチマーク

bench/tasks.jsonには、Strawberryの公開されたB1–B12仕様のうち、有料シートを必要としない9つのタスクが含まれている(B6–B8はLinkedIn Sales Navigator / CRM / ATSアクセスが必要)。そのルーブリック — データ精度35、ソース品質25、完全性25、洞察10、速度5 — で採点され、捏造データポイントごとに−20を上限とするペナルティテーブルが差し引かれる。

ベンチマークごとに2つのパスが実行される。機械的パスはモデルを必要とせず、実際に何が間違っているかを検出する。ソースなしの事実、単一ソースの事実、エンティティ不足、時間見積もりに対する超過、曖昧な数値表現。--judgeパスは、出力されたマークダウンのみを見る別のモデル呼び出しで採点する。エージェントは自分の宿題を採点しない。

テスト

python tests/test_core.py    # 33 offline: no browser, no network, no API key
python tests/test_live.py    # 6 end-to-end: real headless Chrome, scripted stub model

ライブスイートは、モデルをスクリプトに置き換えた実際のDOMに対してスタック全体を実行する。これにより、キーなしで不変条件をチェックできる。スナップショットJSを実際のHTMLに対して、ガードがSend invoiceを拒否しShow detailsを許可する(戻り値ではなくページ自身の状態でアサート)、キャッシュがコールド→ウォームに移行しモデル呼び出し数が一定、1イテレーションにつき1ツール呼び出し、スニペットソースが拒否されて報告される、新しい引数でスキルが再生される。

レイアウト

strawmanus/
  cli.py  config.py  loop.py  llm.py
  prompts/system.md          # agent loop, browser, information, safety, deliverable rules
  browser/
    session.py   # CDP attach / persistent profile / fresh context, tabs, storage state
    observe.py   # the three-layer observation
    actions.py   # Manus's 12 + 5, on Playwright
    selectors.py # NL selector → cache → fingerprint verify → self-heal
    guard.py     # risk classifier, confirm gate, secret redaction
  memory/
    store.py     # SQLite: prefs, per-domain quirks, run log
    skills.py    # trace → parameterized skill; replay with relocation
  research/
    sourcing.py  # citation ledger
    report.py    # the deliverable contract
  bench/
    tasks.json  judge.py

未実装

トリガー(GmailラベルやGitHub PRからのスキル起動)、MCPコネクタ、Manusのファイルツールは設計済みだが未実装。モデル駆動ループはスクリプト化されたスタブに対してエンドツーエンドでテストされたが、ライブAPIキーに対してはまだテストされていない。

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Transforms Chrome browser into an AI-controlled automation tool that allows AI assistants like Claude to access browser functionality, enabling complex automation, content analysis, and semantic search while preserving your existing browser environment.
    MIT
  • A
    license
    B
    quality
    F
    maintenance
    Enables AI agents to directly control your real Chrome browser with full context including login sessions, cookies, and open tabs. It provides tools for page scanning, JavaScript execution, CDP control, screenshots, and physical mouse/keyboard input for authentic browser automation.
    20
    241
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Enables controlling a real Chrome browser from MCP hosts like Claude, with extension-based or CDP fallback, supporting tabs, navigation, interaction, and page reading tools.
    33
    40
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables browser automation through the Claude Chrome Extension, allowing agents to navigate websites, fill forms, take screenshots, and debug web apps via standard MCP protocols.
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/painbaba/strawmanus'

If you have feedback or need assistance with the MCP directory API, please join our Discord server