@konnga/dsh-hud 0.7.1 → 0.8.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/README.md +77 -59
- package/docs/images/capsules.webp +0 -0
- package/docs/images/panel.webp +0 -0
- package/lib/client.js +536 -249
- package/lib/index.js +272 -4
- package/package.json +14 -4
package/README.md
CHANGED
|
@@ -1,107 +1,125 @@
|
|
|
1
1
|
# dsh-hud
|
|
2
2
|
|
|
3
|
-
>
|
|
4
|
-
> A read-only workspace Git panel for DeepSeek Harness
|
|
3
|
+
> 一个只读的工作区 Git 面板:分支、ahead/behind、改动清单与差异,外加「这个会话改过哪些文件、审到哪了、跑了什么工具」。
|
|
4
|
+
> A read-only workspace Git panel for DeepSeek Harness, with per-session change attribution.
|
|
5
|
+
|
|
6
|
+

|
|
7
|
+
|
|
8
|
+
*左:工作区名 · `git:(分支*)` · ahead/behind · 改动计数 · 本会话改过几个文件。右:每个工具的调用次数、正在跑什么、以及会话调用过哪些技能 —— 图中 `aihot ×1` 是红的,因为那次调用失败了。*
|
|
5
9
|
|
|
6
10
|
## 安装
|
|
7
11
|
|
|
8
|
-
|
|
12
|
+
桌面端「设置 → 插件 → 添加插件」里填 `@konnga/dsh-hud`。
|
|
9
13
|
|
|
10
|
-
本地开发时把 profile
|
|
14
|
+
本地开发时把 profile 的依赖指向仓库(改动即时可见;客户端代码要重启应用才重读):
|
|
11
15
|
|
|
12
16
|
```json
|
|
13
17
|
"@konnga/dsh-hud": "link:/path/to/dsh-hud"
|
|
14
18
|
```
|
|
15
19
|
|
|
16
|
-
##
|
|
20
|
+
## 你会看到什么
|
|
21
|
+
|
|
22
|
+
### 胶囊(输入框上方)
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
dsh-hud · git:(main*) ↑1 ↓2 M4 A1 ?1 │ ●3
|
|
26
|
+
```
|
|
17
27
|
|
|
18
|
-
|
|
28
|
+
- `dsh-hud` —— 工作区名(当前会话的目录名)。太长从中间省略,完整路径看悬停。
|
|
29
|
+
- `git:(main*)` —— 分支。`*` 表示工作区不干净;detached 时是 `git:(detached abc1234)`。
|
|
30
|
+
- `↑1 ↓2` —— 与上游的领先 / 落后(为 0 不显示)。
|
|
31
|
+
- `M4 A1 ?1` —— 改动计数,只列非零项:`M` 修改 · `A` 新增 · `D` 删除 · `R` 重命名 · `C` 复制 · `T` 类型改变 · `?` 未跟踪 · `!` 冲突。
|
|
32
|
+
- `●3` —— 本会话改过 3 个文件(没有就不显示)。
|
|
33
|
+
|
|
34
|
+
点它开面板;悬停给出完整路径、上游与各类计数。**不在 git 仓库里也会显示**(只有工作区名 + `git:(非 git 仓库)`)。
|
|
35
|
+
|
|
36
|
+
### 工具胶囊(同一行的右边,只在跑过工具后出现)
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
◐ bash: pnpm test 1.2s ← 正在跑(秒数实时跳)
|
|
40
|
+
✓ bash ×16 │ ✓ apply_patch ×6 │ skills: office-xlsx ×2 +2 ← 空闲
|
|
41
|
+
```
|
|
19
42
|
|
|
20
|
-
|
|
43
|
+
- 每个工具一个计数;前面的 `✓` / `✗` 是**它自己最近一次调用**的结果。
|
|
44
|
+
- `skills:` 后面是会话调用过的**技能名**(不是"技能调了几次"—— 看得出是哪一个)。
|
|
45
|
+
- 最多铺 3 个工具、2 个技能,其余收成 `+k`;悬停里有完整清单与最近几条的执行结果。
|
|
21
46
|
|
|
22
|
-
|
|
23
|
-
- `*` 工作区不干净;`↑n` / `↓n` 与上游的领先 / 落后(为 0 不显示)。
|
|
24
|
-
- 简写符只列非零项:`M` 已修改 · `A` 已暂存新增 · `D` 已删除 · `R` 重命名 · `C` 复制 · `T` 类型改变 · `?` 未跟踪 · `!` 冲突。
|
|
25
|
-
- `│ ●n` 表示本会话改过 n 个文件(没有就不显示)。
|
|
26
|
-
- 点胶囊开面板;悬停给出工作区路径、上游与各类计数。
|
|
47
|
+
### 面板(点胶囊打开)
|
|
27
48
|
|
|
28
|
-
|
|
49
|
+

|
|
29
50
|
|
|
30
|
-
|
|
51
|
+
*上图是「看某次提交」时的样子:左边是面板本身,中间是这次提交改了哪个文件,右边是差异。标题栏可拖动,`⟳` 刷新 · `⌖` 复位位置 · `✕` 收起。*
|
|
31
52
|
|
|
32
|
-
1. **仓库路径 · 上游 · 短 oid
|
|
33
|
-
2.
|
|
34
|
-
3.
|
|
35
|
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
5. **最近提交**:`短sha 标题 [HEAD] 相对时间`;点一行打开这次提交的明细,再点一次收起。
|
|
53
|
+
1. **仓库路径 · 上游 · 短 oid**
|
|
54
|
+
2. **改动概览** —— 按类型分组的彩色计数;干净时写「工作区干净」。
|
|
55
|
+
3. **本会话改了哪些** —— 一行计数(`本会话改过 3 个文件 · 另有 2 个可能相关 · 1 个已不在 git 现状里`)加开关:`只看本会话改的`、`只看最近一轮`(拿得到回合信息时才出现);有已审标记时还有 `已审 3/8` 与 `清空已审`。
|
|
56
|
+
4. **改动清单** —— 每行 `标记 状态字母 路径`,重命名读作 `旧 → 新`。
|
|
57
|
+
- 行首:`●` 确定改过 · `◐` 可能相关(从命令里看出来的,悬停给出那条命令)· `○` 与本会话无关。
|
|
58
|
+
- 行尾:`○` / `✓` 是审阅标记 —— 点一下或按 `v` 切换;`✓` 变黄表示改动又变了,需要重看。
|
|
59
|
+
- 点任意一行看这个文件的差异。
|
|
60
|
+
5. **最近提交** —— `短sha 标题 [HEAD] 2026-10-16 14:18`;点一行看这次提交,再点一次收起。
|
|
61
|
+
6. **标签** —— `tag 名 短sha [HEAD] 时间`,新的在前;点一行看它指向的提交。仓库没有标签时会写一行「这个仓库还没有标签」。
|
|
62
|
+
|
|
63
|
+
时间一律是**完整年月日 + 时分**(本地时区),提交与标签两处一样。
|
|
44
64
|
|
|
45
65
|
### 差异与提交明细
|
|
46
66
|
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
67
|
+
- **看差异**:两栏 —— 左边还是面板,右边是差异。工具栏有 `未暂存` / `已暂存` 页签、`自动换行`、`复制差异`。点 hunk 头可折叠那一段。
|
|
68
|
+
- **看提交**:三栏 —— 面板 │ 这次提交 │ 差异,并自动打开这次提交的第一个文件。`Esc` 或 `✕` 收起。
|
|
69
|
+
- **两条抓握可以拖**:右边缘那条调差异栏宽度(默认 470px);提交明细栏右边那条调提交明细栏(默认 240px)—— 路径被截断就往左拖。两条宽度都会记住。
|
|
50
70
|
|
|
51
|
-
###
|
|
71
|
+
### 侧栏会话行(悬停或点行尾 `⋯`)
|
|
52
72
|
|
|
53
|
-
|
|
73
|
+
侧栏那一行本身没有标记;信息在按需展开处,都是文字:
|
|
54
74
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
75
|
+
```
|
|
76
|
+
main* ↑0 ↓0 · 已修改 7 未跟踪 2
|
|
77
|
+
本会话改过 3 个文件 · 命令旁听到 4 个可能改动的路径(1 个现在有差异)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
干净时写明「工作区干净」「本会话没有改动记录」。
|
|
58
81
|
|
|
59
82
|
## 键盘
|
|
60
83
|
|
|
61
|
-
**先在面板里点一下**(或 Tab
|
|
84
|
+
**先在面板里点一下**(或 Tab 进去)才接管按键;点到面板外就交还。Cmd/Ctrl/Alt 组合键与输入框里的按键一律不碰。
|
|
62
85
|
|
|
63
86
|
| 键 | 作用 |
|
|
64
87
|
| --- | --- |
|
|
65
|
-
| `↑`
|
|
88
|
+
| `↑` `↓` | 上下移动选中行(只移动,不打开) |
|
|
66
89
|
| `Enter` | 打开选中的那条 |
|
|
67
|
-
| `[`
|
|
68
|
-
| `n`
|
|
90
|
+
| `[` `]` | 上一个 / 下一个文件,并直接打开 |
|
|
91
|
+
| `n` `p` | 下一个 / 上一个 hunk(折叠着的会展开) |
|
|
69
92
|
| `Space` | 折叠 / 展开当前 hunk |
|
|
70
93
|
| `v` | 把当前行标成「这一版我审过了」(再按取消) |
|
|
71
94
|
| `r` | 重新读取 |
|
|
72
95
|
| `Esc` | 退一层:先收右栏(差异 / 提交明细),再按才收面板 |
|
|
73
96
|
|
|
74
|
-
|
|
97
|
+
看提交明细时,`↑ ↓ Enter [ ]` 作用于明细那一栏的清单。
|
|
98
|
+
|
|
99
|
+
## 它不做什么
|
|
100
|
+
|
|
101
|
+
- **只读**:不写 index、不动工作区与 git 配置,不执行 `add` / `commit` / `checkout` / `fetch`;不读文件内容,不显示凭证。
|
|
102
|
+
- **归因是两档估计**:经写文件 / 编辑工具的算「确定改过」;从 shell 命令里认出来的算「可能相关」(`>` `>>` `tee`、`sed -i` / `perl -i`、`mv` / `cp` / `rm` / `touch` / `dd of=`、`git checkout|restore <路径>`)。**会漏也会多报**,所以永远标 `◐`,不冒充 `●`;其余命令只记进命令历史,不猜路径。
|
|
103
|
+
- **记录不落盘**:会话改动与工具活动都活在宿主进程里,重启归零;每个会话会写明「自 … 起记录」。
|
|
104
|
+
- **上限**:改动清单 200 条、单会话归因 500 个文件、标签 100 个、最近提交 10 条 —— 超出只计数并标 `truncated`。
|
|
105
|
+
- **审阅签名用 `size + mtimeMs`**:`touch` 一下(内容没变)也会让「已审」失效 —— 宁可让你多看一眼。
|
|
106
|
+
- **计数按文件算**:未跟踪不折叠目录(与编辑器一致);同一个文件「既暂存又改动」算 1 条。
|
|
75
107
|
|
|
76
108
|
## 存在浏览器里的东西
|
|
77
109
|
|
|
78
110
|
| 键 | 内容 |
|
|
79
111
|
| --- | --- |
|
|
80
|
-
| `dsh-hud.ui.v1` |
|
|
81
|
-
| `dsh-hud.reviewed.v1` |
|
|
82
|
-
| `dsh-hud.debug` |
|
|
83
|
-
|
|
84
|
-
## 已知边界
|
|
85
|
-
|
|
86
|
-
- **只读**:不执行 `add` / `commit` / `checkout` / `fetch` 等任何写操作,不碰 index、工作区与 git 配置,不读文件内容、不显示凭证。
|
|
87
|
-
- **归因分两档**:经写文件 / 编辑工具的算「确定改过」;shell 命令里认得出的算「可能相关」(`>` `>>` `tee`、`sed -i` / `perl -i`、`mv` / `cp` / `rm` / `touch` / `dd of=`、`git checkout|restore <path>`)。**会漏也会多报**,所以那一档永远是 `◐`,不冒充 `●`;其余命令只记进命令历史,不猜路径。
|
|
88
|
-
- **不持久化**:记录活在宿主进程里,所以每个会话都带一个「自 … 起记录」的时刻。上限:单会话 500 个文件、32 个会话、命令历史 20 条。
|
|
89
|
-
- **审阅签名**用 `size + mtimeMs`:`touch` 一下(内容没变)也会让「已审」失效 —— 宁可让人多看一眼。
|
|
90
|
-
- **侧栏常亮格受产品限制**:行首只有 16px(所以只能两个字符),产品自己在那一格显示会话状态点时会让位;行尾没有给插件的座位,所以完整信息放在 `⋯` 菜单与悬停卡片里。
|
|
91
|
-
- **性能**:面板轮询 8s、侧栏摘要 12s;git 读取按目录缓存,多个会话共用同一个目录只跑一次。
|
|
112
|
+
| `dsh-hud.ui.v1` | 面板展开状态、拖动位置、两条拖出来的宽度、开关 |
|
|
113
|
+
| `dsh-hud.reviewed.v1` | 「已审」标记(按工作区 + 文件记签名,最多 200 条) |
|
|
114
|
+
| `dsh-hud.debug` | 最近 24 行自诊断 —— 排查「界面没反应」用,可随手删 |
|
|
92
115
|
|
|
93
116
|
## 开发
|
|
94
117
|
|
|
95
|
-
```bash
|
|
96
|
-
npm test # node --test test/*.test.mjs
|
|
97
|
-
node --test test/diff.test.mjs # 单个文件
|
|
98
|
-
```
|
|
99
|
-
|
|
100
118
|
- `lib/index.js`:宿主半(跑 git、提供 `/dsh-hud-rpc`)。
|
|
101
119
|
- `lib/client.js`:浏览器半(**无构建步骤**,手写 JS,只依赖种子模块 `react`)。
|
|
102
|
-
- `test
|
|
103
|
-
- `docs/dock-slot-host.md
|
|
104
|
-
-
|
|
120
|
+
- `npm test`:全部用例(`node --test test/*.test.mjs`)。
|
|
121
|
+
- `docs/dock-slot-host.md`:把输入框上方那一行做成「可注册行内宿主」的提案,给上游看的。
|
|
122
|
+
- **发版**:`npm run tag && npm publish`。`prepublishOnly` 先跑测试,再校验「版本号 ↔ git tag」(工作区要干净、`v<版本>` 要存在且指向 HEAD),对不上就发不出去。
|
|
105
123
|
|
|
106
124
|
## 许可
|
|
107
125
|
|
|
Binary file
|
|
Binary file
|