dshkit

Plugins

The DeepSeek Harness plugin layer: Cordis bundles, patch layers, permissions, and building your own capability plugins.

7 articles

Loop guards in DeepSeek Harness: timeouts and the repeat-tool reminder

Two plugins that stop an agent burning budget in a loop — a zero-config tool-call timeout enforcer reading each tool's declared timeoutMs, and an advisory repeat detector that nudges rather than blocks. Config, chain semantics and why cooperative cancellation is not a kill.

2026-08-145 min

The DeepSeek Harness sandbox: modes, backends and what it does not protect

How dsh confines process execution — the three sandbox modes, per-session overrides as log events, the bwrap/Landlock/Seatbelt/Windows-ACL backends, fail-closed behaviour, and the partial-enforcement limits the project documents honestly.

2026-08-145 min

The DeepSeek Harness workflow engine: contract, error codes and Ralph config

ctx.workflowEngine runs model-authored orchestration scripts over sub-agents. The start request, the run and result contracts, observe-only events, the nine WorkflowError codes, and every tunable on the ralph tool.

2026-08-145 min

Add a custom model provider to DeepSeek Harness

Register an OpenAI-compatible gateway, self-hosted endpoint or third-party model in dsh: the settings.yaml shape, what apiKeyEnv means, declaring model capabilities, and why the provider ID is permanent.

2026-08-133 min

“Everything is a plugin”: the Cordis architecture behind DeepSeek Harness

What the plugin-kernel claim actually means in dsh — bundles as distributable config rows, the dsh-base foundation, how plugins are resolved and installed, and why the UI itself is swappable.

2026-08-134 min

Patching plugin config in DeepSeek Harness: the config catalog explained

How to change a plugin's settings in dsh — find the row identifier in the config catalog, target it from cordis.patch.yml, and verify the composed result. With real package IDs and patch YAML.

2026-08-133 min

Write your first DeepSeek Harness plugin

A dsh plugin is a Cordis plugin with named exports. The module contract, declaring services with inject, config via schemastery, registering a tool with defineTool, appending session events, and mounting the row in cordis.patch.yml.

2026-08-137 min