# 爪爪 · PawWork
[](LICENSE)
[](manifest.json)
[](#load-it)
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
1. Clone this repo, **or** download a [Release zip](https://github.com/Player-YN/PawWork_ZhuaZhua/releases)
2. Chrome → `chrome://extensions` → Developer mode → **Load unpacked** → select the folder (`manifest.json` is at its root)
3. 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
```text
node --test tests/runtime-regression.test.mjs # pure Node, no browser
node tests/browser-smoke.cjs # 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](AGENTS.md) and the nested `AGENTS.md` files under `src/`.
Release packaging: `python scripts/pack_extension.py --zip dist/pawwork.zip`.
## License
[MIT](LICENSE). Third-party components: [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).