DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Agent Hints — DeepSeek Harness 插件(DSH Plugin)
← Plugins
A

dsh-agent-hints

Agent Hints

DeepSeek Harness (dsh) 的每次请求服务意图提示:独立的 chat-completions 提供商路由(deepseek-hint),在每次主模型请求中携带 X-Agent-Hint HTTP 标头(UTF-8 JSON、base64url)

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:evan7ang/dsh-agent-hints#83ffebbfdd5ec9705690e845596b4bdb0b8a4ca0
README兼容性版本

兼容性与来源证明

Agent Hints 以 dsh-agent-hints 发布,当前版本为 0.2.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/10/13

版本

0.2.0stable
2026/10/13

相关插件

正在加载相关插件…

最新版
0.2.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
Apache-2.0
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/16
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

继续浏览 models-usage 分类下经过校验的插件。

Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义Client Ui Model Capabilities@linxin666/dsh-client-ui-model-capabilities为自定义 pi-ai 提供商声明每个模型的能力(图像输入和推理力度),可直接在 Models 设置卡片中编辑;写入官方 llm-pi-ai 设置命名空间,不更改 DSH 源代码。Cost Meterdsh-cost-meterDeepSeek Harness 会话费用统计插件:本会话成本、当日费用、历史记录与官方价格同步,支持多厂商多模型价格计费(内置 170+ 模型 ID 价格目录与自动匹配)、主流 Coding Plan 订阅额度查询与显示(13 家,含 OpenDesign 工作区查询、含小米 MiMo Token Plan 控制台 Cookie 查询、SCNet Token Plan 本地 Credits 计量与火山方舟 Volcano Ark Coding Plan AK/SK 签名查询)、自定义 Provider Codex Subscriptiondsh-codex-subscription通过 OAuth 在 DeepSeek Harness 中使用 ChatGPT 和 Codex 订阅,支持配额管理、安全重置、网页搜索、图像和快速模式

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