dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH Dot: a persistent read-only-first proactive agent for DeepSeek Harness, with user-approved execution.
A persistent, read-only-first proactive agent for DeepSeek Harness, with user-approved execution.
dsh-dot-plugin is a DSH plugin that gives DeepSeek Harness a real Dot: its own durable Agent Session, a read-only research phase, independent risk review, user-only approvals, and a tightly-scoped execution phase.
It is inspired by the capability model of OpenAI's Dots, but it is an independent open-source project. It is not affiliated with, endorsed by, or connected to OpenAI, and it does not attempt to reproduce OpenAI's hosted cloud computer or 4,000+ app marketplace.
Most agent plugins are reactive: they answer, then stop. Dot is designed to keep a thread of work alive:
The ordinary conversation you use to code is not intercepted. Dot has its own Session and its own tool policy.
Capability · How it works Persistent Dot Agent · A top-level Agent/Session resumed from durable state; title Dot Task orchestrator · Dot creates tasks, assigns real worker Agents, tracks status, handles approvals, and lets the user switch focus Native Dot workspace · The Dot Session plus a right rail for status, approvals, tasks, schedules, triggers, recent outputs, and sources Read-only research · Global tool allowlist + a scoped, monotonic tools.guard() Real sources · Local directories, public/API URLs, and read-only MCP tools Proposals · dot_propose_action writes a durable proposal; it never executes Independent risk review · A separate small model classifies every proposal; the proposing model does not grade itself User-only approval · DSH panel and /dot slash command; no Agent Tool can approve a proposal Scoped execution · An approved execution turn receives only that proposal's tools Task tracking · dot_add_task / dot_update_task; progress comes from real evidence DSH schedules · dot_schedule_task uses the Host schedule service, not a private cron loop Event triggers · dot_register_trigger + local webhook/service entry point No global rule hijack · Rules apply to Dot only, not to the user's other Sessions Result attribution · Execution results are read only from the execution turn, and interrupted turns are marked failed
┌─────────────────────────────┐
│ DSH Host │
│ │
user approval ──────▶│ DotRuntime │
(panel or /dot) │ ├─ Dot Agent/Session │
│ ├─ read-only research │
│ ├─ proposal store │
│ └─ execution allowlist │
│ │
sources ────────────▶│ read / glob / grep │
(directory/URL/MCP) │ web_search / web_fetch │
└──────────────┬──────────────┘
│ DSH slots
┌──────────────▼──────────────┐
│ Client panel │
│ sidebar icon + main panel │
│ proposals / tasks / status │
└─────────────────────────────┘The Dot Agent is created with the standard DSH preset, then a Dot-scoped prompt section and scoped tools are added.
read, glob, grep, web_search, web_fetch.tools.restrict() when possible.tools.guard() denies any other call even if a preset-scoped tool is not filtered by the global restriction.dot_schedule_task, dot_add_task, and dot_register_trigger are internal bookkeeping tools and remain available during research.dot_propose_action records:
execution_tools (for example ["write"]);execution_instruction.A separate Reviewer asks a small model for a risk verdict (low / medium / high) with a reason. User rules are applied after that. The default configuration does not auto-approve even low-risk proposals; opt in with autoApproveLowRisk: true.
Approval is user-only. On approval:
executionTools plus read / glob / grep;High-risk actions such as send, publish, pay, delete, invite, or credential access are expected to be proposed as drafts or preparatory steps. The user can reject them, or configure stricter rules.
dsh web profileThe plugin was tested against the DSH 0.2.1-rc.2 family.
git clone https://github.com/1315577677/dsh-dot-plugin.git
cd dsh-dot-plugin
pnpm install
pnpm build
pnpm testThen install the local bundle with DSH's Plugin Manager:
plugin_manager install_bundle target=/absolute/path/to/dsh-dot-pluginOr install it from the DSH Plugin Manager UI by choosing the local bundle directory.
The Host half activates immediately. The Client half (sidebar icon + panel) is part of the web boot graph, so fully quit and reopen DSH Desktop after installing or replacing the Client bundle. A browser-style page refresh is not available in the Desktop shell.
After reopening, the sidebar shows DSH Dot and the Dot Session appears in the Session list.
The default cordis.patch.yml intentionally contains no machine-specific sources. Add real read-only sources under the config.sources list and reinstall the bundle (or override the row in your profile patch).
- insert:
- id: dsh-dot-plugin
name: 'dsh-dot-plugin'
config:
enabled: true
agentPreset: standard
dotWorkspace: '/absolute/path/to/workspace'
sources:
- id: inbox
kind: directory
label: Local inbox
path: '/absolute/path/to/inbox'
readOnlyTools: [read, glob, grep, web_search, web_fetch]
executionTools: [write, edit]dotWorkspace is the Dot Session's cwd and the workspace used by the file sandbox. It should contain the files you want Dot to be able to write after approval.
sources:
- id: github
kind: url
label: GitHub issues
url: 'https://api.github.com/repos/owner/repo/issues?state=open&per_page=10'Dot uses web_fetch for URL sources.
Connect Gmail, Google Calendar, Slack, GitHub, or another app through DSH's MCP support, then expose only read tools to Dot:
sources:
- id: mail
kind: mcp
label: Gmail read-only
tools: [gmail_search, gmail_read]
readOnlyTools:
- read
- glob
- grep
- web_search
- web_fetch
- gmail_search
- gmail_readThis plugin does not embed OAuth credentials, app passwords, or a vendor connector. The MCP server owns authentication and the tool surface; DSH owns the tool registry.
The repository includes realistic sample files in dot-demo/inbox/. To try the plugin:
dotWorkspace to the repository root;/dot-demo/inbox;The included dot-demo/outbox/ starts empty; files appear only after an approved execution.
Key · Default · Description enabled · true · Enable the Dot runtime initialDelayMs · 20000 · Delay before the first research round researchIntervalMs · 300000 · Research heartbeat agentPreset · standard · Preset mounted into the Dot/worker Agents; supplies read/web tools orchestrator · true · Enable the task supervisor/worker model; set false for legacy research maxWorkers · 2 · Maximum concurrent worker Agents workerMaxTurns · 3 · Follow-up turns per worker workerTimeoutMs · 900000 · Worker turn timeout workerStageMaxBytes · 1048576 · Max size of one staged file dotWorkspace · profile default · Dot Session cwd / write sandbox root sources · [] · Directory, URL, or MCP sources readOnlyTools · [read, glob, grep, web_search, web_fetch] · Global tools available during research executionTools · [write, edit] · Tools a proposal may request for execution reviewProvider · current default · Small-model provider for risk review reviewModel · current default · Small-model model for risk review reviewTimeoutMs · 20000 · Risk review timeout rules · built-in defaults · { action_pattern, decision: allow \ · ask \ · deny } autoApproveLowRisk · false · Auto-run proposals that are both rule-allowed and low risk maxProposalsPerRound · 3 · Proposal cap per research turn stateDir · /data · Durable plugin state directory
Rules are regular expressions tested against the proposal's action type, title, outcome, execution instruction, and tools.
Set orchestrator: true to turn Dot into a task coordinator:
config:
orchestrator: true
maxWorkers: 2
workerMaxTurns: 3
dotWorkspace: '/absolute/path/to/workspace'In this mode:
read, glob, grep, web_search, web_fetch, or generic shell tools; all source evidence comes from workers.dot_assign_worker starts a separate DSH worker Session, or queues the task when maxWorkers is full..dsh-dot/staging//.coordinating; worker failure moves it to blocked.dot_focus_task / clicking a task in the right rail changes priority, never cancels other tasks.task_id; approvals and execution results become task events.running task with no active worker, so the supervisor does not need to cancel and recreate a task after a status transition.blocked/interrupted, never falsely running.Workers do not receive generic write, edit, or bash; they do not receive approval or task-management tools. Real workspace writes still require a user-approved proposal.
Legacy mode: with orchestrator: false, the v0.2 read-only research + proposal + approved-execution behavior remains available.
The primary surface is the Dot conversation itself, not a separate chat page:
Dot Session from the Session list.The same approval path is in the rail and in the full control panel:
orchestrator: false);This is a native DSH layout: the center is the real DSH conversation, the right column is a DSH sidebar tab, and the left remains the normal Session/project list. It deliberately does not imitate a separate hosted Dot desktop with a cloud computer, Slack calls, or voice.
Open DSH Dot from the sidebar icon for the larger control panel:
/dot commandFor environments where the panel is not loaded yet, the same approval path is available as a user command:
/dot
/dot status
/dot approve <n|proposal-id>
/dot reject <n|proposal-id>
/dot runA slash command is submitted by a human; no Agent Tool can invoke it.
Register a trigger with the Dot tool or directly through the service:
const dot = ctx.get('dshDot')
await dot.fireTrigger(triggerId, {
from: 'alerts@example.com',
subject: 'urgent: production review',
})Local HTTP entry point:
curl -X POST http://127.0.0.1:<dsh-port>/dsh-dot/trigger \
-H 'content-type: application/json' \
-H 'x-dsh-dot: 1' \
-d '{"triggerId":"trigger_...","payload":{"subject":"urgent"}}'A trigger only wakes Dot for read-only investigation. It does not execute the instruction directly.