dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH Desktop 桌面控制中心:更新中心(侧栏版本号 + 进度条弹窗 + 一键装好 + 断点续传),外加「技能 / MCP / 智能体 / 导入」四个设置页——可从 Codex、Claude Code、TRAE、WorkBuddy 导入智能体预设与历史对话,按源地址联网搜索,侧栏笔记可多选插入聊天输入框。
DSH Desktop 更新中心:侧栏版本号 + 一条「更新」按钮 + 带进度条的更新弹窗,
下载完自动替换 /Applications 里的 app 并重启 —— 不用再把 DMG 里的 app 手动拖进 Applications。一个基于 DeepSeek Harness / DSH Desktop 的 Cordis 插件(宿主端 + 客户端),把 DSH Desktop 的 更新体验换成一条自动链路;另外给设置面板加了 技能、MCP、智能体(Agent 预设)、导入 四页(「导入」= 从本机其它 AI 工具把智能体预设 / 对话记录搬进来,v1.9.1 从智能体页搬出来独立成页), 技能 / MCP / 智能体都支持按「源地址」联网搜索与一键取用。侧栏还带一个笔记弹窗; 设置 → 账号与余额 的「充值余额」下面还有一张 Token 活动热力图(一天一格,每天 / 每周 / 年 / 累计总量四种模式); v1.11.0 又在「Token 活动」下面加了一页 「我的插件」——把自己开发的插件列出来(版本 / star / 是否收录市场),可搜索、可一键打开 GitHub。
版本 2.0.16 + [检查更新]2.0.16 → 2.0.17 + 高亮的 [更新]正在下载 28% + 一条细进度条[继续下载](断点续传)场景 · 行为 正在下载 · 「升级 APP / 正在为您更新,请耐心等待 / 已下载 28%」+ 进度条 + [取消] [后台升级] 点 取消 · 二次确认:「确定要取消下载吗?」[继续下载] [确定取消],并说明已下载的部分会保留 点 空白处 / Esc · 隐藏弹窗 = 后台升级(下载继续,侧栏那行继续显示百分比)。二次确认开着时,点空白处只收回确认 取消过 / 失败过 · 提示「上次已下载 32%,从断点继续」,点继续就是接着下(HTTP Range),不从头来 下载完成 · 自动挂载 DMG → 校验版本与签名 → 替换 app → 自动重启
dshdesktop.cn 两个固定端点;重定向只放行 dshdesktop.cn 与官方镜像modelscope.cn(2026-10 起下载端点 302 到 modelscope.cn → cdn-lfs-cn-1.modelscope.cn), 其它主机一律拒绝。放行镜像不降低最终校验强度:DMG 仍要过 codesign 验签 + bundle id / 版本核对。
ditto 到暂存目录并 codesign --verify --deep --strict 验签,通过之后才「移开旧的 / 换上新的」(任一步失败都把旧的搬回来)。
killall -TERM → osascript … quit →等它的 HTTP 端口关掉,超时再 killall -KILL。
settings.section = skills)重名会明确报错,不覆盖。
~/.dsh/skills、~/.agents/skills(随包 / 项目里的只展示,不改写)。settings.section = mcp)streamable-http(URL + 请求头)与 stdio(命令 + 参数 + 环境变量);~/.dsh/mcp-servers.json,保存后立刻挂载/断开(内部按 @deepseek-ai/dsh-mcp-client的行来动态挂载),不用改 profile 的 patch,也不用重启。连不上会明确告诉你哪个服务器、什么原因。
settings.section = agents,排在「MCP」后面)「从其它 AI 导入」v1.9.1 起不在这一页里了 —— 它搬成了导航里「智能体」下面独立的一页
「导入」(settings.section=other-ai,order 160),见下面第 9 节。
管的是 DSH 的 Agent 预设:一个预设就是一行 @deepseek-ai/dsh-agent-preset 声明, config.plugins(正文)决定这个智能体能用哪些插件/工具。
standard / ptc / minimal / cordis,随 @deepseek-ai/dsh-web-app 发布)、你/别人随包装的、以及本插件自己加的都在一起。每条显示名字、来源徽标、简介(截断两行)、 标识、插件数 / 工具行数;装配失败的会标红并把 DSH 给的诊断原样贴出来;
正文也可以勾「这段是系统提示词」直接写一段话(保存时自动包成一行 @deepseek-ai/dsh-persona)。 删除要二次确认;
允许改会造成「我改的东西下次更新就没了」的错觉;而拦住用户又不合适,所以给一条明确的出路: 任意预设(含内置)都能「复制一份」成自己的副本再改;
重名会明确报错,并给出「自动改个名字」和「覆盖同名自定义预设」两个显式选项 —— 不会静默覆盖;
createObjectURL + ``)。两种格式:本插件 JSON(再导入时名字/简介/模型备注一起还原)、DSH 补丁 YAML(贴进 bundle 就能用);
这一页不再有那个入口按钮。
数据落在 ~/.dsh/agent-presets.json。保存后在运行时动态挂载那一行声明 (跟 MCP 一个套路:ctx.plugin(模块, config)),所以不用改 profile 的 patch、也不用重启; 删掉就是 dispose,agentPresets 注册表里同步消失。第三方预设如果引用的插件包没装, 它会留在列表里并标成「装配失败」,把 DSH 的报错原样显示出来 —— 装好那个包再重启 DSH 即可。
技能页进「导入」就能看到;MCP 页与智能体页点「在线搜索」。选一个源地址 → 填关键字 → 搜索 → 一键取用。
页面 · 内置源 · 说明 技能 · anthropics/skills · Anthropic 官方技能库(20+ SKILL.md) 技能 · obra/superpowers · 社区技能合集 技能 · 自定义地址… · 填 owner/repo 或完整 GitHub 链接(任何放 SKILL.md 的仓库都能搜) MCP · MCP 官方注册表 · registry.modelcontextprotocol.io,按关键字搜,结果自带 streamable-http URL 或 stdio 启动命令 MCP · modelcontextprotocol/servers · 官方参考实现(自动填成 npx -y @modelcontextprotocol/server-) MCP · 自定义地址… · 别的注册表 URL,或 owner/repo 智能体 · 本机自带预设 · 直接读随包的 @deepseek-ai/dsh-web-app/presets/*.patch.yml(离线可用;取用=复制一份成自定义) 智能体 · deepseek-ai/deepseek-harness · 上游官方预设集合(standard / ptc / minimal / cordis) 智能体 · AcidGr/dsh-preset-mobile-use · 第三方预设(手机自动化 Agent),装它=把别人的插件行挂进你的 DSH 智能体 · 自定义地址… · owner/repo,或一个 .patch.yml 的完整 https 地址
~/.dsh/skills//SKILL.md;智能体的源是「扫仓库里所有 patch 文件,找带 @deepseek-ai/dsh-agent-preset 声明的」,所以任何按 DSH 约定发布预设的仓库都能当源;
所以同一个仓库 10 分钟内换关键字重搜是 0 次请求(结果里会写「N 秒前抓的缓存」);
页面 · 从哪读 · 读到什么 技能 · ~/.codex/skills/*/SKILL.md、~/.claude/skills/*/SKILL.md、~/.agents/skills/*/SKILL.md · 勾选后复制进 ~/.dsh/skills//(同名会标出来,不覆盖) MCP · Codex ~/.codex/config.toml(含 [mcp_servers.X.env])、Claude ~/.claude.json、Cursor ~/.cursor/mcp.json、Windsurf、Gemini CLI、OpenCode、Continue · 勾选后写进清单并立刻挂载;没连上会在界面上说清楚是哪个、为什么
实测这台机器:从 Codex 扫到 12 个技能 + 4 个 MCP 服务器,从 Claude 扫到 1 个,导入后文件真的落到 ~/.dsh/skills/、清单真的落盘、挂载真的被调用(生成的配置还拿 @deepseek-ai/dsh-mcp-client 的官方 Zod schema 校验过)。
导航里点「导入」→ 就是这一页(settings.section 的 other-ai,order 160,排在「智能体」150 下面; v1.9.1 从「智能体」页搬出来,那边的入口按钮已经删掉),里面有两个页签:
页签 · 导什么 智能体预设(默认) · 那几家里的「智能体 / 提示词 / 技能」,导成 DSH 智能体预设(见下面 9.1) 对话记录 · 那几家里的历史会话,导成真正的 DSH 会话(能在左侧会话列表打开、能接着聊;见下面 9.2)
默认四个来源,装了就把里面的智能体/提示词一键导成 DSH 智能体预设,没装就照旧显示出来并给官网入口 (window.open 新窗口)—— 不把没装的藏起来。
来源 · 探测判据 · 能导入什么 · 官网 Codex · ~/.codex 存在 · ~/.codex/AGENTS.md(它的全局指令文件)、~/.codex/prompts/*.md · developers.openai.com/codex Claude Code · ~/.claude/agents 或 ~/.claude 存在 · ~/.claude/agents/*.md(子代理:name/description 来自 frontmatter,正文=系统提示词)、~/.claude/commands/*.md · claude.com/product/claude-code TRAE · /Applications/Trae.app(国内版 Trae CN.app)或 trae CLI 并且 配置目录在 · ~/.trae/skills/*/SKILL.md、~/.trae/memory/user_profile.md、~/.trae-cn/skills/*/SKILL.md · trae.cn WorkBuddy · ~/.workbuddy 存在 · SOUL.md(人格总纲)/ IDENTITY.md(身份卡)/ USER.md(用户画像)、~/.workbuddy/skills/*/SKILL.md · workbuddy.ai
~/.trae / ~/.trae-cn 只是别的工具留下的配置残渣,必须 app 或 CLI 在才算「装了」,否则界面上标「只有配置残渣」并显示下载入口。它自带的重型技能包(builtin_skills 等)故意不列 —— 几十上百 KB 且依赖它的运行时,导过来没有意义;
(正文就是一行 @deepseek-ai/dsh-persona),落到 ~/.dsh/agent-presets.json 并立刻挂载。 撞内置/撞已有都会明确报错,可以勾「重名自动改名」导成副本;只有「同一来源的同一项再导一次」 才当作幂等刷新(不然连点两次就报错太蠢);
*.md 会一个一个列出来)或一个 http/https 地址(一个文件,或一个 GitHub 仓库 —— 会去找里面的 AGENTS.md / CLAUDE.md / agents/ / prompts/)。加进清单后能删;删来源不会删已经导进来的预设;
existsSync + 单层 readdir),不递归扫 home、不上网、进程启动时也不扫(打开这一页才跑一次),界面上把「探测的是什么」原样写出来。
这一页的第二个页签不导智能体,导的是对话本身:Codex / Claude Code / WorkBuddy 聊过的那些会话, 可以一键导成真正的 DSH 会话 —— 导完在左侧会话列表里就能打开、能接着聊。
来源 · 对话文件长什么样 · 本机实测 Codex · ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl + ~/.codex/archived_sessions;首行 session_meta,正文是 response_item · 230 + 11 个文件 → 117 条会话(一个 session 会分卷成多个文件,按 session_id 合并) Claude Code · ~/.claude/projects//.jsonl(type: user/assistant) · 22 条 WorkBuddy · ~/.workbuddy/projects//.jsonl(标题从 ~/.workbuddy/workbuddy.db 只读补) · 213 条 TRAE · ~/.trae/assistant、~/.trae-cn/assistant 都是空目录 · 暂不支持解析这个工具的对话格式(对话在它自己的云端 / 应用内数据库里,没有稳定的本地文件可读)——界面上如实写明
上游塞进「用户消息」里的注入上下文(Codex 的 # AGENTS.md instructions… / `、 WorkBuddy 的 ` 等)不会被当成标题露出来;
—— 交互与「笔记」页同款;
ctx.sessionPersistence(create(header) → handle.append(events),头行 version:4、事件 seq 从 0 连续、surface 事件带 surfaceOp:"append");拿不到这个服务时才退回「按同一套编码自己写 ~/.dsh/sessions///session.v4.jsonl.zstd」。角色、文本、时间戳都保留, 工具调用/工具结果折成 [调用工具 x] … 一行文本,思考块不进正文(省得把会话撑爆);
session-import--,重复导入同一个对话 = 跳过;内容变了才用 -2 的新会话 id 新建,绝不覆盖已经导过的会话。失败逐条报错(哪条、为什么),不整批静默失败;
.md 文件、「插入到输入框」直接塞进当前会话;也可以单条「复制 Markdown」。UI 里写清了两者的差别;
cwd(Codex / Claude / WorkBuddy 都记了 cwd);readOnly 打开),Codex 只挖 4 层、Claude / WorkBuddy 2 层,列表带 60 秒缓存。