快速了解
它能做什么
一个用于受限网络恢复和安全无人值守任务续办的可选 DeepSeek Harness 插件包。
本站提供的是中文说明,不代表该项目或 Plugin 自身提供中文界面;语言支持请以上游文档为准。
deepseek-harness Profile
Not declared in supplied evidence
证据已验证
核对日期 2026/9/14 UTC 14:16
有代码证据的贡献
它为 DSH 增加什么
提供 recommended、resilient 和 unattended-safe 任务策略预设,用于恢复与严格限定的续办。
机制证据 ↗选择前先看
dsh-continue 在下游重试放弃后提供任务级恢复,并可选地处理推荐答案、二元续办确认、Plan Mode 退出和纯文本续办。其文档说明:歧义、风险、不完整或无法验证的情况会回到官方 UI;所有可执行能力默认关闭。
适合谁
希望通过明确的任务级或配置档策略处理常规低风险中断,而无需每轮值守的 DeepSeek Harness 用户。
常见任务
- 在下游恢复未处理时,重试已配置的 TIMEOUT、TRANSPORT 或 SERVER 瞬态故障。
- 为符合条件的提示选择唯一且明确标注为推荐的答案。
- 使用任务预设启用推荐答案、韧性恢复或严格限定的无人值守续办。
- 在 commands 服务可用时,通过 /continue 查看、暂停、恢复、解释或重置行为。
权限与数据
该插件包会操作 Harness 的任务/会话状态,并可选择性保留学习状态。
权限- 可向任务会话写入文档所述的 Continue 配置、控制、活动和可选学习追加事件。
- commands 服务可用时,可通过可选命令集接收 /continue 控制和配置命令。
- 决策学习默认关闭,且仅限于经过验证的、符合条件的人工选择。
- 自适应网络学习可单独配置,并按 provider、model 和 error code 隔离学习到的延迟状态。
- 项目级决策记忆为可选功能,使用可选的 @deepseek-ai/dsh-settings 依赖;文档称项目标识会被哈希。
- 与 DeepSeek Harness 及其对等依赖集成;可选集成包括 commands、settings、Plan Mode、dsh-camel 和 dsh-llm-retry。
- 提供的证据未声明凭据要求。
局限
- 需要 Node.js 20 或更高版本,以及所声明的 DeepSeek 对等依赖。
- 提供的证据未声明 Harness 版本范围。
- 未知、歧义、有风险、多选、自由文本或不完整的输入会被刻意交回官方 UI。
- 默认将 RATE_LIMIT 交给 dsh-camel;同时为该代码配置两个工具会产生所有权重叠警告。
- settings 存储不可用、只读、无效或失败时,项目存储可能降级为任务级。
DSHub 已核对
- 已验证不可变源提交、插件包清单和 Cordis patch 结构。
- 包清单声明了 0.2.2 版本、MIT 许可证、Node.js >=20、对等依赖以及 prepare/prepack 构建脚本。
- 提供的 README 说明了可选启用的默认值和任务策略控制项。
DSHub 未核对
- 尚未执行或独立验证安装、运行时行为、命令可用性、重试行为,以及与特定 Harness 版本的兼容性。
- 虽然已验证 npm 注册表身份,但未审计 npm 包内容。
固定版本安装
安装 dsh-continue
这个Plugin Bundle没有 DSH Plugin 安装操作,请根据源码文档使用真实交付方式。
维护者原文
项目 README
dsh-continue
Chinese documentation: docs/README.zh-CN.md
dsh-continue is an opt-in DeepSeek Harness plugin for safe unattended task continuation. It combines deterministic recovery after downstream retries, exact (provider, model, error-code) adaptive network learning, task-scoped configuration injection, and narrowly bounded automation for unique recommendations, binary continue prompts, valid Plan Mode exits, and plain-text continuation. It is designed for projects where transient interruptions and routine low-risk questions should not require someone to watch every turn.
The 0.2.x feature set also includes /continue status, /continue explain, pause/resume controls, durable activity and learning events, project-scoped decision memory with task-scope fallback, verified manual-decision provenance, suggest-only continuation candidates, configurable retry budgets, and fail-closed safety boundaries. Task session overrides take precedence over plugin defaults; unknown, ambiguous, risky, or unverified input is delegated to the official UI. Learning is off by default, and Continue never uses an LLM to guess what a question or error means.
Every executable capability is off by default. Installation alone changes no task interaction, retry, learning, or approval behavior.
How Continue differs from related plugins
Choose dsh-continue when the primary problem is task-level recovery and safe unattended handling of routine questions. The projects below overlap in retry or continuation terminology, but they solve different layers of the problem.
| Related plugin | Primary focus | What Continue adds or deliberately does not do |
|---|---|---|
@syncended/dsh-retry |
Generic and transient model-error retries, provider filters, exponential backoff, and Retry-After |
Continue is a task-level continuation layer: it first delegates request recovery, then handles configured network failures, recommendation prompts, binary continuation, and Plan Mode transitions. It does not replace generic model-error retry. |
dsh-client-auto-continue / dsh-auto-continue |
Web UI interruption recovery by sending a configured “continue” follow-up, with adaptive backoff, loop detection, and idempotency guards | Continue uses deterministic DSH events and structured state, does not blindly send a generic user message, and adds exact route learning, verified decision memory, recommended answers, Plan Mode handling, and fail-closed risk boundaries. |
@linxin666/dsh-chat-recovery |
Manual Web UI recovery by editing the previous message, forking a session, and retrying a failed turn | Continue automates only eligible recovery and decisions without rewriting history or forking; ambiguous or risky cases still return to the user. |
@deepseek-ai/dsh-llm-retry |
Official exact-provider agent-loop retry with durable retry events and bounded/always policies | Continue gives this lower-level retry path first refusal, then handles the higher-level network/decision workflow after it declines. It adds task policy, learning, and safety controls rather than duplicating provider retry events. |
These comparisons describe scope, not endorsements; check each project for its current release behavior. Continue never approves privileged or irreversible actions and never uses an LLM to guess what a question or error means.
dsh-camel is complementary rather than a comparison target here: install both when a project needs Camel's free-model RATE_LIMIT protection and Continue's non-rate network recovery or safe unattended decisions. By default, Camel owns rate limits and Continue owns TIMEOUT, TRANSPORT, and SERVER recovery.
Install
After the package is published to npm, add it to a profile:
dsh plugin --profile <profile-name> add dsh-continue
It can be installed with dsh-camel. No commands, settings, systemPrompt, or Plan Mode service is required for the base plugin to load; an unavailable optional service disables only its corresponding integration.
Quick start and presets
Use a task command for a one-task override:
/continue preset recommended
/continue preset resilient
/continue preset unattended-safe
The presets are ordinary task patches. They never enable learning.
| Preset | Enables |
|---|---|
recommended |
unique explicit recommended-option selection |
resilient |
transient network recovery and recommended-option selection |
unattended-safe |
resilient, binary continue confirmation, valid Plan Mode exit, and narrow plain-text continuation |
For a smaller explicit policy:
/continue set {"network":{"enabled":true},"recommended":{"enabled":true}}
/continue set {"continuation":{"enabled":true,"autoConfirmContinue":true}}
Configuration and task injection
Precedence is always:
task session override > plugin global defaults > built-in values
Set global defaults in the plugin row of cordis.patch.yml:
- id: continue
config:
defaults:
network:
enabled: true
mode: bounded
maxRetries: 5
recommended:
enabled: true
continuation:
enabled: false
A launcher, preset, or another plugin can inject an isolated policy for one task:
ctx.continue.setTaskConfig(agent, {
network: { enabled: true },
recommended: { enabled: true },
})
The patch is copied and written as a version-1 continue/config event. It survives resume and is inherited by a fork. null resets an override. Legacy version-1 config and control events remain replayable.
All input is schema- and runtime-validated. Unknown fields, invalid bounded retry policies, unsafe counts, oversized local timer delays, a multiplier below 1, and overlapping affirmative/negative labels are rejected.
Commands and control
When the optional commands service is available:
/continue status
/continue set <JSON object>
/continue off
/continue reset
/continue preset <recommended|resilient|unattended-safe>
/continue pause [<Nms|Ns|Nm|Nh>]
/continue resume
/continue explain
/continue learn <on|off|status|candidates|approve <candidate-id>|forget <record-id|--all>>
pause stops Continue-owned waiting, plain-text steering, structured automatic answers, and Plan Mode auto-approval for the task; resume re-enables eligible automation. status prints the effective policy, pause state, learning resolution, storage scope, and latest activity. explain reports the last automatic/delegated/blocked decision. off writes explicit false switches; unlike reset, it cannot re-inherit enabled global defaults.
Network recovery and Camel coexistence
Built-in network codes are TIMEOUT, TRANSPORT, and SERVER. RATE_LIMIT is deliberately excluded and is delegated to dsh-camel. Continue handles it only if the task or global policy explicitly adds RATE_LIMIT to network.codes; this configuration logs an ownership-overlap warning, so configure exactly one retry owner for that code.
Classification is deterministic, in this order:
- an unclaimed
RATE_LIMITis delegated to Camel; - an explicitly configured network code is transient;
- configured permanent code, then permanent HTTP status;
- configured retryable HTTP status;
- optional message-pattern fallback (permanent patterns before retryable patterns);
- unknown failures pass through.
On a matching transient failure, Continue first gives downstream middleware, including dsh-llm-retry and Camel, the chance to recover. If downstream already returns { kind: 'retry' }, Continue returns it unchanged and writes no retry event. Otherwise it writes the standard llm/retry and llm/retry-started events using policyKey: "dsh-continue:network:v1", waits, then retries.
The default backoff is 2 seconds, multiplier 2, local cap 60 seconds, and mode: unlimited once network recovery is enabled. Use mode: bounded with maxRetries for a limit. A valid provider Retry-After wins when enabled and is capped only by the Harness/Node single-timer limit (2147483647ms). Cancellation, unload, pause, or an ineligible policy change stops the wait. A persisted wait keeps its original deadline, preventing duplicate retry schedules.
Adaptive network learning
Network adaptation is separately configurable under learning.network. If network.enabled=true and no explicit learning-frequency or delay control is supplied, it uses safe adaptive defaults: increase ratio 2, decrease ratio 0.75, recovery streak 3, state TTL 7d. An explicit learning.enabled=false or learning.network.enabled=false disables it. Task settings override global settings.
Learned delay state is isolated by the exact (provider, model, error-code) triple. If the provider/model route cannot be verified (including a missing model), Continue safely uses static backoff and neither reads nor writes learned network state.
A recovery is recorded immediately only after the durable assistant/message for the same turn, step, provider, and model arrives. The latest continue/network-learning snapshot is authoritative: if it is malformed or expired, Continue logs once and uses static backoff rather than reviving an older learned delay.
Automatic decisions and safety boundary
recommended.enabled=true selects only a unique option marked as recommended, including supported localized labels. onMissingRecommendation is ask by default; first is only for interchangeable low-risk choices, and stop fails the unattended flow when a recommendation is absent.
continuation.enabled=true plus autoConfirmContinue=true accepts only a single-choice binary continue/stop question with exactly one configured affirmative and one configured negative label. autoApprovePlan=true only exits an active Plan Mode through the official state transition, for a plan that has a non-empty # heading. Plain-text continuation additionally requires plainTextFallback=true, a current-turn whitelist match, and no risk-pattern match; it is capped at one steer per turn by default.
All automatic paths fail closed to the official UI when the agent is not a verifiable live root, the turn/question shape is incomplete, a selection is ambiguous, a question is multi-select or free-form, a limit is reached, or any text matches the risk boundary. The plugin never approves approval/request, sandbox or privilege escalation, credentials, payments, external sends, releases/deployments, production actions, or irreversible operations. It never invents business data.
Controlled learning and project storage
Learning is off by default. /continue learn on enables the task learning master switch and decision-learning switch; if network recovery is also enabled, leave learning.network.enabled explicitly false when adaptive network learning is not wanted.
Decision memory is for exact, eligible, verified manual selections only. Records use confirmation and conflict tracking, expire by TTL, and have a maximum-use limit. The raw Harness tools/post-execute hook exposes no trustworthy human-confirmation provenance, so it fails closed by itself. A host UI may provide a continueManualDecisionSource service implementing the exported ContinueManualDecisionSource interface; only results that its verify(exec, result) method authenticates are trained. The verifier must use trusted UI-side state, not merely inspect answer shape. Missing, rejecting, or throwing verifiers never train, and plugin-generated answers are excluded independently.
Set learning.decisions.scope to project to use the optional @deepseek-ai/dsh-settings peer. The plugin registers its settings namespace once per runtime and reuses it across agents. Project identities are hashed; missing, read-only, invalid, or failing settings storage degrades to task scope with a visible status reason. /continue learn forget reports success for project scope only after the empty snapshot is stored. If that write fails, the command returns an error, status reports projectForget.state: "failed", and the current runtime blocks old project memory fail-closed; it does not claim that an erase survives restart.
Continuation-pattern candidates are always suggest-only. View them with /continue learn candidates; only /continue learn approve <candidate-id> can add an eligible candidate to this task's plain-text patterns. Approval never bypasses the risk boundary.
Events, migration, and examples
Public session events are append-only and versioned:
| Event | Purpose |
|---|---|
continue/config |
task override or reset |
continue/control |
pause or resume |
continue/network-learning |
adaptive network snapshot |
continue/decision-learning |
task decision-memory snapshot |
continue/pattern-candidate |
suggest-only candidate lifecycle |
continue/activity |
latest automatic, delegated, blocked, cancelled, or learned activity |
Version 1 config/control events continue to replay. To migrate from earlier releases, keep existing task events, upgrade the package, and explicitly opt into any new capability. Do not add RATE_LIMIT to both Camel and Continue. For an existing global profile, start with recommended, then resilient, and only enable unattended-safe after reviewing project-specific question and risk patterns.
Example task policy with project decision scope but no network adaptation:
/continue set {"network":{"enabled":true},"learning":{"enabled":true,"network":{"enabled":false},"decisions":{"enabled":true,"scope":"project","minConfirmations":2,"ttlMs":2592000000,"maxUses":50}}}
有意识地管理
安装与管理
前置条件与目标 Profile
目标: deepseek-harness Profile
交付方式: Git Bundle — JuwanXu/dsh-continue#01cc9e13ced5a6c84f748c20dc8bbbbe60e41f2b。
验证、更新与移除
显示生命周期命令
dsh plugin --profile deepseek-harness list兼容性与访问范围
Node.js >=20; DeepSeek Harness peer dependencies are required: Not declared in supplied evidence。
风险事实
证据与编辑审查Manifest、Bundle patch、分发与新鲜度
不可变证据
审查状态与源码活动
启用 unattended-safe 前请审阅策略,尤其是自定义重试代码、续办模式和项目级学习设置。
AI 审查于 2026/9/14 UTC 14:17。GitHub 事实核对日期: 2026/9/14 UTC 14:17。
自当前证据基线以来,没有记录到重要源码变化。