@deepseek-ai/dsh-headless 0.2.1-alpha.2 → 0.2.1-alpha.3
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 +7 -4
- package/README.md +21 -0
- package/README.zh.md +21 -0
- package/cordis.patch.yml +10 -0
- package/package.json +25 -25
package/README.i18n.yaml
CHANGED
|
@@ -18,8 +18,11 @@
|
|
|
18
18
|
en: 4447012f4c84100d
|
|
19
19
|
zh: faf579ae9f04c096
|
|
20
20
|
/deepseek-ai-dsh-headless/use-this-package/running-a-one-shot-task:
|
|
21
|
-
en:
|
|
22
|
-
zh:
|
|
21
|
+
en: 89a48af61a38afc3
|
|
22
|
+
zh: fe202a1bb2c11781
|
|
23
|
+
/deepseek-ai-dsh-headless/use-this-package/credentials:
|
|
24
|
+
en: ca8217837ee9c698
|
|
25
|
+
zh: fa20daf27d4e09ef
|
|
23
26
|
/deepseek-ai-dsh-headless/use-this-package/choosing-the-session-identity:
|
|
24
27
|
en: dbaa2fac63910a4c
|
|
25
28
|
zh: 4fd5c17815ca444b
|
|
@@ -57,8 +60,8 @@
|
|
|
57
60
|
en: 0b0f74b412c7c6d8
|
|
58
61
|
zh: 6e8f918d0c4bf342
|
|
59
62
|
/deepseek-ai-dsh-headless/known-limitations-and-deferred-work:
|
|
60
|
-
en:
|
|
61
|
-
zh:
|
|
63
|
+
en: 3a6dc9666d852219
|
|
64
|
+
zh: b764f203815e179e
|
|
62
65
|
/deepseek-ai-dsh-headless/known-limitations-and-deferred-work/dev-note:
|
|
63
66
|
en: e67f633dc6fe7773
|
|
64
67
|
zh: 3bb0c20c93f16f98
|
package/README.md
CHANGED
|
@@ -49,6 +49,26 @@ The task and run options are supplied through three settings:
|
|
|
49
49
|
|
|
50
50
|
The generated [configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-headless) is the exhaustive source for every accepted field and its JSDoc.
|
|
51
51
|
|
|
52
|
+
<a id="credentials"></a>
|
|
53
|
+
### Credentials
|
|
54
|
+
|
|
55
|
+
The shipped headless profile disables the managed credential store and its authorization and DeepSeek account consumers. API-key routes use the launch environment, then `<invocation cwd>/.env`, then `$DSH_HOME/.env`. Keys and sign-ins saved by the GUI are ignored without changing their file. Providers that require a saved sign-in fail unless stored authentication is restored; external provider credential chains, such as AWS profiles, remain available.
|
|
56
|
+
|
|
57
|
+
Unset an empty launch variable to allow its `.env` fallback; an exported empty value shadows that fallback.
|
|
58
|
+
|
|
59
|
+
To restore stored authentication, add these rows to `$DSH_HOME/profiles/headless/cordis.patch.yml` or a `--patch` overlay:
|
|
60
|
+
|
|
61
|
+
```yaml
|
|
62
|
+
- id: credentials
|
|
63
|
+
disabled: false
|
|
64
|
+
- id: authorization
|
|
65
|
+
disabled: false
|
|
66
|
+
- id: deepseek-account
|
|
67
|
+
disabled: false
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The restored store uses [saved credentials before environment fallbacks](../../credentials/credentials-local/README.md). Web, SDK and ACP profiles keep that default ordering. Headless sessions, settings and tool behavior are unchanged; this profile choice is not a filesystem access boundary.
|
|
71
|
+
|
|
52
72
|
### Choosing the session identity
|
|
53
73
|
|
|
54
74
|
Every invocation defaults to a fresh `session-<uuid>` identity, which `--json` reports in its opening `session` event. Pass `--session-id <id>` to continue that conversation: the runner adopts the persisted Session with that id, and an id with no stored Session fails before the task runs rather than quietly opening an empty history. Adoption requires the composed `sessionPersistence` and `sessionQuery` services, so a profile that omits either fails loudly instead of returning an id whose history dies with the process. An Agent already live under the requested id in this process is refused: another owner may still drive it, so the runner cannot claim an exclusive run interval over it. The identity is opaque, so the exact string is used, whitespace included. The working directory is resolved through the mounted filesystem provider (`fs.resolve('.')` and `fs.processPath()`), or the process cwd when no filesystem service is mounted; new Sessions record that directory. Adoption compares the recorded cwd with the same provider-resolved directory and refuses a Session that is a subagent or forked session, that recorded no working directory, that runs under an agent preset this profile does not compose, or whose preset record is malformed — the check reads the preset the Session log currently records, so a Session that switched preset while blank is rejected too. A supervisor therefore cannot silently drive someone else's conversation under a different composition; any mismatch fails before the task runs.
|
|
@@ -133,6 +153,7 @@ The runner adds nothing to the request prefix; it only drives one user message t
|
|
|
133
153
|
These limits tell you when headless does not fit and what it needs from the `dsh` launcher. They are current package constraints, not a general CLI comparison or a task backlog.
|
|
134
154
|
|
|
135
155
|
- **One task per run** — after the task is answered the process exits; there is no interactive follow-up, so split multi-step work into separate runs.
|
|
156
|
+
- **Final background-job settlement may be absent from persisted history** — process teardown can end Session routing or close its writer before an owned job settles, including normal completion and signal shutdown; the [job lifecycle contract](../../../docs/subsystems/jobs.md#session-lifecycle-records) defines how consumers retain incomplete intervals.
|
|
136
157
|
- **Runs through the `dsh` launcher** — starting the headless profile another way fails at startup, because only the launcher can request the process exit.
|
|
137
158
|
- **No pre-token heartbeat** — in default mode stderr stays silent until the provider emits a non-empty reasoning delta; a delayed first token exposes no earlier progress signal.
|
|
138
159
|
- **Reasoning enters stderr logs** — in default mode, redirection and supervisors may retain substantially more and potentially sensitive model output; route stderr to a controlled sink when needed.
|
package/README.zh.md
CHANGED
|
@@ -49,6 +49,26 @@ agent 会完成该任务,把提供方的每个非空推理(reasoning)增
|
|
|
49
49
|
|
|
50
50
|
生成的[配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-headless)是所有受支持字段及其 JSDoc 的完整真源。
|
|
51
51
|
|
|
52
|
+
<a id="credentials"></a>
|
|
53
|
+
### 凭据
|
|
54
|
+
|
|
55
|
+
随附的 headless profile 禁用托管凭据存储,以及依赖它的 authorization 和 DeepSeek account 消费方。API 密钥路由依次使用启动环境、`<运行命令的目录>/.env` 和 `$DSH_HOME/.env`。GUI 保存的密钥和登录凭据不会被使用,存储文件保持原样。需要已保存登录凭据的提供方会失败,除非恢复存储认证;AWS profile 等提供方外部凭据链仍然可用。
|
|
56
|
+
|
|
57
|
+
启动变量为空时,请取消导出该变量,让 `.env` 后备生效;已导出的空值会遮蔽后备值。
|
|
58
|
+
|
|
59
|
+
要恢复存储认证,请把以下行加入 `$DSH_HOME/profiles/headless/cordis.patch.yml` 或 `--patch` 覆盖文件:
|
|
60
|
+
|
|
61
|
+
```yaml
|
|
62
|
+
- id: credentials
|
|
63
|
+
disabled: false
|
|
64
|
+
- id: authorization
|
|
65
|
+
disabled: false
|
|
66
|
+
- id: deepseek-account
|
|
67
|
+
disabled: false
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
恢复后,存储仍按[已保存凭据优先于环境后备](../../credentials/credentials-local/README.zh.md)解析。Web、SDK 和 ACP profile 保留这一默认顺序。headless 的会话、settings 和工具行为不变;这种 profile 配置选择不构成文件系统访问边界。
|
|
71
|
+
|
|
52
72
|
### 选择 Session 标识
|
|
53
73
|
|
|
54
74
|
每次调用默认使用全新的 `session-<uuid>` 标识,`--json` 会在开头的 `session` 事件里报告它。传入 `--session-id <id>` 延续这段对话:runner 沿用该 id 对应的持久化 Session,而该 id 没有持久化 Session 时会在任务运行前失败,而不是悄悄开出一段空历史。沿用要求已组合 `sessionPersistence` 与 `sessionQuery` 服务,因此缺少任一服务的 profile 会显式失败,而不会返回一个历史随进程消失的 id。本进程中已存在持有该 id 的存活 Agent 时会被拒绝:它的原 owner 可能仍在驱动它,runner 无法取得独占的运行区间。标识是不透明的,因此会原样使用调用方给出的字符串,包括空白字符。工作目录通过已挂载的文件系统提供方解析(`fs.resolve('.')` 与 `fs.processPath()`);未挂载文件系统服务时使用进程 cwd,新 Session 会记录该目录。沿用会将已记录 cwd 与同一提供方解析出的目录比较,并拒绝子 agent 或 fork 会话、未记录工作目录的会话、运行在本 profile 不组合的 agent preset 下的会话,以及 preset 记录畸形的会话——该检查读取 Session 日志当前记录的 preset,因此在空白期切换过 preset 的会话同样会被拒绝。因此监督进程无法在另一套组合下悄悄驱动他人的会话;任一不匹配都会在任务运行前失败。
|
|
@@ -133,6 +153,7 @@ runner 不向请求前缀添加任何内容;它只是驱动组合出的配置
|
|
|
133
153
|
这些限制告诉你 headless 何时不适用、它需要 `dsh` 启动器提供什么。它们是当前包约束,不是通用的 CLI(命令行界面)对比或任务积压。
|
|
134
154
|
|
|
135
155
|
- **每次运行一个任务**——任务得到回答后进程即退出;没有交互式后续,因此多步工作请拆成多次运行。
|
|
156
|
+
- **持久化历史可能缺少后台 job 的最后一条结算**——进程销毁可能在有主 job 结算前停止 Session 路由或关闭写句柄,正常结束和信号关停也可能如此;[job 生命周期约定](../../../docs/subsystems/jobs.zh.md#session-lifecycle-records)说明消费方如何保留不完整区间。
|
|
136
157
|
- **通过 `dsh` 启动器运行**——以其他方式启动 headless profile 会在启动时失败,因为只有启动器能请求进程退出。
|
|
137
158
|
- **首个 token 前没有心跳**——默认模式下,提供方发出第一个非空推理增量前,stderr 保持静默;延迟首个 token 的提供方不会更早给出进度信号。
|
|
138
159
|
- **推理进入 stderr 日志**——默认模式下,重定向与监督进程可能保留显著更多且可能敏感的模型输出;需要时应把 stderr 路由到受控位置。
|
package/cordis.patch.yml
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-headless",
|
|
3
3
|
"description": "The dsh one-shot bundle: a direct core Agent/Session runner over dsh-base with no Host, HTTP, or browser layer",
|
|
4
|
-
"version": "0.2.1-alpha.
|
|
4
|
+
"version": "0.2.1-alpha.3",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -40,35 +40,35 @@
|
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@deepseek-ai/dsh-brand": "0.2.1-alpha.
|
|
44
|
-
"@deepseek-ai/dsh-cmdline": "0.2.1-alpha.
|
|
45
|
-
"@deepseek-ai/dsh-util-values": "0.2.1-alpha.
|
|
46
|
-
"@deepseek-ai/schemastery": "~3.18.5-alpha.
|
|
43
|
+
"@deepseek-ai/dsh-brand": "0.2.1-alpha.3",
|
|
44
|
+
"@deepseek-ai/dsh-cmdline": "0.2.1-alpha.3",
|
|
45
|
+
"@deepseek-ai/dsh-util-values": "0.2.1-alpha.3",
|
|
46
|
+
"@deepseek-ai/schemastery": "~3.18.5-alpha.2",
|
|
47
47
|
"commander": "^15.0.0"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"@deepseek-ai/cordis": "~4.0.5-alpha.
|
|
51
|
-
"@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.
|
|
52
|
-
"@deepseek-ai/dsh-agent": "0.2.1-alpha.
|
|
53
|
-
"@deepseek-ai/dsh-agent-default-model": "0.2.1-alpha.
|
|
54
|
-
"@deepseek-ai/dsh-llm": "0.2.1-alpha.
|
|
55
|
-
"@deepseek-ai/dsh-session": "0.2.1-alpha.
|
|
56
|
-
"@deepseek-ai/dsh-session-query": "0.2.1-alpha.
|
|
57
|
-
"@deepseek-ai/dsh-fs": "0.2.1-alpha.
|
|
58
|
-
"@deepseek-ai/dsh-subagent": "0.2.1-alpha.
|
|
50
|
+
"@deepseek-ai/cordis": "~4.0.5-alpha.2",
|
|
51
|
+
"@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.2",
|
|
52
|
+
"@deepseek-ai/dsh-agent": "0.2.1-alpha.3",
|
|
53
|
+
"@deepseek-ai/dsh-agent-default-model": "0.2.1-alpha.3",
|
|
54
|
+
"@deepseek-ai/dsh-llm": "0.2.1-alpha.3",
|
|
55
|
+
"@deepseek-ai/dsh-session": "0.2.1-alpha.3",
|
|
56
|
+
"@deepseek-ai/dsh-session-query": "0.2.1-alpha.3",
|
|
57
|
+
"@deepseek-ai/dsh-fs": "0.2.1-alpha.3",
|
|
58
|
+
"@deepseek-ai/dsh-subagent": "0.2.1-alpha.3"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
|
-
"@deepseek-ai/cordis": "~4.0.5-alpha.
|
|
62
|
-
"@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.
|
|
63
|
-
"@deepseek-ai/dsh-agent": "0.2.1-alpha.
|
|
64
|
-
"@deepseek-ai/dsh-agent-default-model": "0.2.1-alpha.
|
|
65
|
-
"@deepseek-ai/dsh-agent-loop": "0.2.1-alpha.
|
|
66
|
-
"@deepseek-ai/dsh-agent-loop-testkit": "0.2.1-alpha.
|
|
67
|
-
"@deepseek-ai/dsh-llm": "0.2.1-alpha.
|
|
68
|
-
"@deepseek-ai/dsh-session": "0.2.1-alpha.
|
|
69
|
-
"@deepseek-ai/dsh-session-query": "0.2.1-alpha.
|
|
70
|
-
"@deepseek-ai/dsh-fs": "0.2.1-alpha.
|
|
71
|
-
"@deepseek-ai/dsh-subagent": "0.2.1-alpha.
|
|
61
|
+
"@deepseek-ai/cordis": "~4.0.5-alpha.2",
|
|
62
|
+
"@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.2",
|
|
63
|
+
"@deepseek-ai/dsh-agent": "0.2.1-alpha.3",
|
|
64
|
+
"@deepseek-ai/dsh-agent-default-model": "0.2.1-alpha.3",
|
|
65
|
+
"@deepseek-ai/dsh-agent-loop": "0.2.1-alpha.3",
|
|
66
|
+
"@deepseek-ai/dsh-agent-loop-testkit": "0.2.1-alpha.3",
|
|
67
|
+
"@deepseek-ai/dsh-llm": "0.2.1-alpha.3",
|
|
68
|
+
"@deepseek-ai/dsh-session": "0.2.1-alpha.3",
|
|
69
|
+
"@deepseek-ai/dsh-session-query": "0.2.1-alpha.3",
|
|
70
|
+
"@deepseek-ai/dsh-fs": "0.2.1-alpha.3",
|
|
71
|
+
"@deepseek-ai/dsh-subagent": "0.2.1-alpha.3"
|
|
72
72
|
},
|
|
73
73
|
"peerDependenciesMeta": {
|
|
74
74
|
"@deepseek-ai/dsh-subagent": {
|