证据快照复核于 2026-09-16GitHub 数据核对日期: 2026-08-21
证据已验证Plugin Bundle自动化与智能体dsh Profile

Harness DSH Profile Bundle

一个以源码分发的 DSH 配置包,将确定性的看板、协调、路由、遥测、子代理和 LLM 服务组合在一起。

快速了解

它能做什么

一个以源码分发的 DSH 配置包,将确定性的看板、协调、路由、遥测、子代理和 LLM 服务组合在一起。

本站提供的是中文说明,不代表该项目或 Plugin 自身提供中文界面;语言支持请以上游文档为准。

使用场景
自动化与智能体智能体自动化工作流自动化
适配技术
dshdeepseek-harnesscordisgithub
兼容性

dsh Profile
@deepseek-ai/dsh ^0.1.2-rc.1; @deepseek-ai/cordis ^4.0.2

可信度与状态

证据已验证
核对日期 2026/9/14 UTC 14:25

有代码证据的贡献

它为 DSH 增加什么

Harness DSH 配置包

将子代理、看板、协调器、遥测、路由和 LLM 插件组合为一个 DSH 配置补丁。

机制证据

选择前先看

这个私有的 @rickylabs/dsh-app 包为 DeepSeek Harness 配置提供 Cordis 补丁。补丁会加入基于 GitHub 的看板投影、工作流协调、遥测、路由、子代理提供方和 LLM 路由服务。它面向需要显式门禁和可持久化运行证据的智能体团队,不是独立的终端用户应用。

适合谁

已在使用 DeepSeek Harness,并希望把该仓库的协调层插件组合为单一配置的团队。

常见任务

  • 将内含的协调层插件组合到一个 DSH 配置中。
  • 把 GitHub 工作项投影为看板,并使用确定性的协调规则。
  • 记录和检查智能体群遥测,并通过配置的子代理与 LLM 通道执行工作。

权限与数据

该配置包会按启用的工作流配置可能使用 GitHub、本地运行/日志数据、提供方服务和环境变量凭据的服务。

权限
  • 内含看板工具可能读取 GitHub 看板数据。
  • 文档中的 forge 初始化流程可向目标 GitHub 仓库写入标签分类。
  • 配置 OpenRouter 调度时,可能从守护进程环境读取 OPENROUTER_API_KEY。
数据处理
  • 遥测被描述为写入并回填可从磁盘读取的运行记录。
  • 配置补丁不会将凭据写入已提交的配置文件。
外部服务
  • 用于看板数据和可选标签初始化的 GitHub。
  • 已配置的 LLM 与子代理提供方;启用时包括 OpenRouter。
凭据
  • 网络看板和 forge 操作在文档中要求 gh 或 GITHUB_TOKEN。
  • 仅在配置 OpenRouter 调度时需要 OPENROUTER_API_KEY。

局限

  • 该包是私有包,所给证据未找到其 npm 版本。
  • 未捕获安装脚本;应从仓库的 DSH 文档获取安装步骤。
  • 未验证在线提供方会话、模型服务器、凭据或部署前置条件。

DSHub 已核对

  • 清单声明了 DSH 配置补丁和 Cordis 对等依赖。
  • 固定版本的 cordis.patch.yml 包含子代理、看板、协调器、遥测、路由和 LLM 插件条目。
  • 已验证该配置包可通过不可变 Git 源码路径交付。

DSHub 未核对

  • 未实际执行安装。
  • 未测试运行时行为、提供方连接、GitHub 访问或遥测输出。
  • 未验证 npm 注册表可用性。

固定版本安装

安装 Harness DSH Profile Bundle

这个Plugin Bundle没有 DSH Plugin 安装操作,请根据源码文档使用真实交付方式。

访问源码项目

维护者原文

项目 README

查看 commit 57c0231 对应的 README
维护者编写的上游内容原文于 2026/9/14README.md 获取,正文和仓库相对媒体固定到 commit 57c0231dd979,内容哈希为 cbf07d610689。以下是未经 DSHub 翻译的上游原文,语言可能与当前页面不同;第三方托管的 badge 可能独立更新。

harness

ci licence: MIT node portable agent runtime

The deterministic coordinator layer for an agent fleet. A monorepo of DeepSeek Harness (dsh) plugins that turn a GitHub repository into a board, decide what may run next, and tell you what the fleet did — without waking an agent to ask.

Understand the loop | Try a local proof | The board | Documentation


Why this exists

An agent can write code all night. What it cannot do is tell you, reliably, what it did, whether it was allowed to, and who should check it — the moment you ask, you are interrupting it, and its answer about itself is an account from memory, not a record.

Harness exists so the human/agent split has a substrate. A human holds the decisions that need a person: what the fleet should work on, which fork gets the owner's call, what counts as accepted. Agents hold the work: research, implementation, review. Between them sits a deterministic layer that projects the work onto a board, decides what may run next, gates every change behind an explicit check, and records what happened.

The bottleneck this targets is not code production. Coding agents produce output faster than humans can review it; the scarce resource is coordination and review — knowing what ran, what it changed, whether it may proceed, and who is allowed to say so, read from disk rather than interrupting a session.

The method is not new here. The doctrine this repository encodes ran across three codebases with nothing in common — a Deno runtime spine, a Deno chat harness at depth, and a Next.js marketing site — and transferred cleanly for mechanics and not at all for domain knowledge. That asymmetry is the product seam: mechanics are portable, knowledge is specific. The prior-art table in AGENTS.md names all three.

How the layer works

Three actors, one loop. The diagram is the whole system; the prose under it walks every arrow, and the paragraph after that states exactly which parts of the picture this repository supplies at this baseline.

flowchart TD
  H[Human: intent, forks, acceptance] --> G[GitHub issues, labels, pull requests]
  H --> F[dsh-forge: explicit labels and process setup]
  F --> G
  G --> B[dsh-board: read and project]
  B --> C[dsh-coordinator: plan, gate, select, replay]
  C --> D[Dispatcher or operator on a live host]
  D --> S[ctx.subagents: autonomous agent tasks]
  D --> L[ctx.llm: prompt and token calls]
  S --> E[Artifacts, changes, run evidence]
  L --> E
  E --> T[dsh-telemetry: sink and backfill]
  T --> H
  E --> A[Human or dispatcher chooses a GitHub update]
  A --> G

The loop, arrow by arrow:

  1. A human holds intent where the work already lives: GitHub issues, labels and pull requests. When a repository needs this board process at all, a human runs dsh-forge explicitly, and forge writes the label taxonomy to that repository's GitHub — setup, on purpose, not in passing.
  2. dsh-board reads GitHub and projects it: columns, a hierarchy view, a digest page, and a check that names every way the board contradicts itself. When it does, every terminal view says so — a banner above the work, with the affected rows marked — and the check carries the detail. It writes nothing back; its GitHub transport is read-only by construction.
  3. dsh-coordinator answers the deterministic questions over state derived from that projection: what may run next, whether a step's gates passed, and who may review whose work. Deciding and doing are separate jobs — the workflow is inert data, and performing an effect belongs to a caller.
  4. That caller is a dispatcher or operator on a live host. Work reaches models through one of two seams and never both at once: autonomous vendor CLIs at ctx.subagents, and prompt-completion calls at ctx.llm.
  5. Both seams leave artifacts, changes and run evidence behind. dsh-telemetry sinks and backfills that record, and a human can read it from disk with no agent awake — which closes the loop where it started: intent in, legible status out.
  6. Evidence does not write itself back to GitHub. A human or dispatcher chooses the update — a comment, a label move, a pull request — and that choice is what lands on the board.

Harness owns the deterministic mechanism in this loop: board projections, routing and admission, execution gates, provider adapters, telemetry, and durable intents and receipts. GitHub holds the work graph; Harness coordinates the work and records evidence that can be replayed and inspected without interrupting an agent. Autonomous agent tasks and token-metered calls keep their separate seams.

The product backend turns that mechanism into an authenticated, persistent application. It owns enrollment, access control, commands and projections, and publishes its captured OpenAPI artifact and generated client. The native client uses that product boundary for daily observation, decisions and steering. The three layers explains each layer's responsibilities and the relationships between them.

Who decides what

A human decides An agent does The layer enforces
Intent: issues, labels, milestones, pull requests The stochastic work: research, implementation, review Projection: GitHub → board views; every terminal view flags a self-contradiction; check names it; a half-seen board is refused
Owner forks: whatever depends on what the owner wants Lifecycle moves on its own item — one status: label at a time, per the generated skill Eligibility: what may run next; every effect step must have a gate upstream, checked not promised
Acceptance: merges, closes, consequential writes Recording evidence as it works Independence: an author never evaluates its own artifact; no legal evaluator is a blocker, never a softer rule
Running dsh-forge to install labels and process Replay: decisions re-run from their own inputs; a different answer is reported as nondeterminism

The middle column is where all the intelligence in this system lives, and the outer two are why it can be trusted: humans keep the decisions that are theirs, agents keep the work that is theirs, and the layer in between never improvises — it is pure functions over declared data, which is what makes it auditable at all.

Status

This README and the concept pages describe the intended product. Delivery progress lives on the board and the roadmap; issues are authoritative when a generated board page lags a change.

For interfaces you can use today, follow the package guides, generated CLI reference, and published contracts and release guidance. These operational references distinguish implemented behavior from planned work.

Choose your path

You are… Go First outcome
evaluating or reviewing the diagram above → doctrine/WORKFLOW.mdconcepts how work is staged, gated and independently reviewed, and what counts as evidence
contributing the status section → packages/README.mdCONTRIBUTING.md the current implementation truth and a safe change surface
adopting locally local proof → the tutorial deterministic behavior proven on your machine, without a daemon
operating a live host the status section → deploy/README.mddsh-app and provider docs profile wiring and every external prerequisite, named

Local proof first

The local proof uses Node 24 or newer and pnpm 11. Node 24 is the supported floor; Node 26 is the development target. CI currently proves Ubuntu on Node 24, and release checks have also passed locally on Linux with Node 26.8.1. Engine enforcement and dual-version CI are tracked in #244.

pnpm install
pnpm run build

build is not only a compile — it runs a chain of repository-wide checks around it. Two of them guard documents: every generated CLI reference page is byte-compared against its binary, and every relative link and anchor is resolved. What they check is exactly what they check — generated pages and links, not hand-written prose. Pasted output in prose is checked by nobody — #212 is the standing counter-example, and the reason this README pastes almost none. The rule the gap is measured against lives on the docs index.

Then the first proof. It needs nothing but the build — no network, no credentials, no home directory:

node packages/coordinator/dist/cli.js policies

It prints the two evaluator-independence policies and which one is the default, plus the guarantee that holds under both: a session never evaluates itself, and a roster with no legal evaluator is a blocker rather than permission for same-family review.

Five command-line tools exist, deliberately separate binaries rather than subcommands of one. Each reads a different source of truth — the GitHub API, a state file on stdin, a log directory on disk, the repository you are standing in — and each answers a question you would otherwise have to ask an agent:

Command Package The question it answers
dsh-board board What is on the board right now — and does it contradict itself?
dsh-coordinator coordinator May this step run? Who is allowed to review it? What changed since last time?
dsh-telemetry telemetry What did the fleet actually do — read from disk, with nothing awake?
dsh-forge forge Install this board process into any repository.
dsh-profile dsh-app Compose every plugin into one dsh profile.
<details> <summary>Why <code>node packages/…/dist/cli.js</code> and not the bare command name</summary>

Every package here except contracts is private: true, so pnpm links their bins where a dependent resolves them — not at the repository root. Running the built entry point directly is the honest invocation from a fresh clone, and it is what the repository's own scripts do (see skill:install in the root package.json). Installing the profile with dsh-profile install is what puts them somewhere a dsh process can find them.

</details>

Further proofs, by what they need:

  • Offline, isolated fixtures. See what the profile installer would write, without writing it: node packages/dsh-app/dist/cli.js install --dry-run --home /tmp/dsh-home. Ask telemetry where it would keep its log: node packages/telemetry/dist/cli.js where --home /tmp/tel-home. Render the governance display from a synthetic observation file — the fixture and its commands live in the telemetry README, and every value in it is synthetic by construction.
  • Network: gh or GITHUB_TOKEN. dsh-board columns projects a repository; dsh-board digest prints the markdown page BOARD.md is made of; dsh-forge doctor reports what a target repository and your environment support. The tools whose whole job is reading GitHub exit 3 and say so when no transport is available. Two forge commands are deliberately not in that set: doctor exits 0 and reports what it could see, and init exits 0 having written its local files even when the GitHub half was skipped — which is why the tutorial ends that step with a readback that can fail loudly.
  • A live host. Provider sessions (an injected Claude Agent SDK; a long-lived opencode serve), local model servers behind the ctx.llm routes, and the deployed web surface all need machines and credentials this repository does not supply. The docs state those prerequisites; nothing here claims they passed.

To be walked through the whole thing once — building, installing the board process into a repository of your own, moving an item, composing the profile, recording a run and reading it back — From a clone to a moving board is fifteen minutes and needs no server.

Architecture commitments

Scope first, so the rest is readable: this repository is the portable agent runtime — the routing matrix, the launchers that enforce it, the slice loop, the profiles, and the doctrine, made to run against any repository rather than one (ARCHITECTURE.md §1). The dsh plugin packages and the run artifacts are still here; §1 states that the charter "replaces the previous one" and §10 records that the plugins are parked rather than deleted. The two products that consume it are separate repositories — rickylabs/atelier-cockpit, the engineering cockpit, and rickylabs/atelier-mobile, the Expo companion — reaching this layer over a published contract package (ratified decision 4, below).

Four commitments shape every package. Each is summarized once here and owned in full by exactly one page, because a fact in two places is a future contradiction.

  • Two seams, not one. Subscription agent CLIs and API-key or local models attach to different dsh services, are metered differently, and running out of one does not resemble running out of the other. Collapsing them is the design error the package split exists to prevent. 02 — Two seams owns the argument.
  • GitHub holds board truth. There is no second database of task state. dsh-board projects issues, labels and pull requests, refuses to report a board it only half saw, and flags a board that contradicts itself in every terminal view — check names the contradictions and exits non-zero; digest prints them with the repair. The session projection carries the same anomalies with their detail, the kinds naming each item, and the fetch coverage, so a pane can say a column is disputed without shelling out (#220). dsh-forge is the one explicit write boundary, and it writes labels, never evidence. 03 — The board owns the reasoning.
  • Everything generated is generated. Six artifacts in this repository are produced by code and five are byte-compared against it on every build; the sixth, BOARD.md, is rewritten wholesale every half hour, so an edit to it is reverted rather than rejected. CONTRIBUTING.md owns the table and the regeneration commands; 05 — Determinism owns why drift is a correctness bug.
  • Artifacts over chat, with citations. A conclusion that exists only in a conversation does not exist; run directories under .llm/runs/ are committed, reviewed and kept. Every load-bearing claim carries a path, a page or a URL. doctrine/PRINCIPLES.md owns the rules; 04 — What "run" means owns the word's two meanings.

Ratified decisions

Four decisions were ratified in the Decisions taken table of the E0 roadmap, which ARCHITECTURE.md supersedes. Where the two differ, the charter wins: two of the four hold unchanged, one is scoped to parked work, and one is superseded on its first clause — each is marked below, and the marking is the authority, because nothing checks this sentence against that list. They are restated here because root documents are what an agent reads first, and a root document that contradicts a ratified decision propagates the contradiction silently. They are not re-opened in a run, a PR, or a prompt; reversing one goes through ARCHITECTURE.md §13 — a numbered decision in doctrine/decisions/ — not through #30, which is closed and superseded.

  1. Plugin-only, no core fork. Scoped to the parked plugin layer — ARCHITECTURE.md §10. Depend on published @deepseek-ai/dsh. We ship Cordis plugin packages and one profile. Only runzhliu/deepseek-harness-docker is forked, with the upstream remote kept for updates.
  2. Node + pnpm. netscript stays a service behind an adapter, not a build-time dependency.
  3. GitHub is the source of truth for the board; dsh projects the live view.
  4. Superseded on its first clause. This repository is the portable agent runtimeARCHITECTURE.md §1, which states that charter "replaces the previous one ("the dsh plugin layer")". The rest of this decision still holds. No cockpit is built here. The two that consume this layer are separate products in their own repositories — rickylabs/atelier-cockpit, the engineering cockpit, and rickylabs/atelier-mobile, the Expo companion. Consequence: contracts must be a published package, not a workspace import.

Decision 4 originally placed external consumers inside rickylabs/netscript and was amended on #30 once they became products in their own right; the published contract package is still the only thing this repository owes them. Two further decisions — the MIT licence with a public npm scope, and the divybot/herdr strangler-fig — are recorded on #30 as taken, reversible; read them on the board.

Packages

Packages are grouped by responsibility. The package guide owns the complete package-to-epic table and implementation status.

  • Project, decide and observe: board, coordinator, governance, and telemetry connect the work graph, admission rules, execution evidence and progress.
  • Run work through two seams: subagents and the provider packages handle autonomous agent tasks; llm-local handles API and local-model calls. routing resolves configured choices and evaluator independence.
  • Compose and connect: dsh-app assembles the profile, forge installs the board process, and netscript-bridge owns the outbound service adapter.
  • Publish the boundary: contracts defines portable mechanism data and readers for the product backend. The native client consumes the backend's generated API/client.

Repository map

packages/             the dsh plugin layer — one package per subsystem
docs/                 concepts, tutorials, how-to, reference, glossary
doctrine/             how to work here: portable, stable, no runtime
deploy/               the N5 compose stack and the patch overlays it applies
scripts/              the repository-wide checks the root scripts run
.llm/runs/            run artifacts — durable, reviewed via PR
.llm/harness/         the artifact templates a run fills in
.llm/tools/           milestone and gate tooling (Deno; see below)
.github/labels.yml    the ejected label taxonomy — generated, then reviewed
.github/workflows/    the CI gate, the release pipeline, the status-label settler, the board
.claude/skills/       the generated board skill (`pnpm run skill:install`)
BOARD.md              the published board — generated every half hour, never hand-edited
AGENTS.md             entry point, agent mode
CLAUDE.md             entry point, standard mode
deno.json             see below

deno.json and deno.lock at the root of a pnpm monorepo look like debris and are not: they run the milestone and gate tooling under .llm/tools/. Whether that second toolchain stays is an open owner fork, recorded on #140.

Contributing

This repository is an agent inbox. An issue labelled harness is polled every thirty seconds and dispatched to a real agent on a real host, with no confirmation step. That is a feature, not a hazard, but it means the label starts something. Label deliberately — AGENTS.md owns the full statement of what follows from that.

Most pull requests here are opened by an agent, and the rules that matter are the ones a machine can check: CONTRIBUTING.md owns the four-command local loop, the branch and PR conventions, and the generated files you must not hand-edit.

File What it settles
CONTRIBUTING.md The local loop, conventions, and the six generated files
SECURITY.md Three surfaces an ordinary repository does not have: content that instructs an agent, a label that executes, and run artifacts that are committed
GOVERNANCE.md Where a decision lives, and the owner-fork rule that makes autonomous work safe here
SUPPORT.md Where to go for each kind of question, given that there are no Discussions
CODE_OF_CONDUCT.md Short. An agent's output is its operator's responsibility.

Licence

MIT, matching dsh, so the plugin packages can carry the dsh-plugin topic. Taken on #30 as reversible. See LICENSE.

有意识地管理

安装与管理

前置条件与目标 Profile

目标 dsh Profile

交付方式 Git Bundle — rickylabs/harness#57c0231dd979686f0a625de3efcca5c68ae8706c

验证、更新与移除

显示生命周期命令
验证
dsh plugin --profile dsh list

兼容性与访问范围

Requires DeepSeek Harness dependencies and Cordis peer dependency. @deepseek-ai/dsh ^0.1.2-rc.1; @deepseek-ai/cordis ^4.0.2

检查兼容性证据

风险事实

external-service

GitHub is used as the board’s source of truth; some included tools read GitHub and the forge setup flow writes labels.

证据
凭据

OpenRouter credentials are read from OPENROUTER_API_KEY at dispatch rather than stored in the profile.

证据
证据与编辑审查Manifest、Bundle patch、分发与新鲜度

不可变证据

审查状态与源码活动

AI 已审查

由于所给证据未显示已发布的 npm 版本,请使用固定的 Git 源码进行审查。

AI 审查于 2026/9/14 UTC 14:26GitHub 事实核对日期: 2026/9/14 UTC 14:26

自当前证据基线以来,没有记录到重要源码变化。

下一步

按 Plugin 安装流程操作

订阅重要变化: Harness DSH Profile Bundle