DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Agent Hints — DSH Plugin for DeepSeek Harness
← Plugins
A

dsh-agent-hints

Agent Hints

Per-request serving-intent hints for DeepSeek Harness (dsh): an independent chat-completions provider route (deepseek-hint) carrying the X-Agent-Hint HTTP header (UTF-8 JSON, base64url) on every main-line model request

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:evan7ang/dsh-agent-hints#83ffebbfdd5ec9705690e845596b4bdb0b8a4ca0
READMECompatibilityVersions

Compatibility and provenance

Agent Hints is published as dsh-agent-hints and currently resolves to version 0.2.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
github
Registry updated
10/13/2026

Versions

0.2.0stable
10/13/2026

Related plugins

Loading related plugins…

Latest
0.2.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
any
License
Apache-2.0
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
10/16/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in

Related plugins

More verified plugins in models-usage.

Whale Widgetdsh-whale-widgetDeepSeek balance whale widget in the bottom-right corner of the DSH Web interface: balance/today’s usage/peak-off-peak pricing, customizable bubble click sequence (text/balance/today/peak-off-peak/image/random phrases and parallel weighted selection), per-line styles and fonts, floating quick editinClient Ui Model Capabilities@linxin666/dsh-client-ui-model-capabilitiesPer-model capability declarations (image input and reasoning efforts) for custom pi-ai providers, edited in place on the Models settings cards; writes the official llm-pi-ai settings namespace, no DSH source changes.Cost Meterdsh-cost-meterDeepSeek Harness session cost statistics plugin: current session cost, today’s charges, historical records, and synchronization with official pricing; supports multi-provider, multi-model price calculation (built-in pricing catalog for 170+ model IDs with automatic matching); queries and displays suCodex Subscriptiondsh-codex-subscriptionUse ChatGPT and Codex subscriptions in DeepSeek Harness with OAuth, quota, safe resets, web search, images, and Fast mode

README

dsh-agent-hints

Per-request serving-intent hints for DeepSeek Harness (DSH): every main-line model request carries a structured AgentHint on the X-Agent-Hint HTTP header (UTF-8 JSON, base64url) — session identity, agent status, priority, and cache control — so a serving engine (your inference gateway) can observe and act on what the agent is doing, per the "agent signals, engine consumes" pattern (the same family as NVIDIA Dynamo Agent Hints).

The plugin registers an independent provider route deepseek-hint backed by its own chat-completions adapter. The official deepseek-official route stays mounted and remains the fallback; deployment switches via agent-default-model.provider. Zero harness source modification, zero harness runtime dependencies (cordis is touched as a structural duck type only).

English | 中文

How it works

The harness LlmAdapter contract is thin (only stream() is required), and the official adapter builds its HTTP headers inline with no extension point. This plugin therefore ships a self-contained adapter that implements the contract structurally and adds one header:

POST {baseURL}/chat/completions
authorization: Bearer …
content-type: application/json
x-deepseek-harness-session-id: session-…          ← identity signal, aligned with the official adapter
x-agent-hint: eyJzZXNzaW9uIjp7InNlc3Npb25faWQi…   ← base64url of a UTF-8 JSON AgentHint

The request body stays in the provider's original chat-completions format and never carries hint fields. To an endpoint that does not understand the header, it is a harmless unknown header.

This differs from static header-injection approaches (e.g. wrapping fetch to set fixed headers like a user-agent): here the hint value is derived per request from the session's durable event log (call index, compaction epoch, last tool result time) and the session lineage — there is nothing static to configure.

Header emission rules

  • Main-line requests only: auxiliary calls (compaction, session-title purposes) and requests without a session identity carry no hint.
  • strict_priority is never sent by an agent (trusted-control-plane field).
  • prediction is not sent in v1 (it requires an observation statistics engine).
  • Session identity mirrors the official adapter: x-deepseek-harness-session-id (when a session id exists) and x-deepseek-harness-compact: 1 (on compaction) are sent as-is.

The X-Agent-Hint payload

{
  "session": {
    "session_id": "session-…",
    "agent_type": "agent",
    "call_index": 7,          // derived from the session's durable log (step/start count); restart-safe
    "epoch": 0                // derived from compaction/end count; restart-safe
    // "parent_session_id" / "derivation": {"relation": "spawn"|"fork", "join": "sync"|"async"} — lineage sessions only
  },
  "agent_status": { "state": "running", "state_since_ms": 1760000000000 },
  "priority": { "level": 3, "reason": "user_waiting" },          // configured; null omits
  "cache_control": [{ "type": "pin", "range": { "end": 1 } }]    // configured; null omits
}

Out-of-band status events (tool → running → finalize per working session, incl. awaited tool names and call ids) are reported to the optional statusSink (local JSONL file); the emit() seam is where a gateway client takes over.

Install

Built JS is committed to this repository (lib/), so installing from GitHub needs no build-script permission:

dsh plugin add github:evan7ang/dsh-agent-hints

Pin a commit for reproducibility: dsh plugin add github:evan7ang/dsh-agent-hints#<sha>. An npm package (dsh plugin add dsh-agent-hints) is planned but not yet published.

Configure and deploy

The plugin is inert until you point it at an upstream. Override the agent-hints row in your profile's cordis.patch.yml (later layers replace the row's entire config value, so restate every key you need):

- id: agent-hints
  config:
    baseURL: https://your-gateway.example.com
    apiKeyEnv: MY_GATEWAY_KEY

Then switch the model route:

# $DSH_HOME/settings.yaml
agent-default-model:
  provider: deepseek-hint
  model: deepseek-flash

The API key resolves per request: credentials service first ($DSH_HOME/.credentials.yaml / Models page), then the environment variable named by apiKeyEnv — the same order as the official adapter.

Configuration reference

FieldTypeDefaultDescription
baseURLstring— (required)Upstream base; every chat request posts to ${baseURL}/chat/completions
apiKeyEnvstring— (required)Environment-variable name resolved per request
agentTypestringagentReported as session.agent_type
priority{level, reason} or null{level: 3, reason: "user_waiting"}Soft priority; null omits the field
cacheControlarray or null[{type: "pin", range: {end: 1}}]Cache control entries; null omits
thinking"enabled" / "disabled"enableddisabled limits every conversation request to off
reasoningEffort"off"/"low"/"high"/"max"highDefault reasoning effort when a request carries none
models{id, name, contextWindow, maxTokens}[]DeepSeek-V4 family catalogAdvisory model catalog for resolveModel; provide real limits when pointing at your own gateway (they feed compaction decisions)
defaultContextWindowpositive integer1000000Context window assumed for models absent from the catalog
defaultMaxTokenspositive integer256000Per-request output cap materialized when callers omit one
statusSinkstringunset (channel off)Local JSONL path for out-of-band status events
subagentToolNamesstring[]["subagent"]Tool names treated as subagent delegation for and status naming

Invalid config aborts composition at load time with a field path — request-time hint construction has no failure path.

Known limits (v1)

  • Chat-completions wire only; subset: text + tools + thinking + usage + abort. Image/file content is rejected explicitly (UNSUPPORTED_CONTENT), never silently degraded.
  • The protocol subset must be kept in sync with the official adapter manually (the deployment target is your own gateway, so the subset is under control).
  • call_index/epoch/state_since_ms are derived from the session's event log and depend on harness event semantics (step/start precedes dispatch; auxiliary calls do not count as loop steps).
  • derivation.join reads the parent's most recent delegating tool call — parallel delegations share the latest value (accepted approximation).
  • Switching providers back to deepseek-official silently drops hints; the e2e wire assertions below are the safety net.

Development

npm install
npm run build        # src/ → lib/ (built JS is committed)
npm test             # node --test against the built JS
e2e/run.sh           # keyless wire e2e: local SSE capture stub + hinted route + report assertions

The e2e resolves the dsh runtime from DSH_BIN, PATH, or a deepseek-harness checkout (DSH_CHECKOUT or the sibling directory).

License

Apache-2.0

derivation.join