@hawk2048/oh-my-dsh 0.2.0 → 0.3.2
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/LICENSE +21 -21
- package/README.md +246 -206
- package/README.zh.md +246 -0
- package/agent.cordis.yml +288 -0
- package/commands/omd-commands.mjs +150 -141
- package/cordis.patch.yml +20 -20
- package/index.js +8 -8
- package/install.ps1 +92 -0
- package/install.sh +81 -0
- package/package.json +44 -35
- package/preset.yml +2 -0
- package/skills/omd-ai-slop-cleaner/SKILL.md +43 -43
- package/skills/omd-autopilot/SKILL.md +51 -51
- package/skills/omd-autoresearch/SKILL.md +45 -45
- package/skills/omd-cancel/SKILL.md +36 -36
- package/skills/omd-debug/SKILL.md +35 -35
- package/skills/omd-deep-analyze/SKILL.md +36 -36
- package/skills/omd-deep-interview/SKILL.md +68 -68
- package/skills/omd-deepsearch/SKILL.md +36 -36
- package/skills/omd-doctor/SKILL.md +39 -39
- package/skills/omd-execute/SKILL.md +41 -41
- package/skills/omd-external-context/SKILL.md +36 -36
- package/skills/omd-help/SKILL.md +35 -35
- package/skills/omd-hud/SKILL.md +80 -79
- package/skills/omd-minimal-code-discipline/SKILL.md +36 -36
- package/skills/omd-plan/SKILL.md +51 -51
- package/skills/omd-pyramid/SKILL.md +121 -0
- package/skills/omd-ralph/SKILL.md +62 -62
- package/skills/omd-ralplan/SKILL.md +45 -45
- package/skills/omd-release/SKILL.md +36 -36
- package/skills/omd-remember/SKILL.md +35 -35
- package/skills/omd-research/SKILL.md +40 -38
- package/skills/omd-review/SKILL.md +47 -45
- package/skills/omd-skillify/SKILL.md +36 -36
- package/skills/omd-tdd/SKILL.md +37 -37
- package/skills/omd-team/SKILL.md +96 -96
- package/skills/omd-ultragoal/SKILL.md +46 -46
- package/skills/omd-ultrathink/SKILL.md +39 -39
- package/skills/omd-verify/SKILL.md +44 -44
- package/skills/omd-visual-verdict/SKILL.md +36 -36
- package/skills/omd-wiki/SKILL.md +36 -36
package/README.zh.md
ADDED
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
# oh-my-dsh
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@hawk2048/oh-my-dsh)
|
|
4
|
+
[](https://github.com/hawk2048/oh-my-dsh/stargazers)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
[](https://github.com/topics/dsh-plugin)
|
|
7
|
+
|
|
8
|
+
**面向 DeepSeek Harness (DSH) 的多智能体编排层** —— 把 [oh-my-claudecode](https://github.com/Yeachan-Heo/oh-my-claudecode) 的编排模式,映射到 DSH 原生原语(`workflow` / `subagent` / `ralph` / `goal`)之上。
|
|
9
|
+
|
|
10
|
+
> 两种触发方式:**自然语言**(30 个随 preset 打包的编排 skill,代理自动加载)+ **斜杠命令**(13 条,敲 `/omd` 即弹出候选)。启动一次会话,编排能力就位。
|
|
11
|
+
|
|
12
|
+
[English](README.md) | 中文
|
|
13
|
+
|
|
14
|
+
## 快速开始
|
|
15
|
+
|
|
16
|
+
一条命令装好全部 30 个 skill + 13 条 `/omd-*` 命令(等价 OMC 的插件市场安装):
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
dsh plugin --profile web add github:hawk2048/oh-my-dsh
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
或从 npm 安装(等价 OMC 的 npm i -g):
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
dsh plugin --profile web add @hawk2048/oh-my-dsh
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
装完重启 profile,敲 `/omd` 弹出命令候选;或直接用自然语言(「先规划一下」「autopilot 搭个 API」)触发对应 skill。
|
|
29
|
+
|
|
30
|
+
## 要求
|
|
31
|
+
|
|
32
|
+
- [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(`dsh` CLI)
|
|
33
|
+
- [pnpm](https://pnpm.io)(`dsh plugin` 底层转发给 pnpm)
|
|
34
|
+
|
|
35
|
+
## 为什么用 oh-my-dsh
|
|
36
|
+
|
|
37
|
+
- **零配置**——一条 `dsh plugin add` 装好全部;bundle 自注册,无需安装向导。
|
|
38
|
+
- **Team 优先编排**——Team 是标准分阶段流水线(`team-plan → team-prd → team-exec → team-verify → team-fix`),构建在 DSH 原生 `workflow` 上。
|
|
39
|
+
- **自然语言交互**——说清需求即可,30 个 `omd-*` skill 自动加载,无需记命令。
|
|
40
|
+
- **自动并行**——复杂任务扇出到并行 `subagent`。
|
|
41
|
+
- **持久执行**——Ralph / Autopilot / Ultragoal 不达验证完成不罢休(原生 `ralph` 循环 + `goal` 跨轮目标)。
|
|
42
|
+
- **零运行时开销**——不引入新宿主工具或运行时,只是 DSH 原生原语之上的 skill,保留 DSH 自己的模型路由与沙箱。
|
|
43
|
+
- **从经验中学习**——`omd-skillify` 提取可复用 skill;`omd-remember` 跨会话持久记忆。
|
|
44
|
+
- **实时可见**——内联 HUD 渲染实时 `dsh-ui` 进度仪表盘。
|
|
45
|
+
|
|
46
|
+
## 与 oh-my-claudecode 的对应关系
|
|
47
|
+
|
|
48
|
+
对齐 OMC **v5.3.0** 的命令面(核心流水线 `plan → execute → review → verify` + 保留模式):
|
|
49
|
+
|
|
50
|
+
| OMC 工作流 | oh-my-dsh skill | DSH 原生载体 |
|
|
51
|
+
|-----------|-----------------|--------------|
|
|
52
|
+
| Plan(规划) | [`omd-plan`](skills/omd-plan/SKILL.md) | 只读探索 + `subagent` 并行调研 |
|
|
53
|
+
| Execute(执行) | [`omd-execute`](skills/omd-execute/SKILL.md) | `subagent` 并行 + `todo_write` |
|
|
54
|
+
| Review(评审) | [`omd-review`](skills/omd-review/SKILL.md) | `subagent_fork` 独立评审 |
|
|
55
|
+
| Verify(验证) | [`omd-verify`](skills/omd-verify/SKILL.md) | `pwsh`/`bash` 测试 + `subagent` 复核 |
|
|
56
|
+
| Team(分阶段流水线) | [`omd-team`](skills/omd-team/SKILL.md) | `workflow` + `subagent` |
|
|
57
|
+
| Autopilot(自动驾驶) | [`omd-autopilot`](skills/omd-autopilot/SKILL.md) | `goal` + `todo` + `subagent` |
|
|
58
|
+
| Ralph(持久验证循环) | [`omd-ralph`](skills/omd-ralph/SKILL.md) | `ralph` + `goal` 验证循环 |
|
|
59
|
+
| Deep Interview(需求澄清) | [`omd-deep-interview`](skills/omd-deep-interview/SKILL.md) | `ask_user_question` |
|
|
60
|
+
| Ralplan(共识规划) | [`omd-ralplan`](skills/omd-ralplan/SKILL.md) | 并行 `subagent` 草案 + 仲裁收敛 |
|
|
61
|
+
| Research(有据调研) | [`omd-research`](skills/omd-research/SKILL.md) | `web_search`/`web_fetch` + 并行 `subagent` |
|
|
62
|
+
| Autoresearch(评估驱动改进) | [`omd-autoresearch`](skills/omd-autoresearch/SKILL.md) | `goal` + 评估子代理循环 |
|
|
63
|
+
| Ultragoal(持久多目标) | [`omd-ultragoal`](skills/omd-ultragoal/SKILL.md) | `goal` + `todo_write` + checkpoint 工件 |
|
|
64
|
+
| HUD(状态栏) | [`omd-hud`](skills/omd-hud/SKILL.md) | `dsh-ui` 内联仪表盘(genui) |
|
|
65
|
+
|
|
66
|
+
**提示词触发 + 工具 skill**(自然语言触发,无独立斜杠命令):
|
|
67
|
+
|
|
68
|
+
| OMC 触发 | oh-my-dsh skill | DSH 原生载体 |
|
|
69
|
+
|----------|-----------------|--------------|
|
|
70
|
+
| tdd(测试驱动) | [`omd-tdd`](skills/omd-tdd/SKILL.md) | `pwsh`/`bash` 测试 + red-green-refactor |
|
|
71
|
+
| deepsearch(代码检索) | [`omd-deepsearch`](skills/omd-deepsearch/SKILL.md) | `grep`/`glob`/`read` 本地定位 |
|
|
72
|
+
| deep-analyze(深度分析) | [`omd-deep-analyze`](skills/omd-deep-analyze/SKILL.md) | 并行 `subagent` 多视角 |
|
|
73
|
+
| ultrathink(深度推理) | [`omd-ultrathink`](skills/omd-ultrathink/SKILL.md) | 纯推理(先不动工具) |
|
|
74
|
+
| ai-slop-cleaner(去废话) | [`omd-ai-slop-cleaner`](skills/omd-ai-slop-cleaner/SKILL.md) | `review`/`edit` 精简 |
|
|
75
|
+
| omc-doctor(自检) | [`omd-doctor`](skills/omd-doctor/SKILL.md) | 安装/挂载诊断 |
|
|
76
|
+
| debug(调试) | [`omd-debug`](skills/omd-debug/SKILL.md) | 复现→定位→最小修复→回归 |
|
|
77
|
+
| release(发布) | [`omd-release`](skills/omd-release/SKILL.md) | git + 测试 + changelog + tag |
|
|
78
|
+
| remember(跨会话记忆) | [`omd-remember`](skills/omd-remember/SKILL.md) | 工作区记忆文件 |
|
|
79
|
+
| cancel(取消模式) | [`omd-cancel`](skills/omd-cancel/SKILL.md) | goal pause + interrupt_agent + job_kill |
|
|
80
|
+
| minimal-code-discipline(最小改动) | [`omd-minimal-code-discipline`](skills/omd-minimal-code-discipline/SKILL.md) | YAGNI 阶梯 |
|
|
81
|
+
| external-context(外部上下文) | [`omd-external-context`](skills/omd-external-context/SKILL.md) | `web_fetch`/`read` |
|
|
82
|
+
| visual-verdict(视觉 QA) | [`omd-visual-verdict`](skills/omd-visual-verdict/SKILL.md) | `read_image` 对比 |
|
|
83
|
+
| skillify(提取 skill) | [`omd-skillify`](skills/omd-skillify/SKILL.md) | 写 `SKILL.md` |
|
|
84
|
+
| wiki(知识库) | [`omd-wiki`](skills/omd-wiki/SKILL.md) | 工作区 markdown |
|
|
85
|
+
| omc-help(使用指南) | [`omd-help`](skills/omd-help/SKILL.md) | 实时列 skill/命令索引 |
|
|
86
|
+
|
|
87
|
+
**本插件新增(OMC 无对应)**:
|
|
88
|
+
|
|
89
|
+
| 能力 | oh-my-dsh skill | DSH 原生载体 |
|
|
90
|
+
|------|-----------------|--------------|
|
|
91
|
+
| 金字塔结构化表达(结论先行 + MECE) | [`omd-pyramid`](skills/omd-pyramid/SKILL.md) | 纯表达纪律 + `dsh-ui` 层级映射(genui) |
|
|
92
|
+
|
|
93
|
+
> **`ultrawork` 已退役**:OMC 在 5.0.0 删除了 `ultrawork`(以及 `ultraqa`/`swarm`/`pipeline` 等),oh-my-dsh 同步移除;其"最大并行扇出"能力已并入 `execute`/`team`/`ralph` 的内部并行纪律。
|
|
94
|
+
|
|
95
|
+
关键差异:OMC 的 HUD 是 CLI 状态栏,而 oh-my-dsh 的 HUD 是**内联在回答正文里的 `dsh-ui` 仪表盘**(stat/progress/timeline/table),因为 DSH 的 Web GUI 本身就在渲染结构化 UI。
|
|
96
|
+
|
|
97
|
+
## 目录结构
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
oh-my-dsh/
|
|
101
|
+
├── package.json # dsh.bundle manifest(组合包安装入口)
|
|
102
|
+
├── cordis.patch.yml # 组合包 patch 层(全局命令 + 全局 skill 挂载)
|
|
103
|
+
├── index.js # 组合包模块入口
|
|
104
|
+
├── agent.cordis.yml # agent preset 组合文件(= standard + persona + skill + 命令)
|
|
105
|
+
├── preset.yml # preset 显示元数据
|
|
106
|
+
├── install.ps1 / install.sh # preset 手动安装脚本
|
|
107
|
+
├── LICENSE
|
|
108
|
+
├── commands/
|
|
109
|
+
│ └── omd-commands.mjs # 斜杠命令生产者(ESM 插件)
|
|
110
|
+
├── skills/
|
|
111
|
+
│ ├── omd-plan/SKILL.md
|
|
112
|
+
│ ├── omd-execute/SKILL.md
|
|
113
|
+
│ ├── omd-review/SKILL.md
|
|
114
|
+
│ ├── omd-verify/SKILL.md
|
|
115
|
+
│ ├── omd-team/SKILL.md
|
|
116
|
+
│ ├── omd-autopilot/SKILL.md
|
|
117
|
+
│ ├── omd-ralph/SKILL.md
|
|
118
|
+
│ ├── omd-deep-interview/SKILL.md
|
|
119
|
+
│ ├── omd-ralplan/SKILL.md
|
|
120
|
+
│ ├── omd-research/SKILL.md
|
|
121
|
+
│ ├── omd-autoresearch/SKILL.md
|
|
122
|
+
│ ├── omd-ultragoal/SKILL.md
|
|
123
|
+
│ ├── omd-pyramid/SKILL.md
|
|
124
|
+
│ ├── omd-tdd/SKILL.md
|
|
125
|
+
│ ├── omd-deepsearch/SKILL.md
|
|
126
|
+
│ ├── omd-deep-analyze/SKILL.md
|
|
127
|
+
│ ├── omd-ultrathink/SKILL.md
|
|
128
|
+
│ ├── omd-ai-slop-cleaner/SKILL.md
|
|
129
|
+
│ ├── omd-doctor/SKILL.md
|
|
130
|
+
│ ├── omd-debug/SKILL.md
|
|
131
|
+
│ ├── omd-release/SKILL.md
|
|
132
|
+
│ ├── omd-remember/SKILL.md
|
|
133
|
+
│ ├── omd-cancel/SKILL.md
|
|
134
|
+
│ ├── omd-minimal-code-discipline/SKILL.md
|
|
135
|
+
│ ├── omd-external-context/SKILL.md
|
|
136
|
+
│ ├── omd-visual-verdict/SKILL.md
|
|
137
|
+
│ ├── omd-skillify/SKILL.md
|
|
138
|
+
│ ├── omd-wiki/SKILL.md
|
|
139
|
+
│ ├── omd-help/SKILL.md
|
|
140
|
+
│ └── omd-hud/SKILL.md
|
|
141
|
+
└── docs/
|
|
142
|
+
├── ARCHITECTURE.md
|
|
143
|
+
└── RELEASE.md
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## 安装 / 使用
|
|
147
|
+
|
|
148
|
+
两种安装方式,**任选其一即可**(bundle 装全局、preset 按会话选)。
|
|
149
|
+
|
|
150
|
+
**方式 A:组合包 bundle(主要,等价 OMC 的插件市场安装)** —— 全局装好 13 条 `/omd-*` 命令与 30 个 skill,profile 里所有会话可见:
|
|
151
|
+
|
|
152
|
+
```sh
|
|
153
|
+
# git 源码安装(纯 JS/Markdown,零构建,无需 allowBuilds 授权;用 @<tag> 可锁定版本)
|
|
154
|
+
dsh plugin --profile web add github:hawk2048/oh-my-dsh
|
|
155
|
+
|
|
156
|
+
# 或从 npm 安装(等价 OMC 的 npm i -g)
|
|
157
|
+
dsh plugin --profile web add @hawk2048/oh-my-dsh
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
装完重启 profile 即可。用户全程只敲一条命令,由 pnpm 拉取,**不手动下载压缩包**。
|
|
161
|
+
|
|
162
|
+
**方式 B:agent preset(可选,按会话选择)** —— 含 persona 与编排工具集的全量会话:
|
|
163
|
+
|
|
164
|
+
```sh
|
|
165
|
+
# Windows
|
|
166
|
+
.\install.ps1
|
|
167
|
+
# macOS / Linux
|
|
168
|
+
./install.sh
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
安装器**非破坏性**:不删除 preset 目录,你本地加的 skill 会保留,被覆盖的本地改动会先备份成 `<name>.bak-<时间戳>`。重复运行安全可逆。
|
|
172
|
+
|
|
173
|
+
然后在 DSH 里**新建会话时选择 "oh-my-dsh 编排"** preset(或把它设为 `agent-presets.default`)。详见 [docs/RELEASE.md](docs/RELEASE.md)。
|
|
174
|
+
|
|
175
|
+
## 怎么用(会话内)
|
|
176
|
+
|
|
177
|
+
两种方式,效果一样:
|
|
178
|
+
|
|
179
|
+
**方式一:自然语言**(代理自动加载对应 skill)
|
|
180
|
+
|
|
181
|
+
- `先规划一下怎么实现 X` → `omd-plan`
|
|
182
|
+
- `按计划实现` → `omd-execute`
|
|
183
|
+
- `评审一下刚才的改动` → `omd-review`
|
|
184
|
+
- `验证一下,测试要全绿` → `omd-verify`
|
|
185
|
+
- `用 team 做一个任务管理应用` → `omd-team`
|
|
186
|
+
- `autopilot:搭一个 REST API` → `omd-autopilot`
|
|
187
|
+
- `ralph 重构认证,必须测试全绿` → `omd-ralph`
|
|
188
|
+
- `先深度访谈,我想做个 xx` → `omd-deep-interview`
|
|
189
|
+
- `ralplan:多角度论证一下这个架构选型` → `omd-ralplan`
|
|
190
|
+
- `调研一下 X 的最佳实践,要带来源` → `omd-research`
|
|
191
|
+
- `autoresearch:把这份报告打磨到达标` → `omd-autoresearch`
|
|
192
|
+
- `ultragoal:这个长期目标拆成子目标推进` → `omd-ultragoal`
|
|
193
|
+
- `把这段整理成金字塔结构 / 结论先行 / MECE` → `omd-pyramid`
|
|
194
|
+
- `tdd:先写失败测试再实现` → `omd-tdd`
|
|
195
|
+
- `deepsearch:定位谁调用了这个函数` → `omd-deepsearch`
|
|
196
|
+
- `deep-analyze:深度分析一下这块架构` → `omd-deep-analyze`
|
|
197
|
+
- `ultrathink:想清楚再动手` → `omd-ultrathink`
|
|
198
|
+
- `去 AI 废话,精简这段` → `omd-ai-slop-cleaner`
|
|
199
|
+
- `自检一下 oh-my-dsh 装好没` → `omd-doctor`
|
|
200
|
+
- `debug:排查这个报错` → `omd-debug`
|
|
201
|
+
- `发布 v1.2,写 changelog` → `omd-release`
|
|
202
|
+
- `记住这个决定,下个会话还要用` → `omd-remember`
|
|
203
|
+
- `停掉正在跑的 autopilot` → `omd-cancel`
|
|
204
|
+
- `最小改动,别过度设计` → `omd-minimal-code-discipline`
|
|
205
|
+
- `看下这个 issue/链接` → `omd-external-context`
|
|
206
|
+
- `对比这两张截图` → `omd-visual-verdict`
|
|
207
|
+
- `把这段流程沉淀成 skill` → `omd-skillify`
|
|
208
|
+
- `记到知识库/更新文档` → `omd-wiki`
|
|
209
|
+
- `omd 能做什么 / 有哪些命令` → `omd-help`
|
|
210
|
+
|
|
211
|
+
**方式二:斜杠命令**(在输入框敲 `/omd` 弹出候选)
|
|
212
|
+
|
|
213
|
+
| 命令 | 等价 skill |
|
|
214
|
+
|------|-----------|
|
|
215
|
+
| `/omd-plan <任务>` | `omd-plan` |
|
|
216
|
+
| `/omd-execute <任务>` | `omd-execute` |
|
|
217
|
+
| `/omd-review <任务>` | `omd-review` |
|
|
218
|
+
| `/omd-verify <任务>` | `omd-verify` |
|
|
219
|
+
| `/omd-team <任务>` | `omd-team` |
|
|
220
|
+
| `/omd-autopilot <目标>` | `omd-autopilot` |
|
|
221
|
+
| `/omd-ralph <目标>` | `omd-ralph` |
|
|
222
|
+
| `/omd-deep-interview <主题>` | `omd-deep-interview` |
|
|
223
|
+
| `/omd-ralplan <描述>` | `omd-ralplan` |
|
|
224
|
+
| `/omd-research <问题>` | `omd-research` |
|
|
225
|
+
| `/omd-autoresearch <任务>` | `omd-autoresearch` |
|
|
226
|
+
| `/omd-ultragoal <目标>` | `omd-ultragoal` |
|
|
227
|
+
| `/omd-pyramid <内容>` | `omd-pyramid` |
|
|
228
|
+
|
|
229
|
+
代理会加载对应的 skill,按该模式编排,并用 HUD 实时汇报进度。
|
|
230
|
+
|
|
231
|
+
## 为什么是 skill + bundle/preset,而不是新工具
|
|
232
|
+
|
|
233
|
+
DSH 的原生多智能体原语(`workflow` 的流水线/并行、`subagent` 的扇出、`ralph` 的 fresh-agent 循环、`goal` 的跨轮目标)**已经覆盖了 OMC 的编排语义**。oh-my-dsh 因此不引入新的宿主工具或运行时,而是把「什么时候用哪个原语、怎么编排、怎么收尾」沉淀成可复用的 skill。
|
|
234
|
+
|
|
235
|
+
分发也复用 DSH 原生机制:`cordis.patch.yml` + `package.json` 的 `dsh.bundle` manifest 让 `dsh plugin add` 装成**组合包**(全局命令 + 全局 skill),`agent.cordis.yml` 让它作为**agent preset** 按会话挂载(persona + 命令 + skill)。斜杠命令的 `commands/omd-commands.mjs` 是一个 ESM 插件,注入 DSH 自带的 `commands` 服务注册命令——零运行时风险,升级 DSH 不受影响。
|
|
236
|
+
|
|
237
|
+
## 扩展
|
|
238
|
+
|
|
239
|
+
- **加模式**:在 `skills/` 下新增 `omd-xxx/SKILL.md`(YAML frontmatter 写 `name` + `description`)。
|
|
240
|
+
- **加命令**:在 `commands/omd-commands.mjs` 的 `MODES` 数组里追加一条。
|
|
241
|
+
- **改 persona**:编辑 `agent.cordis.yml` 顶部的 `persona` 行。保留该行 schema 要求的 `prefix:` 键,并且只引用已注册的提示变量——目前是 `{{provider}}` / `{{model}}`。工作目录现在作为独立的 runtime-context 段注入,写 `{{cwd}}` 会让该预设的每一轮 prompt 组装失败(回归守卫:`tests/preset-contract.test.mjs`)。
|
|
242
|
+
- **把 skill 做成全局**:走 bundle(`dsh plugin add`),见上文方式 A;或把 `skills/*` 复制到 `${DSH_HOME}/skills/`。
|
|
243
|
+
|
|
244
|
+
## 许可
|
|
245
|
+
|
|
246
|
+
MIT。灵感来自 [oh-my-claudecode](https://github.com/Yeachan-Heo/oh-my-claudecode)。
|
package/agent.cordis.yml
ADDED
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
# The `oh-my-dsh` agent preset: the standard coding agent, plus an
|
|
2
|
+
# orchestration vocabulary layered over DSH's native primitives.
|
|
3
|
+
#
|
|
4
|
+
# It is a copy of `standard` with two changes:
|
|
5
|
+
# 1. a persona that names the oh-my-dsh orchestration modes, and
|
|
6
|
+
# 2. `skill-filesystem` configured to bundle the omd-* skills that travel
|
|
7
|
+
# with this preset (resolved via `baseUrl`, so the root follows wherever
|
|
8
|
+
# the preset is installed).
|
|
9
|
+
#
|
|
10
|
+
# Everything else — tools, groups, realms, compaction, plan mode — is the
|
|
11
|
+
# `standard` composition unchanged. The orchestration is SKILLS, not new
|
|
12
|
+
# machinery: the Plan/Execute/Review/Verify pipeline, Team, Autopilot, Ralph,
|
|
13
|
+
# Ralplan, Research, Autoresearch, and Ultragoal all map onto the native
|
|
14
|
+
# `workflow` / `subagent` / `ralph` / `goal` tools already mounted below.
|
|
15
|
+
|
|
16
|
+
# ── identity ────────────────────────────────────────────────────────────────
|
|
17
|
+
|
|
18
|
+
# The preset's own persona, shadowing the deployment default for this agent.
|
|
19
|
+
# `{{model}}` resolves from the agent's own route. The working directory is NOT a
|
|
20
|
+
# prompt variable: current DSH registers only `provider` and `model`, and injects
|
|
21
|
+
# the working directory as its own runtime-context section. A `cwd` reference here
|
|
22
|
+
# fails prompt assembly for the whole turn, so leave it out.
|
|
23
|
+
# The row uses the `prefix:` key. `text:` is an older key the persona row's schema
|
|
24
|
+
# no longer accepts — it is dropped, and a required `prefix` then fails the mount.
|
|
25
|
+
- id: persona
|
|
26
|
+
name: '@deepseek-ai/dsh-persona'
|
|
27
|
+
config:
|
|
28
|
+
prefix: >-
|
|
29
|
+
You are a coding agent powered by the {{model}} model, running on the oh-my-dsh
|
|
30
|
+
orchestration layer of the DeepSeek Harness.
|
|
31
|
+
oh-my-dsh maps a multi-agent orchestration vocabulary onto DSH's native primitives:
|
|
32
|
+
the canonical Plan → Execute → Review → Verify pipeline, Team (staged
|
|
33
|
+
plan→prd→exec→verify→fix pipeline), Autopilot (one lead agent driving a goal to
|
|
34
|
+
completion), Ralph (persistent verify/fix loops, no silent partials), Deep Interview
|
|
35
|
+
(Socratic requirement clarification), Ralplan (consensus planning via multi-perspective
|
|
36
|
+
deliberation), Research (sourced investigation), Autoresearch (evaluator-driven
|
|
37
|
+
improvement loop), Ultragoal (durable multi-goal workflow with checkpointed artifacts),
|
|
38
|
+
and HUD (inline dsh-ui progress dashboards). Prompt-trigger disciplines also ship as
|
|
39
|
+
skills — pyramid (answer-first MECE structured expression: conclusion in the first line,
|
|
40
|
+
3–5 mutually exclusive points per level, every layer supporting the one above), tdd
|
|
41
|
+
(red-green-refactor), deepsearch (codebase-focused lookup), deep-analyze
|
|
42
|
+
(multi-angle evidence-backed analysis), ultrathink (exhaustive reasoning before acting),
|
|
43
|
+
ai-slop-cleaner (strip AI filler) — plus doctor (self-check the install), and utility
|
|
44
|
+
disciplines: debug (reproduce→isolate→fix→verify), release (version→changelog→tag→artifact),
|
|
45
|
+
remember (durable cross-session notes), cancel (cleanly halt an in-flight mode), minimal-code-discipline
|
|
46
|
+
(smallest correct diff / YAGNI), external-context (pull in URLs/docs/issues), visual-verdict
|
|
47
|
+
(structured screenshot QA), skillify (extract a reusable skill), wiki (markdown knowledge
|
|
48
|
+
base), and help (usage index). Load the matching omd-* skill before entering a mode; default
|
|
49
|
+
to leading each report with its conclusion (omd-pyramid lists the exceptions);
|
|
50
|
+
prefer parallel subagent
|
|
51
|
+
delegation, and drive every long-running objective through the goal tools rather than a single turn.
|
|
52
|
+
|
|
53
|
+
- id: agent-instructions
|
|
54
|
+
name: '@deepseek-ai/dsh-agent-instructions'
|
|
55
|
+
config:
|
|
56
|
+
maxBytes: 65536
|
|
57
|
+
|
|
58
|
+
# ── shell ───────────────────────────────────────────────────────────────────
|
|
59
|
+
|
|
60
|
+
# `shell-env` stays in the HOST composition: `apps/cli/src/web.ts` injects it to
|
|
61
|
+
# publish `DSH_WEB_URL`/`DSH_WEB_MODE`, and a host row that injects a service is
|
|
62
|
+
# the criterion for host-plane ownership — injection resolves before any session
|
|
63
|
+
# exists, so there is no agent to key by. Behind a preset realm those variables
|
|
64
|
+
# never reached the model's shell at all. Both shell tools consume the host
|
|
65
|
+
# registry from here; their executors (`bash-sandbox`/`pwsh-sandbox`) are
|
|
66
|
+
# host-plane too.
|
|
67
|
+
- id: tool-bash
|
|
68
|
+
name: '@deepseek-ai/dsh-tool-bash'
|
|
69
|
+
disabled: !!js process.platform === 'win32'
|
|
70
|
+
|
|
71
|
+
- id: tool-pwsh
|
|
72
|
+
name: '@deepseek-ai/dsh-tool-pwsh'
|
|
73
|
+
disabled: !!js process.platform !== 'win32'
|
|
74
|
+
|
|
75
|
+
# ── filesystem ──────────────────────────────────────────────────────────────
|
|
76
|
+
|
|
77
|
+
# Both register into the host `tools` registry and provide nothing, so
|
|
78
|
+
# they need no realm. The `fs` service and its policy stay in the host.
|
|
79
|
+
- id: tool-fs
|
|
80
|
+
name: '@deepseek-ai/dsh-tool-fs'
|
|
81
|
+
|
|
82
|
+
- id: tool-fs-search
|
|
83
|
+
name: '@deepseek-ai/dsh-tool-fs-search'
|
|
84
|
+
config:
|
|
85
|
+
sampleOverCapGlobResults: false
|
|
86
|
+
|
|
87
|
+
# ── background jobs ────────────────────────────────────────────────────────
|
|
88
|
+
|
|
89
|
+
# Only the model-facing controls. The task REGISTRY stays on the host plane:
|
|
90
|
+
# its producers sit outside any realm this file could put it in — `tool-bash`
|
|
91
|
+
# above resolves it with `ctx.get`, and an entry-local realm here is invisible
|
|
92
|
+
# to every sibling row, so `run_in_background` would answer "background jobs
|
|
93
|
+
# unavailable" while these controls sat in the catalog. The registry is keyed by
|
|
94
|
+
# owning agent anyway, so one host instance serves every session. What a preset
|
|
95
|
+
# chooses is whether its agent can collect and stop background work at all.
|
|
96
|
+
- id: tool-jobs
|
|
97
|
+
name: '@deepseek-ai/dsh-tool-jobs'
|
|
98
|
+
|
|
99
|
+
# ── skills ──────────────────────────────────────────────────────────────────
|
|
100
|
+
|
|
101
|
+
# The skill REGISTRY lives in the host composition and is layered per scope:
|
|
102
|
+
# these rows register into THIS preset's layer of it, so they need no realm.
|
|
103
|
+
# `skill-filesystem` contributes local-root discovery for agents on this preset,
|
|
104
|
+
# plus the omd-* orchestration skills bundled in this preset's own `skills/`
|
|
105
|
+
# directory (`baseUrl` is the preset's directory, so the root follows the
|
|
106
|
+
# install). `tool-skill` gives the catalog and loader; the merged catalog also
|
|
107
|
+
# carries whatever the deployment registered globally (repository plugins).
|
|
108
|
+
- id: skill-filesystem
|
|
109
|
+
name: '@deepseek-ai/dsh-skill-filesystem'
|
|
110
|
+
config:
|
|
111
|
+
customSkillDirs:
|
|
112
|
+
- !!js "process.getBuiltinModule('node:url').fileURLToPath(new URL('skills/', baseUrl))"
|
|
113
|
+
|
|
114
|
+
- id: tool-skill
|
|
115
|
+
name: '@deepseek-ai/dsh-tool-skill'
|
|
116
|
+
|
|
117
|
+
# ── goals ───────────────────────────────────────────────────────────────────
|
|
118
|
+
|
|
119
|
+
# The goal service and session driver stay on the host plane, where the Gateway
|
|
120
|
+
# can resolve them. The human command and model-facing tool register into this
|
|
121
|
+
# preset's scoped layers.
|
|
122
|
+
- id: command-goal
|
|
123
|
+
name: '@deepseek-ai/dsh-command-goal'
|
|
124
|
+
|
|
125
|
+
# oh-my-dsh slash commands (/omd-plan /omd-execute /omd-review /omd-verify
|
|
126
|
+
# /omd-team /omd-autopilot /omd-ralph /omd-deep-interview /omd-ralplan
|
|
127
|
+
# /omd-research /omd-autoresearch /omd-ultragoal /omd-pyramid): a preset-shipped ESM producer
|
|
128
|
+
# — the relative `name` resolves against the preset's own directory. Each handler
|
|
129
|
+
# submits a user message that steers the model into the matching omd-* skill,
|
|
130
|
+
# then returns a direct UI acknowledgement.
|
|
131
|
+
- id: command-omd
|
|
132
|
+
name: './commands/omd-commands.mjs'
|
|
133
|
+
|
|
134
|
+
- id: tool-goal
|
|
135
|
+
name: '@deepseek-ai/dsh-tool-goal'
|
|
136
|
+
|
|
137
|
+
# ── plan mode ───────────────────────────────────────────────────────────────
|
|
138
|
+
|
|
139
|
+
# Plan state is per-agent by nature, so an entry-local realm is not a
|
|
140
|
+
# workaround here — it is the correct lifetime.
|
|
141
|
+
- id: planning
|
|
142
|
+
name: cordis:group
|
|
143
|
+
group: true
|
|
144
|
+
isolate:
|
|
145
|
+
planMode: true
|
|
146
|
+
config:
|
|
147
|
+
- id: plan-mode
|
|
148
|
+
name: '@deepseek-ai/dsh-plan-mode'
|
|
149
|
+
config:
|
|
150
|
+
section: |
|
|
151
|
+
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.
|
|
152
|
+
|
|
153
|
+
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.
|
|
154
|
+
|
|
155
|
+
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.
|
|
156
|
+
|
|
157
|
+
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.
|
|
158
|
+
|
|
159
|
+
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.
|
|
160
|
+
|
|
161
|
+
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 with implementation.
|
|
162
|
+
|
|
163
|
+
# ── compaction ──────────────────────────────────────────────────────────────
|
|
164
|
+
|
|
165
|
+
# `compaction-basic` reads `toolResultPrune` through `ctx.get`, so the pruner must
|
|
166
|
+
# share this realm rather than sit outside it.
|
|
167
|
+
#
|
|
168
|
+
# `tokenMeter` is deliberately NOT in this realm: the meter stays on the HOST
|
|
169
|
+
# plane, and the rows here resolve that one instance. It takes no configuration,
|
|
170
|
+
# keys every fold by Session, and owns the context-meter projection units the
|
|
171
|
+
# browser reads for every session — behind a realm those units would come and go
|
|
172
|
+
# with whichever presets happen to be mounted. What a preset chooses is whether
|
|
173
|
+
# its agent compacts at all, which is `compaction-basic` below.
|
|
174
|
+
- id: compaction
|
|
175
|
+
name: cordis:group
|
|
176
|
+
group: true
|
|
177
|
+
isolate:
|
|
178
|
+
compaction: true
|
|
179
|
+
toolResultPruner: true
|
|
180
|
+
config:
|
|
181
|
+
- id: compaction-basic
|
|
182
|
+
name: '@deepseek-ai/dsh-compaction-basic'
|
|
183
|
+
|
|
184
|
+
- id: command-compact
|
|
185
|
+
name: '@deepseek-ai/dsh-command-compact'
|
|
186
|
+
|
|
187
|
+
- id: tool-result-pruner
|
|
188
|
+
name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
|
|
189
|
+
config:
|
|
190
|
+
thresholdChars: 8192
|
|
191
|
+
headChars: 4096
|
|
192
|
+
tailChars: 1024
|
|
193
|
+
|
|
194
|
+
# ── delegation and workflows ────────────────────────────────────────────────
|
|
195
|
+
|
|
196
|
+
# The `subagents` registry and its spawn/fork backends live in the HOST
|
|
197
|
+
# composition: the registry is a process singleton whose cross-session queries
|
|
198
|
+
# the api-proxy serves to the browser, and a provider name may only be
|
|
199
|
+
# registered once. This preset contributes the delegation TOOLS, which resolve
|
|
200
|
+
# that host registry.
|
|
201
|
+
#
|
|
202
|
+
# `workflows` is different — nothing outside an agent reads it — so every row
|
|
203
|
+
# that reaches it shares one entry-local realm here, and a consumer left
|
|
204
|
+
# outside would resolve a host registry this preset does not populate.
|
|
205
|
+
- id: delegation
|
|
206
|
+
name: cordis:group
|
|
207
|
+
group: true
|
|
208
|
+
isolate:
|
|
209
|
+
workflowEngine: true
|
|
210
|
+
config:
|
|
211
|
+
- id: tool-subagent-control
|
|
212
|
+
name: '@deepseek-ai/dsh-tool-subagent-control'
|
|
213
|
+
|
|
214
|
+
- id: tool-subagent-list-agents
|
|
215
|
+
name: '@deepseek-ai/dsh-tool-subagent-control/list-agents'
|
|
216
|
+
|
|
217
|
+
- id: tool-subagent
|
|
218
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
219
|
+
config:
|
|
220
|
+
provider: spawn
|
|
221
|
+
toolName: subagent
|
|
222
|
+
modelSelectionSettings: true
|
|
223
|
+
backgroundMode: continuable
|
|
224
|
+
|
|
225
|
+
# Fork omits model selection so provider/model stay equal to the parent and
|
|
226
|
+
# the inherited history remains eligible for KV Cache reuse. This preset
|
|
227
|
+
# keeps fork continuable; parent and child inherit the same messaging tool,
|
|
228
|
+
# while the parent id and return guidance follow the inherited history.
|
|
229
|
+
- id: tool-subagent-fork
|
|
230
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
231
|
+
config:
|
|
232
|
+
provider: fork
|
|
233
|
+
toolName: subagent_fork
|
|
234
|
+
backgroundMode: continuable
|
|
235
|
+
|
|
236
|
+
# Production dsh does not install these optional providers. Install the
|
|
237
|
+
# matching Bundle in this Profile and restart the Host, then copy this
|
|
238
|
+
# preset and remove `disabled` from the matching tool row. Host availability
|
|
239
|
+
# alone grants no tool.
|
|
240
|
+
- id: tool-subagent-codex
|
|
241
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
242
|
+
disabled: true
|
|
243
|
+
config:
|
|
244
|
+
provider: codex
|
|
245
|
+
toolName: subagent_codex
|
|
246
|
+
backgroundMode: one-shot
|
|
247
|
+
maxDepth: provider-managed
|
|
248
|
+
|
|
249
|
+
- id: tool-subagent-claude-code
|
|
250
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
251
|
+
disabled: true
|
|
252
|
+
config:
|
|
253
|
+
provider: claude-code
|
|
254
|
+
toolName: subagent_claude_code
|
|
255
|
+
backgroundMode: one-shot
|
|
256
|
+
maxDepth: provider-managed
|
|
257
|
+
|
|
258
|
+
- id: workflow-worker-thread
|
|
259
|
+
name: '@deepseek-ai/dsh-workflow-worker-thread'
|
|
260
|
+
config:
|
|
261
|
+
provider: spawn
|
|
262
|
+
|
|
263
|
+
- id: tool-workflow
|
|
264
|
+
name: '@deepseek-ai/dsh-tool-workflow'
|
|
265
|
+
|
|
266
|
+
- id: tool-ralph
|
|
267
|
+
name: '@deepseek-ai/dsh-tool-ralph'
|
|
268
|
+
config:
|
|
269
|
+
subagentProvider: spawn
|
|
270
|
+
maxRounds: 64
|
|
271
|
+
|
|
272
|
+
# ── remaining model-facing rows ─────────────────────────────────────────────
|
|
273
|
+
|
|
274
|
+
- id: tool-ask-user
|
|
275
|
+
name: '@deepseek-ai/dsh-tool-ask-user'
|
|
276
|
+
|
|
277
|
+
- id: tool-todo
|
|
278
|
+
name: '@deepseek-ai/dsh-tool-todo'
|
|
279
|
+
config:
|
|
280
|
+
allowParallelInProgress: true
|
|
281
|
+
|
|
282
|
+
# The `web` service and its search provider stay in the host composition; only
|
|
283
|
+
# the model-facing tool is per-session.
|
|
284
|
+
- id: tool-web
|
|
285
|
+
name: '@deepseek-ai/dsh-tool-web'
|
|
286
|
+
config:
|
|
287
|
+
fetch: true
|
|
288
|
+
searchTimeoutMs: 60000
|