stratagate-dsh 0.3.14 → 0.3.16
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 +680 -665
- package/LICENSE +21 -21
- package/dist/client.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/plugin.js +624 -128
- package/dist/plugin.js.map +1 -1
- package/docs/DSH.md +268 -268
- package/docs/DSH.zh-CN.md +245 -245
- package/docs/benchmarks/issue-128-windows-review.json +104 -104
- package/docs/benchmarks/issue-128-windows.json +103 -103
- package/docs/dreaming-agent.md +45 -45
- package/docs/feedback.md +50 -0
- package/docs/issue-128-lease-cache-review-followup.md +55 -55
- package/docs/issue-128-review-followup.md +58 -58
- package/docs/npm-release.md +52 -52
- package/docs/validation/issue119.md +41 -41
- package/package.json +246 -246
- package/screenshots.json +8 -8
|
@@ -1,104 +1,104 @@
|
|
|
1
|
-
{
|
|
2
|
-
"baselineSha": "e954eaf2f2cbbef4bb6226a2ebb35191424868c2",
|
|
3
|
-
"sourceSha": "415096f19d09d9bcc29c44634c7ae78fd6c2f52d",
|
|
4
|
-
"capturedAt": "2026-10-10T11:22:46.467Z",
|
|
5
|
-
"scope": "Synthetic DSH runtime on Windows; not the user database or full DSH UI process.",
|
|
6
|
-
"scenarios": [
|
|
7
|
-
{
|
|
8
|
-
"name": "small",
|
|
9
|
-
"namespaces": 100,
|
|
10
|
-
"rawUserCharsPerNamespace": 8192,
|
|
11
|
-
"databaseBytes": 8941568,
|
|
12
|
-
"rounds": 3,
|
|
13
|
-
"intervalMs": 3000,
|
|
14
|
-
"measurements": {
|
|
15
|
-
"before": {
|
|
16
|
-
"pollsMs": [
|
|
17
|
-
2035.9983000000002,
|
|
18
|
-
2204.014,
|
|
19
|
-
2077.0357000000004
|
|
20
|
-
],
|
|
21
|
-
"meanPollMs": 2105.682666666667,
|
|
22
|
-
"fullMemoryLoads": 300,
|
|
23
|
-
"cpuMs": 3015,
|
|
24
|
-
"wallMs": 15335.1882,
|
|
25
|
-
"processCpuPercent": 19.660665136147465,
|
|
26
|
-
"rssBefore": 56864768,
|
|
27
|
-
"rssAfter": 73207808,
|
|
28
|
-
"peakRss": 74285056,
|
|
29
|
-
"node": "v24.19.0",
|
|
30
|
-
"platform": "win32",
|
|
31
|
-
"arch": "x64",
|
|
32
|
-
"cpuMeasurementNote": "A zero CPU delta means below Windows counter resolution in this sample, not zero actual CPU work."
|
|
33
|
-
},
|
|
34
|
-
"after": {
|
|
35
|
-
"pollsMs": [
|
|
36
|
-
32.8809,
|
|
37
|
-
5.330300000000079,
|
|
38
|
-
2.298700000000281
|
|
39
|
-
],
|
|
40
|
-
"meanPollMs": 13.503300000000118,
|
|
41
|
-
"fullMemoryLoads": 0,
|
|
42
|
-
"cpuMs": 31,
|
|
43
|
-
"wallMs": 9071.7334,
|
|
44
|
-
"processCpuPercent": 0.3417208005693818,
|
|
45
|
-
"rssBefore": 56606720,
|
|
46
|
-
"rssAfter": 54337536,
|
|
47
|
-
"peakRss": 57950208,
|
|
48
|
-
"node": "v24.19.0",
|
|
49
|
-
"platform": "win32",
|
|
50
|
-
"arch": "x64",
|
|
51
|
-
"cpuMeasurementNote": "A zero CPU delta means below Windows counter resolution in this sample, not zero actual CPU work."
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
"name": "large",
|
|
57
|
-
"namespaces": 100,
|
|
58
|
-
"rawUserCharsPerNamespace": 1572864,
|
|
59
|
-
"databaseBytes": 1519824896,
|
|
60
|
-
"rounds": 3,
|
|
61
|
-
"intervalMs": 3000,
|
|
62
|
-
"measurements": {
|
|
63
|
-
"before": {
|
|
64
|
-
"pollsMs": [
|
|
65
|
-
12951.9511,
|
|
66
|
-
8731.1299,
|
|
67
|
-
9476.834900000005
|
|
68
|
-
],
|
|
69
|
-
"meanPollMs": 10386.638633333334,
|
|
70
|
-
"fullMemoryLoads": 300,
|
|
71
|
-
"cpuMs": 24844,
|
|
72
|
-
"wallMs": 40200.4599,
|
|
73
|
-
"processCpuPercent": 61.80028801113292,
|
|
74
|
-
"rssBefore": 56283136,
|
|
75
|
-
"rssAfter": 157401088,
|
|
76
|
-
"peakRss": 332111872,
|
|
77
|
-
"node": "v24.19.0",
|
|
78
|
-
"platform": "win32",
|
|
79
|
-
"arch": "x64",
|
|
80
|
-
"cpuMeasurementNote": "A zero CPU delta means below Windows counter resolution in this sample, not zero actual CPU work."
|
|
81
|
-
},
|
|
82
|
-
"after": {
|
|
83
|
-
"pollsMs": [
|
|
84
|
-
29.53,
|
|
85
|
-
3.372899999999845,
|
|
86
|
-
2.309900000000198
|
|
87
|
-
],
|
|
88
|
-
"meanPollMs": 11.737600000000015,
|
|
89
|
-
"fullMemoryLoads": 0,
|
|
90
|
-
"cpuMs": 109,
|
|
91
|
-
"wallMs": 9061.4375,
|
|
92
|
-
"processCpuPercent": 1.2028996503038287,
|
|
93
|
-
"rssBefore": 52092928,
|
|
94
|
-
"rssAfter": 51056640,
|
|
95
|
-
"peakRss": 54579200,
|
|
96
|
-
"node": "v24.19.0",
|
|
97
|
-
"platform": "win32",
|
|
98
|
-
"arch": "x64",
|
|
99
|
-
"cpuMeasurementNote": "A zero CPU delta means below Windows counter resolution in this sample, not zero actual CPU work."
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
]
|
|
104
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"baselineSha": "e954eaf2f2cbbef4bb6226a2ebb35191424868c2",
|
|
3
|
+
"sourceSha": "415096f19d09d9bcc29c44634c7ae78fd6c2f52d",
|
|
4
|
+
"capturedAt": "2026-10-10T11:22:46.467Z",
|
|
5
|
+
"scope": "Synthetic DSH runtime on Windows; not the user database or full DSH UI process.",
|
|
6
|
+
"scenarios": [
|
|
7
|
+
{
|
|
8
|
+
"name": "small",
|
|
9
|
+
"namespaces": 100,
|
|
10
|
+
"rawUserCharsPerNamespace": 8192,
|
|
11
|
+
"databaseBytes": 8941568,
|
|
12
|
+
"rounds": 3,
|
|
13
|
+
"intervalMs": 3000,
|
|
14
|
+
"measurements": {
|
|
15
|
+
"before": {
|
|
16
|
+
"pollsMs": [
|
|
17
|
+
2035.9983000000002,
|
|
18
|
+
2204.014,
|
|
19
|
+
2077.0357000000004
|
|
20
|
+
],
|
|
21
|
+
"meanPollMs": 2105.682666666667,
|
|
22
|
+
"fullMemoryLoads": 300,
|
|
23
|
+
"cpuMs": 3015,
|
|
24
|
+
"wallMs": 15335.1882,
|
|
25
|
+
"processCpuPercent": 19.660665136147465,
|
|
26
|
+
"rssBefore": 56864768,
|
|
27
|
+
"rssAfter": 73207808,
|
|
28
|
+
"peakRss": 74285056,
|
|
29
|
+
"node": "v24.19.0",
|
|
30
|
+
"platform": "win32",
|
|
31
|
+
"arch": "x64",
|
|
32
|
+
"cpuMeasurementNote": "A zero CPU delta means below Windows counter resolution in this sample, not zero actual CPU work."
|
|
33
|
+
},
|
|
34
|
+
"after": {
|
|
35
|
+
"pollsMs": [
|
|
36
|
+
32.8809,
|
|
37
|
+
5.330300000000079,
|
|
38
|
+
2.298700000000281
|
|
39
|
+
],
|
|
40
|
+
"meanPollMs": 13.503300000000118,
|
|
41
|
+
"fullMemoryLoads": 0,
|
|
42
|
+
"cpuMs": 31,
|
|
43
|
+
"wallMs": 9071.7334,
|
|
44
|
+
"processCpuPercent": 0.3417208005693818,
|
|
45
|
+
"rssBefore": 56606720,
|
|
46
|
+
"rssAfter": 54337536,
|
|
47
|
+
"peakRss": 57950208,
|
|
48
|
+
"node": "v24.19.0",
|
|
49
|
+
"platform": "win32",
|
|
50
|
+
"arch": "x64",
|
|
51
|
+
"cpuMeasurementNote": "A zero CPU delta means below Windows counter resolution in this sample, not zero actual CPU work."
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name": "large",
|
|
57
|
+
"namespaces": 100,
|
|
58
|
+
"rawUserCharsPerNamespace": 1572864,
|
|
59
|
+
"databaseBytes": 1519824896,
|
|
60
|
+
"rounds": 3,
|
|
61
|
+
"intervalMs": 3000,
|
|
62
|
+
"measurements": {
|
|
63
|
+
"before": {
|
|
64
|
+
"pollsMs": [
|
|
65
|
+
12951.9511,
|
|
66
|
+
8731.1299,
|
|
67
|
+
9476.834900000005
|
|
68
|
+
],
|
|
69
|
+
"meanPollMs": 10386.638633333334,
|
|
70
|
+
"fullMemoryLoads": 300,
|
|
71
|
+
"cpuMs": 24844,
|
|
72
|
+
"wallMs": 40200.4599,
|
|
73
|
+
"processCpuPercent": 61.80028801113292,
|
|
74
|
+
"rssBefore": 56283136,
|
|
75
|
+
"rssAfter": 157401088,
|
|
76
|
+
"peakRss": 332111872,
|
|
77
|
+
"node": "v24.19.0",
|
|
78
|
+
"platform": "win32",
|
|
79
|
+
"arch": "x64",
|
|
80
|
+
"cpuMeasurementNote": "A zero CPU delta means below Windows counter resolution in this sample, not zero actual CPU work."
|
|
81
|
+
},
|
|
82
|
+
"after": {
|
|
83
|
+
"pollsMs": [
|
|
84
|
+
29.53,
|
|
85
|
+
3.372899999999845,
|
|
86
|
+
2.309900000000198
|
|
87
|
+
],
|
|
88
|
+
"meanPollMs": 11.737600000000015,
|
|
89
|
+
"fullMemoryLoads": 0,
|
|
90
|
+
"cpuMs": 109,
|
|
91
|
+
"wallMs": 9061.4375,
|
|
92
|
+
"processCpuPercent": 1.2028996503038287,
|
|
93
|
+
"rssBefore": 52092928,
|
|
94
|
+
"rssAfter": 51056640,
|
|
95
|
+
"peakRss": 54579200,
|
|
96
|
+
"node": "v24.19.0",
|
|
97
|
+
"platform": "win32",
|
|
98
|
+
"arch": "x64",
|
|
99
|
+
"cpuMeasurementNote": "A zero CPU delta means below Windows counter resolution in this sample, not zero actual CPU work."
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
]
|
|
104
|
+
}
|
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
{
|
|
2
|
-
"baselineSha": "e954eaf2f2cbbef4bb6226a2ebb35191424868c2",
|
|
3
|
-
"capturedAt": "2026-10-09T14:26:54.222Z",
|
|
4
|
-
"scope": "Synthetic DSH runtime on Windows; not the user database or full DSH UI process.",
|
|
5
|
-
"scenarios": [
|
|
6
|
-
{
|
|
7
|
-
"name": "small",
|
|
8
|
-
"namespaces": 100,
|
|
9
|
-
"rawUserCharsPerNamespace": 8192,
|
|
10
|
-
"databaseBytes": 8949760,
|
|
11
|
-
"rounds": 3,
|
|
12
|
-
"intervalMs": 3000,
|
|
13
|
-
"measurements": {
|
|
14
|
-
"before": {
|
|
15
|
-
"pollsMs": [
|
|
16
|
-
1559.2007,
|
|
17
|
-
2646.6144999999997,
|
|
18
|
-
2287.6314999999995
|
|
19
|
-
],
|
|
20
|
-
"meanPollMs": 2164.482233333333,
|
|
21
|
-
"fullMemoryLoads": 300,
|
|
22
|
-
"cpuMs": 3547,
|
|
23
|
-
"wallMs": 15505.109400000001,
|
|
24
|
-
"processCpuPercent": 22.876330043824133,
|
|
25
|
-
"rssBefore": 56803328,
|
|
26
|
-
"rssAfter": 73904128,
|
|
27
|
-
"peakRss": 74313728,
|
|
28
|
-
"node": "v24.19.0",
|
|
29
|
-
"platform": "win32",
|
|
30
|
-
"arch": "x64",
|
|
31
|
-
"cpuMeasurementNote": "A zero CPU delta means below Windows counter resolution in this sample, not zero actual CPU work."
|
|
32
|
-
},
|
|
33
|
-
"after": {
|
|
34
|
-
"pollsMs": [
|
|
35
|
-
17.57029999999999,
|
|
36
|
-
3.0478000000002794,
|
|
37
|
-
4.158300000000054
|
|
38
|
-
],
|
|
39
|
-
"meanPollMs": 8.258800000000107,
|
|
40
|
-
"fullMemoryLoads": 0,
|
|
41
|
-
"cpuMs": 16,
|
|
42
|
-
"wallMs": 9039.4974,
|
|
43
|
-
"processCpuPercent": 0.17700099122767599,
|
|
44
|
-
"rssBefore": 56590336,
|
|
45
|
-
"rssAfter": 54194176,
|
|
46
|
-
"peakRss": 57184256,
|
|
47
|
-
"node": "v24.19.0",
|
|
48
|
-
"platform": "win32",
|
|
49
|
-
"arch": "x64",
|
|
50
|
-
"cpuMeasurementNote": "A zero CPU delta means below Windows counter resolution in this sample, not zero actual CPU work."
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
"name": "large",
|
|
56
|
-
"namespaces": 100,
|
|
57
|
-
"rawUserCharsPerNamespace": 1572864,
|
|
58
|
-
"databaseBytes": 1519833088,
|
|
59
|
-
"rounds": 3,
|
|
60
|
-
"intervalMs": 3000,
|
|
61
|
-
"measurements": {
|
|
62
|
-
"before": {
|
|
63
|
-
"pollsMs": [
|
|
64
|
-
13949.606099999999,
|
|
65
|
-
12921.8561,
|
|
66
|
-
12388.245900000002
|
|
67
|
-
],
|
|
68
|
-
"meanPollMs": 13086.569366666668,
|
|
69
|
-
"fullMemoryLoads": 300,
|
|
70
|
-
"cpuMs": 32203,
|
|
71
|
-
"wallMs": 48289.1154,
|
|
72
|
-
"processCpuPercent": 66.687906235698,
|
|
73
|
-
"rssBefore": 56573952,
|
|
74
|
-
"rssAfter": 180330496,
|
|
75
|
-
"peakRss": 284123136,
|
|
76
|
-
"node": "v24.19.0",
|
|
77
|
-
"platform": "win32",
|
|
78
|
-
"arch": "x64",
|
|
79
|
-
"cpuMeasurementNote": "A zero CPU delta means below Windows counter resolution in this sample, not zero actual CPU work."
|
|
80
|
-
},
|
|
81
|
-
"after": {
|
|
82
|
-
"pollsMs": [
|
|
83
|
-
40.84779999999998,
|
|
84
|
-
3.018500000000131,
|
|
85
|
-
3.4000999999998385
|
|
86
|
-
],
|
|
87
|
-
"meanPollMs": 15.75546666666665,
|
|
88
|
-
"fullMemoryLoads": 0,
|
|
89
|
-
"cpuMs": 63,
|
|
90
|
-
"wallMs": 9055.1278,
|
|
91
|
-
"processCpuPercent": 0.6957383859342107,
|
|
92
|
-
"rssBefore": 56807424,
|
|
93
|
-
"rssAfter": 54194176,
|
|
94
|
-
"peakRss": 57184256,
|
|
95
|
-
"node": "v24.19.0",
|
|
96
|
-
"platform": "win32",
|
|
97
|
-
"arch": "x64",
|
|
98
|
-
"cpuMeasurementNote": "A zero CPU delta means below Windows counter resolution in this sample, not zero actual CPU work."
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
]
|
|
103
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"baselineSha": "e954eaf2f2cbbef4bb6226a2ebb35191424868c2",
|
|
3
|
+
"capturedAt": "2026-10-09T14:26:54.222Z",
|
|
4
|
+
"scope": "Synthetic DSH runtime on Windows; not the user database or full DSH UI process.",
|
|
5
|
+
"scenarios": [
|
|
6
|
+
{
|
|
7
|
+
"name": "small",
|
|
8
|
+
"namespaces": 100,
|
|
9
|
+
"rawUserCharsPerNamespace": 8192,
|
|
10
|
+
"databaseBytes": 8949760,
|
|
11
|
+
"rounds": 3,
|
|
12
|
+
"intervalMs": 3000,
|
|
13
|
+
"measurements": {
|
|
14
|
+
"before": {
|
|
15
|
+
"pollsMs": [
|
|
16
|
+
1559.2007,
|
|
17
|
+
2646.6144999999997,
|
|
18
|
+
2287.6314999999995
|
|
19
|
+
],
|
|
20
|
+
"meanPollMs": 2164.482233333333,
|
|
21
|
+
"fullMemoryLoads": 300,
|
|
22
|
+
"cpuMs": 3547,
|
|
23
|
+
"wallMs": 15505.109400000001,
|
|
24
|
+
"processCpuPercent": 22.876330043824133,
|
|
25
|
+
"rssBefore": 56803328,
|
|
26
|
+
"rssAfter": 73904128,
|
|
27
|
+
"peakRss": 74313728,
|
|
28
|
+
"node": "v24.19.0",
|
|
29
|
+
"platform": "win32",
|
|
30
|
+
"arch": "x64",
|
|
31
|
+
"cpuMeasurementNote": "A zero CPU delta means below Windows counter resolution in this sample, not zero actual CPU work."
|
|
32
|
+
},
|
|
33
|
+
"after": {
|
|
34
|
+
"pollsMs": [
|
|
35
|
+
17.57029999999999,
|
|
36
|
+
3.0478000000002794,
|
|
37
|
+
4.158300000000054
|
|
38
|
+
],
|
|
39
|
+
"meanPollMs": 8.258800000000107,
|
|
40
|
+
"fullMemoryLoads": 0,
|
|
41
|
+
"cpuMs": 16,
|
|
42
|
+
"wallMs": 9039.4974,
|
|
43
|
+
"processCpuPercent": 0.17700099122767599,
|
|
44
|
+
"rssBefore": 56590336,
|
|
45
|
+
"rssAfter": 54194176,
|
|
46
|
+
"peakRss": 57184256,
|
|
47
|
+
"node": "v24.19.0",
|
|
48
|
+
"platform": "win32",
|
|
49
|
+
"arch": "x64",
|
|
50
|
+
"cpuMeasurementNote": "A zero CPU delta means below Windows counter resolution in this sample, not zero actual CPU work."
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"name": "large",
|
|
56
|
+
"namespaces": 100,
|
|
57
|
+
"rawUserCharsPerNamespace": 1572864,
|
|
58
|
+
"databaseBytes": 1519833088,
|
|
59
|
+
"rounds": 3,
|
|
60
|
+
"intervalMs": 3000,
|
|
61
|
+
"measurements": {
|
|
62
|
+
"before": {
|
|
63
|
+
"pollsMs": [
|
|
64
|
+
13949.606099999999,
|
|
65
|
+
12921.8561,
|
|
66
|
+
12388.245900000002
|
|
67
|
+
],
|
|
68
|
+
"meanPollMs": 13086.569366666668,
|
|
69
|
+
"fullMemoryLoads": 300,
|
|
70
|
+
"cpuMs": 32203,
|
|
71
|
+
"wallMs": 48289.1154,
|
|
72
|
+
"processCpuPercent": 66.687906235698,
|
|
73
|
+
"rssBefore": 56573952,
|
|
74
|
+
"rssAfter": 180330496,
|
|
75
|
+
"peakRss": 284123136,
|
|
76
|
+
"node": "v24.19.0",
|
|
77
|
+
"platform": "win32",
|
|
78
|
+
"arch": "x64",
|
|
79
|
+
"cpuMeasurementNote": "A zero CPU delta means below Windows counter resolution in this sample, not zero actual CPU work."
|
|
80
|
+
},
|
|
81
|
+
"after": {
|
|
82
|
+
"pollsMs": [
|
|
83
|
+
40.84779999999998,
|
|
84
|
+
3.018500000000131,
|
|
85
|
+
3.4000999999998385
|
|
86
|
+
],
|
|
87
|
+
"meanPollMs": 15.75546666666665,
|
|
88
|
+
"fullMemoryLoads": 0,
|
|
89
|
+
"cpuMs": 63,
|
|
90
|
+
"wallMs": 9055.1278,
|
|
91
|
+
"processCpuPercent": 0.6957383859342107,
|
|
92
|
+
"rssBefore": 56807424,
|
|
93
|
+
"rssAfter": 54194176,
|
|
94
|
+
"peakRss": 57184256,
|
|
95
|
+
"node": "v24.19.0",
|
|
96
|
+
"platform": "win32",
|
|
97
|
+
"arch": "x64",
|
|
98
|
+
"cpuMeasurementNote": "A zero CPU delta means below Windows counter resolution in this sample, not zero actual CPU work."
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
}
|
package/docs/dreaming-agent.md
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
# 目录 Dreaming Agent
|
|
2
|
-
|
|
3
|
-
第一版 scope 为 `directory`,持久化 `policyVersion` 用于后续扩展与兼容检查。任务调度、认领/租约、证据读取、目录写入与 DSH 会话宿主分开:Core 管理原子提交与断点,Runtime 协调运行,DSH 提供真实 Agent 和会话;UI 只请求状态与控制动作。
|
|
4
|
-
|
|
5
|
-
新会话头部传入目录所属工作区的 `cwd`,优先从匹配 namespace 的活动普通会话取值,再从持久化会话头部恢复;不读取历史正文。项目/会话作用域找不到真实路径时暂停并提示先打开对应普通会话,不以插件目录冒充工作区。全局/自定义导入空间无唯一工作区时使用宿主运行目录作为查看地址,工具权限仍按 run scope 隔离。打开会话前完成宿主 flush。旧版本生成的无 `cwd` 会话头不可改写;打开或继续时提示终止旧轮并重新开始,保留已提交的目录修改与旧日志。
|
|
6
|
-
|
|
7
|
-
## 工具与权限
|
|
8
|
-
|
|
9
|
-
| 工具 | 行为 |
|
|
10
|
-
| --- | --- |
|
|
11
|
-
| `memory_list_topics` / `memory_expand_topic` | 运行空间内目录导航与分页总览,独立 scoped 实现 |
|
|
12
|
-
| `dreaming_search` | 冻结有效 Event、其引用的原始消息及有效图谱检索 |
|
|
13
|
-
| `dreaming_read` | 完整 Event、来源 Block、图谱节点的只读分页 |
|
|
14
|
-
| `dreaming_directory` | 当前章节改名、小节改名/合并、当前批 Event 移动、带来源的总览/经验替换或追加 |
|
|
15
|
-
| `dreaming_finish` | 确认当前批已检查;推进下一批,最终结束 |
|
|
16
|
-
|
|
17
|
-
Agent 只注册上述工具,拒绝继承的 shell、网络、文件和记忆写入工具。普通聊天工具的证据评估批次与使用反馈不复用。`dreaming_search` 使用底层检索;`dreaming_read` 使用 `renderBlock`,不调用会提升层级/改变衰减锚点的 `expandBlock`。Dreaming 系统提示词注入持久用户画像,仅作为相关偏好和长期要求的参考,不能替代目录来源证据;会话不重新摄入记忆,也不继承普通聊天的自动检索上下文。
|
|
18
|
-
|
|
19
|
-
## 持久化与并发
|
|
20
|
-
|
|
21
|
-
任务保存在既有 Topic 状态中,无新增数据库/schema 迁移。任务冻结来源版本,按章节拆成有限上下文页面。提交在 Core 现有事务内检查 run ID、owner、epoch、租约、章节版本、来源有效性和已读证据。大 Event 只有连续分页读完才进入证据集合;检查覆盖断点不依赖最近工具日志的长度。
|
|
22
|
-
|
|
23
|
-
Event 分页按递归稳定字段顺序序列化,页结果和持久断点绑定完整内容摘要。重启不依赖对象属性插入顺序;旧格式断点或内容摘要改变时清除旧覆盖并从零读取。当前批所有 Event 的完整证据覆盖满足后才能完成,未读完的大 Event 不会被报告为已检查。
|
|
24
|
-
|
|
25
|
-
暂停等当前步骤到达安全边界,继续时换 epoch;终止立即取消当前请求并提升 epoch,使迟到结果无法写入。已完成写入保留。运行定期续租;崩溃后过期认领可人工继续。并发投影改变来源或章节会拒绝写入,由用户终止后重新规划。
|
|
26
|
-
|
|
27
|
-
小节身份不依赖当前标题;合并保留旧身份的别名,后续普通投影保留身份、别名和有效经验。空改动和回到近期旧状态的编辑被拒绝,不能用反复改名制造进展。
|
|
28
|
-
|
|
29
|
-
## 增长、结束与消耗
|
|
30
|
-
|
|
31
|
-
批次最多 24 个 Event,并按预计上下文容量进一步拆小;这是页面大小,不是整轮调用限额。目录页的进度按这些批次计算(例如 `1/14` 批约为 7%),不是简单按章节数计算;一个较大的章节可能拆成多个批次。每个工作步骤和人工继续时使用 DSH 的 surface replacement 重建模型工作上下文,只携带一个当前批次、必要的现有总览、用户方向、最近工具结果和错误反馈;原始会话日志完整保留。目录 sections/overview 页绑定内容摘要并持久记录覆盖,任务明确给出已读范围与下一未读位置,压缩后不重新开始浏览。失败写入提案单独保留,不受最近 12 条工具日志的窗口影响;过大提案只提供错误与分批修正提示,完整内容仍在会话记录。用户方向本身过长时暂停并提示精简,避免静默丢失指令。
|
|
32
|
-
|
|
33
|
-
`dreaming_finish` 表示批次已全部检查,允许无需修改;所有冻结批次完成后进入 completed。重复无效工具调用、连续无工具进展的模型步骤或失败时暂停。没有累计 token 限额,界面和控制接口不提供上限设置。内部计量保留实际模型输入结构的 token 估算和输出估算/供应商输出计数,仅用于诊断;目录页和模型任务上下文不展示消耗数字,不声称价格或账单精度。旧任务继续时在原子事务中清除历史 tokenLimit,保留任务、批次进度、证据断点与会话身份。
|
|
34
|
-
|
|
35
|
-
无进展计数在新增完整 Event 证据、推进连续有效来源页、读取经校验的目录新项或成功修改目录时重置。搜索关键词变化、空结果与重读已覆盖页均不重置;每批允许有限探索。空响应(含 `(empty)`)或普通文字回复结束但任务未完成时,在同一 Agent Loop 内提示继续;连续三次没有工具行动才暂停,不按整轮累计。复用持久化的 idleModelSteps,工具检查点或完成批次后重置;不使用后台定时重试。用户暂停、终止和真实请求错误优先于自动继续。切批消息明确上一批已完成、当前批待处理,完成全部批次后只生成总结,不再催促工具调用。
|
|
36
|
-
|
|
37
|
-
原生 Agent 在请求最终组装后的 `llm/stream` 边界计量实际消息(含临时任务和系统提示)及 JSON 工具定义,自动继续也走相同入口。单次响应最多 32768 Token;若一轮回复尚未产生任何原生工具调用,普通文本超过 8192 Token 会中断并暂停,避免模型重复描述调用计划而持续消耗。reasoning 不计入这条普通文本边界,但 reasoning、普通说明和真正的工具参数均计入单次响应消耗及 32768 Token 总上限。模型失败时拦截宿主自动重试并暂停。没有整轮时长或累计调用次数硬限额;完成后的总结请求也计量,但不重新激活任务或租约。
|
|
38
|
-
|
|
39
|
-
目录写入使用带必需 kind 的明确参数结构,操作数组必须扁平;错误不视为成功提交,Agent 可以纠正并重新提交。暂停时不为说明原因额外调用模型,而是在原生会话写入插件通知,报告真实原因、检查批次与已保存修改。start 每次创建新 run/session;resume 保留本轮会话身份,重建工作上下文,避免累计发送旧轮次历史。
|
|
40
|
-
|
|
41
|
-
每批每次继续最多允许 64 次成功目录提交,达到后在当前步骤检查点暂停并保留已写入内容。用户明确继续或进入下一批时重新计数;页数与整轮调用量不受此上限限制。无工具循环在请求发送前被拦截时,不计入模型调用次数或 Token 消耗。
|
|
42
|
-
|
|
43
|
-
## 验证边界
|
|
44
|
-
|
|
45
|
-
测试使用隔离 SQLite 与 DSH JSONL 目录,验证真实 Agent Loop、工具拒绝、分批、写入、暂停/终止、用户补充、宿主重启恢复与完整会话。浏览器检查桌面/手机布局、浮窗原文、控制按钮与减少动画设置。测试模型是脚本化流,不证明真实模型能正确提炼经验;未改用户生产数据,也未发布。
|
|
1
|
+
# 目录 Dreaming Agent
|
|
2
|
+
|
|
3
|
+
第一版 scope 为 `directory`,持久化 `policyVersion` 用于后续扩展与兼容检查。任务调度、认领/租约、证据读取、目录写入与 DSH 会话宿主分开:Core 管理原子提交与断点,Runtime 协调运行,DSH 提供真实 Agent 和会话;UI 只请求状态与控制动作。
|
|
4
|
+
|
|
5
|
+
新会话头部传入目录所属工作区的 `cwd`,优先从匹配 namespace 的活动普通会话取值,再从持久化会话头部恢复;不读取历史正文。项目/会话作用域找不到真实路径时暂停并提示先打开对应普通会话,不以插件目录冒充工作区。全局/自定义导入空间无唯一工作区时使用宿主运行目录作为查看地址,工具权限仍按 run scope 隔离。打开会话前完成宿主 flush。旧版本生成的无 `cwd` 会话头不可改写;打开或继续时提示终止旧轮并重新开始,保留已提交的目录修改与旧日志。
|
|
6
|
+
|
|
7
|
+
## 工具与权限
|
|
8
|
+
|
|
9
|
+
| 工具 | 行为 |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| `memory_list_topics` / `memory_expand_topic` | 运行空间内目录导航与分页总览,独立 scoped 实现 |
|
|
12
|
+
| `dreaming_search` | 冻结有效 Event、其引用的原始消息及有效图谱检索 |
|
|
13
|
+
| `dreaming_read` | 完整 Event、来源 Block、图谱节点的只读分页 |
|
|
14
|
+
| `dreaming_directory` | 当前章节改名、小节改名/合并、当前批 Event 移动、带来源的总览/经验替换或追加 |
|
|
15
|
+
| `dreaming_finish` | 确认当前批已检查;推进下一批,最终结束 |
|
|
16
|
+
|
|
17
|
+
Agent 只注册上述工具,拒绝继承的 shell、网络、文件和记忆写入工具。普通聊天工具的证据评估批次与使用反馈不复用。`dreaming_search` 使用底层检索;`dreaming_read` 使用 `renderBlock`,不调用会提升层级/改变衰减锚点的 `expandBlock`。Dreaming 系统提示词注入持久用户画像,仅作为相关偏好和长期要求的参考,不能替代目录来源证据;会话不重新摄入记忆,也不继承普通聊天的自动检索上下文。
|
|
18
|
+
|
|
19
|
+
## 持久化与并发
|
|
20
|
+
|
|
21
|
+
任务保存在既有 Topic 状态中,无新增数据库/schema 迁移。任务冻结来源版本,按章节拆成有限上下文页面。提交在 Core 现有事务内检查 run ID、owner、epoch、租约、章节版本、来源有效性和已读证据。大 Event 只有连续分页读完才进入证据集合;检查覆盖断点不依赖最近工具日志的长度。
|
|
22
|
+
|
|
23
|
+
Event 分页按递归稳定字段顺序序列化,页结果和持久断点绑定完整内容摘要。重启不依赖对象属性插入顺序;旧格式断点或内容摘要改变时清除旧覆盖并从零读取。当前批所有 Event 的完整证据覆盖满足后才能完成,未读完的大 Event 不会被报告为已检查。
|
|
24
|
+
|
|
25
|
+
暂停等当前步骤到达安全边界,继续时换 epoch;终止立即取消当前请求并提升 epoch,使迟到结果无法写入。已完成写入保留。运行定期续租;崩溃后过期认领可人工继续。并发投影改变来源或章节会拒绝写入,由用户终止后重新规划。
|
|
26
|
+
|
|
27
|
+
小节身份不依赖当前标题;合并保留旧身份的别名,后续普通投影保留身份、别名和有效经验。空改动和回到近期旧状态的编辑被拒绝,不能用反复改名制造进展。
|
|
28
|
+
|
|
29
|
+
## 增长、结束与消耗
|
|
30
|
+
|
|
31
|
+
批次最多 24 个 Event,并按预计上下文容量进一步拆小;这是页面大小,不是整轮调用限额。目录页的进度按这些批次计算(例如 `1/14` 批约为 7%),不是简单按章节数计算;一个较大的章节可能拆成多个批次。每个工作步骤和人工继续时使用 DSH 的 surface replacement 重建模型工作上下文,只携带一个当前批次、必要的现有总览、用户方向、最近工具结果和错误反馈;原始会话日志完整保留。目录 sections/overview 页绑定内容摘要并持久记录覆盖,任务明确给出已读范围与下一未读位置,压缩后不重新开始浏览。失败写入提案单独保留,不受最近 12 条工具日志的窗口影响;过大提案只提供错误与分批修正提示,完整内容仍在会话记录。用户方向本身过长时暂停并提示精简,避免静默丢失指令。
|
|
32
|
+
|
|
33
|
+
`dreaming_finish` 表示批次已全部检查,允许无需修改;所有冻结批次完成后进入 completed。重复无效工具调用、连续无工具进展的模型步骤或失败时暂停。没有累计 token 限额,界面和控制接口不提供上限设置。内部计量保留实际模型输入结构的 token 估算和输出估算/供应商输出计数,仅用于诊断;目录页和模型任务上下文不展示消耗数字,不声称价格或账单精度。旧任务继续时在原子事务中清除历史 tokenLimit,保留任务、批次进度、证据断点与会话身份。
|
|
34
|
+
|
|
35
|
+
无进展计数在新增完整 Event 证据、推进连续有效来源页、读取经校验的目录新项或成功修改目录时重置。搜索关键词变化、空结果与重读已覆盖页均不重置;每批允许有限探索。空响应(含 `(empty)`)或普通文字回复结束但任务未完成时,在同一 Agent Loop 内提示继续;连续三次没有工具行动才暂停,不按整轮累计。复用持久化的 idleModelSteps,工具检查点或完成批次后重置;不使用后台定时重试。用户暂停、终止和真实请求错误优先于自动继续。切批消息明确上一批已完成、当前批待处理,完成全部批次后只生成总结,不再催促工具调用。
|
|
36
|
+
|
|
37
|
+
原生 Agent 在请求最终组装后的 `llm/stream` 边界计量实际消息(含临时任务和系统提示)及 JSON 工具定义,自动继续也走相同入口。单次响应最多 32768 Token;若一轮回复尚未产生任何原生工具调用,普通文本超过 8192 Token 会中断并暂停,避免模型重复描述调用计划而持续消耗。reasoning 不计入这条普通文本边界,但 reasoning、普通说明和真正的工具参数均计入单次响应消耗及 32768 Token 总上限。模型失败时拦截宿主自动重试并暂停。没有整轮时长或累计调用次数硬限额;完成后的总结请求也计量,但不重新激活任务或租约。
|
|
38
|
+
|
|
39
|
+
目录写入使用带必需 kind 的明确参数结构,操作数组必须扁平;错误不视为成功提交,Agent 可以纠正并重新提交。暂停时不为说明原因额外调用模型,而是在原生会话写入插件通知,报告真实原因、检查批次与已保存修改。start 每次创建新 run/session;resume 保留本轮会话身份,重建工作上下文,避免累计发送旧轮次历史。
|
|
40
|
+
|
|
41
|
+
每批每次继续最多允许 64 次成功目录提交,达到后在当前步骤检查点暂停并保留已写入内容。用户明确继续或进入下一批时重新计数;页数与整轮调用量不受此上限限制。无工具循环在请求发送前被拦截时,不计入模型调用次数或 Token 消耗。
|
|
42
|
+
|
|
43
|
+
## 验证边界
|
|
44
|
+
|
|
45
|
+
测试使用隔离 SQLite 与 DSH JSONL 目录,验证真实 Agent Loop、工具拒绝、分批、写入、暂停/终止、用户补充、宿主重启恢复与完整会话。浏览器检查桌面/手机布局、浮窗原文、控制按钮与减少动画设置。测试模型是脚本化流,不证明真实模型能正确提炼经验;未改用户生产数据,也未发布。
|
package/docs/feedback.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# StrataGate 邮件反馈与本地运行诊断
|
|
2
|
+
|
|
3
|
+
反馈针对 StrataGate 插件的故障、使用疑问和改进建议。默认流程:用户要求或接受整理反馈 → Agent 写草稿 → 程序附加本地诊断快照 → 用户在插件内检查完整报告 → 复制到自己的邮箱发送。收件地址为 `jiahongcheng61@gmail.com`。
|
|
4
|
+
|
|
5
|
+
## Agent 信息与交互
|
|
6
|
+
|
|
7
|
+
- 常驻策略只说明作用域、主动建议门槛和诊断入口。工具说明包含填写依据与更新语义;详细运行数据按需返回。
|
|
8
|
+
- 当前 DSH 默认 native 模式在组装模型请求时提供可见工具的名称、说明与参数;这两个工具采用该方式。PTC 模式由宿主生成工具 SDK 声明。渐进披露用于运行摘要、分页异常与诊断详情:常驻保留短入口,调用后再读取数据,生成草稿时由程序直接附加完整本地快照。
|
|
9
|
+
- `feedback_prepare` 自动整理本地诊断摘要,返回草稿链接与尚未发送状态。新问题用 `new_draft=true`,修改时省略字段保留原值,空字符串或空数组清空字段。用户编辑过的自定义 Markdown 内容会保留。
|
|
10
|
+
- `stratagate_diagnostics` 默认读取当前记忆空间摘要,使用返回的 `id` 获取脱敏详情,使用 `nextOffset` 分页。诊断属于运行数据,不走语义记忆检索与强化。
|
|
11
|
+
- 已填好的 AI 草稿直接进入检查页;修改、完整预览、复制、邮箱和下载位于同一流程。报告预览固定后,复制与下载使用同一快照;用户修改后重新检查。
|
|
12
|
+
- 对话里的同源反馈链接由插件接管点击,阻止宿主 Markdown 将其再次交给侧边浏览器。DSH 0.2.0 通过 `sidebar.settings` 中共享的设置面板 store 打开插件页,反馈空间和目标页由插件传递;关闭重开和已打开面板内切换空间均保留目标草稿。
|
|
13
|
+
- 桌面主界面使用 `dsh-app://app/`;插件通过桌面预加载桥接 `dshDesktopBoot.ready()` 的 `streamBaseUrl` 确认当前 HTTP 后端,仅接管该后端根路径下的有效反馈链接。启动信息未返回时保留首次点击,确认归属后进入设置;其他实例或读取失败则交回宿主原有链接行为。桌面草稿导航沿用主界面的认证代理,直接在当前面板切换。
|
|
14
|
+
- 明确、持续影响当前任务的插件问题才适合主动建议,先处理问题,每个会话最多建议一次,接受后准备草稿。普通后台重试只记本地诊断,保持聊天安静。后台诊断不自动注入模型上下文。
|
|
15
|
+
- 页面提供可复制的 AI 请求提示词,用户回到相关会话发送。直接请求已经授权创建草稿。
|
|
16
|
+
|
|
17
|
+
## 数据范围与统计口径
|
|
18
|
+
|
|
19
|
+
运行数据保存在本地数据库的 `stratagate_dsh_diagnostic_*` 表,与核心记忆快照分开。调用结束、操作完成/失败、检索与工具结果等事件只入有界缓冲,最长约五秒批量落盘;正常关闭时尽力刷盘。最多缓冲 256 条,超出丢弃最旧记录并报告丢弃数。数据库忙时立即放弃本次写入并保留缓冲,统计失败不使聊天或记忆任务失败。
|
|
20
|
+
|
|
21
|
+
原始诊断最多保留七天、全库最多 2000 条;按 UTC 日、记忆空间、模块、模型和插件版本的汇总最多保留九十天、全库最多 10000 行。报告覆盖最近七个 UTC 日(含今天);最多读取 2000 行汇总、展示 40 组模型/版本明细和一页 20 条异常,截断与下一页位置均明确返回。尚未落盘的缓冲在异常退出时可能丢失;写入失败和缓冲丢弃计数属于当前进程,报告保留采集开始时间与缺失说明。
|
|
22
|
+
|
|
23
|
+
- `modelCalls`:实际经过采集器的流式请求尝试,包括失败、取消、截断、内部重试。
|
|
24
|
+
- `modelCancelled`:流式 aborted 结束、直接抛出的 AbortError/ABORT_ERR 或消费方提前结束;取消与 `modelFailed` 分开计数,已返回 usage 仍保留。
|
|
25
|
+
- `operations`:一次记忆模型操作,包含其内部内容修正及路由回退请求。它与持久化后台任务的整个生命周期不同。一次失败后由后台再次执行,会形成另一条操作记录。
|
|
26
|
+
- `validationFailures`:请求返回后,内容格式或语义校验失败。请求传输成功并不保证内容合格。
|
|
27
|
+
- `operationsRecovered`:同一操作经历多个请求后完成;包括兼容回退。首次成功率、操作失败率、恢复率均提供操作样本数,耗时为均值。
|
|
28
|
+
- `pipeline`:生成报告时现存摘要、Event 提取、图谱、主题和导入任务的状态。历史重试详情受原始记录保留范围限制;`oldestPendingUpdatedAt` 是最早的待处理任务最后更新时间。
|
|
29
|
+
- Token 使用适配器报告值。DSH 的未缓存输入、缓存读取、缓存写入互斥;reasoning 为输出子集,单列展示,不再次相加。缺失 usage 与缺失 total 分别保留,未知值不填零。
|
|
30
|
+
- `observedBackgroundTokenShare`:当前空间完整已观测请求中,后台请求 Token 占比。任何请求缺少总用量或汇总不完整时为 null;该数值不包含主聊天内所有记忆输入成本,也不等于账单费用占比。
|
|
31
|
+
- `memoryInputEstimate`:对已组装的记忆常驻规则、工具定义、画像、目录和自动上下文做文本 Token 估算,逐个观测聊天请求累计。历史工具结果、分层对话及多模态等归因尚不完整。
|
|
32
|
+
- 数据库共享画像维护或暂时无法归属的调用列入 `sharedOrUnattributed`,不伪造工作区分摊。
|
|
33
|
+
- 收益提供检索充分性、空结果、采用回执与分层内容体积估算。分层估算使用最近最多 64 个存储块,代表内容大小比较,不等于实际账单节省或答案质量。
|
|
34
|
+
- 主聊天采集覆盖能关联到本插件会话且经过宿主 `llm/stream` 钩子的请求;费用比例、净收益及未观测请求保持未知。旧版本历史不回填。
|
|
35
|
+
|
|
36
|
+
## 反馈内容与隐私
|
|
37
|
+
|
|
38
|
+
默认报告含用户检查的问题描述、基础诊断、近期模块统计和异常分类、阶段、时间。前端最近错误和后台任务错误原文仅在用户勾选详细错误日志后加入;默认报告还会剔除旧诊断快照中的 detail 字段。持续采集不存模型输入、输出正文或工具参数;错误只取有界 message,并在本地落盘前去除常见凭据、URL、Windows 路径和邮箱。默认摘要省略详细错误文本;按诊断 ID 读取详情时提供脱敏文本。前端生成报告时另对凭据、邮箱、URL、Windows/UNC/Unix 路径脱敏。
|
|
39
|
+
|
|
40
|
+
详细错误日志、记忆正文由用户选择加入。自动脱敏有边界,检查页展示完整待复制内容供人工确认。统计以本地存储为限,发送邮件由用户完成;复制和下载只表示本地操作成功,实际发送与作者收件需邮件侧证据。
|
|
41
|
+
|
|
42
|
+
## 验证
|
|
43
|
+
|
|
44
|
+
使用隔离 SQLite 数据库验证重启保留、命名空间隔离、失败写入不阻塞、原始记录上限与汇总保留、Token 去重计数及缺失标记;模型测试覆盖无效输出重试的额外消耗和后台空间归属;反馈测试覆盖 AI 草稿直达检查、完整快照、用户编辑和剪贴板失败回退。
|
|
45
|
+
|
|
46
|
+
`scripts/test-feedback-navigation-browser.mjs` 使用已安装 DSH 的真实 Markdown 链接、设置面板和共享 store,以及插件真实组件,在无头 Chrome 中检查点击传播、草稿定位和普通外链。API 使用合成数据,不读取真实用户配置。需要 React/React DOM、宿主 UI 构建依赖和 Chrome;可用 `STRATAGATE_BROWSER_NODE_MODULES` 指定独立依赖目录、`STRATAGATE_BROWSER_CHROME` 指定浏览器。可选 `STRATAGATE_NAVIGATION_BASELINE_SOURCE` 提供旧版 client.js 做原样复现对照,`STRATAGATE_NAVIGATION_EVIDENCE` 保存结果。
|
|
47
|
+
|
|
48
|
+
设置 `STRATAGATE_NAVIGATION_SURFACE=desktop` 时,测试以独立 Electron 44、临时用户目录、真实注册的 `dsh-app` 协议和隔离 IPC 启动信息运行;桌面主界面与 HTTP 草稿链接使用不同来源。测试经过插件实际 `apply` 注册、真实 `MarkdownText`、`SlotCore` 和设置面板,不调用付费模型。`STRATAGATE_BROWSER_ELECTRON` 指定测试二进制;`STRATAGATE_NAVIGATION_CLIENT_SOURCE` 可指向安装包内的 dist/client.js 验证确切产物;`STRATAGATE_NAVIGATION_SCREENSHOT` 可保存合成场景截图。该测试验证隔离桌面壳中的链路,真实用户 DSH 配置仍需人工验收。
|
|
49
|
+
|
|
50
|
+
宿主界面的真实邮件发送仍由用户完成。页面截图采用合成数据,仅用于布局检查;具体测试与性能证据见 `docs/validation/feedback-observability-20261016/`。
|