deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
Structured research management as a dsh (Cordis) plugin: project state machine, entity lifecycles, adversarial review, audit trail — files as the single source of truth, no UI panel, no compute submission.
This is the dsh port of the Synergy plugin holos-research (v1.1.1). It ships:
research_init, research_state, research_idea, research_plan, research_experiment, research_claim, research_exhibit, research_paper, research_submission, research_wiki, research_timeline, research_monitor, research_journal, research_checkpoint_brief)ctx.skills (provider holos-package), consumable by dsh-tool-skilldsh-tool-subagent instances.research/scripts/ by research_init (including the compose pre-writing gates: contribution_check.py, results_validation_check.py, latex_guard.py, numeric_consistency_check.py, compose_progress_check.py)node:fs); no Bun, no UI panel, no compute_submitpnpm add @yzxoi/dsh-holos-research
Add the plugin to a cordis.yml:
- name: '@yzxoi/dsh-holos-research'
The research root is resolved per tool execution in this order:
root from the plugin config (explicit override; used by tests and deployments)cwdprocess.cwd()- name: '@yzxoi/dsh-holos-research'
config:
root: /path/to/research/project
The research project lives in <root>/.research/. Configure the agent row with a cwd (or set the plugin root) before using the tools — without either, the first tool call fails loudly with guidance.
examples/presets/holos/agent.cordis.yml mounts the plugin plus four dsh-tool-subagent instances (subagent_critic, subagent_methodologist, subagent_auditor, subagent_editor) whose persona fields inline the four agent prompts. The preset requires the subagent seam in the host composition:
- name: '@deepseek-ai/dsh-subagent-spawn-in-process' # provider `spawn`
- name: '@deepseek-ai/dsh-tool-subagent'
- name: '@yzxoi/dsh-holos-research'
The agent prompts are also exported from the package (AGENTS, AGENT_PROMPTS) for custom mounts.
The 17 skills are served by a runtime provider (holos-package); no disk layout is required. dsh-tool-skill (or any ctx.skills consumer) lists them and loads bodies plus references/ assets. The plugin registers the provider opportunistically — deployments without the skill seam keep every tool working.
.research/ remains the single source of truth and the on-disk format is byte-identical to the Synergy version: same paths, YAML/JSONL structure, entity id prefixes (idea_ / plan_ / exp_ / claim_ / exh_ / paper_ / sub_), status enums, the 6-phase project state machine, red-lines R1–R7, authenticity grades, and index.yaml registration semantics.
index.yaml): the first read auto-bootstraps the index with a one-time read-only scan..research/ data.| Surface | Synergy plugin | dsh port |
|---|---|---|
| Runtime | Synergy Plugin API 4, Bun | dsh (Cordis), Node ESM |
.research/ disk format |
source of truth | identical, byte-compatible |
| Tools | 15 (compute_submit included) |
14 (compute_submit not migrated) |
| Monitor workbench panel | yes | not migrated (no UI) |
Monitor query operation()s |
9 | not migrated (research_monitor keeps the model-facing read actions) |
| Skills | 17 via Synergy skill registry | 17 via ctx.skills provider holos-package |
| Agents | 4 agent() registrations |
4 prompt assets + example preset of dsh-tool-subagent instances |
research.changed event |
yes (UI refresh) | not migrated (no session event) |
| File I/O | workspace service + Bun.file |
node:fs/promises (mutex + tmp-rename atomic writes + traversal/symlink guards preserved) |
| Compute submission | compute_submit → SII Inspire |
not migrated (external platform) |
research_experiment still records backend/job metadata (inspire, local, api, manual) exactly as before — executing jobs is out of scope for the plugin.
pnpm install
pnpm run gen # regenerate src/generated/assets.ts + examples preset (idempotent)
pnpm run typecheck # tsc --noEmit (strict)
pnpm run lint # biome check
pnpm test # vitest run (domain + tools + provider + loader smoke + compat fixtures)
pnpm run build # tsc → lib/ + lib/types
pnpm run pack # npm pack --dry-run (files: lib, agents, skills, scripts, src/generated)
src/generated/assets.ts is generated — never hand-edit; run pnpm run gen after touching agents/, skills/, or scripts/.
MIT — Copyright (c) 2026 yzxoi
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。