wzqvip/dsh-app

dsh-app

效率导向的 DeepSeek Harness 增强:不打开浏览器也能秒回 agent 提问、随时看到进度。桌宠与 galgame 仅为可选交互模块。Productivity-first enhancement for DeepSeek Harness.

미분류ai-agentapproval-workflowcordis-plugin

DSH 效率助手

让 agent 的问题找到你,而不是让你守着网页。

一个效率导向的 DeepSeek Harness 增强项目。 不打开浏览器,也能秒回 agent 的提问、随时看到它在干什么。

规划 · 任务清单 · 架构说明 · 调研报告 research/

这个项目解决什么问题

用 DSH 干活时,真实的工作方式是这样的:

agent 在跑一个长任务。你去写代码 / 看文档 / 开会 / 倒杯水。
它遇到一个需要你决策的地方,弹出问题。
而你的浏览器在后台,或者你根本不在电脑前。
于是整个任务停在那里,等你发现 —— 可能十分钟后,可能一个小时后。

这不是自动化不够,这是"你不在场"造成的等待。

DSH 的 agent 本身很强,问题在于提问的触达方式: 它假设你正盯着那个网页。一旦你离开,它就只能干等。

本项目的目标

把"agent 需要你"这件事,从"你必须回到网页"变成"它主动找到你,你点一下就能回答"。

· 现状 · 目标 提问触达 · 需要切到浏览器、找到那个会话 · 桌面上直接弹出/角标提醒 回答成本 · 打开网页 → 定位会话 → 读题 → 点选 · 点一下选项就能回 进度感知 · 必须看网页才知道跑到哪 · 一眼看到在做什么 离开电脑 · 完全错过 · 系统通知 / 稍后回来仍可回答

界面预览

截图取自沙箱实例(dsh-efficiency 已并入桌宠能力后的实际界面)。
宠物立绘与表情素材来自 PC2005-cloud/dsh-pet(禁止商用,详见 NOTICE.md)。

① 桌面小窗 + 右键菜单 —— 工具项里有「设置…」,动作分组可点播任意动画

② 提问面板 —— 提问到达时锚定在宠物下方,点选项 + Submit 即可回答(不用切回网页)

③ 设置窗口 —— 8 个分区,内置配置全部字段可编辑(含物理引擎、动画池、表情包池)

设置窗口里到底能改什么(逐分区截图)

设置窗口是可滚动的,一张图看不全。下面是逐分区截的(由
scripts/manual-settings-window.mjs 自动产出,脚本还会校验各图内容不重复)。

宠物 —— 名字、大小、显示方式(web/desktop/both)、停靠角落、水平/垂直边距、三个开关

提醒与对话 —— 系统通知、碎碎念/对话配表情包、人设提示词(自定义回复内容)、 对话记忆轮数、按事件分别设置的刷新间隔

物理引擎 —— 重力、弹性、地面摩擦、抛掷力度、顶部反弹、宠物互撞

工作状态文案 —— 「思考中 / 执行中 / 出结果 / 等你回复 / 成功 / 出错」六档气泡文案,可自己改

动画随机链权重 —— 待机 / 转向 / 移动 各自被挑中的权重(设 0 即不再挑)

动画池 —— idle/turn/drag/clicks、事件三池、分类(id/权重/不镜像/动作清单)、 移动参数(默认值 + 每动作可选覆盖)。内容很多,脚本会自动分段:

表情包池 —— 27 组「键 = 图片文件名 / 值 = 给模型看的描述」,可增删改

诊断信息 —— 排障时把这些贴出来即可定位问题

④ 网页浮层 —— 同一只宠物也能直接活在 DSH 网页里(默认只在桌面小窗;把「显示方式」改成 web/both 即可,见 TESTING.md §5.1)

💡 默认是桌面宠物:内置默认 display=desktop(上游为 both)——
桌宠的价值在"不打开网页也能看到提问",所以默认不占网页。
想在 DSH 网页里也看到它,把设置窗口的「显示方式」改成 两者都要/仅网页浮层 即可(即时生效)。
⚠️ 两套壳的工具项不同(实测确认,不是缺陷):
- 桌面小窗(Electron):打开网站 · 查看余额 · 设置… · 回到初始位置
- 网页浮层:打开网站 · 查看余额 · 碎碎念 · 对话
「设置…」只在桌面小窗里 —— 它要经 IPC 通知 Electron 主进程开窗,网页端没有这条通道。
在 DSH 设置页的 Efficiency 分区里也有这条指路提示。

核心能力(按重要性排序)

① 问题提醒 —— 本项目存在的主要理由

agent 提问时,在桌面常驻层立刻呈现:

  • 一眼看到问题:题干 + 选项,不需要打开网页
  • 一键回答:点选项即回,支持多选与"其他"自由文本
  • 不丢:即使你当时不在,问题不会消失,回来仍可回答(见 架构说明)
  • 系统通知:窗口失焦时也能提醒到
这是"生产力"的直接来源:它把一次上下文切换,压缩成一次点击。

② 进度可视 —— 随时知道它在干什么

  • 常驻状态:思考 / 工作 / 整理 / 等待 / 成功 / 出错
  • 待办推进、当前工具、运行时长
  • 多个会话并行时的角标与汇总

③ 进度气泡(可选,会消耗额外 token)

用一个独立的轻量会话去观察主 agent 的进度,偶尔生成一句人类可读的总结或提问, 以气泡对话的形式呈现("它已经改完 3 个文件,正在跑测试")。

  • ⚠️ 默认关闭。它需要额外调用模型,按周期计费。
  • 三种档位见下方「进度显示档位」。
  • 主力始终是 ①② 的零成本方案,③ 只是给"想要更自然表达"的人一个选项。

④ 局域网 / 手机访问(纯 Web 能力,与桌宠无关)

手机、平板通过浏览器访问响应式网页 —— 这不是桌宠功能,桌宠设置面板只是放这个开关的地方。

因此它和桌宠彻底解耦:桌宠没装或装不上,这个能力也必须可用。

⚠️ 但"一键开局域网"不是即时生效的开关:DSH 的 CLI 硬拒绝绑定 0.0.0.0(理由原文是"会把远程代码执行暴露到网络"),
且运行中的服务器无法改绑定地址。实际形态是改配置 → 提示需重启 → 一键重启,并必须带安全门槛
(暴露面 = 同网段可执行任意命令)。详见 plan.md §5。

⑤ 互动模块(非主线,可选)

这些是锦上添花,不是项目重点。它们让常驻的那一小块区域更耐看、更好用, 但去掉它们,效率功能依然成立:

  • 桌宠形象:桌面上的一只小动物,承载状态与气泡,让提醒不突兀
  • galgame 模式:把 agent 的长回答变成"点一下下一句"的逐句呈现,适合阅读长文

⑥ 启动器(解压即用)

DSH 目前需要手动装环境 + 敲命令才能用:

npm install -g @deepseek-ai/dsh    # 1. 自己装
dsh web                            # 2. 自己在终端敲
# 3. 等打印出带 ?token= 的 URL,浏览器自动打开
# 4. 终端不能关,关了服务就停

启动器把这一串压缩成"双击一个图标":

  • 自动检测环境(Node / npm / dsh / 端口),缺失则用人话引导并给官方下载链接
  • 自动拉起 dsh web、抓取 token、载入界面
  • 托盘常驻、退出时优雅关闭子进程
  • GitHub Release 发布,解压即用,无需自己搭建
⚠️ 启动器不是 MVP 的一部分,优先级低于 R0/R0b(它是分发层,不是核心效率层)。
它还不是"另一个 DSH 客户端" —— 不重写会话 UI,只做引导 + 承载。
完整设计(启动时序、环境检测、跨平台要点、失败处理)见 LAUNCHER.md。

进度显示档位(token 成本递进)

档位 · 做法 · 额外 token · 建议 A. 零成本(默认) · 直接读 DSH 已有的会话状态与投影:状态、待办、工具调用、运行时长、待答问题 · 0 · 默认开启,这就是主力 B. 本地聚合 · 本地把这些信号归纳成一句话(规则/模板,不过模型) · 0 · 想要更"人话"又不想花钱 C. 独立观察会话 · 另起一个轻量会话读进度 → 生成自然语言总结 + 气泡 · 按周期消耗 · 可选,需显式开启;可设周期与预算上限

档位 C 正是"新开一个 chat 窗口看进度"的想法,会在计划里作为可选项实现(见 plan.md)。 设计上保证:关掉 C,A/B 仍然完整可用。

架构一分钟

┌──────────────────────────────────────────────────────────┐
│  dsh-efficiency  ← 本仓库,一个插件包                      │
│    · 问题提醒与一键回答    ← 核心                          │
│    · 进度采集与状态联动     ← 核心(零 token)              │
│    · 桌宠本体(网页浮层 + 桌面小窗 + 气泡 + 通知)          │
│    · 设置 GUI                                            │
│                                                          │
│  ⚠️ 其中「桌宠本体」的代码 vendor 自 PC2005-cloud/dsh-pet   │
│     (MIT),我们做了改造。详见下方「许可与致谢」。          │
└──────────────────────────────────────────────────────────┘
                          │ 素材(**已随本包分发**)
┌──────────────────────────────────────────────────────────┐
│  本包自带 vendor/dsh-pet/assets/                          │
│    · 立绘动画 / 表情包 / 字体 / 内置默认配置               │
│    · 上游声明:允许开源使用、禁止商用(详见 NOTICE.md)    │
└──────────────────────────────────────────────────────────┘
                          │ 运行于
┌──────────────────────────────────────────────────────────┐
│  DSH 宿主 0.2.0-rc.2                                     │
│    · userQuestions(提问/回答/超时继续)  ← 效率功能的基础  │
│    · session 投影、tool-call、待办、审批                  │
└──────────────────────────────────────────────────────────┘

详细设计(含事件名、数据流、为什么问题不会丢)见 ARCHITECTURE.md。

与 DSH 的关系

本项目完全基于 DSH 的插件机制,不 fork、不改 DSH 源码:

  • 宿主侧:cordis 插件(apply(ctx) + 服务注入)
  • 客户端侧:注册到 shell.overlay / conversation.view / settings 等官方槽位
  • 提问能力直接复用官方 ctx.userQuestions,不自己造问答协议

因此 DSH 升级时,本项目只需要跟进插件接口,而不是维护一个分叉。

快速开始

想亲手试一下? 完整的沙箱实测步骤(含前置、启动、该看到什么、排查)