@deepseek-insight/dsi 0.6.5 → 0.6.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/dsi-skill-shelf/shelf.mjs +151 -23
- package/build/client/_app/immutable/assets/0.CRU0GiZX.css +2 -0
- package/build/client/_app/immutable/chunks/C1F3aCiz.js +2 -0
- package/build/client/_app/immutable/chunks/CmnxnK6v.js +1 -0
- package/build/client/_app/immutable/chunks/{BsHqd_cH.js → UkmEG9Ws.js} +1 -1
- package/build/client/_app/immutable/chunks/jugX_o5s.js +1 -0
- package/build/client/_app/immutable/entry/{app.BXy5ddPi.js → app.e7xoYywe.js} +2 -2
- package/build/client/_app/immutable/entry/start.CnkkMjJa.js +1 -0
- package/build/client/_app/immutable/nodes/{1.i0ZfDYTy.js → 1.E4wiL8sP.js} +1 -1
- package/build/client/_app/immutable/nodes/{2.BSH_1C9p.js → 2.BBV-AGuB.js} +101 -96
- package/build/client/_app/version.json +1 -1
- package/build/handler.js +4 -4
- package/build/index.js +4 -4
- package/build/server/chunks/chunks/{engine2.js-BRoFbCnL.js → engine2.js-BXbaI0o-.js} +6 -3
- package/build/server/chunks/chunks/{internal.js-4KmCgr7P.js → internal.js-BnJXHc1S.js} +2 -2
- package/build/server/chunks/chunks/{state.js-Clfg_Bi6.js → state.js-CAjHzrRZ.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/skills/install/{_server.ts.js-DyzPF_Z5.js → _server.ts.js-JWyeMT3E.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/skills/reload/{_server.ts.js-lJhCBpB2.js → _server.ts.js-CI_3uFaD.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/skills/reload/cancel/{_server.ts.js-DT52g6_a.js → _server.ts.js-L_hU8UA2.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/skills/snapshot/{_server.ts.js-Ct_PmlXs.js → _server.ts.js-C2Xvy2rv.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/skills/uninstall/{_server.ts.js-D_NXkZEr.js → _server.ts.js-DQjGVZ0O.js} +2 -2
- package/build/server/chunks/entries/pages/{_error.svelte.js-VUpHsiKM.js → _error.svelte.js-BXeIuPj-.js} +3 -3
- package/build/server/chunks/entries/pages/{_page.svelte.js-Dwroj-cb.js → _page.svelte.js-CW-EdJ00.js} +41 -10
- package/build/server/chunks/{handler-BNCD1i7S.js → handler-DimUSmTW.js} +3 -3
- package/build/server/chunks/{index.js-Cla9NLvA.js → index.js-BQUp4Xgn.js} +2 -2
- package/build/server/chunks/{manifest.js-CmjuOLMb.js → manifest.js-BWy6zgHL.js} +10 -10
- package/build/server/chunks/nodes/{0.js-PpYt5eF3.js → 0.js-B0560RI0.js} +3 -3
- package/build/server/chunks/nodes/1.js-DJ3dsgdq.js +9 -0
- package/build/server/chunks/nodes/{2.js-BljKgZ5E.js → 2.js-CzgP_zp4.js} +3 -3
- package/package.json +2 -1
- package/{.agents/skills → skills}/dsh-jump-prepare-fix/SKILL.md +5 -0
- package/skills/dsi-rca/SKILL.md +103 -0
- package/skills/dsi-rca/references/mermaid-rules.md +46 -0
- package/skills/dsi-rca/references/rca-template.md +88 -0
- package/template/.dsi/prompts.sqlite +0 -0
- package/template/.dsi/resources/plugins-reff.md +3 -1
- package/template/.dsi/resources/skills-reff.md +1 -2
- package/template/dsh-app-dev-preset/README.md +69 -0
- package/template/dsh-app-dev-preset/cordis.patch.yml +219 -0
- package/template/dsh-app-dev-preset/package.json +7 -0
- package/template/dsh-research-preset/README.md +57 -0
- package/template/dsh-research-preset/cordis.patch.yml +118 -0
- package/template/dsh-research-preset/package.json +7 -0
- package/build/client/_app/immutable/assets/0.Cz4GQ8ND.css +0 -2
- package/build/client/_app/immutable/chunks/C_dVU9t5.js +0 -1
- package/build/client/_app/immutable/chunks/Cgyrc8XY.js +0 -2
- package/build/client/_app/immutable/chunks/DvyUTC20.js +0 -1
- package/build/client/_app/immutable/entry/start.DwMkMSKE.js +0 -1
- package/build/server/chunks/nodes/1.js-CsqcOUEA.js +0 -9
- /package/build/client/_app/immutable/nodes/{0.CKr_pvH3.js → 0.k1Ikzbp6.js} +0 -0
- /package/{.agents/skills → skills}/dsi-adr/SKILL.md +0 -0
- /package/{.agents/skills → skills}/dsi-bump-up/SKILL.md +0 -0
- /package/{.agents/skills → skills}/dsi-i18n-migrate/SKILL.md +0 -0
- /package/{.agents/skills → skills}/dsi-release/SKILL.md +0 -0
- /package/{.agents/skills → skills}/dsi-spcheck/SKILL.md +0 -0
- /package/{.agents/skills → skills}/dsi-spec/SKILL.md +0 -0
- /package/{.agents/skills → skills}/dsi-spec/references/mermaid-pattern.md +0 -0
- /package/{.agents/skills → skills}/dsi-spec/references/tasks-json-template.md +0 -0
- /package/{.agents/skills → skills}/dsi-sync/SKILL.md +0 -0
- /package/{.agents/skills → skills}/dsi-task/SKILL.md +0 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Mermaid Rules for RCAs — Syntax Gates & Diagram Choices
|
|
2
|
+
|
|
3
|
+
Companion to `rca-template.md`. Same discipline as dsi-spec's
|
|
4
|
+
`references/mermaid-pattern.md`: mermaid is grammar, not decoration — an
|
|
5
|
+
unparsable block renders as raw text and fails the narrative contract as
|
|
6
|
+
surely as a missing diagram.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Which diagram, when
|
|
11
|
+
|
|
12
|
+
| Situation | Diagram | Why |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| One defect's decision → consequence → symptom chain | `flowchart TD` | Shows how a reasonable choice at time T became a defect at time T+1 — the root in root-cause. |
|
|
15
|
+
| Actors hand state/messages to each other (operator → component → runtime → clone) | `sequenceDiagram` | A flowchart shows how state went bad; the sequence shows WHO handed it over. |
|
|
16
|
+
| Multi-defect RCA | one flowchart per defect + at least one sequence for the shared actor story | Per-defect chains stay readable; the sequence carries the shared root. |
|
|
17
|
+
|
|
18
|
+
Hard floor: **every failure chain gets a flowchart; every multi-actor
|
|
19
|
+
hand-off gets a sequence.** A multi-defect RCA with zero diagrams cannot
|
|
20
|
+
pass the self-audit.
|
|
21
|
+
|
|
22
|
+
## Syntax gates (each one has broken a real diagram)
|
|
23
|
+
|
|
24
|
+
1. **No `;` in message or label text** — mermaid treats it as a statement
|
|
25
|
+
separator and silently eats the rest of the line.
|
|
26
|
+
2. **`<br/>` for line breaks inside node labels** — literal newlines inside
|
|
27
|
+
`["…"]` labels are unreliable across renderers.
|
|
28
|
+
3. **Single-token participant/actor names** — long names go on the `as`
|
|
29
|
+
clause: `participant Op as You (operator)`.
|
|
30
|
+
4. **Every `alt`/`else`/`opt`/`loop` closes with `end`.**
|
|
31
|
+
5. **Quote every node label** — `A["text (with parens)"]`; unquoted parens
|
|
32
|
+
and slashes are the classic parse error.
|
|
33
|
+
6. **Edge labels are pipes with quotes**: `-->|"label text"`.
|
|
34
|
+
7. **Validate before claiming done** — `mermaid.parse` in a scratch node
|
|
35
|
+
script, or the Preview tab in Zed, or DSI's own MarkdownContent preview.
|
|
36
|
+
An unparsable block is requirement-failing, cosmetic-fixable-later.
|
|
37
|
+
|
|
38
|
+
## Accessibility & tone
|
|
39
|
+
|
|
40
|
+
- Label text carries the *narrative* ("the reasonable decision at time T"),
|
|
41
|
+
not ids (`A`, `B`) — a diagram read aloud must still tell the story.
|
|
42
|
+
- Dotted edges (`-.->`) mark dead ends and disconnected paths (the legacy
|
|
43
|
+
folder that nothing reads) — visual grammar for "not part of the live
|
|
44
|
+
chain".
|
|
45
|
+
- Keep flowcharts ≤ ~8 boxes; split into per-defect diagrams rather than one
|
|
46
|
+
spaghetti graph.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# RCA Template — The Skeleton (copy verbatim, delete the guidance, keep the headings)
|
|
2
|
+
|
|
3
|
+
The bracketed guidance in each section explains the depth that section owes.
|
|
4
|
+
Guidance is scaffolding: it ships in the skill, never in the finished RCA.
|
|
5
|
+
|
|
6
|
+
The exemplar that shows this template fully lived:
|
|
7
|
+
`dev/kb/rca/2026-10-06 - RCA — The Renderer That Told the Truth Badly
|
|
8
|
+
(Dull Diagrams, Single-Line Tables, Captures From the Top).md`.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
````markdown
|
|
13
|
+
# RCA — <The Name: a memorable claim about the defect, not its title>
|
|
14
|
+
|
|
15
|
+
> RCA note, YYYY-MM-DD. <Two or three sentences in plain language: what
|
|
16
|
+
> broke, for whom, and the shape of the cause. If multiple defects, say how
|
|
17
|
+
> many and promise the shared root. Cite the fix commits by sha.>
|
|
18
|
+
|
|
19
|
+
## The complaints, in the operator's own words
|
|
20
|
+
<Numbered verbatim quotes of each defect report (user words, test names, or
|
|
21
|
+
error text). These are the entrance of the story — never paraphrase them
|
|
22
|
+
into jargon here.>
|
|
23
|
+
|
|
24
|
+
## Words used below (layman glossary)
|
|
25
|
+
| Word | Meaning in this note |
|
|
26
|
+
|---|---|
|
|
27
|
+
| **<term>** | <One plain sentence. Every jargon word the body uses lands here first.> |
|
|
28
|
+
|
|
29
|
+
## The shared root, in one paragraph
|
|
30
|
+
<For multi-defect RCAs: the single underlying cause the individual bugs
|
|
31
|
+
share — a stale default, an inherited property, a missing contract. For a
|
|
32
|
+
single-defect RCA, this section merges into the first bug's story.>
|
|
33
|
+
|
|
34
|
+
## Bug 1 — <A name that states the defect as a claim>
|
|
35
|
+
### The failure chain
|
|
36
|
+
```mermaid
|
|
37
|
+
flowchart TD
|
|
38
|
+
A["<the reasonable decision at time T>"] --> B["<the inherited consequence>"]
|
|
39
|
+
B --> C["<the visible symptom>"]
|
|
40
|
+
C --> D["<the operator-visible complaint>"]
|
|
41
|
+
```
|
|
42
|
+
### The fix, and the trap inside it
|
|
43
|
+
<Narrative: what changed, then the secondary defect the fix itself nearly
|
|
44
|
+
introduced (there almost always is one — the inheritance chain, the false
|
|
45
|
+
positive, the escaped emergency net). Say how the trap was caught
|
|
46
|
+
(simulation, test, preview) and why that catcher works.>
|
|
47
|
+
|
|
48
|
+
<Repeat Bug N for each defect.>
|
|
49
|
+
|
|
50
|
+
## <A mermaid sequenceDiagram whenever actors hand state to each other>
|
|
51
|
+
<operator → component → runtime → clone; label each arrow with the actual
|
|
52
|
+
call or mutation. See references/mermaid-rules.md for syntax gates.>
|
|
53
|
+
|
|
54
|
+
## What does NOT change
|
|
55
|
+
<Explicit blast-radius bounds: the older protections still standing, the
|
|
56
|
+
modes untouched, the inputs that behave exactly as before.>
|
|
57
|
+
|
|
58
|
+
## What to carry forward
|
|
59
|
+
<Numbered portable lessons, each phrased as a rule with its earning trap
|
|
60
|
+
attached. "Be careful" is not a lesson; "a clone is a photograph of a fresh
|
|
61
|
+
document" is.>
|
|
62
|
+
````
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Section-by-section depth guide
|
|
67
|
+
|
|
68
|
+
- **The Name** — a claim someone remembers in six months ("The Photograph
|
|
69
|
+
That Reframed Itself"), never the component's name alone ("CanvasCopyButton
|
|
70
|
+
RCA").
|
|
71
|
+
- **The complaints** — the operator's words are the entrance of the story.
|
|
72
|
+
Paraphrasing them into jargon here defeats the whole narrative contract.
|
|
73
|
+
- **The glossary** — every jargon word the body will use, one plain sentence
|
|
74
|
+
each, BEFORE the body. A newcomer reads top-to-bottom without opening the
|
|
75
|
+
codebase.
|
|
76
|
+
- **The shared root** — one paragraph. If you cannot write it, you have a
|
|
77
|
+
changelog, not an RCA: either find the cause the bugs share or split the
|
|
78
|
+
note.
|
|
79
|
+
- **Failure chains** — the chain shows how a *reasonable* choice at time T
|
|
80
|
+
became a defect at time T+1. If your chain's first box is already a
|
|
81
|
+
mistake, you are narrating blame, not cause.
|
|
82
|
+
- **The trap inside the fix** — there almost always is one (an inheritance
|
|
83
|
+
chain, a false positive, an escaped emergency net). An RCA that reports a
|
|
84
|
+
clean one-step fix is usually hiding it. Say how the trap was caught
|
|
85
|
+
(simulation, test, preview) and why that catcher works.
|
|
86
|
+
- **What to carry forward** — rules with their earning trap attached.
|
|
87
|
+
"Be careful" is not a lesson; "a clone is a photograph of a fresh
|
|
88
|
+
document" is.
|
|
Binary file
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
Plugins Resources:
|
|
2
|
-
1. [dsh
|
|
2
|
+
1. [superpowers-dsh](https://github.com/LayneChai/superpowers-dsh) - [LayneChai](https://github.com/LayneChai)
|
|
3
|
+
2. [dsh-agent-teams(*)](https://github.com/NanmiCoder/dsh-agent-teams) - [NanmiCoder](https://github.com/NanmiCoder)
|
|
4
|
+
3. [sandbase-harness](https://github.com/sandbaseai/sandbase-harness) - [sandbaseai](https://github.com/sandbaseai)
|
|
@@ -5,5 +5,4 @@ Skills Resources:
|
|
|
5
5
|
4. [web-quality-skills](https://github.com/addyosmani/web-quality-skills) - [Addy Osmani](https://www.linkedin.com/in/addyosmani/)
|
|
6
6
|
5. [agent-skills](https://github.com/addyosmani/agent-skills) - [Addy Osmani](https://www.linkedin.com/in/addyosmani/)
|
|
7
7
|
6. [impeccable](https://github.com/pbakaus/impeccable) - [Paul Bakaus](https://www.linkedin.com/in/paulbakaus/)
|
|
8
|
-
7. [
|
|
9
|
-
8. [ECC](https://github.com/affaan-m/ECC/tree/main) - [Affaan M](https://www.linkedin.com/in/affaan-m/)
|
|
8
|
+
7. [deepseek-insight](https://github.com/mitmplay/deepseek-insight) - [Wharsojo](https://www.linkedin.com/in/wharsojo/)
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# dsh-app-dev-preset — agent-preset bundle template
|
|
2
|
+
|
|
3
|
+
A starting point for a **user agent-preset bundle** for DeepSeek Harness
|
|
4
|
+
(DSH). (An *agent preset* is a recipe for one kind of agent; in DSI it appears as
|
|
5
|
+
a button in the session filter row.) Copy it, rename the identity, register it on the host profile, restart.
|
|
6
|
+
Full mechanics: `dev/kb/agent-presets/2026-10-06 - The Preset Bundle — Author,
|
|
7
|
+
Register, Remove an Agent Preset.md`. Decision record: ADR-0015 (2026-10-06).
|
|
8
|
+
|
|
9
|
+
## Files
|
|
10
|
+
|
|
11
|
+
- `package.json` — bundle manifest; `dsh.bundle.patch` points the loader at
|
|
12
|
+
the patch file. Rename `name` to `@local/dsh-<my-id>-preset`.
|
|
13
|
+
- `cordis.patch.yml` — inserts the preset row (`id`, `name`, `description`,
|
|
14
|
+
`order`) plus the agent-plane plugin composition (persona, tools, skills,
|
|
15
|
+
goals, plan mode, subagents, workflows, web).
|
|
16
|
+
|
|
17
|
+
## 1. Copy the template
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
cp -R ~/agentic-ai/deepseek-insight/template/dsh-app-dev-preset ~/agentic-ai/<my-id>-preset
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Then in the copy:
|
|
24
|
+
|
|
25
|
+
1. `package.json`: set `"name": "@local/dsh-<my-id>-preset"`.
|
|
26
|
+
2. `cordis.patch.yml`: change the insert row —
|
|
27
|
+
- `id: preset-<my-id>` (entry id),
|
|
28
|
+
- `config.id: <my-id>` (the preset id DSI filters on),
|
|
29
|
+
- `config.name` / `config.description` (roster copy),
|
|
30
|
+
- `config.order` (roster sort; shipped `standard`-class presets sit low).
|
|
31
|
+
3. Trim or keep the `plugins:` list. **Realm rule:** any row consuming
|
|
32
|
+
`compaction` / `toolResultPruner` (or publishing a process-global
|
|
33
|
+
service) must sit inside the matching `cordis:group` with `isolate:` —
|
|
34
|
+
loose rows fail the mount audit (*The Preset That Waited*, 2026-09-12).
|
|
35
|
+
|
|
36
|
+
## 2. Register on the host
|
|
37
|
+
|
|
38
|
+
Edit `~/.dsh/profiles/web/package.json` and add the dependency plus its
|
|
39
|
+
`link:` specifier (mirroring how `@local/dsh-app-dev-preset` is wired):
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@local/dsh-<my-id>-preset": "link:/Users/wharsojo/agentic-ai/<my-id>-preset"
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Then:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
cd ~/.dsh/profiles/web && pnpm install
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Restart `dsh web` — the registry is populated at boot; there is no watcher.
|
|
54
|
+
|
|
55
|
+
## 3. Remove
|
|
56
|
+
|
|
57
|
+
1. Delete the `@local/dsh-<my-id>-preset` entries from
|
|
58
|
+
`~/.dsh/profiles/web/package.json`.
|
|
59
|
+
2. `cd ~/.dsh/profiles/web && pnpm install`.
|
|
60
|
+
3. Restart `dsh web`; delete the bundle directory if desired.
|
|
61
|
+
|
|
62
|
+
Do **not** bother with `~/.dsh/.agent-presets/<id>/` — that legacy directory
|
|
63
|
+
is not read by anything any more.
|
|
64
|
+
|
|
65
|
+
## The prompt part
|
|
66
|
+
|
|
67
|
+
The only prompt text in the bundle is the `persona` row's `config.prefix`
|
|
68
|
+
(`{{model}}` / `{{cwd}}` resolve per session). Everything else is plugin
|
|
69
|
+
composition — capability, not wording.
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
- insert:
|
|
2
|
+
- id: preset-app-dev
|
|
3
|
+
name: '@deepseek-ai/dsh-agent-preset'
|
|
4
|
+
config:
|
|
5
|
+
id: app-dev
|
|
6
|
+
name: App Dev
|
|
7
|
+
description: >-
|
|
8
|
+
Full application-development agent: bash, file edit/search, skills, plan mode, goals, subagents, workflows, and web lookup, with a build-and-verify persona.
|
|
9
|
+
order: 10
|
|
10
|
+
plugins:
|
|
11
|
+
# The `app-dev` agent preset: a full-capability application developer.
|
|
12
|
+
#
|
|
13
|
+
# Same tool stack as the shipped `standard` preset (bash/pwsh, filesystem edit
|
|
14
|
+
# and search, skills, goals, plan mode, subagents, workflows, web, todo, ask),
|
|
15
|
+
# with a persona specialized for building and shipping applications.
|
|
16
|
+
#
|
|
17
|
+
# AGENT-PLANE composition: mounted once per process under a standing scope;
|
|
18
|
+
# sessions naming it join by scope parentage. Host plane keeps the registries,
|
|
19
|
+
# sandbox, approval stack, persistence, and the model route. Service rows MUST
|
|
20
|
+
# sit inside a group carrying an `isolate` realm (entry-local private instance)
|
|
21
|
+
# or `dsh-agent-presets` rejects the mount.
|
|
22
|
+
|
|
23
|
+
# ── identity ────────────────────────────────────────────────────────────────
|
|
24
|
+
|
|
25
|
+
# This preset's persona, shadowing the deployment default for joined agents.
|
|
26
|
+
# `{{model}}` and `{{cwd}}` resolve from the agent's own route and workspace.
|
|
27
|
+
- id: persona
|
|
28
|
+
name: '@deepseek-ai/dsh-persona'
|
|
29
|
+
config:
|
|
30
|
+
prefix: >-
|
|
31
|
+
You are app-dev, an application development agent powered by the {{model}} model.
|
|
32
|
+
Your working directory is {{cwd}}.
|
|
33
|
+
|
|
34
|
+
You build, debug, and ship software end to end. Prefer existing patterns
|
|
35
|
+
and dependencies over new machinery; keep changes minimal and reviewed.
|
|
36
|
+
Verify work by running code, tests, and typechecks before claiming done.
|
|
37
|
+
When a task spans many steps, write a plan first, track it with todos,
|
|
38
|
+
and delegate isolated read-only investigation to subagents.
|
|
39
|
+
|
|
40
|
+
Prefer one program over consecutive programs. When the next planned
|
|
41
|
+
run_code needs no decision that depends on seeing the previous program's
|
|
42
|
+
uncondensed result, batch the steps into a single program and chain them
|
|
43
|
+
with variables. Split only when a stage's outcome must re-enter your
|
|
44
|
+
reasoning, or when the combined program would exceed the timeout (then
|
|
45
|
+
use a background job).
|
|
46
|
+
|
|
47
|
+
When a program enumerates files or targets, cover the full symmetric
|
|
48
|
+
set in that one program; use try/catch fallbacks for missing members
|
|
49
|
+
instead of follow-up probes.
|
|
50
|
+
|
|
51
|
+
- id: agent-instructions
|
|
52
|
+
name: '@deepseek-ai/dsh-agent-instructions'
|
|
53
|
+
config:
|
|
54
|
+
maxBytes: 65536
|
|
55
|
+
|
|
56
|
+
# ── shell ───────────────────────────────────────────────────────────────────
|
|
57
|
+
|
|
58
|
+
# One-shot shell tools; executors (bash-sandbox/pwsh-sandbox) stay host-plane.
|
|
59
|
+
- id: tool-bash
|
|
60
|
+
name: '@deepseek-ai/dsh-tool-bash'
|
|
61
|
+
disabled: !!js process.platform === 'win32'
|
|
62
|
+
|
|
63
|
+
- id: tool-pwsh
|
|
64
|
+
name: '@deepseek-ai/dsh-tool-pwsh'
|
|
65
|
+
disabled: !!js process.platform !== 'win32'
|
|
66
|
+
|
|
67
|
+
# ── filesystem ──────────────────────────────────────────────────────────────
|
|
68
|
+
|
|
69
|
+
# Both register into the host `tools` registry and provide nothing: no realm.
|
|
70
|
+
- id: tool-fs
|
|
71
|
+
name: '@deepseek-ai/dsh-tool-fs'
|
|
72
|
+
|
|
73
|
+
- id: tool-fs-search
|
|
74
|
+
name: '@deepseek-ai/dsh-tool-fs-search'
|
|
75
|
+
config:
|
|
76
|
+
sampleOverCapGlobResults: false
|
|
77
|
+
|
|
78
|
+
# ── background jobs ────────────────────────────────────────────────────────
|
|
79
|
+
|
|
80
|
+
# Model-facing controls only; the task registry stays on the host plane.
|
|
81
|
+
- id: tool-jobs
|
|
82
|
+
name: '@deepseek-ai/dsh-tool-jobs'
|
|
83
|
+
|
|
84
|
+
# ── skills ──────────────────────────────────────────────────────────────────
|
|
85
|
+
|
|
86
|
+
- id: skill-filesystem
|
|
87
|
+
name: '@deepseek-ai/dsh-skill-filesystem'
|
|
88
|
+
|
|
89
|
+
- id: tool-skill
|
|
90
|
+
name: '@deepseek-ai/dsh-tool-skill'
|
|
91
|
+
|
|
92
|
+
# ── goals ───────────────────────────────────────────────────────────────────
|
|
93
|
+
|
|
94
|
+
- id: tool-goal
|
|
95
|
+
name: '@deepseek-ai/dsh-tool-goal'
|
|
96
|
+
|
|
97
|
+
# ── plan mode ───────────────────────────────────────────────────────────────
|
|
98
|
+
|
|
99
|
+
# Plan state is per-agent by nature: entry-local realm is the correct lifetime.
|
|
100
|
+
- id: planning
|
|
101
|
+
name: cordis:group
|
|
102
|
+
group: true
|
|
103
|
+
isolate:
|
|
104
|
+
planMode: true
|
|
105
|
+
config:
|
|
106
|
+
- id: plan-mode
|
|
107
|
+
name: '@deepseek-ai/dsh-plan-mode'
|
|
108
|
+
config:
|
|
109
|
+
section: |
|
|
110
|
+
You are in plan mode. Stay in plan mode until exit_plan_mode succeeds or the user switches the session mode. Imperative language to implement changes means plan the implementation, not execute it. A user's conversational agreement — including an answer confirming something you asked — approves nothing and does not end plan mode; fold the confirmed decision into the plan and submit it through exit_plan_mode.
|
|
111
|
+
|
|
112
|
+
Explore first. Use non-mutating reads, searches, static analysis, and checks to ground the plan in the actual repository. Do not edit or write files, change configuration, run formatters or code generation that rewrites tracked files, commit, or otherwise carry out the plan. Prefer existing functions and patterns over new machinery.
|
|
113
|
+
|
|
114
|
+
The tool catalog stays the same across modes for request-cache stability. These plan-mode rules override any later tool description or guidance that suggests using mutation tools; those tools remain listed to keep the tool catalog unchanged. Do not use todo_write to track this planning phase: it tracks implementation after an approved plan, while the plan itself belongs in exit_plan_mode.
|
|
115
|
+
|
|
116
|
+
Resolve discoverable facts by inspection. Use ask_user_question only for user-owned choices or material ambiguity that inspection cannot answer. Do not ask the user where code lives or how current behavior works when you can find out.
|
|
117
|
+
|
|
118
|
+
Make the plan decision-complete: state the goal and success criteria; group implementation changes by subsystem; identify public API, schema, and data-flow changes; cover edge cases, failure modes, tests, acceptance criteria, and explicit assumptions. Keep it concise enough to review but detailed enough that another engineer can implement it without making design decisions.
|
|
119
|
+
|
|
120
|
+
When ready, call exit_plan_mode with the complete plan markdown, starting with a # title. Make exit_plan_mode the only and final tool call in that assistant response: it presents the plan for approval, and implementation begins only in a later step after approval. Do not paste the final plan as a plain reply or ask "should I proceed?" through prose or ask_user_question. If review rejects it, incorporate the feedback and present again. If the review channel is unavailable or aborted, stay in plan mode and ask the user to switch modes manually; do not proceed to implementation.
|
|
121
|
+
|
|
122
|
+
# ── compaction ──────────────────────────────────────────────────────────────
|
|
123
|
+
|
|
124
|
+
# compaction-basic reads toolResultPrune through ctx.get: same realm.
|
|
125
|
+
# command-compact and the pruner live INSIDE the group — 0.2.1.x rejects
|
|
126
|
+
# preset rows that consume an isolate realm from outside it.
|
|
127
|
+
- id: compaction
|
|
128
|
+
name: cordis:group
|
|
129
|
+
group: true
|
|
130
|
+
isolate:
|
|
131
|
+
compaction: true
|
|
132
|
+
toolResultPruner: true
|
|
133
|
+
config:
|
|
134
|
+
- id: compaction-basic
|
|
135
|
+
name: '@deepseek-ai/dsh-compaction-basic'
|
|
136
|
+
|
|
137
|
+
- id: command-compact
|
|
138
|
+
name: '@deepseek-ai/dsh-command-compact'
|
|
139
|
+
|
|
140
|
+
- id: tool-result-pruner
|
|
141
|
+
name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
|
|
142
|
+
config:
|
|
143
|
+
thresholdChars: 8192
|
|
144
|
+
headChars: 4096
|
|
145
|
+
tailChars: 1024
|
|
146
|
+
|
|
147
|
+
# ── delegation and workflows ────────────────────────────────────────────────
|
|
148
|
+
|
|
149
|
+
# The subagents registry and spawn/fork backends stay host-plane; this preset
|
|
150
|
+
# contributes the delegation tools. Workflows share one entry-local realm.
|
|
151
|
+
- id: delegation
|
|
152
|
+
name: cordis:group
|
|
153
|
+
group: true
|
|
154
|
+
isolate:
|
|
155
|
+
workflowEngine: true
|
|
156
|
+
config:
|
|
157
|
+
- id: tool-subagent-control
|
|
158
|
+
name: '@deepseek-ai/dsh-tool-subagent-control'
|
|
159
|
+
|
|
160
|
+
- id: tool-subagent-list-agents
|
|
161
|
+
name: '@deepseek-ai/dsh-tool-subagent-control/list-agents'
|
|
162
|
+
|
|
163
|
+
- id: tool-subagent
|
|
164
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
165
|
+
config:
|
|
166
|
+
provider: spawn
|
|
167
|
+
toolName: subagent
|
|
168
|
+
backgroundMode: continuable
|
|
169
|
+
|
|
170
|
+
- id: tool-subagent-fork
|
|
171
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
172
|
+
config:
|
|
173
|
+
provider: fork
|
|
174
|
+
toolName: subagent_fork
|
|
175
|
+
backgroundMode: continuable
|
|
176
|
+
|
|
177
|
+
- id: workflow-ptc
|
|
178
|
+
name: '@deepseek-ai/dsh-workflow-ptc'
|
|
179
|
+
config:
|
|
180
|
+
provider: spawn
|
|
181
|
+
|
|
182
|
+
- id: tool-workflow
|
|
183
|
+
name: '@deepseek-ai/dsh-tool-workflow'
|
|
184
|
+
|
|
185
|
+
- id: tool-ralph
|
|
186
|
+
name: '@deepseek-ai/dsh-tool-ralph'
|
|
187
|
+
config:
|
|
188
|
+
subagentProvider: spawn
|
|
189
|
+
maxRounds: 64
|
|
190
|
+
|
|
191
|
+
# ── remaining model-facing rows ─────────────────────────────────────────────
|
|
192
|
+
|
|
193
|
+
- id: tool-ask-user
|
|
194
|
+
name: '@deepseek-ai/dsh-tool-ask-user'
|
|
195
|
+
|
|
196
|
+
- id: tool-todo
|
|
197
|
+
name: '@deepseek-ai/dsh-tool-todo'
|
|
198
|
+
config:
|
|
199
|
+
allowParallelInProgress: true
|
|
200
|
+
|
|
201
|
+
# The web service and its search provider stay in the host composition; only
|
|
202
|
+
# the model-facing tool is per-session. Docs lookup for developers.
|
|
203
|
+
- id: tool-web
|
|
204
|
+
name: '@deepseek-ai/dsh-tool-web'
|
|
205
|
+
config:
|
|
206
|
+
fetch: false
|
|
207
|
+
searchTimeoutMs: 60000
|
|
208
|
+
|
|
209
|
+
# ── presentation ────────────────────────────────────────────────────────────
|
|
210
|
+
|
|
211
|
+
# PTC mode for this agent alone — the run_code front door (one callable tool;
|
|
212
|
+
# every other tool reaches the model only as tools.name(...) sub-calls inside
|
|
213
|
+
# a program). The row waits for the host's codeRuntime rather than assuming
|
|
214
|
+
# it: a deployment that composes no TypeScript runtime fails this preset at
|
|
215
|
+
# mount, naming this id, instead of at the first request.
|
|
216
|
+
- id: tool-presentation
|
|
217
|
+
name: '@deepseek-ai/dsh-agent-tool-presentation'
|
|
218
|
+
config:
|
|
219
|
+
mode: ptc
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# dsh-research-preset — agent-preset bundle template (read-only research agent)
|
|
2
|
+
|
|
3
|
+
A **user agent-preset bundle** for DeepSeek Harness (DSH) in the current
|
|
4
|
+
(new-format) bundle shape: `package.json` + `cordis.patch.yml`. The legacy
|
|
5
|
+
`preset.yml` + `agent.cordis.yml` pair this folder once carried is retired —
|
|
6
|
+
nothing reads that format any more; see
|
|
7
|
+
`dev/kb/agent-presets/2026-10-06 - The Preset Bundle….md` for the full
|
|
8
|
+
story, and `../dsh-app-dev-preset/` for the sibling application-developer
|
|
9
|
+
template.
|
|
10
|
+
|
|
11
|
+
## What this preset is
|
|
12
|
+
|
|
13
|
+
**Research** — a deliberately tool-poor, read-only investigation agent:
|
|
14
|
+
web search, codebase search/read, skills, todos, goals, compaction for long
|
|
15
|
+
sessions. **No shell, no file editing, no plan mode, no subagents.** When a
|
|
16
|
+
task needs those, its persona says so and recommends the `app-dev` or
|
|
17
|
+
`main` agent.
|
|
18
|
+
|
|
19
|
+
## 1. Copy and rename
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
cp -R ~/agentic-ai/deepseek-insight/template/dsh-research-preset ~/agentic-ai/<my-id>-preset
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Then in the copy:
|
|
26
|
+
|
|
27
|
+
1. `package.json`: `"name": "@local/dsh-<my-id>-preset"`.
|
|
28
|
+
2. `cordis.patch.yml` insert row:
|
|
29
|
+
- `id: preset-<my-id>`, `config.id: <my-id>`,
|
|
30
|
+
- `config.name` / `config.description` (roster copy),
|
|
31
|
+
- `config.order` (research sits at 20; app-dev at 10),
|
|
32
|
+
- `config.plugins` — trim to the tools your agent should have. The
|
|
33
|
+
**realm rule**: rows consuming `compaction`/`toolResultPruner` (or
|
|
34
|
+
publishing process-global services) must stay inside the
|
|
35
|
+
`cordis:group` with the matching `isolate:`, or the mount audit
|
|
36
|
+
rejects the preset (*The Preset That Waited*, 2026-09-12).
|
|
37
|
+
|
|
38
|
+
The prompt lives in one place: the `persona` row's `config.prefix`
|
|
39
|
+
(`{{model}}` / `{{cwd}}` resolve per session). Roster metadata is never
|
|
40
|
+
prompt text.
|
|
41
|
+
|
|
42
|
+
## 2. Register
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@local/dsh-<my-id>-preset": "link:/Users/wharsojo/agentic-ai/<my-id>-preset"
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
in `~/.dsh/profiles/web/package.json`, then
|
|
51
|
+
`cd ~/.dsh/profiles/web && pnpm install` and **restart `dsh web`** (the
|
|
52
|
+
registry is populated at boot; there is no watcher).
|
|
53
|
+
|
|
54
|
+
## 3. Remove
|
|
55
|
+
|
|
56
|
+
Delete the dependency entries from the profile `package.json`,
|
|
57
|
+
`pnpm install`, restart the host. Folder deletion alone does nothing.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
- insert:
|
|
2
|
+
- id: preset-research
|
|
3
|
+
name: '@deepseek-ai/dsh-agent-preset'
|
|
4
|
+
config:
|
|
5
|
+
id: research
|
|
6
|
+
name: Research
|
|
7
|
+
description: >-
|
|
8
|
+
Read-only research agent: web search, codebase search/read, skills, todos,
|
|
9
|
+
and goals. No shell, no editing, no subagents — built for investigation and
|
|
10
|
+
cited synthesis.
|
|
11
|
+
order: 20
|
|
12
|
+
plugins:
|
|
13
|
+
# The `research` agent preset: a read-and-report research agent.
|
|
14
|
+
#
|
|
15
|
+
# Deliberately tool-poor: NO shell, NO file editing, NO plan mode, NO
|
|
16
|
+
# delegation — only web search and read-only filesystem inspection plus
|
|
17
|
+
# todos and goals. Long context is its laboratory, so compaction stays.
|
|
18
|
+
#
|
|
19
|
+
# AGENT-PLANE composition: mounted once per process under a standing scope.
|
|
20
|
+
# Rows that only register tools need no realm; this preset mounts no service
|
|
21
|
+
# groups at all.
|
|
22
|
+
|
|
23
|
+
# ── identity ────────────────────────────────────────────────────────────────
|
|
24
|
+
|
|
25
|
+
- id: persona
|
|
26
|
+
name: '@deepseek-ai/dsh-persona'
|
|
27
|
+
config:
|
|
28
|
+
prefix: >-
|
|
29
|
+
You are research, an investigation and synthesis agent powered by the
|
|
30
|
+
{{model}} model. Your working directory is {{cwd}}.
|
|
31
|
+
|
|
32
|
+
You answer questions by reading source and searching the web — never by
|
|
33
|
+
guessing. Read files first; search the web for anything the workspace
|
|
34
|
+
cannot answer. Cite what you use: file paths for code, URLs for web
|
|
35
|
+
findings. Distinguish clearly between what you verified and what you
|
|
36
|
+
infer. Summarize for a newcomer: define terms, keep a running structure,
|
|
37
|
+
and end with concrete next steps. You cannot edit files or run commands;
|
|
38
|
+
when a task needs them, say so and recommend the app-dev or main agent.
|
|
39
|
+
|
|
40
|
+
- id: agent-instructions
|
|
41
|
+
name: '@deepseek-ai/dsh-agent-instructions'
|
|
42
|
+
config:
|
|
43
|
+
maxBytes: 65536
|
|
44
|
+
|
|
45
|
+
# ── filesystem (read-oriented search only) ──────────────────────────────────
|
|
46
|
+
|
|
47
|
+
# tool-fs-search is glob/grep-style search; tool-fs adds read/write file
|
|
48
|
+
# access. Research keeps both minimal: search plus read. Writing is gated by
|
|
49
|
+
# the host approval stack anyway, but the catalog simply omits heavy edit
|
|
50
|
+
# affordances here.
|
|
51
|
+
- id: tool-fs-search
|
|
52
|
+
name: '@deepseek-ai/dsh-tool-fs-search'
|
|
53
|
+
config:
|
|
54
|
+
sampleOverCapGlobResults: false
|
|
55
|
+
|
|
56
|
+
- id: tool-fs
|
|
57
|
+
name: '@deepseek-ai/dsh-tool-fs'
|
|
58
|
+
|
|
59
|
+
# ── web ─────────────────────────────────────────────────────────────────────
|
|
60
|
+
|
|
61
|
+
# The web service and its search provider stay in the host composition; only
|
|
62
|
+
# the model-facing tool is per-session. This is research's primary tool.
|
|
63
|
+
- id: tool-web
|
|
64
|
+
name: '@deepseek-ai/dsh-tool-web'
|
|
65
|
+
config:
|
|
66
|
+
fetch: false
|
|
67
|
+
searchTimeoutMs: 60000
|
|
68
|
+
|
|
69
|
+
# ── skills ──────────────────────────────────────────────────────────────────
|
|
70
|
+
|
|
71
|
+
- id: skill-filesystem
|
|
72
|
+
name: '@deepseek-ai/dsh-skill-filesystem'
|
|
73
|
+
|
|
74
|
+
- id: tool-skill
|
|
75
|
+
name: '@deepseek-ai/dsh-tool-skill'
|
|
76
|
+
|
|
77
|
+
# ── goals ───────────────────────────────────────────────────────────────────
|
|
78
|
+
|
|
79
|
+
- id: tool-goal
|
|
80
|
+
name: '@deepseek-ai/dsh-tool-goal'
|
|
81
|
+
|
|
82
|
+
# ── background jobs ────────────────────────────────────────────────────────
|
|
83
|
+
|
|
84
|
+
- id: tool-jobs
|
|
85
|
+
name: '@deepseek-ai/dsh-tool-jobs'
|
|
86
|
+
|
|
87
|
+
# ── todos & interaction ─────────────────────────────────────────────────────
|
|
88
|
+
|
|
89
|
+
- id: tool-todo
|
|
90
|
+
name: '@deepseek-ai/dsh-tool-todo'
|
|
91
|
+
config:
|
|
92
|
+
allowParallelInProgress: true
|
|
93
|
+
|
|
94
|
+
- id: tool-ask-user
|
|
95
|
+
name: '@deepseek-ai/dsh-tool-ask-user'
|
|
96
|
+
|
|
97
|
+
# ── compaction ──────────────────────────────────────────────────────────────
|
|
98
|
+
|
|
99
|
+
# Research sessions run long; keep summarization with the pruner in one realm.
|
|
100
|
+
- id: compaction
|
|
101
|
+
name: cordis:group
|
|
102
|
+
group: true
|
|
103
|
+
isolate:
|
|
104
|
+
compaction: true
|
|
105
|
+
toolResultPruner: true
|
|
106
|
+
config:
|
|
107
|
+
- id: compaction-basic
|
|
108
|
+
name: '@deepseek-ai/dsh-compaction-basic'
|
|
109
|
+
|
|
110
|
+
- id: command-compact
|
|
111
|
+
name: '@deepseek-ai/dsh-command-compact'
|
|
112
|
+
|
|
113
|
+
- id: tool-result-pruner
|
|
114
|
+
name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
|
|
115
|
+
config:
|
|
116
|
+
thresholdChars: 8192
|
|
117
|
+
headChars: 4096
|
|
118
|
+
tailChars: 1024
|