dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Cursor 同款 AI IDE:以 DeepSeek Harness(dsh)为 agent 内核的 VSCode 扩展。
面向习惯 Cursor 的用户:界面布局、交互、快捷键与 Cursor 一致,无痛迁移。
V1(自建 Electron/React 壳)已废弃(git tag
v1-legacy);V2 全面重构为 VSCode 扩展路线。 决策台账:docs/V2-DECISIONS.md· 路线规划:docs/REFACTOR-PLAN.md
VSCode (host)
├─ 扩展进程 (Node): sidecar 管理 / CKP client / IDE 适配(diff/SCM/快捷键/文件)
│ └─ webview (React): Chat / Composer / Checkpoint / Settings 面板
└─ sidecar: dsh --profile cursorkit(host-dsh 插件) ←CKP(HTTP+SSE)→
packages/protocol):前后端唯一共享契约,dsh 插件侧零改动packages/host-dsh):dsh 插件,动态 agent 创建(ctx.agents.create)、checkpoint、worktree、diff、approvalpackages/client):事件源 SDK(transport/store/reducer/乐观 UI)| 功能 | 状态 |
|---|---|
| Chat 面板(Ask/Edit/Agent 三模式 + 多会话 + @file 上下文) | ✅ |
| Agent 多文件任务(计划 → 逐文件 diff 审查 → 还原) | ✅ |
| Tab 补全(ghost text,Tab 接受) | ✅ |
| Ctrl+K 行内编辑(选中 → 指令 → 生成 → 内联应用) | ✅ |
| Checkpoint 时间线(自动打点 + 一键回滚) | ✅ |
历史会话恢复(重启后仍可列出/回读/继续,session.history) | ✅ |
| Rules(.cursorrules / .cursor/rules/*.mdc / ~/.cursorrules) | ✅ |
| 模型选择器(真实读取 settings.yaml provider×model) | ✅ |
| Settings 面板(Rules 查看 / Tab 开关 / 权限模式) | ✅ |
| 侧边栏会话视图 | ✅ |
依赖:Node.js ≥ 18、pnpm、dsh、LLM 凭据
# 1. dsh(版本固定 0.1.1-rc.2)
npm i -g @deepseek-ai/dsh@0.1.1-rc.2
# 2. 一键安装扩展(检查依赖 → 构建 → 打包 vsix → 安装到 VSCode)
bash scripts/install.sh
# 或手动:cd extensions/vscode && npx vsce package && code --install-extension dsh-cursorkit-*.vsix
LLM 凭据(wps 示例,与 dsh 数据目录一致):
# ~/.dsh-cursorkit/settings.yaml
llm-pi-ai:
providers:
wps:
apiKeyEnv: WPS_API_KEY
api: openai-completions
baseURL: https://ai-kas.kso.net/codeplan/v1
models:
- id: deepseek/deepseek-v4-flash-0731
contextWindow: 230000
# ~/.dsh-cursorkit/.credentials.yaml(0600)
refs:
WPS_API_KEY: <你的 key>
code # 打开 VSCode(或任意已装扩展的窗口)
Ctrl+Alt+C~/.dsh-cursorkit,可用 CK_DSH_HOME 覆盖)Ctrl+K 行内编辑;输入代码 Tab 补全| 快捷键 | 功能 |
|---|---|
Ctrl+Alt+C | 打开 Chat |
Ctrl+K | 行内编辑(选中代码后) |
Ctrl+Alt+T | Tab 补全开关 |
pnpm install
pnpm -r build # 内核包构建
cd extensions/vscode && node esbuild.mjs # 扩展主进程
cd extensions/vscode/webview && pnpm build # webview
pnpm -r test:run # 全量测试
集成验证(真实 dsh + wps):
node scripts/verify-m0.mjs # 全链路: spawn→runtime→session→send→流式事件
node scripts/verify-m3.mjs # model.list 真实 settings + 会话
node scripts/verify-bugfixes.mjs # 依赖同步/会话索引/重启后历史可用/diff 来源 等 9 项
node scripts/verify-history.mjs # 历史会话恢复(建会话→发消息→重启 sidecar→回放历史)
node scripts/verify-file-change.mjs # 改动链路:agent 真改文件 → file.changed/checkpoint
node scripts/verify-cancel.mjs # 停止链路:长任务 → session.cancel → 收到 cancelled
node scripts/check-css-classes.mjs # CSS 类名交叉检查
见 docs/AGENT-DEBUG-TOOL.md。速查:
bash scripts/open-vscode.sh <folder> --debug # 带 CDP 调试端口启动(端口自动分配)
node scripts/agent-debug.mjs shot --chat -o /tmp/a.png # 截 Chat 面板(agent 直接看图)
node scripts/agent-debug.mjs digest # UI 真实状态(状态/模型/消息数/待保留…)
node scripts/agent-debug.mjs click ".btn-stop" # 等价真人点击
node scripts/agent-debug.mjs type "你好" --enter # 输入并发送
node scripts/agent-debug.mjs errors --seconds=8 # 采集前端错误
node scripts/agent-debug.mjs log # 扩展活动日志
安装新 vsix 后优先让窗口自己重载:Ctrl+Shift+P → Developer: Reload Window(零窗口副作用)。
确实需要重启时用脚本,不要用 code -n:
bash scripts/open-vscode.sh /path/to/workspace # 只留这一个窗口
bash scripts/open-vscode.sh /path/to/workspace --keep # 保留其它项目的窗口
它会:关闭所有 VSCode 实例(不只第一个)→ 清掉待恢复的空窗口 →
只开一个窗口。注意不要用 xdg-open vscode://… 触发扩展 URI:
那会另起一个 VSCode 实例,是空白窗口的主要来源(用 code --open-url …)。
317 项全绿:protocol 11 / client 14 / host-dsh 128 / fixtures 6 / 扩展 158
(含真实 sidecar 冷启动集成测试与组件渲染测试;CK_SKIP_INTEGRATION=1 可跳过需要 dsh 的用例)。
danger-full-access(Cursor 风格自动执行),dshCursorkit.permission.mode 可调~/.dsh-cursorkit/.credentials.yaml(0600)packages/
protocol/ CKP 契约(方法/事件/错误码)
host-dsh/ dsh 插件(动态 agent/checkpoint/worktree/diff/approval)
client/ SDK(transport/store/reducer)
extensions/
vscode/ 扩展本体(src + webview React + esbuild/vite)
vscode/webview/ React 面板(Chat/Composer/Checkpoint/Settings)
scripts/ 安装 + 集成验证
fixtures/ 事件流 fixture + 集成测试
docs/ 决策台账 / 规划 / 审计