Skip to main content
Glama

strawmanus

Агент управления браузером, который объединяет слой действий Manus со слоем сессий, селекторов и переиспользования Strawberry.

У Manus лучшие руки: плоский API браузера из 12 инструментов, запасной вариант с координатами, когда не срабатывает определение элементов, запасной выход через JS-консоль, восприятие в первую очередь через markdown и строгий цикл «один инструмент за итерацию». У 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. Восприятие — это три слоя в одной полезной нагрузке

[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, чтобы перекрытые элементы управления отбрасывались. Markdown покрывает весь документ, включая часть ниже сгиба — это настоящий рычаг стоимости, потому что большинство вопросов, требующих только чтения, получают ответ без единой прокрутки. Скриншоты — по желанию, для случаев, когда DOM действительно неоднозначен.

Поля паролей, OTP и карт индексируются, чтобы их можно было заполнить, но их текст и значение никогда не попадают в контекст модели:

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

2. 12 инструментов Manus, дословно — плюс 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. Кэш селекторов — самый большой выигрыш

(domain, normalized description){selector, fingerprint{tag, role, text_hash}, hits, misses} в SQLite.

Порядок разрешения: попадание в кэш → проверить отпечаток → использовать его, с нулевыми вызовами модели. При несовпадении или промахе модель выбирает индекс из списка элементов, и кэш перезаписывается — самовосстановление Dendrite, аналога которого у Manus нет. Повторно воспроизведённый навык на здоровой странице стоит вообще без вызовов модели; strawmanus cache показывает, что накопилось.

4. Сначала настоящий браузер

По умолчанию используется постоянный профиль Chrome, которым владеет strawmanus — реальные куки, стены логина уже пройдены, никакие учётные данные нигде не хранятся. --profile real использует ваш реальный профиль (Chrome должен быть закрыт), --profile attach подключается к Chrome, который вы запустили сами с --remote-debugging-port=9222, --profile fresh даёт чистое окружение для воспроизводимого бенчмаркинга. strawmanus auth --url <site> — это паттерн Dendrite: вы входите вручную один раз, состояние хранилища сохраняется для последующих headless-запусков.

5. Ничего необратимого не происходит молча

Каждое действие классифицируется как read / soft-write / irreversible перед отправкой. Отправка, submit, оплата, удаление, публикация, подача заявки, подписка, перевод, merge, push — а также 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. Удержанные действия перечислены в отчёте в разделе «Held for your approval (not performed)», так что заблокированный шаг виден, а не молча отсутствует. Каждое решение записывается в guard.json.

6. Факт без источника не может быть напечатан

Рубрика бенчмарка Strawberry применяется во время выполнения, а не оценивается задним числом. Факты попадают в реестр с URL, из которого они реально прочитаны; страница результатов поисковой системы отклоняется как источник, и модели говорится открыть реальную страницу. Уверенность механическая — High (2+ официальных источника), Medium (1), Low (вывод) — и 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 поверх stdio, без дополнительных зависимостей. Все 17 инструментов браузера плюс 9 торговых инструментов. Chrome запускается при первом вызове инструмента, а не при регистрации, поэтому добавление сервера не открывает окно. browser_takeover возвращается немедленно, а не блокируется на input() — здесь stdin является каналом протокола, поэтому блокировка привела бы к взаимоблокировке сервера; вместо этого модель останавливается и спрашивает вас в разговоре.

Торговые инструменты нацелены на Olymp Trade и включают арифметический слой, журнал, в котором записываются обоснования каждой сделки, и ограничения риска, применяемые в коде ниже слоя рассуждений, так что отказ окончателен. Предположение дизайна состоит в том, что «нет преимущества» — это вероятный ответ, и ворота демо-доказательств существуют, чтобы этот ответ был достижим: реальные деньги требуют нижней границы 95% интервала Уилсона для преодоления безубыточности, а не точечной оценки. Демо-запись из 120 сделок с процентом побед 61,7%, в плюсе на 146,80, всё ещё сообщает edge proven NO.

TRADING.md содержит полную картину, включая условия использования и структурные риски, которые вы должны прочитать, прежде чем направлять это на реальные деньги.


Бенчмарки

bench/tasks.json содержит 9 задач из опубликованной спецификации B1–B12 Strawberry, которые не требуют платного места (B6–B8 требуют доступа к LinkedIn Sales Navigator / CRM / ATS), оцениваемых по его рубрике — Data Accuracy 35, Source Quality 25, Completeness 25, Insight 10, Speed 5 — за вычетом таблицы штрафов, возглавляемой −20 за каждую выдуманную точку данных.

На каждый бенчмарк выполняется два прохода. Механический проход не требует модели и выявляет, что на самом деле идёт не так: факты без источников, факты с одним источником, нехватка сущностей, превышение временной оценки, уклончивые числовые формулировки. Затем проход --judge оценивает с помощью отдельного вызова модели, которая видит только выданный markdown — агент никогда не оценивает свою собственную работу.

Тесты

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 (проверяется по собственному состоянию страницы, а не по возвращаемому значению), кэш, переходящий из холодного в тёплый при неизменном количестве вызовов модели, один вызов инструмента за итерацию, отклонённый и зарегистрированный источник-фрагмент, и навык, воспроизведённый с новым аргументом.

Структура

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 или PR на GitHub), MCP-коннекторы и файловые инструменты Manus спроектированы, но не реализованы. Цикл, управляемый моделью, был протестирован end-to-end против скриптованного стаба, но ещё не против живого 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