Skip to main content
Glama

strawmanus

Manus의 액션 레이어Strawberry의 세션, 셀렉터, 재사용 레이어를 결합한 브라우저 제어 에이전트입니다.

Manus는 더 나은 을 가지고 있습니다: 평평한 12개 도구 브라우저 API, 요소 감지 실패 시 좌표 폴백, JS 콘솔 탈출구, 마크다운 우선 인식, 그리고 반복당 정확히 하나의 도구만 사용하는 루프. 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로 히트 테스트하여 가려진 컨트롤은 제외됩니다. 마크다운은 전체 문서를 포함하며, 접힌 부분 아래까지 포함합니다 — 이것이 실제 비용 레버입니다. 대부분의 읽기 전용 질문은 스크롤 한 번 없이 답변되기 때문입니다. 스크린샷은 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)

sleep 루프 대신 의미론적 대기

browser_extract(description, schema)

소스 URL을 자동으로 기록하는 타입 추출

browser_tabs(action, target)

list / open / switch / close

browser_takeover(reason)

2FA, 캡차, 결제 — 키보드를 다시 넘겨받기

클릭은 막다른 길이 아니라 단계를 올립니다: 인덱스 → 스냅샷 bbox의 좌표 → browser_console_execbrowser_takeover. 페이지에서 세 번 연속 실패하면 에스컬레이션 사다리가 루프에 주입됩니다.

3. 셀렉터 캐시가 가장 큰 이점

(도메인, 정규화된 설명){selector, fingerprint{tag, role, text_hash}, hits, misses}가 SQLite에 저장됩니다.

해석 순서: 캐시 히트 → 지문 확인 → 사용, 모델 호출 없이. 불일치 또는 미스가 발생하면 모델이 요소 목록에서 인덱스를 선택하고 캐시가 다시 작성됩니다 — Dendrite의 자가 치유이며, Manus에는 이에 해당하는 것이 없습니다. 정상 페이지에서 재생된 스킬은 모델 호출이 전혀 들지 않습니다; strawmanus cache는 축적된 것을 보여줍니다.

4. 실제 브라우저 우선

기본값은 strawmanus가 소유한 영구 Chrome 프로필입니다 — 실제 쿠키, 이미 해결된 로그인 장벽, 어디에도 저장되지 않은 자격 증명. --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% Wilson 구간의 하한이 손익분기점을 넘어야 합니다. 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으로 시작하는 페널티 테이블을 뺍니다.

벤치마크당 두 번의 패스가 실행됩니다. 기계적 패스는 모델이 필요 없으며 실제로 잘못된 것을 잡아냅니다: 출처 없는 사실, 단일 출처 사실, 엔티티 부족, 시간 추정치 초과, 모호한 숫자 언어. 그런 다음 --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에 대해 전체 스택을 실행합니다. 이것이 키 없이 불변 조건을 확인할 수 있게 하는 이유입니다: 실제 HTML에 대한 스냅샷 JS, Send invoice를 거부하고 Show details를 허용하는 가드(반환 값이 아닌 페이지 자체 상태에서 단언), 모델 호출 수가 일정하게 유지되는 캐시의 cold→warm 전환, 반복당 하나의 도구 호출, 스니펫 출처가 거부되고 보고되는 것, 그리고 새 인자로 재생되는 스킬.

레이아웃

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