freecodego 0.1.6-alpha.2.4 → 0.1.7-alpha.2.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/README.i18n.yaml +2 -2
- package/README.md +19 -9
- package/README.zh.md +19 -9
- package/cordis.patch.yml +42 -6
- package/dist/agent-team.js +13 -74
- package/dist/assets/presets/augmentcode/agent.cordis.yml +3 -2
- package/dist/assets/presets/freecodego/agent.cordis.yml +3 -2
- package/dist/auto-review.js +8 -11
- package/dist/bootstrap.js +1284 -739
- package/dist/client.cjs +1584 -302
- package/dist/harness-plugin.js +5 -0
- package/dist/schedule.js +78 -26
- package/dist/tool-agent-team.js +38 -97
- package/package.json +76 -43
- package/presets/augmentcode.patch.yml +273 -0
- package/presets/freecodego.patch.yml +255 -0
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
# Generated by scripts/gen-preset-patches.mjs — do not edit by hand.
|
|
2
|
+
#
|
|
3
|
+
# The FreeCodeGo plugin's `augmentcode` mode, declared the way the harness reads
|
|
4
|
+
# a roster: one `@deepseek-ai/dsh-agent-preset` row whose `config.plugins` is the
|
|
5
|
+
# plugin's own bundled composition, copied verbatim.
|
|
6
|
+
#
|
|
7
|
+
# Inert until `dsh.bundle.patch` in this package's manifest lists this file.
|
|
8
|
+
# Meanwhile the plugin declares the same preset through `ctx.agentPresets` at
|
|
9
|
+
# boot, and skips it as soon as a deployment declares it here.
|
|
10
|
+
- insert:
|
|
11
|
+
- id: preset-augmentcode
|
|
12
|
+
name: '@deepseek-ai/dsh-agent-preset'
|
|
13
|
+
config:
|
|
14
|
+
id: augmentcode
|
|
15
|
+
name: "Augment Code 模式"
|
|
16
|
+
description: "全套工具 + 蒸馏自 Augment Code 的编码 Agent 准则:先检索后规划、任务清单增量推进、小步编辑、验证即执行。"
|
|
17
|
+
order: 6
|
|
18
|
+
plugins:
|
|
19
|
+
# freecodego-agent-preset-v1 — owned by the FreeCodeGo plugin; local edits are preserved.
|
|
20
|
+
#
|
|
21
|
+
# The `augmentcode` agent preset ("Augment Code 模式"): the full standard
|
|
22
|
+
# tool surface with a coding persona distilled from the Augment Code agent
|
|
23
|
+
# prompt — retrieval-first orientation, incremental task-list
|
|
24
|
+
# planning, surgical small-step edits, and "verification is execution", all
|
|
25
|
+
# wired to this plugin's engineering tools (codegraph/graph retrieval, repo
|
|
26
|
+
# map, engineering-memory) instead of a generic context engine. The
|
|
27
|
+
# composition mirrors `standard/agent.cordis.yml` row for row; only the
|
|
28
|
+
# persona section differs. The same realm and host-plane rules apply: service
|
|
29
|
+
# rows sit inside `isolate` realms so one preset's instance never collides
|
|
30
|
+
# with another's, and registries stay in the host composition.
|
|
31
|
+
|
|
32
|
+
# ── identity ────────────────────────────────────────────────────────────────
|
|
33
|
+
|
|
34
|
+
- id: persona
|
|
35
|
+
name: '@deepseek-ai/dsh-persona'
|
|
36
|
+
config:
|
|
37
|
+
suffix: Your working directory is {{cwd}}.
|
|
38
|
+
prefix: |-
|
|
39
|
+
You are an Augment-style coding agent powered by the {{model}} model.
|
|
40
|
+
|
|
41
|
+
# Output
|
|
42
|
+
|
|
43
|
+
Respond in clear Markdown: short paragraphs, lists for steps; use headings sparingly. Optimize for skimmability. Occasionally tell the user in one short sentence what you are about to do and why — only when it is significant, not before every call. When showing code, keep excerpts short and reference the file or path:line instead of pasting whole files.
|
|
44
|
+
|
|
45
|
+
# Investigate before you plan
|
|
46
|
+
|
|
47
|
+
Orient with at most one high-signal information-gathering call, then decide whether the work needs a task list BEFORE further tool calls. Start a task list when the change spans multiple files or layers, when you expect more than a couple of edit/verify iterations, or when the user asks for planning or progress. Create it with a single first "Investigate" task set in progress — do not stack tasks upfront. After that investigation completes, plan incrementally: add the next minimal set of tasks, keep exactly one in progress, and batch state updates. Each task should be a meaningful unit of work, not a single action.
|
|
48
|
+
|
|
49
|
+
# Retrieval discipline
|
|
50
|
+
|
|
51
|
+
Gather only what a well-justified next step needs; stop as soon as you can proceed safely. Use the graded retrievers by need:
|
|
52
|
+
- `engineering_codegraph_search`, `engineering_graph_search`, or `engineering_repo_map` when you do not know which files are involved or you want the high-level shape of the codebase.
|
|
53
|
+
- `engineering_graph_path` / `engineering_codegraph_affected` when you need impact, dependencies, or a route between symbols.
|
|
54
|
+
- Filesystem search for references to a specific symbol across files.
|
|
55
|
+
- Direct file reads when you know what you are looking at.
|
|
56
|
+
When you need to know how a similar change was made before, consult the repository map, engineering checkpoints, or `git log` via the shell before inventing an approach. Before editing, confirm the classes, functions, and constants you will touch exist and match their signatures — from the code, not from memory.
|
|
57
|
+
|
|
58
|
+
# Surgical edits
|
|
59
|
+
|
|
60
|
+
Make the smallest change that works; prefer in-place edits over rewriting a whole file, and keep each edit block small and exact. Create new files at most a few hundred lines, then extend them by editing rather than recreating. Do not reformat or rename untouched code. When a dependency must change, use the project's package manager rather than hand-editing manifests or lock files.
|
|
61
|
+
|
|
62
|
+
# Verification is execution
|
|
63
|
+
|
|
64
|
+
When the user asks you to verify, make sure, or test that something works, actually run it: run the project's build, type check, lint, or tests through the shell, capture the exit code and output, and count it done only when the exit code is 0 and the logs are clean. Summarize what you ran, the working directory, the exit code, and any notable log lines. After making edits, run cheap verification even when not asked. Iterate with minimal fixes, and stop to ask when a reasonable effort is blocked. You are expected to get tests passing — iterate on them until they do rather than declaring victory from a first draft. Do not install dependencies, alter system state, or deploy without explicit permission.
|
|
65
|
+
|
|
66
|
+
# Cost and momentum
|
|
67
|
+
|
|
68
|
+
Prefer the smallest set of high-signal calls that completes and verifies the task; batch related reads and edits, and never browse without a stated next step. Note unrelated problems in one line and stay on task. If you are going in circles or calling the same tool without progress, stop and ask the user.
|
|
69
|
+
|
|
70
|
+
# Scope
|
|
71
|
+
|
|
72
|
+
Do what the user asked, and no more. When there is a clear follow-up, ask rather than doing it. The more potentially damaging the action — pushing or merging code, changing a ticket, installing dependencies, deploying — the more conservative you should be, and none of those happen without explicit permission. Own mistakes by fixing them, not by apologizing; never guess at facts you cannot verify, and say so when you state something unverified.
|
|
73
|
+
|
|
74
|
+
# Project memory
|
|
75
|
+
|
|
76
|
+
Durable cross-session memory is available through this plugin's tools — use them instead of ad-hoc notes:
|
|
77
|
+
- `engineering_memory_search` / `engineering_memory_get`: before solving a problem, search past decisions, discoveries, and pitfalls recorded for this project; prefer its evidence over re-deriving history.
|
|
78
|
+
- `engineering_memory_save`: record durable, reusable knowledge (decisions, discoveries, bugfixes, blockers, handoffs) when a task closes — bounded, factual, written for the next engineer. Not every turn needs a record.
|
|
79
|
+
- `engineering_handoff_create`: when handing work to another engine or a future session, write the handoff so it resumes with full context.
|
|
80
|
+
|
|
81
|
+
- id: agent-instructions
|
|
82
|
+
name: '@deepseek-ai/dsh-agent-instructions'
|
|
83
|
+
config:
|
|
84
|
+
maxBytes: 65536
|
|
85
|
+
|
|
86
|
+
# ── shell ────────────────────────────────────────────────────────────────────
|
|
87
|
+
|
|
88
|
+
- id: tool-bash
|
|
89
|
+
name: '@deepseek-ai/dsh-tool-bash'
|
|
90
|
+
disabled: !!js process.platform === 'win32'
|
|
91
|
+
|
|
92
|
+
- id: tool-pwsh
|
|
93
|
+
name: '@deepseek-ai/dsh-tool-pwsh'
|
|
94
|
+
disabled: !!js process.platform !== 'win32'
|
|
95
|
+
|
|
96
|
+
# ── filesystem ──────────────────────────────────────────────────────────────
|
|
97
|
+
|
|
98
|
+
- id: tool-fs
|
|
99
|
+
name: '@deepseek-ai/dsh-tool-fs'
|
|
100
|
+
|
|
101
|
+
- id: tool-fs-search
|
|
102
|
+
name: '@deepseek-ai/dsh-tool-fs-search'
|
|
103
|
+
config:
|
|
104
|
+
sampleOverCapGlobResults: false
|
|
105
|
+
|
|
106
|
+
# ── background jobs ────────────────────────────────────────────────────────
|
|
107
|
+
|
|
108
|
+
- id: tool-jobs
|
|
109
|
+
name: '@deepseek-ai/dsh-tool-jobs'
|
|
110
|
+
|
|
111
|
+
# ── skills ──────────────────────────────────────────────────────────────────
|
|
112
|
+
|
|
113
|
+
- id: skill-filesystem
|
|
114
|
+
name: '@deepseek-ai/dsh-skill-filesystem'
|
|
115
|
+
|
|
116
|
+
- id: tool-skill
|
|
117
|
+
name: '@deepseek-ai/dsh-tool-skill'
|
|
118
|
+
|
|
119
|
+
# ── goals ───────────────────────────────────────────────────────────────────
|
|
120
|
+
|
|
121
|
+
- id: command-goal
|
|
122
|
+
name: '@deepseek-ai/dsh-command-goal'
|
|
123
|
+
|
|
124
|
+
- id: tool-goal
|
|
125
|
+
name: '@deepseek-ai/dsh-tool-goal'
|
|
126
|
+
|
|
127
|
+
# ── plan mode ───────────────────────────────────────────────────────────────
|
|
128
|
+
|
|
129
|
+
- id: planning
|
|
130
|
+
name: cordis:group
|
|
131
|
+
group: true
|
|
132
|
+
isolate:
|
|
133
|
+
planMode: true
|
|
134
|
+
config:
|
|
135
|
+
- id: plan-mode
|
|
136
|
+
name: '@deepseek-ai/dsh-plan-mode'
|
|
137
|
+
config:
|
|
138
|
+
section: |
|
|
139
|
+
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.
|
|
140
|
+
|
|
141
|
+
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.
|
|
142
|
+
|
|
143
|
+
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.
|
|
144
|
+
|
|
145
|
+
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.
|
|
146
|
+
|
|
147
|
+
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.
|
|
148
|
+
|
|
149
|
+
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.
|
|
150
|
+
|
|
151
|
+
# ── compaction ──────────────────────────────────────────────────────────────
|
|
152
|
+
|
|
153
|
+
- id: compaction
|
|
154
|
+
name: cordis:group
|
|
155
|
+
group: true
|
|
156
|
+
isolate:
|
|
157
|
+
compaction: true
|
|
158
|
+
toolResultPruner: true
|
|
159
|
+
config:
|
|
160
|
+
- id: compaction-basic
|
|
161
|
+
name: '@deepseek-ai/dsh-compaction-basic'
|
|
162
|
+
# Summarize on the free opencode/hy3 direct route instead of the
|
|
163
|
+
# conversation model: compaction is a fixed checklist prompt, so the
|
|
164
|
+
# cheapest healthy text route keeps long sessions off paid tokens.
|
|
165
|
+
config:
|
|
166
|
+
summarizationProvider: opencode
|
|
167
|
+
# `auto` resolves at request time to the current best OpenCode free
|
|
168
|
+
# model (preference: big-pickle). The upstream free roster rotates,
|
|
169
|
+
# so a pinned id like hy3 would silently break once retired.
|
|
170
|
+
summarizationModel: auto
|
|
171
|
+
|
|
172
|
+
- id: command-compact
|
|
173
|
+
name: '@deepseek-ai/dsh-command-compact'
|
|
174
|
+
|
|
175
|
+
- id: tool-result-pruner
|
|
176
|
+
name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
|
|
177
|
+
config:
|
|
178
|
+
thresholdChars: 8192
|
|
179
|
+
headChars: 4096
|
|
180
|
+
tailChars: 1024
|
|
181
|
+
|
|
182
|
+
# ── delegation and workflows ────────────────────────────────────────────────
|
|
183
|
+
|
|
184
|
+
- id: delegation
|
|
185
|
+
name: cordis:group
|
|
186
|
+
group: true
|
|
187
|
+
isolate:
|
|
188
|
+
workflowEngine: true
|
|
189
|
+
config:
|
|
190
|
+
- id: tool-subagent-control
|
|
191
|
+
name: '@deepseek-ai/dsh-tool-subagent-control'
|
|
192
|
+
|
|
193
|
+
- id: tool-subagent-list-agents
|
|
194
|
+
name: '@deepseek-ai/dsh-tool-subagent-control/list-agents'
|
|
195
|
+
|
|
196
|
+
- id: tool-subagent
|
|
197
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
198
|
+
config:
|
|
199
|
+
provider: spawn
|
|
200
|
+
toolName: subagent
|
|
201
|
+
modelSelectionSettings: true
|
|
202
|
+
backgroundMode: continuable
|
|
203
|
+
|
|
204
|
+
- id: tool-subagent-fork
|
|
205
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
206
|
+
config:
|
|
207
|
+
provider: fork
|
|
208
|
+
toolName: subagent_fork
|
|
209
|
+
backgroundMode: continuable
|
|
210
|
+
|
|
211
|
+
- id: tool-subagent-codex
|
|
212
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
213
|
+
disabled: true
|
|
214
|
+
config:
|
|
215
|
+
provider: codex
|
|
216
|
+
toolName: subagent_codex
|
|
217
|
+
backgroundMode: one-shot
|
|
218
|
+
maxDepth: provider-managed
|
|
219
|
+
|
|
220
|
+
- id: tool-subagent-claude-code
|
|
221
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
222
|
+
disabled: true
|
|
223
|
+
config:
|
|
224
|
+
provider: claude-code
|
|
225
|
+
toolName: subagent_claude_code
|
|
226
|
+
backgroundMode: one-shot
|
|
227
|
+
maxDepth: provider-managed
|
|
228
|
+
|
|
229
|
+
# This row used to name `@deepseek-ai/dsh-workflow-worker-thread`, which no
|
|
230
|
+
# Harness line installs: preset discovery resolves every enabled row against
|
|
231
|
+
# the installed harness and reports the whole preset broken (the roster card
|
|
232
|
+
# reads "Failed to load") before a session could start. `standard/agent.cordis.yml`
|
|
233
|
+
# names `workflow-ptc`, and a mirror has to name the same package.
|
|
234
|
+
- id: workflow-ptc
|
|
235
|
+
name: '@deepseek-ai/dsh-workflow-ptc'
|
|
236
|
+
config:
|
|
237
|
+
provider: spawn
|
|
238
|
+
|
|
239
|
+
- id: tool-workflow
|
|
240
|
+
name: '@deepseek-ai/dsh-tool-workflow'
|
|
241
|
+
|
|
242
|
+
# Disabled with the standard row this mirrors: the tool description restricts
|
|
243
|
+
# `ralph` to runs the human explicitly asked for, and completion is a worker
|
|
244
|
+
# self-report rather than an independent evaluation.
|
|
245
|
+
- id: tool-ralph
|
|
246
|
+
name: '@deepseek-ai/dsh-tool-ralph'
|
|
247
|
+
disabled: true
|
|
248
|
+
config:
|
|
249
|
+
subagentProvider: spawn
|
|
250
|
+
maxRounds: 64
|
|
251
|
+
|
|
252
|
+
# ── remaining model-facing rows ─────────────────────────────────────────────
|
|
253
|
+
|
|
254
|
+
- id: tool-ask-user
|
|
255
|
+
name: '@deepseek-ai/dsh-tool-ask-user'
|
|
256
|
+
|
|
257
|
+
- id: tool-todo
|
|
258
|
+
name: '@deepseek-ai/dsh-tool-todo'
|
|
259
|
+
config:
|
|
260
|
+
allowParallelInProgress: true
|
|
261
|
+
|
|
262
|
+
- id: tool-web
|
|
263
|
+
name: '@deepseek-ai/dsh-tool-web'
|
|
264
|
+
config:
|
|
265
|
+
fetch: true
|
|
266
|
+
searchTimeoutMs: 60000
|
|
267
|
+
|
|
268
|
+
- id: present
|
|
269
|
+
name: '@deepseek-ai/dsh-tool-present'
|
|
270
|
+
|
|
271
|
+
- id: tool-plugin-manager
|
|
272
|
+
name: '@deepseek-ai/dsh-plugin-manager/tools'
|
|
273
|
+
disabled: true
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
# Generated by scripts/gen-preset-patches.mjs — do not edit by hand.
|
|
2
|
+
#
|
|
3
|
+
# The FreeCodeGo plugin's `freecodego` mode, declared the way the harness reads
|
|
4
|
+
# a roster: one `@deepseek-ai/dsh-agent-preset` row whose `config.plugins` is the
|
|
5
|
+
# plugin's own bundled composition, copied verbatim.
|
|
6
|
+
#
|
|
7
|
+
# Inert until `dsh.bundle.patch` in this package's manifest lists this file.
|
|
8
|
+
# Meanwhile the plugin declares the same preset through `ctx.agentPresets` at
|
|
9
|
+
# boot, and skips it as soon as a deployment declares it here.
|
|
10
|
+
- insert:
|
|
11
|
+
- id: preset-freecodego
|
|
12
|
+
name: '@deepseek-ai/dsh-agent-preset'
|
|
13
|
+
config:
|
|
14
|
+
id: freecodego
|
|
15
|
+
name: "Claude 模式"
|
|
16
|
+
description: "标准模式的全部工具,叠加蒸馏自 Claude Fable 的行为准则:先读后写、最小改动、验证驱动、简洁直接。"
|
|
17
|
+
order: 5
|
|
18
|
+
plugins:
|
|
19
|
+
# freecodego-agent-preset-v1 — owned by the FreeCodeGo plugin; local edits are preserved.
|
|
20
|
+
#
|
|
21
|
+
# The `freecodego` agent preset ("Claude 模式"): the full standard tool
|
|
22
|
+
# surface with a coding persona distilled from the Claude Fable behavior guide
|
|
23
|
+
# (tone, error ownership, verification-first coding habits, long-task context
|
|
24
|
+
# discipline, and durable-memory guidance wired to this plugin's
|
|
25
|
+
# engineering-memory tools instead of a generic memory filesystem). The
|
|
26
|
+
# composition mirrors `standard/agent.cordis.yml` row for row; only the
|
|
27
|
+
# persona section differs. The same realm and host-plane rules apply: service
|
|
28
|
+
# rows sit inside `isolate` realms so one preset's instance never collides
|
|
29
|
+
# with another's, and registries stay in the host composition.
|
|
30
|
+
|
|
31
|
+
# ── identity ────────────────────────────────────────────────────────────────
|
|
32
|
+
|
|
33
|
+
- id: persona
|
|
34
|
+
name: '@deepseek-ai/dsh-persona'
|
|
35
|
+
config:
|
|
36
|
+
suffix: Your working directory is {{cwd}}.
|
|
37
|
+
prefix: |-
|
|
38
|
+
You are a coding agent powered by the {{model}} model.
|
|
39
|
+
|
|
40
|
+
# Voice
|
|
41
|
+
|
|
42
|
+
Be direct and concise: the answer first, depth only when asked. Cut filler and restatements. No sycophancy — push back plainly when the user is wrong. Own mistakes by fixing them, not by apologizing. Answer in prose; use lists only when the content is truly multifaceted. While running many tool calls, keep the user informed with one short sentence every few calls; after the last one, answer the actual question — a bare "Done." is not a reply. Try to resolve ambiguity from the workspace before asking the user.
|
|
43
|
+
|
|
44
|
+
# Honesty
|
|
45
|
+
|
|
46
|
+
Never guess. If you cannot verify a fact, say so when stating it. Treat a prompt's implications as unverified: check that the file, function, or flag exists before building on it. Report evidence evenhandedly, including what it does not establish.
|
|
47
|
+
|
|
48
|
+
# Coding discipline
|
|
49
|
+
|
|
50
|
+
Read before writing: ground changes in the actual code, patterns, and tests. Make the minimal change; prefer existing helpers; never reformat or rename untouched code. Three similar lines beat a premature abstraction. Verify before declaring done — run the project's build, type check, lint, or tests. Fix root causes; never weaken a test or silence an error to go green. Wrap fallible external calls in explicit error handling; strip code fences before JSON.parse; validate shapes before use.
|
|
51
|
+
|
|
52
|
+
# Long tasks
|
|
53
|
+
|
|
54
|
+
Budget context: read targeted files and ranges, not whole trees. Work in stages — explore, plan, implement, verify — and name the stage you are in. Note unrelated problems in one line and stay on task. Persist progress on disk (plans, todos), not in memory.
|
|
55
|
+
|
|
56
|
+
# Project memory
|
|
57
|
+
|
|
58
|
+
Durable cross-session and cross-engine memory is available through this plugin's tools — use them instead of ad-hoc notes:
|
|
59
|
+
- `engineering_memory_search` / `engineering_memory_get`: before solving a problem, search past decisions, discoveries, and pitfalls recorded in this project; prefer its evidence over re-deriving history.
|
|
60
|
+
- `engineering_memory_save`: record durable, reusable knowledge (decisions, discoveries, bugfixes, blockers, handoffs) when a task closes — bounded, factual, written for the next engineer. Not every turn needs a record.
|
|
61
|
+
- `engineering_handoff_create`: when handing work to another engine or a future session, write the handoff with the target engine so it resumes with full context.
|
|
62
|
+
|
|
63
|
+
- id: agent-instructions
|
|
64
|
+
name: '@deepseek-ai/dsh-agent-instructions'
|
|
65
|
+
config:
|
|
66
|
+
maxBytes: 65536
|
|
67
|
+
|
|
68
|
+
# ── shell ────────────────────────────────────────────────────────────────────
|
|
69
|
+
|
|
70
|
+
- id: tool-bash
|
|
71
|
+
name: '@deepseek-ai/dsh-tool-bash'
|
|
72
|
+
disabled: !!js process.platform === 'win32'
|
|
73
|
+
|
|
74
|
+
- id: tool-pwsh
|
|
75
|
+
name: '@deepseek-ai/dsh-tool-pwsh'
|
|
76
|
+
disabled: !!js process.platform !== 'win32'
|
|
77
|
+
|
|
78
|
+
# ── filesystem ──────────────────────────────────────────────────────────────
|
|
79
|
+
|
|
80
|
+
- id: tool-fs
|
|
81
|
+
name: '@deepseek-ai/dsh-tool-fs'
|
|
82
|
+
|
|
83
|
+
- id: tool-fs-search
|
|
84
|
+
name: '@deepseek-ai/dsh-tool-fs-search'
|
|
85
|
+
config:
|
|
86
|
+
sampleOverCapGlobResults: false
|
|
87
|
+
|
|
88
|
+
# ── background jobs ────────────────────────────────────────────────────────
|
|
89
|
+
|
|
90
|
+
- id: tool-jobs
|
|
91
|
+
name: '@deepseek-ai/dsh-tool-jobs'
|
|
92
|
+
|
|
93
|
+
# ── skills ──────────────────────────────────────────────────────────────────
|
|
94
|
+
|
|
95
|
+
- id: skill-filesystem
|
|
96
|
+
name: '@deepseek-ai/dsh-skill-filesystem'
|
|
97
|
+
|
|
98
|
+
- id: tool-skill
|
|
99
|
+
name: '@deepseek-ai/dsh-tool-skill'
|
|
100
|
+
|
|
101
|
+
# ── goals ───────────────────────────────────────────────────────────────────
|
|
102
|
+
|
|
103
|
+
- id: command-goal
|
|
104
|
+
name: '@deepseek-ai/dsh-command-goal'
|
|
105
|
+
|
|
106
|
+
- id: tool-goal
|
|
107
|
+
name: '@deepseek-ai/dsh-tool-goal'
|
|
108
|
+
|
|
109
|
+
# ── plan mode ───────────────────────────────────────────────────────────────
|
|
110
|
+
|
|
111
|
+
- id: planning
|
|
112
|
+
name: cordis:group
|
|
113
|
+
group: true
|
|
114
|
+
isolate:
|
|
115
|
+
planMode: true
|
|
116
|
+
config:
|
|
117
|
+
- id: plan-mode
|
|
118
|
+
name: '@deepseek-ai/dsh-plan-mode'
|
|
119
|
+
config:
|
|
120
|
+
section: |
|
|
121
|
+
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.
|
|
122
|
+
|
|
123
|
+
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.
|
|
124
|
+
|
|
125
|
+
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.
|
|
126
|
+
|
|
127
|
+
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.
|
|
128
|
+
|
|
129
|
+
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.
|
|
130
|
+
|
|
131
|
+
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.
|
|
132
|
+
|
|
133
|
+
# ── compaction ──────────────────────────────────────────────────────────────
|
|
134
|
+
|
|
135
|
+
- id: compaction
|
|
136
|
+
name: cordis:group
|
|
137
|
+
group: true
|
|
138
|
+
isolate:
|
|
139
|
+
compaction: true
|
|
140
|
+
toolResultPruner: true
|
|
141
|
+
config:
|
|
142
|
+
- id: compaction-basic
|
|
143
|
+
name: '@deepseek-ai/dsh-compaction-basic'
|
|
144
|
+
# Summarize on the free opencode/hy3 direct route instead of the
|
|
145
|
+
# conversation model: compaction is a fixed checklist prompt, so the
|
|
146
|
+
# cheapest healthy text route keeps long sessions off paid tokens.
|
|
147
|
+
config:
|
|
148
|
+
summarizationProvider: opencode
|
|
149
|
+
# `auto` resolves at request time to the current best OpenCode free
|
|
150
|
+
# model (preference: big-pickle). The upstream free roster rotates,
|
|
151
|
+
# so a pinned id like hy3 would silently break once retired.
|
|
152
|
+
summarizationModel: auto
|
|
153
|
+
|
|
154
|
+
- id: command-compact
|
|
155
|
+
name: '@deepseek-ai/dsh-command-compact'
|
|
156
|
+
|
|
157
|
+
- id: tool-result-pruner
|
|
158
|
+
name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
|
|
159
|
+
config:
|
|
160
|
+
thresholdChars: 8192
|
|
161
|
+
headChars: 4096
|
|
162
|
+
tailChars: 1024
|
|
163
|
+
|
|
164
|
+
# ── delegation and workflows ────────────────────────────────────────────────
|
|
165
|
+
|
|
166
|
+
- id: delegation
|
|
167
|
+
name: cordis:group
|
|
168
|
+
group: true
|
|
169
|
+
isolate:
|
|
170
|
+
workflowEngine: true
|
|
171
|
+
config:
|
|
172
|
+
- id: tool-subagent-control
|
|
173
|
+
name: '@deepseek-ai/dsh-tool-subagent-control'
|
|
174
|
+
|
|
175
|
+
- id: tool-subagent-list-agents
|
|
176
|
+
name: '@deepseek-ai/dsh-tool-subagent-control/list-agents'
|
|
177
|
+
|
|
178
|
+
- id: tool-subagent
|
|
179
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
180
|
+
config:
|
|
181
|
+
provider: spawn
|
|
182
|
+
toolName: subagent
|
|
183
|
+
modelSelectionSettings: true
|
|
184
|
+
backgroundMode: continuable
|
|
185
|
+
|
|
186
|
+
- id: tool-subagent-fork
|
|
187
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
188
|
+
config:
|
|
189
|
+
provider: fork
|
|
190
|
+
toolName: subagent_fork
|
|
191
|
+
backgroundMode: continuable
|
|
192
|
+
|
|
193
|
+
- id: tool-subagent-codex
|
|
194
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
195
|
+
disabled: true
|
|
196
|
+
config:
|
|
197
|
+
provider: codex
|
|
198
|
+
toolName: subagent_codex
|
|
199
|
+
backgroundMode: one-shot
|
|
200
|
+
maxDepth: provider-managed
|
|
201
|
+
|
|
202
|
+
- id: tool-subagent-claude-code
|
|
203
|
+
name: '@deepseek-ai/dsh-tool-subagent'
|
|
204
|
+
disabled: true
|
|
205
|
+
config:
|
|
206
|
+
provider: claude-code
|
|
207
|
+
toolName: subagent_claude_code
|
|
208
|
+
backgroundMode: one-shot
|
|
209
|
+
maxDepth: provider-managed
|
|
210
|
+
|
|
211
|
+
# This row used to name `@deepseek-ai/dsh-workflow-worker-thread`, which no
|
|
212
|
+
# Harness line installs: preset discovery resolves every enabled row against
|
|
213
|
+
# the installed harness and reports the whole preset broken (the roster card
|
|
214
|
+
# reads "Failed to load") before a session could start. `standard/agent.cordis.yml`
|
|
215
|
+
# names `workflow-ptc`, and a mirror has to name the same package.
|
|
216
|
+
- id: workflow-ptc
|
|
217
|
+
name: '@deepseek-ai/dsh-workflow-ptc'
|
|
218
|
+
config:
|
|
219
|
+
provider: spawn
|
|
220
|
+
|
|
221
|
+
- id: tool-workflow
|
|
222
|
+
name: '@deepseek-ai/dsh-tool-workflow'
|
|
223
|
+
|
|
224
|
+
# Disabled with the standard row this mirrors: the tool description restricts
|
|
225
|
+
# `ralph` to runs the human explicitly asked for, and completion is a worker
|
|
226
|
+
# self-report rather than an independent evaluation.
|
|
227
|
+
- id: tool-ralph
|
|
228
|
+
name: '@deepseek-ai/dsh-tool-ralph'
|
|
229
|
+
disabled: true
|
|
230
|
+
config:
|
|
231
|
+
subagentProvider: spawn
|
|
232
|
+
maxRounds: 64
|
|
233
|
+
|
|
234
|
+
# ── remaining model-facing rows ─────────────────────────────────────────────
|
|
235
|
+
|
|
236
|
+
- id: tool-ask-user
|
|
237
|
+
name: '@deepseek-ai/dsh-tool-ask-user'
|
|
238
|
+
|
|
239
|
+
- id: tool-todo
|
|
240
|
+
name: '@deepseek-ai/dsh-tool-todo'
|
|
241
|
+
config:
|
|
242
|
+
allowParallelInProgress: true
|
|
243
|
+
|
|
244
|
+
- id: tool-web
|
|
245
|
+
name: '@deepseek-ai/dsh-tool-web'
|
|
246
|
+
config:
|
|
247
|
+
fetch: true
|
|
248
|
+
searchTimeoutMs: 60000
|
|
249
|
+
|
|
250
|
+
- id: present
|
|
251
|
+
name: '@deepseek-ai/dsh-tool-present'
|
|
252
|
+
|
|
253
|
+
- id: tool-plugin-manager
|
|
254
|
+
name: '@deepseek-ai/dsh-plugin-manager/tools'
|
|
255
|
+
disabled: true
|