Edit the global ~/.dsh/AGENTS.md rules from the web settings panel, live on save.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-global-rules
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:badai147/dsh-global-rules
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
English | 中文
Edit your user-global rules file $DSH_HOME/AGENTS.md (default ~/.dsh/AGENTS.md) from the DeepSeek Harness web settings panel.

Features
- A new Global rules settings tab (labelled 「全局规则」): opening it loads the current content of the global rules file and shows the path it resolved to
- Path resolution matches the harness: a non-blank
$DSH_HOMEwins, otherwise~/.dsh(the same rule the built-indsh-agent-instructionsfollows, so you always edit the file that is actually in effect) - Edit and save with immediate effect: new sessions use the new rules on their first step; the current session picks them up after its next file operation (handled by DSH's built-in
dsh-agent-instructionschange detection) - Saving creates the file when it does not exist yet
- Zero build: the client half is a hand-written
__ModuleLoader__bundle, the host half is plain Node ESM
Requirements
- DeepSeek Harness (
dsh) with thewebprofile - No extra runtime dependency: the plugin ships only
lib/,cordis.patch.yml,icon.svg, andlocale/*.json
Install
dsh plugin --profile web add dsh-global-rules
Installing from the GitHub source (alternative):
dsh plugin --profile web add github:badai147/dsh-global-rules
Restart dsh web, then open Settings → Global rules.
Usage
- Open Settings → Global rules
- Edit the rules (Markdown, the same syntax as
AGENTS.md) - Click Save
After saving:
- New sessions read the new content on their first step, so it applies immediately
- The current session: after the next filesystem tool call, DSH detects the change and injects "Updated instructions from: ~/.dsh/AGENTS.md", and the model follows the new rules
How it works
- Host (
lib/index.js): registers the exact Fetch routeGET/POST /api/global-rulesthroughctx.connection.fetch.register(read the file / write the file, 256 KiB limit). It rides Connection's/apichannel, so it lands inside the Host/Origin fence and browser authentication with no hand-rolled same-origin check - Client (
lib/client.js): a hand-writtenwindow.__ModuleLoader__.loadbundle that registers the Global rules page undersettings.section - Effect mechanism: DSH's built-in
dsh-agent-instructionsplugin covers dynamic detection for theuser-globalscope, so this plugin needs no hot-reload of its own
Project structure
dsh-global-rules/
├── cordis.patch.yml # bundle patch: inserts the global-rules layer
├── icon.svg # plugin icon shown on the Plugins page
├── lib/
│ ├── index.js # Host: exact /api Fetch route (Node ESM)
│ └── client.js # Client: settings panel UI (__ModuleLoader__ bundle)
├── locale/
│ ├── en.json # plugin title and description (English)
│ └── zh.json # plugin title and description (Chinese)
├── .github/workflows/
│ └── publish.yml # npm publish on version tags
└── package.json
Changelog
Release notes live in CHANGELOG.md (中文).
Contributing
Bug reports, feature requests, and pull requests are welcome — see CONTRIBUTING.md (中文) for the development setup, project conventions, and commit rules.
License
Links
More in this category
yjh051108/dsh-routing-suite★ 7015
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★ 3783
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★ 1440
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★ 552
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★ 272
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.