dsh-experience-plugin
DSH(DeepSeek Harness)功能插件,按功能模块组织:
| 模块 | 功能 | 配置入口 |
|---|
| 模型思考等级 | 为自定义 API 模型注入推理等级 | 设置页「日用优化」分区 |
| 模型参数 | 按 Provider / 模型手动覆盖 temperature / maxTokens / reasoningEffort | 设置页「日用优化」分区 |
| CLI 请求模拟 | 把 DSH 模型请求伪装成 Codex / Claude Code / Grok CLI | 设置页「日用优化」分区 |
| 打开文件夹 | 工作区行菜单打开项目目录 | 插件行 openFolder 段 |
| 设置页全屏化 | 设置弹窗改全屏页 + 背景不透明开关 | 设置页「日用优化」分区 |
| 自动加载历史 | 打开会话时自动加载更早的对话历史 | 设置页「日用优化」分区 |
| 全局指令 | 设置页编辑此主机全局指令(~/.dsh/AGENTS.md) | 设置页「日用优化」分区 |
| MCP 管理 | 增删 / 导入 / 启停 MCP server,按配置热装载 | 设置页「日用优化」分区「MCP 管理」页签 |
| Skills 管理 | 增删 / 导入 / 启停 Skill | 设置页「日用优化」分区「Skills 管理」页签 |
| 模块开关 | 各功能模块独立启停 | 设置页「日用优化」分区「模块开关」页签 |
所有配置 UI 统一收拢在设置页「日用优化」分区,含「插件设置」「模块开关」「MCP 管理」「Skills 管理」四个页签。
安装
插件已发布到 npm(dsh-experience-plugin),两种安装方式:
方式一:DSH 插件命令(推荐,自动从 npm 拉取)
dsh plugin --profile web add dsh-experience-plugin
方式二:直接 npm 安装
npm install dsh-experience-plugin
本地开发安装(Windows 跨盘符时先建 C 盘 junction):
New-Item -ItemType Junction -Path "$env:USERPROFILE\.dsh\plugins\dsh-experience-plugin" -Target "<项目绝对路径>"
dsh plugin --profile web add link:C:/Users/<用户名>/.dsh/plugins/dsh-experience-plugin
构建
pnpm install
pnpm build
浏览器 ↔ host 通信
host 与浏览器半区共用一条精确 Fetch 路由 /api/dsh-experience-plugin
(connection.fetch.register),各功能把逻辑通道登记进来,请求体为
{ channel, endpoint, payload } 信封,响应为 ConnectionRpcResult JSON。
connection.rpc.handle() 在 0.1.5 里对第三方插件不可用:它内部是
owner.effect(() => owner.webServer.register(route)),而 owner 恒为 connection
服务自身的 ctx(inject 只有 credentials),调用方注入 webServer 也无效。
官方 api-gateway 因此只走 rpc.intercept('/api', …),而 /api 拦截器全局唯一,
第三方插件无法共用。connection.fetch.register() 是 0.1.5 里可用的官方扩展点,
并自动继承 Connection 的 Host/Origin 围栏与浏览器会话鉴权
(官方 dsh-client-file-upload 同款用法)。
目录结构
按功能模块组织在 src/features/ 下:
model-reasoning/:模型思考等级
model-params/:模型参数手动覆盖
cli-mimic/:CLI 请求模拟
open-folder/:打开文件夹
settings-page/:设置页全屏化
auto-load-history/:自动加载历史
my-rules/:全局指令(My Rules,读写 ~/.dsh/AGENTS.md)
mcp-manager/:MCP server 管理
skill-manager/:Skill 管理
module-toggles/:模块开关
daily-optimization/:设置页「日用优化」分区
settings/:统一配置卡片
rpc-channel.ts:host 侧唯一 RPC 入口路由(connection.fetch.register)
浏览器半区另在 src/client/ 提供两个跨功能基础设施:
rpc-transport.ts:createExperienceRpc(),与 host 入口路由配套的 RPC 调用器
settings-access.ts:settingsScope 访问面封装(describe / update / mutate)
License
MIT