dsh-showcase 0.1.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/CHANGELOG.md +22 -0
- package/CHARACTER_ASSET_NOTICE.md +25 -0
- package/LICENSE +21 -0
- package/README.md +401 -0
- package/README.zh-CN.md +23 -0
- package/SECURITY.md +22 -0
- package/cordis.patch.yml +5 -0
- package/package.json +78 -0
- package/plugin/assets/dijiang-survey-surface.webp +0 -0
- package/plugin/assets/whale-girl-keyvisual.webp +0 -0
- package/plugin/client-host.js +3 -0
- package/plugin/client.js +328 -0
- package/plugin/index.d.ts +18 -0
- package/plugin/index.js +130 -0
- package/plugin/layout-summary.d.ts +31 -0
- package/plugin/layout-summary.js +961 -0
- package/plugin/poster-html.js +1049 -0
- package/plugin/report-schema.js +86 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
本项目遵循 [Semantic Versioning](https://semver.org/)。
|
|
4
|
+
|
|
5
|
+
## [Unreleased]
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- 终末地帝江号与蓝色大肥鱼两套独立海报主题。
|
|
10
|
+
- DSH 插件设置、Markdown 摘要和可选的自包含 HTML 海报。
|
|
11
|
+
- 跨项目源码发现、证据时效检查、路径约束和极端输入保护。
|
|
12
|
+
- 交付状态、空状态、响应式证据和主题匹配校验。
|
|
13
|
+
- GitHub CI、发布检查清单、贡献指南和安全策略。
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- 重写 GitHub 首页,明确安装、使用、隐私、素材和发布边界。
|
|
18
|
+
- 强化终末地帝江号加载器的机械校准环、厚进度轨和黄色切换幕。
|
|
19
|
+
|
|
20
|
+
## [0.1.0] - 2026-08-20
|
|
21
|
+
|
|
22
|
+
- 首个可发布版本准备。
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Character Asset Notice
|
|
2
|
+
|
|
3
|
+
The source code and ordinary repository files are licensed under the MIT License in [LICENSE](LICENSE).
|
|
4
|
+
|
|
5
|
+
The following demonstration assets are excluded from that MIT grant:
|
|
6
|
+
|
|
7
|
+
- `public/whale-girl-keyvisual.webp`
|
|
8
|
+
- `plugin/assets/whale-girl-keyvisual.webp`
|
|
9
|
+
- `docs/assets/whale-girl-keyvisual-4k.png`
|
|
10
|
+
- `public/dijiang-survey-surface.webp`
|
|
11
|
+
- `plugin/assets/dijiang-survey-surface.webp`
|
|
12
|
+
- `docs/assets/dijiang-desktop-latest.png`
|
|
13
|
+
- `docs/assets/dijiang-mobile-latest.png`
|
|
14
|
+
- `docs/assets/blue-big-fish-desktop-latest.png`
|
|
15
|
+
- `docs/assets/blue-big-fish-mobile-latest.png`
|
|
16
|
+
- `public/frontier-industrial.webp`
|
|
17
|
+
- `plugin/assets/frontier-industrial.webp`
|
|
18
|
+
|
|
19
|
+
The whale-girl key visual is an AI-generated demonstration image inspired by a community meme. It is not represented as copyright-free and does not imply official endorsement by DeepSeek.
|
|
20
|
+
|
|
21
|
+
The industrial reference photo is derived from Martin Portas's Unsplash photograph `c35nUxdOuYg`. Keep the source attribution and independently confirm the rights needed for the intended distribution.
|
|
22
|
+
|
|
23
|
+
The Dijiang survey surface and the README screenshots derived from the two visual themes are demonstration material. Their inclusion in this repository does not grant rights to third-party names, visual identities, characters, or source references that may have inspired them.
|
|
24
|
+
|
|
25
|
+
Replace these assets before commercial distribution, or independently confirm the rights needed for the intended use.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 dsh-showcase 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
ADDED
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
# dsh-showcase
|
|
2
|
+
|
|
3
|
+
[](https://github.com/DoveLi-Gu/dsh-showcase/actions/workflows/ci.yml)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
[](https://nodejs.org/)
|
|
6
|
+
|
|
7
|
+
**把编程 Agent 的改动和测试结果,整理成可核验的中文交付报告。**
|
|
8
|
+
|
|
9
|
+
dsh-showcase 是一个本地运行的 DSH 插件。它读取目标项目的 Git 改动、测试回执和可选截图,生成 Markdown 摘要与自包含 HTML 海报。
|
|
10
|
+
|
|
11
|
+
它不会上传项目文件,也不会把目标项目的数据写回本仓库。
|
|
12
|
+
|
|
13
|
+
> 本项目是社区工具,不是 DeepSeek、DSH 或《终末地》的官方产品。主题名仅描述视觉风格,不代表官方授权。演示素材说明见 [CHARACTER_ASSET_NOTICE.md](CHARACTER_ASSET_NOTICE.md)。
|
|
14
|
+
|
|
15
|
+
**目录**: [功能](#它能帮你做什么) · [快速开始](#5-分钟快速开始) · [赞助商](#赞助商) · [产物](#生成了哪些文件) · [截图](#截图证据) · [工具参数](#工具参数) · [边界与安全](#安全与边界) · [开发](#从源码开发)
|
|
16
|
+
|
|
17
|
+
## 先看效果
|
|
18
|
+
|
|
19
|
+
这是一个 **DSH 插件 + 本地采集 CLI**,不是只展示截图的主题包。插件负责把证据整理成摘要和海报;CLI 负责在任意目标项目中采集 Git 与测试回执。
|
|
20
|
+
|
|
21
|
+
<details>
|
|
22
|
+
<summary>终末地帝江号(机械工业 / 等高线 / 黄黑校准)</summary>
|
|
23
|
+
|
|
24
|
+
<p><img src="docs/assets/dijiang-desktop-latest.png" alt="终末地帝江号桌面 1K 预览,1024 x 640" width="680"></p>
|
|
25
|
+
<p><img src="docs/assets/dijiang-mobile-latest.png" alt="终末地帝江号移动端 1K 预览,455 x 1024" width="220"></p>
|
|
26
|
+
</details>
|
|
27
|
+
|
|
28
|
+
<details>
|
|
29
|
+
<summary>蓝色大肥鱼(浅蓝 / 钴蓝 / 角色主视觉)</summary>
|
|
30
|
+
|
|
31
|
+
<p><img src="docs/assets/blue-big-fish-desktop-latest.png" alt="蓝色大肥鱼桌面 1K 预览,1024 x 640" width="680"></p>
|
|
32
|
+
<p><img src="docs/assets/blue-big-fish-mobile-latest.png" alt="蓝色大肥鱼移动端 1K 预览,455 x 1024" width="220"></p>
|
|
33
|
+
</details>
|
|
34
|
+
|
|
35
|
+
## 你需要什么
|
|
36
|
+
|
|
37
|
+
- **必须**:已经可以运行的 DSH Web 环境;
|
|
38
|
+
- **必须**:Node.js 20+ 和 npm,用于安装本仓库及运行采集 CLI;
|
|
39
|
+
- **可选**:Git。没有 Git 时仍会生成报告,但状态会明确标为 `partial`;
|
|
40
|
+
- **可选**:Playwright 或其他浏览器验收工具。截图不是后端、CLI、库项目的必需项。
|
|
41
|
+
|
|
42
|
+
如果你只想查看海报,可以直接打开已经生成的 `.showcase/layout-poster.html`;如果你要让 DSH 读取新项目,按下面三步操作。
|
|
43
|
+
|
|
44
|
+
## 它能帮你做什么
|
|
45
|
+
|
|
46
|
+
| 你现在要做的事 | dsh-showcase 的输出 |
|
|
47
|
+
| --- | --- |
|
|
48
|
+
| 向别人说明这次改了什么 | Git 文件清单、增删行统计和当前引用 |
|
|
49
|
+
| 证明测试确实运行过 | 测试命令、退出码、耗时和脱敏后的输出 |
|
|
50
|
+
| 检查桌面和移动端界面 | 最多 3 张经过路径、时间和主题校验的截图 |
|
|
51
|
+
| 给交付结果做归档 | Markdown 摘要和可独立打开的 HTML 海报 |
|
|
52
|
+
| 证据还不完整 | 明确标记 `partial` 或 `failed`,不会伪装成功 |
|
|
53
|
+
|
|
54
|
+
支持前端、后端、CLI、Node.js、Python、Rust、Go、Java、库和静态 HTML 项目。
|
|
55
|
+
|
|
56
|
+
工作流只有一条:
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
目标项目 → init 配置 → capture 采集 → report.json → DSH 工具 → Markdown / HTML
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## 5 分钟快速开始
|
|
63
|
+
|
|
64
|
+
<details>
|
|
65
|
+
<summary><strong>第一步:安装插件</strong></summary>
|
|
66
|
+
|
|
67
|
+
当前版本尚未发布到 npm,因此先从 GitHub 源码安装。仓库放在固定目录后,DSH 插件和采集 CLI 可以共用同一份代码。
|
|
68
|
+
|
|
69
|
+
~~~powershell
|
|
70
|
+
Set-Location C:\tools
|
|
71
|
+
git clone https://github.com/DoveLi-Gu/dsh-showcase.git
|
|
72
|
+
Set-Location .\dsh-showcase
|
|
73
|
+
npm ci
|
|
74
|
+
dsh plugin --profile web add "C:\tools\dsh-showcase"
|
|
75
|
+
~~~
|
|
76
|
+
|
|
77
|
+
然后重启 `dsh web`,再新建一个会话。若命令提示 `dsh` 不存在,先安装并确认 DSH CLI 已加入 `PATH`;这不是本插件自身的安装错误。
|
|
78
|
+
|
|
79
|
+
打开 DSH 的插件设置,找到 **布局证据产物**。这里可以选择:
|
|
80
|
+
|
|
81
|
+
- **终末地帝江号**:机械工业、密集等高线和黄黑校准色;
|
|
82
|
+
- **蓝色大肥鱼**:浅蓝背景、角色主视觉和钴蓝强调;
|
|
83
|
+
- **生成自包含 HTML 海报**:关闭时只生成 Markdown,开启后同时生成 HTML。
|
|
84
|
+
|
|
85
|
+
主题只在插件设置中选择,目标项目不需要增加主题字段。
|
|
86
|
+
|
|
87
|
+
> **发布到 npm 后**:DSH 插件入口会改为 `dsh plugin --profile web add dsh-showcase`。当前版本尚未发布到 npm,也不要使用 `npm install --global dsh-showcase`:npm 包目前提供的是 DSH 插件运行时,不是全局 CLI。采集 CLI 仍按上面的 GitHub 源码目录运行。
|
|
88
|
+
|
|
89
|
+
</details>
|
|
90
|
+
|
|
91
|
+
<details>
|
|
92
|
+
<summary><strong>第二步:在目标项目采集证据</strong></summary>
|
|
93
|
+
|
|
94
|
+
进入你真正要检查的项目:
|
|
95
|
+
|
|
96
|
+
~~~powershell
|
|
97
|
+
Set-Location C:\work\your-project
|
|
98
|
+
$showcaseRepo = "C:\tools\dsh-showcase"
|
|
99
|
+
|
|
100
|
+
& "$showcaseRepo\node_modules\.bin\tsx.cmd" `
|
|
101
|
+
"$showcaseRepo\src\cli\index.ts" init
|
|
102
|
+
~~~
|
|
103
|
+
|
|
104
|
+
这会创建 `.showcase/config.json`。打开它,确认任务目标和测试命令:
|
|
105
|
+
|
|
106
|
+
~~~json
|
|
107
|
+
{
|
|
108
|
+
"task": "完成用户设置页并通过回归测试",
|
|
109
|
+
"baseRef": "HEAD~1",
|
|
110
|
+
"timeoutMs": 120000,
|
|
111
|
+
"tests": [
|
|
112
|
+
"npm test",
|
|
113
|
+
"npm run build"
|
|
114
|
+
]
|
|
115
|
+
}
|
|
116
|
+
~~~
|
|
117
|
+
|
|
118
|
+
然后执行采集:
|
|
119
|
+
|
|
120
|
+
~~~powershell
|
|
121
|
+
& "$showcaseRepo\node_modules\.bin\tsx.cmd" `
|
|
122
|
+
"$showcaseRepo\src\cli\index.ts" capture
|
|
123
|
+
~~~
|
|
124
|
+
|
|
125
|
+
采集完成后,目标项目中会出现:
|
|
126
|
+
|
|
127
|
+
~~~text
|
|
128
|
+
.showcase/
|
|
129
|
+
├─ config.json # 任务目标、Git 基准、测试和超时
|
|
130
|
+
└─ report.json # Git 改动、测试回执、截图记录和脱敏统计
|
|
131
|
+
~~~
|
|
132
|
+
|
|
133
|
+
`init` 只需执行一次。如果 `config.json` 已存在,直接编辑后运行 `capture`。
|
|
134
|
+
|
|
135
|
+
</details>
|
|
136
|
+
|
|
137
|
+
<details>
|
|
138
|
+
<summary><strong>第三步:让 DSH 生成报告</strong></summary>
|
|
139
|
+
|
|
140
|
+
回到这个目标项目的 DSH 会话,直接发送:
|
|
141
|
+
|
|
142
|
+
> 请调用 `showcase_layout_summary`,以当前项目为 `projectPath`,读取 `.showcase/report.json` 并生成中文交付摘要。本次需要 HTML 海报,请把 `generatePoster` 设为 `true`。
|
|
143
|
+
|
|
144
|
+
等价的工具参数:
|
|
145
|
+
|
|
146
|
+
~~~json
|
|
147
|
+
{
|
|
148
|
+
"projectPath": ".",
|
|
149
|
+
"locale": "zh-CN",
|
|
150
|
+
"generatePoster": true
|
|
151
|
+
}
|
|
152
|
+
~~~
|
|
153
|
+
|
|
154
|
+
`projectPath` 是唯一必填参数。默认输出:
|
|
155
|
+
|
|
156
|
+
~~~text
|
|
157
|
+
.showcase/layout-summary.md
|
|
158
|
+
.showcase/layout-poster.html
|
|
159
|
+
~~~
|
|
160
|
+
|
|
161
|
+
只想生成 Markdown 时,将 `generatePoster` 设为 `false`,或关闭插件设置里的海报开关。
|
|
162
|
+
|
|
163
|
+
</details>
|
|
164
|
+
|
|
165
|
+
<details>
|
|
166
|
+
<summary><strong>补充:最小可用命令</strong></summary>
|
|
167
|
+
|
|
168
|
+
如果你不需要自定义任务,下面是一次完整的最短流程(在目标项目目录执行):
|
|
169
|
+
|
|
170
|
+
~~~powershell
|
|
171
|
+
$showcaseRepo = "C:\tools\dsh-showcase"
|
|
172
|
+
& "$showcaseRepo\node_modules\.bin\tsx.cmd" "$showcaseRepo\src\cli\index.ts" init
|
|
173
|
+
& "$showcaseRepo\node_modules\.bin\tsx.cmd" "$showcaseRepo\src\cli\index.ts" capture
|
|
174
|
+
~~~
|
|
175
|
+
|
|
176
|
+
随后在 DSH 会话中调用 `showcase_layout_summary`。`init` 只执行一次;以后每次改完代码、测试和截图后,只需要重新执行 `capture`,再重新生成摘要。
|
|
177
|
+
|
|
178
|
+
</details>
|
|
179
|
+
|
|
180
|
+
## 赞助商
|
|
181
|
+
|
|
182
|
+
<div align="center">
|
|
183
|
+
<p><strong>项目主赞助</strong></p>
|
|
184
|
+
<a href="https://api.doveli.top/">
|
|
185
|
+
<img src="docs/assets/pigeon-logo-512.png" alt="鸽子中转站 Logo" width="160">
|
|
186
|
+
</a>
|
|
187
|
+
<h3><a href="https://api.doveli.top/">鸽子中转站 · Pigeon API Relay</a></h3>
|
|
188
|
+
<p><strong>稳定、透明、易接入的 AI API 中转服务</strong></p>
|
|
189
|
+
</div>
|
|
190
|
+
|
|
191
|
+
鸽子中转站(Pigeon API Relay)兼容 OpenAI API 格式,重点提供 GPT-5.6 全系列、Claude Opus 5、Fable 5 等模型,同时覆盖多种国产模型,适用于 AI 编程、客户端接入、日常对话、内容创作和图像生成等场景。
|
|
192
|
+
|
|
193
|
+
平台支持余额按量与订阅套餐两种方式,包含灵活的日卡、月卡方案;模型价格和套餐权益清晰可查。你可以在一个控制台中统一管理 API Key、模型调用、余额、用量和订阅权益,并查看服务状态与详细接入文档。具体模型、价格及套餐权益以鸽子中转站站内实时信息为准。
|
|
194
|
+
|
|
195
|
+
<p align="center">
|
|
196
|
+
<code>兼容 OpenAI API</code> · <code>GPT-5.6 全系列</code> · <code>余额按量</code> · <code>日卡/月卡订阅</code>
|
|
197
|
+
</p>
|
|
198
|
+
|
|
199
|
+
<p align="center">
|
|
200
|
+
<a href="https://api.doveli.top/register"><strong>创建账户</strong></a>
|
|
201
|
+
· <a href="https://api.doveli.top/model-pricing/">模型与价格</a>
|
|
202
|
+
· <a href="https://api.doveli.top/subscriptions">订阅套餐</a>
|
|
203
|
+
· <a href="https://www.doveli.top/docs/">接入文档</a>
|
|
204
|
+
· <a href="https://api.doveli.top/status/">服务状态</a>
|
|
205
|
+
</p>
|
|
206
|
+
|
|
207
|
+
<table>
|
|
208
|
+
<thead>
|
|
209
|
+
<tr>
|
|
210
|
+
<th align="center" width="190">赞助商</th>
|
|
211
|
+
<th align="left">介绍</th>
|
|
212
|
+
</tr>
|
|
213
|
+
</thead>
|
|
214
|
+
<tbody>
|
|
215
|
+
<tr>
|
|
216
|
+
<td align="center" valign="middle">
|
|
217
|
+
<a href="https://api.doveli.top/">
|
|
218
|
+
<img src="docs/assets/pigeon-logo-512.png" alt="鸽子中转站 Logo" width="92"><br>
|
|
219
|
+
<strong>鸽子中转站</strong>
|
|
220
|
+
</a>
|
|
221
|
+
</td>
|
|
222
|
+
<td>
|
|
223
|
+
<p><strong>稳定、透明、易接入的 AI API 中转服务,兼容 OpenAI API 格式。</strong></p>
|
|
224
|
+
<p>重点提供 GPT-5.6 全系列、Claude Opus 5、Fable 5 等模型,同时覆盖多种国产模型,适用于 AI 编程、客户端接入、日常对话、内容创作和图像生成等场景。</p>
|
|
225
|
+
<p>平台支持余额按量与订阅套餐两种方式,包含灵活的日卡、月卡方案;用户可以统一管理 API Key、模型调用、余额、用量和订阅权益,并查看模型价格、套餐权益、服务状态和详细接入文档。具体模型、价格及套餐权益以站内实时信息为准。</p>
|
|
226
|
+
</td>
|
|
227
|
+
</tr>
|
|
228
|
+
</tbody>
|
|
229
|
+
</table>
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
## 最省事的用法
|
|
233
|
+
|
|
234
|
+
安装插件后,也可以让有终端权限的 DSH Agent 完成采集和汇总。把下面这段话里的工具目录改成你的实际路径:
|
|
235
|
+
|
|
236
|
+
> 使用 `C:\tools\dsh-showcase` 的 CLI 检查当前项目。如果没有 `.showcase/config.json`,先执行 init 并让我确认测试命令;然后执行 capture,最后调用 `showcase_layout_summary` 生成中文 Markdown 和 HTML 海报。不要上传任何项目文件。
|
|
237
|
+
|
|
238
|
+
这样用户只需要确认测试命令,不需要手动编写工具参数。
|
|
239
|
+
|
|
240
|
+
## 生成了哪些文件
|
|
241
|
+
|
|
242
|
+
| 文件 | 作用 | 建议提交 Git |
|
|
243
|
+
| --- | --- | --- |
|
|
244
|
+
| `.showcase/config.json` | 当前项目的采集配置 | 按团队需要决定 |
|
|
245
|
+
| `.showcase/report.json` | 结构化 Git、测试和截图回执 | 通常不提交 |
|
|
246
|
+
| `.showcase/layout-summary.md` | 适合审查和聊天阅读的摘要 | 通常不提交 |
|
|
247
|
+
| `.showcase/layout-poster.html` | 可单独打开的展示海报 | 通常不提交 |
|
|
248
|
+
|
|
249
|
+
本仓库已经默认忽略 `.showcase/`。其他项目也建议把它加入 `.gitignore`:
|
|
250
|
+
|
|
251
|
+
~~~gitignore
|
|
252
|
+
.showcase/
|
|
253
|
+
~~~
|
|
254
|
+
|
|
255
|
+
## 测试命令如何确定
|
|
256
|
+
|
|
257
|
+
`init` 会根据项目文件尝试填写默认测试:
|
|
258
|
+
|
|
259
|
+
| 检测到的文件 | 默认测试 |
|
|
260
|
+
| --- | --- |
|
|
261
|
+
| `package.json` 中存在 `scripts.test` | `npm test` |
|
|
262
|
+
| `pyproject.toml`、`pytest.ini`、`setup.cfg` 或 `requirements.txt` | `pytest -q` |
|
|
263
|
+
| `Cargo.toml` | `cargo test` |
|
|
264
|
+
| `go.mod` | `go test ./...` |
|
|
265
|
+
| `pom.xml` | `mvn test` |
|
|
266
|
+
| `gradlew.bat` | `gradlew.bat test` |
|
|
267
|
+
|
|
268
|
+
测试也可以单独设置超时:
|
|
269
|
+
|
|
270
|
+
~~~json
|
|
271
|
+
{
|
|
272
|
+
"tests": [
|
|
273
|
+
"npm test",
|
|
274
|
+
{
|
|
275
|
+
"command": "pytest -q",
|
|
276
|
+
"timeoutMs": 180000
|
|
277
|
+
}
|
|
278
|
+
]
|
|
279
|
+
}
|
|
280
|
+
~~~
|
|
281
|
+
|
|
282
|
+
没有识别到测试时仍会生成报告,但状态会是 `partial`。
|
|
283
|
+
|
|
284
|
+
## 截图证据
|
|
285
|
+
|
|
286
|
+
CLI 会保留 `report.json` 中已经存在的截图记录,但不会自动启动浏览器截图。
|
|
287
|
+
|
|
288
|
+
前端项目可以用 Playwright、浏览器验收工具或自己的截图脚本,把图片保存在目标项目内,再把记录加入 `report.json.screenshots`:
|
|
289
|
+
|
|
290
|
+
~~~json
|
|
291
|
+
{
|
|
292
|
+
"id": "desktop-after",
|
|
293
|
+
"label": "桌面完成态",
|
|
294
|
+
"theme": "frontier-signal",
|
|
295
|
+
"viewport": {
|
|
296
|
+
"name": "desktop",
|
|
297
|
+
"width": 1440,
|
|
298
|
+
"height": 900
|
|
299
|
+
},
|
|
300
|
+
"imagePath": "evidence/desktop-after.png",
|
|
301
|
+
"capturedAt": "2026-08-20T10:00:00.000Z",
|
|
302
|
+
"kind": "after",
|
|
303
|
+
"url": "http://localhost:4173/"
|
|
304
|
+
}
|
|
305
|
+
~~~
|
|
306
|
+
|
|
307
|
+
截图规则:
|
|
308
|
+
|
|
309
|
+
- `imagePath` 必须位于目标项目内部;
|
|
310
|
+
- `theme` 使用 `frontier-signal` 或 `blue-big-fish`;
|
|
311
|
+
- 截图主题必须与 DSH 插件当前主题匹配;
|
|
312
|
+
- 缺失、过期、跨主题或不可读的截图不会被当成有效证据;
|
|
313
|
+
- 没有可视界面的项目可以不提供截图。
|
|
314
|
+
|
|
315
|
+
截图不是“随便放一张图片”:它必须属于目标项目、采集时间不能晚于报告、格式和尺寸必须可读,而且主题要和当前海报一致。跨主题截图会保留在报告里,但会从当前海报隔离出去。
|
|
316
|
+
|
|
317
|
+
`frontier-signal` 是“终末地帝江号”的内部兼容键,不是第三套主题;普通用户只需要在 DSH 设置中选择中文主题名。
|
|
318
|
+
|
|
319
|
+
## 工具参数
|
|
320
|
+
|
|
321
|
+
工具名:`showcase_layout_summary`
|
|
322
|
+
|
|
323
|
+
| 参数 | 必填 | 默认值或用途 |
|
|
324
|
+
| --- | --- | --- |
|
|
325
|
+
| `projectPath` | 是 | 目标项目根目录 |
|
|
326
|
+
| `reportPath` | 否 | `.showcase/report.json` |
|
|
327
|
+
| `outputPath` | 否 | `.showcase/layout-summary.md` |
|
|
328
|
+
| `posterPath` | 否 | `.showcase/layout-poster.html` |
|
|
329
|
+
| `locale` | 否 | `zh-CN`;也支持 `en` |
|
|
330
|
+
| `generatePoster` | 否 | 覆盖本次调用,不修改持久设置 |
|
|
331
|
+
| `appPath` | 否 | 特殊目录项目的布局源码路径 |
|
|
332
|
+
| `cssPath` | 否 | 特殊目录项目的样式文件路径 |
|
|
333
|
+
|
|
334
|
+
特殊项目结构示例:
|
|
335
|
+
|
|
336
|
+
~~~json
|
|
337
|
+
{
|
|
338
|
+
"projectPath": "C:/work/your-project",
|
|
339
|
+
"appPath": "src/client/App.tsx",
|
|
340
|
+
"cssPath": "src/client/styles.css",
|
|
341
|
+
"locale": "zh-CN",
|
|
342
|
+
"generatePoster": false
|
|
343
|
+
}
|
|
344
|
+
~~~
|
|
345
|
+
|
|
346
|
+
## 常见问题
|
|
347
|
+
|
|
348
|
+
### 为什么没有生成 HTML 海报?
|
|
349
|
+
|
|
350
|
+
检查插件设置中的海报开关,或在本次调用中传入 `"generatePoster": true`。Markdown 默认仍会生成。
|
|
351
|
+
|
|
352
|
+
### 为什么状态是 partial?
|
|
353
|
+
|
|
354
|
+
采集阶段通常是没有 Git 或没有可运行的测试命令;汇总阶段还可能额外提示截图缺失或过期。`partial` 的含义是“可以继续审查,但证据不完整”,不是程序崩溃。
|
|
355
|
+
|
|
356
|
+
### 为什么截图没有出现在海报里?
|
|
357
|
+
|
|
358
|
+
检查文件是否存在、路径是否位于目标项目内、`capturedAt` 是否早于图片修改时间,以及截图主题是否匹配。
|
|
359
|
+
|
|
360
|
+
### 可以用于非前端项目吗?
|
|
361
|
+
|
|
362
|
+
可以。后端、CLI 和库项目不要求截图,仍可生成 Git 与测试回执。
|
|
363
|
+
|
|
364
|
+
## 安全与边界
|
|
365
|
+
|
|
366
|
+
- 所有默认产物只写入目标项目的 `.showcase/`;
|
|
367
|
+
- 没有远程上传步骤;
|
|
368
|
+
- 常见 Token、Authorization、GitHub Token 格式和本机绝对路径会尝试脱敏;
|
|
369
|
+
- 报告最大 2 MiB,单张截图最大 8 MiB、尺寸不超过 16384 px;
|
|
370
|
+
- 每张海报最多嵌入 3 张有效截图;
|
|
371
|
+
- 脱敏不是绝对保证,公开分享前仍需人工检查。
|
|
372
|
+
|
|
373
|
+
## 从源码开发
|
|
374
|
+
|
|
375
|
+
~~~powershell
|
|
376
|
+
npm ci
|
|
377
|
+
npm run check
|
|
378
|
+
npm run dev
|
|
379
|
+
~~~
|
|
380
|
+
|
|
381
|
+
主要目录:
|
|
382
|
+
|
|
383
|
+
~~~text
|
|
384
|
+
src/ CLI、报告 schema、Git、命令和脱敏逻辑
|
|
385
|
+
plugin/ DSH 插件、设置面板、摘要和海报生成器
|
|
386
|
+
tests/ 单元、跨项目、极端输入和产物测试
|
|
387
|
+
docs/ 使用、上传、发布和预览素材
|
|
388
|
+
.github/workflows/ Node 20/22 CI
|
|
389
|
+
~~~
|
|
390
|
+
|
|
391
|
+
维护文档:
|
|
392
|
+
|
|
393
|
+
- [贡献指南](CONTRIBUTING.md)
|
|
394
|
+
- [安全策略](SECURITY.md)
|
|
395
|
+
- [发布检查清单](docs/RELEASE_CHECKLIST_ZH.md)
|
|
396
|
+
- [GitHub 上传与维护指南](docs/GITHUB_UPLOAD_GUIDE_ZH.md)
|
|
397
|
+
- [演示素材授权说明](CHARACTER_ASSET_NOTICE.md)
|
|
398
|
+
|
|
399
|
+
## 许可证
|
|
400
|
+
|
|
401
|
+
源代码和普通仓库文件使用 MIT,详见 [LICENSE](LICENSE)。演示角色、照片和主题截图不自动包含在 MIT 授权中,详见 [CHARACTER_ASSET_NOTICE.md](CHARACTER_ASSET_NOTICE.md)。
|
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# dsh-showcase 中文说明
|
|
2
|
+
|
|
3
|
+
`dsh-showcase` 是一个本地优先的 DSH 插件。它在任意目标项目中读取 Git 改动、测试回执和可选的响应式截图,生成中文 Markdown 摘要与自包含 HTML 交付海报。
|
|
4
|
+
|
|
5
|
+
完整的功能、安装、三步使用流程、截图规则、边界条件和主题预览都在主 README 中:
|
|
6
|
+
|
|
7
|
+
[打开 README.md](README.md)
|
|
8
|
+
|
|
9
|
+
赞助商:**鸽子中转站(Pigeon API Relay)**。它兼容 OpenAI API 格式,提供 GPT-5.6 全系列、Claude Opus 5、Fable 5 等重点模型和多种国产模型,并支持余额按量、日卡/月卡订阅及统一权益管理;详情见主 README 快速开始后的赞助商区域。
|
|
10
|
+
|
|
11
|
+
本项目提供两套主题:
|
|
12
|
+
|
|
13
|
+
- **终末地帝江号**:机械工业、密集等高线、科技仪表和黄黑校准色;
|
|
14
|
+
- **蓝色大肥鱼**:浅蓝水面、钴蓝强调、角色主视觉和流动轨迹。
|
|
15
|
+
|
|
16
|
+
主题只在 DSH 插件设置里选择,目标项目不需要增加 `theme` 字段。
|
|
17
|
+
|
|
18
|
+
维护与发布相关文档:
|
|
19
|
+
|
|
20
|
+
- [GitHub 上传与维护指南](docs/GITHUB_UPLOAD_GUIDE_ZH.md)
|
|
21
|
+
- [发布检查清单](docs/RELEASE_CHECKLIST_ZH.md)
|
|
22
|
+
- [贡献指南](CONTRIBUTING.md)
|
|
23
|
+
- [安全策略](SECURITY.md)
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# 安全策略
|
|
2
|
+
|
|
3
|
+
## 支持范围
|
|
4
|
+
|
|
5
|
+
当前公开开发版本为 `0.1.x`。安全修复会优先合入最新的 `main`,并在需要时发布补丁版本。
|
|
6
|
+
|
|
7
|
+
## 报告问题
|
|
8
|
+
|
|
9
|
+
请优先使用 GitHub 仓库的 **Security → Report a vulnerability** 私密报告功能。
|
|
10
|
+
|
|
11
|
+
报告中请包含:
|
|
12
|
+
|
|
13
|
+
- 受影响的版本或提交。
|
|
14
|
+
- 最小复现步骤。
|
|
15
|
+
- 预期与实际行为。
|
|
16
|
+
- 风险范围,例如路径逃逸、敏感信息泄露、命令执行或错误的验证结论。
|
|
17
|
+
|
|
18
|
+
不要在公开 Issue、讨论区或截图中粘贴真实 API key、私有仓库内容、个人路径、Cookie、Token 或完整 `.showcase/report.json`。
|
|
19
|
+
|
|
20
|
+
## 安全边界
|
|
21
|
+
|
|
22
|
+
`dsh-showcase` 会尝试脱敏常见凭据和本机路径,但无法保证识别所有秘密格式。使用者仍需在公开分享前人工复核生成的 Markdown、HTML 和截图。
|
package/cordis.patch.yml
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dsh-showcase",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Local, verifiable delivery evidence reports for coding-agent work.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./plugin/client-host.js",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"author": "DoveLi-Gu",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/DoveLi-Gu/dsh-showcase.git"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/DoveLi-Gu/dsh-showcase#readme",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/DoveLi-Gu/dsh-showcase/issues"
|
|
16
|
+
},
|
|
17
|
+
"keywords": ["deepseek-harness", "dsh-plugin", "coding-agent", "delivery-evidence", "proof-of-work", "developer-tools"],
|
|
18
|
+
"engines": {
|
|
19
|
+
"node": ">=20"
|
|
20
|
+
},
|
|
21
|
+
"packageManager": "npm@11.15.0",
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"access": "public"
|
|
24
|
+
},
|
|
25
|
+
"exports": {
|
|
26
|
+
".": "./plugin/client-host.js",
|
|
27
|
+
"./plugin": "./plugin/index.js",
|
|
28
|
+
"./client": "./plugin/client.js",
|
|
29
|
+
"./package.json": "./package.json"
|
|
30
|
+
},
|
|
31
|
+
"dsh": {
|
|
32
|
+
"bundle": { "patch": "./cordis.patch.yml" },
|
|
33
|
+
"client": {
|
|
34
|
+
"inject": [
|
|
35
|
+
"@deepseek-ai/dsh-client-connection",
|
|
36
|
+
"@deepseek-ai/dsh-client-locale",
|
|
37
|
+
"@deepseek-ai/dsh-client-runtime",
|
|
38
|
+
"@deepseek-ai/dsh-client-ui-settings",
|
|
39
|
+
"@deepseek-ai/dsh-client-ui-settings-plugins"
|
|
40
|
+
],
|
|
41
|
+
"platform": "web"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"files": [
|
|
45
|
+
"plugin/client-host.js",
|
|
46
|
+
"plugin/client.js",
|
|
47
|
+
"plugin/index.d.ts",
|
|
48
|
+
"plugin/index.js",
|
|
49
|
+
"plugin/layout-summary.d.ts",
|
|
50
|
+
"plugin/layout-summary.js",
|
|
51
|
+
"plugin/poster-html.js",
|
|
52
|
+
"plugin/report-schema.js",
|
|
53
|
+
"plugin/assets/dijiang-survey-surface.webp",
|
|
54
|
+
"plugin/assets/whale-girl-keyvisual.webp",
|
|
55
|
+
"cordis.patch.yml",
|
|
56
|
+
"README.md",
|
|
57
|
+
"README.zh-CN.md",
|
|
58
|
+
"CHANGELOG.md",
|
|
59
|
+
"SECURITY.md",
|
|
60
|
+
"CHARACTER_ASSET_NOTICE.md",
|
|
61
|
+
"LICENSE"
|
|
62
|
+
],
|
|
63
|
+
"scripts": {
|
|
64
|
+
"dev": "vite",
|
|
65
|
+
"build": "tsc -b && vite build",
|
|
66
|
+
"typecheck": "tsc -b --pretty false",
|
|
67
|
+
"test": "vitest run",
|
|
68
|
+
"pack:check": "npm pack --dry-run --json --ignore-scripts",
|
|
69
|
+
"check": "npm run typecheck && npm test && npm run build && npm run pack:check",
|
|
70
|
+
"prepublishOnly": "npm run check",
|
|
71
|
+
"cli": "tsx src/cli/index.ts",
|
|
72
|
+
"init": "tsx src/cli/index.ts init",
|
|
73
|
+
"capture": "tsx src/cli/index.ts capture"
|
|
74
|
+
},
|
|
75
|
+
"dependencies": { "@deepseek-ai/dsh-settings": "^0.1.0-rc.6", "@deepseek-ai/schemastery": "^3.18.1", "zod": "latest" },
|
|
76
|
+
"peerDependencies": { "@deepseek-ai/dsh-tools": "^0.1.0-rc.6", "@deepseek-ai/cordis": "^4.0.1" },
|
|
77
|
+
"devDependencies": { "@deepseek-ai/cordis": "^4.0.1", "@deepseek-ai/dsh-tools": "^0.1.0-rc.6", "@types/node": "latest", "@types/react": "latest", "@types/react-dom": "latest", "@vitejs/plugin-react": "latest", "jsdom": "latest", "lucide-react": "latest", "react": "latest", "react-dom": "latest", "tsx": "latest", "typescript": "latest", "vite": "latest", "vitest": "latest" }
|
|
78
|
+
}
|
|
Binary file
|
|
Binary file
|