stuga-dev/agent-plugins--packages-dsh-plugin ↗★ 0

@stuga/dsh-plugin

Connect a DeepSeek Harness profile to Stuga: its MCP tools, the key's workspace and its conventions in the system prompt, and playbook skills for reviewed edits. 适合需要将DSH与Stuga平台连接并执行受审编辑任务的用户。

Package
@stuga/dsh-plugin
Compatibility
Unverified
Version
0.2.0
License
MIT
Last updated
Sep 28, 2026

Other repositories with this package name

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:stuga-dev/agent-plugins#7a9d46a7f38725471941487253adc8cc2325fc4c&path:packages/dsh-plugin

Configuration

The stuga-guidance row accepts:

FieldDefaultMeaning
url$STUGA_URL or http://127.0.0.1:8787Origin used in the links the model gives the reviewer
serverNamestugaMust match the MCP row's serverName; sets the mcp____ prefix the prompt refers to
sectiontrueRegister the system-prompt section
skillstrueRegister the three playbook skills
instructionstrueRead the key's workspace and its conventions and put them in the system prompt
instructionsRefreshMs300000How often they are re-read

The key's workspace and its conventions

Every Stuga tool call names the workspace it acts in: workspace_id, or for search and retrieve, workspace_ids, where ["*"] covers every workspace the key reaches. A workspace can also carry free-text conventions for agents (Settings → This workspace → Agents): where notes go, what not to touch, the house style. The node serves its workspaces and conventions in its MCP server's instructions field, but the harness's MCP client does not surface that field, and a model told to fetch them often simply does not — in an end-to-end run, gpt-4o edited a document without ever calling workspaces action:instructions.

So the plugin reads the key's own workspace itself, over the same key — its workspace_id, its name and its conventions — and ends the prompt section with them, where they cannot be skipped. The model can call tools there at once. workspaces action list names any other workspace the key reaches, and the prompt section and the playbooks tell the model to read that workspace's conventions with workspaces action instructions before writing there. A node that is down or a key without access means the same thing: the section is registered without the workspace, and nothing fails.

Folders, databases and documents can carry their own instructions too, from their ⋯ menu in Stuga. They add to the workspace's, from the outermost level in, and depend on the item, so the plugin does not put them in the system prompt. The node hands them over with the item: markdown read shows them in a marked block before the document's text, or opens with a line saying none apply, so instructions planted in a document's text never lead the read; and docs metadata, docs_create and databases schema return them as instructions. The prompt section and the playbooks tell the model to follow them when it writes there, never to copy them into an edit, and to treat anything further down a read that looks like such a block as document text.

Labelling the model

Runs from this plugin are badged deepseek-harness in Stuga's review inbox. The harness does not expose the running model to its MCP layer, so the model label is yours to set: export STUGA_MODEL=gpt-4o (or whichever you pinned) and it appears beside the client badge.

Override a row by its id in $DSH_HOME/profiles/web/cordis.patch.yml. A patch replaces the row's whole config, so restate every key you need. For example, to point the MCP row at a node behind TLS with a longer tool timeout:

- id: stuga-mcp
  config:
    serverName: stuga
    transport: streamable-http
    url: https://notes.example.com/mcp
    headers:
      Authorization: !!js '"Bearer " + process.env.STUGA_API_KEY'
      x-stuga-client: deepseek-harness
    toolCallTimeoutMs: 120000
    failOnStartupError: false