@tianyi0505/dsh-superagent 0.0.0-stage → 0.1.0

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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 DeepSeek Harness Team
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,39 @@
1
- # Temporary Holding Version
1
+ # dsh-superagent
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ > **Research prototype for reference only, not an official DeepSeek product.** This code grew out of our team's day-to-day development work, with much of the engineering done by coding agents. Treat it as research code, not production-ready software. It may still contain bugs, and its coding style and engineering practices may be inconsistent. Review and adapt it before using it in your own environment.
4
+ >
5
+ > We have adapted it for publication, so it is not identical to our internal version or the implementation described in *Exploring Super-agent Design: Towards a More Autonomous Agent System*. Some designs discussed in the article are directions for future development and are not implemented in this prototype.
6
+
7
+ dsh-superagent is a proactive coding agent for one GitHub repository, packaged as a bundle for [DeepSeek Harness](https://www.deepseek.com/en/harness/). It listens to GitHub and, optionally, Feishu. When someone allowed asks the agent for work, it opens a work item, works on it in its own agent session and directory, and answers in the original conversation, for example with a pull request. A web panel shows what needs a person.
8
+
9
+ It is also a way of working with an agent: **take as little human attention as possible, and give as much value as possible.** An agent that can act for a whole team can also waste a whole team's attention, so it acts only when asked or when a rule the team wrote allows it, and speaks only when someone must act or can use a result. [docs/000-philosophy.md](docs/000-philosophy.md) explains the principle and what it asks of the operator.
10
+
11
+ ## Setup
12
+
13
+ Setup has many steps, so an agent does it with you. Ask your coding agent:
14
+
15
+ > Read SETUP.md in this repository and set up dsh-superagent with me.
16
+
17
+ It asks one short question at a time, shows the full plan once, and then installs and configures everything. [SETUP.md](SETUP.md) is what it follows.
18
+
19
+ ## Documentation
20
+
21
+ Read the numbered documents in order; each builds only on the ones before it.
22
+
23
+ - [000 Philosophy](docs/000-philosophy.md)
24
+ - [001 Domain model](docs/001-domain.md)
25
+ - [002 Authorization](docs/002-authorization.md)
26
+ - [003 Execution](docs/003-execution.md)
27
+ - [004 Prompts](docs/004-prompts.md)
28
+ - [005 Panel](docs/005-panel.md)
29
+ - [006 Deployment](docs/006-deployment.md): manual setup, configuration, upgrades and troubleshooting
30
+ - [007 Architecture](docs/007-architecture.md)
31
+ - [008 Cookbook](docs/008-cookbook.md): adding a Source
32
+
33
+ ## Development
34
+
35
+ `pnpm check` runs the typecheck, the tests and the build.
36
+
37
+ ## License
38
+
39
+ [MIT](LICENSE)
@@ -0,0 +1,193 @@
1
+ # dsh-superagent bundle layer: inserts the plugins without configuration, and the agent presets its Sessions run under. The
2
+ # profile supplies the `dsh-superagent` entry's stateDir (see docs/006-deployment.md and examples/profile.cordis.patch.yml); the plugin
3
+ # refuses to start without stateDir.
4
+ - insert:
5
+ - id: dsh-superagent
6
+ name: '@tianyi0505/dsh-superagent'
7
+ - id: dsh-superagent-github
8
+ name: '@tianyi0505/dsh-superagent/github-watch'
9
+ # Optional Feishu Source; requires configuring a bot CLI after enabling.
10
+ - id: dsh-superagent-feishu
11
+ name: '@tianyi0505/dsh-superagent/feishu-watch'
12
+ disabled: true
13
+ # The agent preset of every Executor Session (WORKER_PRESET in src/app/sessions.ts); the main Session has its own, below.
14
+ # It is DSH's `standard` preset with only what a worker needs, and a shell whose foreground command moves to a background job
15
+ # after 5 seconds, so a long command does not hold back a person's message, which the Session takes at its next step. Left
16
+ # out: questions to a person, presenting, plan mode, the plugin manager and market, scheduling, goals, workflows, web fetch,
17
+ # and forked subagents, which would run under this preset; spawned subagents run under `standard`, whose shell moves a
18
+ # command to a background job only after 60 seconds, as a subagent's jobs are killed when it ends. A preset row has no
19
+ # setting that hides it from the preset picker, so its name and description say whom it is for.
20
+ - id: dsh-superagent-worker-preset
21
+ name: '@deepseek-ai/dsh-agent-preset'
22
+ config:
23
+ id: dsh-superagent-worker
24
+ name: dsh-superagent 执行器
25
+ description: dsh-superagent 的执行器 Session 专用,不供手动选择。前台命令超 5 秒转入后台,只含执行工作所需的工具。
26
+ order: 90
27
+ plugins:
28
+ - id: persona
29
+ name: '@deepseek-ai/dsh-persona'
30
+ config:
31
+ prefix: You are a coding agent powered by the {{model}} model.
32
+ - id: agent-instructions
33
+ name: '@deepseek-ai/dsh-agent-instructions'
34
+ config:
35
+ maxBytes: 65536
36
+ - id: time-context
37
+ name: '@deepseek-ai/dsh-time-context'
38
+ # A foreground command waits at most 5 s, then the shell tool moves it to a background job.
39
+ - id: shell
40
+ name: cordis:group
41
+ group: true
42
+ isolate:
43
+ shell: true
44
+ config:
45
+ - id: bash-sandbox
46
+ name: '@deepseek-ai/dsh-bash-sandbox'
47
+ disabled: !!js process.platform === 'win32'
48
+ config:
49
+ timeoutMs: 5000
50
+ maxTimeoutMs: 5000
51
+ - id: pwsh-sandbox
52
+ name: '@deepseek-ai/dsh-pwsh-sandbox'
53
+ disabled: !!js process.platform !== 'win32'
54
+ config:
55
+ timeoutMs: 5000
56
+ maxTimeoutMs: 5000
57
+ - id: tool-bash
58
+ name: '@deepseek-ai/dsh-tool-bash'
59
+ disabled: !!js process.platform === 'win32'
60
+ - id: tool-pwsh
61
+ name: '@deepseek-ai/dsh-tool-pwsh'
62
+ disabled: !!js process.platform !== 'win32'
63
+ - id: tool-fs
64
+ name: '@deepseek-ai/dsh-tool-fs'
65
+ - id: tool-fs-search
66
+ name: '@deepseek-ai/dsh-tool-fs-search'
67
+ config:
68
+ sampleOverCapGlobResults: false
69
+ # A wait for a job ends after 5 s too; the job's end wakes the worker with its result.
70
+ - id: tool-jobs
71
+ name: '@deepseek-ai/dsh-tool-jobs'
72
+ config:
73
+ waitTimeoutMs: 5000
74
+ maxWaitTimeoutMs: 5000
75
+ - id: skill-filesystem
76
+ name: '@deepseek-ai/dsh-skill-filesystem'
77
+ - id: tool-skill
78
+ name: '@deepseek-ai/dsh-tool-skill'
79
+ - id: compaction
80
+ name: cordis:group
81
+ group: true
82
+ isolate:
83
+ compaction: true
84
+ toolResultPruner: true
85
+ config:
86
+ - id: compaction-basic
87
+ name: '@deepseek-ai/dsh-compaction-basic'
88
+ - id: command-compact
89
+ name: '@deepseek-ai/dsh-command-compact'
90
+ - id: tool-result-pruner
91
+ name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
92
+ config:
93
+ thresholdChars: 8192
94
+ headChars: 4096
95
+ tailChars: 1024
96
+ - id: delegation
97
+ name: cordis:group
98
+ group: true
99
+ isolate:
100
+ workflowEngine: true
101
+ config:
102
+ - id: tool-subagent-control
103
+ name: '@deepseek-ai/dsh-tool-subagent-control'
104
+ - id: tool-subagent
105
+ name: '@deepseek-ai/dsh-tool-subagent'
106
+ config:
107
+ provider: spawn
108
+ toolName: subagent
109
+ modelSelection: true
110
+ modelDiscovery: true
111
+ agentPreset: standard
112
+ - id: tool-todo
113
+ name: '@deepseek-ai/dsh-tool-todo'
114
+ config:
115
+ allowParallelInProgress: true
116
+ - id: tool-web
117
+ name: '@deepseek-ai/dsh-tool-web'
118
+ config:
119
+ fetch: false
120
+ searchTimeoutMs: 60000
121
+ # The agent preset of the main Session (ROUTER_PRESET in src/app/sessions.ts). The worker's 5-second shell and job waits, so a command or a wait does not hold back the next candidates, and
122
+ # only what the main Session uses: no subagents, web, file search or writes, todo list, questions to a person, presenting,
123
+ # plan mode, plugin manager, scheduling, goals or workflows. No persona: the main Session's prompt is complete, so it has
124
+ # no other section.
125
+ - id: dsh-superagent-router-preset
126
+ name: '@deepseek-ai/dsh-agent-preset'
127
+ config:
128
+ id: dsh-superagent-router
129
+ name: dsh-superagent 主 Session
130
+ description: dsh-superagent 的主 Session 专用,不供手动选择。前台命令和任务等待超 5 秒转入后台,只含路由所需的工具。
131
+ order: 91
132
+ plugins:
133
+ - id: agent-instructions
134
+ name: '@deepseek-ai/dsh-agent-instructions'
135
+ config:
136
+ maxBytes: 65536
137
+ - id: time-context
138
+ name: '@deepseek-ai/dsh-time-context'
139
+ - id: shell
140
+ name: cordis:group
141
+ group: true
142
+ isolate:
143
+ shell: true
144
+ config:
145
+ - id: bash-sandbox
146
+ name: '@deepseek-ai/dsh-bash-sandbox'
147
+ disabled: !!js process.platform === 'win32'
148
+ config:
149
+ timeoutMs: 5000
150
+ maxTimeoutMs: 5000
151
+ - id: pwsh-sandbox
152
+ name: '@deepseek-ai/dsh-pwsh-sandbox'
153
+ disabled: !!js process.platform !== 'win32'
154
+ config:
155
+ timeoutMs: 5000
156
+ maxTimeoutMs: 5000
157
+ - id: tool-bash
158
+ name: '@deepseek-ai/dsh-tool-bash'
159
+ disabled: !!js process.platform === 'win32'
160
+ - id: tool-pwsh
161
+ name: '@deepseek-ai/dsh-tool-pwsh'
162
+ disabled: !!js process.platform !== 'win32'
163
+ - id: tool-fs
164
+ name: '@deepseek-ai/dsh-tool-fs'
165
+ config:
166
+ write: false
167
+ edit: false
168
+ - id: tool-jobs
169
+ name: '@deepseek-ai/dsh-tool-jobs'
170
+ config:
171
+ waitTimeoutMs: 5000
172
+ maxWaitTimeoutMs: 5000
173
+ - id: skill-filesystem
174
+ name: '@deepseek-ai/dsh-skill-filesystem'
175
+ - id: tool-skill
176
+ name: '@deepseek-ai/dsh-tool-skill'
177
+ - id: compaction
178
+ name: cordis:group
179
+ group: true
180
+ isolate:
181
+ compaction: true
182
+ toolResultPruner: true
183
+ config:
184
+ - id: compaction-basic
185
+ name: '@deepseek-ai/dsh-compaction-basic'
186
+ - id: command-compact
187
+ name: '@deepseek-ai/dsh-command-compact'
188
+ - id: tool-result-pruner
189
+ name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
190
+ config:
191
+ thresholdChars: 8192
192
+ headChars: 4096
193
+ tailChars: 1024