dsh-journey 0.0.0-stage → 0.2.1
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/AGENT_INSTALL.md +60 -0
- package/README.md +68 -2
- package/cordis.patch.yml +5 -0
- package/demo/P01_/346/275/256/346/261/220/350/241/250/README.md +28 -0
- package/demo/P01_/346/275/256/346/261/220/350/241/250//347/212/266/346/200/201.md +9 -0
- package/demo/P01_/346/275/256/346/261/220/350/241/250//350/256/241/345/210/222.md +17 -0
- package/demo/P02_/350/257/215/346/240/271/README.md +28 -0
- package/demo/P02_/350/257/215/346/240/271//347/212/266/346/200/201.md +9 -0
- package/demo/P02_/350/257/215/346/240/271//350/256/241/345/210/222.md +15 -0
- package/demo/P03_/351/233/250/345/243/260/README.md +28 -0
- package/demo/P03_/351/233/250/345/243/260//347/212/266/346/200/201.md +9 -0
- package/demo/P03_/351/233/250/345/243/260//350/256/241/345/210/222.md +15 -0
- package/demo//350/257/264/346/230/216.md +48 -0
- package/install.manifest.json +25 -0
- package/lib/client.js +64 -0
- package/lib/index.js +999 -0
- package/lib/journey-data.js +285 -0
- package/lib/journey-ui-adapter.js +87 -0
- package/package.json +40 -3
- package/public/_new.png +0 -0
- package/public/_rainbow_blob.png +0 -0
- package/public/_rainbow_dot.png +0 -0
- package/public/_wordmark.png +0 -0
- package/public/index.html +2315 -0
package/AGENT_INSTALL.md
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# AGENT_INSTALL · dsh-journey
|
|
2
|
+
|
|
3
|
+
> 给管事的 AI:照这个做,不要猜。
|
|
4
|
+
|
|
5
|
+
## 包
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
name: dsh-journey
|
|
9
|
+
version: 0.2.1
|
|
10
|
+
display: Journey
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 前提
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
DSH 0.2.2-rc.1
|
|
17
|
+
Windows
|
|
18
|
+
profile: %USERPROFILE%\.dsh\profiles\desktop
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 安装
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
1 把整个 dsh-journey 目录放到:
|
|
25
|
+
<profile>\node_modules\dsh-journey
|
|
26
|
+
|
|
27
|
+
2 在 <profile>\package.json 的 dsh.profile.bundles 里加:
|
|
28
|
+
"dsh-journey"
|
|
29
|
+
|
|
30
|
+
3 重启 DSH
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**不要手写 profile 的 journeyWorkspace**:
|
|
34
|
+
demo 工作区已经随包放在 `demo\`,插件默认读它。
|
|
35
|
+
包内 `cordis.patch.yml` 不含任何本机路径。
|
|
36
|
+
|
|
37
|
+
## 验证
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
左侧栏能看到 Journey
|
|
41
|
+
点进去出现 P01 / P02 / P03
|
|
42
|
+
GET /wind-chain/journey/api/cards 返回 ok=true
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 卸载
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
1 从 bundles 去掉 "dsh-journey"
|
|
49
|
+
2 重启 DSH
|
|
50
|
+
3 把 node_modules\dsh-journey 移到 DW回收站(不要删除)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 已知
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
· 重启后 client 才加载
|
|
57
|
+
· UI 与接口仅限本机访问
|
|
58
|
+
· 不要手改 profile 里的其他 bundle
|
|
59
|
+
· 接口路径仍是 /wind-chain/journey/api/cards(历史路径,不是包名写错)
|
|
60
|
+
```
|
package/README.md
CHANGED
|
@@ -1,3 +1,69 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Journey(风雨彩虹)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> 2026-11-13 | DSH 项目监控面板 | v0.2.1
|
|
4
|
+
> 中文统称:风雨彩虹
|
|
5
|
+
|
|
6
|
+
## 是什么
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
在 DSH 左侧栏加一个 Journey 入口:
|
|
10
|
+
· 项目卡片总览
|
|
11
|
+
· 点卡片看“正在进行 / 卡点”
|
|
12
|
+
· 再点右栏看“计划总览”
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
只读监控;不派活、不急停。
|
|
16
|
+
|
|
17
|
+
## 包结构
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
dsh-journey\
|
|
21
|
+
package.json dsh.bundle + dsh.client
|
|
22
|
+
cordis.patch.yml host 配置
|
|
23
|
+
lib\index.js host:数据接口
|
|
24
|
+
lib\client.js client:侧栏入口 + main 页面
|
|
25
|
+
lib\journey-data.js 数据层:A 系列 / 演示工作区
|
|
26
|
+
public\index.html v362 页面(单文件 + 图片)
|
|
27
|
+
README.md
|
|
28
|
+
AGENT_INSTALL.md
|
|
29
|
+
install.manifest.json
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 安装
|
|
33
|
+
|
|
34
|
+
见 `AGENT_INSTALL.md`。最短版:
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
装 dsh-journey 到 profile
|
|
38
|
+
bundle 加 dsh-journey
|
|
39
|
+
重启 DSH
|
|
40
|
+
左侧栏出现 Journey
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## 数据源
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
demo\ 随包携带,默认读取:
|
|
47
|
+
P01 潮汐表 / P02 词根 / P03 雨声
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
包内 `cordis.patch.yml` 不含本机路径;不需要填 `journeyWorkspace`。
|
|
51
|
+
以后要换成真实项目,再在 profile 级配置里加 `journeyWorkspace`。
|
|
52
|
+
|
|
53
|
+
## 验证
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
GET /wind-chain/journey/api/cards
|
|
57
|
+
→ ok=true
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
仅本机访问;对外部署前需加 token。
|
|
61
|
+
|
|
62
|
+
## 状态
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
host 可用
|
|
66
|
+
client 可用
|
|
67
|
+
演示工作区 P01/P02/P03 可用
|
|
68
|
+
v362 UI 冻结
|
|
69
|
+
```
|
package/cordis.patch.yml
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# P01 潮汐表
|
|
2
|
+
|
|
3
|
+
> 示例项目(虚构)。用于演示"**在跑**"状态。
|
|
4
|
+
|
|
5
|
+
## 问题
|
|
6
|
+
|
|
7
|
+
去海边之前要查潮汐,每次都要在网页上翻半天,还带广告。
|
|
8
|
+
|
|
9
|
+
## 方案
|
|
10
|
+
|
|
11
|
+
桌面小工具:读一份离线潮汐表,按日期输出当日高低潮两行。
|
|
12
|
+
|
|
13
|
+
## 怎么跑
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
python tide.py --date 2026-11-13
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 到哪一步
|
|
20
|
+
|
|
21
|
+
解析器写完了,正在做命令行输出。
|
|
22
|
+
|
|
23
|
+
## 不做什么
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
· 不做图形界面
|
|
27
|
+
· 不联网(数据是离线表)
|
|
28
|
+
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# P02 词根
|
|
2
|
+
|
|
3
|
+
> 示例项目(虚构)。用于演示"**停住、等我回一句话**"状态。
|
|
4
|
+
|
|
5
|
+
## 问题
|
|
6
|
+
|
|
7
|
+
背单词总在同一个词根上反复栽,散着背记不住。
|
|
8
|
+
|
|
9
|
+
## 方案
|
|
10
|
+
|
|
11
|
+
按词根聚类整理,做成可打印的单页——一页纸看完一批。
|
|
12
|
+
|
|
13
|
+
## 怎么跑
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
打开 词根.html(单文件,无依赖)
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 到哪一步
|
|
20
|
+
|
|
21
|
+
数据整理完了,**卡在一个决定上**:收录范围没定,写下去会返工。
|
|
22
|
+
|
|
23
|
+
## 不做什么
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
· 不做背单词 App
|
|
27
|
+
· 不做记忆曲线
|
|
28
|
+
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# P03 雨声
|
|
2
|
+
|
|
3
|
+
> 示例项目(虚构)。用于演示"**已结束**"状态。
|
|
4
|
+
|
|
5
|
+
## 问题
|
|
6
|
+
|
|
7
|
+
写东西的时候需要稳定白噪音,现成的播放器都带广告、带推荐。
|
|
8
|
+
|
|
9
|
+
## 方案
|
|
10
|
+
|
|
11
|
+
循环播放一段 30 秒雨声,没有界面,只有托盘图标。
|
|
12
|
+
|
|
13
|
+
## 怎么跑
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
dist\rain.exe
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 到哪一步
|
|
20
|
+
|
|
21
|
+
做完了,已归档。
|
|
22
|
+
|
|
23
|
+
## 不做什么
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
· 不做歌单
|
|
27
|
+
· 不做在线音源
|
|
28
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# 说明 · 演示工作区
|
|
2
|
+
|
|
3
|
+
> 用途:社团演示只跑这个目录 | 建:2026-11-13 | 归属:A07
|
|
4
|
+
> 性质:**纯示例**。三个虚构项目,不含任何真实项目、日志、隐私
|
|
5
|
+
|
|
6
|
+
## 为什么要有这个
|
|
7
|
+
|
|
8
|
+
自用工作区 `D:\deepseek_work` 里有真实项目、日志和隐私,**不能拿去演示**。
|
|
9
|
+
插件必须把"工作区路径"当参数(见 `技术资料\疾风连环_与工作站的关系.md` §6),
|
|
10
|
+
于是我们给它一个干净的小目录:插件装好那一刻,指向这里就能开演。
|
|
11
|
+
|
|
12
|
+
## 里面有什么
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
P01_潮汐表 在跑 演"它正在干什么"
|
|
16
|
+
P02_词根 等我说一句 演"为什么停"和"说一句话就能继续"
|
|
17
|
+
P03_雨声 结束 演"收口长什么样"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
三个项目在面板上的样子:`◎` 在跑 / `○` 空闲(含"等我"与"已结束")。
|
|
21
|
+
**v362 没有单独的"结束"标记**——救星查 A16 记录确认,三态是 NEW / 在跑 / 空闲。
|
|
22
|
+
所以 P03 会落在"空闲"组里,靠卡片第一句"已结束,无需处理"表达收口,不靠形状区分。
|
|
23
|
+
演示脚本 §3 的动线就是照这三张卡排的。
|
|
24
|
+
|
|
25
|
+
## 每个项目固定三件
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
README.md 问题 / 方案 / 怎么跑 / 到哪一步
|
|
29
|
+
状态.md 五字段(当前阶段 / 最近动作 / 下一步 / 卡点 / 最后更新)
|
|
30
|
+
计划.md 阶段 + 勾选 + ← 下一步
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 和插件的关系
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
· 插件的工作区路径指向本目录,不指向 D:\deepseek_work
|
|
37
|
+
· 数据格式以插件定稿为准;计划.md 是我方提议格式,
|
|
38
|
+
若插件定了别的 schema,只改这类文件,不动其他
|
|
39
|
+
· 目录名前缀(P0x)如需改成 A/Z,只改文件夹名
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 三条规矩
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
· 不往这里拷真实材料(一拷就污染,下次演示还得重来)
|
|
46
|
+
· 演示前先跑一遍:三个状态都要对得上
|
|
47
|
+
· 演完不删,下次彩排还要用
|
|
48
|
+
```
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dsh-journey",
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"displayName": "Journey",
|
|
5
|
+
"profile": "desktop",
|
|
6
|
+
"install": {
|
|
7
|
+
"target": "<profile>/node_modules/dsh-journey",
|
|
8
|
+
"bundle": "dsh-journey",
|
|
9
|
+
"restartRequired": true,
|
|
10
|
+
"bundledDemo": "demo/"
|
|
11
|
+
},
|
|
12
|
+
"verify": {
|
|
13
|
+
"ui": "sidebar Journey visible",
|
|
14
|
+
"api": "GET /wind-chain/journey/api/cards -> ok=true"
|
|
15
|
+
},
|
|
16
|
+
"uninstall": {
|
|
17
|
+
"removeBundle": "dsh-journey",
|
|
18
|
+
"moveTo": "D:\\deepseek_work\\DW回收站"
|
|
19
|
+
},
|
|
20
|
+
"notes": [
|
|
21
|
+
"demo workspace is bundled; no journeyWorkspace needed",
|
|
22
|
+
"UI and API are loopback-only",
|
|
23
|
+
"interface path keeps the historical /wind-chain prefix"
|
|
24
|
+
]
|
|
25
|
+
}
|
package/lib/client.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Journey to the Rainbow · client half
|
|
3
|
+
* DSH 槽位:sidebar.panellist + main;页面本体由 host 路由提供。
|
|
4
|
+
*/
|
|
5
|
+
window.__ModuleLoader__.load({
|
|
6
|
+
id: 'dsh-journey',
|
|
7
|
+
factory: (require) => {
|
|
8
|
+
const React = require('react');
|
|
9
|
+
const h = React.createElement;
|
|
10
|
+
const PANEL_ID = 'journey';
|
|
11
|
+
const PANEL_ORDER = 7;
|
|
12
|
+
|
|
13
|
+
function JourneyIcon() {
|
|
14
|
+
return h('svg', {
|
|
15
|
+
viewBox: '0 0 24 24',
|
|
16
|
+
width: 18,
|
|
17
|
+
height: 18,
|
|
18
|
+
fill: 'none',
|
|
19
|
+
stroke: 'currentColor',
|
|
20
|
+
strokeWidth: 1.6,
|
|
21
|
+
strokeLinecap: 'round',
|
|
22
|
+
strokeLinejoin: 'round',
|
|
23
|
+
'aria-hidden': true,
|
|
24
|
+
},
|
|
25
|
+
h('circle', { cx: 12, cy: 12, r: 9 }),
|
|
26
|
+
h('path', { d: 'M5.2 14.5c3.2-4.6 6.1-6.8 8.6-6.8 2.2 0 4.1 1.4 5.6 3.2' }),
|
|
27
|
+
h('path', { d: 'M7.2 17.2c2.2-3.2 4.4-4.8 6.6-4.8 1.7 0 3.2 1 4.6 2.4' })
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function JourneyPage() {
|
|
32
|
+
return h('div', {
|
|
33
|
+
style: { width: '100%', height: '100%', minHeight: 0, overflow: 'hidden' },
|
|
34
|
+
}, h('iframe', {
|
|
35
|
+
src: '/wind-chain/journey/ui/',
|
|
36
|
+
title: 'Journey to the Rainbow',
|
|
37
|
+
style: { width: '100%', height: '100%', border: 0, display: 'block', background: '#f7f7f4' },
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function apply(ctx) {
|
|
42
|
+
const disposeRow = ctx.slots.inject('sidebar.panellist', () =>
|
|
43
|
+
ctx.slots.register(
|
|
44
|
+
{
|
|
45
|
+
name: 'sidebar.panellist',
|
|
46
|
+
id: PANEL_ID,
|
|
47
|
+
order: PANEL_ORDER,
|
|
48
|
+
label: 'Journey',
|
|
49
|
+
},
|
|
50
|
+
JourneyIcon,
|
|
51
|
+
),
|
|
52
|
+
);
|
|
53
|
+
const disposePage = ctx.slots.inject('main', () =>
|
|
54
|
+
ctx.slots.register({ name: 'main', key: PANEL_ID }, JourneyPage),
|
|
55
|
+
);
|
|
56
|
+
ctx.effect(() => () => {
|
|
57
|
+
disposePage();
|
|
58
|
+
disposeRow();
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return { apply, inject: ['slots'] };
|
|
63
|
+
},
|
|
64
|
+
});
|