Files
dsh_shenxian/dsh-server-docs/08-skills/dsh-local-env/SKILL.md
T
admin 5ec99ce227
build / build-and-scan (push) Canceled after 0s
chore: 文档库全量重新入库(2026-10-20)
2026-10-20 15:05:55 +08:00

76 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: dsh-local-env
description: 「**在 Windows 本机把官方 dsh 跑起来 / 本机开发环境**」的总入口 —— 覆盖两半:① **本机跑起官方 dsh 并端到端取证**(web 实例 `apps/cli` 的 `dsh` CLI:起实例 / 查回环监听 / token+cookie jar 取 200 / 探测 Windows 沙箱后端;桌面壳 `apps/desktop`:源码构建、Electron 参数、CDP 真跑取证、**离线可用**验证、自研 client 插件真跑)② **环境引导 / 搬迁 / 改名**(「换电脑了」「改了工作区路径」「迁移到新环境」「规则会不会丢」「新环境还没配好」;以及**改名/搬家后的路径残留清理**)。⚠️ **边界**:本技能管**本机源码/开发态**;「**服务器上**单个用户实例打不开 / OOM / 崩溃重启」⇒ `dsh-diagnose`;「**服务器实例里**插件没 UI / 没生效」⇒ `dsh-diagnose`。核心 = 两形态先选对入口 + **Node 22** + **监听 ≠ 就绪** + **判据写窄=假红** + 换环境的"**规则齐备优先**"顺序 + **路径残留分类要细到「行」**。判据实体在主干,**全文在 `references/`(2 档)**。
version: 1.0.0
updated_at: 2026-09-28
last_change: 【2026-09-28】**由 `dsh-desktop-dev-shell`(v1.3.1)+ `dsh-env-bootstrap`(v1.2.0)合并而成**(两个原名退役)。按 `dsh-knowledge-upkeep §10`「主干 + 详情档」形态:判据实体留主干、全文下沉 `references/`(**内容守恒:逐行 0 丢失**,含原 frontmatter 变更历史)。合并理由:两者都是「**本机环境**」域 —— 一个管"把 dsh 跑起来并取证",一个管"换环境/改路径后规则与残留"。⚠️ 并按对账结论处置了版本分叉:`desktop-dev-shell` 本机版为**超集**(比文档库多 §11.6–11.8 等 131 行)⇒ 取**本机版**;`env-bootstrap` 本机版为**超集**(多 §3 迁移清理 67 行,文档库的"设计红线/自检"是其真子集)⇒ 取**本机版**。⛔ 未删任何判据。
agent_created: true
---
# dsh-local-env — Windows 本机 dsh 环境总入口
> ## 🔴 第 0 步:先分诊
>
> | 情形 | 去哪 |
> |---|---|
> | 要在**本机跑起 dsh**(web 实例 / 桌面壳)并取证 | **§1** |
> | 改了插件后**界面没变化** / 壳起不来 / pnpm 卡住 | **§1** |
> | **换电脑 / 改工作区路径 / 迁移 / 改名** | **§2** |
> | 改名后发现还有地方指着旧路径 | **§2 → 路径残留清理(分类细到「行」)** |
> | **服务器上**实例崩了 / OOM / 插件没 UI | ⛔ 不属本技能 ⇒ `dsh-diagnose` |
---
## 1. 本机跑起官方 dsh 并取证
**先选对入口(两个形态别混)**:**web 实例**(`apps/cli` 的 `dsh` CLI)|**桌面壳**(`apps/desktop`,需源码构建,可挂自研 client 插件做真跑验证)。
🔴 **三条必须先知道的判断**:
1. **Node 22**(版本不对会以各种"像工程问题"的方式失败);
2. 🔴 **「监听 ≠ 就绪」** —— 端口在听 **不代表** 实例能服务(实测:监听起来了但仍是 401/白屏)⇒ 判据必须做到"**能取到 200**"这一层;
3. 🔴 **判据写窄=假红** —— 会把**本来正确的产品行为**判成故障,然后你去改对的东西。⚠️ 同类:**陈旧写锁**会让实例**永久起不来**。
**依赖安装**:pnpm 在本机"卡在 added ~100"有**真根因**(不是慢)⇒ 见详情档。
**启动**:⛔ **不要用 `pnpm run dev:desktop`**;Electron 启动参数与 `--no-sandbox` 判据见详情档。
**改插件后必须重启壳**(插件树不热加载)。
**真跑取证(怎么拿到硬证据)**:用 **CDP** 连真窗口。⚠️ 选 CDP 目标时 **DevTools 自己也是一个 `type:'page'`** ⇒ 别选错。
**「离线可用」怎么验**:⛔ **别用"没人监听的端口"**造断网(那验不出东西);要用黑洞服务造"挂起" + **有界超时** + 如实状态。
⚠️ **造假的 `ctx` 有个必踩的语义坑**(假 ctx 与真 ctx 的语义差异 ⇒ 会让你得出错误结论)。
**两条本机环境坑**:`safe-delete` 护栏(**删 `node_modules` 前必读**);⚠️ Windows 上 `taskkill /F` 会被 MSYS **路径改写**成 `taskkill 'F:/'` ⇒ 报"无效参数"。
📂 **全文 ⇒ `references/00-本机跑起来与取证.md`**(含两形态完整命令与判据、pnpm 卡安装真根因、Electron 参数实测、CDP 取证配方、离线可用验证、`safe-delete` 护栏、自研 client bundle 必须 lazy-CJS 封包、真 host 的 RPC 调用(token→cookie + 信封口径)、桌面快捷方式链路)
---
## 2. 环境引导 / 搬迁 / 改名后的路径残留
**换环境的正确顺序**:🔴 **把"规则齐备"放在第一步**(先确认工作区常驻规则带着走,再谈别的)。
**工具**:`references/dsh-env-bootstrap/resident-rules.py` —— `--check`(校验关键规则齐备,**默认只报不改**)/ `--inject`(标记块内替换,首次需 `--init`)/ `--env-check`(路径与 hooks 命令自检)/ `--snapshot`(由权威重生成快照)。
🔴 **设计红线**:**权威方向单向**(规则文件为权威,快照为副本)⇒ ⛔ 别把它用成"第二真相源"。
🔴 **路径残留清理:分类要细到「行」,⛔ 不能只到「文件」**(血的教训):
- **第一层|文件分两类**:**活载体**(会被读取并据以行动:状态脚本 / 规则文件头部的路径声明 / 可执行脚本 / 当前工作线入口与接续包)⇒ **改写**;**历史档案**(记录过去某一棒做过什么:日志 · 归档 · tmp · 交付物 · 历史草案)⇒ ⛔ **不动**。
- 🔴 **第二层(最易漏、代价最大)|同一个"活载体"文件里,也有**不能改的行**:① **「污染源」记录本身**(改了就变成"它们写成了正确路径"⇒ **事故记录自毁**)② **`旧 A → 新 B` 配对里的 A 侧**(改了就成 `新 → 新`,脚本参数变重复)。
- **两类「改不动」的残留**:⛔ 别硬改、⛔ 别猜。
- **改名必须同步的「机制层」两处**:⛔ 漏了会**静默失效**。
📂 **全文 ⇒ `references/01-环境引导与迁移.md`**(含脚本完整参数、换环境顺序、分类细则与三类"不能改的行"、改不动的残留清单、机制层两处、三条可复跑验收)
📂 **快照 ⇒ `references/dsh-env-bootstrap/常驻规则-快照.md`** | **脚本 ⇒ `references/dsh-env-bootstrap/resident-rules.py`**
---
## 3. 详情档索引(跨档引用按此表定位)
| 档 | 覆盖的原技能 | 原章节 |
|---|---|---|
| `references/00-本机跑起来与取证.md` | `dsh-desktop-dev-shell`(**v1.3.1 本机超集版**,全文) | §0 为什么存在 / §1 两形态 / §2 桌面壳三判断 / §3 pnpm 卡安装 / §4 启动 / §5 Electron 参数 / §6 真跑验证 / §7 本机环境坑 / §8 壳里打开不是登录页(**不是 bug**)/ §9 `safe-delete` 护栏 / §10 纪律 / §11 web 实例形态(含 **§11.6–11.8 本机独有**) |
| `references/01-环境引导与迁移.md` | `dsh-env-bootstrap`(**v1.2.0 本机超集版**,全文) | §0 为什么存在 / §1 命令 / §2 换环境顺序 / §3 迁移·改名后的路径残留清理(含 §3.1–§3.5)/ §4 设计红线 / §5 自检 |
| `references/dsh-env-bootstrap/` | 原附属档 | `常驻规则-快照.md` · `resident-rules.py` |
🔴 **两个原名已退役**(`dsh-desktop-dev-shell` / `dsh-env-bootstrap`)⇒ 别处见到按本技能对应档读。
⚠️ **边界**:本技能管「**本机**」;服务器侧的实例与插件 ⇒ `dsh-diagnose`。
⚠️ **已并入的版本分叉**:文档库侧旧版比本机少 §11.6–11.8(本机为超集)⇒ 已按**本机版**定稿,⛔ 别用旧副本反向覆盖。