
Webnav
io.github.lucyfuur94由 GitHub 帳號 lucyfuur94 發布v0.2.0更新於 Nov 3, 2026
A zero-LLM MCP server that replays recorded site maps instead of re-exploring browser routes.
概覽
零 LLM 的瀏覽器導覽伺服器,透過重播已錄製的網站地圖,讓助理能確定性地走完已知的多步驟網頁路線。
- 可以做什麼
- 從起始狀態走到目標狀態,遇到真正的分歧點時暫停,助理選定元素後繼續
- 逐步操作即時瀏覽器:開啟網址、讀取快照、點擊、輸入、讀取頁面內容、執行指定 JS、檢視網路請求
- 在公開網路上搜尋並擷取佐證
- 錄製、分析並編輯網站地圖,匯入匯出地圖包,以大綱或圖表檢視地圖
- 在本機儲存登入與表單憑證,並開啟本機操作面板
- 適用情境
- 適合助理需要反覆操作同一個網站的場合,例如內部工具、後台流程、自動化測試,希望導覽被記住而不是每次重新推理。對於只有一兩步的淺層路線幫助不大,此時與臨時操作瀏覽器效果相當。
- 執行需求
- 以本機程序透過 stdio 執行,使用 webnav 指令加 mcp 參數啟動。需要 Node.js 18、20 或 22,並全域安裝 Playwright CLI 與 webnav 的 npm 套件。會在本機操作瀏覽器,地圖與憑證存放在使用者家目錄下。未宣告任何 API 金鑰或環境變數。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Webnav,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
webnav
[CI] [License: Apache 2.0] [TypeScript] [PRs welcome] [zero-LLM]
Stop your web-browsing AI agent from re-exploring the same sites every run. Your agent maps
a website once — then travels it forever with webnav walk: deterministic, zero-LLM,
page-to-page autopilot that pauses only at genuine forks (what to buy, an irreversible button)
and hands the wheel back. It's a reusable site map, not page compression — most token-saving
tools shrink what the agent reads; webnav remembers where things are so it stops re-finding
the route. webnav is the map and the mechanics; the agent keeps all the judgment.
See it
A real run against saucedemo's full checkout flow (map + credentials already recorded):
4 agent-visible CLI calls, login → inventory → cart → checkout form (auto-filled from locally-stored creds — never in the map) → overview. 12 browser actions underneath, zero agent tokens spent on navigation.
In our navigation benchmark (both arms on Haiku, the same
browser underneath), on a deep multi-step route walk used ~3× fewer agent steps than an agent
ad-hoc-driving the raw browser — median 6 calls vs 18 — and reached the goal more reliably (3/3 vs
2/3). Honest caveat, also in that file: the win shows up on deep, reliably-walked routes; on
shallow 1–2-hop routes, or when the agent falls back to manual driving, the two tie. webnav helps
most exactly where ad-hoc driving hurts most — the long, repeated journeys.
Drive a tab from a side panel (Chrome extension)
There's also a Chrome extension in webnav-extension/ — a docked side
panel where you type a goal and watch the agent drive your active tab (read / click / type /
scroll, via chrome.debugger/CDP), on your own Claude Code subscription. It recalls first
(list_routes → check_route) so a site you've mapped is replayed, not re-explored — and every
run is recorded back into the map, so the next time is the cheap deterministic walk.
- Ask (approve a plan first) or Act (run on its own); irreversible steps (pay / place order / delete) always pause for you.
- Watch every step — narration + the tool trail render live; a cursor glides to each action.
- Take over any time, drive by hand, hand back.
- Teach mode — flip to Teach and demonstrate a task by hand once; it becomes a named,
deterministic route any agent can
walk(typed values never leave the browser).
Try it (needs the local server for the zero-LLM navigation + recording):
Then chrome://extensions → Developer mode → Load unpacked → pick webnav-extension/,
open the panel (toolbar icon or ⌘/Ctrl-E), paste the token, and type a goal. Runs show up on
the dashboard tagged Extension. Full walkthrough: webnav-extension/README.md.
Why
Web agents re-discover the same websites every single day, paying the same token bill every time: snapshot → reason → click → snapshot. For sites you (or your agents) use repeatedly — internal tools, automation testing, back-office workflows — that navigation should be remembered, not re-reasoned. webnav stores the durable intent of each step, replays it deterministically, self-heals when the site drifts, and never auto-fires an irreversible action: commit points always pause for the agent (or you) to decide.
Quickstart (≈2 minutes to a working walk)
The seeded Saucedemo map is a working example. To map your own site, hand an agent the prompt in
docs/LEARNING-A-SITE.md, record a session yourself, or use the Chrome
extension below. For development, map packs, and contributing from source:
Using it from an MCP client (Claude Desktop/Code, etc.) — webnav serves every verb as an MCP
tool over stdio, so your agent gets walk/use/search/… natively, no shelling out. One line:
How the map grows (start here if you're new)
webnav is a map — and a fresh install is not blank, but it is small. Here's honestly what you get and how it grows, so there are no surprises:
-
What ships, out of the box. The first time you run any verb, webnav seeds a shared map at
~/.webnav/webnav.db(per-user, shared across every terminal/folder on the machine — not a per-directory file). It comes pre-seeded with one worked example: saucedemo.com — a full login→browse→cart→checkoutwalkmap. This works immediately:Nothing else is seeded — webnav is a blank-slate map tool, and saucedemo is the single example that proves it works. You record your own sites (see below); that's the product. This fits any flow you repeat against the same site: automation testing, internal tools, back-office workflows, recurring agent tasks. (An earlier GitHub-recall
- internet-graph engine — the v1 proof-of-engine — was removed from the tree 2026-06-13; it lives in git history if that surface ever returns.)
-
The map persists and self-heals. It's saved to
~/.webnav/webnav.dband reused on every run — you do not rebuild it each time. When a remembered step drifts (a renamed or moved element), awalkescalates once for the agent to pick the element, then writes the fix back so the next run resolves it deterministically (principle #3). Routes you use stay fresh. Credentials for login-gated sites live outside the map, locally, at~/.webnav/credentials.json(chmod 600) — never in the DB, never shared. -
Mapping a NEW site — hand your AGENT the learn prompt. webnav is built for agents, so you don't map by hand: you give an agent (even a cheap one — we use Haiku) the reusable prompt in
docs/LEARNING-A-SITE.mdand let it run autonomously. It drives the site once through webnav'suseprimitives while recording, thendev graph-analyse --draftfolds that into a SELF-VERIFIED map (absolute URLs, unique element fingerprints, the in-page affordance repertoire, the declared domain shadow) which it persists withdev graph-edit. No hand-authoring of fingerprints or URLs. (That prompt learned the seeded OrangeHRM map — login + 11 modules, exercised — in a single one-shot run.) Re-learn cleanly withdev node-clear. -
Or skip learning — import a map pack someone already made. A map travels as a pack, so only the first person learns a site.
webnav dev import-map <pack.json>loads a site's skeleton; set your own login withdev creds set(packs are skeleton-only, never carry credentials). Two packs ship inmappacks/(saucedemo, OrangeHRM);dev export-map <site>makes your own to share. -
Or record a site by browsing it yourself. No agent needed: run
webnav dev record-live --session S --url <site>— it opens a headed browser at that URL, and you click through the flow naturally. Every action you take is captured (real playwright a11y snapshots, never typed values — only which field changed) into the same session store the agent-record path uses. Stop with Ctrl-C orwebnav dev record-stop --session S, then it's the samedev graph-analyse <session> --draft→graph-edit→walkpipeline. -
Or drive + record from the Chrome extension — the side panel above: give the agent a goal, it drives your active tab (recalling known routes first), and the run is captured back into the map. (An earlier extension capture-only path that approximated the a11y tree from the raw DOM is retired — it broke on SPAs; the current extension captures via real CDP accessibility instead.
dev ingeststill exists as that legacy receiver.) -
Inspect what you have anytime:
[webnav dashboard — Sessions tab with Extension/Agent/Manual source tags and a source filter] [webnav dashboard — Sessions tab with Extension/Agent/Manual source tags and a source filter]webnav dev dashboard(a localhost operator UI). Its Sessions tab lists every recorded run — tagged by source (Extension / Agent / Manual), with a filter, step counts, and a Verified badge — plus record-by-clicking + replay:Or the text views
dev outline <site>/dev mermaid <site>.
TL;DR: out of the box you can walk saucedemo; everything else you map yourself. Same
machine + a mapped site → instant, cached, self-healing. A brand-new site → you (or your
agent) record it once first.
Verbs
webnav <verb> --help for details. Output is JSON on stdout; exit 0 ok / 2 error / 3 empty.
MCP server
webnav mcp serves every verb as an MCP tool over stdio — point an MCP client at it and
agents get the verbs natively (no shelling out). Tools are generated from the same command
registry as --help, and every call runs the real CLI, so the two surfaces can't drift:
Consumer verbs can also be invoked canonically as webnav use <verb> ... and map-authoring verbs as webnav dev <verb> ...; bare consumer verbs (e.g. webnav read ...) still work too.
Inspect a site's map
The map is for the calling AGENT (walk), not a human dashboard. To inspect what's captured, use the text views — no UI:
Architecture (one CLI, three components, ZERO LLM)
- Explorer — reads a site's declared structure (observe-first), folds a recording into a self-verified map draft (states, typed affordances, the declared domain shadow), recognizes states.
- MapStore — SQLite persistence: states (+ affordances + declared shadow), projected edges, the site-node index, and record sessions.
- Router — walks a route, replays it (cached selector → deterministic fingerprint re-resolve),
self-heals, returns evidence OR a
needs-navigation/needs-classification"your move" response for the agent. Never judges, never calls an LLM.
Source map (src/)
Tests mirror this under tests/. The live e2e walk tests are gated behind WEBNAV_LIVE=1.
Principles (full list in CLAUDE.md)
- Observe first, traverse rarely. 2. Never traverse a declared commit point. 3. Store durable semantic routes; cache selectors. 4. Usage-learned weights are a hosted-service concern. 5. The map surfaces evidence; the agent judges. 5a. ZERO LLM in webnav — all reasoning offloaded to the calling agent via a call-and-response protocol. 6. The map is a use-case-independent navigation skeleton; goals declare signal interests. Never evade bot-walls — detect + escalate.
Status
All current work is merged to main, tests green. See docs/STATUS.md for the live
checklist, pending work, and known limitations; CLAUDE.md holds the settled design,
mental model, and principles. Design docs: docs/superpowers/specs/.
Contributing
PRs welcome — see CONTRIBUTING.md (the settled principles, dev setup, and how
to contribute a site map or map pack — the highest-leverage contribution). Map packs are
skeleton-only and never include credentials; the shipped examples are in mappacks/.
Report security issues privately per SECURITY.md. Be excellent to each other:
CODE_OF_CONDUCT.md.
License
Apache License 2.0. Free to use, modify, and redistribute (including commercially)
with attribution: retain the copyright notice and the NOTICE file. Includes an
explicit patent grant. Copyright 2026 Dikshant Yadav.
來源:README.md,提交 0f1c6f8
工具
0版本歷史
1- v0.2.0最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分