dsh-github-flow 0.2.1 → 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/README.en.md +234 -130
- package/README.md +217 -112
- package/docs/UPGRADE-NOTES.md +15 -9
- package/docs/architecture.md +120 -108
- package/docs/images/2.png +0 -0
- package/docs/npm-publish-guide.md +12 -1
- package/lib/api/routes-actions.js +117 -0
- package/lib/api/routes-overview.js +198 -3
- package/lib/cache.d.ts +4 -0
- package/lib/cache.js +14 -0
- package/lib/client.d.ts +13 -1
- package/lib/client.js +3162 -2162
- package/lib/executor/git-parser.d.ts +25 -0
- package/lib/executor/git-parser.js +143 -0
- package/lib/executor/platform-guide.d.ts +14 -0
- package/lib/executor/platform-guide.js +40 -0
- package/lib/executor/process-utils.d.ts +51 -0
- package/lib/executor/process-utils.js +162 -0
- package/lib/executor/version-utils.d.ts +12 -0
- package/lib/executor/version-utils.js +27 -0
- package/lib/executor.d.ts +131 -17
- package/lib/executor.js +411 -223
- package/lib/git-watcher.d.ts +36 -0
- package/lib/git-watcher.js +91 -0
- package/lib/main.js +11 -0
- package/lib/renderers/cache.d.ts +8 -0
- package/lib/renderers/cache.js +66 -0
- package/lib/renderers/common.d.ts +24 -0
- package/lib/renderers/common.js +88 -0
- package/lib/renderers/gist.d.ts +15 -0
- package/lib/renderers/gist.js +99 -0
- package/lib/renderers/issue.d.ts +4 -0
- package/lib/renderers/issue.js +70 -0
- package/lib/renderers/label.d.ts +4 -0
- package/lib/renderers/label.js +48 -0
- package/lib/renderers/markdown.d.ts +15 -26
- package/lib/renderers/markdown.js +15 -517
- package/lib/renderers/pr.d.ts +4 -0
- package/lib/renderers/pr.js +107 -0
- package/lib/renderers/release.d.ts +4 -0
- package/lib/renderers/release.js +74 -0
- package/lib/renderers/repo.d.ts +4 -0
- package/lib/renderers/repo.js +149 -0
- package/lib/renderers/ruleset.d.ts +4 -0
- package/lib/renderers/ruleset.js +74 -0
- package/lib/renderers/run.d.ts +4 -0
- package/lib/renderers/run.js +79 -0
- package/lib/renderers/skill.d.ts +4 -0
- package/lib/renderers/skill.js +61 -0
- package/lib/renderers/status.d.ts +23 -0
- package/lib/renderers/status.js +124 -0
- package/lib/tools/cache.d.ts +64 -0
- package/lib/tools/cache.js +186 -0
- package/lib/tools/gist.d.ts +155 -0
- package/lib/tools/gist.js +190 -0
- package/lib/tools/help.js +233 -11
- package/lib/tools/image-utils.d.ts +8 -0
- package/lib/tools/image-utils.js +34 -0
- package/lib/tools/issue.d.ts +17 -1
- package/lib/tools/issue.js +114 -8
- package/lib/tools/label.d.ts +80 -0
- package/lib/tools/label.js +237 -0
- package/lib/tools/pr.d.ts +12 -0
- package/lib/tools/pr.js +96 -4
- package/lib/tools/repo.d.ts +8 -0
- package/lib/tools/repo.js +127 -3
- package/lib/tools/ruleset.d.ts +80 -0
- package/lib/tools/ruleset.js +177 -0
- package/lib/tools/run.d.ts +8 -0
- package/lib/tools/run.js +104 -3
- package/lib/tools/secret.d.ts +5 -0
- package/lib/tools/secret.js +108 -23
- package/lib/tools/status.d.ts +39 -0
- package/lib/tools/status.js +53 -0
- package/lib/types.d.ts +112 -0
- package/lib/ui/auth-guide-card.d.ts +4 -0
- package/lib/ui/auth-guide-card.js +161 -0
- package/lib/ui/branch-selector.d.ts +10 -0
- package/lib/ui/branch-selector.js +163 -0
- package/lib/ui/commit-modal.d.ts +8 -0
- package/lib/ui/commit-modal.js +89 -0
- package/lib/ui/icons.d.ts +7 -0
- package/lib/ui/icons.js +53 -0
- package/lib/ui/network-banner.d.ts +10 -0
- package/lib/ui/network-banner.js +54 -0
- package/lib/ui/storage.d.ts +26 -0
- package/lib/ui/storage.js +134 -0
- package/lib/ui/styles.d.ts +6 -0
- package/lib/ui/styles.js +1285 -0
- package/lib/ui/sync-settings-modal.d.ts +11 -0
- package/lib/ui/sync-settings-modal.js +350 -0
- package/lib/ui/sync-status-badge.d.ts +8 -0
- package/lib/ui/sync-status-badge.js +64 -0
- package/lib/ui/upgrade-card.d.ts +7 -0
- package/lib/ui/upgrade-card.js +197 -0
- package/lib/ui/utils.d.ts +10 -0
- package/lib/ui/utils.js +66 -0
- package/lib/ui/workspace-panel.d.ts +4 -0
- package/lib/ui/workspace-panel.js +464 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
12
12
|
<b>让 DeepSeek Harness Agent 拥有操作 GitHub 的原生手和脚,为人机协作打造沉浸式 GitHub 工作台。</b><br>
|
|
13
|
-
原生复用宿主机 <code>gh</code> CLI 安全登录凭据,告别 Personal Access Token 泄露;深度打通本地 Git 工作区与云端仓库协作,兼具 <b>
|
|
13
|
+
原生复用宿主机 <code>gh</code> CLI 安全登录凭据,告别 Personal Access Token 泄露;深度打通本地 Git 工作区与云端仓库协作,兼具 <b>14 大领域 Agent 核心工具(85+ action,覆盖 PR 审查/Issue 任务/Actions 工作流与构建缓存治理/免 clone 读文件/分支规则集策略排障/代码片段 Gist/标签与全局待办大盘/密钥与变量管理)</b>、<b>人类 Slash 快捷指令</b>、<b>Web UI 全景工作台</b> 与 <b>一键自动跨平台无缝升级</b>。
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
16
|
<p align="center">
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
| **CI / Actions 构建报错修复** | 构建挂了后,开发者在网页翻几十页 Actions 日志,复制报错贴给 Agent 调试。 | **精准抓取报错**:对 Agent 说“看下 CI 为什么失败”,Agent 调 `github_run(log_failed)` 秒级定位失败步骤并自动修复代码。 |
|
|
30
30
|
| **安全性与鉴权维护** | 必须在插件配置文件里贴明文 GitHub Token(PAT),面临权限失控与密钥泄漏风险。 | **0 密钥泄露风险**:直接复用机器本地已认证的 `gh auth login` 凭据,使用系统安全 Keyring。 |
|
|
31
31
|
| **多任务切屏困扰** | 必须在 VS Code、浏览器 GitHub 标签页和 DSH 聊天窗之间反复切屏,上下文频繁丢失。 | **内置沉浸式全景工作台**:DSH 内部常驻 PR 门禁、CI 流水线、三维待办 Issue 矩阵,一目了然。 |
|
|
32
|
-
|
|
|
32
|
+
| **分支切换与本地改动感知** | 切分支需切回终端敲命令,且右侧栏无法感知本地代码暂存与提交改动,数据频频过时。 | **界面安全切分支 + 本地 Git 实时感知**:支持关键词过滤与未提交改动安全拦截;基于定向 `.git` 监听实现毫秒级自动对齐。 |
|
|
33
|
+
| **首屏加载与性能等待** | 每次打开全景驾驶舱全屏白屏卡死转圈 8~15 秒,等待所有网络与子进程请求返回。 | **SWR 0ms 瞬间秒开 + 云端定时同步**:打开立即呈现本地快照;支持 SWR 秒开、云端定时轮询(5~60m 息屏避让)与纯手动刷新三选一互斥模式。 |
|
|
33
34
|
| **插件维护与升级** | 插件更新全靠开发者去 npm 碰运气看版本号,命令复杂不敢升。 | **闲时静默探测 + Web 一键自动升级**:双源极速探测,自动适配 Mac/Windows 跨平台命令,界面点击即升。 |
|
|
34
35
|
|
|
35
36
|
---
|
|
@@ -72,7 +73,7 @@ dsh plugin --profile web add dsh-github-flow
|
|
|
72
73
|
|
|
73
74
|
## 🤖 核心工具集 (Agent Tools):给 Agent 装上 GitHub 的手和脚
|
|
74
75
|
|
|
75
|
-
本插件精选聚合为 **
|
|
76
|
+
本插件精选聚合为 **14 大领域核心工具(85+ action)**,拒绝几十个无用微型工具撑爆 Agent 上下文,原生搭载 **Token 防溢出保护(默认 24KB 智能二分截断)**、**高密度 Markdown 原生渲染(列表输出压缩 70%+ Token)** 与 **零参数 CWD 智能绑定**。
|
|
76
77
|
|
|
77
78
|
### 1. `github_pr`:PR 全生命周期管理与自动化代码审查
|
|
78
79
|
> **典型对话指令**:
|
|
@@ -86,141 +87,226 @@ dsh plugin --profile web add dsh-github-flow
|
|
|
86
87
|
* `view`:查看指定 PR 详情、描述与元数据;
|
|
87
88
|
* `diff`:获取 PR 的完整代码差异(`stat_only` 仅看文件变更概览,防大 PR 溢出);
|
|
88
89
|
* `checks`:审查指定 PR 的 CI 门禁状态(通过/失败/跳过分类徽章、所属工作流与详情链接);
|
|
89
|
-
* `create`:一键自动创建 PR(支持 draft 草稿模式与 `--dry-run`
|
|
90
|
+
* `create`:一键自动创建 PR(支持 draft 草稿模式与 `--dry-run` 预演,支持 `attach_images` 上传本地附件);
|
|
91
|
+
* `edit`:🆕 编辑 PR 标题、描述与关联元数据,支持附加本地图片;
|
|
92
|
+
* `comment`:🆕 向指定 PR 追加讨论评论与审查意见,支持附加本地图片;
|
|
90
93
|
* `checkout`:🆕 把 PR 代码检出到本地分支,Agent 可直接在沙箱跑测试验证改动;
|
|
91
94
|
* `status`:🆕 查看当前分支关联 PR 的合并冲突状态(`CLEAN` / `CONFLICT`);
|
|
92
95
|
* `review`:提交代码审查意见(`APPROVE`, `REQUEST_CHANGES`, `COMMENT`);
|
|
93
96
|
* `merge`:自动执行合并(支持 `squash` / `merge` / `rebase`,可指定 `delete_branch`;需 `confirm: true` 二次确认);
|
|
94
|
-
* `
|
|
97
|
+
* `ready`:🆕 Draft ↔ Ready 切换(附 `undo: true` 可转回 Draft,完整可逆);
|
|
98
|
+
* `revert`:🆕 创建反向提交(远端生成新 revert PR,需 `confirm: true`);
|
|
99
|
+
* `update_branch`:🆕 将基准分支最新提交同步进 PR 分支——「分支落后需更新」CI 门禁失败的自愈动作;
|
|
100
|
+
* `view_images`:🆕 下载 PR 讨论截图(正文+评论,支持 `image_urls` 精准提取与触顶续传清单);
|
|
101
|
+
* `attach_images`(参数):🆕 上传本地图片/附件至 PR(单批上限 50 个本地文件,与 `view_images` 形成对称闭环,需 gh ≥ 2.99)。
|
|
95
102
|
|
|
96
103
|
---
|
|
97
104
|
|
|
98
|
-
### 2. `
|
|
105
|
+
### 2. `github_issue`:Issue 任务流转与关联开发分支
|
|
99
106
|
> **典型对话指令**:
|
|
100
|
-
> - *"
|
|
101
|
-
> - *"
|
|
102
|
-
> - *"
|
|
107
|
+
> - *"列出分配给我的所有待办 Issue"*
|
|
108
|
+
> - *"从 Issue #42 一键切出一个本地开发分支 'fix-login-error' 并开始修复"*
|
|
109
|
+
> - *"在 Issue #15 下追加评论,汇报我们刚才测试发现的边界情况并附上截图"*
|
|
103
110
|
|
|
104
111
|
* **支持操作 (`action`)**:
|
|
105
|
-
* `
|
|
106
|
-
* `
|
|
107
|
-
* `
|
|
108
|
-
* `
|
|
109
|
-
* `
|
|
110
|
-
* `
|
|
112
|
+
* `list`:列出仓库 Issues(支持 `state` / `labels` / `assignees` 组合筛选,返回三维多标签);
|
|
113
|
+
* `view`:查看 Issue 完整讨论、正文与指派人;
|
|
114
|
+
* `create`:新建 Issue 任务(支持 `attach_images` 附件上传);
|
|
115
|
+
* `comment`:向指定 Issue 追加讨论评论(支持 `attach_images` 上传错误截图);
|
|
116
|
+
* `edit`:编辑 Issue 标题、追加标签 (`add_labels`)、移除标签 (`remove_labels`);
|
|
117
|
+
* `close` / `reopen`:关闭或重新激活议题(`close` 需 `confirm: true`);
|
|
118
|
+
* `develop`:🆕 关联当前 Issue 一键创建本地 Git 开发分支;
|
|
119
|
+
* `delete`:🆕 物理删除不可恢复(需 `confirm: true`,高危操作物理防误触);
|
|
120
|
+
* `transfer`:🆕 跨仓库迁移 Issue(原 URL 301 重定向,需 `confirm: true`);
|
|
121
|
+
* `pin` / `unpin`:🆕 仓库 Issue 置顶状态管理;
|
|
122
|
+
* `lock` / `unlock`:🆕 锁定讨论区,支持 4 种官方合法理由(`off_topic` / `resolved` / `spam` / `too_heated`);
|
|
123
|
+
* `status`:🆕 检索指派给当前登录用户的待办议题全景面板;
|
|
124
|
+
* `view_images`:🆕 下载 Issue 报障截图(正文+评论全量识别并转为本地图片块,Agent 直接"看"截图);
|
|
125
|
+
* `attach_images`(参数):🆕 支持本地文件/截图直接作为附件随 Issue 发布(单批上限 50 个文件,需 gh ≥ 2.99)。
|
|
111
126
|
|
|
112
127
|
---
|
|
113
128
|
|
|
114
|
-
### 3. `
|
|
129
|
+
### 3. `github_run`:GitHub Actions 构建状态与智能排障修复
|
|
115
130
|
> **典型对话指令**:
|
|
116
|
-
> - *"
|
|
117
|
-
> - *"
|
|
118
|
-
> - *"
|
|
119
|
-
> - *"把 Issue #45 关闭"*
|
|
131
|
+
> - *"检查 main 分支最近一次 CI 工作流跑挂了吗?"*
|
|
132
|
+
> - *"提取刚刚失败构建的日志,帮我分析是哪个测试用例挂了"*
|
|
133
|
+
> - *"重新运行最近一次失败的 CI 流水线"*
|
|
120
134
|
|
|
121
135
|
* **支持操作 (`action`)**:
|
|
122
|
-
* `list
|
|
123
|
-
* `view
|
|
124
|
-
* `
|
|
125
|
-
* `
|
|
126
|
-
* `
|
|
127
|
-
* `
|
|
128
|
-
* `
|
|
129
|
-
* `
|
|
136
|
+
* `list`:列出指定分支或状态的 CI 构建记录;
|
|
137
|
+
* `view`:查看工作流运行详情与各步骤状态;
|
|
138
|
+
* `log_failed`:**🔥 排障神器**!自动精准定位失败的 Job 与 Step,仅提取报错那几十行核心日志,告别人工翻几万行日志;
|
|
139
|
+
* `rerun`:一键重新运行失败的构建;
|
|
140
|
+
* `cancel`:取消正在排队或执行的构建;
|
|
141
|
+
* `trigger`:手动触发 `workflow_dispatch` 工作流,支持自定义入参;
|
|
142
|
+
* `workflow_list`:🆕 列出仓库所有工作流(可传 `all: true` 显示被禁用的工作流);
|
|
143
|
+
* `workflow_view`:🆕 查看工作流 YAML 文件配置与累计运行次数;
|
|
144
|
+
* `workflow_enable` / `workflow_disable`:🆕 动态启停指定工作流;
|
|
145
|
+
* `download`:🆕 下载构建产物 Artifact(严格遵循 GHSA 路径隔离纪律落盘至插件管理目录)。
|
|
130
146
|
|
|
131
147
|
---
|
|
132
148
|
|
|
133
|
-
### 4. `github_repo
|
|
149
|
+
### 4. `github_repo`:仓库元数据、Fork 同步、免 Clone 读文件与跨仓检索
|
|
134
150
|
> **典型对话指令**:
|
|
135
|
-
> - *"
|
|
136
|
-
> - *"
|
|
137
|
-
> - *"
|
|
151
|
+
> - *"帮我把当前 Fork 的仓库主干同步拉平"*
|
|
152
|
+
> - *"在当前仓库检索哪里用到了 'useAuthToken' 这个函数"*
|
|
153
|
+
> - *"免 clone 查看一下远程仓库 'src/utils.ts' 的文件内容"*
|
|
154
|
+
> - *"读取当前仓库的 README 看看架构设计,并把里面的流程图下载下来分析"*
|
|
138
155
|
|
|
139
156
|
* **支持操作 (`action`)**:
|
|
140
|
-
* `view
|
|
141
|
-
* `readme`:🆕
|
|
142
|
-
* `sync
|
|
143
|
-
* `
|
|
144
|
-
* `
|
|
157
|
+
* `view`:查看仓库基本信息、默认分支、Star/Fork 数、License 与 Topics 标签;
|
|
158
|
+
* `readme`:🆕 读取当前仓库 README 原文并自动提取内部所有图片链接,可传 `image_urls` 精准下载指定插图;
|
|
159
|
+
* `sync`:一键自动同步 Fork 仓库的主干分支(支持 `--force` 硬重置解决分叉冲突);
|
|
160
|
+
* `read_file`:🆕 免 clone 直接读取任意分支/Tag/Commit 的指定文件内容(`gh ≥ 2.95` 直读,旧版自动降级 REST API 链路);
|
|
161
|
+
* `read_dir`:🆕 免 clone 读取任意分支目录树清单(文件类型、名称与人性化体积);
|
|
162
|
+
* `search_code`:跨仓库代码检索(需包含搜索关键词,支持高级限定符);
|
|
163
|
+
* `search_repos`:跨全站仓库关键词检索;
|
|
164
|
+
* `search_issues` / `search_prs`:全局 Issue/PR 关键词复合检索;
|
|
165
|
+
* `search_commits`:全局提交记录关键词检索。
|
|
145
166
|
|
|
146
167
|
---
|
|
147
168
|
|
|
148
|
-
### 5. `
|
|
169
|
+
### 5. `github_release`:版本发布交付与构建资产管理
|
|
149
170
|
> **典型对话指令**:
|
|
150
|
-
> - *"
|
|
171
|
+
> - *"查看当前仓库最新的 Release 版本与更新日志"*
|
|
172
|
+
> - *"基于最近的提交记录,自动生成 v0.4.0 的发版说明并创建一个草稿 Release"*
|
|
173
|
+
> - *"把本地构建产物 'dsh-github-flow-0.4.0.tgz' 上传到最新 Release 中"*
|
|
151
174
|
|
|
152
|
-
*
|
|
175
|
+
* **支持操作 (`action`)**:
|
|
176
|
+
* `list`:查看历史 Release 版本清单;
|
|
177
|
+
* `view`:查看指定 Tag 的发布说明与附属构建资产清单;
|
|
178
|
+
* `create`:创建新版本 Release(支持 `generate_notes` 自动从 commit 生成说明,支持 `draft` / `prerelease` / 预置资产上传);
|
|
179
|
+
* `upload`:向已有 Release 追加上传本地资产(支持 `clobber: true` 覆盖上传,需 `confirm: true`);
|
|
180
|
+
* `download`:下载 Release 产物文件(支持 `pattern` glob 模式过滤);
|
|
181
|
+
* `delete`:删除 Release(支持 `cleanup_tag: true` 连同 Git Tag 一并清理,需 `confirm: true`)。
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
### 6. `github_secret`:CI/CD 密钥 (Secret) 与变量 (Variable) 管理
|
|
186
|
+
> **典型对话指令**:
|
|
187
|
+
> - *"列出当前仓库配置了哪些 Actions Secrets"*
|
|
188
|
+
> - *"帮我设置一个名为主机发布的 secret 'DEPLOY_KEY'"*
|
|
189
|
+
> - *"查看明文变量 'NODE_ENV' 的当前值"*
|
|
190
|
+
|
|
191
|
+
* **支持操作 (`action`)**:
|
|
192
|
+
* `list`:列出仓库配置的密钥或变量名称清单(密文永不回显,变量可读);
|
|
193
|
+
* `set`:设置或更新密钥(**安全纪律:密文经子进程标准输入 stdin 安全写入,全程不出现在命令行参数与进程列表中**)或设置明文变量;
|
|
194
|
+
* `get`:🆕 获取明文变量的值(仅 `kind: 'variable'` 可用;Secret 受 GitHub 物理加密保护不可读取);
|
|
195
|
+
* `delete`:删除密钥或变量(删除 Secret 需 `confirm: true`)。
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
### 7. `github_skill`:Agent Skills 生态发现与本地安装
|
|
200
|
+
> **典型对话指令**:
|
|
201
|
+
> - *"在 GitHub 开源社区检索关于 'markdown' 的 Agent Skills"*
|
|
202
|
+
> - *"预览并安装 'github/awesome-copilot' 仓库里的代码审查 Skill 到当前项目"*
|
|
203
|
+
|
|
204
|
+
* **支持操作 (`action`)**:
|
|
205
|
+
* `search`:跨 GitHub 开源仓库检索符合规范的 Agent Skills;
|
|
206
|
+
* `preview`:免安装直接在线预览指定 Skill 的 `SKILL.md` 规则与行为指令;
|
|
207
|
+
* `install`:一键安装指定 Skill 至本地环境(支持 `scope: 'project'` 或 `'user'`,需 `confirm: true`);
|
|
208
|
+
* `list`:查看当前环境已安装的 Skills 清单。
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
### 8. `github_help`:全景映射总表、官方语法速查与故障自愈
|
|
213
|
+
> **典型对话指令**:
|
|
214
|
+
> - *"我不确定用哪个工具操作 Discussions,帮我查查映射表"*
|
|
215
|
+
> - *"查询一下 GitHub 搜索日期的过滤语法是什么"*
|
|
216
|
+
> - *"调用 gh 命令报错 'authentication failed',该怎么排查?"*
|
|
217
|
+
|
|
218
|
+
* **支持操作 (`topic` / `gh_command`)**:
|
|
219
|
+
* `overview`:输出全景工具箱导航与核心职责速查(14 大工具矩阵全景);
|
|
220
|
+
* `mapping`:**官方命令映射总表**,精准指示任意 `gh <command>` 对应哪个插件工具,以及未覆盖域对应的 GitHub REST/GraphQL 端点;
|
|
221
|
+
* `search_syntax`:日期区间、状态筛选与高级布尔搜索语法指南;
|
|
222
|
+
* `troubleshooting`:常见错误自愈配方(认证失效、网络超时、SOCKS5 代理配置、权限不足等);
|
|
223
|
+
* 领域速查:`pr` / `issue` / `run` / `repo` / `release` / `secret` / `skill` / `label` / `ruleset` / `cache` / `gist` / `status` 专项高阶用法;
|
|
224
|
+
* `gh_command`:直接透传查询官方原生手册(如 `gh_command: 'ruleset'`)。
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
### 9. `github_api`:原生 GitHub REST / GraphQL 逃生门
|
|
229
|
+
> **典型对话指令**:
|
|
230
|
+
> - *"调用 GitHub API 获取当前登录用户的 Profile 信息"*
|
|
231
|
+
> - *"调用 GraphQL 查询指定仓库的 Discussions 列表"*
|
|
232
|
+
|
|
233
|
+
* **支持功能**:直接通过宿主机已认证的 GitHub CLI 环境调用任意 REST 或 GraphQL 端点,支持 `--jq` 结果精简、自动分页 (`paginate: true`)、请求参数字面量直传与 `raw: true` 原始响应流(如免 Base64 读取文本文件)。
|
|
153
234
|
|
|
154
235
|
---
|
|
155
236
|
|
|
156
|
-
###
|
|
237
|
+
### 10. `github_label`:标签体系管理与跨仓库一键克隆
|
|
157
238
|
> **典型对话指令**:
|
|
158
|
-
> - *"
|
|
159
|
-
> - *"
|
|
239
|
+
> - *"查看当前仓库有哪些标签,按名称排序"*
|
|
240
|
+
> - *"创建一个名为 'priority/p0' 的严重缺陷标签,颜色设为 #d73a4a"*
|
|
241
|
+
> - *"把 'cli/cli' 仓库的标准标签体系一键克隆到当前新仓库"*
|
|
242
|
+
> - *"删除弃用的 'invalid' 标签"*
|
|
160
243
|
|
|
161
244
|
* **支持操作 (`action`)**:
|
|
162
|
-
* `list`
|
|
163
|
-
* `create
|
|
164
|
-
* `
|
|
165
|
-
* `delete
|
|
245
|
+
* `list`:列出仓库标签(支持 `search` 模糊检索、`sort: 'created' | 'name'` 与 `order: 'asc' | 'desc'` 排序);
|
|
246
|
+
* `create`:新建标签(十六进制色值校验与去前导 `#`,支持 `force: true` 覆盖已存在标签);
|
|
247
|
+
* `edit`:编辑标签颜色、描述,或通过 `new_name` 重命名;
|
|
248
|
+
* `delete`:安全删除标签(影响所有已关联 Issue/PR,必须 `confirm: true` 二次确认,注入 `--yes` 防挂起);
|
|
249
|
+
* `clone`:🆕 **跨仓库一键克隆**:从源仓库 (`source_repo`) 将全量标签体系同步至当前目标仓库,新仓库初始化刚需(支持 `force: true` 覆盖冲突标签)。
|
|
166
250
|
|
|
167
251
|
---
|
|
168
252
|
|
|
169
|
-
###
|
|
253
|
+
### 11. `github_ruleset`:分支合并保护规则与策略排障
|
|
170
254
|
> **典型对话指令**:
|
|
171
|
-
> - *"
|
|
172
|
-
> - *"
|
|
255
|
+
> - *"为什么当前分支的 PR 无法合并?帮我检查适用的保护规则"*
|
|
256
|
+
> - *"检查 master 分支是否配置了必须通过 CI 或至少 2 人审批的规则约束"*
|
|
257
|
+
> - *"查看当前仓库的所有规则集列表"*
|
|
173
258
|
|
|
174
259
|
* **支持操作 (`action`)**:
|
|
175
|
-
* `
|
|
176
|
-
* `
|
|
177
|
-
* `
|
|
178
|
-
* 支持仓库 / 组织 (`org`) / 环境 (`env`) 三级作用域与 `actions` / `codespaces` / `dependabot` / `agents` 应用归属。
|
|
260
|
+
* `check`:**🔥 PR 合并策略排障核心**!查看指定分支匹配到的全部硬性策略规则(如强制 CI 门禁、审批人数、禁止 Force Push 等),与 `github_pr(action: 'checks')` 形成“CI 运行视角 + 规则策略视角”的权威排障合力;
|
|
261
|
+
* `list`:查看规则集列表(支持 `--org` 组织级查询与 `--no-parents` 排除继承);
|
|
262
|
+
* `view`:查看具体规则集详细约束与目标分支(强制校验 `ruleset_id` 防交互式挂起)。
|
|
179
263
|
|
|
180
264
|
---
|
|
181
265
|
|
|
182
|
-
###
|
|
266
|
+
### 12. `github_cache`:Actions 构建缓存盘点与安全清理
|
|
183
267
|
> **典型对话指令**:
|
|
184
|
-
> - *"
|
|
185
|
-
> - *"
|
|
268
|
+
> - *"盘点一下当前仓库的 Actions 缓存占用了多少空间?"*
|
|
269
|
+
> - *"按占用体积降序排列所有构建缓存"*
|
|
270
|
+
> - *"清空当前仓库所有过期的 Actions 缓存"*
|
|
186
271
|
|
|
187
272
|
* **支持操作 (`action`)**:
|
|
188
|
-
* `
|
|
189
|
-
* `
|
|
190
|
-
* `install`(需 `confirm: true`):安装到本地 Agent 宿主(Claude Code / Cursor / Copilot 等 50+),支持 `project` / `user` 两种范围;
|
|
191
|
-
* `list`:查看本机已安装的全部 Skills。
|
|
192
|
-
* 依赖 GitHub CLI 2.9x+ 的 `gh skill` 官方 preview 特性。
|
|
273
|
+
* `list`:盘点仓库 Actions 缓存占用,自动换算人性化体积(KB/MB/GB),支持 Key 前缀过滤、Git Ref 过滤与按大小/访问时间排序;
|
|
274
|
+
* `delete`:三态精准清理(按数字 `cache_id` 删除、按 `key` 删除、或通过 `all: true` 全量清空全部缓存;全量清空属批量破坏性操作,强制要求 `confirm: true`,底层注入 `--succeed-on-no-caches` 保证幂等执行)。
|
|
193
275
|
|
|
194
276
|
---
|
|
195
277
|
|
|
196
|
-
###
|
|
278
|
+
### 13. `github_gist`:代码片段与排障留痕轻量治理
|
|
197
279
|
> **典型对话指令**:
|
|
198
|
-
> - *"
|
|
199
|
-
> - *"
|
|
280
|
+
> - *"把刚才的排错日志创建为一个 Secret Gist 并把链接发给我"*
|
|
281
|
+
> - *"查看我账号下的 Gist 代码片段列表"*
|
|
282
|
+
> - *"检视 Gist '5b0e0062eb8e9654adad7bb1d81cc75f' 的代码正文"*
|
|
200
283
|
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
*
|
|
205
|
-
*
|
|
284
|
+
* **支持操作 (`action`)**:
|
|
285
|
+
* `list`:列出当前用户账号下的 Gist 清单(TSV 结构化解析,支持 `public` / `secret` / `filter` 过滤);
|
|
286
|
+
* `view`:查看指定 Gist 的原始代码正文(支持 `filename` 单文件筛选,强制校验 `gist_id` 防挂起);
|
|
287
|
+
* `create`:新建 Gist(支持 `content` 经 stdin 管道直接传入,或传 `files` 本地文件列表,默认安全创建 Secret Gist 并显式附带 **Unlisted 弱保密安全警示**);
|
|
288
|
+
* `edit`:编辑 Gist 描述或修改文件;
|
|
289
|
+
* `delete`:物理删除 Gist 代码片段(不可逆,强制要求 `confirm: true` 与 `--yes`)。
|
|
206
290
|
|
|
207
291
|
---
|
|
208
292
|
|
|
209
|
-
|
|
293
|
+
### 14. `github_status`:跨仓库待办与动态全局大盘
|
|
294
|
+
> **典型对话指令**:
|
|
295
|
+
> - *"帮我看看今天在 GitHub 上有哪些需要我处理的事情?"*
|
|
296
|
+
> - *"查看当前账号在所有订阅仓库中的最新动态与 @提及"*
|
|
210
297
|
|
|
211
|
-
*
|
|
212
|
-
*
|
|
213
|
-
* **命令注入免疫**:所有 gh 调用采用 `execFile` 数组参数隔离执行,零 Shell 字符串拼接。
|
|
298
|
+
* **支持操作 (`action`)**:
|
|
299
|
+
* `view`:**账号维度跨仓一站式聚合大盘**,汇总展示「指派给我的 Issue」、「指派给我的 PR」、「等待我评审的 PR (Review Requests)」、「提及我的消息 (Mentions)」以及「订阅仓库近期动态 (Repository Activity)」,无需绑定单仓即可一览全局工作台;支持 `-o` 组织过滤与 `-e` 排除噪音仓库。
|
|
214
300
|
|
|
215
301
|
---
|
|
216
302
|
|
|
217
|
-
## 🖥️
|
|
303
|
+
## 🖥️ Web UI 全景驾驶舱与右侧栏工作台
|
|
218
304
|
|
|
219
|
-
|
|
305
|
+
不仅仅是给 Agent 调用的工具,`dsh-github-flow` 为人类开发者提供了无缝融合的图形化控制面板:
|
|
220
306
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
* **📦 实时数据新鲜度胶囊**:标题栏旁直观展示数据状态(`[📦 本地快照 (21分钟前)]` ➔ `[⏳ 后台同步中...]` ➔ `[✅ 已是最新 (15:30)]` ➔ `[⚠️
|
|
307
|
+
### 1. 全景驾驶舱 (Main Dashboard)
|
|
308
|
+
点击 DSH 左侧导航栏的 **Octocat 徽标** 即可瞬间打开全屏驾驶舱:
|
|
309
|
+
* **📦 实时数据新鲜度胶囊**:标题栏旁直观展示数据状态(`[📦 本地快照 (21分钟前)]` ➔ `[⏳ 后台同步中...]` ➔ `[✅ 已是最新 (15:30)]` ➔ `[⚠️ 网络连接失败,当前展示离线历史数据]`);
|
|
224
310
|
* **账号全景概览**:实时透视名下所有 GitHub 仓库、默认分支与 Star 状态;
|
|
225
311
|
* **本地工作区联动矩阵**:自动探测本机所有打开的项目,显示当前工作区与远程 GitHub 仓库的关联状态;
|
|
226
312
|
* **三维待办 Issue 矩阵**:智能划分「📥 用户提单(反馈到我名下仓库)」、「🎯 指派待办(分配给我)」与「✍️ 我发起的」,支持一键药丸过滤;
|
|
@@ -231,14 +317,27 @@ dsh plugin --profile web add dsh-github-flow
|
|
|
231
317
|
</p>
|
|
232
318
|
|
|
233
319
|
### 2. 会话右侧栏工作区面板 (Session Workspace Panel)
|
|
234
|
-
|
|
235
|
-
*
|
|
320
|
+
位于每个对话工作区的右侧抽屉栏,深度联动本地 Git 状态与远程 GitHub 仓库:
|
|
321
|
+
* **当前仓库上下文绑定**:自动锁定当前会话的物理 Git 仓库,展示远程关联与认证账号;
|
|
322
|
+
* **⎇ 分支查看与无损切换 (Branch Selector)**:
|
|
323
|
+
* 在当前仓库卡片中直观展示当前分支与下拉选择器;
|
|
324
|
+
* 采用标准 **Git 官方菱形分支矢量组件(`#1296db` SVG)**,完全杜绝植物/草符号;
|
|
325
|
+
* 随 overview 接口预取分支数据,点击 **0ms 瞬间展开**下拉菜单,支持输入关键词即时过滤本地与远程分支;
|
|
326
|
+
* **未提交变更防护(Dirty File Guard)**:切换前后端严格执行工作区干净度校验,存在未暂存或未提交代码时强阻断切换,彻底防止代码被破坏性覆盖;
|
|
236
327
|
* **数据新鲜度胶囊对齐**:标题旁紧凑呈现 `[📦 本地快照 (2分钟前)]` 与 `[🔄 刷新]` 按钮,与主页规则 100% 保持一致,首屏 0ms 瞬间直出;
|
|
237
|
-
* **PR 门禁状态药丸**:展示当前开放 PR,悬停查看 Checks 结果与审核意见;
|
|
238
|
-
* **当前仓库 Open Issues 列表**:直接在侧边栏审查待办任务并提供直达链接;
|
|
239
|
-
* **最新 Actions 构建流水线**:实时关注 CI 状态;
|
|
240
328
|
* **快捷操作网格**:一键在浏览器打开仓库、直达 Issues/PRs、一键创建 PR;
|
|
241
|
-
*
|
|
329
|
+
* **五大 Tab 布局响应式互斥切换**:快捷操作下方采用紧凑 Tab 架构,内容区互斥展示、大幅降低纵向滚动需求:
|
|
330
|
+
* **Git 记录 (`Git`)**(默认首屏):
|
|
331
|
+
* 分支与同步状态:展示当前分支(如 `master`)与远程同步快照(`✓ 与远程同步` 或 `↑N 待 push` / `↓N 待 pull`);
|
|
332
|
+
* 三段式提交视图:待推送提交(本地领先)、待拉取提交(远程领先)及最近提交列表;
|
|
333
|
+
* 默认展示 15 条,支持**向下滑动触底自动分页加载**(伴随 `15 / 74` 实时进度提示与点击后备);
|
|
334
|
+
* 右上角锚定最新发布 Release 徽章(`🏷️ v0.4.0`),悬停查看发布时间与预发布标示,点击直达;
|
|
335
|
+
* **提交详情模态弹窗**:点击任意提交记录行,在右侧栏内局部居中弹出,内置上下滑动区域,完整展示 40 位 SHA、提交者姓名邮箱、日期、多行详细正文说明与文件变更统计(`--stat`),纯本地 0ms 秒开,支持按 `Esc` 或点击遮罩随时关闭;
|
|
336
|
+
* **未提交清单 (`📁 未提交 (N)`)**:展示工作区未提交的文件清单,状态码色彩区分(`??` 新增、`M` 修改、`D` 删除、`R` 重命名)与变更总数;
|
|
337
|
+
* **拉取请求 (`🔀 PR (N)`)**:展示当前开放 PR,带有三态 CI 门禁(`✅ CI 通过` / `❌ CI 失败` / `⏳ CI 运行中`)、冲突检测、审核判定(`✔ 已批准` / `✋ 需修改` / `👀 待审查`)、Draft 草稿标示与人性化相对时间;
|
|
338
|
+
* **仓库议题 (`📋 Issues (N)`)**:直接在侧边栏审查待办任务,支持指派者、标签与多维状态药丸;
|
|
339
|
+
* **构建流水线 (`⚡ Actions (N)`)**:实时关注工作流 CI 状态,展示触发方式(`push`/`定时`/`手动`/`PR`)、相对时间与失败构建的 Agent 自愈诊断指引(嵌入 run_id);
|
|
340
|
+
* **⚙️ 完整设置入口**:右侧栏提供设置按钮,与主页复用同一设置弹窗(数据同步 / 网络代理 / 更新设置 / 关于 四分区完整可用),无需切回主页调整。
|
|
242
341
|
|
|
243
342
|
<p align="center">
|
|
244
343
|
<img src="./docs/images/2.png" alt="右侧栏工作区面板" width="100%" />
|
|
@@ -247,10 +346,13 @@ dsh plugin --profile web add dsh-github-flow
|
|
|
247
346
|
### 3. 设置中心 (Settings Modal)
|
|
248
347
|
点击全景驾驶舱右上角 **`[⚙️ 设置]`**(或右侧栏的 ⚙️ 按钮)打开分区式设置弹窗,左侧分区导航、右侧内容独立滚动(窄屏自动折叠为横向页签):
|
|
249
348
|
|
|
250
|
-
**🔄
|
|
251
|
-
*
|
|
252
|
-
* **⚡
|
|
349
|
+
**🔄 数据同步分区**——调优数据拉取节奏与感知灵敏度:
|
|
350
|
+
* **数据刷新策略(三选一互斥模型)**:
|
|
351
|
+
* **⚡ 秒开展示旧数据 (SWR, 默认)**:打开驾驶舱立即展示上次本地缓存(0ms秒开),并在首屏后台静默拉新一次——无论缓存多旧,打开即可自愈为最新;
|
|
352
|
+
* **☁️ 云端数据定时自动同步 (SWR + 定时轮询)**:首屏秒开旧数据并立即拉新,拉取结算后开始计时;循环静默更新 PR、Issue 与 Actions(支持 **5/10/30/60 分钟** 多档可选,内置窗口息屏自动避让,防止后台耗尽 API 配额);
|
|
253
353
|
* **📋 仅在手动点击时拉取 (Manual Only)**:打开只浏览本地缓存,绝不自动触发后台 gh 进程,最省电、最省资源;想更新时点击「🔄 刷新」即可。
|
|
354
|
+
* **高级自动化与状态感知**:
|
|
355
|
+
* **📁 本地 Git 改动实时感知 (仅右侧栏生效,默认开启)**:定向监听当前仓库的 `.git/HEAD` 与 `.git/index` 元数据,代码修改、暂存与分支切换在 800ms 防抖后毫秒级自动对齐右侧栏,零外部网络流量消耗;全景首页保持轻量不开启。
|
|
254
356
|
* **本地缓存可视化管理**:透明查看本地快照体积与保存时间戳,支持一键 `[🗑️ 清空缓存]` 重置。
|
|
255
357
|
|
|
256
358
|
**🌐 网络代理分区**——让插件全部外联流量走你的代理:
|
|
@@ -303,21 +405,23 @@ dsh plugin --profile web add dsh-github-flow
|
|
|
303
405
|
|
|
304
406
|
为什么以前打开全景驾驶舱需要等待好几秒?因为全景数据要并发调用十余次 `gh` 进程扫描多个仓库与工作区。本插件引入了 **Stale-While-Revalidate (SWR)** 缓存体系,并把控制权完全交还给用户:
|
|
305
407
|
|
|
306
|
-
```
|
|
307
|
-
|
|
408
|
+
```text
|
|
409
|
+
首次挂载 (0ms) ──────────> 恢复本地持久化快照,瞬间完整上屏
|
|
308
410
|
│
|
|
309
|
-
├── SWR
|
|
310
|
-
|
|
411
|
+
├── SWR 秒开模式: 延迟 300ms 后台静默拉新一次,平滑对齐最新数据
|
|
412
|
+
├── 云端定时自动同步: 首屏拉新结算后开启周期计时器 (5/10/30/60m 息屏避让)
|
|
413
|
+
└── 纯手动模式: 仅浏览本地快照,点击「🔄 刷新」才发起拉取
|
|
311
414
|
```
|
|
312
415
|
|
|
313
|
-
###
|
|
416
|
+
### 三种刷新策略对比与选用建议:
|
|
314
417
|
|
|
315
418
|
| 刷新模式 | 运行机制 | 适用人群与场景 |
|
|
316
419
|
| :--- | :--- | :--- |
|
|
317
|
-
| **⚡ 秒开模式 (SWR, 默认)** | 打开驾驶舱 **0ms 立即呈现**
|
|
420
|
+
| **⚡ 秒开模式 (SWR, 默认)** | 打开驾驶舱 **0ms 立即呈现** 上次保存的本地离线快照,并在首屏后台静默更新——无论快照多旧,打开即自愈为最新。 | **强烈推荐所有开发者**。消灭白屏转圈,体验最顺畅丝滑。 |
|
|
421
|
+
| **☁️ 云端定时自动同步 (SWR + 定时轮询)** | 首屏秒开旧数据并立即拉新,拉取结算后开始周期倒计时(5/10/30/60分钟);内置息屏避让,后台标签页不耗配额。 | **需要持续关注多仓库动态、CI 状态与团队 Issue 流转的深度用户**。 |
|
|
318
422
|
| **📋 仅手动刷新 (Manual Only)** | 仅浏览本地已有数据,绝对不自动发起任何后台 `gh` 网络拉取。 | **笔记本电池供电、低配设备或弱网环境**。极致节能,杜绝无谓后台开销。 |
|
|
319
423
|
|
|
320
|
-
* **离线韧性保障 (Fail-Safe)
|
|
424
|
+
* **离线韧性保障 (Fail-Safe)**:即使完全断网或后台请求超时,**界面依然完整保留本地快照供您浏览与检索,配合醒目的网络异常横幅与 Toast 提示,绝不静默欺骗,更绝不白屏崩溃!**
|
|
321
425
|
|
|
322
426
|
---
|
|
323
427
|
|
|
@@ -331,25 +435,25 @@ dsh plugin --profile web add dsh-github-flow
|
|
|
331
435
|
|
|
332
436
|
---
|
|
333
437
|
|
|
334
|
-
## ⚙️
|
|
438
|
+
## ⚙️ 插件配置项参考 (`cordis.yml`)
|
|
335
439
|
|
|
336
|
-
|
|
440
|
+
插件支持通过 DSH 配置文件进行精细化微调:
|
|
337
441
|
|
|
338
442
|
```yaml
|
|
339
|
-
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
443
|
+
- id: github-flow
|
|
444
|
+
name: dsh-github-flow
|
|
445
|
+
config:
|
|
446
|
+
ghPath: 'gh' # GitHub CLI 可执行文件路径(默认 'gh',从系统 PATH 查找)
|
|
447
|
+
defaultTimeoutMs: 30000 # 命令执行超时时间(毫秒,默认 30 秒)
|
|
448
|
+
maxOutputChars: 24000 # 单次命令安全返回字符数上限(Token 防溢出保护)
|
|
449
|
+
maxOutputBytes: 96000 # 单次命令 UTF-8 字节数硬上限,默认 maxOutputChars × 4
|
|
450
|
+
defaultListLimit: 20 # 列表类查询默认返回条数(pr/issue/run/release/skill 通用)
|
|
451
|
+
cacheTtlMs: 15000 # 单仓库概览缓存时长(毫秒,默认 15 秒)
|
|
452
|
+
checkUpdate: true # 是否开启新版本自动检查提示(默认开启;false 时熔断自动探测,显式升级不受限)
|
|
453
|
+
agentEnvInjection: true # 向 gh 注入 AI_AGENT=dsh 识别信号(gh ≥2.99 自动适配 Agent 输出;false 恢复 gh 原生行为)
|
|
454
|
+
updateCheckIntervalMs: 86400000 # 检查更新间隔(毫秒,默认 24 小时)
|
|
455
|
+
registryUrl: '' # 自定义私有 npm 镜像地址(留空走「更新设置」所选源,界面设置优先)
|
|
456
|
+
proxyUrl: '' # 代理地址预置默认值(如 'http://127.0.0.1:7890';仅未在驾驶舱设置过时生效,界面设置优先)
|
|
353
457
|
```
|
|
354
458
|
|
|
355
459
|
---
|
|
@@ -377,9 +481,10 @@ export function apply(ctx: Context) {
|
|
|
377
481
|
|
|
378
482
|
- [npm 发布与自动化 CI 发版指南](./docs/npm-publish-guide.md)
|
|
379
483
|
- [架构设计与技术规范](./docs/architecture.md)
|
|
380
|
-
|
|
484
|
+
- [发版必改清单与避坑指南](./docs/UPGRADE-NOTES.md)
|
|
381
485
|
|
|
382
486
|
---
|
|
487
|
+
|
|
383
488
|
## 友情链接
|
|
384
489
|
|
|
385
490
|
- [LINUX DO - 新的理想型社区](https://linux.do/)
|
package/docs/UPGRADE-NOTES.md
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
| # | 文件 | 位置 | 当前值 | 说明 |
|
|
12
12
|
|---|---|---|---|---|
|
|
13
|
-
| 1 | [package.json](../package.json) | 第 3 行 `"version": "0.
|
|
14
|
-
| 2 | [src/version.ts](../src/version.ts) | 第 9 行 `CURRENT_PLUGIN_VERSION = '0.
|
|
13
|
+
| 1 | [package.json](../package.json) | 第 3 行 `"version": "0.4.0"` | `0.4.0` | npm 发布版本、CI 取版来源 |
|
|
14
|
+
| 2 | [src/version.ts](../src/version.ts) | 第 9 行 `CURRENT_PLUGIN_VERSION = '0.4.0'` | `'0.4.0'` | 运行时版本比较基准(假横幅的教训来源) |
|
|
15
15
|
|
|
16
16
|
**两处必须同值**。`pnpm run build` 会硬校验([scripts/build.mjs](../scripts/build.mjs) 的
|
|
17
17
|
`assertVersionConsistency`),不一致直接构建失败——但不要依赖拦截,发版前手动核对。
|
|
@@ -41,28 +41,31 @@
|
|
|
41
41
|
| # | 机制 | 说明 |
|
|
42
42
|
|---|---|---|
|
|
43
43
|
| 9 | CI 取版(.github/workflows/npm-publish.yml:62) | `VERSION=$(node -p "require('./package.json').version")`——从 package.json 读,无硬编码 |
|
|
44
|
-
| 10 | Git tag | `git tag v0.
|
|
44
|
+
| 10 | Git tag | `git tag v0.4.0` 手动打,值必须 = package.json 版本(tag 与 package.json 不一致时:CI 发布的 npm 版本以 package.json 为准,GitHub Release 标题以 tag 为准,出现两者错位) |
|
|
45
45
|
|
|
46
46
|
## 五、发版完整流程(含版本修改)
|
|
47
47
|
|
|
48
48
|
```powershell
|
|
49
49
|
# 1. 改版本(两处同值)
|
|
50
|
-
# package.json → "version": "0.
|
|
51
|
-
# src/version.ts → CURRENT_PLUGIN_VERSION = '0.
|
|
50
|
+
# package.json → "version": "0.4.0"
|
|
51
|
+
# src/version.ts → CURRENT_PLUGIN_VERSION = '0.4.0'
|
|
52
52
|
|
|
53
53
|
# 2. 文档已用占位符(npm-publish-guide 示例、README 安装命令),发版无需改文档版本号
|
|
54
54
|
|
|
55
55
|
# 3. 构建(版本一致性校验在此拦截漏改)+ 全量测试
|
|
56
56
|
pnpm run build
|
|
57
|
-
pnpm test #
|
|
57
|
+
pnpm test # 16 阶段全绿
|
|
58
58
|
|
|
59
59
|
# 4. 本机 e2e(必须先重启 DSH 桌面进程——Node 模块缓存,软链重建不注入运行中进程)
|
|
60
|
-
# 重启后验证:GET /api/github/check-update 的 currentVersion = 0.
|
|
60
|
+
# 重启后验证:GET /api/github/check-update 的 currentVersion = 0.4.0
|
|
61
61
|
|
|
62
62
|
# 5. 提交 + 打 tag + 推送(tag 值 = package.json 版本)
|
|
63
63
|
git add -A
|
|
64
|
-
git commit -m "chore(release): v0.
|
|
65
|
-
git tag v0.
|
|
64
|
+
git commit -m "chore(release): v0.4.0"
|
|
65
|
+
git tag v0.4.0
|
|
66
|
+
git push origin master --tags
|
|
67
|
+
# CI(npm-publish.yml)自动:构建→发布 npm→创建 GitHub Release
|
|
68
|
+
git tag v0.3.0
|
|
66
69
|
git push origin master --tags
|
|
67
70
|
# CI(npm-publish.yml)自动:构建→发布 npm→创建 GitHub Release
|
|
68
71
|
|
|
@@ -79,6 +82,8 @@ git push origin master --tags
|
|
|
79
82
|
| tag 与 npm 版本错位风险 | CI 以 package.json 为准、Release 标题以 tag 为准 | 第五节流程强调 tag = package.json |
|
|
80
83
|
| pr checks 完全不可用(Issue #3) | 字段集混入 REST API 字段名(conclusion/detailsUrl),gh 从未支持 | 测试写死合法九字段基准清单(phase1);新增 --json 字段时对照 `gh <cmd> --json zzz` 错误提示核对 |
|
|
81
84
|
| 无 gh 环境刷新永久卡死 | 前端数据链路 fetch 无 AbortController,代理劫持回环时挂起 | 全部数据 fetch 绑 signal(phase7 第 8 节锚点);新增前端 fetch 必须带 signal 或显式超时 |
|
|
85
|
+
| React Hook 变量提升 undefined 崩溃 | containerRef 写在 useEffect 下方,组件挂载读取 containerRef.current 抛致命 TypeError 白屏 | 必须在组件生命周期最顶部声明所有 useRef;访问点强制加 `containerRef && containerRef.current` 守卫 |
|
|
86
|
+
| 前端模块目录命名解析冲突 | 在包内创建同名 `src/client/` 目录导致模块解析器在解析 `exports["./client"]` 时发生歧义报错 | 前端拆分子模块统一下沉至独立命名空间(如 `src/ui/`),杜绝同名文件与目录冲突 |
|
|
82
87
|
|
|
83
88
|
## 七、环境陷阱速查(升级验证时必读)
|
|
84
89
|
|
|
@@ -91,3 +96,4 @@ git push origin master --tags
|
|
|
91
96
|
| 沙箱解除后的测试盲区 | EPERM SKIP 分支掩盖真实缺陷 | CI/真机全绿 ≠ 本机沙箱绿;phase3/5 曾双双漏检 |
|
|
92
97
|
| gh --json 字段集漂移 | Unknown JSON field 直接报错 | 新增字段前用 `gh <cmd> --json zzz` 探测合法集;不跨域复制字段名(checks≠run) |
|
|
93
98
|
| PowerShell 5.1 默认策略 | 唤起终端报 profile 禁止运行红错 | 唤起命令带 -NoProfile(Windows 自带基线优先) |
|
|
99
|
+
| 浏览器单文件脚本环境 | 客户端产物带未剥除的 export/import 导致语法报错白屏 | build.mjs 聚合器自动剔除 export/import 并将子模块内联注入单一闭包 |
|