mirror of
https://github.com/Tencent/BrowserSkill.git
synced 2026-09-10 13:01:23 +08:00
fix(dsh-plugin-browserskill): register the lazy suite from any fiber
Cordis contexts are fiber-owned: assigning onto an Object.create() overlay of the apply-time context fails with 'cannot set property tools in multiple fibers' when the reveal fires from the tools/result listener fiber (caught by the e2e: the skill invocation matched but the suite never registered). registerTools now tracks disposers through a plain closure over the captured context — no context mutation anywhere. Also documents lazyTools in the README and hardens the reveal against a failed registration (log and stay hidden instead of latching). Verified end to end against the real stack: first request carries 0 browser_* schemas (skill catalog entry only); after the scripted skill invocation the next request carries exactly the 11 browser_* tools and browser_session_start dispatches for real.
This commit is contained in:
@@ -82,8 +82,17 @@ All fields are optional and validated through the plugin's Schemastery `Config`:
|
||||
# observationEnabled: true # live PiP/overlay observation (below)
|
||||
# thumbnailIntervalMs: 1500 # frame cadence while a session is active
|
||||
# idleIntervalMs: 8000 # idle cadence / recent-activity window
|
||||
# lazyTools: true # reveal browser_* tools only after the skill is invoked
|
||||
```
|
||||
|
||||
- **`lazyTools` (default `true`)** — the final progressive-disclosure stage: the eleven
|
||||
`browser_*` tool schemas stay OUT of the system prompt (zero schema tokens) until the
|
||||
`browser-skill` skill is actually invoked — the skill catalog entry is the only
|
||||
advertisement. One successful invocation (model tool call, or a `/browser-skill` user
|
||||
gesture) registers the whole suite for the rest of the process; repeated invocations are
|
||||
no-ops, and sessions resumed with a past invocation in their durable log reveal the suite
|
||||
on entry. Set `false` for the legacy always-on registration.
|
||||
|
||||
## Observation overlay (PiP mini-window)
|
||||
|
||||
When the plugin runs inside the dsh Web UI, an **observation overlay** floats over the app
|
||||
|
||||
Reference in New Issue
Block a user