deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
DSH (DeepSeek Harness) web plugin: a ZCode-style agent activity pill (top-right status capsule) plus a right-side summary drawer, toggled with Ctrl+Alt+P.
/pill/api) with full control verbs.localStorage across reloads and stays clamped to the viewport on window resize.<body data-ds-dark-theme>), so the capsule and drawer switch between the white and the dark ("moon night") scheme instantly — including system mode following the OS.roundsStarted / maxGoalRounds) and the activation state.wf, with the current phase in the tooltip), and failed jobs (red).subagent/start / subagent/end observation, since the durable listing carries none.tokenMeter, the drawer shows the session's current token pressure, surface, and signed surface delta (measured at most every 10s).workflow run (id, meta name, current phase() title, settled state) is reported under Agent and drives the capsule's busy dot and wf badge.dsh plugin --profile web add dsh-agent-pill
# restart the profile (the web composition disables host-side HMR)
| Section | Data source | Control verbs |
|---|---|---|
| Goal | goal/change session-event projection replay + live append feed (last-wins fold) |
goal.pause / goal.resume / goal.complete / goal.clear (CAS {id, revision}, requires a live agent) |
| Subagents | ctx.subagents.listDescendants (durable tree, live-preferred) + process-local subagent/start / subagent/end timestamps |
subagent.interrupt (human-parent authority; cancels a continuable child's current turn) |
| Agent | ctx.agents.get(id)?.status + agent/status events (idle / running) |
read-only |
| Workflow | workflow/start / workflow/phase / workflow/end events (most recent run, global) |
read-only |
| Jobs | ctx.jobs.list(caller) + onJobsChanged invalidation |
jobs.kill (registry stock API); jobs.output (event replay, never consumes the model's cursor) |
| Usage | ctx.tokenMeter.measure(session) (throttled to 10s) |
read-only |
All routes pass the browser-trust fence (loopback Host or trustedHosts; cross-site requests refused) and answer {ok, value} / {ok:false, error:{code,message}}.
POST /pill/api/state — {sessionId} → aggregated snapshot (goal / agent / subagents / jobs / services)POST /pill/api/goal.pause|resume|complete|clear — {sessionId, id, revision}POST /pill/api/subagent.interrupt — {sessionId, childId}POST /pill/api/jobs.output — {sessionId, id}POST /pill/api/jobs.kill — {sessionId, id, reason?}pnpm install
pnpm build # tsc host → tsc client → tsdown (lib/index.js + lib/client.js)
lib/index.js); runtime @deepseek-ai/* peers resolve from the deployment's module fallback.window.__ModuleLoader__.load({id:'dsh-agent-pill', factory}) protocol artifact (lib/client.js); platform modules external, everything else inlined.Create a junction from your profile's plugins/ directory to this package, then append to the profile's cordis.patch.yml:
- insert:
- id: agent-pill
name: 'dsh-agent-pill' # or a relative path like './plugins/dsh-agent-pill'
A patch entry must be an id-targeted override or an
insertlist — a bare- name: <package>row is skipped byapplyEntryPatches.
Restart the DSH profile after any
cordis.patch.yml/ bundles change (the web composition disables host-side HMR); client bundle changes only need a hard browser refresh.
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。