@a9i5k4/dsh-auto-memory 2.5.3 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/README.md +189 -7
  2. package/README.zh-CN.md +189 -7
  3. package/docs/CONTRIBUTORS.html +471 -0
  4. package/docs/FRONTEND-CO-CREATION.md +191 -0
  5. package/docs/GM53-HOMEPAGE-PROMPT.md +323 -0
  6. package/docs/HANDOFF-CRITERIA.md +92 -0
  7. package/docs/HOMEPAGE-CONTENT-FOR-GM53.md +299 -0
  8. package/docs/INTEGRATION-ANALYSIS.md +350 -348
  9. package/docs/PROMO-PROMPT-3.0.md +100 -0
  10. package/docs/USER-GUIDE.en.md +58 -3
  11. package/docs/USER-GUIDE.zh-CN.md +59 -4
  12. package/docs/WHITEPAPER.md +207 -0
  13. package/docs/internal/ACCEPT-35-LIVE.md +143 -0
  14. package/docs/internal/ACCEPTANCE-20260914.md +90 -0
  15. package/docs/internal/ARCH-REVIEW-BRIEF.md +411 -0
  16. package/docs/internal/ARCH-REVIEW-REQUEST.md +201 -0
  17. package/docs/internal/ARCH-REVIEW-ROUND2.md +169 -0
  18. package/docs/internal/ARCH-REVIEW-ROUND3.md +206 -0
  19. package/docs/internal/ARCHITECTURE-FOR-ZCODE-20260920.md +397 -0
  20. package/docs/internal/ART-DIRECTION-DEEPSEEK-20260920.md +351 -0
  21. package/docs/internal/ART-DIRECTION-WIREFRAME.md +191 -181
  22. package/docs/internal/ART-DIRECTION-WIREFRAME.md.bak-superseded +181 -0
  23. package/docs/internal/AUDIT-WB-GRAPH-FULL-20260916.md +314 -0
  24. package/docs/internal/BATTLE-PLAN-20260917.md +871 -0
  25. package/docs/internal/CONCURRENCY-INVESTIGATION-20260917.md +192 -0
  26. package/docs/internal/CROSS-SESSION-SEARCH-PATH-DECISION.md +72 -0
  27. package/docs/internal/CROSS-SESSION-SEARCH-RESEARCH.md +131 -0
  28. package/docs/internal/DECISIONS-20260914-SESSION.md +269 -0
  29. package/docs/internal/DESIGN-P1-STATE-COMMIT-20260915.md +219 -0
  30. package/docs/internal/DIRECTION-CHECK-WB-GRAPH-20260916.md +132 -0
  31. package/docs/internal/FEATURE-INVENTORY.md +531 -0
  32. package/docs/internal/FEEDBACK-TO-DSHAPI-RELAY.md +13 -0
  33. package/docs/internal/G-SERIES-EXECUTION-20260917.md +248 -0
  34. package/docs/internal/G3-DESIGN-20260918.md +82 -0
  35. package/docs/internal/G3-DISK-FORMAT-GAP-20260919.md +92 -0
  36. package/docs/internal/GH-DISCUSSION-5732-COMMENT.md +74 -0
  37. package/docs/internal/GPT-ACCEPTANCE-PROMPT-20260916.md +352 -0
  38. package/docs/internal/GPT-REVIEW-PROMPT.md +216 -0
  39. package/docs/internal/GROUP-WEBHOOK-SETUP.md +33 -0
  40. package/docs/internal/HANDOFF-TO-ZCODE-20260920.md +309 -0
  41. package/docs/internal/HERMES-DATA-VERIFICATION-20260919.md +120 -0
  42. package/docs/internal/HERMES-LEGACY-STATUS-20260919.md +74 -0
  43. package/docs/internal/ISSUE-55-58-VERIFICATION-20260918.md +175 -0
  44. package/docs/internal/ISSUE10-FIX-EXECUTION-20260919.md +389 -0
  45. package/docs/internal/ISSUE10-PLAN-20260919.md +254 -0
  46. package/docs/internal/ISSUE10B-FORENSICS-20260919.md +468 -0
  47. package/docs/internal/ISSUE9-PURGE-AND-R1-PLAIN-20260919.md +150 -0
  48. package/docs/internal/ISSUE9-RESIDUAL-FORENSICS-20260919.md +114 -0
  49. package/docs/internal/KICKOFF-P0.md +254 -0
  50. package/docs/internal/LESSON-TO-CANDIDATE-STATUS-20260919.md +79 -0
  51. package/docs/internal/MASTER-PLAN-3.0.md +411 -0
  52. package/docs/internal/MEMORY-GOVERNANCE-20260917.md +309 -0
  53. package/docs/internal/MEMORY-MUTATION-AND-INDEX-DESIGN.md +85 -0
  54. package/docs/internal/MERGE-CONFLICT-SCAN-20260914.md +222 -0
  55. package/docs/internal/PENDING-FIXES-20260916.md +289 -0
  56. package/docs/internal/PRE-FRONTEND-CHECKLIST-20260919.md +705 -0
  57. package/docs/internal/PRE-FRONTEND-CHECKLIST-20260919.md.bak-s10 +649 -0
  58. package/docs/internal/PROCEDURAL-MEMORY-AND-APPROVAL-DESIGN-20260918.md +225 -0
  59. package/docs/internal/PROGRESS-20260917.md +93 -0
  60. package/docs/internal/PROMPT-GAP-AUDIT-20260920.md +128 -0
  61. package/docs/internal/R1-DEGRADE-AUDIT-20260918.md +163 -0
  62. package/docs/internal/R1-READABILITY-FORENSICS-20260919.md +127 -0
  63. package/docs/internal/R2-EVIDENCE-DEEP-AUDIT-20260918.md +140 -0
  64. package/docs/internal/R3-DEGRADE-LEDGER-DESIGN-20260918.md +138 -0
  65. package/docs/internal/R4-RECALL-QUOTA-PLAN-20260918.md +218 -0
  66. package/docs/internal/RAG-KARPATHY-PROGRAM.md +229 -0
  67. package/docs/internal/REPORT-P0-NIGHTLY.md +212 -0
  68. package/docs/internal/REPORT-P5-ACCEPTANCE.md +31 -0
  69. package/docs/internal/REPORT-WB-GRAPH-NIGHTLY.md +153 -0
  70. package/docs/internal/RESUME-20260918.md +171 -0
  71. package/docs/internal/RESUME-20260919.md +104 -0
  72. package/docs/internal/REVIEW-WB-GRAPH-SELF.md +81 -0
  73. package/docs/internal/RHINELAB-TO-DEEPSEEK-FEASIBILITY.md +198 -0
  74. package/docs/internal/ROADMAP-20260917-WEEK.md +439 -0
  75. package/docs/internal/ROADMAP.md +106 -0
  76. package/docs/internal/RUN-P0-NIGHTLY.md +227 -0
  77. package/docs/internal/S10-CONSTRUCTION-HANDOFF-20260917.md +185 -0
  78. package/docs/internal/S10-GAP-INVENTORY-20260917.md +239 -0
  79. package/docs/internal/S10-GAPS-PLAIN-20260917.md +125 -0
  80. package/docs/internal/SEMANTIC-ARCHITECTURE-SPEC.md +360 -0
  81. package/docs/internal/SESSION-FILE-REPAIR-PROTOCOL.md +90 -0
  82. package/docs/internal/T6-EXECUTION-20260920.md +130 -0
  83. package/docs/internal/TELEMETRY-EFFECT-REPORT-DESIGN-20260918.md +146 -0
  84. package/docs/internal/THESIS-GAP-ANALYSIS-20260918.md +89 -0
  85. package/docs/internal/THESIS-OUTLINE-20260918.md +147 -0
  86. package/docs/internal/THREE-LAYER-CONTRACT.md +219 -0
  87. package/docs/internal/TODO-BACKLOG.md +263 -142
  88. package/docs/internal/TODO-GRAPH.html +715 -0
  89. package/docs/internal/TODO-GRAPH.html.bak-20260914-v2 +493 -0
  90. package/docs/internal/TODO-GRAPH.html.bak-20260915-alsfix +710 -0
  91. package/docs/internal/TODO-GRAPH.html.bak-20260915-p1 +710 -0
  92. package/docs/internal/TODO-GRAPH.html.bak-20260915-p6a-rev +703 -0
  93. package/docs/internal/TODO-GRAPH.html.bak-20260915-wshint +710 -0
  94. package/docs/internal/TODO-GRAPH.html.bak-20260916-batch +715 -0
  95. package/docs/internal/UPSTREAM-ISSUE-PR-TRIAGE-20260919.md +297 -0
  96. package/docs/internal/UPSTREAM-ISSUES-3RD-AUDIT-20260920.md +104 -0
  97. package/docs/internal/WB-FORMAT-CONVENTION.md +112 -0
  98. package/docs/internal/WB-GRAPH-DECISIONS-20260914.md +71 -0
  99. package/docs/internal/reviews/CLAIM-VERIFICATION-20260914.md +56 -0
  100. package/docs/internal/reviews/PLAN-gpt6astra-round2-20260914.md +787 -0
  101. package/docs/internal/reviews/REVIEW-gpt6astra-20260914.md +112 -0
  102. package/docs/internal/reviews/ROUND3-REVIEW-INTEGRATION-20260914.md +230 -0
  103. package/docs/prompts/M8-3-enable-verify.md +49 -49
  104. package/docs/screenshots/promo/promo-0-banner-v3.png +0 -0
  105. package/lib/acceptance.js +71 -0
  106. package/lib/activation-host.js +153 -18
  107. package/lib/activation-inbox.js +25 -7
  108. package/lib/board-mode.js +30 -0
  109. package/lib/client.js +1758 -90
  110. package/lib/config-io.js +156 -0
  111. package/lib/context-bridge.js +5 -2
  112. package/lib/context-host.js +86 -15
  113. package/lib/degrade.js +385 -0
  114. package/lib/dsh-home.js +143 -0
  115. package/lib/engine-identity.js +149 -0
  116. package/lib/engine-switch.js +247 -0
  117. package/lib/episodic-store.js +63 -12
  118. package/lib/evidence-store.js +10 -3
  119. package/lib/fact-store.js +22 -3
  120. package/lib/fs-retry.js +46 -0
  121. package/lib/index-sync.js +13 -1
  122. package/lib/index.js +3446 -263
  123. package/lib/intent-clean-safe.js +258 -0
  124. package/lib/intent-clean.js +12 -16
  125. package/lib/l0-extract.js +478 -149
  126. package/lib/l0-index-sync.js +195 -0
  127. package/lib/l0-index.js +349 -239
  128. package/lib/ledger-criteria.js +142 -0
  129. package/lib/m4-corpus.js +8 -2
  130. package/lib/m7-index-sync-host.js +73 -5
  131. package/lib/m7-wire.js +3 -3
  132. package/lib/memory-anchor.js +56 -1
  133. package/lib/memory-envelope.js +257 -0
  134. package/lib/memory-hub.js +138 -13
  135. package/lib/memory-index.js +4 -2
  136. package/lib/memory-mutation.js +246 -0
  137. package/lib/memory-writer.js +204 -24
  138. package/lib/note-status-apply.js +118 -0
  139. package/lib/note-status.js +196 -0
  140. package/lib/procedure-observation.js +48 -0
  141. package/lib/procedure-store.js +118 -20
  142. package/lib/python-setup.js +1 -1
  143. package/lib/python-sidecar-client.js +29 -3
  144. package/lib/recall-fusion.js +83 -12
  145. package/lib/rerank-host.js +160 -0
  146. package/lib/rules-edit.js +159 -0
  147. package/lib/rules-layer.js +261 -0
  148. package/lib/semantic-decide.js +41 -8
  149. package/lib/semantic-js.js +66 -6
  150. package/lib/shadow-host.js +3 -5
  151. package/lib/shadow-retrieval.js +3 -3
  152. package/lib/skill-export-host.js +153 -0
  153. package/lib/skill-export.js +239 -0
  154. package/lib/state-commit.js +245 -0
  155. package/lib/storage-manage.js +6 -0
  156. package/lib/subagent-gc.js +4 -8
  157. package/lib/temporal-parse.js +191 -159
  158. package/lib/tier-layer-inject.js +650 -0
  159. package/lib/tier0-catalog.js +735 -0
  160. package/lib/water-window.js +263 -186
  161. package/lib/wb-contract.js +691 -0
  162. package/lib/wb-sidecar.js +890 -0
  163. package/lib/ws-overview-rank.js +2 -2
  164. package/package.json +1 -1
  165. package/python/m7_embedding_v1.py +5 -5
  166. package/python/worker_semantic_v1.py +17 -6
  167. package/python/worker_v1.py +38 -4
@@ -0,0 +1,471 @@
1
+ <!DOCTYPE html>
2
+ <!-- ============================================================
3
+ dsh-auto-memory · 贡献者与赞助 (Contributors & Sponsors)
4
+ 单文件零外部依赖;与 docs/promo/homepage.html 同一套 liquid-glass 暗色主题。
5
+ 数据来源:GitHub API issues?state=all&per_page=100 (2026-09-16 快照,51 条)
6
+ ============================================================= -->
7
+ <html lang="zh-CN">
8
+ <head>
9
+ <meta charset="UTF-8">
10
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
11
+ <title>贡献者与赞助 · dsh-auto-memory</title>
12
+ <style>
13
+ :root {
14
+ --bg0: #060913;
15
+ --bg1: #0b1020;
16
+ --glass: rgba(255, 255, 255, 0.045);
17
+ --glass-2: rgba(255, 255, 255, 0.075);
18
+ --glass-border: rgba(255, 255, 255, 0.10);
19
+ --txt: #e8ecf6;
20
+ --txt-dim: #93a0bd;
21
+ --accent: #5b8cff;
22
+ --accent2: #8f6bff;
23
+ --accent3: #38d2c2;
24
+ --ok: #3ecf8e;
25
+ --warn: #f0b34e;
26
+ --radius: 18px;
27
+ --font: "PingFang SC", "Microsoft YaHei", "Segoe UI", sans-serif;
28
+ --mono: "Cascadia Code", Consolas, monospace;
29
+ }
30
+ * { box-sizing: border-box; }
31
+ html, body { margin: 0; padding: 0; }
32
+ body {
33
+ background:
34
+ radial-gradient(1100px 620px at 12% -8%, rgba(91, 140, 255, .20), transparent 60%),
35
+ radial-gradient(900px 560px at 88% 6%, rgba(143, 107, 255, .17), transparent 62%),
36
+ linear-gradient(180deg, var(--bg0), var(--bg1) 45%, var(--bg0));
37
+ color: var(--txt); font-family: var(--font);
38
+ line-height: 1.7; font-size: 15px; min-height: 100vh;
39
+ }
40
+ .wrap { max-width: 1080px; margin: 0 auto; padding: 56px 22px 80px; }
41
+
42
+ /* ── Hero ── */
43
+ .hero { text-align: center; margin-bottom: 52px; }
44
+ .hero .badge {
45
+ display: inline-block; padding: 5px 14px; border-radius: 999px;
46
+ background: var(--glass); border: 1px solid var(--glass-border);
47
+ color: var(--txt-dim); font-size: 12.5px; letter-spacing: .06em;
48
+ text-transform: uppercase; margin-bottom: 18px;
49
+ }
50
+ .hero h1 {
51
+ font-size: 40px; line-height: 1.24; margin: 0 0 14px;
52
+ background: linear-gradient(100deg, var(--accent), var(--accent2) 52%, var(--accent3));
53
+ -webkit-background-clip: text; background-clip: text; color: transparent;
54
+ }
55
+ .hero p { color: var(--txt-dim); font-size: 16px; margin: 0 auto; max-width: 660px; }
56
+
57
+ /* ── 统计带 ── */
58
+ .stats {
59
+ display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
60
+ gap: 14px; margin: 38px 0 56px;
61
+ }
62
+ .stat {
63
+ background: var(--glass); border: 1px solid var(--glass-border);
64
+ border-radius: var(--radius); padding: 20px 18px; text-align: center;
65
+ backdrop-filter: blur(14px);
66
+ }
67
+ .stat b { display: block; font-size: 30px; line-height: 1.1;
68
+ background: linear-gradient(100deg, var(--accent), var(--accent3));
69
+ -webkit-background-clip: text; background-clip: text; color: transparent; }
70
+ .stat span { color: var(--txt-dim); font-size: 12.5px; }
71
+
72
+ /* ── 段落标题 ── */
73
+ h2.sec {
74
+ font-size: 23px; margin: 0 0 8px; display: flex; align-items: center; gap: 10px;
75
+ }
76
+ h2.sec::before {
77
+ content: ''; width: 4px; height: 22px; border-radius: 2px;
78
+ background: linear-gradient(180deg, var(--accent), var(--accent2));
79
+ }
80
+ .sec-sub { color: var(--txt-dim); font-size: 13.5px; margin: 0 0 24px; }
81
+
82
+ /* ── 贡献者卡 ── */
83
+ .grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(310px, 1fr)); gap: 16px; }
84
+ .card {
85
+ background: var(--glass); border: 1px solid var(--glass-border);
86
+ border-radius: var(--radius); padding: 20px; backdrop-filter: blur(14px);
87
+ transition: transform .16s ease, border-color .16s ease, background .16s ease;
88
+ display: flex; flex-direction: column; gap: 10px;
89
+ }
90
+ .card:hover { transform: translateY(-3px); border-color: rgba(91,140,255,.5); background: var(--glass-2); }
91
+ .card .top { display: flex; align-items: center; gap: 12px; }
92
+ .card img { width: 46px; height: 46px; border-radius: 50%; flex-shrink: 0;
93
+ border: 2px solid var(--glass-border); background: rgba(255,255,255,.06); }
94
+ .card .who { min-width: 0; }
95
+ .card .who a { color: var(--txt); text-decoration: none; font-weight: 700; font-size: 15.5px; }
96
+ .card .who a:hover { color: var(--accent); }
97
+ .card .tier { font-size: 11.5px; color: var(--txt-dim); }
98
+ .card .desc { color: var(--txt-dim); font-size: 13.5px; margin: 0; }
99
+ .card .refs { display: flex; flex-wrap: wrap; gap: 6px; margin-top: auto; }
100
+ .card .refs a {
101
+ font-family: var(--mono); font-size: 11px; padding: 2px 8px; border-radius: 6px;
102
+ background: rgba(91,140,255,.14); border: 1px solid rgba(91,140,255,.28);
103
+ color: #a9c2ff; text-decoration: none;
104
+ }
105
+ .card .refs a.pr { background: rgba(143,107,255,.15); border-color: rgba(143,107,255,.32); color: #c6b2ff; }
106
+ .card .refs a:hover { filter: brightness(1.25); }
107
+
108
+ /* ── 紧凑列表(单人 issue) ── */
109
+ .compact { display: grid; grid-template-columns: repeat(auto-fill, minmax(232px, 1fr)); gap: 11px; }
110
+ .chip {
111
+ display: flex; align-items: center; gap: 10px; padding: 11px 14px;
112
+ background: var(--glass); border: 1px solid var(--glass-border);
113
+ border-radius: 12px; text-decoration: none; color: var(--txt);
114
+ transition: border-color .15s ease, background .15s ease;
115
+ }
116
+ .chip:hover { border-color: rgba(91,140,255,.5); background: var(--glass-2); }
117
+ .chip img { width: 28px; height: 28px; border-radius: 50%; flex-shrink: 0; background: rgba(255,255,255,.06); }
118
+ .chip .n { font-weight: 600; font-size: 13.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
119
+ .chip .r { font-family: var(--mono); font-size: 11px; color: var(--txt-dim); margin-left: auto; flex-shrink: 0; }
120
+
121
+ /* ── 赞助卡 ── */
122
+ .sponsor {
123
+ background: linear-gradient(135deg, rgba(91,140,255,.14), rgba(143,107,255,.12));
124
+ border: 1px solid rgba(91,140,255,.34); border-radius: var(--radius);
125
+ padding: 28px; display: flex; align-items: center; gap: 22px; flex-wrap: wrap;
126
+ }
127
+ .sponsor .mark {
128
+ width: 62px; height: 62px; border-radius: 15px; flex-shrink: 0;
129
+ background: linear-gradient(135deg, var(--accent), var(--accent2));
130
+ display: flex; align-items: center; justify-content: center;
131
+ font-size: 25px; font-weight: 800; color: #fff; letter-spacing: -.02em;
132
+ }
133
+ .sponsor .body { flex: 1; min-width: 240px; }
134
+ .sponsor h3 { margin: 0 0 6px; font-size: 20px; }
135
+ .sponsor h3 a { color: var(--txt); text-decoration: none; }
136
+ .sponsor h3 a:hover { color: var(--accent3); }
137
+ .sponsor p { margin: 0; color: var(--txt-dim); font-size: 14px; }
138
+ .sponsor .tag {
139
+ display: inline-block; margin-top: 10px; padding: 3px 11px; border-radius: 999px;
140
+ background: rgba(62,207,142,.16); border: 1px solid rgba(62,207,142,.34);
141
+ color: var(--ok); font-size: 11.5px;
142
+ }
143
+
144
+ /* ── 参与方式 ── */
145
+ .steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 14px; }
146
+ .step {
147
+ background: var(--glass); border: 1px solid var(--glass-border);
148
+ border-radius: 14px; padding: 20px;
149
+ }
150
+ .step .k { font-family: var(--mono); font-size: 11.5px; color: var(--accent3); margin-bottom: 8px; }
151
+ .step b { display: block; margin-bottom: 6px; font-size: 15px; }
152
+ .step p { margin: 0; color: var(--txt-dim); font-size: 13px; }
153
+
154
+ footer { margin-top: 66px; padding-top: 26px; border-top: 1px solid var(--glass-border);
155
+ text-align: center; color: var(--txt-dim); font-size: 13px; }
156
+ footer a { color: var(--accent); text-decoration: none; }
157
+ footer a:hover { text-decoration: underline; }
158
+
159
+ /* 语言切换 */
160
+ .lang { display: flex; justify-content: center; gap: 8px; margin-top: 22px; }
161
+ .lang button {
162
+ padding: 6px 18px; border-radius: 999px; cursor: pointer; font-family: inherit;
163
+ font-size: 13px; background: var(--glass); border: 1px solid var(--glass-border);
164
+ color: var(--txt-dim); transition: all .15s ease;
165
+ }
166
+ .lang button.on { background: rgba(91,140,255,.20); border-color: rgba(91,140,255,.5); color: var(--txt); }
167
+ body[data-lang="zh"] .en, body[data-lang="en"] .zh { display: none; }
168
+
169
+ @media (max-width: 640px) {
170
+ .hero h1 { font-size: 29px; }
171
+ .wrap { padding: 38px 16px 60px; }
172
+ .sponsor { padding: 22px; }
173
+ }
174
+ </style>
175
+ </head>
176
+ <body data-lang="zh">
177
+ <div class="wrap">
178
+
179
+ <!-- ══════════ Hero ══════════ -->
180
+ <header class="hero">
181
+ <div class="badge">Contributors &amp; Sponsors</div>
182
+ <h1><span class="zh">一起把她养大的人</span><span class="en">The people who raised her</span></h1>
183
+ <p class="zh">dsh-auto-memory 从一个人的实验,长成了有人在用的工具。这页记录所有提过 issue、交过 PR、以及赞助过开发资源的人——名字和贡献都在这里。</p>
184
+ <p class="en">dsh-auto-memory grew from a solo experiment into something people actually use. This page credits everyone who filed an issue, sent a pull request, or sponsored the development resources.</p>
185
+ <div class="lang">
186
+ <button id="lb-zh" class="on" onclick="setLang('zh')">中文</button>
187
+ <button id="lb-en" onclick="setLang('en')">English</button>
188
+ </div>
189
+ </header>
190
+
191
+ <!-- ══════════ 统计带 ══════════ -->
192
+ <section class="stats">
193
+ <div class="stat"><b id="s-ppl">18</b><span class="zh">外部贡献者</span><span class="en">contributors</span></div>
194
+ <div class="stat"><b id="s-pr">17</b><span class="zh">Pull Request</span><span class="en">pull requests</span></div>
195
+ <div class="stat"><b id="s-iss">32</b><span class="zh">Issue</span><span class="en">issues</span></div>
196
+ <div class="stat"><b>1</b><span class="zh">资源赞助方</span><span class="en">resource sponsor</span></div>
197
+ </section>
198
+
199
+ <!-- ══════════ 突出贡献者 ══════════ -->
200
+ <h2 class="sec"><span class="zh">突出贡献者</span><span class="en">Top contributors</span></h2>
201
+ <p class="sec-sub zh">按贡献条目数排序。每条都指向原始的 issue / PR。</p>
202
+ <p class="sec-sub en">Sorted by number of contributions. Every entry links back to the original issue or PR.</p>
203
+
204
+ <div class="grid">
205
+
206
+ <div class="card">
207
+ <div class="top">
208
+ <img src="https://github.com/Minervaowl7.png?size=92" alt="Minervaowl7" loading="lazy">
209
+ <div class="who">
210
+ <a href="https://github.com/Minervaowl7" target="_blank" rel="noopener">@Minervaowl7</a>
211
+ <div class="tier"><span class="zh">15 PR · 8 issue</span><span class="en">15 PRs · 8 issues</span></div>
212
+ </div>
213
+ </div>
214
+ <p class="desc zh">贡献量最大。工作区概览日志日期锚定修复(未锚定子串正则误纳恢复候选 ⇒ 排序被污染、概览可能为空)、自动续跑宿主加固、恢复候选生命周期与幂等重放。</p>
215
+ <p class="desc en">The most prolific contributor. Anchored workspace-overview log-date matching (an unanchored substring regex admitted recovery candidates, polluting ranking and sometimes emptying the overview), auto-continuation host hardening, and recovery-candidate lifecycle / idempotent replay.</p>
216
+ <div class="refs">
217
+ <a class="pr" href="https://github.com/Aik358/dsh-auto-memory/pull/53">PR #53</a>
218
+ <a class="pr" href="https://github.com/Aik358/dsh-auto-memory/pull/50">PR #50</a>
219
+ <a class="pr" href="https://github.com/Aik358/dsh-auto-memory/pull/49">PR #49</a>
220
+ <a class="pr" href="https://github.com/Aik358/dsh-auto-memory/pull/46">PR #46</a>
221
+ <a class="pr" href="https://github.com/Aik358/dsh-auto-memory/pull/44">PR #44</a>
222
+ <a class="pr" href="https://github.com/Aik358/dsh-auto-memory/pull/37">PR #37</a>
223
+ <a class="pr" href="https://github.com/Aik358/dsh-auto-memory/pull/36">PR #36</a>
224
+ <a class="pr" href="https://github.com/Aik358/dsh-auto-memory/pull/34">PR #34</a>
225
+ <a class="pr" href="https://github.com/Aik358/dsh-auto-memory/pull/33">PR #33</a>
226
+ <a class="pr" href="https://github.com/Aik358/dsh-auto-memory/pull/32">PR #32</a>
227
+ <a class="pr" href="https://github.com/Aik358/dsh-auto-memory/pull/31">PR #31</a>
228
+ <a class="pr" href="https://github.com/Aik358/dsh-auto-memory/pull/27">PR #27</a>
229
+ <a class="pr" href="https://github.com/Aik358/dsh-auto-memory/pull/25">PR #25</a>
230
+ <a class="pr" href="https://github.com/Aik358/dsh-auto-memory/pull/23">PR #23</a>
231
+ <a class="pr" href="https://github.com/Aik358/dsh-auto-memory/pull/17">PR #17</a>
232
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/16">#16</a>
233
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/22">#22</a>
234
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/24">#24</a>
235
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/28">#28</a>
236
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/35">#35</a>
237
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/48">#48</a>
238
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/51">#51</a>
239
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/52">#52</a>
240
+ </div>
241
+ </div>
242
+
243
+ <div class="card">
244
+ <div class="top">
245
+ <img src="https://github.com/JIE42393.png?size=92" alt="JIE42393" loading="lazy">
246
+ <div class="who">
247
+ <a href="https://github.com/JIE42393" target="_blank" rel="noopener">@JIE42393</a>
248
+ <div class="tier"><span class="zh">7 issue</span><span class="en">7 issues</span></div>
249
+ </div>
250
+ </div>
251
+ <p class="desc zh">持续的问题反馈者,覆盖面板行为、召回质量与配置边界等场景。</p>
252
+ <p class="desc en">A persistent reporter covering panel behaviour, recall quality, and configuration edge cases.</p>
253
+ <div class="refs">
254
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/15">#15</a>
255
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/26">#26</a>
256
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/30">#30</a>
257
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/41">#41</a>
258
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/42">#42</a>
259
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/43">#43</a>
260
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/45">#45</a>
261
+ </div>
262
+ </div>
263
+
264
+ <div class="card">
265
+ <div class="top">
266
+ <img src="https://github.com/Fishsb.png?size=92" alt="Fishsb" loading="lazy">
267
+ <div class="who">
268
+ <a href="https://github.com/Fishsb" target="_blank" rel="noopener">@Fishsb</a>
269
+ <div class="tier"><span class="zh">3 issue</span><span class="en">3 issues</span></div>
270
+ </div>
271
+ </div>
272
+ <p class="desc zh">关于记忆召回与注入行为的连续反馈。</p>
273
+ <p class="desc en">Successive reports on memory recall and injection behaviour.</p>
274
+ <div class="refs">
275
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/18">#18</a>
276
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/19">#19</a>
277
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/20">#20</a>
278
+ </div>
279
+ </div>
280
+
281
+ <div class="card">
282
+ <div class="top">
283
+ <img src="https://github.com/ProperSAMA.png?size=92" alt="ProperSAMA" loading="lazy">
284
+ <div class="who">
285
+ <a href="https://github.com/ProperSAMA" target="_blank" rel="noopener">@ProperSAMA</a>
286
+ <div class="tier"><span class="zh">1 PR</span><span class="en">1 PR</span></div>
287
+ </div>
288
+ </div>
289
+ <p class="desc zh">DSH Desktop 增强模式(透明 / Mica 材质)下的面板可读性修复,以及入口按钮防遮挡与外点 / Esc 关闭。</p>
290
+ <p class="desc en">Panel readability fix for DSH Desktop enhanced mode (transparent / Mica materials), plus entry-button anti-occlusion and outside-click / Esc dismissal.</p>
291
+ <div class="refs"><a class="pr" href="https://github.com/Aik358/dsh-auto-memory/pull/12">PR #12</a></div>
292
+ </div>
293
+
294
+ <div class="card">
295
+ <div class="top">
296
+ <img src="https://github.com/nkh0472.png?size=92" alt="nkh0472" loading="lazy">
297
+ <div class="who">
298
+ <a href="https://github.com/nkh0472" target="_blank" rel="noopener">@nkh0472</a>
299
+ <div class="tier"><span class="zh">1 issue</span><span class="en">1 issue</span></div>
300
+ </div>
301
+ </div>
302
+ <p class="desc zh">无人值守 / 批处理场景的加固反馈——直接推动了欢迎向导与逐功能开关化。</p>
303
+ <p class="desc en">Unattended / batch-workflow hardening feedback that directly drove the welcome tour and per-feature switches.</p>
304
+ <div class="refs"><a href="https://github.com/Aik358/dsh-auto-memory/issues/10">#10</a></div>
305
+ </div>
306
+
307
+ <div class="card">
308
+ <div class="top">
309
+ <img src="https://github.com/messiahyl.png?size=92" alt="messiahyl" loading="lazy">
310
+ <div class="who">
311
+ <a href="https://github.com/messiahyl" target="_blank" rel="noopener">@messiahyl</a>
312
+ <div class="tier"><span class="zh">2 issue</span><span class="en">2 issues</span></div>
313
+ </div>
314
+ </div>
315
+ <p class="desc zh">早期问题反馈,帮助校准了最初的行为预期。</p>
316
+ <p class="desc en">Early feedback that helped calibrate the initial behaviour expectations.</p>
317
+ <div class="refs">
318
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/8">#8</a>
319
+ <a href="https://github.com/Aik358/dsh-auto-memory/issues/9">#9</a>
320
+ </div>
321
+ </div>
322
+
323
+ <div class="card">
324
+ <div class="top">
325
+ <img src="https://github.com/fei009009.png?size=92" alt="fei009009" loading="lazy">
326
+ <div class="who">
327
+ <a href="https://github.com/fei009009" target="_blank" rel="noopener">@fei009009</a>
328
+ <div class="tier"><span class="zh">1 PR</span><span class="en">1 PR</span></div>
329
+ </div>
330
+ </div>
331
+ <p class="desc zh">提交代码贡献。</p>
332
+ <p class="desc en">Contributed code via pull request.</p>
333
+ <div class="refs"><a class="pr" href="https://github.com/Aik358/dsh-auto-memory/pull/29">PR #29</a></div>
334
+ </div>
335
+
336
+ </div>
337
+
338
+ <!-- ══════════ 其他贡献者 ══════════ -->
339
+ <h2 class="sec" style="margin-top:56px"><span class="zh">其他贡献者</span><span class="en">Also contributed</span></h2>
340
+ <p class="sec-sub zh">每一位的第一个反馈都算数——很多修复就是从这些 issue 开始的。</p>
341
+ <p class="sec-sub en">Every first report counts — many of these fixes started right here.</p>
342
+
343
+ <div class="compact">
344
+ <a class="chip" href="https://github.com/Architectxz" target="_blank" rel="noopener">
345
+ <img src="https://github.com/Architectxz.png?size=56" alt="" loading="lazy">
346
+ <span class="n">@Architectxz</span><span class="r">#1</span>
347
+ </a>
348
+ <a class="chip" href="https://github.com/ALuoXue" target="_blank" rel="noopener">
349
+ <img src="https://github.com/ALuoXue.png?size=56" alt="" loading="lazy">
350
+ <span class="n">@ALuoXue</span><span class="r">#2</span>
351
+ </a>
352
+ <a class="chip" href="https://github.com/lhbsaa" target="_blank" rel="noopener">
353
+ <img src="https://github.com/lhbsaa.png?size=56" alt="" loading="lazy">
354
+ <span class="n">@lhbsaa</span><span class="r">#3</span>
355
+ </a>
356
+ <a class="chip" href="https://github.com/alexchenzl" target="_blank" rel="noopener">
357
+ <img src="https://github.com/alexchenzl.png?size=56" alt="" loading="lazy">
358
+ <span class="n">@alexchenzl</span><span class="r">#6</span>
359
+ </a>
360
+ <a class="chip" href="https://github.com/zjj871114037" target="_blank" rel="noopener">
361
+ <img src="https://github.com/zjj871114037.png?size=56" alt="" loading="lazy">
362
+ <span class="n">@zjj871114037</span><span class="r">#7</span>
363
+ </a>
364
+ <a class="chip" href="https://github.com/eclgo" target="_blank" rel="noopener">
365
+ <img src="https://github.com/eclgo.png?size=56" alt="" loading="lazy">
366
+ <span class="n">@eclgo</span><span class="r">#13</span>
367
+ </a>
368
+ <a class="chip" href="https://github.com/moonltppt" target="_blank" rel="noopener">
369
+ <img src="https://github.com/moonltppt.png?size=56" alt="" loading="lazy">
370
+ <span class="n">@moonltppt</span><span class="r">#14</span>
371
+ </a>
372
+ <a class="chip" href="https://github.com/swtseaman" target="_blank" rel="noopener">
373
+ <img src="https://github.com/swtseaman.png?size=56" alt="" loading="lazy">
374
+ <span class="n">@swtseaman</span><span class="r">#21</span>
375
+ </a>
376
+ <a class="chip" href="https://github.com/xiaochaZ" target="_blank" rel="noopener">
377
+ <img src="https://github.com/xiaochaZ.png?size=56" alt="" loading="lazy">
378
+ <span class="n">@xiaochaZ</span><span class="r">#38</span>
379
+ </a>
380
+ <a class="chip" href="https://github.com/jeffsui" target="_blank" rel="noopener">
381
+ <img src="https://github.com/jeffsui.png?size=56" alt="" loading="lazy">
382
+ <span class="n">@jeffsui</span><span class="r">#39</span>
383
+ </a>
384
+ <a class="chip" href="https://github.com/cuohua" target="_blank" rel="noopener">
385
+ <img src="https://github.com/cuohua.png?size=56" alt="" loading="lazy">
386
+ <span class="n">@cuohua</span><span class="r">#40</span>
387
+ </a>
388
+ </div>
389
+
390
+ <!-- ══════════ 赞助方 ══════════ -->
391
+ <h2 class="sec" style="margin-top:56px"><span class="zh">资源赞助</span><span class="en">Resource sponsors</span></h2>
392
+ <p class="sec-sub zh">本项目不接广告、不做付费墙。以下赞助方提供的是开发本身要烧掉的东西——API 额度。</p>
393
+ <p class="sec-sub en">No ads, no paywall. These sponsors provide what development actually burns: API quota.</p>
394
+
395
+ <div class="sponsor">
396
+ <div class="mark">DSH</div>
397
+ <div class="body">
398
+ <h3><a href="https://api.dshapi.icu/" target="_blank" rel="noopener">DSH API · api.dshapi.icu</a></h3>
399
+ <p class="zh">API 中转站,为本项目的开发、回归测试,以及 M 系列语义引擎的选型与激活策略研究提供模型端点。没有这些额度,那些基准实验根本跑不起来。</p>
400
+ <p class="en">An API relay station providing the model endpoints used for development, regression testing, and the M-series semantic-engine selection / activation research. Without that quota, those benchmark runs simply would not have happened.</p>
401
+ <div class="tag"><span class="zh">API 额度赞助</span><span class="en">API quota sponsor</span></div>
402
+ </div>
403
+ </div>
404
+
405
+ <!-- ══════════ 如何参与 ══════════ -->
406
+ <h2 class="sec" style="margin-top:56px"><span class="zh">如何参与</span><span class="en">How to contribute</span></h2>
407
+ <p class="sec-sub zh">不需要先成为"核心贡献者"。一个能复现的 issue 就是有效贡献。</p>
408
+ <p class="sec-sub en">You do not need to be a "core contributor" first. A reproducible issue is a real contribution.</p>
409
+
410
+ <div class="steps">
411
+ <div class="step">
412
+ <div class="k">01 / issue</div>
413
+ <b><span class="zh">报一个能复现的问题</span><span class="en">File a reproducible issue</span></b>
414
+ <p class="zh">带上 DSH 版本、插件版本、复现步骤和实际 vs 预期。这一步比什么都重要。</p>
415
+ <p class="en">Include DSH version, plugin version, steps, and actual vs expected. This matters more than anything else.</p>
416
+ </div>
417
+ <div class="step">
418
+ <div class="k">02 / pr</div>
419
+ <b><span class="zh">提交一个 PR</span><span class="en">Send a pull request</span></b>
420
+ <p class="zh">小步、单一目的、带上验证结果。回归套件是绿的才算完成。</p>
421
+ <p class="en">Small, single-purpose, with verification results. It counts as done only when the regression suite is green.</p>
422
+ </div>
423
+ <div class="step">
424
+ <div class="k">03 / qq</div>
425
+ <b><span class="zh">加入交流群</span><span class="en">Join the QQ group</span></b>
426
+ <p class="zh">问题反馈、使用技巧交流,响应通常比 issue 更快。</p>
427
+ <p class="en">Feedback and usage tips — usually faster than issues.</p>
428
+ <p style="margin-top:10px"><a href="https://qm.qq.com/q/v7Asxn6vPa" target="_blank" rel="noopener" style="color:var(--accent)">→ <span class="zh">点击加入</span><span class="en">Join now</span></a></p>
429
+ </div>
430
+ <div class="step">
431
+ <div class="k">04 / sponsor</div>
432
+ <b><span class="zh">赞助开发资源</span><span class="en">Sponsor resources</span></b>
433
+ <p class="zh">提供 API 额度或其他开发资源。开个 issue 说明来意即可。</p>
434
+ <p class="en">Provide API quota or other development resources. Just open an issue.</p>
435
+ </div>
436
+ </div>
437
+
438
+ <footer>
439
+ <p class="zh">数据来源:GitHub Issues &amp; Pull Requests(2026-09-16 快照,共 51 条)。头像由 GitHub 提供。</p>
440
+ <p class="en">Data source: GitHub Issues &amp; Pull Requests (snapshot 2026-09-16, 51 entries). Avatars served by GitHub.</p>
441
+ <p style="margin-top:14px">
442
+ <a href="https://github.com/Aik358/dsh-auto-memory">README</a> ·
443
+ <a href="https://github.com/Aik358/dsh-auto-memory/blob/main/docs/USER-GUIDE.zh-CN.md">用户文档</a> ·
444
+ <a href="https://github.com/Aik358/dsh-auto-memory" target="_blank" rel="noopener">GitHub</a> ·
445
+ <a href="https://api.dshapi.icu/" target="_blank" rel="noopener">DSH API</a>
446
+ </p>
447
+ <p style="margin-top:10px;opacity:.6">dsh-auto-memory · BSD-3-Clause</p>
448
+ </footer>
449
+
450
+ </div>
451
+
452
+ <script>
453
+ function setLang(l) {
454
+ document.body.setAttribute('data-lang', l);
455
+ document.documentElement.lang = (l === 'zh' ? 'zh-CN' : 'en');
456
+ document.getElementById('lb-zh').className = (l === 'zh' ? 'on' : '');
457
+ document.getElementById('lb-en').className = (l === 'en' ? 'on' : '');
458
+ try { localStorage.setItem('dam-contrib-lang', l); } catch (e) {}
459
+ }
460
+ (function () {
461
+ var saved = null;
462
+ try { saved = localStorage.getItem('dam-contrib-lang'); } catch (e) {}
463
+ if (!saved) {
464
+ // 跟随浏览器语言: 非中文默认英文
465
+ saved = /^zh\b/i.test(navigator.language || '') ? 'zh' : 'en';
466
+ }
467
+ setLang(saved);
468
+ })();
469
+ </script>
470
+ </body>
471
+ </html>