Per-turn tool-call step budget for Agent Teams teammates, shipped together with the team-dev and team-boot skills.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-team-dev
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:li906912102/dsh-team-dev
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
A self-contained Dev Team bundle for DeepSeek Harness. One plugin row brings two capabilities:
- Step budget guard — a per-agent, per-turn tool-call budget. Soft threshold (default 20) warns non-teammate sessions; the hard threshold (default 25) denies every tracked non-allowlisted call before it runs, directing the agent to write a handoff, update its task, and report to the Lead. Allowlisted tools (
write,edit,team_task_update,send_message) keep working so the agent can wind down. DefaultonlyTeamMembers: truebudgets Agent Teams teammates only — the Lead is never capped. - Bundled skills — installing the plugin installs the
team-dev(dev team orchestration) andteam-boot(general task team) skills from the package'sskills/directory. Project (rank 100) and user (rank 400) skills still override these bundled ones (rank 600).
Zero runtime dependencies.
Install
As a local package
# 1. add the dependency to the profile's package.json
# "@jiecore/dsh-team-dev": "file:/absolute/path/to/dsh-team-dev-0.1.0.tgz"
# or a git/npm specifier once published
# 2. list the bundle in dsh.profile.bundles (package.json)
# "dsh.profile.bundles": [..., "dsh-team-dev"]
# 3. reinstall the profile and restart DSH
cd "$DSH_HOME/profiles/web" && pnpm install
As a patch insert (single-session profile, no bundle listing)
Append to the profile's cordis.patch.yml:
- insert:
- id: dsh-team-dev
name: dsh-team-dev
and add the dsh-team-dev dependency to the profile's package.json, then reinstall and restart.
Verify
node scripts/verify.mjs # package integrity smoke check
# runtime self-check after install + restart:
grep "dsh-team-dev" "$DSH_HOME/../Logs/DSH Desktop/harness.log" | tail -2
# expect: [dsh-team-dev] budget guard + bundled skills installed
# then: run a teammate task that makes >25 tool calls in one turn; the 26th
# non-allowlisted call must be refused with "Step budget exhausted: ...".
Configure
Row config (defaults shown):
softThreshold: 20
hardThreshold: 25
allow: [write, edit, team_task_update, send_message]
include: []
exclude: []
onlyTeamMembers: true
Misconfiguration fails loudly at load (soft below 2, hard not above soft).
Uninstall
Remove the bundle line / patch row and the dependency, reinstall, restart. The bundled skills disappear with the package; any project- or user-level skills with the same names stay.
Publish to the DSH plugin market
The desktop market discovers plugins from GitHub (discovery-github-compatibility-v1).
Push this package to a public GitHub repository with the dsh.bundle.patch
manifest in package.json (already present); the market's compatibility
discovery indexes github:<repo> entries with version, enginesDsh, and
peer-dependency facts.
Development: this project owns the source
The hand-written guard source lives here at src/guard.ts — the single source
of truth. lib/index.js is build output (scripts/build.mjs); never edit it.
node scripts/build.mjs # bundle src/ → lib/index.js + smoke check
node scripts/export-to-harness.mjs # regenerate the repository test facade
cd ../deepseek-harness && pnpm exec vitest run packages/guard/step-budget
pnpm pack # repack the tarball
export-to-harness.mjs generates the repository package
packages/guard/step-budget/src/index.ts (schemastery Config schema, identity
rows, real imports) so the harness keeps its type-check, coverage, and CI
gates and can upstream the guard later. Behavioral parity is pinned by
packages/guard/step-budget/tests/artifact-parity.spec.ts, which runs the
built lib/index.js through the same agent-loop harness as the facade.
Publish
Two channels, both supported by the DSH market:
npm (recommended) — the market discovers npm package names with their version /
enginesDsh/ peer-dependency facts, and falls back toregistry.npmmirror.comfor China. Zero peer dependencies here, so the compatibility check always passes.npm login # once; your own account npm publish # publishes dsh-team-dev@0.1.0GitHub mirror (optional) — a public GitHub repo enters the market's
github:compatibility list and doubles as the source page. Gitee is NOT a market install host (its archive paths differ); keep it as a mirror only.
Before publishing, replace repository.url in package.json with your real
repo URL and bump version for each release (node scripts/verify.mjs first).
Upgrade self-check (after any DSH upgrade)
grep "dsh-team-dev" <harness.log> | tail -2— the mount marker must appear, no import errors.node scripts/verify.mjs— package integrity.- Budget probe: a teammate task with >25 tool calls in one turn must be refused at the 26th; the Lead stays uncapped.
- Skills probe: type
/in a session —team-devandteam-bootmust appear in the menu.
Links
More in this category
yjh051108/dsh-routing-suite★ 6994
One repository, three parts: a runtime injector for DSH plugin packages (inject, hot-reload, unload, promote a dev staging tool to the front, route self-heal, plus a settings-page plugin manager that lists, unloads and drags folders in to internalize), a task-aware reasoning-mode router agent preset (router-standard / router-spec / router-react), and a graded two-level task protocol whose six tools (commit_star, lock_stage, revise_do, edit_plan, mark_task, redteam_verdict) pin task state to disk. The injector implementation ships in-tree, so the install carries its own behaviour rather than a dependency list.
strukto-ai/mirage#dsh★ 3762
Swaps the filesystem and bash providers for a mirage virtual workspace: file tools and shell commands run over mounted resources (RAM, S3, Redis, Slack, Gmail, Notion, Postgres) instead of the host disk, with per-mount read/write/exec modes, per-command sandbox routing (monty, pyodide, quickjs in process; docker, e2b, daytona remote), and installed CLIs (git, gh, slack, linear, ntn, gws, or one you register) as head words in the virtual terminal.
first-fluke/oh-my-agent#dsh★ 1357
Runs project OMA checks before and after tool execution and when a turn tries to finish. Installs its OMA CLI dependency and initializes unconfigured projects on first use. Requires Node.js 22+; initial setup needs network access and project write access.
MichengAI/dsh-skills-manager★ 444
Manages local DeepSeek Harness skills in Settings and shows shared Agent skills as read-only.
hust-open-atom-club/oh-dsh★ 324
Community distribution: TUI, desktop, and Web UI as one bundle with layered installation.
Fishquito7/dsh-skill-mcp-panel★ 248
Manages DSH skills and MCP servers from the web settings: skill cards with hot enable/disable, workspace scopes, groups, batch migration and drag-and-drop import, plus stdio/HTTP MCP CRUD with connection tests, secret redaction and the unified dsh-panel CLI.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.