Introduction

DeepSeek Harness (DSH) follows the “everything is a plugin” philosophy, allowing developers to extend functionality for specific scenarios. When building agents, models often end conversations without completing Todo list items, or fall into loops without tracking progress. The dsh-todo-continuation plugin is designed to solve this problem. Through a gating mechanism and advisory prompts, it helps agents maintain workflow integrity at the agent/turn-stopping boundary.

Plugin Overview

dsh-todo-continuation is a DSH plugin maintained by DoiiarX. As a Todo gate and prompt plugin, it decides at the agent/turn-stopping boundary whether to allow stopping based on the latest todo/write snapshot of the current turn, and provides advisory prompts for “not using Todos for a long time” and “not updating Todos for a long time”.

Core Features

  1. Stop Gate: If the current turn contains an unfinished todo that does not start with a “waiting for user” prefix, the plugin injects a continuation message so that the model keeps working within the same turn instead of ending with unfinished items.
  2. No-Todo Prompt: When there have been no todo snapshots for noTodoPromptEveryNTurns consecutive turns (default: 5), it prompts the model to use todo_write to plan and track work.
  3. Stale Todo Prompt: When a todo list already exists but has not been updated for staleTodoPromptEveryNTurns consecutive turns (default: 20), it prompts the model to keep the list up to date.

Installation and Enablement

Install dependencies:

cd <本插件目录>
pnpm install

Mount the plugin in $HOME/.dsh/profiles/web/package.json:

{
  "dependencies": {
    "@doiiarx/dsh-todo-continuation": "link:<本插件目录绝对路径>"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "@doiiarx/dsh-todo-continuation"
      ]
    }
  }
}

Then run pnpm install in the profile directory.

Typical Usage

In the “Todo Gate” section of the settings page, you can edit the following configuration items:
* waitingTodoPrefixes: Unfinished items starting with these prefixes are treated as “waiting for user” and stopping is allowed (defaults: 信息不足:, 要求用户确认:).
* noTodoPromptEveryNTurns: How many consecutive turns without Todos before prompting the model to start using them (default: 5).
* staleTodoPromptEveryNTurns: How many consecutive turns without updating an existing Todo list before prompting the model to keep it up to date (default: 20).

Use Cases and Notes

  • Responsibility Boundary: The plugin never creates, deletes, completes, or rewrites Todos—the solo author of the list remains the model.
  • Behavior: The gate only checks “whether stopping is allowed.” Both prompts are advisory (they do not block stopping), and each can trigger at most once per interval to avoid nagging every turn.
  • Safety: User cancellation (agent.cancel) and terminal turn errors are aborted before the stopping boundary and are never overridden by the gate.
  • Runtime Permissions: The plugin runs with the permissions of the current DSH process. Review the source code and license before installation.

Summary

The plugin uses a gating mechanism and advisory prompts to help agents maintain workflow integrity at the agent/turn-stopping boundary. For more details, see the GitHub repository or the DSH Community Catalog.