Skip to content
dsh.fish
Bundle

dsh-tool-orchestrate

Declarative task-DAG orchestration plugin for DeepSeek Harness workflows

Source
apheli0os
stars
1 stars
License
MIT
Updated
Updated 2 days ago

Readme

# dsh-tool-orchestrate

English | [中文](README.zh.md)

Declarative task-DAG orchestration for DeepSeek Harness. This optional Cordis plugin registers a model-facing `orchestrate_tasks` tool, validates a bounded directed acyclic task graph before anything starts, and executes it through the existing `ctx.workflowEngine`.

This is an independent community plugin and is not an official DeepSeek package.

The package-owned worker script executes deterministic topological layers. Model-authored ids, prompts, dependency ids, schemas, provider names, model names, and upstream results are passed only as JSON data; none is interpolated into JavaScript source.

## Install

```sh
dsh plugin --profile web add dsh-tool-orchestrate
```

Replace `web` with the profile you want to extend. The package declares a DSH bundle manifest, so installation adds its `tool-orchestrate` Cordis row automatically. This project distributes prebuilt releases through npm; installing directly from the GitHub repository is not supported.

The plugin expects a DeepSeek Harness deployment that already provides:

- `ctx.tools`
- `ctx.systemPrompt`
- `ctx.workflowEngine`, normally supplied by `@deepseek-ai/dsh-workflow-worker-thread`
- a subagent provider selected by the workflow engine

## Manual Cordis configuration

Normally no manual configuration is needed after `dsh plugin add`. For a custom composition, add:

```yaml
- id: tool-orchestrate
  name: 'dsh-tool-orchestrate'
```

The standard DSH base bundle already loads `workflow-worker-thread`. A custom composition must provide `ctx.workflowEngine`; if it disables the workflow engine, re-enable it explicitly in a later patch layer.

## Model input

`orchestrate_tasks` accepts:

- `meta`: normalized `name` and `description`;
- `tasks`: a non-empty array of tasks with lowercase kebab-case `id`, `title`, and normalized `prompt`;
- optional `dependsOn`, `provider`, `model`, and object-rooted `outputSchema` per task.

Each completed task returns its child's text or structured value. A failed child becomes `{ status: 'failed', error: 'subagent_failed' }`; a task blocked by failed or skipped direct dependencies becomes `skipped` with deterministic `blockedBy` ids. Results keep the original task-array order, with aggregate counts and a top-level `completed`, `partial`, or `failed` status.

## API key ownership

This plugin does not own or store an API key. Child tasks use the host deployment's existing LLM route and credential source: for example `DEEPSEEK_API_KEY` in the process environment, a host credential provider, or another configured route. Subagents inherit the same credential configuration as the parent composition unless a task selects a different provider/model route.

Do not place API keys in prompts, `cordis.yml`, source code, or GitHub Actions logs. Prefer environment variables or your deployment's credential mechanism.

## Config

| Key | Default | Meaning |
|---|---|---|
| `toolName` | `orchestrate_tasks` | Model-facing tool name. |
| `maxTasks` | `64` | Maximum tasks per call. |
| `maxDependencies` | `16` | Maximum direct dependencies per task. |
| `maxPromptChars` | `32768` | Maximum normalized characters per task prompt. |
| `maxResultChars` | `50000` | Rendered canonical-JSON ceiling. |

All numeric limits must be positive safe integers; `toolName` must be a non-empty normalized string.

## Development

```sh
pnpm install
pnpm run typecheck
pnpm run check
```

Publishing is performed from a clean checkout through the manually triggered `Publish to npm` GitHub Actions workflow. Maintainers must configure its `npm` environment and `NPM_TOKEN` secret first.

Install

dsh plugin --profile web add github:apheli0os/deepseek-harness-orchestrate#6a1863dfabafa565bf7af160ce60e2749f4bad17

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
Source