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 和评分是快照中的导航信号。

安装与排错 · 项目问题反馈

同类项目