dsh-subagent-fork-lite
In-process DeepSeek Harness subagent provider that seeds a child with only the last N completed parent turns (fork-lite), leaving official fork untouched.
aleskxyz
@aleskxyz
⬇ 2
★ 0
main
安装
dsh plugin --profile web add github:aleskxyz/dsh-subagent-fork-lite
需要可复现安装时,可在仓库后追加 #commit 固定提交。
In-process DeepSeek Harness subagent provider that seeds a child with only the last N completed parent turns (fork-lite), leaving official fork untouched.
该插件未提供要点说明,请参考仓库 README。
agentsaideepseekdeepseek-harnessdeepseek-harness-pluginfork
- 安装并启动 DeepSeek Harness:
npx @deepseek-ai/dsh web - 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
- 用 dsh plugins list 确认已安装,必要时重启 Harness 生效
插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。
| 代码仓库 | github.com/aleskxyz/dsh-subagent-fork-lite |
| 许可证 | Apache-2.0 |
| 主要语言 | main |
| 下载量 | 2 |
| GitHub 星标 | 0 |
| 最近推送 | 2026-09-16 |
| 收录日期 | 2026-09-19 |
| 分类 | 模型与提供方 |
事实信息来自公开插件目录快照(2026-10-01),介绍文案由本站再加工。
以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。
# dsh-subagent-fork-lite
In-process DeepSeek Harness subagent provider that seeds each child with a **bounded window** of the parent’s completed conversation — the last N finished turns — instead of the entire transcript.
Registered by default as `fork-lite` on `ctx.subagents`.
## Support matrix
| Harness tag | npm package line | Typecheck | Unit tests | Notes |
|---|---|---|---|---|
| `dsh-v0.1.2-rc.1` | `0.1.2-rc.1` | pass | pass | `sourceEventSeqs` remapping uses a version-safe read |
| `dsh-v0.1.5-rc.2` | `0.1.5-rc.2` | pass | pass | Primary dev/CI pin |
| `dsh-v0.1.6-alpha.1` | `0.1.6-alpha.1` | pass | pass | `session.snapshotEvents()` deprecated but still used (same as stock `fork`) |
No native harness seed-window API exists on these lines — this plugin remains the bounded-seed provider.
## Features
- **Turn-window seed** — configure how many completed parent turns the child inherits (`maxCompletedTurns`)
- **Stable mid-session cuts** — the open (in-flight) parent turn is never seeded; only balanced history through the last `turn/end`
- **Valid session seeds** — window events are renumbered so `seq` is contiguous from `0` (including remapped `sourceEventSeqs`)
- **In-process child** — depth limit, tool filter, persona, structured output, and per-start `agentOptions`
- **Context inheritance flag** — advertises `inheritsParentContext: true` when a seed is used
- **Named presets** — mount multiple instances with different `providerName` / `maxCompletedTurns` values
## Quick start
```sh
# git channel (latest main)
dsh plugin --profile web add "github:aleskxyz/dsh-subagent-fork-lite#main"
# or from npm (when published)
dsh plugin --profile web add dsh-subagent-fork-lite
# restart the profile, then verify the row
dsh --profile web --dump-config | grep -A6 'id: subagent-fork-lite'
```
Start a child with provider name `fork-lite` (see [Usage](#usage)).
## Install & uninstall
- **git channel** (latest `main`): `dsh plugin --profile web add "github:aleskxyz/dsh-subagent-fork-lite#main"` — the package `prepare` script builds with production dependencies; approve `esbuild` (and any other keys the CLI prints) if install stops on `ERR_PNPM_IGNORED_BUILDS`.
- **npm channel** (published releases): `dsh plugin --profile web add dsh-subagent-fork-lite`.
- **tarball channel**: `pnpm pack` in this repo, then `dsh plugin --profile web add ./dsh-subagent-fork-lite-.tgz`.
- **uninstall**: `dsh plugin --profile web remove dsh-subagent-fork-lite` (or remove the row from the profile patch).
Or insert the package into your profile patch (see [`cordis.patch.yml`](cordis.patch.yml)).
## Configuration
All tunables are Schemastery `Config` fields (changeable from cordis.yml). An **id-targeted override replaces the whole config row** — restate every key you need.
| Field | Default | Meaning |
|---|---|---|
| `providerName` | `fork-lite` | Name registered on `ctx.subagents` |
| `maxCompletedTurns` | `2` | Number of completed parent turns to seed; `0` seeds nothing |
```yaml
- insert:
- id: subagent-fork-lite
name: dsh-subagent-fork-lite
config:
providerName: fork-lite
maxCompletedTurns: 2
```
### Multiple budgets
Seed size is fixed per mounted instance. For different windows, mount more than one row:
```yaml
- insert:
- id: subagent-fork-lite-2
name: dsh-subagent-fork-lite
config:
providerName: fork-lite-2
maxCompletedTurns: 2
- id: subagent-fork-lite-5
name: dsh-subagent-fork-lite
config:
providerName: fork-lite-5
maxCompletedTurns: 5
```
Then start with the provider name you need.
## Usage
```ts
const run = await ctx.subagents.start('fork-lite', {
parent,
prompt: [{ type: 'text', text: 'Your task for the child…' }],
signal,
// optional per-start route overrides:
agentOptions: { provider: 'deepseek-official', model: '…' },
// optional: toolFilter, persona, outputSchema, maxDepth, label
})
const result = await run.result
await run.dispose()
```
Omit `agentOptions` to inherit the parent’s LLM provider and model.
## Tools & surfaces
| Surface | Kind | Notes |
|---|---|---|
| `fork-lite` (configurable) | subagent provider | Registered on `ctx.subagents`; used via `subagents.start(providerName, …)` |
| `cordis.patch.yml` | bundle patch | Default insert row for profile install |
No commands, session projections, or client UI.
## How seeding works
1. Read the parent session log through the last `turn/end` (completed-turn prefix).
2. Keep only the last `maxCompletedTurns` of those turns.
3. Renumber event `seq` values to `0…k` so the child session accepts the seed.
4. Hand the seed to the in-process run driver; the child’s first user message is your `prompt`.
The child then runs in its own session. Later parent turns are not shared live — the seed is a one-time snapshot at start.
### What the seed contains
Within the kept turns, the child receives the parent’s logged events (user/assistant messages, tool calls/results, turn markers, and other events in that window). Surface history derived from those events is what the model sees.
### What it does not contain
- Parent turns older than the window
- The parent’s current open turn
- Custom or synthetic messages defined outside the parent log
## Capabilities
| Capability | Supported |
|---|---|
| `agentOptions` | yes |
| `outputSchema` | yes |
| `depthLimit` | yes |
| `toolFilter` | yes |
| `persona` | yes |
| Continuable prep (`prepareContinuable`) | yes (seed captured once at creation) |
## Known limitations
- Seed policy is Cordis config only — not a field on each `start()` call. Use multiple mounted provider names for discrete budgets.
- Window size is measured in **completed turns**, not characters or tokens.
- A window that includes surface replaces whose `sourceEventSeqs` point outside the window cannot be renumbered and will fail seed construction.
- On `0.1.6-alpha.1+`, synchronous `session.snapshotEvents()` is deprecated; this provider still uses it (same deferred migration as stock `fork`).
- Fresh AGENTS.md / runtime injects after start are separate from the seed (`agent/pre-step`); callers that need isolation must filter those themselves.
## License
Apache-2.0
数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。