DeepSHPlugins
dsh-generation 專案預覽
GITHUB / COMMUNITY PROJECT

dsh-generation

工具與整合JavaScriptMIT

提供 generation_fork 與 generation_run,用於複製 Agent preset 並在新會話上跑任務。

3 Starsgoecho 更新時間 2026-09-08
訪問 GitHub 倉庫
dsh-generation 專案預覽

專案介紹

中文

提供 generation_fork 與 generation_run,用於複製 Agent preset 並在新會話上跑任務。

English

Adds generation_fork and generation_run to copy an agent preset and run a task on a new session.

專案資訊與收錄訊號

快照 2026-09-11
作者 / 組織
goecho
倉庫
goecho/dsh-generation
GitHub Stars
3
Forks
0
開發語言
JavaScript
許可證
MIT
最近推送
2026-09-08
Manifest
資料中檢測到宣告

公開倉庫不自動等於可商用;許可證與當前相容性以原專案文件為準。Manifest 和資料評分不構成安裝安全認證。

資料評分

60/ 100
維護活躍
99
文件與實用資訊
85
生態關注度
17
安裝便捷訊號
100
專案宣告訊號
100

近 3 天仍在更新;README 含完整安裝與使用說明;關注度尚低(3)。

評分來自已有資料快照的五維模型,僅作瀏覽參考,不是實際使用評測或安全檢測結論。

安裝與使用

所有專案資料與許可均以對應 GitHub 倉庫為準。

dsh plugin --profile web add github:goecho/dsh-generation

複製命令不會自動執行。請先閱讀倉庫文件,確認環境要求與許可證。

專案截圖

倉庫 README

GitHub 原文

已儲存的倉庫文件快照;文件抓取時間未記錄,可能與上方目錄介紹處於不同版本。安裝前請核對當前倉庫說明。

儲存庫檔案保留原文,指令與授權文字不作自動改寫。

dsh-generation

English | 中文

A DeepSeek Harness plugin that forks agent presets and runs a task on the next generation.

It is make, not a compiler. Creator mode is already the compiler: it can inspect the runtime, edit files, and author presets. This plugin only records a lineage — copy a known-good preset, let the meta agent edit that copy with ordinary fs / bash, then start a new working session on it.

Compatible with DeepSeek Harness 0.1.2+ (dsh-v0.1.3-alpha.2 and current master). It needs Session.snapshotEvents(), async ctx.agents.create({ sessionId, meta, signal, setup }), Host-global ctx.tools.register, and dsh.bundle.patch. Do not add @deepseek-ai/* to this package — a second copy of those modules crashes tool dispatch.

Install

dsh plugin --profile web add github:goecho/dsh-generation

Then restart dsh --profile web so the host profile reloads. Pin a SHA from the commit history after you have read the source. The package is plain JavaScript, so git installs do not need a prepare build allowlist. Plugin 0.2.0 is the line that talks to snapshotEvents() and passes the parent AbortSignal into agents.create.

Then open a Creator mode (cordis) session — or a copy of that preset whose composition still has a plugin row name: '@deepseek-ai/dsh-tool-cordis'.

dsh plugin add installs into the host profile, so the two tools are registered globally. This plugin then hides them from every non-Creator session (including user copies of standard / minimal / code) and from every agent with origin: subagent, including the workers generation_run starts. Execute still refuses a non-Creator caller.

This repository already has the dsh-plugin, dsh, and deepseek-harness GitHub topics.

Why

DeepSeek Harness splits composition into a Host plane (sandbox, model route, persistence) and an Agent plane (tools, persona, prompt). A session’s preset is locked once a turn has run, so you cannot hot-swap the working agent’s toolset without stranding logged tool calls.

The useful bootstrap is the same as a C compiler: each generation is a new binary. Stage N writes files for stage N+1; you do not patch the process that is currently compiling.

What it is not

  • Not a replacement for Creator mode (cordis preset) or cordis_define / cordis_run
  • Not a way to recompose the current session, or to give an in-process subagent a different preset
  • Not a YAML/JS generator, scorer, or auto-promoter of the default creator
  • Not a Host-plane kernel: it does not add services, session event types, or sandbox backends
  • It does not depend on @deepseek-ai/dsh-tools / @deepseek-ai/dsh-llm. Tools are registered as raw definitions so a second copy of those packages cannot split the host’s module identity.

Design

Four rules:

  1. The kernel stays assembly. No new Host services, no new SessionEvent types, no unlocking agent-preset-locked.
  2. A generation is a new process of composition. generation_run uses agents.create + agentPresets.mount(id), never recompose on the meta session and never composeFrom (in-process children inherit the parent preset).
  3. This plugin is make. It does not write agent.cordis.yml. Editing uses tools the creator preset already has.
  4. A human is stage3. fork and run go through tools/pre-execute ask. Nothing is promoted to the default creator automatically. Lineage is the meta session log (tool/call / tool/result), not a second database.
meta session  (cordis + this plugin)
  → generation_fork     copy a preset to a new id
  → fs / bash           edit the copy (not this plugin)
  → generation_run      new agent, mount that id, run the task, dispose
  → summary             back into the meta log
  → fork again or stop

Working generations should fork from standard, minimal, or code.

Tools

ToolDoesDoes not
generation_forkagentPresets.copy(from, id); writes purpose into the new preset.yml description; returns id and directoryAccept composition YAML (authoring stays copy-only); overwrite an existing id
generation_runAfter approval, create an agent, mount the preset, followup(task), wait until idle, cancel, or a 15-minute timeout, return sessionId, stopReason, tool names used, last assistant text, then disposeRun Creator mode as the worker; inherit the meta toolset; leave a half-created agent on failure

generation_fork

ArgumentRequiredMeaning
fromyesPreset id to copy. Prefer standard, minimal, or code.
idyesNew preset id (/^[a-z0-9][a-z0-9-]*$/). Must not already exist.
purposeyesOne sentence written into the new preset.yml description.

Returns { ok, id, from, purpose, path, compositionPath } where path is the preset directory.

generation_run

ArgumentRequiredMeaning
presetyesPreset id to mount on the new working session. Must not be cordis.
taskyesSelf-contained follow-up for the worker. It does not see meta history.

Refuses a worker whose composition still has a plugin row name: '@deepseek-ai/dsh-tool-cordis'. Inherits the meta session’s workspace cwd, records origin: subagent and parentSession so logs chain, and passes the parent tool AbortSignal into agents.create so cancelling the meta tool also aborts worker creation. It does not dump the full worker transcript into the meta context. Worker logs are read with snapshotEvents(). If the worker never goes idle, it is cancelled after 15 minutes (stopReason: "timeout"). Domain failures keep { ok: false } but render as ERROR: so the model notices.

Returns { ok, sessionId, presetId, stopReason, toolsUsed, lastAssistantText }.

Trust

Treat a Creator session that can fork and run generations as shell access. Mitigation in v1:

  • Human approval on every fork and every run
  • Worker preset cannot be cordis, and cannot still carry a @deepseek-ai/dsh-tool-cordis plugin row
  • Edits belong under the new preset directory
  • Model-written JavaScript is never auto-mounted via cordis_run

Develop

npm test

There are no @deepseek-ai/* runtime dependencies. The tests mock ctx.tools / ctx.agentPresets / ctx.agents. GitHub Actions runs the same npm test on Node 22.

License

MIT

使用前核對

安裝步驟、相容版本與授權範圍以原專案當前文件為準。Stars 和評分是快照中的導航訊號。

安裝與排錯 · 專案問題反饋

同類專案