PawWork_ZhuaZhua (爪爪) is a selection-first Chrome MV3 web agent for people who want to turn text selected on a live, already-logged-in page into an editable office file without routing anything through a hosted service.
What it is
PawWork_ZhuaZhua is an unpacked Chrome extension that runs a side-panel agent capable of driving the current tab, executing guest JavaScript against the browser, and holding sheet, Univer document, and site HTML artifacts for the duration of a session. It lives in the Chrome extension ecosystem but is deliberately outside the Chrome Web Store: it is loaded unpacked, and there is no hosted model behind it. The user supplies an OpenAI-compatible API key, which is stored in chrome.storage.local.
The concrete problem it solves is that browser automation normally ends in a transcript, a screenshot, or a JSON blob, and the user still has to rebuild the result by hand. PawWork_ZhuaZhua replaces that manual reassembly step: you select content on the live page, describe the outcome you want, and take away an editable office file. It treats the already-logged-in Chrome as a programmable computer, so the agent works against the session the user already has rather than a re-authenticated copy.
Key capabilities
- Selection-first workflow: content is selected on the live page, an outcome is described, and the deliverable is an editable office file.
action lets the side-panel agent drive the current tab directly.
sys runs inside run to execute guest JavaScript against the browser, with sys.eval for evaluation and sys.cdp for Chrome DevTools Protocol access.
- Session artifacts persist as sheet files, Univer documents, and site HTML, with
pptx, tldraw, and univer covered among the project topics.
- BYOK model access: the API key goes into
chrome.storage.local, and no hosted model is involved.
- No build step and no
package.json; the repository is loaded directly as an unpacked extension with manifest.json at the folder root.
- Runtime verification ships in-tree via
node --test tests/runtime-regression.test.mjs for pure Node and node tests/browser-smoke.cjs to load the real extension.
- Release packaging is scripted with
python scripts/pack_extension.py --zip dist/pawwork.zip.
Who uses it and how
- Individual developers and analysts who already have an authenticated session open in Chrome and need an office file out of it, rather than a scripted replay of the login flow.
- Users with their own OpenAI-compatible key who want model traffic to stay on their own account and are willing to accept manual extension loading in exchange.
- Extension and agent developers who need real-browser regression checks and can run
tests/browser-smoke.cjs against a loaded build.
- Teams working across sheet, Univer document, and HTML artifact types inside a single agent session, where the side panel to service worker to offscreen
SessionWorkspaceService to AI SDK ToolLoopAgent pipeline is documented in AGENTS.md and the nested AGENTS.md files under src/.
Getting started
Clone the repository or download a Release zip, then open chrome://extensions, enable Developer mode, choose Load unpacked, and select the folder containing manifest.json. Open the side panel, paste an OpenAI-compatible API key, and send a task from a normal http(s) page.
How it compares
No comparable tools are named in the facts provided, so PawWork_ZhuaZhua stands alone in this registry. Its distinguishing position as documented is structural rather than competitive: it is distributed as an unpacked extension rather than through the Chrome Web Store, and it runs without a hosted model by requiring the user's own key.
When to use it — and when not to
Self-hosting here means operating your own model credentials and your own Chrome environment, since there is no server, database, or SMTP component to run. Chrome 135 or newer is required, Chrome 138 or newer needs Allow User Scripts enabled on the extension details page for sys.eval or page-identity fetch, and DevTools must be closed on the target tab before using sys.cdp or the call returns CDP_BUSY. Restricted pages such as chrome:// and the Web Store return NEED_PAGE, and anyone who wants automatic updates or store-managed installation should not pick this project, because loading is manual and files must be reloaded by hand after edits.
project readme (upstream, from github) — read inline
爪爪 · PawWork

Treat the already-logged-in Chrome as a programmable computer. 爪爪 is the agent on that machine.
爪爪 · 完全解放版 (PawWork_ZhuaZhua) is a Chrome MV3 unpacked extension. It runs a side-panel agent that can drive the current tab (action), execute guest JS against the browser (sys inside run), and keep sheet / Univer doc / site HTML artifacts in the session.
Not on the Chrome Web Store. No hosted model — bring your own key.
Load it
- Clone this repo, or download a Release zip
- Chrome →
chrome://extensions → Developer mode → Load unpacked → select the folder (manifest.json is at its root)
- Open the side panel → paste an OpenAI-compatible API key (BYOK; stored in
chrome.storage.local) → send a task on a normal http(s) page
After editing files, click 重新加载 on the extension card. There is no package.json and no build step.
Needs Chrome 135+. On Chrome 138+, enable Allow User Scripts on the extension details page if you want sys.eval or page-identity fetch. Close DevTools on the target tab before using sys.cdp (otherwise CDP_BUSY). Restricted pages such as chrome:// and the Web Store return NEED_PAGE.
Tests
node --test tests/runtime-regression.test.mjs # pure Node, no browser
node tests/browser-smoke.cjs <path-to-playwright> # loads the real extension
Architecture
Side panel → service worker → offscreen SessionWorkspaceService → AI SDK ToolLoopAgent. Process layering, domain objects, tool contracts, and the unimplemented boundaries are documented in AGENTS.md and the nested AGENTS.md files under src/.
Release packaging: python scripts/pack_extension.py --zip dist/pawwork.zip.
License
MIT. Third-party components: THIRD_PARTY_NOTICES.md.