@dsh-workbench/core 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -6
- package/bin/dsh-workbench +10 -43
- package/client.js +794 -237
- package/dist/client/client.body.js +794 -237
- package/dist/client/index.js +795 -238
- package/dist/host/index.js +380 -47
- package/dist/types/app/client.d.ts +309 -24
- package/dist/types/app/layouts/config-sync/ConfigSyncSection.d.ts +5 -0
- package/dist/types/app/layouts/sidebar/workspace-groups.d.ts +4 -1
- package/dist/types/modules/sessions/index.d.ts +2 -1
- package/dist/types/modules/sessions/model/scroll-edges.d.ts +10 -0
- package/dist/types/modules/sessions/model/scroll-edges.test.d.ts +1 -0
- package/dist/types/modules/sessions/model/session-node.d.ts +2 -0
- package/dist/types/shared/api/config-sync.d.ts +37 -0
- package/dist/types/shared/api/config-sync.test.d.ts +1 -0
- package/dist/types/shared/api/host/__tests__/config-sync.test.d.ts +1 -0
- package/dist/types/shared/api/host/config-sync.d.ts +46 -0
- package/docs/HANDOFF.md +17 -12
- package/docs/OPERATIONS.md +8 -6
- package/package.json +2 -2
- package/scripts/seed-profile.sh +12 -85
package/README.md
CHANGED
|
@@ -25,7 +25,7 @@ dsh web (:3080) dsh workbench (:3081)
|
|
|
25
25
|
| --- | --- | --- |
|
|
26
26
|
| `dsh` | 本体。本包在 `0.1.7-rc.2` 上验过 | `npm i -g @deepseek-ai/dsh` |
|
|
27
27
|
| `node` + `pnpm` | dsh 的 `plugin` 子命令是**转发给 pnpm** 的;没有 pnpm 会直接报 `dsh: pnpm was not found` | 各自装 |
|
|
28
|
-
| 跑过一次 `dsh web` | `setup` 拿 `~/.dsh/profiles/web`
|
|
28
|
+
| 跑过一次 `dsh web` | `setup` 拿 `~/.dsh/profiles/web` 当模板(**bundle 清单**:这台机器上装了哪些 bundle),也是「配置同步」的默认来源。没有它会**明确报错**,不会静默建出半个 profile | `dsh web`,起来就行,然后 Ctrl-C |
|
|
29
29
|
|
|
30
30
|
然后两条命令:
|
|
31
31
|
|
|
@@ -74,7 +74,8 @@ npx @dsh-workbench/core # ② 起工作台,默认 :3081
|
|
|
74
74
|
| 升级 | 重跑一次 `npx --yes @dsh-workbench/core@latest setup`(幂等),再重启工作台进程 |
|
|
75
75
|
| 重建 profile | `mv ~/.dsh/profiles/workbench ~/.dsh/profiles/workbench.bak`,再跑一次 `setup` |
|
|
76
76
|
| 彻底不用了 | 删 `~/.dsh/profiles/workbench` 与 `~/.dsh/workbench` 两个目录(都不影响 `dsh web`) |
|
|
77
|
-
| 改设置 |
|
|
77
|
+
| 改设置 | 在 `:3081` 的 Settings 里改(模型供应商 / 搜索源 / MCP 也是这里) |
|
|
78
|
+
| 从 `dsh web` 搬设置过来 | 设置 → 「配置同步」→ 选来源 → 勾行 → 同步 → 重启工作台 |
|
|
78
79
|
|
|
79
80
|
## 和 `dsh web` 的关系
|
|
80
81
|
|
|
@@ -83,10 +84,11 @@ npx @dsh-workbench/core # ② 起工作台,默认 :3081
|
|
|
83
84
|
- **另一个 profile、另一个端口、另一个进程**:`workbench` profile 在 `~/.dsh/profiles/workbench`;
|
|
84
85
|
会话 / 存储 / 附件 / 模块配置全走 `~/.dsh/workbench/**`,与 web **数据分家**。只有一样有意共享:
|
|
85
86
|
API 凭据(`~/.dsh/.credentials.yaml`,一机一把 key)。
|
|
86
|
-
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
- **设置是工作台自己那份**:模型供应商 / 搜索源 / MCP 都在 `:3081` 的 Settings 里配,
|
|
88
|
+
落在 `profiles/workbench/cordis.patch.yml` —— 那是它唯一的一份设置文档,每一行都改得动。
|
|
89
|
+
想用 `dsh web` 那边已经配好的行:`:3081` → `Meta+,` → 「配置同步」→ 选来源 → 勾行 → 同步 →
|
|
90
|
+
**重启工作台**(只搬显式配过的行;同 id 内容不同默认不覆盖)。web 后来改的不会自动过来,
|
|
91
|
+
再打开这一页拉一次即可。见 [ADR-0044](../../docs/adr/0044-config-sync-replaces-the-web-patch-overlay.md)。
|
|
90
92
|
- ⚠️ **别在 Settings → 插件里把 `@dsh-workbench/core` 关掉**:关掉 = 它那份 bundle patch 整份不再应用
|
|
91
93
|
(包括里面的"禁用出厂左栏"),界面会**退化成原版 dsh web**(左栏回来、右侧面板消失)。
|
|
92
94
|
**数据一个都不丢**;把开关拨回来就恢复 —— 进不去设置页就按 `Meta+,`。别当成故障去重建 profile。
|
|
@@ -101,6 +103,8 @@ npx @dsh-workbench/core # ② 起工作台,默认 :3081
|
|
|
101
103
|
| 打开面板 / 按刷新要等 5–8 秒 | 正常:opencli 每次调用有**固定约 5 秒**开销(起浏览器会话)。**没有缓存**,数据一律实时 |
|
|
102
104
|
| 体检那屏说「检测浏览器通道 · 没连上」,可面板照样能用 | 本机全局 opencli 与隔离运行时版本不一致,daemon 被顶成对方那版;下一条浏览器命令会自动把它重启回来,体检复检后改回「已连接」 |
|
|
103
105
|
| 一切正常,但左栏是出厂样子、右边没有面板 | 工作台插件在 Settings 里被关了(见上一条 ⚠️) |
|
|
106
|
+
| 模型列表里只有出厂的几个、没有自己配的供应商 | 新装的 profile 不带设置(ADR-0044):设置 → 「配置同步」→ 选来源 → 勾 `llm-` 那几行 → 同步 → 重启 |
|
|
107
|
+
| 「配置同步」里某一行说 `@x 还没装` | 那一行点名的包不在这个 profile 的 `node_modules` 里:`dsh plugin --profile workbench add @x`(或在模块市场装),再重启 |
|
|
104
108
|
|
|
105
109
|
排障全表在仓库的 [`docs/OPERATIONS.md`](https://github.com/code-farmer-i/dsh-workbench/blob/main/packages/workbench/docs/OPERATIONS.md);
|
|
106
110
|
把工作台装到别人机器上的前置清单见 [`docs/HANDOFF.md`](https://github.com/code-farmer-i/dsh-workbench/blob/main/packages/workbench/docs/HANDOFF.md)。
|
package/bin/dsh-workbench
CHANGED
|
@@ -138,51 +138,18 @@ else
|
|
|
138
138
|
export DSH_WORKBENCH_ROOT="$REPO_DIR"
|
|
139
139
|
fi
|
|
140
140
|
|
|
141
|
-
# ──
|
|
141
|
+
# ── 设置从哪来:工作台自己的 profile patch(不再叠 web 那一份)──────────────
|
|
142
142
|
#
|
|
143
|
-
#
|
|
144
|
-
#
|
|
145
|
-
#
|
|
143
|
+
# 以前每次启动都用 `--patch` 把 `profiles/web/cordis.patch.yml` 叠成**最高层**。
|
|
144
|
+
# 代价是那一层盖住的行在 :3081 的 Settings 里**改不动**:dsh 的 config-editor 写文件
|
|
145
|
+
# **之前**会拿组合后的值跟你写的值对,不等就抛
|
|
146
|
+
# `overridden by a home patch or command-line overlay` —— 文件根本没写。
|
|
147
|
+
# 症状就是"模型供应商这类设置只能去 :3080 改,工作台这边看着能点、点了没用"。
|
|
146
148
|
#
|
|
147
|
-
#
|
|
148
|
-
#
|
|
149
|
-
#
|
|
150
|
-
# 用户在 web 的 Settings 页里配的就是它,配完即生效。
|
|
151
|
-
#
|
|
152
|
-
# 副作用(刻意的):被这一层覆盖的行,在工作台的 Settings 页里会显示
|
|
153
|
-
# `overridden by a home patch or command-line overlay` —— 那正是"这行由 web 管"的提示。
|
|
154
|
-
# 反向不成立:工作台里配的只落在自己的 profile patch(差异层),web 看不到。
|
|
155
|
-
# ⚠️ 叠之前先剥掉「每个界面自己的偏好」那一类。
|
|
156
|
-
#
|
|
157
|
-
# `--patch` 是最高层,被它覆盖的行在工作台的 Settings 页里会显示
|
|
158
|
-
# "overridden by a home patch or command-line overlay"、**改了也会跳回去**。
|
|
159
|
-
# 供应商 / 搜索源 / MCP 那类机器级设置这样管是对的;但 `ui-theme.preference`
|
|
160
|
-
# 是**每个界面自己的**偏好(有人要 web 深色、工作台浅色),叠上来等于把工作台的
|
|
161
|
-
# 主题锁成 web 的 —— 实测就是"切到浅色自动跳回深色"。
|
|
162
|
-
#
|
|
163
|
-
# 剥的方式:按顶层列表项过滤,命中 id 的那一项整块不要(缩进到下一个 `- ` 为止)。
|
|
164
|
-
WEB_PATCH="$DSH_HOME/profiles/web/cordis.patch.yml"
|
|
165
|
-
WORKBENCH_PATCH_STRIP="${DSH_WORKBENCH_PATCH_STRIP:-ui-theme}"
|
|
149
|
+
# 现在改成:**工作台自己的 patch 是唯一真相**。想要 web 的哪几行,去
|
|
150
|
+
# 设置 → 「配置同步」里勾(它读源 profile 的 cordis.patch.yml,按行搬运,
|
|
151
|
+
# 见 .scratch/config-sync/spec.md 与 ADR-0044)。启动器只负责把工作台起起来。
|
|
166
152
|
PATCH_ARGS=()
|
|
167
|
-
WEB_PATCH_LAYER="$WEB_PATCH"
|
|
168
|
-
if [ -f "$WEB_PATCH" ]; then
|
|
169
|
-
if [ -n "$WORKBENCH_PATCH_STRIP" ]; then
|
|
170
|
-
WEB_PATCH_LAYER="$(mktemp -t dsh-workbench-web-patch)"
|
|
171
|
-
trap 'rm -f "$WEB_PATCH_LAYER"' EXIT INT TERM
|
|
172
|
-
awk -v strip="$WORKBENCH_PATCH_STRIP" '
|
|
173
|
-
/^- / {
|
|
174
|
-
id = $0
|
|
175
|
-
sub(/^- id:[[:space:]]*/, "", id)
|
|
176
|
-
sub(/[[:space:]]*$/, "", id)
|
|
177
|
-
skip = (id == strip)
|
|
178
|
-
}
|
|
179
|
-
!skip { print }
|
|
180
|
-
' "$WEB_PATCH" > "$WEB_PATCH_LAYER"
|
|
181
|
-
fi
|
|
182
|
-
PATCH_ARGS=(--patch "$WEB_PATCH_LAYER")
|
|
183
|
-
else
|
|
184
|
-
echo "dsh-workbench: 提醒 —— 找不到 ${WEB_PATCH},这次不叠加 web 的设置(供应商等可能不全)。" >&2
|
|
185
|
-
fi
|
|
186
153
|
|
|
187
154
|
# ── 声明工作台运行时的**可写根**(执行缝的沙箱只放行 process.cwd())──────────
|
|
188
155
|
#
|
|
@@ -195,7 +162,7 @@ fi
|
|
|
195
162
|
#
|
|
196
163
|
# 为什么是 `--patch` 叠加而不是改 profile 的 cordis.patch.yml:profile 可能是旧的
|
|
197
164
|
# (交接出去的机器尤其如此),没人会回头重跑 seed;叠加层每次启动都生效。
|
|
198
|
-
# ⚠️ 必须排在
|
|
165
|
+
# ⚠️ 必须排在 profile 自己那一层**之后**:工作台的可写根要赢。
|
|
199
166
|
SANDBOX_PATCH="$REPO_DIR/profile/sandbox.patch.yml"
|
|
200
167
|
if [ -f "$SANDBOX_PATCH" ]; then
|
|
201
168
|
PATCH_ARGS+=(--patch "$SANDBOX_PATCH")
|