mirror of
https://github.com/deepseek-ai/deepseek-harness.git
synced 2026-10-26 16:55:08 +00:00
fix(sdk): defer harness development context alignment
This commit is contained in:
1 parent
1781189c31
commit
1861316e74
38 files changed
+72
-223
No files matched your search
@@ -185,10 +185,11 @@ describe('Python SDK dsh profile keyless smoke', () => {
|
||||
expect(toolNames).not.toContain('list_subagent_models')
|
||||
}
|
||||
for (const text of ['Tokens prefixed with @', 'Prefer showing the primary results',
|
||||
'Current DeepSeek Harness implementation checkout:', 'Current DeepSeek Harness Web GUI URL:',
|
||||
'Time sampled while preparing']) {
|
||||
expect(requestText.includes(text), text).toBe(true)
|
||||
}
|
||||
expect(requestText).not.toContain('Current DeepSeek Harness implementation checkout:')
|
||||
expect(requestText).not.toContain('Current DeepSeek Harness Web GUI URL:')
|
||||
|
||||
child.stdin.write(`${JSON.stringify({ jsonrpc: '2.0', id: 3, method: 'shutdown' })}\n`)
|
||||
const shutdown = await waitForLine(lines, value => value.id === 3, () => stderr)
|
||||
|
||||
@@ -1 +1 @@
|
||||
The runtime context states whether a DeepSeek Harness Web GUI is available and names its URL when provided. When a Web GUI is provided and the user refers to "this page", "this GUI", or "this app" without naming another target, they mean that GUI. The browser provides no implicit DOM, route, or screenshot context. Client-plugin changes reload without a refresh only when the browser HMR receiver is active and `pnpm run dev:web` is running from this same checkout to rebuild their bundles; verify both before promising automatic updates. Server plugin/configuration HMR is independent of the browser receiver and the build watcher, and can be enabled in a headless runtime. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
You are interacting with the user through the DeepSeek Harness Web GUI whose URL the runtime context names. When the user refers to "this page", "this GUI", or "this app" without naming another target, they mean this GUI. The browser provides no implicit DOM, route, or screenshot context. The client-plugin HMR receiver is active, but client-plugin changes reload without a refresh only while `pnpm run dev:web` is also running from this same checkout to rebuild their bundles; verify that watcher before promising automatic updates. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
+1
-19
@@ -1483,25 +1483,6 @@ export interface Config {
|
||||
```
|
||||
<!-- END GENERATED config-catalog:@deepseek-ai/dsh-goal -->
|
||||
|
||||
<!-- BEGIN GENERATED config-catalog:@deepseek-ai/dsh-harness-dev-context -->
|
||||
<a id="deepseek-aidsh-harness-dev-context"></a>
|
||||
|
||||
## `@deepseek-ai/dsh-harness-dev-context`
|
||||
|
||||
- `inject`: `systemPrompt` · `sessionProjections`
|
||||
- `source`: [`packages/context/harness-dev-context/src/index.ts:31`](../packages/context/harness-dev-context/src/index.ts)
|
||||
|
||||
```ts config-catalog
|
||||
/** Desktop context supplied by a host or an SDK embedding. */
|
||||
export interface Config {
|
||||
/** Implementation checkout; omission detects a source tree, false disables detection. */
|
||||
checkout?: string | false
|
||||
/** GUI URL; omit to use the mounted Web application when available. */
|
||||
guiUrl?: string
|
||||
}
|
||||
```
|
||||
<!-- END GENERATED config-catalog:@deepseek-ai/dsh-harness-dev-context -->
|
||||
|
||||
<!-- BEGIN GENERATED config-catalog:@deepseek-ai/dsh-headless -->
|
||||
<a id="deepseek-aidsh-headless"></a>
|
||||
|
||||
@@ -4763,6 +4744,7 @@ These load from a `cordis.yml` entry with no `config:` block; they declare no co
|
||||
| `@deepseek-ai/dsh-fs-observation-policy` | — | [`packages/fs/fs-observation-policy/src/index.ts`](../packages/fs/fs-observation-policy/src/index.ts) |
|
||||
| `@deepseek-ai/dsh-fs-ssh` | `ssh` · `sandboxPolicy` | [`packages/ssh/fs-ssh/src/index.ts`](../packages/ssh/fs-ssh/src/index.ts) |
|
||||
| `@deepseek-ai/dsh-goal-round-driver` | `agents` · `goals` · `sessions` | [`packages/goal/goal-round-driver/src/index.ts`](../packages/goal/goal-round-driver/src/index.ts) |
|
||||
| `@deepseek-ai/dsh-harness-dev-context` | `systemPrompt` · `sessionProjections` · `webApp` | [`packages/context/harness-dev-context/src/index.ts`](../packages/context/harness-dev-context/src/index.ts) |
|
||||
| `@deepseek-ai/dsh-host-directory-picker-auto` | `webServer` · `connection` · `loader` | [`packages/host/directory-picker-auto/src/index.ts`](../packages/host/directory-picker-auto/src/index.ts) |
|
||||
| `@deepseek-ai/dsh-host-directory-picker-native` | — | [`packages/host/directory-picker-native/src/index.ts`](../packages/host/directory-picker-native/src/index.ts) |
|
||||
| `@deepseek-ai/dsh-host-plugin-inventory` | `loader` | [`packages/host/plugin-inventory/src/index.ts`](../packages/host/plugin-inventory/src/index.ts) |
|
||||
|
||||
@@ -1485,25 +1485,6 @@ export interface Config {
|
||||
```
|
||||
<!-- END GENERATED config-catalog:@deepseek-ai/dsh-goal -->
|
||||
|
||||
<!-- BEGIN GENERATED config-catalog:@deepseek-ai/dsh-harness-dev-context -->
|
||||
<a id="deepseek-aidsh-harness-dev-context"></a>
|
||||
|
||||
## `@deepseek-ai/dsh-harness-dev-context`
|
||||
|
||||
- `inject`: `systemPrompt` · `sessionProjections`
|
||||
- `source`: [`packages/context/harness-dev-context/src/index.ts:31`](../packages/context/harness-dev-context/src/index.ts)
|
||||
|
||||
```ts config-catalog
|
||||
/** Desktop context supplied by a host or an SDK embedding. */
|
||||
export interface Config {
|
||||
/** Implementation checkout; omission detects a source tree, false disables detection. */
|
||||
checkout?: string | false
|
||||
/** GUI URL; omit to use the mounted Web application when available. */
|
||||
guiUrl?: string
|
||||
}
|
||||
```
|
||||
<!-- END GENERATED config-catalog:@deepseek-ai/dsh-harness-dev-context -->
|
||||
|
||||
<!-- BEGIN GENERATED config-catalog:@deepseek-ai/dsh-headless -->
|
||||
<a id="deepseek-aidsh-headless"></a>
|
||||
|
||||
@@ -4765,6 +4746,7 @@ export interface Config {
|
||||
| `@deepseek-ai/dsh-fs-observation-policy` | — | [`packages/fs/fs-observation-policy/src/index.ts`](../packages/fs/fs-observation-policy/src/index.ts) |
|
||||
| `@deepseek-ai/dsh-fs-ssh` | `ssh` · `sandboxPolicy` | [`packages/ssh/fs-ssh/src/index.ts`](../packages/ssh/fs-ssh/src/index.ts) |
|
||||
| `@deepseek-ai/dsh-goal-round-driver` | `agents` · `goals` · `sessions` | [`packages/goal/goal-round-driver/src/index.ts`](../packages/goal/goal-round-driver/src/index.ts) |
|
||||
| `@deepseek-ai/dsh-harness-dev-context` | `systemPrompt` · `sessionProjections` · `webApp` | [`packages/context/harness-dev-context/src/index.ts`](../packages/context/harness-dev-context/src/index.ts) |
|
||||
| `@deepseek-ai/dsh-host-directory-picker-auto` | `webServer` · `connection` · `loader` | [`packages/host/directory-picker-auto/src/index.ts`](../packages/host/directory-picker-auto/src/index.ts) |
|
||||
| `@deepseek-ai/dsh-host-directory-picker-native` | — | [`packages/host/directory-picker-native/src/index.ts`](../packages/host/directory-picker-native/src/index.ts) |
|
||||
| `@deepseek-ai/dsh-host-plugin-inventory` | `loader` | [`packages/host/plugin-inventory/src/index.ts`](../packages/host/plugin-inventory/src/index.ts) |
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
en: d202616bf6e03fa4
|
||||
zh: cc276adda4b952be
|
||||
/sdk-desktop-tools-and-context/change:
|
||||
en: cce3baa734a032c5
|
||||
zh: 5569352cdc7c3ea6
|
||||
en: 85ac2825c52e2503
|
||||
zh: fd6fdbdca131c778
|
||||
/sdk-desktop-tools-and-context/migration:
|
||||
en: aa889cac30c2eac6
|
||||
zh: 028d071aaa6925ed
|
||||
en: 9caef4f8b153622a
|
||||
zh: 1b4901f5b18b72fd
|
||||
@@ -9,10 +9,10 @@ English | [中文](guide.zh.md)
|
||||
|
||||
## Change
|
||||
|
||||
The existing `sdk` profile now includes `present`, `ask_user_question`, schedule tools, file-reference guidance, checkout/GUI context, and time context. It does not start a Web server. Standard tool calling remains the default; `DSH_TOOLS_MODE=ptc` selects programmatic tool calling in the same profile. `sdk-minimal` is unchanged.
|
||||
The existing `sdk` profile now includes `present`, `ask_user_question`, schedule tools, file-reference guidance and time context. It does not start a Web server. Standard tool calling remains the default; `DSH_TOOLS_MODE=ptc` selects programmatic tool calling in the same profile. `sdk-minimal` is unchanged.
|
||||
|
||||
## Migration
|
||||
|
||||
1. Keep selecting `sdk`. Provide `onUserQuestion` (TypeScript) or `on_user_question` (Python) to answer built-in questions over the native protocol, or retain an in-process `user-questions/request` answerer; without one, the tool reports `NO_PROVIDER`.
|
||||
2. Set `checkout` and `guiUrl` on `harness-dev-context` only when your embedding provides them. The checkout is detected only when the installation contains the CLI and Agent source trees; a GUI URL remains unavailable unless provided. Working directory and model still come from SDK initialization.
|
||||
3. Custom compositions that need the previous model-visible tool/context roster can disable the `present`, `tool-ask-user`, `tool-schedule`, `file-reference-local`, `deliverable-file-references`, `harness-dev-context`, and `time-context` rows. Review any pinned prompts and tool schemas before upgrading.
|
||||
2. Working directory and model still come from SDK initialization. The SDK profile does not mount the Web-specific checkout and GUI development context.
|
||||
3. Custom compositions that need the previous model-visible tool/context roster can disable the `present`, `tool-ask-user`, `tool-schedule`, `file-reference-local`, `deliverable-file-references`, and `time-context` rows. Review any pinned prompts and tool schemas before upgrading.
|
||||
@@ -9,10 +9,10 @@ description: 现有 SDK profile 包含原生桌面工具和模型上下文。
|
||||
|
||||
## 变更
|
||||
|
||||
现有 `sdk` profile 现在包含 `present`、`ask_user_question`、定时任务工具、文件引用说明、checkout/GUI 上下文和时间上下文。它不启动 Web server。默认仍使用标准工具调用;`DSH_TOOLS_MODE=ptc` 在同一 profile 中选择程序化工具调用。`sdk-minimal` 保持不变。
|
||||
现有 `sdk` profile 现在包含 `present`、`ask_user_question`、定时任务工具、文件引用说明和时间上下文。它不启动 Web server。默认仍使用标准工具调用;`DSH_TOOLS_MODE=ptc` 在同一 profile 中选择程序化工具调用。`sdk-minimal` 保持不变。
|
||||
|
||||
## 迁移
|
||||
|
||||
1. 继续选择 `sdk`。通过 `onUserQuestion`(TypeScript)或 `on_user_question`(Python)使用原生协议回答内建问题,或保留进程内的 `user-questions/request` 回答方;没有回答方时,工具报告 `NO_PROVIDER`。
|
||||
2. 仅在嵌入方提供对应值时,在 `harness-dev-context` 上设置 `checkout` 和 `guiUrl`。仅在安装中包含 CLI 和 Agent 源码树时自动识别 checkout;未提供 GUI URL 时报告其不可用。工作目录和模型仍来自 SDK 初始化。
|
||||
3. 需要保留之前模型可见工具/上下文组合的自定义配置,可以禁用 `present`、`tool-ask-user`、`tool-schedule`、`file-reference-local`、`deliverable-file-references`、`harness-dev-context` 和 `time-context` 配置项。升级前请检查固定的提示词和工具 schema。
|
||||
2. 工作目录和模型仍来自 SDK 初始化。SDK profile 不挂载 Web 专用的 checkout 和 GUI 开发上下文。
|
||||
3. 需要保留之前模型可见工具/上下文组合的自定义配置,可以禁用 `present`、`tool-ask-user`、`tool-schedule`、`file-reference-local`、`deliverable-file-references` 和 `time-context` 配置项。升级前请检查固定的提示词和工具 schema。
|
||||
@@ -24,8 +24,8 @@
|
||||
en: 4f88e647c6df4f42
|
||||
zh: 2bd3e4b0bdfe9412
|
||||
/deepseek-ai-dsh-sdk-app/model-experience/sdk-model-context/what-the-model-sees:
|
||||
en: 1cc1ab77e1ecb0a2
|
||||
zh: b9c1acb461a6afcc
|
||||
en: 0cce2b88aae3a0e5
|
||||
zh: fcb31314096ef15e
|
||||
/deepseek-ai-dsh-sdk-app/model-experience/sdk-model-context/token-effect:
|
||||
en: 0d4a38b2448396b3
|
||||
zh: e63408a146bf0100
|
||||
|
||||
@@ -46,7 +46,7 @@ The Python runtime exposes explicitly downloaded authoring resources and Office
|
||||
|
||||
#### What the model sees
|
||||
|
||||
The profile inherits the base system prompt, including the `You are an AI agent powered by DeepSeek Harness.` identity, and adds the same model-interpolated coding persona as the Web and headless profiles. Each Session receives its current directory in required user-role context from [`dsh-working-directory`](../../session/working-directory/README.md). Default file tool schemas include `read`, `write`, and `edit`; they omit `str_replace_editor`. The model also receives `present`, `ask_user_question`, schedule tools, shared file-reference guidance, and time context. Child agents cannot use schedule tools. The [`harness-dev-context`](../../context/harness-dev-context/README.md) row accepts `checkout` and `guiUrl`; it detects a source checkout when the installation contains the CLI and Agent source trees, while the GUI remains unavailable without an embedding-provided URL. The [`time-context`](../../context/time-context/README.md) row accepts a fallback time zone. Skills use the configured resources described above.
|
||||
The profile inherits the base system prompt, including the `You are an AI agent powered by DeepSeek Harness.` identity, and adds the same model-interpolated coding persona as the Web and headless profiles. Each Session receives its current directory in required user-role context from [`dsh-working-directory`](../../session/working-directory/README.md). Default file tool schemas include `read`, `write`, and `edit`; they omit `str_replace_editor`. The model also receives `present`, `ask_user_question`, schedule tools, shared file-reference guidance, and time context. Child agents cannot use schedule tools. The [`time-context`](../../context/time-context/README.md) row accepts a fallback time zone. Skills use the configured resources described above.
|
||||
|
||||
#### Token effect
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ Python 运行时向本 profile 提供显式下载的创作资源和 Office sidec
|
||||
|
||||
#### 模型看到什么
|
||||
|
||||
profile 继承 base 系统提示词,包括 `You are an AI agent powered by DeepSeek Harness.` 身份说明,并添加与 Web 和 headless profile 相同、按当前模型插值的 coding persona。每个 Session 通过 [`dsh-working-directory`](../../session/working-directory/README.zh.md) 提供的必需 user-role 上下文接收当前目录。默认文件工具 schema 包含 `read`、`write` 和 `edit`,不包含 `str_replace_editor`。模型还会收到 `present`、`ask_user_question`、定时任务工具、共用文件引用说明和时间上下文。子 agent 不能使用定时任务工具。[`harness-dev-context`](../../context/harness-dev-context/README.zh.md) 配置项接受 `checkout` 和 `guiUrl`;安装中包含 CLI 和 Agent 源码树时自动识别 checkout;没有嵌入方提供的 URL 时 GUI 不可用。[`time-context`](../../context/time-context/README.zh.md) 配置项接受回退时区。Skills 使用上述配置的资源。
|
||||
profile 继承 base 系统提示词,包括 `You are an AI agent powered by DeepSeek Harness.` 身份说明,并添加与 Web 和 headless profile 相同、按当前模型插值的 coding persona。每个 Session 通过 [`dsh-working-directory`](../../session/working-directory/README.zh.md) 提供的必需 user-role 上下文接收当前目录。默认文件工具 schema 包含 `read`、`write` 和 `edit`,不包含 `str_replace_editor`。模型还会收到 `present`、`ask_user_question`、定时任务工具、共用文件引用说明和时间上下文。子 agent 不能使用定时任务工具。[`time-context`](../../context/time-context/README.zh.md) 配置项接受回退时区。Skills 使用上述配置的资源。
|
||||
|
||||
#### Token 影响
|
||||
|
||||
|
||||
@@ -76,6 +76,3 @@
|
||||
|
||||
- id: deliverable-file-references
|
||||
name: '@deepseek-ai/dsh-tool-present/prompt'
|
||||
|
||||
- id: harness-dev-context
|
||||
name: '@deepseek-ai/dsh-harness-dev-context'
|
||||
@@ -48,8 +48,7 @@
|
||||
"@deepseek-ai/dsh-tool-schedule": "workspace:*",
|
||||
"@deepseek-ai/dsh-tool-ask-user": "workspace:*",
|
||||
"@deepseek-ai/dsh-tool-present": "workspace:*",
|
||||
"@deepseek-ai/dsh-file-reference-local": "workspace:*",
|
||||
"@deepseek-ai/dsh-harness-dev-context": "workspace:*"
|
||||
"@deepseek-ai/dsh-file-reference-local": "workspace:*"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@deepseek-ai/cordis": "workspace:~"
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
en: d152484eb41ac6b4
|
||||
zh: 09388d293f9be9cb
|
||||
/deepseek-ai-dsh-harness-dev-context/use-this-package:
|
||||
en: 3f8417be2523dc7d
|
||||
zh: c26f64067e3947bd
|
||||
en: d3192709a416f7fb
|
||||
zh: 479253a5ae1adcb2
|
||||
/deepseek-ai-dsh-harness-dev-context/use-this-package/what-the-model-gets:
|
||||
en: 61ed8e1b10c64299
|
||||
zh: 4f465b5aeeb64a08
|
||||
en: d9f5b11af33b3eb8
|
||||
zh: fc96b972503a0b99
|
||||
/deepseek-ai-dsh-harness-dev-context/use-this-package/sessions-from-earlier-releases:
|
||||
en: d810950db5118265
|
||||
zh: d20e3965fa78e0f8
|
||||
|
||||
@@ -25,11 +25,11 @@ English | [中文](README.zh.md)
|
||||
<a id="use-this-package"></a>
|
||||
## Use this package
|
||||
|
||||
The Web and `sdk` bundles mount the `harness-dev-context` row. It requires `systemPrompt` and `sessionProjections`; `webApp` is optional. Set `checkout` to a host-provided implementation source path, omit it to detect whether this installation contains the CLI and Agent source trees, or set it to `false` to disable detection. Detection runs once at activation; a packaged runtime without these sources is not a checkout. Set `guiUrl` to the embedding GUI URL; otherwise the plugin reads `webApp.getAdvertisedUrl()` when available. Missing values are reported as `not available`. GUI and browser HMR guidance is conditional; a headless runtime does not claim that a browser or client HMR receiver is active. Server plugin/configuration HMR, the browser receiver, and the build watcher are independent capabilities. Disable the row to omit both sections and contexts.
|
||||
The shipped Web bundle mounts this plugin as its `harness-dev-context` row. Disable that row in a profile patch when the agent should not learn the harness checkout or GUI URL. The plugin takes no configuration and activates only where every injected service exists: `systemPrompt`, `sessionProjections`, and the `webApp` service of the Web runtime, so `--help` and non-Web compositions never mount it.
|
||||
|
||||
### What the model gets
|
||||
|
||||
Two system-prompt sections explain that the checkout differs from the working directory and that "this page" means this GUI, together with the GUI update contract. Two runtime-context lines state the current values: the detected or host-provided implementation checkout when available, and the Web GUI's advertised URL from `webApp.getAdvertisedUrl()`, the same value as `DSH_WEB_URL` and the startup URL. Runtime context follows the shared snapshot rules: an unchanged value adds nothing, and a changed one appends a snapshot before the step's input instead of rewriting earlier messages.
|
||||
Two system-prompt sections explain that the checkout differs from the working directory and that "this page" means this GUI, together with the GUI update contract. Two runtime-context lines state the current values: the installation root four directories above this package, and the Web GUI's advertised URL from `webApp.getAdvertisedUrl()`, the same value as `DSH_WEB_URL` and the startup URL. Runtime context follows the shared snapshot rules: an unchanged value adds nothing, and a changed one appends a snapshot before the step's input instead of rewriting earlier messages.
|
||||
|
||||
### Sessions from earlier releases
|
||||
|
||||
@@ -87,9 +87,9 @@ Two system-prompt paragraphs at first-party orders 10000 and 10100, after reusab
|
||||
##### System-prompt paragraphs
|
||||
|
||||
```markdown
|
||||
The runtime context states whether a DeepSeek Harness implementation checkout is available and names its path when provided. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
The runtime context names the DeepSeek Harness implementation checkout. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness Web GUI is available and names its URL when provided. When a Web GUI is provided and the user refers to "this page", "this GUI", or "this app" without naming another target, they mean that GUI. The browser provides no implicit DOM, route, or screenshot context. Client-plugin changes reload without a refresh only when the browser HMR receiver is active and `pnpm run dev:web` is running from this same checkout to rebuild their bundles; verify both before promising automatic updates. Server plugin/configuration HMR is independent of the browser receiver and the build watcher, and can be enabled in a headless runtime. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
You are interacting with the user through the DeepSeek Harness Web GUI whose URL the runtime context names. When the user refers to "this page", "this GUI", or "this app" without naming another target, they mean this GUI. The browser provides no implicit DOM, route, or screenshot context. The client-plugin HMR receiver is active, but client-plugin changes reload without a refresh only while `pnpm run dev:web` is also running from this same checkout to rebuild their bundles; verify that watcher before promising automatic updates. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
```
|
||||
|
||||
##### Runtime-context lines
|
||||
|
||||
@@ -25,11 +25,11 @@ kind: "package-reference"
|
||||
<a id="use-this-package"></a>
|
||||
## 使用本包
|
||||
|
||||
Web 和 `sdk` bundle 挂载 `harness-dev-context` 行。它依赖 `systemPrompt` 和 `sessionProjections`,`webApp` 为可选服务。将 `checkout` 设为宿主提供的实现源码路径;省略时检测安装中是否包含 CLI 和 Agent 源码树,设为 `false` 则关闭检测。检测仅在激活时执行一次;不含这些源码的打包运行时不会被当作 checkout。将 `guiUrl` 设为嵌入应用的 GUI URL;否则插件在服务可用时读取 `webApp.getAdvertisedUrl()`。缺失值显示为 `not available`。GUI 和浏览器 HMR 说明以相应能力可用为前提;headless 运行时不会声称浏览器或客户端 HMR 接收器已启用。服务端插件/配置 HMR、浏览器接收器和构建 watcher 是独立的能力。禁用该行会同时省略两个提示段和上下文。
|
||||
随附的 Web bundle 以 `harness-dev-context` 行挂载此插件。不希望 agent 得知 harness checkout 或 GUI URL 时,在 profile patch 中禁用该行。插件不接受配置,只在每个注入服务都存在时激活:`systemPrompt`、`sessionProjections`,以及 Web 运行时的 `webApp` 服务,因此 `--help` 与非 Web 组合永远不会挂载它。
|
||||
|
||||
### 模型得到什么
|
||||
|
||||
两个系统提示词段落说明 checkout 与工作目录不同、「this page」指此 GUI,并给出 GUI 的更新约定。两行运行时上下文给出当前值:检测到或宿主提供的实现 checkout(若可用),以及 `webApp.getAdvertisedUrl()` 给出的 Web GUI 公告 URL,与 `DSH_WEB_URL` 和启动 URL 相同。运行时上下文遵循共享的快照规则:值不变不追加内容,值变化时在本步输入之前追加一份快照,而不是改写更早的消息。
|
||||
两个系统提示词段落说明 checkout 与工作目录不同、「this page」指此 GUI,并给出 GUI 的更新约定。两行运行时上下文给出当前值:本包上方四层目录处的安装根,以及 `webApp.getAdvertisedUrl()` 给出的 Web GUI 公告 URL,与 `DSH_WEB_URL` 和启动 URL 相同。运行时上下文遵循共享的快照规则:值不变不追加内容,值变化时在本步输入之前追加一份快照,而不是改写更早的消息。
|
||||
|
||||
### 早期版本的会话
|
||||
|
||||
@@ -87,9 +87,9 @@ Web 和 `sdk` bundle 挂载 `harness-dev-context` 行。它依赖 `systemPrompt`
|
||||
##### 系统提示词段落
|
||||
|
||||
```markdown
|
||||
The runtime context states whether a DeepSeek Harness implementation checkout is available and names its path when provided. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
The runtime context names the DeepSeek Harness implementation checkout. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness Web GUI is available and names its URL when provided. When a Web GUI is provided and the user refers to "this page", "this GUI", or "this app" without naming another target, they mean that GUI. The browser provides no implicit DOM, route, or screenshot context. Client-plugin changes reload without a refresh only when the browser HMR receiver is active and `pnpm run dev:web` is running from this same checkout to rebuild their bundles; verify both before promising automatic updates. Server plugin/configuration HMR is independent of the browser receiver and the build watcher, and can be enabled in a headless runtime. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
You are interacting with the user through the DeepSeek Harness Web GUI whose URL the runtime context names. When the user refers to "this page", "this GUI", or "this app" without naming another target, they mean this GUI. The browser provides no implicit DOM, route, or screenshot context. The client-plugin HMR receiver is active, but client-plugin changes reload without a refresh only while `pnpm run dev:web` is also running from this same checkout to rebuild their bundles; verify that watcher before promising automatic updates. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
```
|
||||
|
||||
##### 运行时上下文行
|
||||
|
||||
@@ -27,8 +27,7 @@
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"zod": "4.4.3",
|
||||
"@deepseek-ai/schemastery": "workspace:~"
|
||||
"zod": "4.4.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@deepseek-ai/cordis": "workspace:~",
|
||||
|
||||
@@ -10,11 +10,8 @@
|
||||
*/
|
||||
|
||||
import { fileURLToPath } from 'node:url'
|
||||
import { existsSync } from 'node:fs'
|
||||
import { join } from 'node:path'
|
||||
import type { Context } from '@deepseek-ai/cordis'
|
||||
import { z as zod } from 'zod'
|
||||
import z from '@deepseek-ai/schemastery'
|
||||
import type {} from '@deepseek-ai/dsh-agent'
|
||||
import type {} from '@deepseek-ai/dsh-web-app'
|
||||
import type { SessionEvent } from '@deepseek-ai/dsh-session'
|
||||
@@ -24,22 +21,8 @@ import type { AssembleContext } from '@deepseek-ai/dsh-system-prompt'
|
||||
/** Stable Cordis plugin name. */
|
||||
export const name = 'harness-dev-context'
|
||||
|
||||
/** Prompt and projection registries; the Web GUI service is optional. */
|
||||
export const inject = ['systemPrompt', 'sessionProjections']
|
||||
|
||||
/** Desktop context supplied by a host or an SDK embedding. */
|
||||
export interface Config {
|
||||
/** Implementation checkout; omission detects a source tree, false disables detection. */
|
||||
checkout?: string | false
|
||||
/** GUI URL; omit to use the mounted Web application when available. */
|
||||
guiUrl?: string
|
||||
}
|
||||
|
||||
/** Validate deployment-provided desktop context. */
|
||||
export const Config: z<Config> = z.object({
|
||||
checkout: z.union([z.string(), z.const(false)]),
|
||||
guiUrl: z.string(),
|
||||
})
|
||||
/** Prompt registries, the projection registry, and the Web GUI whose URL the model learns. */
|
||||
export const inject = ['systemPrompt', 'sessionProjections', 'webApp']
|
||||
|
||||
/** This installation's root, four directories above this package's source or built entry. */
|
||||
const SOURCE_ROOT = fileURLToPath(new URL('../../../..', import.meta.url))
|
||||
@@ -54,19 +37,18 @@ const HARNESS_SOURCE_GUIDANCE = 'The checkout location and current working direc
|
||||
+ 'never infer the working directory from the checkout path. Use pwd to determine the current working directory. '
|
||||
+ 'Use this checkout only to inspect or extend DSH itself.'
|
||||
|
||||
const HARNESS_SOURCE_PROMPT = `The runtime context states whether a DeepSeek Harness implementation checkout is available and names its path when provided. ${HARNESS_SOURCE_GUIDANCE}`
|
||||
const HARNESS_SOURCE_PROMPT = `The runtime context names the DeepSeek Harness implementation checkout. ${HARNESS_SOURCE_GUIDANCE}`
|
||||
|
||||
const WEB_SURFACE_GUIDANCE = 'When a Web GUI is provided and the user refers to "this page", "this GUI", or "this app" without naming another target, they mean that GUI. '
|
||||
const WEB_SURFACE_GUIDANCE = 'When the user refers to "this page", "this GUI", or "this app" without naming another target, they mean this GUI. '
|
||||
+ 'The browser provides no implicit DOM, route, or screenshot context. '
|
||||
+ 'Client-plugin changes reload without a refresh only when the browser HMR receiver is active and '
|
||||
+ '`pnpm run dev:web` is running from this same checkout to rebuild their bundles; verify both before promising automatic updates. '
|
||||
+ 'Server plugin/configuration HMR is independent of the browser receiver and the build watcher, and can be enabled in a headless runtime. '
|
||||
+ 'The client-plugin HMR receiver is active, but client-plugin changes reload without a refresh only while '
|
||||
+ '`pnpm run dev:web` is also running from this same checkout to rebuild their bundles; verify that watcher before promising automatic updates. '
|
||||
+ 'Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. '
|
||||
+ 'Starting another server does not update this GUI. '
|
||||
+ 'The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. '
|
||||
+ 'Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.'
|
||||
|
||||
const WEB_SURFACE_PROMPT = `The runtime context states whether a DeepSeek Harness Web GUI is available and names its URL when provided. ${WEB_SURFACE_GUIDANCE}`
|
||||
const WEB_SURFACE_PROMPT = `You are interacting with the user through the DeepSeek Harness Web GUI whose URL the runtime context names. ${WEB_SURFACE_GUIDANCE}`
|
||||
|
||||
/**
|
||||
* Fixed text around the value in each paragraph that embedded it, frozen as
|
||||
@@ -141,13 +123,9 @@ const ADMITS_NOTHING: LegacyPrompt = { source: null, web: null }
|
||||
/**
|
||||
* Register the two sections, their runtime-context values, and the
|
||||
* projection that keeps a Session's admitted paragraphs.
|
||||
* @param ctx - plugin context with the required {@link inject} services.
|
||||
* @param config - optional embedding checkout and GUI URL.
|
||||
* @param ctx - plugin context with every {@link inject} service.
|
||||
*/
|
||||
export function apply(ctx: Context, config: Config = {}): void {
|
||||
// Inspect only at activation. A packaged runtime is not necessarily a source checkout.
|
||||
const checkout = config.checkout ?? (existsSync(join(SOURCE_ROOT, 'apps/cli/src/bin.ts'))
|
||||
&& existsSync(join(SOURCE_ROOT, 'packages/core/agent/src/index.ts')) ? SOURCE_ROOT : false)
|
||||
export function apply(ctx: Context): void {
|
||||
ctx.sessionProjections.register({
|
||||
key: LEGACY_PROMPT,
|
||||
stateVersion: 1,
|
||||
@@ -170,8 +148,7 @@ export function apply(ctx: Context, config: Config = {}): void {
|
||||
name: HARNESS_SOURCE,
|
||||
order: ctx.systemPrompt.getContextOrder('HARNESS_SOURCE'),
|
||||
interpolate: false,
|
||||
text: `Current DeepSeek Harness implementation checkout: ${checkout === false
|
||||
? 'not available' : JSON.stringify(checkout)}.`,
|
||||
text: `Current DeepSeek Harness implementation checkout: ${JSON.stringify(SOURCE_ROOT)}.`,
|
||||
})
|
||||
ctx.systemPrompt.section({
|
||||
name: WEB_SURFACE,
|
||||
@@ -183,10 +160,6 @@ export function apply(ctx: Context, config: Config = {}): void {
|
||||
name: WEB_SURFACE,
|
||||
order: ctx.systemPrompt.getContextOrder('WEB_SURFACE'),
|
||||
interpolate: false,
|
||||
text: () => {
|
||||
const url = config.guiUrl ?? ctx.get('webApp')?.getAdvertisedUrl()
|
||||
return `Current DeepSeek Harness Web GUI URL: ${url === undefined
|
||||
? 'not available' : JSON.stringify(url)}.`
|
||||
},
|
||||
text: () => `Current DeepSeek Harness Web GUI URL: ${JSON.stringify(ctx.webApp.getAdvertisedUrl())}.`,
|
||||
})
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
/** Prompt stability of the harness checkout and Web GUI URL across processes, checkouts, and ports. */
|
||||
|
||||
import { describe, expect, it, onTestFinished, vi } from 'vitest'
|
||||
import { existsSync } from 'node:fs'
|
||||
import { describe, expect, it, onTestFinished } from 'vitest'
|
||||
import { Context } from '@deepseek-ai/cordis'
|
||||
import type { Agent } from '@deepseek-ai/dsh-agent'
|
||||
import { mountAgentLoopTestDependencies, mountAgentLoopTestHarness } from '@deepseek-ai/dsh-agent-loop-testkit'
|
||||
@@ -13,19 +12,16 @@ import { SessionId, type Session } from '@deepseek-ai/dsh-session'
|
||||
import { renderContextSnapshot, renderPrompt } from '@deepseek-ai/dsh-system-prompt'
|
||||
import * as HarnessDevContext from '../src/index.ts'
|
||||
|
||||
vi.mock('node:fs', { spy: true })
|
||||
|
||||
const SOURCE_PROMPT = 'The runtime context states whether a DeepSeek Harness implementation checkout is available and names its path when provided. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.'
|
||||
const WEB_GUIDANCE = 'When a Web GUI is provided and the user refers to "this page", "this GUI", or "this app" without naming another target, they mean that GUI. '
|
||||
const SOURCE_PROMPT = 'The runtime context names the DeepSeek Harness implementation checkout. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.'
|
||||
const WEB_GUIDANCE = 'When the user refers to "this page", "this GUI", or "this app" without naming another target, they mean this GUI. '
|
||||
+ 'The browser provides no implicit DOM, route, or screenshot context. '
|
||||
+ 'Client-plugin changes reload without a refresh only when the browser HMR receiver is active and '
|
||||
+ '`pnpm run dev:web` is running from this same checkout to rebuild their bundles; verify both before promising automatic updates. '
|
||||
+ 'Server plugin/configuration HMR is independent of the browser receiver and the build watcher, and can be enabled in a headless runtime. '
|
||||
+ 'The client-plugin HMR receiver is active, but client-plugin changes reload without a refresh only while '
|
||||
+ '`pnpm run dev:web` is also running from this same checkout to rebuild their bundles; verify that watcher before promising automatic updates. '
|
||||
+ 'Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. '
|
||||
+ 'Starting another server does not update this GUI. '
|
||||
+ 'The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. '
|
||||
+ 'Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.'
|
||||
const WEB_PROMPT = `The runtime context states whether a DeepSeek Harness Web GUI is available and names its URL when provided. ${WEB_GUIDANCE}`
|
||||
const WEB_PROMPT = `You are interacting with the user through the DeepSeek Harness Web GUI whose URL the runtime context names. ${WEB_GUIDANCE}`
|
||||
|
||||
/** The value-bearing paragraphs earlier releases rendered. */
|
||||
const LEGACY_SOURCE = 'The DeepSeek Harness implementation checkout is at /old/checkout/. The checkout location and current working directory are separate values and may differ; never infer the working directory from this path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.'
|
||||
@@ -134,22 +130,6 @@ function requestSystemPrompts(request: GenerateOptions | undefined): string[] {
|
||||
}
|
||||
|
||||
describe('harness-dev-context', () => {
|
||||
it.each([0, 1])('reports no checkout when source marker %i is absent and probes only at activation', async (missingMarker) => {
|
||||
const ctx = new Context()
|
||||
onTestFinished(() => ctx.fiber.dispose())
|
||||
await mountAgentLoopTestDependencies(ctx)
|
||||
const probe = vi.mocked(existsSync)
|
||||
onTestFinished(() => { probe.mockRestore() })
|
||||
if (missingMarker === 1) probe.mockReturnValueOnce(true)
|
||||
probe.mockReturnValueOnce(false)
|
||||
await ctx.plugin(HarnessDevContext)
|
||||
const probes = probe.mock.calls.length
|
||||
expect(renderContextSnapshot(await ctx.systemPrompt.assemble()))
|
||||
.toContain('Current DeepSeek Harness implementation checkout: not available.')
|
||||
await ctx.systemPrompt.assemble()
|
||||
expect(probe).toHaveBeenCalledTimes(probes)
|
||||
})
|
||||
|
||||
it('registers value-free sections and reports the checkout and Web GUI URL as runtime context', async () => {
|
||||
const ctx = new Context()
|
||||
onTestFinished(() => ctx.fiber.dispose())
|
||||
@@ -172,21 +152,6 @@ describe('harness-dev-context', () => {
|
||||
expect(disposed.contexts).toEqual([])
|
||||
})
|
||||
|
||||
it.each([
|
||||
{ config: { checkout: false as const }, expected: ['not available', 'not available'] },
|
||||
{ config: { checkout: '/embedding/source', guiUrl: 'http://127.0.0.1:4312' }, expected: ['"/embedding/source"', '"http://127.0.0.1:4312"'] },
|
||||
])('renders SDK desktop context without a Web server: $config', async ({ config, expected }) => {
|
||||
const ctx = new Context()
|
||||
onTestFinished(() => ctx.fiber.dispose())
|
||||
await mountAgentLoopTestDependencies(ctx)
|
||||
await ctx.plugin(HarnessDevContext, config)
|
||||
const assembly = await ctx.systemPrompt.assemble()
|
||||
expect(assembly.sections.filter(entry => entry.name === 'harness:source' || entry.name === 'app:web-surface')
|
||||
.map(entry => entry.text)).toEqual([SOURCE_PROMPT, WEB_PROMPT])
|
||||
expect(renderContextSnapshot(assembly)).toContain(`Current DeepSeek Harness implementation checkout: ${expected[0]}.`)
|
||||
expect(renderContextSnapshot(assembly)).toContain(`Current DeepSeek Harness Web GUI URL: ${expected[1]}.`)
|
||||
})
|
||||
|
||||
it.each([
|
||||
{ route: 'replace-only', systemPromptUpdate: undefined },
|
||||
{ route: 'in-history', systemPromptUpdate: 'in-history' as const },
|
||||
|
||||
@@ -28,9 +28,6 @@
|
||||
},
|
||||
{
|
||||
"path": "../../bundle/web-app"
|
||||
},
|
||||
{
|
||||
"path": "../../../vendor/schemastery"
|
||||
}
|
||||
]
|
||||
}
|
||||
+1
-1
@@ -142,7 +142,7 @@ Every package below exports a Cordis plugin that a bundle patch can name in a Lo
|
||||
|---|---|---|
|
||||
| `@deepseek-ai/dsh-agent-instructions` | yes | Workspace context loader for AGENTS.md/CLAUDE.md instruction files |
|
||||
| `@deepseek-ai/dsh-file-reference-local` | yes | Local-filesystem ctx.fileReferences provider with bounded fuzzy indexes |
|
||||
| `@deepseek-ai/dsh-harness-dev-context` | yes | Model context naming the DeepSeek Harness checkout and Web GUI URL without letting either change the system prompt |
|
||||
| `@deepseek-ai/dsh-harness-dev-context` | no | Model context naming the DeepSeek Harness checkout and Web GUI URL without letting either change the system prompt |
|
||||
| `@deepseek-ai/dsh-session-reference` | yes | Cross-session snapshot references and durable untrusted model context (ctx.sessionReferenceResolver) |
|
||||
| `@deepseek-ai/dsh-time-context` | yes | Durable per-step context with the current time and elapsed time |
|
||||
| `@deepseek-ai/dsh-tmux-context` | yes | Opt-in durable per-step context with this agent's tmux pane and window location |
|
||||
|
||||
Generated
-6
@@ -2579,9 +2579,6 @@ importers:
|
||||
'@deepseek-ai/dsh-file-reference-local':
|
||||
specifier: workspace:*
|
||||
version: link:../../context/file-reference-local
|
||||
'@deepseek-ai/dsh-harness-dev-context':
|
||||
specifier: workspace:*
|
||||
version: link:../../context/harness-dev-context
|
||||
'@deepseek-ai/dsh-schedule':
|
||||
specifier: workspace:*
|
||||
version: link:../../schedule/schedule
|
||||
@@ -6944,9 +6941,6 @@ importers:
|
||||
|
||||
packages/context/harness-dev-context:
|
||||
dependencies:
|
||||
'@deepseek-ai/schemastery':
|
||||
specifier: link:../../../vendor/schemastery
|
||||
version: link:../../../vendor/schemastery
|
||||
zod:
|
||||
specifier: 4.4.3
|
||||
version: 4.4.3
|
||||
|
||||
@@ -82,7 +82,6 @@ LEGACY_CUSTOM_DISABLED_ROWS = (
|
||||
"command-goal",
|
||||
"plan-mode",
|
||||
"present",
|
||||
"harness-dev-context",
|
||||
"skill",
|
||||
"skill-filesystem",
|
||||
"skill-office",
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
}
|
||||
},
|
||||
"catalogs": [
|
||||
"Query the packaged Python environment for Office authoring.Current runtime context. This snapshot supersedes earlier runtime-context snapshots.\n\nCurrent working directory: \"{{cwd}}\".\n\nCurrent DSH file policy: danger-full-access. The DSH file sandbox does not restrict file modifications by available operations.\n\nApproval prompts are disabled in this session: actions that require approval are rejected automatically — do not request sandbox escalation (do not set `sandbox_permissions`).\n\nCurrent DeepSeek Harness implementation checkout: not available.\n\nCurrent DeepSeek Harness Web GUI URL: not available.<system-reminder>\nA skill is a reusable set of task-specific instructions. The following skills are available in this session:\n\n<available_skills>\n- `office`: Create, edit, inspect, or convert Office documents, spreadsheets, presentations, and PDFs. Load to choose the relevant workflow.\n- `office-docx`: Create, read, edit, and validate Word documents (.docx).\n- `office-export-pdf`: Convert an Office document to a requested PDF with LibreOffice Kit.\n- `office-pptx`: Create, read, edit, and validate PowerPoint presentations (.pptx).\n- `office-recalculate`: Refresh spreadsheet formula caches and verify calculated values with LibreOffice Kit.\n- `office-render`: Render requested document images or inspect visual layout with LibreOffice Kit.\n- `office-xlsx`: Read, create, edit, and validate Excel workbooks, data, and formulas (.xlsx).\n</available_skills>\n\nIf the user names a skill, or the task clearly matches a skill's description, call the `skill` tool with the exact skill name before taking task actions. Load all applicable skills, then follow their full instructions. This catalog contains summaries only; do not infer or follow a skill's instructions until it has been loaded.\nA user may also invoke a skill directly; its <skill_content> block then appears in this conversation. Follow it, and do not call the `skill` tool again for that skill.\n</system-reminder>Time sampled while preparing turn 1, step 1: 2026-10-16T00:00:00+00:00[UTC]\nBrowser time zone for this request: unavailable. Ask the user to clarify otherwise-unqualified dates and times.\nElapsed since the preceding model-visible message: unavailable."
|
||||
"Query the packaged Python environment for Office authoring.Current runtime context. This snapshot supersedes earlier runtime-context snapshots.\n\nCurrent working directory: \"{{cwd}}\".\n\nCurrent DSH file policy: danger-full-access. The DSH file sandbox does not restrict file modifications by available operations.\n\nApproval prompts are disabled in this session: actions that require approval are rejected automatically — do not request sandbox escalation (do not set `sandbox_permissions`).<system-reminder>\nA skill is a reusable set of task-specific instructions. The following skills are available in this session:\n\n<available_skills>\n- `office`: Create, edit, inspect, or convert Office documents, spreadsheets, presentations, and PDFs. Load to choose the relevant workflow.\n- `office-docx`: Create, read, edit, and validate Word documents (.docx).\n- `office-export-pdf`: Convert an Office document to a requested PDF with LibreOffice Kit.\n- `office-pptx`: Create, read, edit, and validate PowerPoint presentations (.pptx).\n- `office-recalculate`: Refresh spreadsheet formula caches and verify calculated values with LibreOffice Kit.\n- `office-render`: Render requested document images or inspect visual layout with LibreOffice Kit.\n- `office-xlsx`: Read, create, edit, and validate Excel workbooks, data, and formulas (.xlsx).\n</available_skills>\n\nIf the user names a skill, or the task clearly matches a skill's description, call the `skill` tool with the exact skill name before taking task actions. Load all applicable skills, then follow their full instructions. This catalog contains summaries only; do not infer or follow a skill's instructions until it has been loaded.\nA user may also invoke a skill directly; its <skill_content> block then appears in this conversation. Follow it, and do not call the `skill` tool again for that skill.\n</system-reminder>Time sampled while preparing turn 1, step 1: 2026-10-16T00:00:00+00:00[UTC]\nBrowser time zone for this request: unavailable. Ask the user to clarify otherwise-unqualified dates and times.\nElapsed since the preceding model-visible message: unavailable."
|
||||
],
|
||||
"result": {
|
||||
"python": "{{python}}",
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
}
|
||||
},
|
||||
"catalogs": [
|
||||
"Query the packaged Python environment for Office authoring.Current runtime context. This snapshot supersedes earlier runtime-context snapshots.\n\nCurrent working directory: \"{{cwd}}\".\n\nCurrent DSH file policy: danger-full-access. The DSH file sandbox does not restrict file modifications by available operations.\n\nApproval prompts are disabled in this session: actions that require approval are rejected automatically — do not request sandbox escalation (do not set `sandbox_permissions`).\n\nCurrent DeepSeek Harness implementation checkout: not available.\n\nCurrent DeepSeek Harness Web GUI URL: not available.<system-reminder>\nA skill is a reusable set of task-specific instructions. The following skills are available in this session:\n\n<available_skills>\n- `diagnose-windows-sandbox-acl`: Use on Windows for unexpected DSH sandbox access denials: workspace writes or listing fail, or an ordinarily readable path cannot be read. One bundled command inspects the path and every ancestor and repairs the ACL problems it proves in that same run. Expected confinement denials need no ACL repair.\n- `office`: Create, edit, inspect, or convert Office documents, spreadsheets, presentations, and PDFs. Load to choose the relevant workflow.\n- `office-docx`: Create, read, edit, and validate Word documents (.docx).\n- `office-export-pdf`: Convert an Office document to a requested PDF with LibreOffice Kit.\n- `office-pptx`: Create, read, edit, and validate PowerPoint presentations (.pptx).\n- `office-recalculate`: Refresh spreadsheet formula caches and verify calculated values with LibreOffice Kit.\n- `office-render`: Render requested document images or inspect visual layout with LibreOffice Kit.\n- `office-xlsx`: Read, create, edit, and validate Excel workbooks, data, and formulas (.xlsx).\n</available_skills>\n\nIf the user names a skill, or the task clearly matches a skill's description, call the `skill` tool with the exact skill name before taking task actions. Load all applicable skills, then follow their full instructions. This catalog contains summaries only; do not infer or follow a skill's instructions until it has been loaded.\nA user may also invoke a skill directly; its <skill_content> block then appears in this conversation. Follow it, and do not call the `skill` tool again for that skill.\n</system-reminder>Time sampled while preparing turn 1, step 1: 2026-10-16T00:00:00+00:00[UTC]\nBrowser time zone for this request: unavailable. Ask the user to clarify otherwise-unqualified dates and times.\nElapsed since the preceding model-visible message: unavailable."
|
||||
"Query the packaged Python environment for Office authoring.Current runtime context. This snapshot supersedes earlier runtime-context snapshots.\n\nCurrent working directory: \"{{cwd}}\".\n\nCurrent DSH file policy: danger-full-access. The DSH file sandbox does not restrict file modifications by available operations.\n\nApproval prompts are disabled in this session: actions that require approval are rejected automatically — do not request sandbox escalation (do not set `sandbox_permissions`).<system-reminder>\nA skill is a reusable set of task-specific instructions. The following skills are available in this session:\n\n<available_skills>\n- `diagnose-windows-sandbox-acl`: Use on Windows for unexpected DSH sandbox access denials: workspace writes or listing fail, or an ordinarily readable path cannot be read. One bundled command inspects the path and every ancestor and repairs the ACL problems it proves in that same run. Expected confinement denials need no ACL repair.\n- `office`: Create, edit, inspect, or convert Office documents, spreadsheets, presentations, and PDFs. Load to choose the relevant workflow.\n- `office-docx`: Create, read, edit, and validate Word documents (.docx).\n- `office-export-pdf`: Convert an Office document to a requested PDF with LibreOffice Kit.\n- `office-pptx`: Create, read, edit, and validate PowerPoint presentations (.pptx).\n- `office-recalculate`: Refresh spreadsheet formula caches and verify calculated values with LibreOffice Kit.\n- `office-render`: Render requested document images or inspect visual layout with LibreOffice Kit.\n- `office-xlsx`: Read, create, edit, and validate Excel workbooks, data, and formulas (.xlsx).\n</available_skills>\n\nIf the user names a skill, or the task clearly matches a skill's description, call the `skill` tool with the exact skill name before taking task actions. Load all applicable skills, then follow their full instructions. This catalog contains summaries only; do not infer or follow a skill's instructions until it has been loaded.\nA user may also invoke a skill directly; its <skill_content> block then appears in this conversation. Follow it, and do not call the `skill` tool again for that skill.\n</system-reminder>Time sampled while preparing turn 1, step 1: 2026-10-16T00:00:00+00:00[UTC]\nBrowser time zone for this request: unavailable. Ask the user to clarify otherwise-unqualified dates and times.\nElapsed since the preceding model-visible message: unavailable."
|
||||
],
|
||||
"result": {
|
||||
"python": "{{python}}",
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
{"type":"step/start","data":{"turn":1,"step":1}}
|
||||
{"type":"system/message","data":{"turn":1,"step":1,"message":{"role":"system","content":[{"type":"text","text":"{{system}}"}],"source":{"kind":"system-prompt"},"id":"{{message:2}}"}},"surfaceOp":"append"}
|
||||
{"type":"user/message","data":{"content":[{"type":"text","text":"Reply with exactly: SDK snapshot OK"}],"source":{"kind":"user"},"role":"user","id":"{{message:1}}"},"surfaceOp":"append"}
|
||||
{"type":"user/message","data":{"content":[{"type":"text","text":"Current runtime context. This snapshot supersedes earlier runtime-context snapshots.\n\nCurrent working directory: \"{{cwd}}\".\n\nCurrent DSH file policy: workspace-write. Any available operation enforced by the DSH file sandbox may modify files under the session workspace: \"{{cwd}}\". Some platform temporary areas may also be writable.\n\nApproval policy: ask. Operations that require approval may ask through the configured answerers; without an available answerer, the request fails closed.\n\nCurrent DeepSeek Harness implementation checkout: \"{{sourceRoot}}\".\n\nCurrent DeepSeek Harness Web GUI URL: not available."}],"source":{"kind":"runtime-context","form":"snapshot","sections":[{"name":"working-directory:current","text":"Current working directory: \"{{cwd}}\"."},{"name":"sandbox:policy","text":"Current DSH file policy: workspace-write. Any available operation enforced by the DSH file sandbox may modify files under the session workspace: \"{{cwd}}\". Some platform temporary areas may also be writable."},{"name":"approval:policy","text":"Approval policy: ask. Operations that require approval may ask through the configured answerers; without an available answerer, the request fails closed."},{"name":"harness:source","text":"Current DeepSeek Harness implementation checkout: \"{{sourceRoot}}\"."},{"name":"app:web-surface","text":"Current DeepSeek Harness Web GUI URL: not available."}]},"role":"user","id":"{{message:3}}"},"surfaceOp":"append"}
|
||||
{"type":"user/message","data":{"content":[{"type":"text","text":"Current runtime context. This snapshot supersedes earlier runtime-context snapshots.\n\nCurrent working directory: \"{{cwd}}\".\n\nCurrent DSH file policy: workspace-write. Any available operation enforced by the DSH file sandbox may modify files under the session workspace: \"{{cwd}}\". Some platform temporary areas may also be writable.\n\nApproval policy: ask. Operations that require approval may ask through the configured answerers; without an available answerer, the request fails closed."}],"source":{"kind":"runtime-context","form":"snapshot","sections":[{"name":"working-directory:current","text":"Current working directory: \"{{cwd}}\"."},{"name":"sandbox:policy","text":"Current DSH file policy: workspace-write. Any available operation enforced by the DSH file sandbox may modify files under the session workspace: \"{{cwd}}\". Some platform temporary areas may also be writable."},{"name":"approval:policy","text":"Approval policy: ask. Operations that require approval may ask through the configured answerers; without an available answerer, the request fails closed."}]},"role":"user","id":"{{message:3}}"},"surfaceOp":"append"}
|
||||
{"type":"user/message","data":{"content":[{"type":"text","text":"Time sampled while preparing turn 1, step 1: 2026-10-16T00:00:00+00:00[UTC]\nBrowser time zone for this request: unavailable. Ask the user to clarify otherwise-unqualified dates and times.\nElapsed since the preceding model-visible message: unavailable."}],"source":{"kind":"time-context","form":"snapshot","sections":[{"name":"time-context","text":"Time sampled while preparing turn 1, step 1: 2026-10-16T00:00:00+00:00[UTC]\nBrowser time zone for this request: unavailable. Ask the user to clarify otherwise-unqualified dates and times.\nElapsed since the preceding model-visible message: unavailable."}]},"role":"user","id":"{{message:4}}"},"surfaceOp":"append"}
|
||||
{"type":"request/header","data":{"header":{"config":{"provider":"deepseek-official","model":"deepseek-v4-flash"},"tools":"{{tools}}"},"reason":"initial"}}
|
||||
{"type":"request/context","data":{"provider":"deepseek-official","model":"deepseek-v4-flash"}}
|
||||
|
||||
@@ -29,7 +29,3 @@ Use the workflow tool ONLY when the user explicitly asks for a workflow or for l
|
||||
Start independent delegations with `subagent` or `subagent_fork` together in one assistant message and continue useful work while they run.
|
||||
|
||||
Prefer showing the primary results within your final response alongside a brief explanation. Use  when an image supports an explanation or comparison. Use [Description](<path/to/image.png>) when referring to an image or listing files. Enclose Markdown file destinations in angle brackets, especially paths containing spaces. Do not call present just to list edited source files, or run commands to check whether a diff view will appear. Use present to publish complete deliverables, including images, Office documents, spreadsheets, and slide decks, when separate access helps the user. Hosts that support file cards can show the presented file with preview and open actions. Avoid repeating results already shown inline unless the separate card adds useful access. Outside commands, configuration expressions, and code blocks, link every mention of an existing file, including repeats and tables, to its full path relative to the working directory or absolute; append #L24 or #L24-L30 to the target for known lines. Use the filename or a clear alias as the label, adding only enough parent directories to distinguish files; keep full paths out of labels. Default to the name alone; when precise locations matter, append :24 or :24–30, with no # or L in the line suffix.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness implementation checkout is available and names its path when provided. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness Web GUI is available and names its URL when provided. When a Web GUI is provided and the user refers to "this page", "this GUI", or "this app" without naming another target, they mean that GUI. The browser provides no implicit DOM, route, or screenshot context. Client-plugin changes reload without a refresh only when the browser HMR receiver is active and `pnpm run dev:web` is running from this same checkout to rebuild their bundles; verify both before promising automatic updates. Server plugin/configuration HMR is independent of the browser receiver and the build watcher, and can be enabled in a headless runtime. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
@@ -8,7 +8,7 @@
|
||||
{"type":"step/start","data":{"turn":1,"step":1}}
|
||||
{"type":"system/message","data":{"turn":1,"step":1,"message":{"role":"system","content":[{"type":"text","text":"{{system}}"}],"source":{"kind":"system-prompt"},"id":"{{message:2}}"}},"surfaceOp":"append"}
|
||||
{"type":"user/message","data":{"content":[{"type":"text","text":"Reply with exactly: SDK snapshot OK"}],"source":{"kind":"user"},"role":"user","id":"{{message:1}}"},"surfaceOp":"append"}
|
||||
{"type":"user/message","data":{"content":[{"type":"text","text":"Current runtime context. This snapshot supersedes earlier runtime-context snapshots.\n\nCurrent working directory: \"{{cwd}}\".\n\nCurrent DSH file policy: workspace-write. Any available operation enforced by the DSH file sandbox may modify files under the session workspace: \"{{cwd}}\". Some platform temporary areas may also be writable.\n\nApproval policy: ask. Operations that require approval may ask through the configured answerers; without an available answerer, the request fails closed.\n\nCurrent DeepSeek Harness implementation checkout: \"{{sourceRoot}}\".\n\nCurrent DeepSeek Harness Web GUI URL: not available."}],"source":{"kind":"runtime-context","form":"snapshot","sections":[{"name":"working-directory:current","text":"Current working directory: \"{{cwd}}\"."},{"name":"sandbox:policy","text":"Current DSH file policy: workspace-write. Any available operation enforced by the DSH file sandbox may modify files under the session workspace: \"{{cwd}}\". Some platform temporary areas may also be writable."},{"name":"approval:policy","text":"Approval policy: ask. Operations that require approval may ask through the configured answerers; without an available answerer, the request fails closed."},{"name":"harness:source","text":"Current DeepSeek Harness implementation checkout: \"{{sourceRoot}}\"."},{"name":"app:web-surface","text":"Current DeepSeek Harness Web GUI URL: not available."}]},"role":"user","id":"{{message:3}}"},"surfaceOp":"append"}
|
||||
{"type":"user/message","data":{"content":[{"type":"text","text":"Current runtime context. This snapshot supersedes earlier runtime-context snapshots.\n\nCurrent working directory: \"{{cwd}}\".\n\nCurrent DSH file policy: workspace-write. Any available operation enforced by the DSH file sandbox may modify files under the session workspace: \"{{cwd}}\". Some platform temporary areas may also be writable.\n\nApproval policy: ask. Operations that require approval may ask through the configured answerers; without an available answerer, the request fails closed."}],"source":{"kind":"runtime-context","form":"snapshot","sections":[{"name":"working-directory:current","text":"Current working directory: \"{{cwd}}\"."},{"name":"sandbox:policy","text":"Current DSH file policy: workspace-write. Any available operation enforced by the DSH file sandbox may modify files under the session workspace: \"{{cwd}}\". Some platform temporary areas may also be writable."},{"name":"approval:policy","text":"Approval policy: ask. Operations that require approval may ask through the configured answerers; without an available answerer, the request fails closed."}]},"role":"user","id":"{{message:3}}"},"surfaceOp":"append"}
|
||||
{"type":"user/message","data":{"content":[{"type":"text","text":"Time sampled while preparing turn 1, step 1: 2026-10-16T00:00:00+00:00[UTC]\nBrowser time zone for this request: unavailable. Ask the user to clarify otherwise-unqualified dates and times.\nElapsed since the preceding model-visible message: unavailable."}],"source":{"kind":"time-context","form":"snapshot","sections":[{"name":"time-context","text":"Time sampled while preparing turn 1, step 1: 2026-10-16T00:00:00+00:00[UTC]\nBrowser time zone for this request: unavailable. Ask the user to clarify otherwise-unqualified dates and times.\nElapsed since the preceding model-visible message: unavailable."}]},"role":"user","id":"{{message:4}}"},"surfaceOp":"append"}
|
||||
{"type":"request/header","data":{"header":{"config":{"provider":"deepseek-official","model":"deepseek-v4-flash"},"tools":"{{tools}}"},"reason":"initial"}}
|
||||
{"type":"request/context","data":{"provider":"deepseek-official","model":"deepseek-v4-flash"}}
|
||||
|
||||
@@ -970,7 +970,3 @@ declare const tools: {
|
||||
```
|
||||
|
||||
Prefer showing the primary results within your final response alongside a brief explanation. Use  when an image supports an explanation or comparison. Use [Description](<path/to/image.png>) when referring to an image or listing files. Enclose Markdown file destinations in angle brackets, especially paths containing spaces. Do not call present just to list edited source files, or run commands to check whether a diff view will appear. Use present to publish complete deliverables, including images, Office documents, spreadsheets, and slide decks, when separate access helps the user. Hosts that support file cards can show the presented file with preview and open actions. Avoid repeating results already shown inline unless the separate card adds useful access. Outside commands, configuration expressions, and code blocks, link every mention of an existing file, including repeats and tables, to its full path relative to the working directory or absolute; append #L24 or #L24-L30 to the target for known lines. Use the filename or a clear alias as the label, adding only enough parent directories to distinguish files; keep full paths out of labels. Default to the name alone; when precise locations matter, append :24 or :24–30, with no # or L in the line suffix.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness implementation checkout is available and names its path when provided. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness Web GUI is available and names its URL when provided. When a Web GUI is provided and the user refers to "this page", "this GUI", or "this app" without naming another target, they mean that GUI. The browser provides no implicit DOM, route, or screenshot context. Client-plugin changes reload without a refresh only when the browser HMR receiver is active and `pnpm run dev:web` is running from this same checkout to rebuild their bundles; verify both before promising automatic updates. Server plugin/configuration HMR is independent of the browser receiver and the build watcher, and can be enabled in a headless runtime. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
@@ -16,8 +16,5 @@
|
||||
- id: deliverable-file-references
|
||||
disabled: true
|
||||
|
||||
- id: harness-dev-context
|
||||
disabled: true
|
||||
|
||||
- id: time-context
|
||||
disabled: true
|
||||
@@ -130,9 +130,8 @@ const SDK_ASSERTIONS: Readonly<Record<string, SdkAssertions>> = {
|
||||
'desktop-context': {
|
||||
expectedFinalResponse: 'SDK snapshot OK',
|
||||
runtimeContext: {
|
||||
includes: ['Current DeepSeek Harness implementation checkout: "',
|
||||
'Current DeepSeek Harness Web GUI URL: not available.'],
|
||||
excludes: ['/Users/'],
|
||||
includes: ['Current working directory:'],
|
||||
excludes: ['Current DeepSeek Harness implementation checkout:', 'Current DeepSeek Harness Web GUI URL:'],
|
||||
},
|
||||
},
|
||||
'desktop-ptc-context': { expectedFinalResponse: 'SDK snapshot OK' },
|
||||
@@ -352,29 +351,6 @@ function assembledRuntimeContexts(log: PersistedLog): string[] {
|
||||
})
|
||||
}
|
||||
|
||||
/** Tokenize only the runtime checkout fact; preserve missing values and ordinary user/tool text. */
|
||||
function normalizeHarnessCheckout(content: string): string {
|
||||
return content.split('\n').map((line) => {
|
||||
if (line.trim() === '') return line
|
||||
const event = JSON.parse(line) as {
|
||||
type?: string
|
||||
data?: { source?: { kind?: string; sections?: { name: string; text: string }[] }; content?: { type: string; text?: string }[] }
|
||||
}
|
||||
if (event.type !== 'user/message' || event.data?.source?.kind !== 'runtime-context') return line
|
||||
const normalize = (text: string) => text.replace(
|
||||
/Current DeepSeek Harness implementation checkout: "(?:[^"\\]|\\.)*"\./gu,
|
||||
'Current DeepSeek Harness implementation checkout: "{{sourceRoot}}".',
|
||||
)
|
||||
for (const block of event.data.content ?? []) {
|
||||
if (block.type === 'text' && block.text !== undefined) block.text = normalize(block.text)
|
||||
}
|
||||
for (const section of event.data.source.sections ?? []) {
|
||||
if (section.name === 'harness:source') section.text = normalize(section.text)
|
||||
}
|
||||
return JSON.stringify(event)
|
||||
}).join('\n')
|
||||
}
|
||||
|
||||
function contextOf(logs: readonly { content: string; header: Record<string, unknown> }[], cwd: string): NormalizeContext {
|
||||
return {
|
||||
sessionIds: logs.flatMap(log => typeof log.header.id === 'string' ? [log.header.id] : []),
|
||||
@@ -1003,8 +979,7 @@ describe('TypeScript SDK snapshots over the jsonrpc runtime', () => {
|
||||
expect(writerFiles, 'native writer oracle inventory').toEqual(retained
|
||||
? files.map((_, index) => writerSnapshotName(index)).sort() : [])
|
||||
}
|
||||
const { results, notifications, observedMethods, logs: capturedLogs, initialWorkspace, finalWorkspace, cwd } = await runScenario(scenario)
|
||||
const logs = capturedLogs.map(log => ({ ...log, content: normalizeHarnessCheckout(log.content) }))
|
||||
const { results, notifications, observedMethods, logs, initialWorkspace, finalWorkspace, cwd } = await runScenario(scenario)
|
||||
const ordered = orderLogs(
|
||||
logs,
|
||||
recording ? logs.length : files.length,
|
||||
|
||||
@@ -35,8 +35,5 @@
|
||||
- id: deliverable-file-references
|
||||
disabled: true
|
||||
|
||||
- id: harness-dev-context
|
||||
disabled: true
|
||||
|
||||
- id: time-context
|
||||
disabled: true
|
||||
@@ -138,6 +138,6 @@ Use subagent_fork in the background by default. Start independent delegations to
|
||||
|
||||
When you successfully create or modify files, mention the primary outputs in your final response. Outside commands, configuration expressions, and code blocks, link every mention of an existing file, including repeats and tables, to its full path relative to the working directory or absolute; append #L24 or #L24-L30 to the target for known lines. Use the filename or a clear alias as the label, adding only enough parent directories to distinguish files; keep full paths out of labels. Default to the name alone; when precise locations matter, append :24 or :24–30, with no # or L in the line suffix.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness implementation checkout is available and names its path when provided. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
The runtime context names the DeepSeek Harness implementation checkout. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness Web GUI is available and names its URL when provided. When a Web GUI is provided and the user refers to "this page", "this GUI", or "this app" without naming another target, they mean that GUI. The browser provides no implicit DOM, route, or screenshot context. Client-plugin changes reload without a refresh only when the browser HMR receiver is active and `pnpm run dev:web` is running from this same checkout to rebuild their bundles; verify both before promising automatic updates. Server plugin/configuration HMR is independent of the browser receiver and the build watcher, and can be enabled in a headless runtime. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
You are interacting with the user through the DeepSeek Harness Web GUI whose URL the runtime context names. When the user refers to "this page", "this GUI", or "this app" without naming another target, they mean this GUI. The browser provides no implicit DOM, route, or screenshot context. The client-plugin HMR receiver is active, but client-plugin changes reload without a refresh only while `pnpm run dev:web` is also running from this same checkout to rebuild their bundles; verify that watcher before promising automatic updates. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
@@ -30,6 +30,6 @@ Start independent delegations with `subagent` or `subagent_fork` together in one
|
||||
|
||||
Prefer showing the primary results within your final response alongside a brief explanation. Use  when an image supports an explanation or comparison. Use [Description](<path/to/image.png>) when referring to an image or listing files. Enclose Markdown file destinations in angle brackets, especially paths containing spaces. Do not call present just to list edited source files, or run commands to check whether a diff view will appear. Use present to publish complete deliverables, including images, Office documents, spreadsheets, and slide decks, when separate access helps the user. Hosts that support file cards can show the presented file with preview and open actions. Avoid repeating results already shown inline unless the separate card adds useful access. Outside commands, configuration expressions, and code blocks, link every mention of an existing file, including repeats and tables, to its full path relative to the working directory or absolute; append #L24 or #L24-L30 to the target for known lines. Use the filename or a clear alias as the label, adding only enough parent directories to distinguish files; keep full paths out of labels. Default to the name alone; when precise locations matter, append :24 or :24–30, with no # or L in the line suffix.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness implementation checkout is available and names its path when provided. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
The runtime context names the DeepSeek Harness implementation checkout. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness Web GUI is available and names its URL when provided. When a Web GUI is provided and the user refers to "this page", "this GUI", or "this app" without naming another target, they mean that GUI. The browser provides no implicit DOM, route, or screenshot context. Client-plugin changes reload without a refresh only when the browser HMR receiver is active and `pnpm run dev:web` is running from this same checkout to rebuild their bundles; verify both before promising automatic updates. Server plugin/configuration HMR is independent of the browser receiver and the build watcher, and can be enabled in a headless runtime. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
You are interacting with the user through the DeepSeek Harness Web GUI whose URL the runtime context names. When the user refers to "this page", "this GUI", or "this app" without naming another target, they mean this GUI. The browser provides no implicit DOM, route, or screenshot context. The client-plugin HMR receiver is active, but client-plugin changes reload without a refresh only while `pnpm run dev:web` is also running from this same checkout to rebuild their bundles; verify that watcher before promising automatic updates. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
@@ -1,3 +1,3 @@
|
||||
The runtime context states whether a DeepSeek Harness implementation checkout is available and names its path when provided. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
The runtime context names the DeepSeek Harness implementation checkout. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness Web GUI is available and names its URL when provided. When a Web GUI is provided and the user refers to "this page", "this GUI", or "this app" without naming another target, they mean that GUI. The browser provides no implicit DOM, route, or screenshot context. Client-plugin changes reload without a refresh only when the browser HMR receiver is active and `pnpm run dev:web` is running from this same checkout to rebuild their bundles; verify both before promising automatic updates. Server plugin/configuration HMR is independent of the browser receiver and the build watcher, and can be enabled in a headless runtime. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
You are interacting with the user through the DeepSeek Harness Web GUI whose URL the runtime context names. When the user refers to "this page", "this GUI", or "this app" without naming another target, they mean this GUI. The browser provides no implicit DOM, route, or screenshot context. The client-plugin HMR receiver is active, but client-plugin changes reload without a refresh only while `pnpm run dev:web` is also running from this same checkout to rebuild their bundles; verify that watcher before promising automatic updates. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
@@ -957,6 +957,6 @@ declare const tools: {
|
||||
|
||||
Prefer showing the primary results within your final response alongside a brief explanation. Use  when an image supports an explanation or comparison. Use [Description](<path/to/image.png>) when referring to an image or listing files. Enclose Markdown file destinations in angle brackets, especially paths containing spaces. Do not call present just to list edited source files, or run commands to check whether a diff view will appear. Use present to publish complete deliverables, including images, Office documents, spreadsheets, and slide decks, when separate access helps the user. Hosts that support file cards can show the presented file with preview and open actions. Avoid repeating results already shown inline unless the separate card adds useful access. Outside commands, configuration expressions, and code blocks, link every mention of an existing file, including repeats and tables, to its full path relative to the working directory or absolute; append #L24 or #L24-L30 to the target for known lines. Use the filename or a clear alias as the label, adding only enough parent directories to distinguish files; keep full paths out of labels. Default to the name alone; when precise locations matter, append :24 or :24–30, with no # or L in the line suffix.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness implementation checkout is available and names its path when provided. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
The runtime context names the DeepSeek Harness implementation checkout. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness Web GUI is available and names its URL when provided. When a Web GUI is provided and the user refers to "this page", "this GUI", or "this app" without naming another target, they mean that GUI. The browser provides no implicit DOM, route, or screenshot context. Client-plugin changes reload without a refresh only when the browser HMR receiver is active and `pnpm run dev:web` is running from this same checkout to rebuild their bundles; verify both before promising automatic updates. Server plugin/configuration HMR is independent of the browser receiver and the build watcher, and can be enabled in a headless runtime. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
You are interacting with the user through the DeepSeek Harness Web GUI whose URL the runtime context names. When the user refers to "this page", "this GUI", or "this app" without naming another target, they mean this GUI. The browser provides no implicit DOM, route, or screenshot context. The client-plugin HMR receiver is active, but client-plugin changes reload without a refresh only while `pnpm run dev:web` is also running from this same checkout to rebuild their bundles; verify that watcher before promising automatic updates. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
@@ -962,6 +962,6 @@ declare const tools: {
|
||||
|
||||
Prefer showing the primary results within your final response alongside a brief explanation. Use  when an image supports an explanation or comparison. Use [Description](<path/to/image.png>) when referring to an image or listing files. Enclose Markdown file destinations in angle brackets, especially paths containing spaces. Do not call present just to list edited source files, or run commands to check whether a diff view will appear. Use present to publish complete deliverables, including images, Office documents, spreadsheets, and slide decks, when separate access helps the user. Hosts that support file cards can show the presented file with preview and open actions. Avoid repeating results already shown inline unless the separate card adds useful access. Outside commands, configuration expressions, and code blocks, link every mention of an existing file, including repeats and tables, to its full path relative to the working directory or absolute; append #L24 or #L24-L30 to the target for known lines. Use the filename or a clear alias as the label, adding only enough parent directories to distinguish files; keep full paths out of labels. Default to the name alone; when precise locations matter, append :24 or :24–30, with no # or L in the line suffix.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness implementation checkout is available and names its path when provided. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
The runtime context names the DeepSeek Harness implementation checkout. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness Web GUI is available and names its URL when provided. When a Web GUI is provided and the user refers to "this page", "this GUI", or "this app" without naming another target, they mean that GUI. The browser provides no implicit DOM, route, or screenshot context. Client-plugin changes reload without a refresh only when the browser HMR receiver is active and `pnpm run dev:web` is running from this same checkout to rebuild their bundles; verify both before promising automatic updates. Server plugin/configuration HMR is independent of the browser receiver and the build watcher, and can be enabled in a headless runtime. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
You are interacting with the user through the DeepSeek Harness Web GUI whose URL the runtime context names. When the user refers to "this page", "this GUI", or "this app" without naming another target, they mean this GUI. The browser provides no implicit DOM, route, or screenshot context. The client-plugin HMR receiver is active, but client-plugin changes reload without a refresh only while `pnpm run dev:web` is also running from this same checkout to rebuild their bundles; verify that watcher before promising automatic updates. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
@@ -944,6 +944,6 @@ declare const tools: {
|
||||
|
||||
Prefer showing the primary results within your final response alongside a brief explanation. Use  when an image supports an explanation or comparison. Use [Description](<path/to/image.png>) when referring to an image or listing files. Enclose Markdown file destinations in angle brackets, especially paths containing spaces. Do not call present just to list edited source files, or run commands to check whether a diff view will appear. Use present to publish complete deliverables, including images, Office documents, spreadsheets, and slide decks, when separate access helps the user. Hosts that support file cards can show the presented file with preview and open actions. Avoid repeating results already shown inline unless the separate card adds useful access. Outside commands, configuration expressions, and code blocks, link every mention of an existing file, including repeats and tables, to its full path relative to the working directory or absolute; append #L24 or #L24-L30 to the target for known lines. Use the filename or a clear alias as the label, adding only enough parent directories to distinguish files; keep full paths out of labels. Default to the name alone; when precise locations matter, append :24 or :24–30, with no # or L in the line suffix.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness implementation checkout is available and names its path when provided. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
The runtime context names the DeepSeek Harness implementation checkout. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness Web GUI is available and names its URL when provided. When a Web GUI is provided and the user refers to "this page", "this GUI", or "this app" without naming another target, they mean that GUI. The browser provides no implicit DOM, route, or screenshot context. Client-plugin changes reload without a refresh only when the browser HMR receiver is active and `pnpm run dev:web` is running from this same checkout to rebuild their bundles; verify both before promising automatic updates. Server plugin/configuration HMR is independent of the browser receiver and the build watcher, and can be enabled in a headless runtime. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
You are interacting with the user through the DeepSeek Harness Web GUI whose URL the runtime context names. When the user refers to "this page", "this GUI", or "this app" without naming another target, they mean this GUI. The browser provides no implicit DOM, route, or screenshot context. The client-plugin HMR receiver is active, but client-plugin changes reload without a refresh only while `pnpm run dev:web` is also running from this same checkout to rebuild their bundles; verify that watcher before promising automatic updates. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
@@ -1,8 +1,8 @@
|
||||
You are an AI agent powered by DeepSeek Harness.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness implementation checkout is available and names its path when provided. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
The runtime context names the DeepSeek Harness implementation checkout. The checkout location and current working directory are separate values and may differ; never infer the working directory from the checkout path. Use pwd to determine the current working directory. Use this checkout only to inspect or extend DSH itself.
|
||||
|
||||
The runtime context states whether a DeepSeek Harness Web GUI is available and names its URL when provided. When a Web GUI is provided and the user refers to "this page", "this GUI", or "this app" without naming another target, they mean that GUI. The browser provides no implicit DOM, route, or screenshot context. Client-plugin changes reload without a refresh only when the browser HMR receiver is active and `pnpm run dev:web` is running from this same checkout to rebuild their bundles; verify both before promising automatic updates. Server plugin/configuration HMR is independent of the browser receiver and the build watcher, and can be enabled in a headless runtime. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
You are interacting with the user through the DeepSeek Harness Web GUI whose URL the runtime context names. When the user refers to "this page", "this GUI", or "this app" without naming another target, they mean this GUI. The browser provides no implicit DOM, route, or screenshot context. The client-plugin HMR receiver is active, but client-plugin changes reload without a refresh only while `pnpm run dev:web` is also running from this same checkout to rebuild their bundles; verify that watcher before promising automatic updates. Every other change — the apps/web shell and plain packages — requires rebuilding the affected Web artifacts and verifying this existing URL after a page refresh. Starting another server does not update this GUI. The apps/web Vite entry builds the shell but is not a standalone application because only dsh web injects window.__DSH_BOOT__. Do not start a replacement server unless the user asks; if one is needed, use a managed background job and verify its exact URL.
|
||||
|
||||
You are a coding agent powered by the deepseek-v4-flash model. Your working directory is {{cwd}}.
|
||||
|
||||
|
||||
Reference in new issue
Block a user