@a9i5k4/dsh-auto-memory 2.2.2 → 2.2.4
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/docs/A3-RISK-ASSESSMENT-20260830.md +61 -0
- package/docs/COT-WATCH-RFC.md +88 -0
- package/docs/DUAL-TIER-RATIFICATION-PROMPT.md +71 -0
- package/docs/HANDOFF-HARNESS.md +78 -0
- package/docs/HANDOFF-M8-M9-M10.md +203 -0
- package/docs/HY4-TOUR-LOGO-HANDOFF-2.md +60 -0
- package/docs/HY4-TOUR-LOGO-HANDOFF.md +100 -0
- package/docs/ISSUE-REPLY-UNATTENDED.md +31 -0
- package/docs/K3-LANDING-HANDOFF.md +76 -0
- package/docs/LANDING-OUTLINE.md +85 -0
- package/docs/M-CM-PLAN.md +166 -0
- package/docs/M-CM-STATE.md +64 -0
- package/docs/M3B-CONTRACT.md +461 -0
- package/docs/M4-CONTRACT.md +1207 -0
- package/docs/M5-CONTRACT.md +383 -0
- package/docs/M6-CONTRACT.md +342 -0
- package/docs/M7-ACTIVATION-ALGO-REFERENCES.md +104 -0
- package/docs/M7-ACTIVATION-CALIBRATION.md +144 -0
- package/docs/M7-ACTIVATION-FEATURE-AGENT-PROMPT.md +79 -0
- package/docs/M7-ACTIVATION-FEATURE-CALIBRATION.md +58 -0
- package/docs/M7-ACTIVATION-FEATURE-DESIGN.md +124 -0
- package/docs/M7-ACTIVATION-V2-CONTROLLED-SHADOW.md +127 -0
- package/docs/M7-ACTIVATION-V2-HANDOFF.md +132 -0
- package/docs/M7-ACTIVATION-V2-HOLDEDOUT-EVAL.md +94 -0
- package/docs/M7-ACTIVATION-V2-HOLDEDOUT-SHADOW.md +60 -0
- package/docs/M7-ACTIVATION-V2-LIVE-SHADOW-PLAN.md +85 -0
- package/docs/M7-ACTIVATION-V2-PAPER.md +303 -0
- package/docs/M7-AGENT-HANDOFF-PROMPT.md +63 -0
- package/docs/M7-ALGORITHM-DECISION.md +174 -0
- package/docs/M7-AUTONOMOUS-STATE.md +252 -0
- package/docs/M7-BENCHMARK-PLAN.md +78 -0
- package/docs/M7-CLOSED-LOOP-WIRING.md +110 -0
- package/docs/M7-EMBEDDING-BENCHMARK.md +164 -0
- package/docs/M7-INTERFACE-DIGEST.md +144 -0
- package/docs/M7-LABEL-REVIEW-REPORT.md +107 -0
- package/docs/M7-LEXICAL-TUNING.md +58 -0
- package/docs/M7-LIVE-SHADOW-SCRIPT.md +30 -0
- package/docs/M7-PYTHON-IMPLEMENTATION-REPORT.md +92 -0
- package/docs/M7-RESEARCH-PAPER.md +442 -0
- package/docs/M7-TASKSET-DISPATCH.md +213 -0
- package/docs/M8-MEMORY-HUB.md +105 -0
- package/docs/MEMORY-SYSTEMS-SURVEY-2026-09.md +166 -0
- package/docs/NEXT-MAJOR-PROMO.md +363 -0
- package/docs/NEXT-MAJOR-README-DRAFT.zh.md +205 -0
- package/docs/NEXT-MAJOR-VISION.md +112 -0
- package/docs/PREVIEW-NEXT-STEPS.md +229 -0
- package/docs/PROJECT-FREEZE-AND-ROADMAP.md +200 -0
- package/docs/PROMO-STYLE-GUIDE.md +84 -0
- package/docs/PYTHON-SIDECAR-CONTRACT.md +539 -0
- package/docs/R2-POLICY-PLUMBING-BLUEPRINT.md +99 -0
- package/docs/RELEASE-READINESS-PLAN.md +91 -0
- package/docs/RELEASE-SEMANTIC-OPTION.md +181 -0
- package/docs/S1-SCIENTIFIC-RIGOR.md +269 -0
- package/docs/S2-DEEP-ABSORPTION.md +259 -0
- package/docs/S3-TARGET-ARCHITECTURE.md +172 -0
- package/docs/USER-GUIDE.zh-CN.md +283 -0
- package/docs/banner.jpg +0 -0
- package/docs/implementation-handoff-context.zh-CN.md +429 -0
- package/docs/landing/index.html +1745 -0
- package/docs/paper-figures/fig1_model_quality.png +0 -0
- package/docs/paper-figures/fig2_chunk_reversal.png +0 -0
- package/docs/paper-figures/fig3_latency.png +0 -0
- package/docs/paper-figures/fig4_hybrid.png +0 -0
- package/docs/paper-figures/fig5_rerank_tradeoff.png +0 -0
- package/docs/paper-figures/fig6_cluster_sweep.png +0 -0
- package/docs/paper-figures/fig7_resource.png +0 -0
- package/docs/paper-figures-v2/fig1_echo_trap.png +0 -0
- package/docs/paper-figures-v2/fig2_pr_paths.png +0 -0
- package/docs/paper-figures-v2/fig3_coefficients.png +0 -0
- package/docs/paper-figures-v2/fig4_calibration.png +0 -0
- package/docs/paper-figures-v2/fig5_order_ablation.png +0 -0
- package/docs/paper-figures-v2/fig6_containment.png +0 -0
- package/docs/proactive-associative-memory-architecture.html +659 -0
- package/docs/proactive-associative-memory-meta-code.html +1058 -0
- package/docs/proactive-associative-memory-research-report.zh-CN.md +685 -0
- package/docs/proactive-associative-memory-system-map.html +1580 -0
- package/docs/promo/first-run-guide.html +397 -0
- package/docs/promo/homepage.html +384 -0
- package/docs/screenshots/calendar-en.png +0 -0
- package/docs/screenshots/calendar-zh.png +0 -0
- package/docs/screenshots/connect-en.png +0 -0
- package/docs/screenshots/connect-zh.png +0 -0
- package/docs/screenshots/main-connect-en.png +0 -0
- package/docs/screenshots/main-connect-zh.png +0 -0
- package/docs/screenshots/overview-en.png +0 -0
- package/docs/screenshots/overview-zh.png +0 -0
- package/docs/screenshots/panel-hub.png +0 -0
- package/docs/screenshots/panel-overview.png +0 -0
- package/docs/screenshots/panel-refine.png +0 -0
- package/docs/screenshots/promo/promo-0-banner-v2.png +0 -0
- package/docs/screenshots/promo/promo-1-hero.png +0 -0
- package/docs/screenshots/promo/promo-2-tour.png +0 -0
- package/docs/screenshots/promo/promo-3-recall.png +0 -0
- package/docs/screenshots/promo/promo-4-unattended.png +0 -0
- package/docs/screenshots/promo/promo-5-external.png +0 -0
- package/docs/screenshots/promo/promo-6-greeting.png +0 -0
- package/docs/screenshots/reflections-en.png +0 -0
- package/docs/screenshots/search-zh.png +0 -0
- package/docs/screenshots/settings-2-zh.png +0 -0
- package/docs/screenshots/settings-debug-zh.png +0 -0
- package/docs/screenshots/settings-en.png +0 -0
- package/docs/screenshots/settings-zh.png +0 -0
- package/docs/screenshots/tour-core.png +0 -0
- package/docs/screenshots/tour-external.png +0 -0
- package/docs/screenshots/tour-toggles.png +0 -0
- package/docs/screenshots/tour-welcome.png +0 -0
- package/docs/screenshots/workspace-map-zh.png +0 -0
- package/docs/social-preview.png +0 -0
- package/lib/client.js +277 -118
- package/lib/index.js +329 -60
- package/lib/subagent-gc.js +239 -0
- package/lib/water-window.js +88 -0
- package/package.json +2 -1
|
@@ -0,0 +1,1745 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="zh-CN" data-lang="zh">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover" />
|
|
6
|
+
<meta name="color-scheme" content="light" />
|
|
7
|
+
<meta name="description" content="dsh-auto-memory — DeepSeek Harness 的联想记忆与人性化交互插件。An associative-memory & proactive-companion plugin for DeepSeek Harness." />
|
|
8
|
+
<meta name="theme-color" content="#F4F1EB" />
|
|
9
|
+
<title>dsh-auto-memory · 让 AI 真正记得你 · An AI that actually remembers</title>
|
|
10
|
+
<style>
|
|
11
|
+
/* ══════════════════════════════════════════════════════════════
|
|
12
|
+
设计系统:现代主义 / 国际主义排版
|
|
13
|
+
- 纸色底 + 墨字,单一信号橙强调
|
|
14
|
+
- 数学网格:12 列,1px 细线分区
|
|
15
|
+
- 等宽字体承载技术标签,无衬线粗排承载标题
|
|
16
|
+
- 无渐变、无圆角卡片、无阴影堆砌
|
|
17
|
+
══════════════════════════════════════════════════════════════ */
|
|
18
|
+
*,*::before,*::after{box-sizing:border-box}
|
|
19
|
+
html,body{margin:0;padding:0}
|
|
20
|
+
:root{
|
|
21
|
+
--paper:#F4F1EB; /* 暖纸 */
|
|
22
|
+
--paper-2:#ECE8DF; /* 次纸 */
|
|
23
|
+
--ink:#17171A; /* 墨 */
|
|
24
|
+
--ink-2:#5A5A60; /* 灰墨 */
|
|
25
|
+
--ink-3:#9B9BA0; /* 浅墨 */
|
|
26
|
+
--line:#17171A; /* 实线 */
|
|
27
|
+
--line-soft:rgba(23,23,26,.16);
|
|
28
|
+
--accent:#E9470C; /* 信号橙 */
|
|
29
|
+
--accent-ink:#B23708;
|
|
30
|
+
--mono:"SFMono-Regular","Cascadia Mono",Consolas,Menlo,monospace;
|
|
31
|
+
--sans:"Helvetica Neue",Helvetica,Arial,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
|
|
32
|
+
--max:1240px;
|
|
33
|
+
--gutter:24px;
|
|
34
|
+
}
|
|
35
|
+
html{scroll-behavior:smooth}
|
|
36
|
+
body{
|
|
37
|
+
font-family:var(--sans);
|
|
38
|
+
font-size:15.5px;
|
|
39
|
+
line-height:1.68;
|
|
40
|
+
color:var(--ink);
|
|
41
|
+
background:var(--paper);
|
|
42
|
+
/* 淡淡的制图纸网格,只在主体区域隐约可见 */
|
|
43
|
+
background-image:
|
|
44
|
+
linear-gradient(rgba(23,23,26,.035) 1px, transparent 1px),
|
|
45
|
+
linear-gradient(90deg, rgba(23,23,26,.035) 1px, transparent 1px);
|
|
46
|
+
background-size:72px 72px;
|
|
47
|
+
-webkit-font-smoothing:antialiased;
|
|
48
|
+
text-rendering:optimizeLegibility;
|
|
49
|
+
}
|
|
50
|
+
img{max-width:100%;display:block}
|
|
51
|
+
a{color:inherit}
|
|
52
|
+
code,kbd,pre,samp{font-family:var(--mono);font-size:.9em}
|
|
53
|
+
code{background:var(--paper-2);border:1px solid var(--line-soft);padding:1px 5px}
|
|
54
|
+
::selection{background:var(--accent);color:#fff}
|
|
55
|
+
|
|
56
|
+
/* ── 通用骨架 ── */
|
|
57
|
+
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}
|
|
58
|
+
.rule{height:1px;background:var(--line);border:0;margin:0}
|
|
59
|
+
.mono{font-family:var(--mono)}
|
|
60
|
+
.up{text-transform:uppercase;letter-spacing:.14em}
|
|
61
|
+
.js-reveal{opacity:0;transform:translateY(14px)}
|
|
62
|
+
.js-reveal.in{opacity:1;transform:none;transition:opacity .55s cubic-bezier(.2,.7,.2,1),transform .55s cubic-bezier(.2,.7,.2,1)}
|
|
63
|
+
|
|
64
|
+
/* ── 顶栏:一条横线压住的导览条 ── */
|
|
65
|
+
.topbar{
|
|
66
|
+
position:sticky;top:0;z-index:50;
|
|
67
|
+
background:var(--paper);
|
|
68
|
+
border-bottom:1px solid var(--line);
|
|
69
|
+
}
|
|
70
|
+
.topbar-inner{
|
|
71
|
+
max-width:var(--max);margin:0 auto;padding:0 var(--gutter);
|
|
72
|
+
height:56px;display:flex;align-items:center;gap:20px;
|
|
73
|
+
}
|
|
74
|
+
.brand{display:flex;align-items:baseline;gap:10px;text-decoration:none}
|
|
75
|
+
.brand-name{font-weight:800;font-size:16px;letter-spacing:-.02em}
|
|
76
|
+
.brand-tag{font-family:var(--mono);font-size:11px;color:var(--accent);border:1px solid var(--accent);padding:1px 6px}
|
|
77
|
+
.topnav{margin-left:auto;display:flex;align-items:center;gap:2px}
|
|
78
|
+
.topnav a{
|
|
79
|
+
font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;
|
|
80
|
+
color:var(--ink-2);text-decoration:none;padding:8px 12px;
|
|
81
|
+
border-left:1px solid transparent;
|
|
82
|
+
}
|
|
83
|
+
.topnav a:hover{color:var(--ink);border-left-color:var(--line)}
|
|
84
|
+
.topnav a .idx{color:var(--accent);margin-right:5px;font-size:10px}
|
|
85
|
+
.lang{display:inline-flex;border:1px solid var(--line);margin-left:10px}
|
|
86
|
+
.lang button{
|
|
87
|
+
border:0;background:transparent;color:var(--ink-2);
|
|
88
|
+
font-family:var(--mono);font-size:11.5px;cursor:pointer;
|
|
89
|
+
padding:6px 11px;letter-spacing:.06em;
|
|
90
|
+
}
|
|
91
|
+
.lang button.on{background:var(--ink);color:var(--paper)}
|
|
92
|
+
.lang button:not(.on):hover{color:var(--ink)}
|
|
93
|
+
|
|
94
|
+
/* ── Hero:编辑部式大标题 + 技术示意 ── */
|
|
95
|
+
.hero{
|
|
96
|
+
border-bottom:1px solid var(--line);
|
|
97
|
+
padding:72px 0 0;
|
|
98
|
+
position:relative;overflow:hidden;
|
|
99
|
+
}
|
|
100
|
+
.hero-grid{
|
|
101
|
+
max-width:var(--max);margin:0 auto;padding:0 var(--gutter);
|
|
102
|
+
display:grid;grid-template-columns:1.25fr 1fr;gap:56px;align-items:start;
|
|
103
|
+
}
|
|
104
|
+
.eyebrow{
|
|
105
|
+
display:inline-flex;align-items:center;gap:10px;
|
|
106
|
+
font-family:var(--mono);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;
|
|
107
|
+
color:var(--ink-2);margin-bottom:26px;
|
|
108
|
+
}
|
|
109
|
+
.eyebrow::before{content:"";width:28px;height:1px;background:var(--accent)}
|
|
110
|
+
.eyebrow b{color:var(--accent);font-weight:700}
|
|
111
|
+
h1{
|
|
112
|
+
font-size:clamp(44px,6.2vw,84px);
|
|
113
|
+
line-height:.98;letter-spacing:-.03em;font-weight:800;
|
|
114
|
+
margin:0 0 22px;
|
|
115
|
+
}
|
|
116
|
+
h1 .thin{font-weight:300;color:var(--ink-2)}
|
|
117
|
+
.soul{
|
|
118
|
+
font-size:clamp(19px,2.1vw,25px);font-weight:700;line-height:1.35;
|
|
119
|
+
margin:0 0 18px;max-width:24em;
|
|
120
|
+
border-left:3px solid var(--accent);padding-left:16px;
|
|
121
|
+
}
|
|
122
|
+
.lede{
|
|
123
|
+
font-size:15.5px;color:var(--ink-2);max-width:38em;line-height:1.75;margin:0 0 30px;
|
|
124
|
+
}
|
|
125
|
+
.ctas{display:flex;flex-wrap:wrap;gap:0;margin:0 0 26px;border:1px solid var(--line);width:fit-content}
|
|
126
|
+
.btn{
|
|
127
|
+
display:inline-flex;align-items:center;gap:10px;
|
|
128
|
+
padding:14px 20px;
|
|
129
|
+
font-size:13.5px;font-weight:700;text-decoration:none;cursor:pointer;
|
|
130
|
+
border:0;border-right:1px solid var(--line);
|
|
131
|
+
background:var(--paper);color:var(--ink);
|
|
132
|
+
transition:background .15s ease,color .15s ease;
|
|
133
|
+
}
|
|
134
|
+
.btn:last-child{border-right:0}
|
|
135
|
+
.btn:hover{background:var(--paper-2)}
|
|
136
|
+
.btn.primary{background:var(--ink);color:var(--paper)}
|
|
137
|
+
.btn.primary:hover{background:var(--accent)}
|
|
138
|
+
.btn code{background:transparent;border:0;padding:0;font-weight:700;font-size:12.5px}
|
|
139
|
+
.btn .copy{font-family:var(--mono);font-size:10.5px;font-weight:400;opacity:.55;text-transform:uppercase;letter-spacing:.1em}
|
|
140
|
+
.meta-line{
|
|
141
|
+
display:flex;flex-wrap:wrap;gap:0;
|
|
142
|
+
border-top:1px solid var(--line-soft);
|
|
143
|
+
font-family:var(--mono);font-size:11px;color:var(--ink-3);
|
|
144
|
+
}
|
|
145
|
+
.meta-line span{padding:8px 14px 8px 0;margin-right:14px;border-right:1px solid var(--line-soft)}
|
|
146
|
+
.meta-line span:last-child{border-right:0}
|
|
147
|
+
.meta-line b{color:var(--ink);font-weight:700}
|
|
148
|
+
|
|
149
|
+
/* ── Hero 技术示意:观察→向量→检索→注入 管线框图 ──
|
|
150
|
+
不模拟 UI,画系统本身:一条横贯的信号流,四个处理站,
|
|
151
|
+
记忆碎片从库里被命中点亮,脉冲沿轨道注入下一拍。 */
|
|
152
|
+
.schematic{
|
|
153
|
+
border:1px solid var(--line);background:#fff;
|
|
154
|
+
padding:0;position:relative;
|
|
155
|
+
}
|
|
156
|
+
.sch-head{
|
|
157
|
+
display:flex;justify-content:space-between;align-items:center;
|
|
158
|
+
padding:10px 14px;border-bottom:1px solid var(--line);
|
|
159
|
+
font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
|
|
160
|
+
}
|
|
161
|
+
.sch-head .live{color:var(--accent);display:inline-flex;align-items:center;gap:6px;font-weight:700}
|
|
162
|
+
.sch-head .live::before{
|
|
163
|
+
content:"";width:7px;height:7px;background:var(--accent);
|
|
164
|
+
animation:blink 1.6s steps(2,start) infinite;
|
|
165
|
+
}
|
|
166
|
+
@keyframes blink{50%{opacity:.25}}
|
|
167
|
+
.sch-body{padding:18px 14px 14px;display:grid;gap:14px}
|
|
168
|
+
.pipe{display:grid;grid-template-columns:88px 1fr;gap:12px;align-items:center}
|
|
169
|
+
.pipe .st{
|
|
170
|
+
font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;
|
|
171
|
+
color:var(--ink-2);border:1px solid var(--line-soft);padding:5px 7px;text-align:center;
|
|
172
|
+
}
|
|
173
|
+
.pipe .st b{display:block;color:var(--ink);font-size:11px}
|
|
174
|
+
.pipe .lane{position:relative;height:34px;border:1px solid var(--line-soft);background:var(--paper);overflow:hidden}
|
|
175
|
+
.lane .ticks{position:absolute;inset:0;background-image:repeating-linear-gradient(90deg,var(--line-soft) 0 1px,transparent 1px 18px);opacity:.5}
|
|
176
|
+
.lane .bar{
|
|
177
|
+
position:absolute;top:9px;bottom:9px;left:0;width:0;
|
|
178
|
+
background:var(--ink);
|
|
179
|
+
}
|
|
180
|
+
.lane .bar.hot{background:var(--accent)}
|
|
181
|
+
/* 各级不同的推进节奏 */
|
|
182
|
+
.lane .bar.b-obs{animation:fill 6s cubic-bezier(.3,.6,.3,1) infinite}
|
|
183
|
+
.lane .bar.b-vec{animation:fill 6s cubic-bezier(.3,.6,.3,1) infinite;animation-delay:.9s}
|
|
184
|
+
.lane .bar.b-ret{animation:fill 6s cubic-bezier(.3,.6,.3,1) infinite;animation-delay:1.8s}
|
|
185
|
+
.lane .bar.b-inj{animation:fill 6s cubic-bezier(.3,.6,.3,1) infinite;animation-delay:2.7s}
|
|
186
|
+
@keyframes fill{0%{width:0;opacity:0}6%{opacity:1}34%{width:100%;opacity:1}46%{opacity:0}100%{width:100%;opacity:0}}
|
|
187
|
+
/* 记忆库栅格 */
|
|
188
|
+
.store{
|
|
189
|
+
border:1px solid var(--line);background:var(--paper);
|
|
190
|
+
display:grid;grid-template-columns:repeat(12,1fr);
|
|
191
|
+
}
|
|
192
|
+
.store .cell{
|
|
193
|
+
aspect-ratio:1/1;border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);
|
|
194
|
+
position:relative;background:#fff;
|
|
195
|
+
}
|
|
196
|
+
.store .cell:nth-child(12n){border-right:0}
|
|
197
|
+
.store .cell.hit::after{
|
|
198
|
+
content:"";position:absolute;inset:3px;background:var(--accent);
|
|
199
|
+
animation:cell-hit 6s steps(1,end) infinite;
|
|
200
|
+
}
|
|
201
|
+
.store .cell:nth-child(7)::after{animation-delay:.9s}
|
|
202
|
+
.store .cell:nth-child(19)::after{animation-delay:1.4s}
|
|
203
|
+
.store .cell:nth-child(28)::after{animation-delay:1.8s}
|
|
204
|
+
.store .cell:nth-child(41)::after{animation-delay:2.3s}
|
|
205
|
+
@keyframes cell-hit{0%,12%{opacity:0}16%,34%{opacity:1}40%,100%{opacity:0}}
|
|
206
|
+
.store-cap{
|
|
207
|
+
display:flex;justify-content:space-between;
|
|
208
|
+
font-family:var(--mono);font-size:10px;color:var(--ink-3);
|
|
209
|
+
padding:6px 2px 0;letter-spacing:.1em;text-transform:uppercase;
|
|
210
|
+
}
|
|
211
|
+
.store-cap b{color:var(--accent);font-weight:700}
|
|
212
|
+
.sch-foot{
|
|
213
|
+
border-top:1px solid var(--line);padding:9px 14px;
|
|
214
|
+
display:flex;justify-content:space-between;gap:12px;
|
|
215
|
+
font-family:var(--mono);font-size:10.5px;color:var(--ink-2);
|
|
216
|
+
}
|
|
217
|
+
.sch-foot .zero{color:var(--ink);font-weight:700}
|
|
218
|
+
.sch-foot .zero::before{content:"×0 ";color:var(--accent)}
|
|
219
|
+
|
|
220
|
+
/* ── 大数字带 ── */
|
|
221
|
+
.stats-band{border-bottom:1px solid var(--line)}
|
|
222
|
+
.stats-grid{
|
|
223
|
+
max-width:var(--max);margin:0 auto;
|
|
224
|
+
display:grid;grid-template-columns:repeat(4,1fr);
|
|
225
|
+
border-left:1px solid var(--line);
|
|
226
|
+
}
|
|
227
|
+
.stat-cell{
|
|
228
|
+
border-right:1px solid var(--line);padding:26px 24px 22px;
|
|
229
|
+
}
|
|
230
|
+
.stat-cell .v{
|
|
231
|
+
font-size:clamp(30px,3.4vw,44px);font-weight:800;letter-spacing:-.03em;line-height:1;
|
|
232
|
+
font-variant-numeric:tabular-nums;
|
|
233
|
+
}
|
|
234
|
+
.stat-cell .v .u{font-size:.45em;font-weight:700;color:var(--ink-3);margin-left:4px;letter-spacing:0}
|
|
235
|
+
.stat-cell .l{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);margin-top:10px}
|
|
236
|
+
.stat-cell.hot .v{color:var(--accent)}
|
|
237
|
+
|
|
238
|
+
/* ── 章节头:编号 + 大标题 ── */
|
|
239
|
+
section.block{border-bottom:1px solid var(--line);padding:64px 0}
|
|
240
|
+
.sec-head{display:grid;grid-template-columns:120px 1fr;gap:24px;margin-bottom:40px;align-items:start}
|
|
241
|
+
.sec-num{
|
|
242
|
+
font-family:var(--mono);font-size:12px;color:var(--ink-3);letter-spacing:.1em;
|
|
243
|
+
border-top:3px solid var(--accent);padding-top:8px;
|
|
244
|
+
}
|
|
245
|
+
.sec-num b{display:block;font-size:26px;color:var(--ink);font-weight:800;letter-spacing:-.02em;margin-bottom:2px}
|
|
246
|
+
h2{
|
|
247
|
+
font-size:clamp(28px,3.6vw,44px);line-height:1.06;letter-spacing:-.025em;font-weight:800;margin:0 0 12px;
|
|
248
|
+
}
|
|
249
|
+
.sec-sub{font-size:15px;color:var(--ink-2);max-width:52em;margin:0;line-height:1.7}
|
|
250
|
+
|
|
251
|
+
/* ── 管线一节(原数据流):三站纵向排 ── */
|
|
252
|
+
.pipe-flow{display:grid;grid-template-columns:1fr 1fr 1fr;border:1px solid var(--line);background:#fff}
|
|
253
|
+
.pf-cell{padding:24px 24px 22px;border-right:1px solid var(--line);position:relative}
|
|
254
|
+
.pf-cell:last-child{border-right:0}
|
|
255
|
+
.pf-cell .pf-tag{
|
|
256
|
+
font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
|
|
257
|
+
color:var(--accent);font-weight:700;margin-bottom:14px;display:block;
|
|
258
|
+
}
|
|
259
|
+
.pf-cell h3{font-size:19px;font-weight:800;letter-spacing:-.015em;margin:0 0 8px;line-height:1.25}
|
|
260
|
+
.pf-cell p{margin:0 0 12px;font-size:13.5px;color:var(--ink-2);line-height:1.65}
|
|
261
|
+
.pf-cell ul{margin:0;padding:0;list-style:none}
|
|
262
|
+
.pf-cell li{
|
|
263
|
+
font-size:12.5px;color:var(--ink-2);padding:6px 0 6px 16px;position:relative;
|
|
264
|
+
border-top:1px solid var(--line-soft);line-height:1.55;
|
|
265
|
+
}
|
|
266
|
+
.pf-cell li::before{content:"";position:absolute;left:0;top:13px;width:8px;height:1.5px;background:var(--accent)}
|
|
267
|
+
.flow-note{
|
|
268
|
+
margin-top:22px;padding:14px 18px;border:1px solid var(--line);background:var(--paper-2);
|
|
269
|
+
font-size:13px;line-height:1.65;color:var(--ink-2);
|
|
270
|
+
display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:start;
|
|
271
|
+
}
|
|
272
|
+
.flow-note .fn-tag{font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);white-space:nowrap;padding-top:2px}
|
|
273
|
+
.flow-note b{color:var(--ink)}
|
|
274
|
+
|
|
275
|
+
/* ── 架构分层 + 实现状态板 ── */
|
|
276
|
+
.arch{margin-top:22px;border:1px solid var(--line);background:var(--ink);color:#E8E4DC}
|
|
277
|
+
.arch-head{
|
|
278
|
+
display:flex;justify-content:space-between;align-items:center;
|
|
279
|
+
padding:9px 14px;border-bottom:1px solid rgba(255,255,255,.18);
|
|
280
|
+
font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
|
|
281
|
+
}
|
|
282
|
+
.arch-head .arch-link a{color:#FF9763;text-decoration:none}
|
|
283
|
+
.arch-head .arch-link a:hover{text-decoration:underline}
|
|
284
|
+
.arch-cols{display:grid;grid-template-columns:1fr 1fr;gap:0}
|
|
285
|
+
.arch-col{padding:16px 14px 10px;border-right:1px solid rgba(255,255,255,.12)}
|
|
286
|
+
.arch-col:last-child{border-right:0}
|
|
287
|
+
.ac-title{
|
|
288
|
+
font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;
|
|
289
|
+
color:rgba(232,228,220,.55);margin-bottom:10px;
|
|
290
|
+
}
|
|
291
|
+
.mnode{
|
|
292
|
+
display:grid;grid-template-columns:14px 52px 1fr;align-items:center;gap:8px;
|
|
293
|
+
width:100%;text-align:left;
|
|
294
|
+
background:transparent;border:0;border-top:1px solid rgba(255,255,255,.08);
|
|
295
|
+
color:#E8E4DC;font:inherit;font-size:12.5px;
|
|
296
|
+
padding:9px 6px;cursor:pointer;
|
|
297
|
+
transition:background .15s ease;
|
|
298
|
+
}
|
|
299
|
+
.mnode:hover{background:rgba(255,255,255,.07)}
|
|
300
|
+
.mnode i{width:8px;height:8px;border-radius:50%;justify-self:center}
|
|
301
|
+
.mnode.live i{background:#5BC98C;box-shadow:0 0 0 3px rgba(91,201,140,.18)}
|
|
302
|
+
.mnode.tested i{background:#E9A23B;box-shadow:0 0 0 3px rgba(233,162,59,.16)}
|
|
303
|
+
.mnode.queued i{background:transparent;border:1.5px solid rgba(232,228,220,.4)}
|
|
304
|
+
.mnode b{font-family:var(--mono);font-size:11px;color:rgba(232,228,220,.85);font-weight:700}
|
|
305
|
+
.mnode span{color:rgba(232,228,220,.88)}
|
|
306
|
+
.m-detail{
|
|
307
|
+
border-top:1px solid rgba(255,255,255,.18);
|
|
308
|
+
background:rgba(255,255,255,.05);
|
|
309
|
+
}
|
|
310
|
+
.m-detail[hidden]{display:none}
|
|
311
|
+
.md-head{
|
|
312
|
+
display:flex;align-items:center;gap:10px;
|
|
313
|
+
padding:10px 14px;border-bottom:1px solid rgba(255,255,255,.1);
|
|
314
|
+
font-size:12.5px;
|
|
315
|
+
}
|
|
316
|
+
.md-head b{font-family:var(--mono);color:#FF9763;font-size:12px}
|
|
317
|
+
.md-head .md-state{
|
|
318
|
+
margin-left:auto;font-family:var(--mono);font-size:10px;letter-spacing:.1em;
|
|
319
|
+
text-transform:uppercase;color:#5BC98C;border:1px solid rgba(91,201,140,.45);padding:1px 7px;
|
|
320
|
+
}
|
|
321
|
+
.md-head .md-state.tested{color:#E9A23B;border-color:rgba(233,162,59,.5)}
|
|
322
|
+
.md-head .md-state.queued{color:rgba(232,228,220,.6);border-color:rgba(232,228,220,.3)}
|
|
323
|
+
.md-head .md-close{
|
|
324
|
+
background:transparent;border:1px solid rgba(255,255,255,.3);color:rgba(232,228,220,.8);
|
|
325
|
+
width:20px;height:20px;line-height:1;cursor:pointer;font-size:13px;padding:0;
|
|
326
|
+
}
|
|
327
|
+
.md-head .md-close:hover{background:var(--accent);border-color:var(--accent);color:#fff}
|
|
328
|
+
.md-body{
|
|
329
|
+
padding:12px 14px;font-size:12px;line-height:1.7;color:rgba(232,228,220,.85);
|
|
330
|
+
max-height:150px;overflow-y:auto;scrollbar-width:thin;
|
|
331
|
+
}
|
|
332
|
+
.arch-cap{
|
|
333
|
+
padding:9px 14px;border-top:1px solid rgba(255,255,255,.18);
|
|
334
|
+
font-size:12px;color:rgba(232,228,220,.72);line-height:1.6;
|
|
335
|
+
display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;
|
|
336
|
+
}
|
|
337
|
+
.arch-cap .lg{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;letter-spacing:.06em}
|
|
338
|
+
.arch-cap .lg .dot{width:8px;height:8px;border-radius:50%;display:inline-block}
|
|
339
|
+
.arch-cap .lg .dot.live{background:#5BC98C}
|
|
340
|
+
.arch-cap .lg .dot.tested{background:#E9A23B}
|
|
341
|
+
.arch-cap .lg .dot.queued{background:transparent;border:1.5px solid rgba(232,228,220,.4)}
|
|
342
|
+
.arch-cap-sep{color:rgba(232,228,220,.3)}
|
|
343
|
+
|
|
344
|
+
/* ── 宣传图轮播:纯 CSS scroll-snap 翻页 ── */
|
|
345
|
+
.promo{margin-top:22px;border:1px solid var(--line);background:#fff;position:relative}
|
|
346
|
+
.promo-track{
|
|
347
|
+
display:grid;grid-auto-flow:column;
|
|
348
|
+
grid-auto-columns:100%;
|
|
349
|
+
overflow-x:auto;scroll-snap-type:x mandatory;
|
|
350
|
+
scrollbar-width:none;
|
|
351
|
+
}
|
|
352
|
+
.promo-track::-webkit-scrollbar{display:none}
|
|
353
|
+
.promo-track img{
|
|
354
|
+
width:100%;height:auto;display:block;
|
|
355
|
+
scroll-snap-align:start;scroll-snap-stop:always;
|
|
356
|
+
aspect-ratio:16/9;object-fit:cover;background:var(--paper-2);
|
|
357
|
+
}
|
|
358
|
+
.promo-nav{
|
|
359
|
+
display:flex;justify-content:space-between;align-items:center;
|
|
360
|
+
border-top:1px solid var(--line);padding:8px 12px;
|
|
361
|
+
}
|
|
362
|
+
.promo-dots{display:flex;gap:8px}
|
|
363
|
+
.promo-dots a{
|
|
364
|
+
width:10px;height:10px;border:1.5px solid var(--ink-3);display:block;
|
|
365
|
+
transition:background .15s ease,border-color .15s ease;
|
|
366
|
+
}
|
|
367
|
+
.promo-dots a:hover{border-color:var(--accent);background:var(--accent)}
|
|
368
|
+
.promo-cap{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
|
|
369
|
+
.promo-btn{
|
|
370
|
+
background:transparent;border:1px solid var(--line);color:var(--ink);
|
|
371
|
+
font-family:var(--mono);font-size:11px;padding:4px 12px;cursor:pointer;
|
|
372
|
+
text-decoration:none;letter-spacing:.08em;
|
|
373
|
+
}
|
|
374
|
+
.promo-btn:hover{background:var(--ink);color:var(--paper)}
|
|
375
|
+
/* :target 翻页——点击圆点滚动到对应帧 */
|
|
376
|
+
.promo-frame:target{scroll-snap-align:start}
|
|
377
|
+
|
|
378
|
+
/* ── 设计文献行 ── */
|
|
379
|
+
.papers{border-top:1px solid rgba(255,255,255,.18)}
|
|
380
|
+
.papers-head{
|
|
381
|
+
padding:9px 14px;
|
|
382
|
+
font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;
|
|
383
|
+
color:rgba(232,228,220,.55);border-bottom:1px solid rgba(255,255,255,.08);
|
|
384
|
+
}
|
|
385
|
+
.paper-row{
|
|
386
|
+
display:grid;grid-template-columns:34px 1fr auto;gap:12px;align-items:center;
|
|
387
|
+
padding:10px 14px;border-bottom:1px solid rgba(255,255,255,.08);
|
|
388
|
+
text-decoration:none;transition:background .15s ease;
|
|
389
|
+
}
|
|
390
|
+
.paper-row:last-child{border-bottom:0}
|
|
391
|
+
.paper-row:hover{background:rgba(255,255,255,.07)}
|
|
392
|
+
.paper-row .pr-no{font-family:var(--mono);font-size:11px;color:#FF9763;font-weight:700}
|
|
393
|
+
.paper-row .pr-body{display:grid;gap:2px;min-width:0}
|
|
394
|
+
.paper-row .pr-body b{font-size:12.5px;font-weight:700;color:#E8E4DC}
|
|
395
|
+
.paper-row .pr-body small{font-size:11px;color:rgba(232,228,220,.6);line-height:1.5}
|
|
396
|
+
.paper-row .pr-arrow{font-family:var(--mono);color:rgba(232,228,220,.4);transition:color .15s ease,transform .15s ease}
|
|
397
|
+
.paper-row:hover .pr-arrow{color:#FF9763;transform:translateX(3px)}
|
|
398
|
+
|
|
399
|
+
/* ── 功能节:左文右图,细线分区,编号驱动 ── */
|
|
400
|
+
.feature{padding:44px 0;border-top:1px solid var(--line-soft)}
|
|
401
|
+
.feature:first-of-type{border-top:0;padding-top:8px}
|
|
402
|
+
.feature-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:start}
|
|
403
|
+
.feature-grid.reverse .f-visual{order:-1}
|
|
404
|
+
.f-meta{
|
|
405
|
+
font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
|
|
406
|
+
color:var(--accent);font-weight:700;margin-bottom:12px;display:flex;align-items:center;gap:8px;
|
|
407
|
+
}
|
|
408
|
+
.f-meta::after{content:"";flex:1;height:1px;background:var(--line-soft)}
|
|
409
|
+
.feature h3{font-size:clamp(21px,2.4vw,28px);line-height:1.18;letter-spacing:-.02em;font-weight:800;margin:0 0 12px}
|
|
410
|
+
.feature p.lede2{font-size:14.5px;color:var(--ink-2);margin:0 0 18px;line-height:1.72}
|
|
411
|
+
.feat-list{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}
|
|
412
|
+
.feat-list li{
|
|
413
|
+
font-size:13.5px;color:var(--ink-2);line-height:1.6;
|
|
414
|
+
padding:9px 0 9px 20px;position:relative;border-bottom:1px solid var(--line-soft);
|
|
415
|
+
}
|
|
416
|
+
.feat-list li::before{
|
|
417
|
+
content:"";position:absolute;left:2px;top:16px;width:7px;height:7px;
|
|
418
|
+
border:1.5px solid var(--accent);
|
|
419
|
+
}
|
|
420
|
+
.f-visual{border:1px solid var(--line);background:#fff;position:relative}
|
|
421
|
+
.f-visual .vbar{
|
|
422
|
+
display:flex;justify-content:space-between;align-items:center;
|
|
423
|
+
padding:8px 12px;border-bottom:1px solid var(--line);
|
|
424
|
+
font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);
|
|
425
|
+
}
|
|
426
|
+
.f-visual .vbar .dots{display:inline-flex;gap:5px}
|
|
427
|
+
.f-visual .vbar .dots i{width:8px;height:8px;border:1px solid var(--ink-3);display:inline-block}
|
|
428
|
+
.f-visual img{width:100%;height:auto;display:block}
|
|
429
|
+
/* 无人值守数字组 */
|
|
430
|
+
.mini-stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);margin-top:18px}
|
|
431
|
+
.mini-stats .ms{padding:12px 14px;border-right:1px solid var(--line);background:#fff}
|
|
432
|
+
.mini-stats .ms:last-child{border-right:0}
|
|
433
|
+
.mini-stats .v{font-size:24px;font-weight:800;letter-spacing:-.02em;line-height:1;font-variant-numeric:tabular-nums}
|
|
434
|
+
.mini-stats .l{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-top:6px;line-height:1.4}
|
|
435
|
+
/* 三层记忆表 */
|
|
436
|
+
.mem-table{border:1px solid var(--line);margin-top:16px;background:#fff}
|
|
437
|
+
.mem-row{display:grid;grid-template-columns:1.05fr 1.5fr 1.45fr;border-top:1px solid var(--line-soft)}
|
|
438
|
+
.mem-row:first-child{border-top:0;background:var(--paper-2)}
|
|
439
|
+
.mem-row > div{padding:10px 13px;font-size:13px;color:var(--ink-2);line-height:1.55;border-right:1px solid var(--line-soft)}
|
|
440
|
+
.mem-row > div:last-child{border-right:0}
|
|
441
|
+
.mem-row > div:first-child{color:var(--ink);font-weight:700}
|
|
442
|
+
.mem-row.head > div{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);font-weight:700}
|
|
443
|
+
.mem-pill{font-family:var(--mono);font-size:10px;color:var(--accent);border:1px solid var(--accent);padding:0 5px;margin-right:5px;white-space:nowrap}
|
|
444
|
+
|
|
445
|
+
/* ── 画廊:十二列网格 + 细线框 ── */
|
|
446
|
+
.gallery-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:0;border:1px solid var(--line);background:var(--line-soft)}
|
|
447
|
+
.g-card{position:relative;background:#fff;overflow:hidden;grid-column:span 6;border:1px solid var(--paper);margin:-.5px}
|
|
448
|
+
.g-card.span-12{grid-column:span 12}
|
|
449
|
+
.g-card img{width:100%;height:auto;display:block;filter:grayscale(18%) contrast(1.02)}
|
|
450
|
+
.g-card:hover img{filter:none}
|
|
451
|
+
.g-card .cap{
|
|
452
|
+
display:flex;justify-content:space-between;align-items:baseline;gap:10px;
|
|
453
|
+
padding:9px 13px;border-top:1px solid var(--line);background:var(--paper);
|
|
454
|
+
font-size:12.5px;font-weight:700;
|
|
455
|
+
}
|
|
456
|
+
.g-card .cap small{font-family:var(--mono);font-weight:400;font-size:10.5px;color:var(--ink-3);letter-spacing:.06em;text-align:right}
|
|
457
|
+
|
|
458
|
+
/* ── 安装:四步条带 + AI 框 ── */
|
|
459
|
+
.qs-grid{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);background:#fff}
|
|
460
|
+
.qs-cell{padding:22px 24px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
|
|
461
|
+
.qs-cell:nth-child(2n){border-right:0}
|
|
462
|
+
.qs-cell:nth-last-child(-n+2){border-bottom:0}
|
|
463
|
+
.qs-cell h3{font-size:15px;margin:0 0 8px;font-weight:800;display:flex;align-items:baseline;gap:10px}
|
|
464
|
+
.qs-cell h3 .n{font-family:var(--mono);font-size:12px;color:var(--accent);font-weight:700}
|
|
465
|
+
.qs-cell p{margin:0 0 10px;color:var(--ink-2);font-size:13px;line-height:1.65}
|
|
466
|
+
.codebox{border:1px solid var(--line);background:var(--ink);color:#E8E4DC}
|
|
467
|
+
.codebox-head{
|
|
468
|
+
display:flex;align-items:center;justify-content:space-between;
|
|
469
|
+
padding:7px 12px;border-bottom:1px solid rgba(255,255,255,.16);
|
|
470
|
+
font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:rgba(232,228,220,.6);
|
|
471
|
+
}
|
|
472
|
+
.codebox pre{margin:0;padding:13px 14px;font-size:12.5px;line-height:1.65;white-space:pre-wrap;word-break:break-word}
|
|
473
|
+
.copy-btn{
|
|
474
|
+
border:1px solid rgba(255,255,255,.3);background:transparent;color:rgba(232,228,220,.75);
|
|
475
|
+
font-family:var(--mono);font-size:10px;padding:3px 9px;cursor:pointer;letter-spacing:.1em;text-transform:uppercase;
|
|
476
|
+
}
|
|
477
|
+
.copy-btn:hover{background:var(--accent);border-color:var(--accent);color:#fff}
|
|
478
|
+
.ai-box{margin-top:22px;border:1px solid var(--line);padding:20px 24px;background:var(--paper-2)}
|
|
479
|
+
.ai-box h3{margin:0 0 8px;font-size:15px;font-weight:800;display:flex;align-items:center;gap:10px}
|
|
480
|
+
.ai-box h3 .ai-tag{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--paper);background:var(--accent);padding:2px 8px;font-weight:700}
|
|
481
|
+
.ai-box p{margin:0 0 10px;color:var(--ink-2);font-size:13px}
|
|
482
|
+
|
|
483
|
+
/* ── 社区 ── */
|
|
484
|
+
.comm-grid{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);background:#fff}
|
|
485
|
+
.comm-cell{padding:22px 24px;border-right:1px solid var(--line)}
|
|
486
|
+
.comm-cell:last-child{border-right:0}
|
|
487
|
+
.comm-cell .who{font-weight:800;font-size:16px;letter-spacing:-.01em}
|
|
488
|
+
.comm-cell .who::before{content:"@";color:var(--accent)}
|
|
489
|
+
.comm-cell .ref{font-family:var(--mono);font-size:11px;color:var(--ink-3);margin-top:4px}
|
|
490
|
+
.comm-cell .ref a{color:var(--accent-ink);text-decoration:underline;text-underline-offset:2px}
|
|
491
|
+
.comm-cell .contrib{margin-top:10px;font-size:13.5px;color:var(--ink-2);line-height:1.65;border-top:1px solid var(--line-soft);padding-top:10px}
|
|
492
|
+
.links-row{margin-top:20px;display:flex;flex-wrap:wrap;gap:0;border:1px solid var(--line);width:fit-content;background:#fff}
|
|
493
|
+
.link-chip{
|
|
494
|
+
display:inline-flex;align-items:center;gap:8px;text-decoration:none;
|
|
495
|
+
padding:11px 18px;border-right:1px solid var(--line);
|
|
496
|
+
font-family:var(--mono);font-size:12px;color:var(--ink);
|
|
497
|
+
}
|
|
498
|
+
.link-chip:last-child{border-right:0}
|
|
499
|
+
.link-chip:hover{background:var(--ink);color:var(--paper)}
|
|
500
|
+
.link-chip svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
|
|
501
|
+
|
|
502
|
+
/* ── 页脚 ── */
|
|
503
|
+
footer{padding:40px 0 48px}
|
|
504
|
+
.ft-row{display:flex;flex-wrap:wrap;gap:18px;align-items:center;justify-content:space-between}
|
|
505
|
+
.ft-brand{font-weight:800;font-size:15px;letter-spacing:-.01em}
|
|
506
|
+
.ft-privacy{font-family:var(--mono);font-size:11px;color:var(--ink-2);display:flex;align-items:center;gap:8px}
|
|
507
|
+
.ft-privacy::before{content:"";width:8px;height:8px;background:var(--accent)}
|
|
508
|
+
.ft-links{display:flex;gap:18px;font-family:var(--mono);font-size:11.5px;color:var(--ink-2);text-transform:uppercase;letter-spacing:.1em}
|
|
509
|
+
.ft-links a{text-decoration:none}
|
|
510
|
+
.ft-links a:hover{color:var(--accent)}
|
|
511
|
+
.ft-credits{
|
|
512
|
+
margin-top:22px;padding-top:14px;border-top:1px solid var(--line-soft);
|
|
513
|
+
display:flex;flex-wrap:wrap;gap:8px 22px;align-items:baseline;
|
|
514
|
+
font-family:var(--mono);font-size:10.5px;color:var(--ink-3);letter-spacing:.04em;
|
|
515
|
+
}
|
|
516
|
+
.ft-credits .ftc-label{color:var(--accent);font-weight:700;letter-spacing:.14em}
|
|
517
|
+
.ft-credits span:nth-child(2){color:var(--ink-2)}
|
|
518
|
+
|
|
519
|
+
/* ── 响应式 ── */
|
|
520
|
+
@media (max-width: 1024px){
|
|
521
|
+
.hero-grid{grid-template-columns:1fr;gap:40px}
|
|
522
|
+
.stats-grid{grid-template-columns:repeat(2,1fr)}
|
|
523
|
+
.stat-cell:nth-child(2){border-right:1px solid var(--line)}
|
|
524
|
+
.stat-cell{border-bottom:1px solid var(--line)}
|
|
525
|
+
.stat-cell:nth-last-child(-n+2){border-bottom:0}
|
|
526
|
+
.pipe-flow{grid-template-columns:1fr}
|
|
527
|
+
.pf-cell{border-right:0;border-bottom:1px solid var(--line)}
|
|
528
|
+
.pf-cell:last-child{border-bottom:0}
|
|
529
|
+
.feature-grid{grid-template-columns:1fr;gap:26px}
|
|
530
|
+
.feature-grid.reverse .f-visual{order:0}
|
|
531
|
+
.qs-grid{grid-template-columns:1fr}
|
|
532
|
+
.qs-cell{border-right:0;border-bottom:1px solid var(--line)}
|
|
533
|
+
.qs-cell:nth-last-child(-n+2){border-bottom:1px solid var(--line)}
|
|
534
|
+
.qs-cell:last-child{border-bottom:0}
|
|
535
|
+
.comm-grid{grid-template-columns:1fr}
|
|
536
|
+
.comm-cell{border-right:0;border-bottom:1px solid var(--line)}
|
|
537
|
+
.comm-cell:last-child{border-bottom:0}
|
|
538
|
+
.mem-row{grid-template-columns:1fr 1.3fr}
|
|
539
|
+
.mem-row > div:nth-child(3){grid-column:1 / -1;border-top:1px dashed var(--line-soft);color:var(--ink-3);font-size:12px}
|
|
540
|
+
}
|
|
541
|
+
@media (max-width: 640px){
|
|
542
|
+
.topnav a:not(.keep){display:none}
|
|
543
|
+
.brand-tag{display:none}
|
|
544
|
+
.hero{padding:44px 0 0}
|
|
545
|
+
h1{font-size:clamp(38px,11vw,52px)}
|
|
546
|
+
section.block{padding:44px 0}
|
|
547
|
+
.sec-head{grid-template-columns:1fr;gap:10px;margin-bottom:28px}
|
|
548
|
+
.g-card{grid-column:span 12}
|
|
549
|
+
.mini-stats{grid-template-columns:1fr}
|
|
550
|
+
.mini-stats .ms{border-right:0;border-bottom:1px solid var(--line)}
|
|
551
|
+
.mini-stats .ms:last-child{border-bottom:0}
|
|
552
|
+
.mem-row{grid-template-columns:1fr}
|
|
553
|
+
.mem-row > div{border-right:0;border-top:1px dashed var(--line-soft)}
|
|
554
|
+
.mem-row > div:first-child{border-top:0}
|
|
555
|
+
.ctas{flex-direction:column;width:100%}
|
|
556
|
+
.btn{border-right:0;border-bottom:1px solid var(--line)}
|
|
557
|
+
.btn:last-child{border-bottom:0}
|
|
558
|
+
.ft-row{flex-direction:column;align-items:flex-start;gap:12px}
|
|
559
|
+
.meta-line span{padding:6px 10px 6px 0;margin-right:10px}
|
|
560
|
+
}
|
|
561
|
+
@media (prefers-reduced-motion: reduce){
|
|
562
|
+
.js-reveal{opacity:1;transform:none;transition:none}
|
|
563
|
+
.lane .bar,.store .cell.hit::after,.sch-head .live::before{animation:none}
|
|
564
|
+
.lane .bar{width:100%;opacity:.35}
|
|
565
|
+
html{scroll-behavior:auto}
|
|
566
|
+
}
|
|
567
|
+
</style>
|
|
568
|
+
</head>
|
|
569
|
+
<body>
|
|
570
|
+
|
|
571
|
+
<!-- ── 顶栏 ── -->
|
|
572
|
+
<header class="topbar">
|
|
573
|
+
<div class="topbar-inner">
|
|
574
|
+
<a href="#top" class="brand">
|
|
575
|
+
<span class="brand-name">dsh-auto-memory</span>
|
|
576
|
+
<span class="brand-tag" data-i18n="brand.tag">v0.1.30</span>
|
|
577
|
+
</a>
|
|
578
|
+
<nav class="topnav" aria-label="primary">
|
|
579
|
+
<a href="#pipeline"><span class="idx">01</span><span data-i18n="nav.flow">管线</span></a>
|
|
580
|
+
<a href="#features"><span class="idx">02</span><span data-i18n="nav.features">功能</span></a>
|
|
581
|
+
<a href="#gallery"><span class="idx">03</span><span data-i18n="nav.gallery">界面</span></a>
|
|
582
|
+
<a href="#quick"><span class="idx">04</span><span data-i18n="nav.quick">安装</span></a>
|
|
583
|
+
<a href="#community"><span class="idx">05</span><span data-i18n="nav.community">社区</span></a>
|
|
584
|
+
<span class="lang">
|
|
585
|
+
<button type="button" id="lang-zh" class="on" aria-pressed="true">中</button>
|
|
586
|
+
<button type="button" id="lang-en" aria-pressed="false">EN</button>
|
|
587
|
+
</span>
|
|
588
|
+
</nav>
|
|
589
|
+
</div>
|
|
590
|
+
</header>
|
|
591
|
+
|
|
592
|
+
<!-- ── Hero ── -->
|
|
593
|
+
<a id="top"></a>
|
|
594
|
+
<section class="hero">
|
|
595
|
+
<div class="hero-grid">
|
|
596
|
+
<div class="hero-copy reveal">
|
|
597
|
+
<span class="eyebrow"><b data-i18n="hero.eyebrow.k">DEEPSEEK HARNESS</b><span data-i18n="hero.eyebrow">联想记忆插件</span></span>
|
|
598
|
+
<h1 data-i18n="hero.title">让 AI<br/>真正<span class="thin">记得你</span></h1>
|
|
599
|
+
<p class="soul" data-i18n="hero.soul">记忆不靠调用,自己被唤回。</p>
|
|
600
|
+
<p class="lede" data-i18n="hero.lede">市面记忆方案都要求模型"记得去查"——忘了调,记忆就等于不存在。本插件是 Host 侧主动联想中间件:持续观察对话情境,NLP 关键词 + 向量化双轨检索,该想起的记忆在模型开口之前,经固定边界注入下一环节。</p>
|
|
601
|
+
<div class="ctas">
|
|
602
|
+
<button class="btn primary" id="install-btn" type="button">
|
|
603
|
+
<span data-i18n="hero.cta1">安装</span>
|
|
604
|
+
<code>pnpm add @a9i5k4/dsh-auto-memory</code>
|
|
605
|
+
<span class="copy" data-i18n="hero.cta1.copy">点击复制</span>
|
|
606
|
+
</button>
|
|
607
|
+
<a class="btn" href="https://github.com/Aik358/dsh-auto-memory" target="_blank" rel="noreferrer">
|
|
608
|
+
<span data-i18n="hero.cta2">GitHub</span>
|
|
609
|
+
</a>
|
|
610
|
+
<a class="btn" href="https://www.npmjs.com/package/@a9i5k4/dsh-auto-memory" target="_blank" rel="noreferrer">
|
|
611
|
+
<span data-i18n="hero.cta3">npm</span>
|
|
612
|
+
</a>
|
|
613
|
+
</div>
|
|
614
|
+
<div class="meta-line">
|
|
615
|
+
<span><b data-i18n="hero.meta1">BSD-3-Clause</b></span>
|
|
616
|
+
<span data-i18n="hero.meta2">零运行时依赖</span>
|
|
617
|
+
<span data-i18n="hero.meta3">前缀缓存友好</span>
|
|
618
|
+
<span data-i18n="hero.meta4">记忆在你自己的机器上</span>
|
|
619
|
+
</div>
|
|
620
|
+
</div>
|
|
621
|
+
|
|
622
|
+
<!-- 技术示意:信号管线框图 -->
|
|
623
|
+
<div class="schematic reveal" role="img" aria-label="主动联想管线示意:观察→向量化→检索→固定边界注入">
|
|
624
|
+
<div class="sch-head">
|
|
625
|
+
<span data-i18n="demo.head">HOST MIDDLEWARE · 主动联想管线</span>
|
|
626
|
+
<span class="live" data-i18n="demo.live">LISTENING</span>
|
|
627
|
+
</div>
|
|
628
|
+
<div class="sch-body">
|
|
629
|
+
<div class="pipe">
|
|
630
|
+
<span class="st"><b>A</b><span data-i18n="demo.st1">观察 OBSERVE</span></span>
|
|
631
|
+
<span class="lane"><span class="ticks"></span><span class="bar b-obs"></span></span>
|
|
632
|
+
</div>
|
|
633
|
+
<div class="pipe">
|
|
634
|
+
<span class="st"><b>B</b><span data-i18n="demo.st2">向量化 EMBED</span></span>
|
|
635
|
+
<span class="lane"><span class="ticks"></span><span class="bar b-vec"></span></span>
|
|
636
|
+
</div>
|
|
637
|
+
<div class="pipe">
|
|
638
|
+
<span class="st"><b>C</b><span data-i18n="demo.st3">检索 RETRIEVE</span></span>
|
|
639
|
+
<span class="lane"><span class="ticks"></span><span class="bar b-ret hot"></span></span>
|
|
640
|
+
</div>
|
|
641
|
+
<div class="pipe">
|
|
642
|
+
<span class="st"><b>D</b><span data-i18n="demo.st4">注入 INJECT</span></span>
|
|
643
|
+
<span class="lane"><span class="ticks"></span><span class="bar b-inj hot"></span></span>
|
|
644
|
+
</div>
|
|
645
|
+
<div>
|
|
646
|
+
<div class="store">
|
|
647
|
+
<span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell hit"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span>
|
|
648
|
+
<span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell hit"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span>
|
|
649
|
+
<span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell hit"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span>
|
|
650
|
+
<span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell hit"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span><span class="cell"></span>
|
|
651
|
+
</div>
|
|
652
|
+
<div class="store-cap">
|
|
653
|
+
<span data-i18n="demo.store">MEMORY STORE · 三层语料</span>
|
|
654
|
+
<span><b>4</b> <span data-i18n="demo.hits">条命中</span></span>
|
|
655
|
+
</div>
|
|
656
|
+
</div>
|
|
657
|
+
</div>
|
|
658
|
+
<div class="sch-foot">
|
|
659
|
+
<span class="zero" data-i18n="demo.zero">模型发起记忆调用</span>
|
|
660
|
+
<span data-i18n="demo.next">下一拍开口时,她已经记得</span>
|
|
661
|
+
</div>
|
|
662
|
+
</div>
|
|
663
|
+
</div>
|
|
664
|
+
</section>
|
|
665
|
+
|
|
666
|
+
<!-- ── 数字带 ── -->
|
|
667
|
+
<div class="stats-band">
|
|
668
|
+
<div class="stats-grid">
|
|
669
|
+
<div class="stat-cell hot reveal">
|
|
670
|
+
<div class="v">0<span class="u" data-i18n="st.1.u">次</span></div>
|
|
671
|
+
<div class="l" data-i18n="st.1.l">需要模型主动调用记忆</div>
|
|
672
|
+
</div>
|
|
673
|
+
<div class="stat-cell reveal">
|
|
674
|
+
<div class="v">3<span class="u" data-i18n="st.2.u">级</span></div>
|
|
675
|
+
<div class="l" data-i18n="st.2.l">检索算力:词法 / 内置向量 / BGE-M3</div>
|
|
676
|
+
</div>
|
|
677
|
+
<div class="stat-cell reveal">
|
|
678
|
+
<div class="v">R@5 0.925</div>
|
|
679
|
+
<div class="l" data-i18n="st.3.l">BGE-M3 int8 档实测召回(与 fp32 差 0.000)</div>
|
|
680
|
+
</div>
|
|
681
|
+
<div class="stat-cell reveal">
|
|
682
|
+
<div class="v">100<span class="u">%</span></div>
|
|
683
|
+
<div class="l" data-i18n="st.4.l">激活决策带证据链,可逐次复核打分</div>
|
|
684
|
+
</div>
|
|
685
|
+
</div>
|
|
686
|
+
</div>
|
|
687
|
+
|
|
688
|
+
<!-- ── 01 管线 ── -->
|
|
689
|
+
<section class="block" id="pipeline">
|
|
690
|
+
<div class="wrap">
|
|
691
|
+
<div class="sec-head reveal">
|
|
692
|
+
<div class="sec-num"><b>01</b><span data-i18n="flow.kicker">核心管线</span></div>
|
|
693
|
+
<div>
|
|
694
|
+
<h2 data-i18n="flow.title">从对话到记忆注入,四站直达</h2>
|
|
695
|
+
<p class="sec-sub" data-i18n="flow.sub">观察 → 检索决策 → 投递闭环。NLP 关键词与向量化双轨并行,唤起必要性由统一策略管线回答——每一步都有 JS 权威层做最终仲裁,AI 只在边界内干活。</p>
|
|
696
|
+
</div>
|
|
697
|
+
</div>
|
|
698
|
+
|
|
699
|
+
<div class="pipe-flow reveal">
|
|
700
|
+
<div class="pf-cell">
|
|
701
|
+
<span class="pf-tag" data-i18n="flow.a.tag">A · 观察</span>
|
|
702
|
+
<h3 data-i18n="flow.a.t">监听对话与工具事件</h3>
|
|
703
|
+
<p data-i18n="flow.a.p">持续观察每轮对话、工具回包、用户/助手事件,定位有"长期价值"的内容。</p>
|
|
704
|
+
<ul>
|
|
705
|
+
<li data-i18n="flow.a.l1">用户消息 + 工具结果实时锚定</li>
|
|
706
|
+
<li data-i18n="flow.a.l2">子代理静默评估(不打断主流程)</li>
|
|
707
|
+
<li data-i18n="flow.a.l3">闲聊 / 失败进重试队列(5 分钟心跳)</li>
|
|
708
|
+
</ul>
|
|
709
|
+
</div>
|
|
710
|
+
<div class="pf-cell">
|
|
711
|
+
<span class="pf-tag" data-i18n="flow.b.tag">B · 检索与决策</span>
|
|
712
|
+
<h3 data-i18n="flow.b.t">双轨检索 + 两车道决策</h3>
|
|
713
|
+
<p data-i18n="flow.b.p">先按相关性排序(词法 BM25 保底 / 内置向量 / BGE-M3),再按"该不该打断你"两车道分流。</p>
|
|
714
|
+
<ul>
|
|
715
|
+
<li data-i18n="flow.b.l1">词法 0GB 保底 → 内置语义 ~130MB → Python BGE-M3 进阶</li>
|
|
716
|
+
<li data-i18n="flow.b.l2">canary 显式唤起 / shadow 仅记录不注入</li>
|
|
717
|
+
<li data-i18n="flow.b.l3">决策全程可打分复核(A/P/S/H/E)</li>
|
|
718
|
+
</ul>
|
|
719
|
+
</div>
|
|
720
|
+
<div class="pf-cell">
|
|
721
|
+
<span class="pf-tag" data-i18n="flow.c.tag">C · 投递闭环</span>
|
|
722
|
+
<h3 data-i18n="flow.c.t">固定边界注入 + 证据反馈</h3>
|
|
723
|
+
<p data-i18n="flow.c.p">提示词字节级稳定,前缀缓存持续命中;每次投递留下 delivered/seen 证据喂回决策。</p>
|
|
724
|
+
<ul>
|
|
725
|
+
<li data-i18n="flow.c.l1">固定边界注入(前缀缓存友好)</li>
|
|
726
|
+
<li data-i18n="flow.c.l2">delivered / seen 证据回流</li>
|
|
727
|
+
<li data-i18n="flow.c.l3">「唤起回顾」页可逐次打分 + 政策提示</li>
|
|
728
|
+
</ul>
|
|
729
|
+
</div>
|
|
730
|
+
</div>
|
|
731
|
+
|
|
732
|
+
<div class="flow-note reveal">
|
|
733
|
+
<span class="fn-tag" data-i18n="flow.foot.tag">权限分立</span>
|
|
734
|
+
<span><b data-i18n="flow.foot.b">决策全程可复核,记忆治理永远在 JS 权威层。</b> <span data-i18n="flow.foot.s">AI 子代理只产出"建议";是否写入、是否注入、是否唤起——最终决策都跑在 Node 端的 JS 权威层里;任何一次决策都能在「唤起回顾」页追溯原始证据与上下文。</span></span>
|
|
735
|
+
</div>
|
|
736
|
+
|
|
737
|
+
<!-- 架构分层 + 实现状态板(交互式) -->
|
|
738
|
+
<div class="arch reveal">
|
|
739
|
+
<div class="arch-head">
|
|
740
|
+
<span data-i18n="arch.title">SYSTEM LAYERING · 运行时分层</span>
|
|
741
|
+
<span class="arch-link"><a href="https://github.com/Aik358/dsh-auto-memory/blob/preview/docs/proactive-associative-memory-system-map.html" target="_blank" rel="noreferrer" data-i18n="arch.link">完整交互架构图 →</a></span>
|
|
742
|
+
</div>
|
|
743
|
+
|
|
744
|
+
<div class="arch-cols">
|
|
745
|
+
<div class="arch-col">
|
|
746
|
+
<div class="ac-title" data-i18n="arch.js">JS 记忆核心 · lib/*_pre.js · 零运行时依赖</div>
|
|
747
|
+
<button class="mnode live" type="button" data-m="M1"><i></i><b>M1</b><span data-i18n="m.M1">会话隔离</span></button>
|
|
748
|
+
<button class="mnode live" type="button" data-m="M2"><i></i><b>M2</b><span data-i18n="m.M2">上下文投影</span></button>
|
|
749
|
+
<button class="mnode live" type="button" data-m="M3b"><i></i><b>M3</b><span data-i18n="m.M3b">记忆锚定与迁移</span></button>
|
|
750
|
+
<button class="mnode live" type="button" data-m="M4"><i></i><b>M4</b><span data-i18n="m.M4">语料适配 + 影子检索</span></button>
|
|
751
|
+
<button class="mnode live" type="button" data-m="M5"><i></i><b>M5</b><span data-i18n="m.M5">上下文/证据桥</span></button>
|
|
752
|
+
<button class="mnode live" type="button" data-m="M6"><i></i><b>M6</b><span data-i18n="m.M6">激活收件箱 + 参考尾注</span></button>
|
|
753
|
+
<button class="mnode live" type="button" data-m="C2"><i></i><b>C2</b><span data-i18n="m.C2">内置语义层 e5-small(默认档)</span></button>
|
|
754
|
+
</div>
|
|
755
|
+
<div class="arch-col">
|
|
756
|
+
<div class="ac-title" data-i18n="arch.py">Python sidecar · 可选 · lazy spawn</div>
|
|
757
|
+
<button class="mnode live" type="button" data-m="M7"><i></i><b>M7</b><span data-i18n="m.M7">语义引擎 BGE-M3 int8</span></button>
|
|
758
|
+
<button class="mnode live" type="button" data-m="R-DUAL"><i></i><b>R-DUAL</b><span data-i18n="m.RD">双轨语义层(三级算力)</span></button>
|
|
759
|
+
<button class="mnode tested" type="button" data-m="M8"><i></i><b>M8</b><span data-i18n="m.M8">记忆中枢(治理式写回)</span></button>
|
|
760
|
+
<button class="mnode tested" type="button" data-m="M9"><i></i><b>M9</b><span data-i18n="m.M9">技能固化生命周期</span></button>
|
|
761
|
+
<div class="ac-title" style="margin-top:14px" data-i18n="arch.obs">可观测 / 待发布</div>
|
|
762
|
+
<button class="mnode tested" type="button" data-m="G-02"><i></i><b>G-02</b><span data-i18n="m.G2">激活观测台</span></button>
|
|
763
|
+
<button class="mnode queued" type="button" data-m="M10"><i></i><b>M10</b><span data-i18n="m.M10">存储治理</span></button>
|
|
764
|
+
</div>
|
|
765
|
+
</div>
|
|
766
|
+
|
|
767
|
+
<div class="m-detail" id="m-detail" hidden>
|
|
768
|
+
<div class="md-head"><b id="md-id"></b><span id="md-title"></span><span class="md-state" id="md-state"></span><button type="button" class="md-close" id="md-close" aria-label="close">×</button></div>
|
|
769
|
+
<div class="md-body" id="md-body"></div>
|
|
770
|
+
</div>
|
|
771
|
+
|
|
772
|
+
<div class="arch-cap">
|
|
773
|
+
<span class="lg"><i class="dot live"></i><span data-i18n="arch.lg.live">live verified 已实现并实机验证</span></span>
|
|
774
|
+
<span class="lg"><i class="dot tested"></i><span data-i18n="arch.lg.tested">tested 已测试</span></span>
|
|
775
|
+
<span class="lg"><i class="dot queued"></i><span data-i18n="arch.lg.queued">queued 排队</span></span>
|
|
776
|
+
<span class="arch-cap-sep">·</span>
|
|
777
|
+
<span data-i18n="arch.cap">语义层决定"想起什么",权威层决定"是否/何时/如何注入"——Python 不创建证据,也不直接注入。点击模块查看实现摘要。</span>
|
|
778
|
+
</div>
|
|
779
|
+
|
|
780
|
+
<!-- 宣传图轮播:6 帧滚动吸附 -->
|
|
781
|
+
<div class="promo reveal">
|
|
782
|
+
<div class="promo-track" id="promo-track">
|
|
783
|
+
<img id="promo-1" src="../screenshots/promo/promo-0-banner-v2.png" alt="dsh-auto-memory 主视觉:不用吩咐,她自己记得" />
|
|
784
|
+
<img id="promo-2" src="../screenshots/promo/promo-2-tour.png" alt="欢迎向导:每个功能、当场看懂、当场开关" />
|
|
785
|
+
<img id="promo-3" src="../screenshots/promo/promo-3-recall.png" alt="唤起与固化:对话凝成技能,每一步有迹可循" />
|
|
786
|
+
<img id="promo-4" src="../screenshots/promo/promo-4-unattended.png" alt="无人值守模式:整夜安静跑,零寒暄,零打扰" />
|
|
787
|
+
<img id="promo-5" src="../screenshots/promo/promo-5-external.png" alt="外部记忆继承:你的其他 AI,也在喂她记忆" />
|
|
788
|
+
<img id="promo-6" src="../screenshots/promo/promo-6-greeting.png" alt="定时暖心问候:让每一天都被记得" />
|
|
789
|
+
</div>
|
|
790
|
+
<div class="promo-nav">
|
|
791
|
+
<span class="promo-cap" data-i18n="promo.cap">GALLERY · 六幕</span>
|
|
792
|
+
<span class="promo-dots">
|
|
793
|
+
<a href="#promo-1" aria-label="1"></a><a href="#promo-2" aria-label="2"></a><a href="#promo-3" aria-label="3"></a><a href="#promo-4" aria-label="4"></a><a href="#promo-5" aria-label="5"></a><a href="#promo-6" aria-label="6"></a>
|
|
794
|
+
</span>
|
|
795
|
+
<span style="display:flex;gap:6px">
|
|
796
|
+
<button type="button" class="promo-btn" id="promo-prev" aria-label="prev">←</button>
|
|
797
|
+
<button type="button" class="promo-btn" id="promo-next" aria-label="next">→</button>
|
|
798
|
+
</span>
|
|
799
|
+
</div>
|
|
800
|
+
</div>
|
|
801
|
+
|
|
802
|
+
<!-- 设计文献:论文与决策文档 -->
|
|
803
|
+
<div class="papers">
|
|
804
|
+
<div class="papers-head" data-i18n="pp.title">DESIGN PAPERS · 设计文献(全部结论冻结为工程决策)</div>
|
|
805
|
+
<a class="paper-row" href="https://github.com/Aik358/dsh-auto-memory/blob/preview/docs/M7-RESEARCH-PAPER.md" target="_blank" rel="noreferrer">
|
|
806
|
+
<span class="pr-no">01</span>
|
|
807
|
+
<span class="pr-body"><b data-i18n="pp.1.t">多语言嵌入式检索选型研究</b><small data-i18n="pp.1.s">3 模型 × 5 分块 × 6 通道 ≈ 90 评测单元,BGE-M3 全面领先;冻结为 D1–D11 工程决策</small></span>
|
|
808
|
+
<span class="pr-arrow">→</span>
|
|
809
|
+
</a>
|
|
810
|
+
<a class="paper-row" href="https://github.com/Aik358/dsh-auto-memory/blob/preview/docs/M7-ACTIVATION-V2-PAPER.md" target="_blank" rel="noreferrer">
|
|
811
|
+
<span class="pr-no">02</span>
|
|
812
|
+
<span class="pr-body"><b data-i18n="pp.2.t">从语义相关到唤起必要:回声陷阱的发现、度量与修正</b><small data-i18n="pp.2.s">激活策略 v2 技术报告 + 双轨部署架构(§7);67 条人工金标 held-out 验收 actPrecision 0.917</small></span>
|
|
813
|
+
<span class="pr-arrow">→</span>
|
|
814
|
+
</a>
|
|
815
|
+
<a class="paper-row" href="https://github.com/Aik358/dsh-auto-memory/blob/preview/docs/M7-EMBEDDING-BENCHMARK.md" target="_blank" rel="noreferrer">
|
|
816
|
+
<span class="pr-no">03</span>
|
|
817
|
+
<span class="pr-body"><b data-i18n="pp.3.t">嵌入基准报告</b><small data-i18n="pp.3.s">模型/分块/融合冻结依据:bge-m3 + para-512-noov + 加权融合</small></span>
|
|
818
|
+
<span class="pr-arrow">→</span>
|
|
819
|
+
</a>
|
|
820
|
+
<a class="paper-row" href="https://github.com/Aik358/dsh-auto-memory/blob/preview/docs/M7-ALGORITHM-DECISION.md" target="_blank" rel="noreferrer">
|
|
821
|
+
<span class="pr-no">04</span>
|
|
822
|
+
<span class="pr-body"><b data-i18n="pp.4.t">算法冻结决策 D1–D11</b><small data-i18n="pp.4.s">全部研究结论到生产实现的决策台账</small></span>
|
|
823
|
+
<span class="pr-arrow">→</span>
|
|
824
|
+
</a>
|
|
825
|
+
<a class="paper-row" href="https://github.com/Aik358/dsh-auto-memory/blob/preview/docs/M7-ACTIVATION-V2-HOLDEDOUT-EVAL.md" target="_blank" rel="noreferrer">
|
|
826
|
+
<span class="pr-no">05</span>
|
|
827
|
+
<span class="pr-body"><b data-i18n="pp.5.t">Held-out 人工金标验收</b><small data-i18n="pp.5.s">67 条标注打分:actPrecision 0.917 / harmfulEmit 0 / echo 层 7/7</small></span>
|
|
828
|
+
<span class="pr-arrow">→</span>
|
|
829
|
+
</a>
|
|
830
|
+
<a class="paper-row" href="https://github.com/Aik358/dsh-auto-memory/blob/preview/docs/PYTHON-SIDECAR-CONTRACT.md" target="_blank" rel="noreferrer">
|
|
831
|
+
<span class="pr-no">06</span>
|
|
832
|
+
<span class="pr-body"><b data-i18n="pp.6.t">Python Sidecar 完整契约</b><small data-i18n="pp.6.s">协议/生命周期/权威边界/各里程碑回归证据(§19.x)</small></span>
|
|
833
|
+
<span class="pr-arrow">→</span>
|
|
834
|
+
</a>
|
|
835
|
+
</div>
|
|
836
|
+
</div>
|
|
837
|
+
</div>
|
|
838
|
+
</section>
|
|
839
|
+
|
|
840
|
+
<!-- ── 02 功能全景 ── -->
|
|
841
|
+
<section class="block" id="features">
|
|
842
|
+
<div class="wrap">
|
|
843
|
+
<div class="sec-head reveal">
|
|
844
|
+
<div class="sec-num"><b>02</b><span data-i18n="feat.kicker">功能全景</span></div>
|
|
845
|
+
<div>
|
|
846
|
+
<h2 data-i18n="feat.title">十二个能力,互相咬合</h2>
|
|
847
|
+
<p class="sec-sub" data-i18n="feat.sub">逐项展开,不省略——你想知道它"到底能干什么",往下读就对了。</p>
|
|
848
|
+
</div>
|
|
849
|
+
</div>
|
|
850
|
+
|
|
851
|
+
<!-- 3.1 三层记忆体系 -->
|
|
852
|
+
<div class="feature reveal" id="f-mem">
|
|
853
|
+
<div class="feature-grid">
|
|
854
|
+
<div>
|
|
855
|
+
<span class="f-meta" data-i18n="f.1.kicker">3.1 · 三层记忆体系</span>
|
|
856
|
+
<h3 data-i18n="f.1.t">三处文件,三种语义</h3>
|
|
857
|
+
<p class="lede2" data-i18n="f.1.p">用户级 → 项目笔记 → 每日日志/反思,越往下越新鲜、越往上越稳定。注入策略按这个分层严格区分:静态纪律进 system prompt 保缓存,动态记忆只取最近 1 天,其余按需 recall。</p>
|
|
858
|
+
<div class="mem-table">
|
|
859
|
+
<div class="mem-row head">
|
|
860
|
+
<div data-i18n="f.1.col1">层</div>
|
|
861
|
+
<div data-i18n="f.1.col2">位置</div>
|
|
862
|
+
<div data-i18n="f.1.col3">内容</div>
|
|
863
|
+
</div>
|
|
864
|
+
<div class="mem-row">
|
|
865
|
+
<div data-i18n="f.1.r1.n">用户级记忆</div>
|
|
866
|
+
<div><code>~/.dsh/memory/MEMORY.md</code></div>
|
|
867
|
+
<div data-i18n="f.1.r1.c">跨项目规则与偏好</div>
|
|
868
|
+
</div>
|
|
869
|
+
<div class="mem-row">
|
|
870
|
+
<div data-i18n="f.1.r2.n">项目笔记</div>
|
|
871
|
+
<div><code>workspaces/{ws}/MEMORY.md</code></div>
|
|
872
|
+
<div data-i18n="f.1.r2.c">项目约定与决策</div>
|
|
873
|
+
</div>
|
|
874
|
+
<div class="mem-row">
|
|
875
|
+
<div data-i18n="f.1.r3.n">每日日志</div>
|
|
876
|
+
<div><code>workspaces/{ws}/YYYY-MM-DD.md</code></div>
|
|
877
|
+
<div data-i18n="f.1.r3.c">追加式工作日志</div>
|
|
878
|
+
</div>
|
|
879
|
+
<div class="mem-row">
|
|
880
|
+
<div data-i18n="f.1.r4.n">每日反思</div>
|
|
881
|
+
<div><code>…/reflections/YYYY-MM-DD.md</code></div>
|
|
882
|
+
<div data-i18n="f.1.r4.c">结构化复盘(成果/教训/下一步)</div>
|
|
883
|
+
</div>
|
|
884
|
+
</div>
|
|
885
|
+
</div>
|
|
886
|
+
<div class="f-visual">
|
|
887
|
+
<div class="vbar"><span data-i18n="f.1.art">MEMORY HUB</span><span class="dots"><i></i><i></i><i></i></span></div>
|
|
888
|
+
<img src="../screenshots/panel-hub.png" alt="memory hub" />
|
|
889
|
+
</div>
|
|
890
|
+
</div>
|
|
891
|
+
<ul class="feat-list" style="margin-top:22px">
|
|
892
|
+
<li data-i18n="f.1.b1">静态纪律进 system prompt:字节级稳定 → 前缀缓存持续命中</li>
|
|
893
|
+
<li data-i18n="f.1.b2">动态记忆走运行时快照:只注入最近 1 天日志+反思摘要</li>
|
|
894
|
+
<li><span data-i18n="f.1.b3">凭证/密钥段</span><strong data-i18n="f.1.b3b">永远</strong><span data-i18n="f.1.b3c">被过滤在提示词之外</span></li>
|
|
895
|
+
</ul>
|
|
896
|
+
</div>
|
|
897
|
+
|
|
898
|
+
<!-- 3.2 自动沉淀 -->
|
|
899
|
+
<div class="feature reveal" id="f-auto">
|
|
900
|
+
<div class="feature-grid reverse">
|
|
901
|
+
<div>
|
|
902
|
+
<span class="f-meta" data-i18n="f.2.kicker">3.2 · 自动沉淀</span>
|
|
903
|
+
<h3 data-i18n="f.2.t">记忆自己写自己</h3>
|
|
904
|
+
<p class="lede2" data-i18n="f.2.p">每轮对话结束,一个小型子代理静默评估本轮内容——长期有价值的主题分组写入今日日志(<code>## 主题(HH:MM)</code> + 要点),长期决策晋升项目笔记,跨项目规则晋升用户级,闲聊跳过。</p>
|
|
905
|
+
<ul class="feat-list">
|
|
906
|
+
<li data-i18n="f.2.l1">主题分组:## 主题(HH:MM) + 要点列表</li>
|
|
907
|
+
<li data-i18n="f.2.l2">长期决策 → 项目笔记;跨项目规则 → 用户级</li>
|
|
908
|
+
<li data-i18n="f.2.l3">失败入队,每 5 分钟重试;15 秒心跳文件证明循环存活</li>
|
|
909
|
+
<li data-i18n="f.2.l4">每日写入有预算 + AI 自动压缩——超限不拒写</li>
|
|
910
|
+
</ul>
|
|
911
|
+
</div>
|
|
912
|
+
<div class="f-visual">
|
|
913
|
+
<div class="vbar"><span data-i18n="f.2.art">AUTO-CONSOLIDATION</span><span class="dots"><i></i><i></i><i></i></span></div>
|
|
914
|
+
<img src="../screenshots/panel-overview.png" alt="overview" />
|
|
915
|
+
</div>
|
|
916
|
+
</div>
|
|
917
|
+
</div>
|
|
918
|
+
|
|
919
|
+
<!-- 3.3 欢迎向导 -->
|
|
920
|
+
<div class="feature reveal" id="f-tour">
|
|
921
|
+
<div class="feature-grid">
|
|
922
|
+
<div>
|
|
923
|
+
<span class="f-meta" data-i18n="f.3.kicker">3.3 · 欢迎向导(v0.1.30 大更新)</span>
|
|
924
|
+
<h3 data-i18n="f.3.t">不是弹窗广告,是功能总开关</h3>
|
|
925
|
+
<p class="lede2" data-i18n="f.3.p">升级或首装后自动播放的分步向导——Office/Fluent 式液态玻璃应用图标族,每项功能当场开关立即生效;中途关闭会先落到"完成提醒"步,告诉你每个功能在设置的哪个分区重新打开。</p>
|
|
926
|
+
<ul class="feat-list">
|
|
927
|
+
<li data-i18n="f.3.l1">每步一枚专属动效图标(注入青蓝 / 问候暖金 / 日历青绿 / 引擎紫蓝 / 雷达天青 / 完成珊瑚金)</li>
|
|
928
|
+
<li data-i18n="f.3.l2">三级检索引擎在向导内自动检测 + 一键安装(SHA256 校验 + 推理自检)</li>
|
|
929
|
+
<li data-i18n="f.3.l3">外部记忆实时扫描:WorkBuddy / Claude Code / Codex 等来源直接列出,逐源勾选</li>
|
|
930
|
+
<li data-i18n="f.3.l4">升级用户一次性触达:v0.1.30 起所有用户升级后自动播放一次</li>
|
|
931
|
+
<li><span data-i18n="f.3.l5">设置 → 外观 → 欢迎向导 →</span> <strong data-i18n="f.3.l5b">▶ 重看引导</strong> <span data-i18n="f.3.l5c">随时重新打开</span></li>
|
|
932
|
+
</ul>
|
|
933
|
+
</div>
|
|
934
|
+
<div class="f-visual">
|
|
935
|
+
<div class="vbar"><span data-i18n="f.3.art">WELCOME TOUR</span><span class="dots"><i></i><i></i><i></i></span></div>
|
|
936
|
+
<img src="../screenshots/tour-welcome.png" alt="tour welcome" />
|
|
937
|
+
</div>
|
|
938
|
+
</div>
|
|
939
|
+
</div>
|
|
940
|
+
|
|
941
|
+
<!-- 3.4 唤起与固化 -->
|
|
942
|
+
<div class="feature reveal" id="f-recall">
|
|
943
|
+
<div class="feature-grid reverse">
|
|
944
|
+
<div>
|
|
945
|
+
<span class="f-meta" data-i18n="f.4.kicker">3.4 · 唤起与技能固化</span>
|
|
946
|
+
<h3 data-i18n="f.4.t">该出手时才出手</h3>
|
|
947
|
+
<p class="lede2" data-i18n="f.4.p">联想式记忆唤起在对话链中检测回忆需求,命中即注入下一环节(不破坏前缀缓存);高频流程固化为技能 checklist 自动附上,跨会话验证后晋升——每一次"要不要打断你"的决策都能在「唤起回顾」页复核打分。</p>
|
|
948
|
+
<ul class="feat-list">
|
|
949
|
+
<li data-i18n="f.4.l1">决策打分:A 该激活 / P 只预取 / S 应抑制 / H 有害 / E 改目标</li>
|
|
950
|
+
<li data-i18n="f.4.l2">技能晋升四态:observed → candidate → validated → active</li>
|
|
951
|
+
<li data-i18n="f.4.l3">90 天未用自动归档,可手动置顶</li>
|
|
952
|
+
<li data-i18n="f.4.l4">判定队列会汇总成政策提示,反哺自动决策</li>
|
|
953
|
+
</ul>
|
|
954
|
+
</div>
|
|
955
|
+
<div class="f-visual">
|
|
956
|
+
<div class="vbar"><span data-i18n="f.4.art">RECALL REVIEW</span><span class="dots"><i></i><i></i><i></i></span></div>
|
|
957
|
+
<img src="../screenshots/panel-refine.png" alt="refine" />
|
|
958
|
+
</div>
|
|
959
|
+
</div>
|
|
960
|
+
</div>
|
|
961
|
+
|
|
962
|
+
<!-- 3.5 无人值守模式 -->
|
|
963
|
+
<div class="feature reveal" id="f-unattended">
|
|
964
|
+
<div class="feature-grid">
|
|
965
|
+
<div>
|
|
966
|
+
<span class="f-meta" data-i18n="f.5.kicker">3.5 · 无人值守模式</span>
|
|
967
|
+
<h3 data-i18n="f.5.t">面向长跑批处理任务</h3>
|
|
968
|
+
<p class="lede2" data-i18n="f.5.p">设置 → 自动化提供<strong>手动开关</strong>与<strong>夜间自动托管</strong>(22:00-08:00 可调);托管期间不注入欢迎语/寒暄/行为指令、日历提醒静默、上下文保持稳定——模型专注干活,token 花在正事上。</p>
|
|
969
|
+
<ul class="feat-list">
|
|
970
|
+
<li data-i18n="f.5.l1">零寒暄 / 零行为指令 / 日历静默 / 上下文冻结</li>
|
|
971
|
+
<li data-i18n="f.5.l2">时间窗可调(默认 22:00-08:00)</li>
|
|
972
|
+
<li data-i18n="f.5.l3">来源:社区 Issue #10 反馈驱动的加固场景</li>
|
|
973
|
+
</ul>
|
|
974
|
+
<div class="mini-stats">
|
|
975
|
+
<div class="ms"><div class="v">0</div><div class="l" data-i18n="f.5.s1.l">托管期间注入的寒暄</div></div>
|
|
976
|
+
<div class="ms"><div class="v">10h</div><div class="l" data-i18n="f.5.s2.l">夜间默认托管窗口</div></div>
|
|
977
|
+
<div class="ms"><div class="v">100%</div><div class="l" data-i18n="f.5.s3.l">上下文稳定(不增删)</div></div>
|
|
978
|
+
</div>
|
|
979
|
+
</div>
|
|
980
|
+
<div class="f-visual">
|
|
981
|
+
<div class="vbar"><span data-i18n="f.5.art">UNATTENDED</span><span class="dots"><i></i><i></i><i></i></span></div>
|
|
982
|
+
<img src="../screenshots/tour-toggles.png" alt="tour toggles" />
|
|
983
|
+
</div>
|
|
984
|
+
</div>
|
|
985
|
+
</div>
|
|
986
|
+
|
|
987
|
+
<!-- 3.6 AI 问候与每日反思 -->
|
|
988
|
+
<div class="feature reveal" id="f-greet">
|
|
989
|
+
<div class="feature-grid reverse">
|
|
990
|
+
<div>
|
|
991
|
+
<span class="f-meta" data-i18n="f.6.kicker">3.6 · AI 问候与每日反思</span>
|
|
992
|
+
<h3 data-i18n="f.6.t">时段感知 + 暂离回归 + 每日复盘</h3>
|
|
993
|
+
<p class="lede2" data-i18n="f.6.p">按时段(晨/午/晚)生成提及你当日最重要工作的问候;暂离超过 1 小时回来,记忆面板自动打开并送上"欢迎回来"+近期工作摘要;每天第一次会话主动呈现前一日结构化反思。</p>
|
|
994
|
+
<ul class="feat-list">
|
|
995
|
+
<li data-i18n="f.6.l1">时段问候:晨/午/晚,提及当日工作要点</li>
|
|
996
|
+
<li data-i18n="f.6.l2">暂离 >1h 回归自动开面板 + "欢迎回来"</li>
|
|
997
|
+
<li data-i18n="f.6.l3">每日第一次会话:前一日结构化反思</li>
|
|
998
|
+
</ul>
|
|
999
|
+
</div>
|
|
1000
|
+
<div class="f-visual">
|
|
1001
|
+
<div class="vbar"><span data-i18n="f.6.art">OVERVIEW</span><span class="dots"><i></i><i></i><i></i></span></div>
|
|
1002
|
+
<img src="../screenshots/panel-overview.png" alt="overview" />
|
|
1003
|
+
</div>
|
|
1004
|
+
</div>
|
|
1005
|
+
</div>
|
|
1006
|
+
|
|
1007
|
+
<!-- 3.7 智能检索 + 工作区全景 -->
|
|
1008
|
+
<div class="feature reveal" id="f-search">
|
|
1009
|
+
<div class="feature-grid">
|
|
1010
|
+
<div>
|
|
1011
|
+
<span class="f-meta" data-i18n="f.7.kicker">3.7 · 智能检索与工作区全景</span>
|
|
1012
|
+
<h3 data-i18n="f.7.t">自然语言搜,跨工作区可达</h3>
|
|
1013
|
+
<p class="lede2" data-i18n="f.7.p">自然语言提问,AI 自动扩展关键词扫描全部记忆层,会话式回答并标注来源;面板「工作区」页签自动生成工作区关系图——AI 归纳主题与跨区关联,可拖拽/缩放/点卡片看详情。</p>
|
|
1014
|
+
<ul class="feat-list">
|
|
1015
|
+
<li data-i18n="f.7.l1">跨工作区检索天然支持,结果标注来源工作区</li>
|
|
1016
|
+
<li data-i18n="f.7.l2">工作区关系图:主题归纳 + 跨区关联</li>
|
|
1017
|
+
<li data-i18n="f.7.l3">可拖拽 / 缩放 / 点卡详情</li>
|
|
1018
|
+
</ul>
|
|
1019
|
+
</div>
|
|
1020
|
+
<div class="f-visual">
|
|
1021
|
+
<div class="vbar"><span data-i18n="f.7.art">SEARCH</span><span class="dots"><i></i><i></i><i></i></span></div>
|
|
1022
|
+
<img src="../screenshots/panel-hub.png" alt="search" />
|
|
1023
|
+
</div>
|
|
1024
|
+
</div>
|
|
1025
|
+
</div>
|
|
1026
|
+
|
|
1027
|
+
<!-- 3.8 日历 -->
|
|
1028
|
+
<div class="feature reveal" id="f-cal">
|
|
1029
|
+
<div class="feature-grid reverse">
|
|
1030
|
+
<div>
|
|
1031
|
+
<span class="f-meta" data-i18n="f.8.kicker">3.8 · 日历 — AI 替你维护</span>
|
|
1032
|
+
<h3 data-i18n="f.8.t">截止日期从对话里"长出来"</h3>
|
|
1033
|
+
<p class="lede2" data-i18n="f.8.p">AI 从对话中识别截止日期/约定自动入日历(<code>calendar_add</code>),未完成事项注入后续会话直到完成;日视图 07:00-22:00 时间轴、地点/提醒字段、紧急度语义色。</p>
|
|
1034
|
+
<ul class="feat-list">
|
|
1035
|
+
<li data-i18n="f.8.l1">自动从对话识别 deadline / 约定 → 入日历</li>
|
|
1036
|
+
<li data-i18n="f.8.l2">未完成项注入后续会话直到完成</li>
|
|
1037
|
+
<li data-i18n="f.8.l3">07:00-22:00 时间轴 + 地点/提醒字段 + 紧急度语义色</li>
|
|
1038
|
+
</ul>
|
|
1039
|
+
</div>
|
|
1040
|
+
<div class="f-visual">
|
|
1041
|
+
<div class="vbar"><span data-i18n="f.8.art">CALENDAR</span><span class="dots"><i></i><i></i><i></i></span></div>
|
|
1042
|
+
<img src="../screenshots/calendar-zh.png" alt="calendar" />
|
|
1043
|
+
</div>
|
|
1044
|
+
</div>
|
|
1045
|
+
</div>
|
|
1046
|
+
|
|
1047
|
+
<!-- 3.9 外部记忆继承 -->
|
|
1048
|
+
<div class="feature reveal" id="f-external">
|
|
1049
|
+
<div class="feature-grid">
|
|
1050
|
+
<div>
|
|
1051
|
+
<span class="f-meta" data-i18n="f.9.kicker">3.9 · 外部记忆继承</span>
|
|
1052
|
+
<h3 data-i18n="f.9.t">别让别处的经验白攒</h3>
|
|
1053
|
+
<p class="lede2" data-i18n="f.9.p">WorkBuddy / CodeBuddy / Claude Code / Codex 的历史会话与记忆可扫描发现、按源导入(<strong>只存路径指针,不复制内容</strong>)、按源删除;导入侧 + 注入侧双重卫生闸门防外部脏数据混入。</p>
|
|
1054
|
+
<ul class="feat-list">
|
|
1055
|
+
<li data-i18n="f.9.l1">扫描发现:WorkBuddy / CodeBuddy / Claude Code / Codex</li>
|
|
1056
|
+
<li data-i18n="f.9.l2">按源导入:只存路径指针(不复制内容)</li>
|
|
1057
|
+
<li data-i18n="f.9.l3">按源删除 + 双重卫生闸门</li>
|
|
1058
|
+
</ul>
|
|
1059
|
+
</div>
|
|
1060
|
+
<div class="f-visual">
|
|
1061
|
+
<div class="vbar"><span data-i18n="f.9.art">EXTERNAL SCAN</span><span class="dots"><i></i><i></i><i></i></span></div>
|
|
1062
|
+
<img src="../screenshots/tour-external.png" alt="external scan" />
|
|
1063
|
+
</div>
|
|
1064
|
+
</div>
|
|
1065
|
+
</div>
|
|
1066
|
+
|
|
1067
|
+
<!-- 3.10 记忆卫生 -->
|
|
1068
|
+
<div class="feature reveal" id="f-hygiene">
|
|
1069
|
+
<div class="feature-grid reverse">
|
|
1070
|
+
<div>
|
|
1071
|
+
<span class="f-meta" data-i18n="f.10.kicker">3.10 · 记忆卫生(生产级)</span>
|
|
1072
|
+
<h3 data-i18n="f.10.t">写入门禁 + 脏 token 扫描</h3>
|
|
1073
|
+
<p class="lede2" data-i18n="f.10.p">三个写入工具全部过 <code>sanitizeForWrite</code>:GBK 乱码(34 特征全表)、复读退化、连续重复行、外部 AI 画像 JSON 特征、base64 残留——全部拒写并给出中文回执。设置 → 调试中心「扫描脏 token」一键按行区间报告问题(只报位置不含正文)。</p>
|
|
1074
|
+
<ul class="feat-list">
|
|
1075
|
+
<li data-i18n="f.10.l1">34 个 GBK 乱码特征全表识别</li>
|
|
1076
|
+
<li data-i18n="f.10.l2">复读退化 / 连续重复行 / 外部画像 JSON / base64 残留</li>
|
|
1077
|
+
<li data-i18n="f.10.l3">追加 8000 字/条;全量改写 20 万字上限</li>
|
|
1078
|
+
<li data-i18n="f.10.l4">追加前与文件尾部近 60 行做去重</li>
|
|
1079
|
+
</ul>
|
|
1080
|
+
</div>
|
|
1081
|
+
<div class="f-visual">
|
|
1082
|
+
<div class="vbar"><span data-i18n="f.10.art">HYGIENE</span><span class="dots"><i></i><i></i><i></i></span></div>
|
|
1083
|
+
<img src="../screenshots/tour-core.png" alt="tour core" />
|
|
1084
|
+
</div>
|
|
1085
|
+
</div>
|
|
1086
|
+
</div>
|
|
1087
|
+
|
|
1088
|
+
<!-- 3.11 记忆生命周期 -->
|
|
1089
|
+
<div class="feature reveal" id="f-life">
|
|
1090
|
+
<div class="feature-grid">
|
|
1091
|
+
<div>
|
|
1092
|
+
<span class="f-meta" data-i18n="f.11.kicker">3.11 · 记忆生命周期</span>
|
|
1093
|
+
<h3 data-i18n="f.11.t">30 天蒸馏:把过程流水换成可复用结论</h3>
|
|
1094
|
+
<p class="lede2" data-i18n="f.11.p"><code>memory_maintain_pre</code> 把 30 天前的每日日志交给 AI 蒸馏:只提炼有跨会话长期价值的要点(技术决策/架构约定/偏好/踩坑规则),写入项目笔记;原文保底归档到 <code>archive/</code>(AI 不可用时降级为原样归档,绝不丢信息)。</p>
|
|
1095
|
+
<ul class="feat-list">
|
|
1096
|
+
<li data-i18n="f.11.l1">30 天蒸馏窗口:旧日志 → 长期要点 → 项目笔记</li>
|
|
1097
|
+
<li><span data-i18n="f.11.l2">蒸馏明确边界:</span><strong data-i18n="f.11.l2b">procedure skills(技能固化)</strong><span data-i18n="f.11.l2c">与两级笔记不在蒸馏范围</span></li>
|
|
1098
|
+
<li data-i18n="f.11.l3">归档原文不在常规检索扫描内(检索=项目笔记+活跃日志+反思+用户级)</li>
|
|
1099
|
+
<li data-i18n="f.11.l4">蒸馏要点随笔记常驻注入</li>
|
|
1100
|
+
<li data-i18n="f.11.l5">memory_consolidate:AI 发散固化(阶段性回头升格)</li>
|
|
1101
|
+
</ul>
|
|
1102
|
+
</div>
|
|
1103
|
+
<div class="f-visual">
|
|
1104
|
+
<div class="vbar"><span data-i18n="f.11.art">LIFECYCLE</span><span class="dots"><i></i><i></i><i></i></span></div>
|
|
1105
|
+
<img src="../screenshots/panel-hub.png" alt="hub" />
|
|
1106
|
+
</div>
|
|
1107
|
+
</div>
|
|
1108
|
+
</div>
|
|
1109
|
+
|
|
1110
|
+
<!-- 3.12 工程内核 -->
|
|
1111
|
+
<div class="feature reveal" id="f-core">
|
|
1112
|
+
<div class="feature-grid reverse">
|
|
1113
|
+
<div>
|
|
1114
|
+
<span class="f-meta" data-i18n="f.12.kicker">3.12 · 工程内核(信任背书)</span>
|
|
1115
|
+
<h3 data-i18n="f.12.t">保持克制的设计</h3>
|
|
1116
|
+
<p class="lede2" data-i18n="f.12.p">这些不是"特性",是"在你能用它之前先让你放心"的工程承诺——少一点跑得快的东西,多一点能跑得久的东西。</p>
|
|
1117
|
+
<ul class="feat-list">
|
|
1118
|
+
<li data-i18n="f.12.l1">零运行时依赖(仅 Node 内建模块)</li>
|
|
1119
|
+
<li data-i18n="f.12.l2">前缀缓存友好:提示词字节级稳定</li>
|
|
1120
|
+
<li data-i18n="f.12.l3">限额 AI:自动沉淀每日 ≤8 次带冷却</li>
|
|
1121
|
+
<li data-i18n="f.12.l4">集中式存储:~/.dsh/memory/workspaces/</li>
|
|
1122
|
+
<li data-i18n="f.12.l5">可选 Python sidecar(BGE-M3 int8,失败自动回退词法)</li>
|
|
1123
|
+
</ul>
|
|
1124
|
+
</div>
|
|
1125
|
+
<div class="f-visual">
|
|
1126
|
+
<div class="vbar"><span data-i18n="f.12.art">ENGINEERING</span><span class="dots"><i></i><i></i><i></i></span></div>
|
|
1127
|
+
<img src="../screenshots/panel-overview.png" alt="engineering" />
|
|
1128
|
+
</div>
|
|
1129
|
+
</div>
|
|
1130
|
+
</div>
|
|
1131
|
+
|
|
1132
|
+
</div>
|
|
1133
|
+
</section>
|
|
1134
|
+
|
|
1135
|
+
<!-- ── 03 界面速览 ── -->
|
|
1136
|
+
<section class="block" id="gallery">
|
|
1137
|
+
<div class="wrap">
|
|
1138
|
+
<div class="sec-head reveal">
|
|
1139
|
+
<div class="sec-num"><b>03</b><span data-i18n="g.kicker">界面速览</span></div>
|
|
1140
|
+
<div>
|
|
1141
|
+
<h2 data-i18n="g.title">七张实机截图</h2>
|
|
1142
|
+
<p class="sec-sub" data-i18n="g.sub">从欢迎向导到唤起回顾——每个截图都是真实运行画面。</p>
|
|
1143
|
+
</div>
|
|
1144
|
+
</div>
|
|
1145
|
+
<div class="gallery-grid reveal">
|
|
1146
|
+
<figure class="g-card" style="margin:0">
|
|
1147
|
+
<img src="../screenshots/panel-overview.png" alt="overview" />
|
|
1148
|
+
<figcaption class="cap"><span data-i18n="g.1.t">记忆面板 · 概览</span><small data-i18n="g.1.s">暂离问候 + AI 时段总结</small></figcaption>
|
|
1149
|
+
</figure>
|
|
1150
|
+
<figure class="g-card" style="margin:0">
|
|
1151
|
+
<img src="../screenshots/panel-hub.png" alt="hub" />
|
|
1152
|
+
<figcaption class="cap"><span data-i18n="g.2.t">记忆中枢</span><small data-i18n="g.2.s">三层记忆店 + 技能晋升审批</small></figcaption>
|
|
1153
|
+
</figure>
|
|
1154
|
+
<figure class="g-card span-12" style="margin:0">
|
|
1155
|
+
<img src="../screenshots/panel-refine.png" alt="refine" />
|
|
1156
|
+
<figcaption class="cap"><span data-i18n="g.3.t">唤起回顾</span><small data-i18n="g.3.s">每次激活决策可打分(A/P/S/H/E)</small></figcaption>
|
|
1157
|
+
</figure>
|
|
1158
|
+
<figure class="g-card" style="margin:0">
|
|
1159
|
+
<img src="../screenshots/tour-welcome.png" alt="tour welcome" />
|
|
1160
|
+
<figcaption class="cap"><span data-i18n="g.4.t">欢迎向导 · 入口</span><small data-i18n="g.4.s">液态玻璃应用图标 + 步骤</small></figcaption>
|
|
1161
|
+
</figure>
|
|
1162
|
+
<figure class="g-card" style="margin:0">
|
|
1163
|
+
<img src="../screenshots/tour-toggles.png" alt="tour toggles" />
|
|
1164
|
+
<figcaption class="cap"><span data-i18n="g.5.t">欢迎向导 · 开关</span><small data-i18n="g.5.s">每项功能当场开关立即生效</small></figcaption>
|
|
1165
|
+
</figure>
|
|
1166
|
+
<figure class="g-card" style="margin:0">
|
|
1167
|
+
<img src="../screenshots/tour-external.png" alt="external scan" />
|
|
1168
|
+
<figcaption class="cap"><span data-i18n="g.6.t">外部记忆扫描</span><small data-i18n="g.6.s">向导内联扫描 + 逐源勾选</small></figcaption>
|
|
1169
|
+
</figure>
|
|
1170
|
+
<figure class="g-card" style="margin:0">
|
|
1171
|
+
<img src="../screenshots/tour-core.png" alt="tour core" />
|
|
1172
|
+
<figcaption class="cap"><span data-i18n="g.7.t">引擎检测</span><small data-i18n="g.7.s">三级语义引擎内联安装</small></figcaption>
|
|
1173
|
+
</figure>
|
|
1174
|
+
</div>
|
|
1175
|
+
</div>
|
|
1176
|
+
</section>
|
|
1177
|
+
|
|
1178
|
+
<!-- ── 04 快速开始 ── -->
|
|
1179
|
+
<section class="block" id="quick">
|
|
1180
|
+
<div class="wrap">
|
|
1181
|
+
<div class="sec-head reveal">
|
|
1182
|
+
<div class="sec-num"><b>04</b><span data-i18n="q.kicker">快速开始</span></div>
|
|
1183
|
+
<div>
|
|
1184
|
+
<h2 data-i18n="q.title">三步安装,一条命令</h2>
|
|
1185
|
+
<p class="sec-sub" data-i18n="q.sub">前置:安装 DeepSeek Harness 并至少启动过一次 dsh web。</p>
|
|
1186
|
+
</div>
|
|
1187
|
+
</div>
|
|
1188
|
+
|
|
1189
|
+
<div class="qs-grid reveal">
|
|
1190
|
+
<div class="qs-cell">
|
|
1191
|
+
<h3><span class="n">01</span><span data-i18n="q.1.t">安装包</span></h3>
|
|
1192
|
+
<p data-i18n="q.1.p">在 profile 目录(~/.dsh/profiles/web)执行:</p>
|
|
1193
|
+
<div class="codebox">
|
|
1194
|
+
<div class="codebox-head"><span>bash</span><button class="copy-btn" data-copy="cd ~/.dsh/profiles/web && pnpm add @a9i5k4/dsh-auto-memory">copy</button></div>
|
|
1195
|
+
<pre>cd ~/.dsh/profiles/web
|
|
1196
|
+
pnpm add @a9i5k4/dsh-auto-memory</pre>
|
|
1197
|
+
</div>
|
|
1198
|
+
<p style="margin-top:10px" data-i18n="q.1.alt">没有 pnpm?npm install @a9i5k4/dsh-auto-memory 同样可用。</p>
|
|
1199
|
+
</div>
|
|
1200
|
+
<div class="qs-cell">
|
|
1201
|
+
<h3><span class="n">02</span><span data-i18n="q.2.t">注册到 profile</span></h3>
|
|
1202
|
+
<p data-i18n="q.2.p">编辑同目录 package.json,在 dsh.profile.bundles 数组追加:</p>
|
|
1203
|
+
<div class="codebox">
|
|
1204
|
+
<div class="codebox-head"><span>json</span></div>
|
|
1205
|
+
<pre>"dsh.profile.bundles": [
|
|
1206
|
+
"...",
|
|
1207
|
+
"@a9i5k4/dsh-auto-memory"
|
|
1208
|
+
]</pre>
|
|
1209
|
+
</div>
|
|
1210
|
+
</div>
|
|
1211
|
+
<div class="qs-cell">
|
|
1212
|
+
<h3><span class="n">03</span><span data-i18n="q.3.t">重启生效</span></h3>
|
|
1213
|
+
<p data-i18n="q.3.p">重启 dsh web——侧边栏出现「记忆」入口,进入即触发欢迎向导。</p>
|
|
1214
|
+
<div class="codebox">
|
|
1215
|
+
<div class="codebox-head"><span>bash</span></div>
|
|
1216
|
+
<pre>dsh web</pre>
|
|
1217
|
+
</div>
|
|
1218
|
+
</div>
|
|
1219
|
+
<div class="qs-cell">
|
|
1220
|
+
<h3><span class="n">↻</span><span data-i18n="q.4.t">更新</span></h3>
|
|
1221
|
+
<p data-i18n="q.4.p">设置 → 自动记忆页「检查更新」按钮可一键比对 npm 最新版;或直接:</p>
|
|
1222
|
+
<div class="codebox">
|
|
1223
|
+
<div class="codebox-head"><span>bash</span><button class="copy-btn" data-copy="cd ~/.dsh/profiles/web && pnpm up @a9i5k4/dsh-auto-memory">copy</button></div>
|
|
1224
|
+
<pre>cd ~/.dsh/profiles/web
|
|
1225
|
+
pnpm up @a9i5k4/dsh-auto-memory</pre>
|
|
1226
|
+
</div>
|
|
1227
|
+
</div>
|
|
1228
|
+
</div>
|
|
1229
|
+
|
|
1230
|
+
<div class="ai-box reveal">
|
|
1231
|
+
<h3>
|
|
1232
|
+
<span class="ai-tag" data-i18n="q.ai.tag">AI 时代</span>
|
|
1233
|
+
<span data-i18n="q.ai.t">让 AI 帮你装</span>
|
|
1234
|
+
</h3>
|
|
1235
|
+
<p data-i18n="q.ai.p">复制下面这段发给你正在用的 AI 助手即可:</p>
|
|
1236
|
+
<div class="codebox">
|
|
1237
|
+
<div class="codebox-head"><span>prompt</span><button class="copy-btn" data-copy="prompt-ai">copy</button></div>
|
|
1238
|
+
<pre id="prompt-ai">在 DeepSeek Harness web profile 目录 ~/.dsh/profiles/web 安装 npm 包
|
|
1239
|
+
@a9i5k4/dsh-auto-memory(pnpm add 或 npm install),
|
|
1240
|
+
把 "@a9i5k4/dsh-auto-memory" 追加到 package.json 的 dsh.profile.bundles 数组,
|
|
1241
|
+
然后重启 dsh web 激活插件。</pre>
|
|
1242
|
+
</div>
|
|
1243
|
+
<p style="margin-top:10px" data-i18n="q.ai.sys">系统要求:dsh web 跑起来即可,Node 内建依赖足够;Python 档可选(用于 BGE-M3 进阶语义档,失败自动回退词法检索)。</p>
|
|
1244
|
+
</div>
|
|
1245
|
+
</div>
|
|
1246
|
+
</section>
|
|
1247
|
+
|
|
1248
|
+
<!-- ── 05 社区 ── -->
|
|
1249
|
+
<section class="block" id="community">
|
|
1250
|
+
<div class="wrap">
|
|
1251
|
+
<div class="sec-head reveal">
|
|
1252
|
+
<div class="sec-num"><b>05</b><span data-i18n="c.kicker">社区与链接</span></div>
|
|
1253
|
+
<div>
|
|
1254
|
+
<h2 data-i18n="c.title">感谢这两位</h2>
|
|
1255
|
+
<p class="sec-sub" data-i18n="c.sub">dsh-auto-memory 不是一个"我一个人写的项目"——下面这两位是塑造产品形态的真正合作者。</p>
|
|
1256
|
+
</div>
|
|
1257
|
+
</div>
|
|
1258
|
+
|
|
1259
|
+
<div class="comm-grid reveal">
|
|
1260
|
+
<div class="comm-cell">
|
|
1261
|
+
<div class="who">ProperSAMA</div>
|
|
1262
|
+
<div class="ref"><a href="https://github.com/ProperSAMA" target="_blank" rel="noreferrer">github.com/ProperSAMA</a> · <a href="https://github.com/Aik358/dsh-auto-memory/pull/12" target="_blank" rel="noreferrer">PR #12</a></div>
|
|
1263
|
+
<div class="contrib" data-i18n="c.1.d">DSH Desktop 增强模式(透明 / Mica 材质)面板可读性修复 + 入口按钮防遮挡与外点/Esc 关闭。</div>
|
|
1264
|
+
</div>
|
|
1265
|
+
<div class="comm-cell">
|
|
1266
|
+
<div class="who">nkh0472</div>
|
|
1267
|
+
<div class="ref"><a href="https://github.com/nkh0472" target="_blank" rel="noreferrer">github.com/nkh0472</a> · <a href="https://github.com/Aik358/dsh-auto-memory/issues/10" target="_blank" rel="noreferrer">Issue #10</a></div>
|
|
1268
|
+
<div class="contrib" data-i18n="c.2.d">无人值守/批处理场景加固反馈——直接推动了欢迎向导与功能开关化。</div>
|
|
1269
|
+
</div>
|
|
1270
|
+
</div>
|
|
1271
|
+
|
|
1272
|
+
<div class="links-row reveal">
|
|
1273
|
+
<a class="link-chip" href="https://github.com/Aik358/dsh-auto-memory" target="_blank" rel="noreferrer">
|
|
1274
|
+
<svg viewBox="0 0 24 24"><path d="M12 .5C5.7.5.5 5.6.5 12c0 5.1 3.3 9.4 7.9 10.9.6.1.8-.3.8-.6v-2c-3.2.7-3.9-1.5-3.9-1.5-.5-1.4-1.3-1.7-1.3-1.7-1-.7.1-.7.1-.7 1.2.1 1.8 1.2 1.8 1.2 1 1.8 2.7 1.3 3.4 1 .1-.8.4-1.3.7-1.6-2.6-.3-5.3-1.3-5.3-5.7 0-1.3.4-2.3 1.2-3.1-.1-.3-.5-1.5.1-3.1 0 0 1-.3 3.3 1.2 1-.3 2-.4 3-.4s2 .1 3 .4c2.3-1.6 3.3-1.2 3.3-1.2.7 1.7.2 2.9.1 3.2.7.8 1.2 1.9 1.2 3.1 0 4.4-2.7 5.4-5.3 5.7.4.4.8 1.1.8 2.2v3.3c0 .3.2.7.8.6 4.6-1.5 7.9-5.9 7.9-10.9C23.5 5.6 18.3.5 12 .5z"/></svg>
|
|
1275
|
+
<span data-i18n="c.l1">GitHub</span>
|
|
1276
|
+
</a>
|
|
1277
|
+
<a class="link-chip" href="https://www.npmjs.com/package/@a9i5k4/dsh-auto-memory" target="_blank" rel="noreferrer">
|
|
1278
|
+
<svg viewBox="0 0 24 24"><path d="M3 5h18v14H3z"/><path d="M3 5l9 7 9-7"/></svg>
|
|
1279
|
+
<span data-i18n="c.l2">npm</span>
|
|
1280
|
+
</a>
|
|
1281
|
+
<a class="link-chip" href="https://github.com/Aik358/dsh-auto-memory/blob/main/LICENSE" target="_blank" rel="noreferrer">
|
|
1282
|
+
<svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="9"/><path d="M8 12l3 3 5-6"/></svg>
|
|
1283
|
+
<span data-i18n="c.l3">License: BSD-3-Clause</span>
|
|
1284
|
+
</a>
|
|
1285
|
+
</div>
|
|
1286
|
+
|
|
1287
|
+
<p style="margin-top:18px;color:var(--ink-2);font-size:13.5px" data-i18n="c.foot">欢迎 issue / PR——即使只是改一个标点或一句文案,也算参与。</p>
|
|
1288
|
+
</div>
|
|
1289
|
+
</section>
|
|
1290
|
+
|
|
1291
|
+
<!-- ── 页脚 ── -->
|
|
1292
|
+
<footer>
|
|
1293
|
+
<div class="wrap">
|
|
1294
|
+
<div class="ft-row">
|
|
1295
|
+
<div class="ft-brand" data-i18n="ft.name">dsh-auto-memory</div>
|
|
1296
|
+
<div class="ft-privacy" data-i18n="ft.privacy">记忆存在你自己的机器上</div>
|
|
1297
|
+
<div class="ft-links">
|
|
1298
|
+
<a href="https://github.com/Aik358/dsh-auto-memory" target="_blank" rel="noreferrer" data-i18n="ft.gh">GitHub</a>
|
|
1299
|
+
<a href="https://www.npmjs.com/package/@a9i5k4/dsh-auto-memory" target="_blank" rel="noreferrer" data-i18n="ft.npm">npm</a>
|
|
1300
|
+
</div>
|
|
1301
|
+
</div>
|
|
1302
|
+
<div class="ft-credits">
|
|
1303
|
+
<span class="ftc-label" data-i18n="ftc.label">CREDITS</span>
|
|
1304
|
+
<span data-i18n="ftc.owner">Aik358 · 产品/架构</span>
|
|
1305
|
+
<span data-i18n="ftc.zcode">ZCode(GLM · Z.ai)· 工程与论文</span>
|
|
1306
|
+
<span data-i18n="ftc.k3">Kimi K3 · 前端</span>
|
|
1307
|
+
<span data-i18n="ftc.note">人机协作 · AI 署名,人类审核</span>
|
|
1308
|
+
</div>
|
|
1309
|
+
</div>
|
|
1310
|
+
</footer>
|
|
1311
|
+
|
|
1312
|
+
<script>
|
|
1313
|
+
/* ── i18n ── */
|
|
1314
|
+
var I18N = {
|
|
1315
|
+
zh: {
|
|
1316
|
+
"brand.tag":"v0.1.30",
|
|
1317
|
+
"nav.flow":"管线","nav.features":"功能","nav.gallery":"界面","nav.quick":"安装","nav.community":"社区",
|
|
1318
|
+
"hero.eyebrow.k":"DEEPSEEK HARNESS","hero.eyebrow":"联想记忆插件",
|
|
1319
|
+
"hero.title":"让 AI<br/>真正<span class=\"thin\">记得你</span>",
|
|
1320
|
+
"hero.soul":"记忆不靠调用,自己被唤回。",
|
|
1321
|
+
"hero.lede":"市面记忆方案都要求模型\"记得去查\"——忘了调,记忆就等于不存在。本插件是 Host 侧主动联想中间件:持续观察对话情境,NLP 关键词 + 向量化双轨检索,该想起的记忆在模型开口之前,经固定边界注入下一环节。",
|
|
1322
|
+
"hero.cta1":"安装","hero.cta1.copy":"点击复制","hero.cta2":"GitHub","hero.cta3":"npm",
|
|
1323
|
+
"hero.meta1":"BSD-3-Clause","hero.meta2":"零运行时依赖","hero.meta3":"前缀缓存友好","hero.meta4":"记忆在你自己的机器上",
|
|
1324
|
+
"demo.head":"HOST MIDDLEWARE · 主动联想管线","demo.live":"LISTENING",
|
|
1325
|
+
"demo.st1":"观察 OBSERVE","demo.st2":"向量化 EMBED","demo.st3":"检索 RETRIEVE","demo.st4":"注入 INJECT",
|
|
1326
|
+
"demo.store":"MEMORY STORE · 三层语料","demo.hits":"条命中",
|
|
1327
|
+
"demo.zero":"模型发起记忆调用","demo.next":"下一拍开口时,她已经记得",
|
|
1328
|
+
"st.1.u":"次","st.1.l":"需要模型主动调用记忆",
|
|
1329
|
+
"st.2.u":"级","st.2.l":"检索算力:词法 / 内置向量 / BGE-M3",
|
|
1330
|
+
"st.3.l":"BGE-M3 int8 档实测召回(与 fp32 差 0.000)",
|
|
1331
|
+
"st.4.l":"激活决策带证据链,可逐次复核打分",
|
|
1332
|
+
"flow.kicker":"核心管线","flow.title":"从对话到记忆注入,四站直达",
|
|
1333
|
+
"flow.sub":"观察 → 检索决策 → 投递闭环。NLP 关键词与向量化双轨并行,唤起必要性由统一策略管线回答——每一步都有 JS 权威层做最终仲裁,AI 只在边界内干活。",
|
|
1334
|
+
"flow.a.tag":"A · 观察","flow.a.t":"监听对话与工具事件","flow.a.p":"持续观察每轮对话、工具回包、用户/助手事件,定位有\"长期价值\"的内容。",
|
|
1335
|
+
"flow.a.l1":"用户消息 + 工具结果实时锚定","flow.a.l2":"子代理静默评估(不打断主流程)","flow.a.l3":"闲聊 / 失败进重试队列(5 分钟心跳)",
|
|
1336
|
+
"flow.b.tag":"B · 检索与决策","flow.b.t":"双轨检索 + 两车道决策","flow.b.p":"先按相关性排序(词法 BM25 保底 / 内置向量 / BGE-M3),再按\"该不该打断你\"两车道分流。",
|
|
1337
|
+
"flow.b.l1":"词法 0GB 保底 → 内置语义 ~130MB → Python BGE-M3 进阶","flow.b.l2":"canary 显式唤起 / shadow 仅记录不注入","flow.b.l3":"决策全程可打分复核(A/P/S/H/E)",
|
|
1338
|
+
"flow.c.tag":"C · 投递闭环","flow.c.t":"固定边界注入 + 证据反馈","flow.c.p":"提示词字节级稳定,前缀缓存持续命中;每次投递留下 delivered/seen 证据喂回决策。",
|
|
1339
|
+
"flow.c.l1":"固定边界注入(前缀缓存友好)","flow.c.l2":"delivered / seen 证据回流","flow.c.l3":"「唤起回顾」页可逐次打分 + 政策提示",
|
|
1340
|
+
"flow.foot.tag":"权限分立","flow.foot.b":"决策全程可复核,记忆治理永远在 JS 权威层。","flow.foot.s":"AI 子代理只产出\"建议\";是否写入、是否注入、是否唤起——最终决策都跑在 Node 端的 JS 权威层里;任何一次决策都能在「唤起回顾」页追溯原始证据与上下文。",
|
|
1341
|
+
"arch.title":"SYSTEM LAYERING · 运行时分层","arch.link":"完整交互架构图 →",
|
|
1342
|
+
"arch.js":"JS 记忆核心 · lib/*_pre.js · 零运行时依赖",
|
|
1343
|
+
"arch.py":"Python sidecar · 可选 · lazy spawn",
|
|
1344
|
+
"arch.obs":"可观测 / 待发布",
|
|
1345
|
+
"arch.lg.live":"live verified 已实现并实机验证","arch.lg.tested":"tested 已测试","arch.lg.queued":"queued 排队",
|
|
1346
|
+
"arch.cap":"语义层决定\"想起什么\",权威层决定\"是否/何时/如何注入\"——Python 不创建证据,也不直接注入。点击模块查看实现摘要。",
|
|
1347
|
+
"m.M1":"会话隔离","m.M2":"上下文投影","m.M3b":"记忆锚定与迁移","m.M4":"语料适配 + 影子检索",
|
|
1348
|
+
"m.M5":"上下文/证据桥","m.M6":"激活收件箱 + 参考尾注","m.C2":"内置语义层 e5-small(默认档)",
|
|
1349
|
+
"m.M7":"语义引擎 BGE-M3 int8","m.RD":"双轨语义层(三级算力)","m.M8":"记忆中枢(治理式写回)",
|
|
1350
|
+
"m.M9":"技能固化生命周期","m.G2":"激活观测台","m.M10":"存储治理",
|
|
1351
|
+
"pp.title":"DESIGN PAPERS · 设计文献(全部结论冻结为工程决策)",
|
|
1352
|
+
"pp.1.t":"多语言嵌入式检索选型研究","pp.1.s":"3 模型 × 5 分块 × 6 通道 ≈ 90 评测单元,BGE-M3 全面领先;冻结为 D1–D11 工程决策",
|
|
1353
|
+
"pp.2.t":"从语义相关到唤起必要:回声陷阱的发现、度量与修正","pp.2.s":"激活策略 v2 技术报告 + 双轨部署架构(§7);67 条人工金标 held-out 验收 actPrecision 0.917",
|
|
1354
|
+
"pp.3.t":"嵌入基准报告","pp.3.s":"模型/分块/融合冻结依据:bge-m3 + para-512-noov + 加权融合",
|
|
1355
|
+
"pp.4.t":"算法冻结决策 D1–D11","pp.4.s":"全部研究结论到生产实现的决策台账",
|
|
1356
|
+
"pp.5.t":"Held-out 人工金标验收","pp.5.s":"67 条标注打分:actPrecision 0.917 / harmfulEmit 0 / echo 层 7/7",
|
|
1357
|
+
"pp.6.t":"Python Sidecar 完整契约","pp.6.s":"协议/生命周期/权威边界/各里程碑回归证据(§19.x)",
|
|
1358
|
+
"promo.cap":"GALLERY · 六幕",
|
|
1359
|
+
"feat.kicker":"功能全景","feat.title":"十二个能力,互相咬合","feat.sub":"逐项展开,不省略——你想知道它\"到底能干什么\",往下读就对了。",
|
|
1360
|
+
"f.1.kicker":"3.1 · 三层记忆体系","f.1.t":"三处文件,三种语义","f.1.p":"用户级 → 项目笔记 → 每日日志/反思,越往下越新鲜、越往上越稳定。注入策略按这个分层严格区分:静态纪律进 system prompt 保缓存,动态记忆只取最近 1 天,其余按需 recall。",
|
|
1361
|
+
"f.1.col1":"层","f.1.col2":"位置","f.1.col3":"内容",
|
|
1362
|
+
"f.1.r1.n":"用户级记忆","f.1.r1.c":"跨项目规则与偏好",
|
|
1363
|
+
"f.1.r2.n":"项目笔记","f.1.r2.c":"项目约定与决策",
|
|
1364
|
+
"f.1.r3.n":"每日日志","f.1.r3.c":"追加式工作日志",
|
|
1365
|
+
"f.1.r4.n":"每日反思","f.1.r4.c":"结构化复盘(成果/教训/下一步)",
|
|
1366
|
+
"f.1.b1":"静态纪律进 system prompt:字节级稳定 → 前缀缓存持续命中",
|
|
1367
|
+
"f.1.b2":"动态记忆走运行时快照:只注入最近 1 天日志+反思摘要",
|
|
1368
|
+
"f.1.b3":"凭证/密钥段","f.1.b3b":"永远","f.1.b3c":"被过滤在提示词之外",
|
|
1369
|
+
"f.1.art":"MEMORY HUB",
|
|
1370
|
+
"f.2.kicker":"3.2 · 自动沉淀","f.2.t":"记忆自己写自己",
|
|
1371
|
+
"f.2.p":"每轮对话结束,一个小型子代理静默评估本轮内容——长期有价值的主题分组写入今日日志(## 主题(HH:MM) + 要点),长期决策晋升项目笔记,跨项目规则晋升用户级,闲聊跳过。",
|
|
1372
|
+
"f.2.l1":"主题分组:## 主题(HH:MM) + 要点列表","f.2.l2":"长期决策 → 项目笔记;跨项目规则 → 用户级",
|
|
1373
|
+
"f.2.l3":"失败入队,每 5 分钟重试;15 秒心跳文件证明循环存活","f.2.l4":"每日写入有预算 + AI 自动压缩——超限不拒写",
|
|
1374
|
+
"f.2.art":"AUTO-CONSOLIDATION",
|
|
1375
|
+
"f.3.kicker":"3.3 · 欢迎向导(v0.1.30 大更新)","f.3.t":"不是弹窗广告,是功能总开关",
|
|
1376
|
+
"f.3.p":"升级或首装后自动播放的分步向导——Office/Fluent 式液态玻璃应用图标族,每项功能当场开关立即生效;中途关闭会先落到\"完成提醒\"步,告诉你每个功能在设置的哪个分区重新打开。",
|
|
1377
|
+
"f.3.l1":"每步一枚专属动效图标(注入青蓝 / 问候暖金 / 日历青绿 / 引擎紫蓝 / 雷达天青 / 完成珊瑚金)",
|
|
1378
|
+
"f.3.l2":"三级检索引擎在向导内自动检测 + 一键安装(SHA256 校验 + 推理自检)",
|
|
1379
|
+
"f.3.l3":"外部记忆实时扫描:WorkBuddy / Claude Code / Codex 等来源直接列出,逐源勾选",
|
|
1380
|
+
"f.3.l4":"升级用户一次性触达:v0.1.30 起所有用户升级后自动播放一次",
|
|
1381
|
+
"f.3.l5":"设置 → 外观 → 欢迎向导 →","f.3.l5b":"▶ 重看引导","f.3.l5c":"随时重新打开",
|
|
1382
|
+
"f.3.art":"WELCOME TOUR",
|
|
1383
|
+
"f.4.kicker":"3.4 · 唤起与技能固化","f.4.t":"该出手时才出手",
|
|
1384
|
+
"f.4.p":"联想式记忆唤起在对话链中检测回忆需求,命中即注入下一环节(不破坏前缀缓存);高频流程固化为技能 checklist 自动附上,跨会话验证后晋升——每一次\"要不要打断你\"的决策都能在「唤起回顾」页复核打分。",
|
|
1385
|
+
"f.4.l1":"决策打分:A 该激活 / P 只预取 / S 应抑制 / H 有害 / E 改目标",
|
|
1386
|
+
"f.4.l2":"技能晋升四态:observed → candidate → validated → active",
|
|
1387
|
+
"f.4.l3":"90 天未用自动归档,可手动置顶","f.4.l4":"判定队列会汇总成政策提示,反哺自动决策",
|
|
1388
|
+
"f.4.art":"RECALL REVIEW",
|
|
1389
|
+
"f.5.kicker":"3.5 · 无人值守模式","f.5.t":"面向长跑批处理任务",
|
|
1390
|
+
"f.5.p":"设置 → 自动化提供手动开关与夜间自动托管(22:00-08:00 可调);托管期间不注入欢迎语/寒暄/行为指令、日历提醒静默、上下文保持稳定——模型专注干活,token 花在正事上。",
|
|
1391
|
+
"f.5.l1":"零寒暄 / 零行为指令 / 日历静默 / 上下文冻结","f.5.l2":"时间窗可调(默认 22:00-08:00)","f.5.l3":"来源:社区 Issue #10 反馈驱动的加固场景",
|
|
1392
|
+
"f.5.s1.l":"托管期间注入的寒暄","f.5.s2.l":"夜间默认托管窗口","f.5.s3.l":"上下文稳定(不增删)",
|
|
1393
|
+
"f.5.art":"UNATTENDED",
|
|
1394
|
+
"f.6.kicker":"3.6 · AI 问候与每日反思","f.6.t":"时段感知 + 暂离回归 + 每日复盘",
|
|
1395
|
+
"f.6.p":"按时段(晨/午/晚)生成提及你当日最重要工作的问候;暂离超过 1 小时回来,记忆面板自动打开并送上\"欢迎回来\"+近期工作摘要;每天第一次会话主动呈现前一日结构化反思。",
|
|
1396
|
+
"f.6.l1":"时段问候:晨/午/晚,提及当日工作要点","f.6.l2":"暂离 >1h 回归自动开面板 + \"欢迎回来\"","f.6.l3":"每日第一次会话:前一日结构化反思",
|
|
1397
|
+
"f.6.art":"OVERVIEW",
|
|
1398
|
+
"f.7.kicker":"3.7 · 智能检索与工作区全景","f.7.t":"自然语言搜,跨工作区可达",
|
|
1399
|
+
"f.7.p":"自然语言提问,AI 自动扩展关键词扫描全部记忆层,会话式回答并标注来源;面板「工作区」页签自动生成工作区关系图——AI 归纳主题与跨区关联,可拖拽/缩放/点卡片看详情。",
|
|
1400
|
+
"f.7.l1":"跨工作区检索天然支持,结果标注来源工作区","f.7.l2":"工作区关系图:主题归纳 + 跨区关联","f.7.l3":"可拖拽 / 缩放 / 点卡详情",
|
|
1401
|
+
"f.7.art":"SEARCH",
|
|
1402
|
+
"f.8.kicker":"3.8 · 日历 — AI 替你维护","f.8.t":"截止日期从对话里\"长出来\"",
|
|
1403
|
+
"f.8.p":"AI 从对话中识别截止日期/约定自动入日历(calendar_add),未完成事项注入后续会话直到完成;日视图 07:00-22:00 时间轴、地点/提醒字段、紧急度语义色。",
|
|
1404
|
+
"f.8.l1":"自动从对话识别 deadline / 约定 → 入日历","f.8.l2":"未完成项注入后续会话直到完成","f.8.l3":"07:00-22:00 时间轴 + 地点/提醒字段 + 紧急度语义色",
|
|
1405
|
+
"f.8.art":"CALENDAR",
|
|
1406
|
+
"f.9.kicker":"3.9 · 外部记忆继承","f.9.t":"别让别处的经验白攒",
|
|
1407
|
+
"f.9.p":"WorkBuddy / CodeBuddy / Claude Code / Codex 的历史会话与记忆可扫描发现、按源导入(只存路径指针,不复制内容)、按源删除;导入侧 + 注入侧双重卫生闸门防外部脏数据混入。",
|
|
1408
|
+
"f.9.l1":"扫描发现:WorkBuddy / CodeBuddy / Claude Code / Codex","f.9.l2":"按源导入:只存路径指针(不复制内容)","f.9.l3":"按源删除 + 双重卫生闸门",
|
|
1409
|
+
"f.9.art":"EXTERNAL SCAN",
|
|
1410
|
+
"f.10.kicker":"3.10 · 记忆卫生(生产级)","f.10.t":"写入门禁 + 脏 token 扫描",
|
|
1411
|
+
"f.10.p":"三个写入工具全部过 sanitizeForWrite:GBK 乱码(34 特征全表)、复读退化、连续重复行、外部 AI 画像 JSON 特征、base64 残留——全部拒写并给出中文回执。设置 → 调试中心「扫描脏 token」一键按行区间报告问题(只报位置不含正文)。",
|
|
1412
|
+
"f.10.l1":"34 个 GBK 乱码特征全表识别","f.10.l2":"复读退化 / 连续重复行 / 外部画像 JSON / base64 残留",
|
|
1413
|
+
"f.10.l3":"追加 8000 字/条;全量改写 20 万字上限","f.10.l4":"追加前与文件尾部近 60 行做去重",
|
|
1414
|
+
"f.10.art":"HYGIENE",
|
|
1415
|
+
"f.11.kicker":"3.11 · 记忆生命周期","f.11.t":"30 天蒸馏:把过程流水换成可复用结论",
|
|
1416
|
+
"f.11.p":"memory_maintain_pre 把 30 天前的每日日志交给 AI 蒸馏:只提炼有跨会话长期价值的要点(技术决策/架构约定/偏好/踩坑规则),写入项目笔记;原文保底归档到 archive/(AI 不可用时降级为原样归档,绝不丢信息)。",
|
|
1417
|
+
"f.11.l1":"30 天蒸馏窗口:旧日志 → 长期要点 → 项目笔记",
|
|
1418
|
+
"f.11.l2":"蒸馏明确边界:","f.11.l2b":"procedure skills(技能固化)","f.11.l2c":"与两级笔记不在蒸馏范围",
|
|
1419
|
+
"f.11.l3":"归档原文不在常规检索扫描内(检索=项目笔记+活跃日志+反思+用户级)","f.11.l4":"蒸馏要点随笔记常驻注入",
|
|
1420
|
+
"f.11.l5":"memory_consolidate:AI 发散固化(阶段性回头升格)",
|
|
1421
|
+
"f.11.art":"LIFECYCLE",
|
|
1422
|
+
"f.12.kicker":"3.12 · 工程内核(信任背书)","f.12.t":"保持克制的设计",
|
|
1423
|
+
"f.12.p":"这些不是\"特性\",是\"在你能用它之前先让你放心\"的工程承诺——少一点跑得快的东西,多一点能跑得久的东西。",
|
|
1424
|
+
"f.12.l1":"零运行时依赖(仅 Node 内建模块)","f.12.l2":"前缀缓存友好:提示词字节级稳定",
|
|
1425
|
+
"f.12.l3":"限额 AI:自动沉淀每日 ≤8 次带冷却","f.12.l4":"集中式存储:~/.dsh/memory/workspaces/",
|
|
1426
|
+
"f.12.l5":"可选 Python sidecar(BGE-M3 int8,失败自动回退词法)",
|
|
1427
|
+
"f.12.art":"ENGINEERING",
|
|
1428
|
+
"g.kicker":"界面速览","g.title":"七张实机截图","g.sub":"从欢迎向导到唤起回顾——每个截图都是真实运行画面。",
|
|
1429
|
+
"g.1.t":"记忆面板 · 概览","g.1.s":"暂离问候 + AI 时段总结",
|
|
1430
|
+
"g.2.t":"记忆中枢","g.2.s":"三层记忆店 + 技能晋升审批",
|
|
1431
|
+
"g.3.t":"唤起回顾","g.3.s":"每次激活决策可打分(A/P/S/H/E)",
|
|
1432
|
+
"g.4.t":"欢迎向导 · 入口","g.4.s":"液态玻璃应用图标 + 步骤",
|
|
1433
|
+
"g.5.t":"欢迎向导 · 开关","g.5.s":"每项功能当场开关立即生效",
|
|
1434
|
+
"g.6.t":"外部记忆扫描","g.6.s":"向导内联扫描 + 逐源勾选",
|
|
1435
|
+
"g.7.t":"引擎检测","g.7.s":"三级语义引擎内联安装",
|
|
1436
|
+
"q.kicker":"快速开始","q.title":"三步安装,一条命令","q.sub":"前置:安装 DeepSeek Harness 并至少启动过一次 dsh web。",
|
|
1437
|
+
"q.1.t":"安装包","q.1.p":"在 profile 目录(~/.dsh/profiles/web)执行:","q.1.alt":"没有 pnpm?npm install @a9i5k4/dsh-auto-memory 同样可用。",
|
|
1438
|
+
"q.2.t":"注册到 profile","q.2.p":"编辑同目录 package.json,在 dsh.profile.bundles 数组追加:",
|
|
1439
|
+
"q.3.t":"重启生效","q.3.p":"重启 dsh web——侧边栏出现「记忆」入口,进入即触发欢迎向导。",
|
|
1440
|
+
"q.4.t":"更新","q.4.p":"设置 → 自动记忆页「检查更新」按钮可一键比对 npm 最新版;或直接:",
|
|
1441
|
+
"q.ai.tag":"AI 时代","q.ai.t":"让 AI 帮你装","q.ai.p":"复制下面这段发给你正在用的 AI 助手即可:","q.ai.sys":"系统要求:dsh web 跑起来即可,Node 内建依赖足够;Python 档可选(用于 BGE-M3 进阶语义档,失败自动回退词法检索)。",
|
|
1442
|
+
"c.kicker":"社区与链接","c.title":"感谢这两位","c.sub":"dsh-auto-memory 不是一个\"我一个人写的项目\"——下面这两位是塑造产品形态的真正合作者。",
|
|
1443
|
+
"c.1.d":"DSH Desktop 增强模式(透明 / Mica 材质)面板可读性修复 + 入口按钮防遮挡与外点/Esc 关闭。",
|
|
1444
|
+
"c.2.d":"无人值守/批处理场景加固反馈——直接推动了欢迎向导与功能开关化。",
|
|
1445
|
+
"c.l1":"GitHub","c.l2":"npm","c.l3":"License: BSD-3-Clause",
|
|
1446
|
+
"c.foot":"欢迎 issue / PR——即使只是改一个标点或一句文案,也算参与。",
|
|
1447
|
+
"ft.name":"dsh-auto-memory","ft.privacy":"记忆存在你自己的机器上","ft.gh":"GitHub","ft.npm":"npm",
|
|
1448
|
+
"ftc.label":"制作署名","ftc.owner":"Aik358 · 产品/架构","ftc.zcode":"ZCode(GLM · Z.ai)· 工程与论文","ftc.k3":"Kimi K3 · 前端","ftc.note":"人机协作 · AI 署名,人类审核"
|
|
1449
|
+
},
|
|
1450
|
+
en: {
|
|
1451
|
+
"brand.tag":"v0.1.30",
|
|
1452
|
+
"nav.flow":"Pipeline","nav.features":"Features","nav.gallery":"UI","nav.quick":"Install","nav.community":"Community",
|
|
1453
|
+
"hero.eyebrow.k":"DEEPSEEK HARNESS","hero.eyebrow":"Associative-memory plugin",
|
|
1454
|
+
"hero.title":"An AI that<br/>actually <span class=\"thin\">remembers</span>",
|
|
1455
|
+
"hero.soul":"No calls. Memories find their own way back.",
|
|
1456
|
+
"hero.lede":"Every mainstream memory scheme asks the model to \"remember to look it up\" — forget the call and the memory might as well not exist. This plugin is a host-side associative middleware: it watches the conversation, runs dual-track retrieval (NLP keywords + vector similarity), and injects what should be recalled at the next fixed boundary — before the model speaks.",
|
|
1457
|
+
"hero.cta1":"Install","hero.cta1.copy":"click to copy","hero.cta2":"GitHub","hero.cta3":"npm",
|
|
1458
|
+
"hero.meta1":"BSD-3-Clause","hero.meta2":"Zero runtime deps","hero.meta3":"Prefix-cache friendly","hero.meta4":"Memories stay on your machine",
|
|
1459
|
+
"demo.head":"HOST MIDDLEWARE · ASSOCIATIVE PIPELINE","demo.live":"LISTENING",
|
|
1460
|
+
"demo.st1":"OBSERVE","demo.st2":"EMBED","demo.st3":"RETRIEVE","demo.st4":"INJECT",
|
|
1461
|
+
"demo.store":"MEMORY STORE · 3-LAYER CORPUS","demo.hits":"hits",
|
|
1462
|
+
"demo.zero":"Memory calls made by the model","demo.next":"By the next turn, she already remembers",
|
|
1463
|
+
"st.1.u":"","st.1.l":"Memory calls the model ever has to make",
|
|
1464
|
+
"st.2.u":"tiers","st.2.l":"Retrieval compute: lexical / built-in vector / BGE-M3",
|
|
1465
|
+
"st.3.l":"Measured recall of the BGE-M3 int8 tier (Δ0.000 vs fp32)",
|
|
1466
|
+
"st.4.l":"Activation decisions carry full evidence, gradeable one by one",
|
|
1467
|
+
"flow.kicker":"Core pipeline","flow.title":"From conversation to injected memory, four stops",
|
|
1468
|
+
"flow.sub":"Observe → retrieve & decide → deliver & close the loop. NLP keywords and vector retrieval run dual-track; a single policy pipeline answers whether to recall — every step is arbitrated by the JS authority layer, the AI works only inside its boundaries.",
|
|
1469
|
+
"flow.a.tag":"A · Observe","flow.a.t":"Listen to conversation & tool events","flow.a.p":"Continuously watch each turn, tool results, user/assistant events — locate what has long-term value.",
|
|
1470
|
+
"flow.a.l1":"User messages + tool results anchored live","flow.a.l2":"Subagent quiet evaluation (never blocks main flow)","flow.a.l3":"Chatter / failures queue with 5-min retry heartbeat",
|
|
1471
|
+
"flow.b.tag":"B · Retrieve & decide","flow.b.t":"Dual-track retrieval + two-lane decision","flow.b.p":"Rank by relevance (lexical BM25 floor / built-in vectors / BGE-M3), then split on \"should I interrupt you\".",
|
|
1472
|
+
"flow.b.l1":"Lexical 0GB floor → built-in ~130MB → Python BGE-M3 advanced","flow.b.l2":"canary explicit recall / shadow record-only","flow.b.l3":"Every decision gradeable (A/P/S/H/E)",
|
|
1473
|
+
"flow.c.tag":"C · Deliver & close the loop","flow.c.t":"Fixed-boundary injection + evidence feedback","flow.c.p":"Byte-stable prompts keep the prefix cache hot; every delivery leaves delivered/seen evidence to feed the next decision.",
|
|
1474
|
+
"flow.c.l1":"Fixed-boundary injection (prefix-cache friendly)","flow.c.l2":"delivered / seen evidence feedback","flow.c.l3":"Recall review tab: grade every decision + policy hints",
|
|
1475
|
+
"flow.foot.tag":"Separation of powers","flow.foot.b":"Every decision is reviewable. Memory governance always lives in the JS authority layer.","flow.foot.s":"The AI subagent only produces \"suggestions\"; whether to write, inject or recall — every final decision runs in the JS layer on the Node side, traceable to its original evidence and context in the Recall review tab.",
|
|
1476
|
+
"arch.title":"SYSTEM LAYERING · RUNTIME","arch.link":"Full interactive map →",
|
|
1477
|
+
"arch.js":"JS memory core · lib/*_pre.js · zero runtime deps",
|
|
1478
|
+
"arch.py":"Python sidecar · optional · lazy spawn",
|
|
1479
|
+
"arch.obs":"Observability / upcoming",
|
|
1480
|
+
"arch.lg.live":"live verified","arch.lg.tested":"tested","arch.lg.queued":"queued",
|
|
1481
|
+
"arch.cap":"The semantic layer decides what to recall; the authority layer decides whether/when/how to inject — Python never creates evidence nor injects directly. Click a module for its implementation digest.",
|
|
1482
|
+
"m.M1":"Session isolation","m.M2":"Context projection","m.M3b":"Memory anchoring","m.M4":"Corpus + shadow retrieval",
|
|
1483
|
+
"m.M5":"Context/evidence bridge","m.M6":"Activation inbox + reference tail","m.C2":"Built-in semantic tier e5-small (default)",
|
|
1484
|
+
"m.M7":"Semantic engine BGE-M3 int8","m.RD":"Dual-track semantics (3 tiers)","m.M8":"Memory hub (governed write-back)",
|
|
1485
|
+
"m.M9":"Skill crystallization lifecycle","m.G2":"Activation console","m.M10":"Storage governance",
|
|
1486
|
+
"pp.title":"DESIGN PAPERS · every conclusion frozen into engineering decisions",
|
|
1487
|
+
"pp.1.t":"Multilingual Embedding Retrieval Study","pp.1.s":"3 models × 5 chunkings × 6 channels ≈ 90 evaluation cells; BGE-M3 leads across the board — frozen as decisions D1–D11",
|
|
1488
|
+
"pp.2.t":"From Semantic Relevance to Recall Necessity: the Echo Trap","pp.2.s":"Activation policy v2 technical report + dual-track deployment architecture (§7); 67 human-gold held-out verdicts, actPrecision 0.917",
|
|
1489
|
+
"pp.3.t":"Embedding Benchmark Report","pp.3.s":"Frozen basis for model/chunk/fusion: bge-m3 + para-512-noov + weighted fusion",
|
|
1490
|
+
"pp.4.t":"Frozen Algorithm Decisions D1–D11","pp.4.s":"The decision ledger from research conclusions to production implementation",
|
|
1491
|
+
"pp.5.t":"Held-out Human-Gold Acceptance","pp.5.s":"67 labeled verdicts: actPrecision 0.917 / harmfulEmit 0 / echo tier 7/7",
|
|
1492
|
+
"pp.6.t":"Python Sidecar Contract","pp.6.s":"Protocol / lifecycle / authority boundary / per-milestone regression evidence (§19.x)",
|
|
1493
|
+
"promo.cap":"GALLERY · SIX FRAMES",
|
|
1494
|
+
"feat.kicker":"Feature tour","feat.title":"Twelve capabilities, interlocked","feat.sub":"Expanded one by one, nothing skipped — read on to find out what it actually does.",
|
|
1495
|
+
"f.1.kicker":"3.1 · Three-layer memory","f.1.t":"Three files, three semantics","f.1.p":"User-level → project notes → daily logs/reflections; the deeper, the fresher. Injection strategy strictly follows this layering: static discipline goes into the system prompt to keep the cache hot; dynamic memory only injects the last day, everything else is recalled on demand.",
|
|
1496
|
+
"f.1.col1":"Layer","f.1.col2":"Location","f.1.col3":"Content",
|
|
1497
|
+
"f.1.r1.n":"User-level memory","f.1.r1.c":"Cross-project rules & preferences",
|
|
1498
|
+
"f.1.r2.n":"Project notes","f.1.r2.c":"Project conventions & decisions",
|
|
1499
|
+
"f.1.r3.n":"Daily log","f.1.r3.c":"Append-only work log",
|
|
1500
|
+
"f.1.r4.n":"Daily reflection","f.1.r4.c":"Structured review (results / lessons / next)",
|
|
1501
|
+
"f.1.b1":"Static discipline in the system prompt — byte-stable, prefix cache stays hot",
|
|
1502
|
+
"f.1.b2":"Dynamic memory rides a runtime snapshot — only the last day's logs + reflection digest",
|
|
1503
|
+
"f.1.b3":"Credential/secret sections are","f.1.b3b":"always","f.1.b3c":"filtered out of prompts",
|
|
1504
|
+
"f.1.art":"MEMORY HUB",
|
|
1505
|
+
"f.2.kicker":"3.2 · Auto-consolidation","f.2.t":"Memory writes itself",
|
|
1506
|
+
"f.2.p":"After every turn a small subagent quietly evaluates what happened: long-term-valuable topics are grouped into today's log (## Topic (HH:MM) + bullets), durable decisions are promoted to project notes, cross-project rules to user-level memory, small talk is skipped.",
|
|
1507
|
+
"f.2.l1":"Topic-grouped: ## Topic (HH:MM) + bullets","f.2.l2":"Durable decisions → project notes; cross-project rules → user-level",
|
|
1508
|
+
"f.2.l3":"Failures queue and retry every 5 minutes; 15-second heartbeat file proves the loop is alive","f.2.l4":"Daily write budget with AI auto-compaction — over budget never rejects a write",
|
|
1509
|
+
"f.2.art":"AUTO-CONSOLIDATION",
|
|
1510
|
+
"f.3.kicker":"3.3 · Welcome tour (v0.1.30 major update)","f.3.t":"Not an ad popup — it's the home of every feature switch",
|
|
1511
|
+
"f.3.p":"A step-by-step tour that auto-plays after first install or upgrade — an Office/Fluent-style liquid-glass app icon family; every feature switch writes config instantly. Closing mid-tour lands on a finish page telling you exactly where each feature lives in Settings.",
|
|
1512
|
+
"f.3.l1":"Per-step liquid-glass icon with bespoke motion (cyan inject, amber greeting, green calendar, violet engine, sky radar, coral finish)",
|
|
1513
|
+
"f.3.l2":"Three-tier retrieval engine auto-detected and one-click installable inline (SHA256 verify + inference self-test)",
|
|
1514
|
+
"f.3.l3":"Live external-memory scan: WorkBuddy / Claude Code / Codex sources, tick-per-source",
|
|
1515
|
+
"f.3.l4":"One-time catch-up for upgraders: from v0.1.30 every user auto-plays the full tour once after upgrading",
|
|
1516
|
+
"f.3.l5":"Settings → Appearance → Welcome tour →","f.3.l5b":"▶ Replay","f.3.l5c":"anytime",
|
|
1517
|
+
"f.3.art":"WELCOME TOUR",
|
|
1518
|
+
"f.4.kicker":"3.4 · Activation & crystallization","f.4.t":"Interrupt only when it matters",
|
|
1519
|
+
"f.4.p":"Associative recall detects memory needs directly in the conversation chain and injects at the next boundary (prefix-cache friendly). Frequent workflows crystallize into skill checklists that attach automatically, promote after cross-session validation — every \"should I interrupt\" decision is gradeable in the Recall review tab.",
|
|
1520
|
+
"f.4.l1":"Grade: A activate / P prefetch / S suppress / H harmful / E edit target",
|
|
1521
|
+
"f.4.l2":"Skill promotion four states: observed → candidate → validated → active",
|
|
1522
|
+
"f.4.l3":"90 days without use auto-archive, pin to keep","f.4.l4":"The review queue digests into policy hints, feeding auto-decision",
|
|
1523
|
+
"f.4.art":"RECALL REVIEW",
|
|
1524
|
+
"f.5.kicker":"3.5 · Unattended mode","f.5.t":"Built for long batch jobs",
|
|
1525
|
+
"f.5.p":"Settings → Automation offers a manual switch and auto-unattended overnight (22:00-08:00, tunable). While engaged: no greetings, no niceties or behavioural directives, calendar silent, context stable — tokens go to the work, not the small talk.",
|
|
1526
|
+
"f.5.l1":"Zero niceties / zero directives / calendar silent / context frozen","f.5.l2":"Tunable window (default 22:00-08:00)","f.5.l3":"Born from community Issue #10 hardening feedback",
|
|
1527
|
+
"f.5.s1.l":"niceties injected while unattended","f.5.s2.l":"default overnight window","f.5.s3.l":"context stability (no drift)",
|
|
1528
|
+
"f.5.art":"UNATTENDED",
|
|
1529
|
+
"f.6.kicker":"3.6 · AI greetings & daily reflection","f.6.t":"Period-aware + return greeting + daily review",
|
|
1530
|
+
"f.6.p":"A period-aware greeting (morning/afternoon/evening) that mentions your most important work today. Return after an hour away and the memory panel auto-opens with \"welcome back\" plus a recent-work digest. The first session of each day presents yesterday's structured reflection.",
|
|
1531
|
+
"f.6.l1":"Period greeting: morning/afternoon/evening, mentioning today's work","f.6.l2":">1h away → auto-open panel + \"welcome back\"","f.6.l3":"First session of the day: yesterday's structured reflection",
|
|
1532
|
+
"f.6.art":"OVERVIEW",
|
|
1533
|
+
"f.7.kicker":"3.7 · Smart search & workspace map","f.7.t":"Natural-language search, cross-workspace by default",
|
|
1534
|
+
"f.7.p":"Ask in natural language — the AI expands your query into keywords, scans every memory layer, and answers conversationally with sources cited. The Workspace tab auto-generates a workspace mind map — AI groups themes and cross-workspace links; drag, zoom, click a card for details.",
|
|
1535
|
+
"f.7.l1":"Cross-workspace search built in; results cite the source workspace","f.7.l2":"Workspace mind map: theme grouping + cross-workspace links","f.7.l3":"Drag / zoom / click for details",
|
|
1536
|
+
"f.7.art":"SEARCH",
|
|
1537
|
+
"f.8.kicker":"3.8 · Calendar — maintained by the AI","f.8.t":"Deadlines grow out of your conversation",
|
|
1538
|
+
"f.8.p":"The AI spots deadlines and promises in conversation and files them (calendar_add). Pending items are injected into later sessions until completed; day view is a 07:00-22:00 timeline with location/reminder fields and urgency-tinted colors.",
|
|
1539
|
+
"f.8.l1":"AI spots deadlines / promises in conversation → calendar","f.8.l2":"Pending items injected into later sessions until completed","f.8.l3":"07:00-22:00 timeline + location/reminder + urgency-tinted colors",
|
|
1540
|
+
"f.8.art":"CALENDAR",
|
|
1541
|
+
"f.9.kicker":"3.9 · External memory inheritance","f.9.t":"Don't let past experience go to waste",
|
|
1542
|
+
"f.9.p":"Sessions and memories from WorkBuddy / CodeBuddy / Claude Code / Codex are scanned, importable per source (path pointers only, never copied content), removable per source; import-side and injection-side hygiene gates keep external dirt out.",
|
|
1543
|
+
"f.9.l1":"Scans: WorkBuddy / CodeBuddy / Claude Code / Codex","f.9.l2":"Per-source import: path pointers only (no content copy)","f.9.l3":"Per-source delete + double hygiene gates",
|
|
1544
|
+
"f.9.art":"EXTERNAL SCAN",
|
|
1545
|
+
"f.10.kicker":"3.10 · Memory hygiene (production-grade)","f.10.t":"Write gate + dirty-token scanner",
|
|
1546
|
+
"f.10.p":"All three write tools run sanitizeForWrite: GBK mojibake (34-feature table), stutter degeneration, consecutive duplicate lines, external-AI-profile JSON signatures, base64 residue — rejected with a human-readable reason. Settings → Debug Center \"Scan dirty tokens\": one-click scan of user memory / notes / logs / reflections, reported by line range (locations only, no content).",
|
|
1547
|
+
"f.10.l1":"34 GBK-mojibake feature table","f.10.l2":"Stutter degeneration / consecutive duplicate lines / external-profile JSON / base64 residue",
|
|
1548
|
+
"f.10.l3":"8,000 chars per append, 200,000 per rewrite caps","f.10.l4":"Appends deduped against the last ~60 lines",
|
|
1549
|
+
"f.10.art":"HYGIENE",
|
|
1550
|
+
"f.11.kicker":"3.11 · Memory lifecycle","f.11.t":"30-day distillation: trade process flow for reusable conclusions",
|
|
1551
|
+
"f.11.p":"memory_maintain_pre hands logs older than 30 days to the AI for distillation: only durable cross-session value (decisions / conventions / preferences / gotchas) is written into project notes. Originals are archived to archive/ (degrades to verbatim archive if the AI is unavailable — never lose information).",
|
|
1552
|
+
"f.11.l1":"30-day distillation window: old logs → durable points → project notes",
|
|
1553
|
+
"f.11.l2":"Explicit boundary:","f.11.l2b":"procedure skills (skill crystallization)","f.11.l2c":"and the two note levels are out of scope",
|
|
1554
|
+
"f.11.l3":"Archived originals outside regular retrieval scan (scan = project notes + active logs + reflections + user-level)","f.11.l4":"Distilled points ride along with the notes, always injected",
|
|
1555
|
+
"f.11.l5":"memory_consolidate: AI divergent consolidation (periodic elevation)",
|
|
1556
|
+
"f.11.art":"LIFECYCLE",
|
|
1557
|
+
"f.12.kicker":"3.12 · Engineering core (trust by design)","f.12.t":"Restraint as a design choice",
|
|
1558
|
+
"f.12.p":"These aren't \"features\" — they're engineering promises made before you even start using it. Less \"fast things\", more \"things that last\".",
|
|
1559
|
+
"f.12.l1":"Zero runtime dependencies (Node built-ins only)","f.12.l2":"Prefix-cache friendly: byte-stable prompts",
|
|
1560
|
+
"f.12.l3":"Rate-limited AI: auto-consolidation ≤8×/day with cooldown","f.12.l4":"Centralized storage: ~/.dsh/memory/workspaces/",
|
|
1561
|
+
"f.12.l5":"Optional Python sidecar (BGE-M3 int8, falls back to lexical on failure)",
|
|
1562
|
+
"f.12.art":"ENGINEERING",
|
|
1563
|
+
"g.kicker":"UI gallery","g.title":"Seven real screenshots","g.sub":"From welcome tour to recall review — every screenshot is a real running frame.",
|
|
1564
|
+
"g.1.t":"Memory panel · Overview","g.1.s":"Away greeting + AI period summaries",
|
|
1565
|
+
"g.2.t":"Memory Hub","g.2.s":"Three stores + skill promotion approvals",
|
|
1566
|
+
"g.3.t":"Recall review","g.3.s":"Grade every activation decision (A/P/S/H/E)",
|
|
1567
|
+
"g.4.t":"Welcome tour · entry","g.4.s":"Liquid-glass app icon + steps",
|
|
1568
|
+
"g.5.t":"Welcome tour · switches","g.5.s":"Flip every feature right in the tour",
|
|
1569
|
+
"g.6.t":"External memory scan","g.6.s":"Inline scan + tick-per-source",
|
|
1570
|
+
"g.7.t":"Engine detection","g.7.s":"Three-tier semantic engine inline install",
|
|
1571
|
+
"q.kicker":"Quick start","q.title":"Three steps, one command","q.sub":"Prerequisite: install DeepSeek Harness and start dsh web at least once.",
|
|
1572
|
+
"q.1.t":"Install package","q.1.p":"In the profile directory (~/.dsh/profiles/web):","q.1.alt":"No pnpm? npm install @a9i5k4/dsh-auto-memory works the same.",
|
|
1573
|
+
"q.2.t":"Register in profile","q.2.p":"Edit package.json in the same directory and append to the dsh.profile.bundles array:",
|
|
1574
|
+
"q.3.t":"Restart to activate","q.3.p":"Restart dsh web — the 「Memory」entry appears in the sidebar; opening it triggers the welcome tour.",
|
|
1575
|
+
"q.4.t":"Updating","q.4.p":"Settings → Auto Memory's \"Check for updates\" button compares your version with npm and one-click updates; or:",
|
|
1576
|
+
"q.ai.tag":"AI era","q.ai.t":"Let the AI install it for you","q.ai.p":"Copy this to the AI assistant you're already using:","q.ai.sys":"System requirements: dsh web running is enough; Node built-ins cover everything. The Python sidecar is optional (for BGE-M3 advanced semantic tier; auto-falls back to lexical on failure).",
|
|
1577
|
+
"c.kicker":"Community","c.title":"Thanks to these two","c.sub":"dsh-auto-memory isn't \"a one-person project\" — these two are the real collaborators who shaped the product.",
|
|
1578
|
+
"c.1.d":"Panel readability fix for DSH Desktop enhanced mode (transparent / Mica materials) + entry-button anti-occlusion & outside-click/Esc close.",
|
|
1579
|
+
"c.2.d":"Unattended / batch workflow hardening feedback that directly drove the welcome tour and per-feature switches.",
|
|
1580
|
+
"c.l1":"GitHub","c.l2":"npm","c.l3":"License: BSD-3-Clause",
|
|
1581
|
+
"c.foot":"Issues and PRs welcome — even fixing a typo or rewording a sentence counts as participation.",
|
|
1582
|
+
"ft.name":"dsh-auto-memory","ft.privacy":"Memories stay on your machine","ft.gh":"GitHub","ft.npm":"npm",
|
|
1583
|
+
"ftc.label":"CREDITS","ftc.owner":"Aik358 · product/architecture","ftc.zcode":"ZCode (GLM · Z.ai) · engineering & papers","ftc.k3":"Kimi K3 · frontend","ftc.note":"Human-machine collaboration · AI-credited, human-reviewed"
|
|
1584
|
+
}
|
|
1585
|
+
};
|
|
1586
|
+
|
|
1587
|
+
/* ── Apply language ── */
|
|
1588
|
+
var HTML_OK = { "hero.title": true };
|
|
1589
|
+
function applyLang(lang){
|
|
1590
|
+
var dict = I18N[lang] || I18N.zh;
|
|
1591
|
+
document.documentElement.setAttribute('lang', lang === 'zh' ? 'zh-CN' : 'en');
|
|
1592
|
+
document.documentElement.setAttribute('data-lang', lang);
|
|
1593
|
+
var nodes = document.querySelectorAll('[data-i18n]');
|
|
1594
|
+
for (var i = 0; i < nodes.length; i++){
|
|
1595
|
+
var n = nodes[i];
|
|
1596
|
+
var k = n.getAttribute('data-i18n');
|
|
1597
|
+
if (dict[k] !== undefined){
|
|
1598
|
+
if (HTML_OK[k]) n.innerHTML = dict[k];
|
|
1599
|
+
else n.textContent = dict[k];
|
|
1600
|
+
}
|
|
1601
|
+
}
|
|
1602
|
+
var zhBtn = document.getElementById('lang-zh');
|
|
1603
|
+
var enBtn = document.getElementById('lang-en');
|
|
1604
|
+
if (lang === 'zh'){ zhBtn.classList.add('on'); enBtn.classList.remove('on'); zhBtn.setAttribute('aria-pressed','true'); enBtn.setAttribute('aria-pressed','false'); }
|
|
1605
|
+
else { enBtn.classList.add('on'); zhBtn.classList.remove('on'); enBtn.setAttribute('aria-pressed','true'); zhBtn.setAttribute('aria-pressed','false'); }
|
|
1606
|
+
try { localStorage.setItem('dsh-landing-pre.lang', lang); } catch (e) {}
|
|
1607
|
+
}
|
|
1608
|
+
document.getElementById('lang-zh').addEventListener('click', function(){ applyLang('zh'); });
|
|
1609
|
+
document.getElementById('lang-en').addEventListener('click', function(){ applyLang('en'); });
|
|
1610
|
+
|
|
1611
|
+
/* ── 宣传图轮播:prev/next + 圆点同步 ── */
|
|
1612
|
+
(function(){
|
|
1613
|
+
var track = document.getElementById('promo-track');
|
|
1614
|
+
if (!track) return;
|
|
1615
|
+
var frames = track.querySelectorAll('img');
|
|
1616
|
+
var dots = document.querySelectorAll('.promo-dots a');
|
|
1617
|
+
var cur = 0;
|
|
1618
|
+
function go(i){
|
|
1619
|
+
cur = Math.max(0, Math.min(frames.length - 1, i));
|
|
1620
|
+
frames[cur].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' });
|
|
1621
|
+
dots.forEach(function(d, k){ d.style.background = k === cur ? 'var(--accent)' : 'transparent'; });
|
|
1622
|
+
}
|
|
1623
|
+
document.getElementById('promo-prev').addEventListener('click', function(){ go(cur - 1); });
|
|
1624
|
+
document.getElementById('promo-next').addEventListener('click', function(){ go(cur + 1); });
|
|
1625
|
+
dots.forEach(function(d, k){ d.addEventListener('click', function(e){ e.preventDefault(); go(k); }); });
|
|
1626
|
+
// sync on manual scroll
|
|
1627
|
+
var t;
|
|
1628
|
+
track.addEventListener('scroll', function(){
|
|
1629
|
+
clearTimeout(t);
|
|
1630
|
+
t = setTimeout(function(){
|
|
1631
|
+
var idx = Math.round(track.scrollLeft / track.clientWidth);
|
|
1632
|
+
if (idx !== cur){ cur = idx; dots.forEach(function(d, k){ d.style.background = k === cur ? 'var(--accent)' : 'transparent'; }); }
|
|
1633
|
+
}, 80);
|
|
1634
|
+
});
|
|
1635
|
+
go(0);
|
|
1636
|
+
})();
|
|
1637
|
+
|
|
1638
|
+
var saved = null;
|
|
1639
|
+
try { saved = localStorage.getItem('dsh-landing-pre.lang'); } catch (e) {}
|
|
1640
|
+
if (saved !== 'zh' && saved !== 'en') saved = 'zh';
|
|
1641
|
+
applyLang(saved);
|
|
1642
|
+
|
|
1643
|
+
/* ── Copy buttons ── */
|
|
1644
|
+
function flashCopied(btn){
|
|
1645
|
+
var old = btn.textContent;
|
|
1646
|
+
btn.textContent = 'copied';
|
|
1647
|
+
setTimeout(function(){ btn.textContent = old; }, 1100);
|
|
1648
|
+
}
|
|
1649
|
+
function copyText(t){
|
|
1650
|
+
if (navigator.clipboard && navigator.clipboard.writeText){
|
|
1651
|
+
navigator.clipboard.writeText(t).catch(function(){});
|
|
1652
|
+
} else {
|
|
1653
|
+
var ta = document.createElement('textarea');
|
|
1654
|
+
ta.value = t; ta.style.position='fixed'; ta.style.opacity='0';
|
|
1655
|
+
document.body.appendChild(ta); ta.select();
|
|
1656
|
+
try { document.execCommand('copy'); } catch (e) {}
|
|
1657
|
+
document.body.removeChild(ta);
|
|
1658
|
+
}
|
|
1659
|
+
}
|
|
1660
|
+
document.querySelectorAll('.copy-btn').forEach(function(btn){
|
|
1661
|
+
btn.addEventListener('click', function(){
|
|
1662
|
+
var t = btn.getAttribute('data-copy');
|
|
1663
|
+
if (t === 'prompt-ai') { t = document.getElementById('prompt-ai').textContent; }
|
|
1664
|
+
copyText(t);
|
|
1665
|
+
flashCopied(btn);
|
|
1666
|
+
});
|
|
1667
|
+
});
|
|
1668
|
+
document.getElementById('install-btn').addEventListener('click', function(){
|
|
1669
|
+
copyText('pnpm add @a9i5k4/dsh-auto-memory');
|
|
1670
|
+
var c = this.querySelector('.copy');
|
|
1671
|
+
if (c) {
|
|
1672
|
+
var orig = c.textContent;
|
|
1673
|
+
c.textContent = (document.documentElement.getAttribute('data-lang') === 'en') ? 'copied!' : '已复制';
|
|
1674
|
+
setTimeout(function(){ c.textContent = orig; }, 1100);
|
|
1675
|
+
}
|
|
1676
|
+
});
|
|
1677
|
+
|
|
1678
|
+
/* ── Reveal on scroll:仅作增强,内容默认可见 ── */
|
|
1679
|
+
if ('IntersectionObserver' in window){
|
|
1680
|
+
var io = new IntersectionObserver(function(entries){
|
|
1681
|
+
entries.forEach(function(e){
|
|
1682
|
+
if (e.isIntersecting){ e.target.classList.add('in'); io.unobserve(e.target); }
|
|
1683
|
+
});
|
|
1684
|
+
}, { rootMargin: '0px 0px -8% 0px', threshold: 0.08 });
|
|
1685
|
+
var els = document.querySelectorAll('.reveal');
|
|
1686
|
+
if (els.length){
|
|
1687
|
+
els.forEach(function(el){ el.classList.add('js-reveal'); el.classList.remove('reveal'); });
|
|
1688
|
+
document.querySelectorAll('.js-reveal').forEach(function(el){ io.observe(el); });
|
|
1689
|
+
}
|
|
1690
|
+
}
|
|
1691
|
+
|
|
1692
|
+
/* ── 实现状态板:里程碑数据(同步自 docs/proactive-associative-memory-system-map.html) ──
|
|
1693
|
+
state: live=已实现并实机验证 / tested=已测试 / queued=排队 */
|
|
1694
|
+
var MILESTONES = {
|
|
1695
|
+
"M1": { zh:"f00ad23 落地 SessionRuntimeStore、AsyncLocalStorage、per-runtime consolidate 锁/冷却/队列;并发 A/B 的 cwd、segment、cursor、pending 零串线。", en:"f00ad23: SessionRuntimeStore + AsyncLocalStorage + per-runtime locks/cooldown/queues; concurrent A/B sessions share nothing (cwd, segments, cursors, pending tasks).", state:"live" },
|
|
1696
|
+
"M2": { zh:"EventEnvelope 账本 + Segment 切片:user/tool_call/tool_result/assistant 分型,稳定原生坐标生成 id/digest;关闭态零留存(counters-only),敏感内容零残留。", en:"EventEnvelope ledger + typed Segment slicing (user/tool_call/tool_result/assistant) with stable native-coordinate ids/digests; counters-only when off, zero sensitive residue.", state:"live" },
|
|
1697
|
+
"M3b": { zh:"anchored records + sidecar 身份体系:parseAnchors conflict fail-closed、digest 前置 planMigration、原子写 MemoryDocumentStore;31 个真实文件 176 记录完成迁移,备份可回滚。", en:"Anchored records + sidecar identity: conflict fail-closed parsing, deterministic planMigration, atomic MemoryDocumentStore writes; 31 real files / 176 records migrated with rollback backups.", state:"live" },
|
|
1698
|
+
"M4": { zh:"corpus snapshot 六原因 fail-closed + 冻结 SHADOW_GATE_POLICY_PRE_V1 权重/滞回/冷却 + BM25 lexical_pre_v2(CJK 2gram+507 停用词);候选只审计不注入。", en:"Corpus snapshot with six fail-closed causes, frozen SHADOW_GATE_POLICY_PRE_V1 (weights/hysteresis/cooldown), BM25 lexical_pre_v2 (CJK 2-gram + 507 stopwords); candidates audited, never injected.", state:"live" },
|
|
1699
|
+
"M5": { zh:"envelope 授权上下文 + evidence store:coverage 校验、cite/correction 证据、stale 拒绝;M5 只用 Null/Fake sink,不启动 Python。", en:"Authorized context envelopes + evidence store: coverage checks, cite/correction evidence, stale rejection; M5 runs on Null/Fake sinks only.", state:"live" },
|
|
1700
|
+
"M6": { zh:"activation inbox:身份/scope/版本/TTL/预算/风险硬校验 → offer → claim → 参考尾注渲染(技能预算预留制)→ delivered/seen 证据落盘。", en:"Activation inbox: identity/scope/version/TTL/budget/risk hard validation → offer → claim → reference-tail rendering (skill budget reserved) → delivered/seen evidence.", state:"live" },
|
|
1701
|
+
"C2": { zh:"transformers.js + multilingual-e5-small q8 ~130MB:R@5=0.85,查询 3.8ms;npm 资产包分发+首启下载(SHA256+推理自检),为默认语义档。", en:"transformers.js + multilingual-e5-small q8 (~130MB): R@5=0.85, 3.8ms/query; shipped as an npm asset pack with first-run download (SHA256 + inference self-check). Default semantic tier.", state:"live" },
|
|
1702
|
+
"M7": { zh:"BGE-M3 int8 ONNX(R@5=0.925,与 fp32 差 0.000,快 6×)+ hybrid 融合 0.7/0.3 + fv2 两车道激活决策(echo veto/completeness/硬门禁);canary 实测 delivered=3/seen=24。", en:"BGE-M3 int8 ONNX (R@5=0.925, Δ0.000 vs fp32, 6× faster) + hybrid fusion 0.7/0.3 + fv2 two-lane activation policy (echo veto / completeness / hard gates); canary live run delivered=3/seen=24.", state:"live" },
|
|
1703
|
+
"R-DUAL":{ zh:"三级算力实测固化:C1 词法 0GB 兜底(永远可用)/ C2 e5-small 默认档 / C3 Python int8 进阶档;切换 provider 必然 stale 重建,失败自动逐级回退。", en:"Three compute tiers, measured and frozen: C1 lexical 0GB floor (always on) / C2 e5-small default / C3 Python int8 advanced; provider switch forces stale rebuild, failures fall back tier by tier.", state:"live" },
|
|
1704
|
+
"M8": { zh:"记忆中枢三店持久化 + fact 治理式写回 MEMORY.md + Hermes 借鉴(procedure touch/pinned/90 天归档/evidence 直达分流)。", en:"Memory hub three-store persistence + governed fact write-back to MEMORY.md + Hermes-inspired procedure touch/pinned/90-day archive/evidence routing.", state:"tested" },
|
|
1705
|
+
"M9": { zh:"技能固化生命周期:observed → candidate → validated → active 晋升 + 90 天未用自动归档 + 置顶;提升门控可配置。", en:"Skill crystallization lifecycle: observed → candidate → validated → active promotion + 90-day auto-archive + pinning; configurable promotion gates.", state:"tested" },
|
|
1706
|
+
"G-02": { zh:"激活观测台:每次 suppress/prefetch/activate/drop/delivery 可查触发上下文、lane、分数、候选 memoryId 与尾注摘要;用户决策生成可审计 policy diff。", en:"Activation console: every suppress/prefetch/activate/drop/delivery inspectable with trigger context, lane, score, candidate memoryId and tail digest; user decisions produce auditable policy diffs.", state:"tested" },
|
|
1707
|
+
"M10": { zh:"存储治理(排队):rebuildSidecar 接线、删除级联 revoke、语料健康扫描与管理 UI——底座(原子事务/retention/30 天蒸馏)已就绪。", en:"Storage governance (queued): rebuildSidecar wiring, delete cascades with revoke, corpus health scan & management UI — foundation (atomic transactions/retention/30-day distillation) already in place.", state:"queued" }
|
|
1708
|
+
};
|
|
1709
|
+
var MS_STATE_LABEL = { live:{zh:"LIVE VERIFIED",en:"LIVE VERIFIED"}, tested:{zh:"TESTED 已测试",en:"TESTED"}, queued:{zh:"QUEUED 排队",en:"QUEUED"} };
|
|
1710
|
+
|
|
1711
|
+
(function(){
|
|
1712
|
+
var detail = document.getElementById('m-detail');
|
|
1713
|
+
if (!detail) return;
|
|
1714
|
+
var mdId = document.getElementById('md-id');
|
|
1715
|
+
var mdTitle = document.getElementById('md-title');
|
|
1716
|
+
var mdState = document.getElementById('md-state');
|
|
1717
|
+
var mdBody = document.getElementById('md-body');
|
|
1718
|
+
var mdClose = document.getElementById('md-close');
|
|
1719
|
+
var current = null;
|
|
1720
|
+
function lang(){ return document.documentElement.getAttribute('data-lang') === 'en' ? 'en' : 'zh'; }
|
|
1721
|
+
function open(id, btn){
|
|
1722
|
+
var m = MILESTONES[id]; if (!m) return;
|
|
1723
|
+
var L = lang();
|
|
1724
|
+
if (current === id && !detail.hidden){ detail.hidden = true; current = null; return; }
|
|
1725
|
+
current = id;
|
|
1726
|
+
mdId.textContent = id;
|
|
1727
|
+
// title follows the button label (already localized)
|
|
1728
|
+
var lbl = btn.querySelector('span');
|
|
1729
|
+
mdTitle.textContent = lbl ? lbl.textContent : '';
|
|
1730
|
+
mdState.textContent = (MS_STATE_LABEL[m.state] || {})[L] || m.state;
|
|
1731
|
+
mdState.className = 'md-state ' + m.state;
|
|
1732
|
+
mdBody.textContent = m[L] || m.zh;
|
|
1733
|
+
detail.hidden = false;
|
|
1734
|
+
}
|
|
1735
|
+
document.querySelectorAll('.mnode').forEach(function(btn){
|
|
1736
|
+
btn.addEventListener('click', function(){ open(btn.getAttribute('data-m'), btn); });
|
|
1737
|
+
});
|
|
1738
|
+
mdClose.addEventListener('click', function(){ detail.hidden = true; current = null; });
|
|
1739
|
+
// refresh open detail when language flips
|
|
1740
|
+
document.getElementById('lang-zh').addEventListener('click', function(){ if (current && !detail.hidden) mdBody.textContent = MILESTONES[current].zh, mdState.textContent = (MS_STATE_LABEL[MILESTONES[current].state]||{}).zh; });
|
|
1741
|
+
document.getElementById('lang-en').addEventListener('click', function(){ if (current && !detail.hidden) mdBody.textContent = MILESTONES[current].en, mdState.textContent = (MS_STATE_LABEL[MILESTONES[current].state]||{}).en; });
|
|
1742
|
+
})();
|
|
1743
|
+
</script>
|
|
1744
|
+
</body>
|
|
1745
|
+
</html>
|