본문으로 건너뛰기
X

dsh-dynamic-island

xsxelricor/dsh-dynamic-island

Desktop dynamic island for DeepSeek Harness showing live agent status, approvals and questions, workspace switching, and usage stats.

설치

dsh plugin --profile web add github:xsxelricor/dsh-dynamic-island

README

dsh-dynamic-island · 桌面灵动岛

DeepSeek Harness 的桌面灵动岛插件:像 iPhone 灵动岛一样停在屏幕边缘,实时显示 Agent 在做什么——思考、回答、执行工具、等你确认;展开后是任务控制台,可以看计划进度、上下文占用和用量、停止任务,直接批准权限请求、回答 Agent 的提问,任务完成时预览回复;还能切换工作区、在已有对话之间跳转或直接新建对话;另有面板内的用量统计,并按 DeepSeek 官方价格估算费用。

社区插件,非 DeepSeek 官方产品。DeepSeek 名称与鲸鱼标志归其所有者。

本插件基于 a961282799-crypto/dsh-island(MIT)衍生,原作者与贡献者的版权保留;本仓库的改动版权归 xsxElricor。

0.1 首发(基于上游 0.6.2)

  • 展开面板顶部新增工作区/会话切换:左键选工作区,中键选该工作区最近的对话,右键在该工作区新建对话(默认标准模式)。
  • 审批卡显示「允许本次操作使用 <模式> 权限」和目的,与 Harness 主窗口一致。
  • 新增「右上(上三分之一)」停靠位置。
  • 用量统计改为面板内视图(今天/7 天/30 天 + 柱状图 + 当前上下文/余额/峰谷),移除独立统计窗口。
  • 提问卡同时支持 timed 与 legacy 提问;在灵动岛回答后,Harness 主窗口的提问卡会随之撤下。
  • 计划模式有待审阅计划时,灵动岛给出「计划待审阅」提示。
  • 移除系统托盘图标;面板「···」菜单精简为显示/隐藏与显示器两项。
  • 隐藏灵动岛时同步关闭设置里的「显示灵动岛」,重新打开该开关即可恢复。
  • 面板高度随内容伸缩,长回复与任务卡同屏时不再裁切底部按钮。
  • 主面板移除「过去 24 小时」柱状图与「今天完成/工作时长/今日 tokens」三个小卡片。

十一种状态

截图来自上游 0.6.2 版本;当前版本的会话栏、面板内用量视图等界面已有所不同。

任务控制台在灵动岛回答提问
任务控制台回答提问
批准权限请求有新回复
批准权限请求有新回复

Harness 设置 › 灵动岛

动画录屏(mp4)

安装

需要 DeepSeek Harness 桌面版 0.2.2-rc.1(Windows)。

本插件目前通过 GitHub 发布(暂未发布到 npm):

  • 一键安装:下载本仓库(或 git clone),双击 安装到 Harness.cmd。脚本会询问是否关闭 Harness,装完自动重新打开。

  • 命令行:先从托盘退出 Harness,再在仓库目录运行:

    powershell -NoProfile -ExecutionPolicy Bypass -File scripts/install-harness.ps1
    

    脚本会在 artifacts/ 下生成 dsh-dynamic-island-0.1.1.tgz,再用 Harness 随附的 dsh plugin --profile desktop add 安装。

  • 已打包的 tgz:也可以直接运行 dsh plugin --profile desktop add artifacts\dsh-dynamic-island-0.1.1.tgz。

装好后,位置、大小等选项在 Harness 的「设置 › 灵动岛」中调整。

形态

形态尺寸(适中)何时出现
待机118 × 32没有任务:只有鲸鱼和一颗呼吸的蓝点
紧凑212 × 36任务进行中:鲸鱼 · 状态文字 · 动态指示器,多任务时显示数量
弹出312 × 66新任务开始、等待确认、完成、异常时自动弹出几秒,显示任务标题;完成时显示回复开头
展开344 × 自适应鼠标停留约 0.7 秒或单击:任务控制台
竖向32 × 78 / 36 × 104停靠在左侧、右侧居中或右上(上三分之一)时变为竖条,悬停或提醒时横向舒展

尺寸、圆角、鲸鱼和指示器的位置都随形态一起用带轻微回弹的弹簧曲线过渡;状态切换时文字和图标做模糊交叉淡入。

任务进行中,鲸鱼外圈是上下文占用环:按当前上下文占模型窗口的比例描边,70% 以下绿色,70% 起黄色,90% 起红色并轻轻呼吸,提示快要整理上下文了。

使用

  • 鼠标在灵动岛上停留片刻即展开任务控制台,移开后自动收起;悬停展开后再单击可固定,不随鼠标离开收起。可在设置中关闭悬停展开。
  • 单击胶囊展开或收起,按 Esc 或点击灵动岛以外的任何地方收起;单击展开的面板在鼠标离开 6 秒后也会自动收起。提问卡里没提交的草稿会保留,重新展开可以接着答。
  • “打开 Harness”回到主窗口;面板底部的柱状图按钮在面板里切换用量视图。
  • “隐藏”只隐藏灵动岛,设置里的「显示灵动岛」会同步关闭;重新打开该开关即可恢复;「···」菜单只有显示/隐藏和显示器两项。
  • 透明区域不拦截鼠标;窗口置顶但出现时不抢输入焦点。

在灵动岛切换工作区与会话

展开面板顶部是三个按钮:左边是当前工作区,中间是当前对话,右边 + 新建。

  • 点左边:只列出本机的工作区,选一个就切过去(列表不显示对话),中间按钮随之落到该工作区最近的一条对话。
  • 点中间:只列出这个工作区下的对话(还没发过消息的空会话不显示),选一个就切过去,灵动岛随之显示它的状态和最近回复,输入框发的消息也发给它。
  • 点右边:在这个工作区里新建对话,默认使用「标准」模式,并立即成为灵动岛当前对话;它也会出现在 Harness 侧栏对应工作区下。

选中的工作区和对话记在 ~/.dsh/dsh-dynamic-island/hub.json,重开 Harness 后保持;也可以在 设置 › 灵动岛 里关闭「工作区与会话切换」。

任务控制台(展开面板)

什么时候显示什么
有任务进行中任务标题与计时;Agent 计划的进度条(如 4/7)和当前步骤;最近几步工具(读取文件、编辑、终端…);模型、上下文占用(如 412K / 1.0M (39%))、缓存命中率、工具次数、输出 tokens;其他同时进行的任务;停止任务按钮
刚结束有新回复:Agent 最后一条回复的开头(点击回到 Harness 看全文);结果、最终计划进度、本次用量
空闲提示语和最近几个任务(结果、时长、多久以前);用量、余额和峰谷在统计视图里

停止任务要点两次(第一次变红确认),效果与 Harness 里的停止按钮相同,只对顶层任务生效;子智能体不会单独列为任务,除非它在等你确认或出错。用量数据来自 Harness 自己的会话记录(ctx.sessionQuery):启用后在后台补算最近 30 天的会话,之后跟随实时事件更新,汇总保存在 %USERPROFILE%\.dsh\dsh-dynamic-island\usage.json,只含会话标题、每轮的模型、时间、结果、调用与工具次数、token 数和估算费用,保留 35 天,不含对话内容。

账户余额通过 Harness 自己的账户服务读取(与「设置 › 账户」相同),只在用 DeepSeek 账号登录时可用;灵动岛看不到任何令牌或 API Key。打开面板时最多每分钟刷新一次,另外每 10 分钟刷新一次。

在灵动岛给 Agent 发消息

展开面板顶部是对话卡:上面是这个任务最近一次的回复(最多 4000 字,可滚动、可复制),下面是输入框,不用打开 Harness 就能接着聊。Enter 发送,Shift+Enter 换行,中文输入法选字时按 Enter 不会误发。

  • 发给谁:正在显示的任务;空闲时发给最近一个任务。子智能体不会成为对象。
  • 空闲时点 发送 开始新一轮;任务进行中点 排队(这一轮结束后发送),或点 插话(插入正在进行的这一轮,Agent 下一步就会看到)。
  • 走的是 Harness 自己输入框用的同一个接口(会话控制器的 prompt),消息会出现在 Harness 的对话记录里;已关闭的任务会被自动恢复。没有选好模型等原因发送失败时,输入框里的内容保留,可以直接重试。
  • 暂不支持新建对话和发送图片、文件,这些仍在 Harness 中操作。可在设置中关闭「在灵动岛给 Agent 发消息」。

在灵动岛回答提问

Agent 用 ask_user_question 提问时,灵动岛自动展开提问卡:单选、多选、自己输入、跳过都可以,多个问题逐个回答后一次提交。Harness 窗口里的提问卡照常可用,哪边先答用哪边;灵动岛先答时,Harness 里的那张卡会随之关闭。没有打开 Harness 窗口时,灵动岛就是回答入口。问题超时后转为“继续”状态,仍可在灵动岛回答,回答作为一条回复送回 Agent,与 Harness 的处理方式相同。

计划审阅(plan mode)和带长说明的问题需要看全文,仍在 Harness 中回答;有待审阅的计划时,灵动岛会提示「计划待审阅」,点面板底部的「打开 Harness」查看全文并批准。可在设置中关闭「在灵动岛回答提问」。

在灵动岛批准权限请求

Agent 要执行需要授权的操作(运行命令、修改文件、访问网址等)时,灵动岛变为“需要你批准”并自动展开审批卡,显示是哪个工具、为什么、具体要做什么(命令全文、文件路径或网址)。可以 允许一次 或 拒绝;按钮在卡片出现后约 0.6 秒才可点,避免误触。Harness 窗口里的审批卡照常可用,哪边先批用哪边,灵动岛先批时 Harness 里的卡随之撤下;没有打开 Harness 窗口时灵动岛就是审批入口。多个请求依次处理。

“始终允许”等持久授权不在灵动岛提供,仍在 Harness 中设置;子智能体的请求也在 Harness 中处理。可在设置中关闭「在灵动岛批准权限请求」。

用量统计

点面板底部的柱状图按钮在面板里切到用量视图,再点一次回到对话界面。视图里有:

  • 范围:今天 / 7 天 / 30 天,表格和柱状图用同一个范围。
  • 总 tokens、估算费用、缓存命中率、完成/轮次。
  • 堆叠柱状图:缓存命中 / 未命中输入 / 输出,悬停查看每段的数量与费用。
  • 当前上下文占用(如 412K / 1.0M (39%))、DeepSeek 账户余额、当前是高峰还是空闲(谷)时段。

费用按 DeepSeek 官方价格(2026-10-27 查询,人民币/百万 tokens)逐次调用估算:

模型时段缓存命中输入未命中输入输出
deepseek-flash空闲 / 高峰0.02 / 0.041 / 24 / 8
deepseek-v4-pro空闲 / 高峰0.15 / 0.304.5 / 913.5 / 27

高峰时段为北京时间工作日 9:00–12:00、14:00–18:00(法定节假日无法识别,按工作日计)。写入缓存的输入按未命中价,输出含思考内容;已下线的 deepseek-v4-flash 按 Flash 价计;没有官方价格的模型不计入费用。估算仅供参考,实际扣费以 DeepSeek 账单为准。

在 Harness 中设置

位置、大小等选项在 Harness 的 设置 › 灵动岛 中,修改后立即生效,无需重启:

选项说明
停靠位置在示意屏幕上点选:左上、顶部居中、右上、左侧居中、右侧居中、右上(上三分之一)、底部居中
显示灵动岛关闭即隐藏;打开时会重新显示
大小小巧、适中、舒展
弹出提醒任务开始、完成、需要确认或出错时短暂放大
显示任务内容关闭后不显示任务标题、计划内容、工具名、审批详情和回复预览,只显示状态
在灵动岛回答提问Agent 提问时自动展开提问卡,可直接回答
在灵动岛批准权限请求需要授权时显示审批卡,可允许一次或拒绝
在灵动岛给 Agent 发消息面板里显示输入框,接着当前或最近的任务对话
工作区与会话切换展开面板顶部的会话栏:切换工作区、选择对话、新建对话(默认标准模式)
悬停展开面板鼠标停留即展开,移开收起;关闭后需要单击
显示账户余额空闲时显示 DeepSeek 账户余额
减少动态效果关闭循环动画和弹性过渡(也跟随系统设置)

这些选项保存在 Harness 的 desktop profile 配置中(插件条目 dsh-dynamic-island)。显示器选择在面板的「···」菜单里,隐藏状态在本地保存。

状态与动效

状态主色动效
随时待命品牌蓝鲸鱼缓慢漂浮,蓝点呼吸
正在思考靛蓝三颗光点彗尾追逐;文字流光;底边光带滑过;鲸鱼游动
正在回答亮蓝五条节奏各异的声波
正在执行蓝紫伸缩弧环旋转、内核跳动;显示工具名
等待你确认琥珀双层涟漪扩散,外圈光晕呼吸,鲸鱼轻轻探头;有提问时显示“有问题等你回答”并展开提问卡
已完成绿圆盘弹出、对勾描画,鲸鱼跃起并喷出水花,胶囊轻弹
已暂停灰双竖线依次落定
需要留意柔红圆标弹出,整个胶囊左右轻摇(像输错密码)
正在重试琥珀两颗光点交换位置
整理上下文紫三层线条收拢再展开
连接已断开灰斜杠圆,鲸鱼褪色

竖向停靠时,中间细脊会有光点自上而下流过。支持系统“减少动态效果”和插件自己的动效开关(打开后所有动画立即停止)。完成、暂停约 6.5 秒后收回待机;错误提醒显示 15 秒。多任务时优先显示待确认和异常,其次是进行中的任务。

从源码安装与卸载

适配并检查的版本:DeepSeek Harness Desktop 0.2.2-rc.1 / Windows。

双击项目里的 安装到 Harness.cmd 即可(会先询问是否关闭 Harness,装完自动重新打开;会在常见安装位置和正在运行的 Harness 中查找 dsh.cmd)。也可以先从托盘退出 Harness,然后运行:

powershell -NoProfile -ExecutionPolicy Bypass -File scripts/install-desktop.ps1

重新打开 Harness 即显示。卸载:

powershell -NoProfile -ExecutionPolicy Bypass -File scripts/install-desktop.ps1 -Action Remove

安装由官方 dsh plugin --profile desktop add 完成。本插件不修改悬浮球插件或宿主安装目录,不增加开机自启。设置保存在 %USERPROFILE%\.dsh\dsh-dynamic-island\settings.json。退出 Harness 或停用插件后,窗口随宿主关闭。

运行环境复用当前机器已有的 %USERPROFILE%\.dsh\dsh-orb\electron-runtime\electron.exe。它不是独立安装包:在其他机器上需要已有 Electron,或使用环境变量 DSH_ISLAND_ELECTRON 指定其路径。安装归档不含 Electron,不会自动下载运行环境。可用 DSH_HOME 指定 Harness 数据根目录。

动画预览

npm run preview

预览窗口每 4.5 秒循环一个状态,面板里是标明“示例数据”的演示内容;展开后可手动切换,位置和大小在面板的「···」菜单里调。也可双击项目里的“打开动画预览.cmd”。它明确标注“预览模式”,不代表真实任务。预览设置与正式插件分开保存在项目 .preview 目录。

开发与验证

代码无需打包器和运行时 npm 依赖。src/host.js 使用 Cordis 生命周期及 session/event、agent/assistant-stream、agent/status、agent/error,通过父子进程 IPC 向隔离的 Electron 页面发送状态;src/settings.js 用 Harness 自带的 schemastery 声明 volatile 配置,loader/volatile-update 时把新设置转发给窗口;src/hub.js 通过 workspaceRegistry、sessionController、sessionQuery 读取工作区与会话,并在新建对话时使用 agentPreset: standard;web/client.js 是 Harness 设置页的浏览器半侧(通过 dsh.client 声明加载)。传给灵动岛的只有状态、任务标题、Agent 计划条目、工具名、模型名、token 数、账户余额、等你回答的问题和选项、工作区与会话列表(名称、标题和时间),以及已完成一轮的最终回复(关闭「显示任务内容」后不传);不会读取密钥,也不传递你的提问、思考正文、进行中的文本或工具参数。你在灵动岛输入的消息经 IPC 交给 Harness 的会话控制器,灵动岛本身不保存。没有新增 HTTP 监听端口。加载时接管正在运行任务的概括状态,之后使用实时事件细分;不重放历史对话。

npm test
npm run test:host
npm run test:desktop
npm run pack:plugin

桌面交互检查使用 Playwright,先运行 npm install 安装开发依赖;也可设置 DSH_TEST_DEPS 为已有的 Playwright 所在 node_modules。DSH_HOST_EXECUTABLE / DSH_HOST_PACKAGE 可指定另一处 Harness 安装以检查版本兼容。更换宿主版本时应先重新验证契约,不应绕过兼容门禁。

真实模型任务、网络重试和确认流程的完整现场验收与合成事件测试不同;具体已验证范围见 VALIDATION.md。

致谢

面板中的余额、缓存命中率和在灵动岛回答提问参考了 Agent HUD(Apache-2.0)的设计思路;本项目未使用其代码。

관련 플러그인