dsh-loopx-plugin
loopx-project/loopxLoopX——面向长周期 Agent 的提供商中立、本地优先状态内核与控制平面:在 DeepSeek Harness 执行层之上持久化 Goal、Todo、门禁、证据、配额、恢复与交接状态;插件负责引导安装 CLI 与技能、准入有界的同会话续跑,并为精确绑定的工作循环提供本地 GoalBar。
DSH 声明式任务 DAG 编排:校验依赖图,通过工作流子智能体并行执行拓扑任务层,并确定性传播失败。
English | 中文
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.
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.toolsctx.systemPromptctx.workflowEngine, normally supplied by @deepseek-ai/dsh-workflow-worker-threadNormally no manual configuration is needed after dsh plugin add. For a custom composition, add:
- 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.
orchestrate_tasks accepts:
meta: normalized name and description;tasks: a non-empty array of tasks with lowercase kebab-case id, title, and normalized prompt;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.
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.
| 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.
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.