mirror of
https://github.com/Tencent/BrowserSkill.git
synced 2026-09-10 13:01:23 +08:00
Progressive disclosure, final stage: with lazyTools on (default), the eleven browser_* tool schemas stay out of the system prompt — the browser-skill catalog entry is the sole advertisement. One successful skill invocation (model tool call via tools/result, or a /browser-skill user gesture via the session append feed) registers the suite for the process lifetime, idempotent on repeats; session resume is covered by scanning durable events for a past tool/call+tool/result pair (or skill-invocation message) on session entry and at apply time. lazyTools: false keeps the legacy always-on registration. Investigation (recorded in the ticket): tools/result carries normalized name/arguments with an isError discriminant; dsh 0.1 has no official global visibility switch (ctx.tools.restrict is agent-scoped and throws from a plain context), making conditional registration the intended pattern; per-step assembly picks the new suite up on the next step, and visibility changes are first-class inputs of tool-skill's catalog digest. registerTools now returns the combined disposer via a prototype-preserving tracking overlay; the skill prelude tells the model the browser_* tools unlock on skill load. Tests: +8 (hidden-before/reveal/idempotent/gesture/history hit+miss/dispose/ scanner pairing/two-state apply wiring). 124/124 green.
56 lines
2.8 KiB
Markdown
56 lines
2.8 KiB
Markdown
# browser-skill (dsh edition)
|
|
|
|
Drive the user's **real Chromium browser** (logins, cookies, Agent Window isolation)
|
|
through this plugin's `browser_*` tools. Each tool spawns `bsk <cmd> --json` — the
|
|
same engine the canonical CLI skill documents — so the workflow, judgment rules, and
|
|
safety constraints are identical.
|
|
|
|
> **Tool availability**: invoking this skill (which you just did) makes the plugin's
|
|
> `browser_*` tools available for the rest of the session — they are injected on
|
|
> successful skill load. Until then they are deliberately hidden, so do not attempt
|
|
> a browser action before loading this skill.
|
|
|
|
## Tool ↔ CLI map
|
|
|
|
The tools below are thin, structured wrappers over the bsk CLI verbs of the same
|
|
name; `session` parameters take the 4-letter session id (no `--session` flag
|
|
spelling here):
|
|
|
|
| dsh tool | bsk equivalent |
|
|
|---|---|
|
|
| `browser_session_start` / `browser_session_stop` / `browser_session_list` | `bsk session start/stop/list` |
|
|
| `browser_navigate` | `bsk navigate` |
|
|
| `browser_snapshot` / `browser_observe` | `bsk snapshot` / `bsk observe` |
|
|
| `browser_click` / `browser_fill` / `browser_press` | `bsk click` / `bsk fill` / `bsk press` |
|
|
| `browser_screenshot` | `bsk screenshot` |
|
|
| `browser_emulate` | `bsk emulate` |
|
|
|
|
(`bsk console` / `bsk network` have no tool counterpart in this plugin yet.)
|
|
|
|
Plugin-specific semantics that override or narrow the CLI rules below:
|
|
|
|
- **Owned sessions only**: this plugin sees and acts on just the sessions IT
|
|
started via `browser_session_start`. `browser_session_list` shows only those
|
|
(with the current marker); passing a session id created by another program
|
|
(or person) sharing the bsk daemon is refused outright — never retry those
|
|
with the same id.
|
|
- **Current session**: omitted `session` parameters resolve to the most
|
|
recently started or used OWNED session. With several sessions in flight,
|
|
pass `session` explicitly to avoid surprises.
|
|
- **Screenshots**: when the model route accepts images, `browser_screenshot`
|
|
returns the PNG inline as an image attachment; otherwise it returns the
|
|
saved file path.
|
|
- **`browser_emulate mobile`**: requires `width`+`height` — the bsk daemon
|
|
refuses `--mobile` without viewport dimensions.
|
|
- **Live observation**: in the dsh Web UI, every owned session is watched by
|
|
the floating overlay (thumbnails, action, interrupt) — observational side
|
|
traffic is free and never steals your command turn; just keep acting.
|
|
|
|
The canonical CLI skill body follows verbatim (source of truth: `skill/SKILL.md`
|
|
in the BrowserSkill repo, mirrored by build into `crates/bsk-cli/skill/SKILL.md`).
|
|
Read `bsk <verb> --session <id>` as "the `browser_<verb>` tool with
|
|
`session: <id>`"; everything else — when to use, the stop-when-done rules, the
|
|
interaction loop, refs, sandbox rules — applies unchanged.
|
|
|
|
---
|