dsh-island 0.0.0-stage → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +143 -2
- package/THIRD_PARTY_NOTICES.md +9 -0
- package/assets/deepseek.svg +3 -0
- package/cordis.patch.yml +3 -0
- package/desktop/index.html +97 -0
- package/desktop/island.css +341 -0
- package/desktop/main.cjs +181 -0
- package/desktop/preload.cjs +14 -0
- package/desktop/renderer.js +253 -0
- package/package.json +75 -4
- package/src/geometry.js +26 -0
- package/src/host.js +135 -0
- package/src/questions.js +123 -0
- package/src/runtime.js +10 -0
- package/src/settings.js +49 -0
- package/src/state.js +141 -0
- package/web/client.js +197 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 dsh-island contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,144 @@
|
|
|
1
|
-
#
|
|
1
|
+
# DeepSeek Island · 桌面灵动岛
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
DeepSeek Harness 的桌面灵动岛插件:像 iPhone 灵动岛一样停在屏幕边缘,实时显示 Agent 在做什么——思考、回答、执行工具、等你确认;展开后是任务控制台,可以看计划进度和用量、停止任务,并直接回答 Agent 的提问。
|
|
4
|
+
|
|
5
|
+
> 社区插件,非 DeepSeek 官方产品。DeepSeek 名称与鲸鱼标志归其所有者。
|
|
6
|
+
|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
| 任务控制台 | 在灵动岛回答提问 |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
|  |  |
|
|
12
|
+
|
|
13
|
+

|
|
14
|
+
|
|
15
|
+
[动画录屏(mp4)](docs/motion.mp4)
|
|
16
|
+
|
|
17
|
+
## 安装
|
|
18
|
+
|
|
19
|
+
需要 **DeepSeek Harness 桌面版 0.2.1-rc.3**(Windows)。
|
|
20
|
+
|
|
21
|
+
- **在 Harness 里安装**:侧栏「插件」→「添加插件」,输入 `dsh-island`,安装后启用。
|
|
22
|
+
- **命令行**:先从托盘退出 Harness,再运行 `dsh plugin --profile desktop add dsh-island`。
|
|
23
|
+
- **从源码**:克隆本仓库,双击 **安装到 Harness.cmd**。
|
|
24
|
+
|
|
25
|
+
装好后,位置、大小等选项在 Harness 的「设置 › 灵动岛」中调整。
|
|
26
|
+
|
|
27
|
+
## 形态
|
|
28
|
+
|
|
29
|
+
| 形态 | 尺寸(适中) | 何时出现 |
|
|
30
|
+
| --- | --- | --- |
|
|
31
|
+
| 待机 | 118 × 32 | 没有任务:只有鲸鱼和一颗呼吸的蓝点 |
|
|
32
|
+
| 紧凑 | 212 × 36 | 任务进行中:鲸鱼 · 状态文字 · 动态指示器,多任务时显示数量 |
|
|
33
|
+
| 弹出 | 312 × 66 | 新任务开始、等待确认、完成、异常时自动弹出几秒;鼠标悬停也会弹出,显示任务标题 |
|
|
34
|
+
| 展开 | 344 × 自适应 | 点击:任务详情、计时、停靠位置、大小、动效 |
|
|
35
|
+
| 竖向 | 32 × 78 / 36 × 104 | 停靠在左侧或右侧居中时变为竖条,悬停或提醒时横向舒展 |
|
|
36
|
+
|
|
37
|
+
尺寸、圆角、鲸鱼和指示器的位置都随形态一起用带轻微回弹的弹簧曲线过渡;状态切换时文字和图标做模糊交叉淡入。
|
|
38
|
+
|
|
39
|
+
## 使用
|
|
40
|
+
|
|
41
|
+
- 单击胶囊展开任务控制台,再次单击或按 Esc 收起;鼠标离开 6 秒后自动收起。
|
|
42
|
+
- “打开 Harness”回到主窗口;确认和问题仍在 Harness 中处理。
|
|
43
|
+
- “隐藏”只隐藏灵动岛,点系统托盘的蓝色鲸鱼可重新显示;右键托盘可选显示器或退出。
|
|
44
|
+
- 透明区域不拦截鼠标;窗口置顶但出现时不抢输入焦点。
|
|
45
|
+
|
|
46
|
+
## 任务控制台(展开面板)
|
|
47
|
+
|
|
48
|
+
| 什么时候 | 显示什么 |
|
|
49
|
+
| --- | --- |
|
|
50
|
+
| 有任务进行中 | 任务标题与计时;Agent 计划的进度条(如 4/7)和当前步骤;最近几步工具(读取文件、编辑、终端…);模型、上下文大小、缓存命中率、工具次数、输出 tokens;其他同时进行的任务;**停止任务**按钮 |
|
|
51
|
+
| 刚结束 | 结果、最终计划进度、本次用量,以及最近几个任务 |
|
|
52
|
+
| 空闲 | 今天完成的任务数、工作时长、DeepSeek 账户余额(未登录账号时显示今日 tokens);过去 24 小时每小时的 token 柱状图与缓存命中率;最近几个任务(结果、时长、多久以前) |
|
|
53
|
+
|
|
54
|
+
**停止任务**要点两次(第一次变红确认),效果与 Harness 里的停止按钮相同,只对顶层任务生效;子智能体不会单独列为任务,除非它在等你确认或出错。完成记录保存在 `%USERPROFILE%\.dsh\dsh-island\history.json`,只含标题、结果、时长、工具次数和 token 数,保留 7 天。
|
|
55
|
+
|
|
56
|
+
账户余额通过 Harness 自己的账户服务读取(与「设置 › 账户」相同),只在用 DeepSeek 账号登录时可用;灵动岛看不到任何令牌或 API Key。打开面板时最多每分钟刷新一次,另外每 10 分钟刷新一次。
|
|
57
|
+
|
|
58
|
+
## 在灵动岛回答提问
|
|
59
|
+
|
|
60
|
+
Agent 用 `ask_user_question` 提问时,灵动岛自动展开提问卡:单选、多选、自己输入、跳过都可以,多个问题逐个回答后一次提交。Harness 窗口里的提问卡照常可用,**哪边先答用哪边**;灵动岛先答时,Harness 里的那张卡会随之关闭。没有打开 Harness 窗口时,灵动岛就是回答入口。问题超时后转为“继续”状态,仍可在灵动岛回答,回答作为一条回复送回 Agent,与 Harness 的处理方式相同。
|
|
61
|
+
|
|
62
|
+
计划审阅(plan mode)和带长说明的问题需要看全文,仍在 Harness 中回答。可在设置中关闭「在灵动岛回答提问」。
|
|
63
|
+
|
|
64
|
+
## 在 Harness 中设置
|
|
65
|
+
|
|
66
|
+
位置、大小等选项在 Harness 的 **设置 › 灵动岛** 中,修改后立即生效,无需重启:
|
|
67
|
+
|
|
68
|
+
| 选项 | 说明 |
|
|
69
|
+
| --- | --- |
|
|
70
|
+
| 停靠位置 | 在示意屏幕上点选:左上、顶部居中、右上、左侧居中、右侧居中、底部居中 |
|
|
71
|
+
| 显示灵动岛 | 关闭即隐藏;打开时会重新显示 |
|
|
72
|
+
| 大小 | 小巧、适中、舒展 |
|
|
73
|
+
| 弹出提醒 | 任务开始、完成、需要确认或出错时短暂放大 |
|
|
74
|
+
| 显示任务内容 | 关闭后不显示任务标题、计划内容和工具名,只显示状态 |
|
|
75
|
+
| 在灵动岛回答提问 | Agent 提问时自动展开提问卡,可直接回答 |
|
|
76
|
+
| 显示账户余额 | 空闲时显示 DeepSeek 账户余额 |
|
|
77
|
+
| 减少动态效果 | 关闭循环动画和弹性过渡(也跟随系统设置) |
|
|
78
|
+
|
|
79
|
+
这些选项保存在 Harness 的 desktop profile 配置中(插件条目 `dsh-island`)。显示器选择和“隐藏”状态仍由托盘菜单在本地保存。
|
|
80
|
+
|
|
81
|
+
## 状态与动效
|
|
82
|
+
|
|
83
|
+
| 状态 | 主色 | 动效 |
|
|
84
|
+
| --- | --- | --- |
|
|
85
|
+
| 随时待命 | 品牌蓝 | 鲸鱼缓慢漂浮,蓝点呼吸 |
|
|
86
|
+
| 正在思考 | 靛蓝 | 三颗光点彗尾追逐;文字流光;底边光带滑过;鲸鱼游动 |
|
|
87
|
+
| 正在回答 | 亮蓝 | 五条节奏各异的声波 |
|
|
88
|
+
| 正在执行 | 蓝紫 | 伸缩弧环旋转、内核跳动;显示工具名 |
|
|
89
|
+
| 等待你确认 | 琥珀 | 双层涟漪扩散,外圈光晕呼吸,鲸鱼轻轻探头;有提问时显示“有问题等你回答”并展开提问卡 |
|
|
90
|
+
| 已完成 | 绿 | 圆盘弹出、对勾描画,鲸鱼跃起并喷出水花,胶囊轻弹 |
|
|
91
|
+
| 已暂停 | 灰 | 双竖线依次落定 |
|
|
92
|
+
| 需要留意 | 柔红 | 圆标弹出,整个胶囊左右轻摇(像输错密码) |
|
|
93
|
+
| 正在重试 | 琥珀 | 两颗光点交换位置 |
|
|
94
|
+
| 整理上下文 | 紫 | 三层线条收拢再展开 |
|
|
95
|
+
| 连接已断开 | 灰 | 斜杠圆,鲸鱼褪色 |
|
|
96
|
+
|
|
97
|
+
竖向停靠时,中间细脊会有光点自上而下流过。支持系统“减少动态效果”和插件自己的动效开关(打开后所有动画立即停止)。完成、暂停约 6.5 秒后收回待机;错误提醒显示 15 秒。多任务时优先显示待确认和异常,其次是进行中的任务。
|
|
98
|
+
|
|
99
|
+
## 从源码安装与卸载
|
|
100
|
+
|
|
101
|
+
适配并检查的版本:**DeepSeek Harness Desktop 0.2.1-rc.3 / Windows**。
|
|
102
|
+
|
|
103
|
+
双击项目里的 **安装到 Harness.cmd** 即可(会先询问是否关闭 Harness,装完自动重新打开;会在常见安装位置和正在运行的 Harness 中查找 `dsh.cmd`)。也可以先从托盘退出 Harness,然后运行:
|
|
104
|
+
|
|
105
|
+
```powershell
|
|
106
|
+
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/install-desktop.ps1
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
重新打开 Harness 即显示。卸载:
|
|
110
|
+
|
|
111
|
+
```powershell
|
|
112
|
+
powershell -NoProfile -ExecutionPolicy Bypass -File scripts/install-desktop.ps1 -Action Remove
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
安装由官方 `dsh plugin --profile desktop add` 完成。本插件不修改悬浮球插件或宿主安装目录,不增加开机自启。设置保存在 `%USERPROFILE%\.dsh\dsh-island\settings.json`。退出 Harness 或停用插件后,窗口随宿主关闭。
|
|
116
|
+
|
|
117
|
+
运行环境复用当前机器已有的 `%USERPROFILE%\.dsh\dsh-orb\electron-runtime\electron.exe`。它不是独立安装包:在其他机器上需要已有 Electron,或使用环境变量 `DSH_ISLAND_ELECTRON` 指定其路径。安装归档不含 Electron,不会自动下载运行环境。可用 `DSH_HOME` 指定 Harness 数据根目录。
|
|
118
|
+
|
|
119
|
+
## 动画预览
|
|
120
|
+
|
|
121
|
+
```powershell
|
|
122
|
+
npm run preview
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
预览窗口每 4.5 秒循环一个状态,面板里是标明“示例数据”的演示内容;展开后可手动切换,位置和大小在托盘菜单里调。也可双击项目里的“打开动画预览.cmd”。它明确标注“预览模式”,不代表真实任务。预览设置与正式插件分开保存在项目 `.preview` 目录。
|
|
126
|
+
|
|
127
|
+
## 开发与验证
|
|
128
|
+
|
|
129
|
+
代码无需打包器和运行时 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` 时把新设置转发给窗口;`web/client.js` 是 Harness 设置页的浏览器半侧(通过 `dsh.client` 声明加载)。传给灵动岛的只有状态、任务标题、Agent 计划条目、工具名、模型名、token 数、账户余额,以及等你回答的问题和选项;不会读取密钥,也不传递对话、回复、思考正文或工具参数。没有新增 HTTP 监听端口。加载时接管正在运行任务的概括状态,之后使用实时事件细分;不重放历史对话。
|
|
130
|
+
|
|
131
|
+
```powershell
|
|
132
|
+
npm test
|
|
133
|
+
npm run test:host
|
|
134
|
+
npm run test:desktop
|
|
135
|
+
npm run pack:plugin
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
桌面交互检查使用 Playwright,先运行 `npm install` 安装开发依赖;也可设置 `DSH_TEST_DEPS` 为已有的 Playwright 所在 `node_modules`。`DSH_HOST_EXECUTABLE` / `DSH_HOST_PACKAGE` 可指定另一处 Harness 安装以检查版本兼容。更换宿主版本时应先重新验证契约,不应绕过兼容门禁。
|
|
139
|
+
|
|
140
|
+
真实模型任务、网络重试和确认流程的完整现场验收与合成事件测试不同;具体已验证范围见 `VALIDATION.md`。
|
|
141
|
+
|
|
142
|
+
## 致谢
|
|
143
|
+
|
|
144
|
+
面板中的余额、24 小时 token 柱状图、缓存命中率和在灵动岛回答提问参考了 [Agent HUD](https://github.com/jazzenchen/agent-hud-native-open)(Apache-2.0)的设计思路;本项目未使用其代码。
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
`assets/deepseek.svg` is the unmodified whale favicon shipped with DeepSeek Harness 0.2.1-rc.3 (`@deepseek-ai/dsh-web-frontend/dist/favicon.svg`). The DeepSeek name and mark belong to their respective owners. This is a community plugin and is not presented as an official DeepSeek product.
|
|
4
|
+
|
|
5
|
+
Harness source: https://github.com/deepseek-ai/deepseek-harness
|
|
6
|
+
|
|
7
|
+
Desktop window APIs follow Electron's documentation: https://www.electronjs.org/docs/latest/api/browser-window
|
|
8
|
+
|
|
9
|
+
The plugin reuses an existing Electron runtime and does not redistribute it.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="50.000000" height="50.000000" viewBox="0 0 50 50" fill="none">
|
|
2
|
+
<path id="path" d="M48.8354 10.0479C48.3232 9.79199 48.1025 10.2798 47.8032 10.5278C47.7007 10.6079 47.6143 10.7119 47.5273 10.8076C46.7793 11.624 45.9048 12.1597 44.7622 12.0957C43.0923 12 41.666 12.5356 40.4058 13.8398C40.1377 12.2319 39.2476 11.272 37.8926 10.6558C37.1836 10.3359 36.4668 10.0156 35.9702 9.31982C35.6235 8.82373 35.5293 8.27197 35.356 7.72754C35.2456 7.3999 35.1353 7.06396 34.7651 7.00781C34.3633 6.94385 34.2056 7.2876 34.0479 7.57568C33.418 8.75195 33.1733 10.0479 33.1973 11.3599C33.2524 14.312 34.4736 16.6641 36.8999 18.3359C37.1758 18.5278 37.2466 18.7197 37.1597 19C36.9946 19.5757 36.7974 20.1357 36.624 20.7119C36.5137 21.0801 36.3486 21.1597 35.9624 21C34.6309 20.4321 33.481 19.5918 32.4644 18.5757C30.7393 16.8721 29.1792 14.9917 27.2334 13.52C26.7764 13.1758 26.3193 12.856 25.8467 12.5518C23.8618 10.584 26.1069 8.96777 26.627 8.77588C27.1704 8.57568 26.8159 7.8877 25.0591 7.896C23.3022 7.90381 21.6953 8.50391 19.647 9.30371C19.3477 9.42383 19.0322 9.51172 18.7095 9.58398C16.8501 9.22363 14.9199 9.14355 12.9033 9.37598C9.10596 9.80762 6.07275 11.6396 3.84326 14.7681C1.16455 18.5278 0.53418 22.7998 1.30664 27.2559C2.11768 31.9521 4.46582 35.8398 8.07373 38.8799C11.8159 42.0322 16.1255 43.5762 21.041 43.2803C24.0269 43.104 27.3516 42.6963 31.1016 39.4561C32.0469 39.936 33.0396 40.1279 34.686 40.272C35.9546 40.3921 37.1758 40.208 38.1211 40.0078C39.6021 39.688 39.4995 38.2881 38.9639 38.0322C34.623 35.9678 35.5762 36.8081 34.71 36.1279C36.9155 33.4639 40.2402 30.6958 41.54 21.728C41.6426 21.0161 41.5557 20.5679 41.54 19.9917C41.5322 19.6396 41.6108 19.5039 42.0049 19.4639C43.0923 19.3359 44.1479 19.0317 45.1167 18.4878C47.9292 16.9199 49.064 14.3438 49.3315 11.2559C49.3711 10.7837 49.3237 10.2959 48.8354 10.0479ZM24.3262 37.8398C20.1196 34.4639 18.0791 33.3521 17.2358 33.3999C16.4482 33.4482 16.5898 34.3682 16.7632 34.9678C16.9443 35.5601 17.1812 35.9683 17.5117 36.4878C17.7402 36.832 17.8979 37.3442 17.2832 37.728C15.9282 38.584 13.5728 37.4399 13.4624 37.3838C10.7207 35.7358 8.42822 33.5601 6.81348 30.584C5.25342 27.7197 4.34766 24.6479 4.19775 21.3677C4.1582 20.5757 4.38672 20.2959 5.15869 20.1519C6.17529 19.96 7.22314 19.9199 8.23926 20.0718C12.5327 20.7119 16.1885 22.6719 19.2529 25.7759C21.002 27.5439 22.3252 29.6558 23.6885 31.7202C25.1377 33.9121 26.6978 36 28.6831 37.7119C29.3843 38.312 29.9434 38.7681 30.479 39.104C28.8643 39.2881 26.1699 39.3281 24.3262 37.8398ZM26.3433 24.6001C26.3433 24.248 26.6191 23.9678 26.9658 23.9678C27.0444 23.9678 27.1152 23.9839 27.1782 24.0078C27.2651 24.04 27.3438 24.0879 27.4067 24.1602C27.5171 24.272 27.5801 24.4321 27.5801 24.6001C27.5801 24.9521 27.3042 25.2319 26.9575 25.2319C26.6108 25.2319 26.3433 24.9521 26.3433 24.6001ZM32.6064 27.8799C32.2046 28.0479 31.8027 28.1919 31.4165 28.208C30.8179 28.2397 30.1641 27.9922 29.8096 27.688C29.2583 27.2158 28.8643 26.9521 28.6987 26.1279C28.6279 25.7759 28.6675 25.2319 28.7305 24.9199C28.8721 24.248 28.7144 23.8159 28.2495 23.4238C27.8716 23.104 27.3911 23.0161 26.8633 23.0161C26.666 23.0161 26.4849 22.9277 26.3511 22.856C26.1304 22.7441 25.9492 22.4639 26.1226 22.1201C26.1777 22.0078 26.4458 21.7358 26.5088 21.688C27.2256 21.272 28.0527 21.4077 28.8169 21.7197C29.5259 22.0161 30.0615 22.5601 30.834 23.3281C31.6216 24.2559 31.7632 24.5117 32.2124 25.208C32.5669 25.752 32.8901 26.312 33.1104 26.9521C33.2446 27.3521 33.0713 27.6802 32.6064 27.8799Z" fill="#000" fill-opacity="1.000000" fill-rule="nonzero"/>
|
|
3
|
+
</svg>
|
package/cordis.patch.yml
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="zh-CN">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
|
5
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'none'; object-src 'none'; base-uri 'none'">
|
|
6
|
+
<title>DeepSeek 灵动岛</title><link rel="stylesheet" href="island.css">
|
|
7
|
+
</head>
|
|
8
|
+
<body data-position="top-center" data-motion="full">
|
|
9
|
+
<div id="stage" class="stage">
|
|
10
|
+
<main id="island" class="island" data-state="idle" data-shape="idle" data-layout="h" data-expanded="false">
|
|
11
|
+
<div class="surface">
|
|
12
|
+
<button id="capsule" class="capsule" aria-label="展开 DeepSeek 灵动岛" aria-expanded="false" aria-controls="panel">
|
|
13
|
+
<span class="lead" aria-hidden="true">
|
|
14
|
+
<span class="whale"></span>
|
|
15
|
+
<span class="spout"><i></i><i></i><i></i></span>
|
|
16
|
+
</span>
|
|
17
|
+
<span id="copy" class="copy">
|
|
18
|
+
<span id="status-label" class="label">随时待命</span>
|
|
19
|
+
<span id="mini-note" class="sub">DeepSeek Harness</span>
|
|
20
|
+
</span>
|
|
21
|
+
<span id="badge" class="badge" hidden></span>
|
|
22
|
+
<span id="indicator" class="indicator" aria-hidden="true">
|
|
23
|
+
<span class="ind ind-idle"><i></i></span>
|
|
24
|
+
<span class="ind ind-thinking"><i></i><i></i><i></i></span>
|
|
25
|
+
<span class="ind ind-streaming"><i></i><i></i><i></i><i></i><i></i></span>
|
|
26
|
+
<svg class="ind ind-tools" viewBox="0 0 24 24"><circle class="track" cx="12" cy="12" r="8.5"/><circle class="arc" cx="12" cy="12" r="8.5"/><circle class="core" cx="12" cy="12" r="2.2"/></svg>
|
|
27
|
+
<span class="ind ind-waiting"><i></i><i></i><b></b></span>
|
|
28
|
+
<svg class="ind ind-completed" viewBox="0 0 24 24"><circle class="disc" cx="12" cy="12" r="10"/><path class="tick" d="M7.4 12.4l3.1 3.1 6.1-6.4"/></svg>
|
|
29
|
+
<span class="ind ind-paused"><i></i><i></i></span>
|
|
30
|
+
<svg class="ind ind-error" viewBox="0 0 24 24"><circle class="disc" cx="12" cy="12" r="10"/><path class="bang" d="M12 7.2v6"/><circle class="dot" cx="12" cy="16.7" r="1.15"/></svg>
|
|
31
|
+
<span class="ind ind-reconnecting"><i></i><i></i></span>
|
|
32
|
+
<span class="ind ind-compacting"><i></i><i></i><i></i></span>
|
|
33
|
+
<svg class="ind ind-offline" viewBox="0 0 24 24"><circle cx="12" cy="12" r="7"/><path d="M7 17 17 7"/></svg>
|
|
34
|
+
</span>
|
|
35
|
+
</button>
|
|
36
|
+
|
|
37
|
+
<section id="panel" class="panel" inert aria-label="任务详情">
|
|
38
|
+
<form id="ask" class="card ask" hidden autocomplete="off">
|
|
39
|
+
<div class="ask-top"><span class="ask-dot" aria-hidden="true"></span><span id="ask-title">Agent 在问你</span><span id="ask-step" class="num"></span></div>
|
|
40
|
+
<p id="ask-question" class="ask-q"></p>
|
|
41
|
+
<div id="ask-options" class="ask-options" role="group"></div>
|
|
42
|
+
<input id="ask-custom" class="ask-custom" type="text" maxlength="2000" placeholder="或者输入你自己的回答…" aria-label="自定义回答">
|
|
43
|
+
<div class="ask-actions"><span id="ask-status" class="ask-status" role="status"></span><button id="ask-skip" type="button" class="ask-skip">跳过</button><button id="ask-next" type="submit" class="ask-next">提交</button></div>
|
|
44
|
+
</form>
|
|
45
|
+
<div id="task" class="card task">
|
|
46
|
+
<div class="task-top"><span id="session-title">DeepSeek Harness</span><time id="elapsed"></time></div>
|
|
47
|
+
<p id="status-detail">开始一个任务,让想法继续。</p>
|
|
48
|
+
<div id="plan" class="plan" hidden>
|
|
49
|
+
<div class="plan-head"><span>计划</span><span id="plan-count" class="num"></span></div>
|
|
50
|
+
<div class="bar" aria-hidden="true"><i id="plan-bar"></i></div>
|
|
51
|
+
<div id="plan-current" class="plan-current"></div>
|
|
52
|
+
</div>
|
|
53
|
+
<div id="trail" class="trail" aria-label="最近的步骤" hidden></div>
|
|
54
|
+
<div id="meta" class="meta"></div>
|
|
55
|
+
<span id="activity-note" class="activity-note"></span>
|
|
56
|
+
</div>
|
|
57
|
+
|
|
58
|
+
<div id="others" class="group" hidden>
|
|
59
|
+
<div class="group-head">其他任务</div>
|
|
60
|
+
<ul id="other-list" class="rows"></ul>
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
<div id="today" class="today" hidden>
|
|
64
|
+
<div class="tile"><strong id="today-count" class="num">0</strong><span>今天完成</span></div>
|
|
65
|
+
<div class="tile"><strong id="today-time" class="num">0 分钟</strong><span>工作时长</span></div>
|
|
66
|
+
<div id="third-tile" class="tile"><strong id="third-value" class="num">0</strong><span id="third-label">今日 tokens</span></div>
|
|
67
|
+
</div>
|
|
68
|
+
|
|
69
|
+
<div id="usage" class="card usage" hidden>
|
|
70
|
+
<div class="usage-head"><span>过去 24 小时</span><span id="usage-sum" class="num"></span></div>
|
|
71
|
+
<div id="usage-bars" class="usage-bars" aria-hidden="true"></div>
|
|
72
|
+
<div class="usage-axis"><span>24 小时前</span><span>现在</span></div>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<div id="recent" class="group" hidden>
|
|
76
|
+
<div class="group-head">最近任务</div>
|
|
77
|
+
<ul id="recent-list" class="rows"></ul>
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
<p id="hint" class="hint" hidden>位置、大小和提醒方式可在 Harness 的「设置 › 灵动岛」中调整。</p>
|
|
81
|
+
|
|
82
|
+
<div class="footer">
|
|
83
|
+
<button id="stop" class="stop" hidden><span class="stop-glyph" aria-hidden="true"></span><span id="stop-label">停止任务</span></button>
|
|
84
|
+
<button id="open-harness" class="open-harness">打开 Harness <span aria-hidden="true">↗</span></button>
|
|
85
|
+
<button id="more" class="icon-button" aria-label="更多" title="显示器、隐藏、退出">···</button>
|
|
86
|
+
<button id="hide" class="hide" title="可从系统托盘重新显示">隐藏</button>
|
|
87
|
+
</div>
|
|
88
|
+
<div id="demo-controls" class="demo-controls" hidden><label>动画预览<select id="demo-state" aria-label="预览状态"></select></label></div>
|
|
89
|
+
</section>
|
|
90
|
+
|
|
91
|
+
<div class="edge-light" aria-hidden="true"></div>
|
|
92
|
+
</div>
|
|
93
|
+
</main>
|
|
94
|
+
</div>
|
|
95
|
+
<div id="announcement" class="sr-only" role="status" aria-live="polite"></div>
|
|
96
|
+
<script type="module" src="renderer.js"></script>
|
|
97
|
+
</body></html>
|