dsh-context-compression-improved 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/.gitattributes +1 -0
  2. package/.github/workflows/ci.yml +39 -0
  3. package/CHANGELOG.ja.md +39 -0
  4. package/CHANGELOG.ko.md +39 -0
  5. package/CHANGELOG.md +135 -0
  6. package/CHANGELOG.zh.md +39 -0
  7. package/CONTRIBUTING.md +22 -0
  8. package/README.ja.md +104 -0
  9. package/README.ko.md +103 -0
  10. package/README.md +89 -12
  11. package/README.zh.md +87 -12
  12. package/SECURITY.md +18 -0
  13. package/THIRD_PARTY_NOTICES.md +7 -31
  14. package/docs/installation.ja.md +76 -0
  15. package/docs/installation.ko.md +76 -0
  16. package/docs/installation.md +76 -0
  17. package/docs/installation.zh.md +76 -0
  18. package/docs/repair-log.md +582 -0
  19. package/eslint.config.js +30 -0
  20. package/package.json +84 -81
  21. package/packages/selector/LICENSE +21 -0
  22. package/packages/selector/README.md +26 -0
  23. package/packages/selector/README.zh.md +26 -0
  24. package/packages/selector/THIRD_PARTY_NOTICES.md +38 -0
  25. package/packages/selector/docs/history-tool-call-working-set-spec.md +112 -0
  26. package/packages/selector/docs/native-tool-result-selector-spec.md +34 -0
  27. package/packages/selector/docs/subagent-cache-reuse-spec.md +46 -0
  28. package/packages/selector/lib/style.css +308 -0
  29. package/packages/selector/package.json +115 -0
  30. package/{screenshots.json → packages/selector/screenshots.json} +6 -6
  31. package/packages/selector/src/client/CompressionProfileControls.tsx +229 -0
  32. package/packages/selector/src/client/CompressionProfileSelector.module.css +170 -0
  33. package/packages/selector/src/client/CompressionProfileSelector.tsx +79 -0
  34. package/packages/selector/src/client/CustomPolicyEditor.tsx +216 -0
  35. package/packages/selector/src/client/EstimatorControls.tsx +281 -0
  36. package/packages/selector/src/client/decode.ts +49 -0
  37. package/packages/selector/src/client/index.ts +111 -0
  38. package/packages/selector/src/client/locales.ts +198 -0
  39. package/packages/selector/src/client/preset-options.ts +70 -0
  40. package/packages/selector/src/client/settings-section.tsx +126 -0
  41. package/packages/selector/src/css-modules.d.ts +6 -0
  42. package/packages/selector/src/deepseek-v4-tokenizer.ts +210 -0
  43. package/packages/selector/src/estimator-catalog.ts +104 -0
  44. package/packages/selector/src/index.ts +327 -0
  45. package/packages/selector/src/invariant.ts +113 -0
  46. package/packages/selector/src/preset-overlay.ts +567 -0
  47. package/packages/selector/src/profiles.ts +342 -0
  48. package/packages/selector/src/pruner/content.ts +188 -0
  49. package/packages/selector/src/pruner/session.ts +94 -0
  50. package/packages/selector/src/pruner/state.ts +43 -0
  51. package/packages/selector/src/pruner/tuning.ts +23 -0
  52. package/packages/selector/src/pruner/types.ts +60 -0
  53. package/packages/selector/src/pruner.ts +2144 -0
  54. package/packages/selector/src/runtime/adaptive-cost.ts +194 -0
  55. package/packages/selector/src/runtime/audit.ts +215 -0
  56. package/packages/selector/src/runtime/config.ts +613 -0
  57. package/packages/selector/src/runtime/custom-policy.ts +278 -0
  58. package/packages/selector/src/runtime/deepseek-official-pricing.ts +298 -0
  59. package/packages/selector/src/runtime/deepseek-v4-vision-tokens.ts +254 -0
  60. package/packages/selector/src/runtime/measurement.ts +403 -0
  61. package/packages/selector/src/runtime/reducers.ts +656 -0
  62. package/packages/selector/src/runtime/retrieve.ts +457 -0
  63. package/packages/selector/src/runtime/session-events.ts +17 -0
  64. package/packages/selector/src/runtime/tail-trim.ts +166 -0
  65. package/packages/selector/src/runtime/token-count.ts +72 -0
  66. package/packages/selector/src/runtime/tokenpilot/dedup.ts +81 -0
  67. package/packages/selector/src/runtime/tokenpilot/estimator.ts +183 -0
  68. package/packages/selector/src/runtime/tokenpilot/locator.ts +128 -0
  69. package/packages/selector/src/runtime/tokenpilot/read-state.ts +77 -0
  70. package/packages/selector/src/runtime/types.ts +309 -0
  71. package/packages/selector/src/runtime/value.ts +48 -0
  72. package/packages/selector/tests/auto-compact.client.spec.tsx +226 -0
  73. package/packages/selector/tests/built/client-artifact.spec.ts +51 -0
  74. package/packages/selector/tests/cache-prefix-audit.spec.ts +123 -0
  75. package/packages/selector/tests/code-skeleton.client.spec.ts +88 -0
  76. package/packages/selector/tests/custom-contract.client.spec.ts +202 -0
  77. package/packages/selector/tests/estimator-catalog.spec.ts +70 -0
  78. package/packages/selector/tests/estimator-channel.client.spec.tsx +247 -0
  79. package/packages/selector/tests/estimator-route-registration.host.spec.ts +176 -0
  80. package/packages/selector/tests/host-preset-overlay.host.spec.ts +204 -0
  81. package/packages/selector/tests/preset-options-write.client.spec.ts +181 -0
  82. package/packages/selector/tests/preset-overlay-loader.e2e.host.spec.ts +196 -0
  83. package/packages/selector/tests/preset-overlay.host.spec.ts +243 -0
  84. package/packages/selector/tests/profiles.client.spec.tsx +434 -0
  85. package/packages/selector/tests/public/package-contract.client.spec.ts +33 -0
  86. package/packages/selector/tests/runtime/adaptive-cost.spec.ts +167 -0
  87. package/packages/selector/tests/runtime/audit.spec.ts +129 -0
  88. package/packages/selector/tests/runtime/auto-compact-config.spec.ts +523 -0
  89. package/packages/selector/tests/runtime/code-skeleton.spec.ts +141 -0
  90. package/packages/selector/tests/runtime/deepseek-official-pricing.spec.ts +186 -0
  91. package/packages/selector/tests/runtime/deepseek-v4-tokenizer.spec.ts +122 -0
  92. package/packages/selector/tests/runtime/deepseek-v4-vision-tokens.spec.ts +122 -0
  93. package/packages/selector/tests/runtime/fixtures/profile-baseline.json +273 -0
  94. package/packages/selector/tests/runtime/fixtures/tokenizer-golden.json +106 -0
  95. package/packages/selector/tests/runtime/fixtures/vision-golden.json +459 -0
  96. package/packages/selector/tests/runtime/public/public-runtime.spec.ts +2531 -0
  97. package/packages/selector/tests/runtime/session-events.spec.ts +27 -0
  98. package/packages/selector/tests/runtime/tokenizer-golden.spec.ts +53 -0
  99. package/packages/selector/tests/runtime/tokenpilot/dedup.spec.ts +52 -0
  100. package/packages/selector/tests/runtime/tokenpilot/estimator.spec.ts +56 -0
  101. package/packages/selector/tests/runtime/tokenpilot/locator.spec.ts +76 -0
  102. package/packages/selector/tests/runtime/tokenpilot/profile-baseline.spec.ts +100 -0
  103. package/packages/selector/tests/runtime/tokenpilot/read-state.spec.ts +58 -0
  104. package/packages/selector/tests/runtime/value.spec.ts +23 -0
  105. package/packages/selector/tests/standing-generation.host.spec.ts +631 -0
  106. package/packages/selector/tests/subagent-cache-reuse.host.spec.ts +250 -0
  107. package/packages/selector/tests/support/cache-prefix-audit.ts +105 -0
  108. package/packages/selector/tests/support/mock-adapter.ts +37 -0
  109. package/packages/selector/tests/support/ui-primitives.tsx +34 -0
  110. package/packages/selector/tsconfig.json +11 -0
  111. package/packages/selector/tsdown.client.config.ts +102 -0
  112. package/packages/selector/tsdown.config.ts +20 -0
  113. package/pnpm-workspace.yaml +19 -0
  114. package/scripts/capture-profile-baseline.ts +80 -0
  115. package/scripts/generate-tokenizer-fixtures.py +81 -0
  116. package/scripts/generate-vision-fixtures.py +208 -0
  117. package/scripts/packed-components-smoke.ts +713 -0
  118. package/scripts/packed-install-e2e.ts +1072 -0
  119. package/scripts/verify-release.ts +300 -0
  120. package/tests/TEST_INVENTORY.md +42 -0
  121. package/tsconfig.base.json +18 -0
  122. package/tsconfig.json +7 -0
  123. package/tsconfig.scripts.json +13 -0
  124. package/tsconfig.tests.json +15 -0
  125. package/vitest.built.config.ts +9 -0
  126. package/vitest.config.ts +43 -0
  127. /package/{assets → packages/selector/assets}/deepseek-v4/LICENSE.DeepSeek-V4-Pro.txt +0 -0
  128. /package/{assets → packages/selector/assets}/deepseek-v4/manifest.json +0 -0
  129. /package/{assets → packages/selector/assets}/deepseek-v4/tokenizer.json +0 -0
  130. /package/{assets → packages/selector/assets}/deepseek-v4/tokenizer_config.json +0 -0
  131. /package/{assets → packages/selector/assets}/deepseek-v4-vision-exp/LICENSE.DeepSeek-V4-Flash-Vision-Exp.txt +0 -0
  132. /package/{assets → packages/selector/assets}/deepseek-v4-vision-exp/manifest.json +0 -0
  133. /package/{assets → packages/selector/assets}/deepseek-v4-vision-exp/tokenizer.json +0 -0
  134. /package/{assets → packages/selector/assets}/deepseek-v4-vision-exp/tokenizer_config.json +0 -0
  135. /package/{assets → packages/selector/assets}/screenshots/context-compression-selector-profiles.jpg +0 -0
  136. /package/{assets → packages/selector/assets}/screenshots/context-compression-selector-settings.png +0 -0
  137. /package/{cordis.patch.yml → packages/selector/cordis.patch.yml} +0 -0
  138. /package/{dsh.plugin.json → packages/selector/dsh.plugin.json} +0 -0
  139. /package/{lib → packages/selector/lib}/client.d.ts +0 -0
  140. /package/{lib → packages/selector/lib}/client.js +0 -0
  141. /package/{lib → packages/selector/lib}/config.js +0 -0
  142. /package/{lib → packages/selector/lib}/index.d.ts +0 -0
  143. /package/{lib → packages/selector/lib}/index.js +0 -0
  144. /package/{lib → packages/selector/lib}/invariant.d.ts +0 -0
  145. /package/{lib → packages/selector/lib}/invariant.js +0 -0
  146. /package/{lib → packages/selector/lib}/pruner.d.ts +0 -0
  147. /package/{lib → packages/selector/lib}/pruner.js +0 -0
  148. /package/{lib → packages/selector/lib}/tail-trim.js +0 -0
@@ -0,0 +1,273 @@
1
+ {
2
+ "capturedAt": "pre-tokenpilot-inspired",
3
+ "profiles": {
4
+ "off": {
5
+ "defaults": {
6
+ "profile": "off",
7
+ "nativeToolResultEnabled": false,
8
+ "freshEnabled": false,
9
+ "aggregateEnabled": false,
10
+ "historyMode": "disabled",
11
+ "nativeTriggerTokens": 9007199254740991,
12
+ "nativeTargetTokens": 9007199254740991,
13
+ "freshTriggerTokens": 9007199254740991,
14
+ "freshTargetTokens": 9007199254740991,
15
+ "aggregateTriggerTokens": 9007199254740991,
16
+ "aggregateTargetTokens": 9007199254740991,
17
+ "historyTriggerTokens": 9007199254740991,
18
+ "historyKeepRecentToolCalls": 10,
19
+ "historyKeepRecentTokens": 64000,
20
+ "historyMinReclaimTokens": 9007199254740991
21
+ },
22
+ "linkage": {
23
+ "profile": "off",
24
+ "nativeToolResultEnabled": false,
25
+ "freshEnabled": false,
26
+ "aggregateEnabled": false,
27
+ "historyMode": "disabled",
28
+ "nativeTriggerTokens": 9007199254740991,
29
+ "nativeTargetTokens": 9007199254740991,
30
+ "freshTriggerTokens": 9007199254740991,
31
+ "freshTargetTokens": 9007199254740991,
32
+ "aggregateTriggerTokens": 9007199254740991,
33
+ "aggregateTargetTokens": 9007199254740991,
34
+ "historyTriggerTokens": 9007199254740991,
35
+ "historyKeepRecentToolCalls": 10,
36
+ "historyKeepRecentTokens": 64000,
37
+ "historyMinReclaimTokens": 9007199254740991
38
+ }
39
+ },
40
+ "native": {
41
+ "defaults": {
42
+ "profile": "native",
43
+ "nativeToolResultEnabled": true,
44
+ "freshEnabled": false,
45
+ "aggregateEnabled": false,
46
+ "historyMode": "disabled",
47
+ "nativeTriggerTokens": 4096,
48
+ "nativeTargetTokens": 2048,
49
+ "freshTriggerTokens": 9007199254740991,
50
+ "freshTargetTokens": 9007199254740991,
51
+ "aggregateTriggerTokens": 9007199254740991,
52
+ "aggregateTargetTokens": 9007199254740991,
53
+ "historyTriggerTokens": 9007199254740991,
54
+ "historyKeepRecentToolCalls": 10,
55
+ "historyKeepRecentTokens": 64000,
56
+ "historyMinReclaimTokens": 9007199254740991
57
+ },
58
+ "linkage": {
59
+ "profile": "native",
60
+ "nativeToolResultEnabled": true,
61
+ "freshEnabled": false,
62
+ "aggregateEnabled": false,
63
+ "historyMode": "disabled",
64
+ "nativeTriggerTokens": 4096,
65
+ "nativeTargetTokens": 2048,
66
+ "freshTriggerTokens": 9007199254740991,
67
+ "freshTargetTokens": 9007199254740991,
68
+ "aggregateTriggerTokens": 9007199254740991,
69
+ "aggregateTargetTokens": 9007199254740991,
70
+ "historyTriggerTokens": 9007199254740991,
71
+ "historyKeepRecentToolCalls": 10,
72
+ "historyKeepRecentTokens": 64000,
73
+ "historyMinReclaimTokens": 9007199254740991
74
+ }
75
+ },
76
+ "balanced": {
77
+ "defaults": {
78
+ "profile": "balanced",
79
+ "nativeToolResultEnabled": false,
80
+ "freshEnabled": true,
81
+ "aggregateEnabled": true,
82
+ "historyMode": "routine",
83
+ "nativeTriggerTokens": 9007199254740991,
84
+ "nativeTargetTokens": 9007199254740991,
85
+ "freshTriggerTokens": 8192,
86
+ "freshTargetTokens": 3072,
87
+ "aggregateTriggerTokens": 32768,
88
+ "aggregateTargetTokens": 12288,
89
+ "historyTriggerTokens": 500000,
90
+ "historyKeepRecentToolCalls": 10,
91
+ "historyKeepRecentTokens": 64000,
92
+ "historyMinReclaimTokens": 96000
93
+ },
94
+ "linkage": {
95
+ "profile": "balanced",
96
+ "nativeToolResultEnabled": false,
97
+ "freshEnabled": true,
98
+ "aggregateEnabled": true,
99
+ "historyMode": "routine",
100
+ "nativeTriggerTokens": 9007199254740991,
101
+ "nativeTargetTokens": 9007199254740991,
102
+ "freshTriggerTokens": 8192,
103
+ "freshTargetTokens": 3072,
104
+ "aggregateTriggerTokens": 32768,
105
+ "aggregateTargetTokens": 12288,
106
+ "historyTriggerTokens": 64000,
107
+ "historyKeepRecentToolCalls": 10,
108
+ "historyKeepRecentTokens": 8192,
109
+ "historyMinReclaimTokens": 12288,
110
+ "autoCompactTokens": 102400,
111
+ "microDeadlineTokens": 89600
112
+ }
113
+ },
114
+ "cache-strict": {
115
+ "defaults": {
116
+ "profile": "cache-strict",
117
+ "nativeToolResultEnabled": false,
118
+ "freshEnabled": true,
119
+ "aggregateEnabled": true,
120
+ "historyMode": "capacity-pressure",
121
+ "nativeTriggerTokens": 9007199254740991,
122
+ "nativeTargetTokens": 9007199254740991,
123
+ "freshTriggerTokens": 8192,
124
+ "freshTargetTokens": 3072,
125
+ "aggregateTriggerTokens": 32768,
126
+ "aggregateTargetTokens": 12288,
127
+ "historyTriggerTokens": 600000,
128
+ "historyKeepRecentToolCalls": 10,
129
+ "historyKeepRecentTokens": 64000,
130
+ "historyMinReclaimTokens": 128000
131
+ },
132
+ "linkage": {
133
+ "profile": "cache-strict",
134
+ "nativeToolResultEnabled": false,
135
+ "freshEnabled": true,
136
+ "aggregateEnabled": true,
137
+ "historyMode": "capacity-pressure",
138
+ "nativeTriggerTokens": 9007199254740991,
139
+ "nativeTargetTokens": 9007199254740991,
140
+ "freshTriggerTokens": 8192,
141
+ "freshTargetTokens": 3072,
142
+ "aggregateTriggerTokens": 32768,
143
+ "aggregateTargetTokens": 12288,
144
+ "historyTriggerTokens": 76800,
145
+ "historyKeepRecentToolCalls": 10,
146
+ "historyKeepRecentTokens": 8192,
147
+ "historyMinReclaimTokens": 16384,
148
+ "autoCompactTokens": 102400,
149
+ "microDeadlineTokens": 89600
150
+ }
151
+ },
152
+ "savings": {
153
+ "defaults": {
154
+ "profile": "savings",
155
+ "nativeToolResultEnabled": false,
156
+ "freshEnabled": true,
157
+ "aggregateEnabled": true,
158
+ "historyMode": "routine",
159
+ "nativeTriggerTokens": 9007199254740991,
160
+ "nativeTargetTokens": 9007199254740991,
161
+ "freshTriggerTokens": 4096,
162
+ "freshTargetTokens": 1536,
163
+ "aggregateTriggerTokens": 16384,
164
+ "aggregateTargetTokens": 4096,
165
+ "historyTriggerTokens": 400000,
166
+ "historyKeepRecentToolCalls": 10,
167
+ "historyKeepRecentTokens": 64000,
168
+ "historyMinReclaimTokens": 128000
169
+ },
170
+ "linkage": {
171
+ "profile": "savings",
172
+ "nativeToolResultEnabled": false,
173
+ "freshEnabled": true,
174
+ "aggregateEnabled": true,
175
+ "historyMode": "routine",
176
+ "nativeTriggerTokens": 9007199254740991,
177
+ "nativeTargetTokens": 9007199254740991,
178
+ "freshTriggerTokens": 4096,
179
+ "freshTargetTokens": 1536,
180
+ "aggregateTriggerTokens": 16384,
181
+ "aggregateTargetTokens": 4096,
182
+ "historyTriggerTokens": 51200,
183
+ "historyKeepRecentToolCalls": 10,
184
+ "historyKeepRecentTokens": 8192,
185
+ "historyMinReclaimTokens": 16384,
186
+ "autoCompactTokens": 102400,
187
+ "microDeadlineTokens": 89600
188
+ }
189
+ },
190
+ "adaptive": {
191
+ "defaults": {
192
+ "profile": "adaptive",
193
+ "nativeToolResultEnabled": false,
194
+ "freshEnabled": true,
195
+ "aggregateEnabled": true,
196
+ "historyMode": "adaptive",
197
+ "nativeTriggerTokens": 9007199254740991,
198
+ "nativeTargetTokens": 9007199254740991,
199
+ "freshTriggerTokens": 8192,
200
+ "freshTargetTokens": 3072,
201
+ "aggregateTriggerTokens": 32768,
202
+ "aggregateTargetTokens": 12288,
203
+ "historyTriggerTokens": 500000,
204
+ "historyKeepRecentToolCalls": 10,
205
+ "historyKeepRecentTokens": 64000,
206
+ "historyMinReclaimTokens": 96000
207
+ },
208
+ "linkage": {
209
+ "profile": "adaptive",
210
+ "nativeToolResultEnabled": false,
211
+ "freshEnabled": true,
212
+ "aggregateEnabled": true,
213
+ "historyMode": "adaptive",
214
+ "nativeTriggerTokens": 9007199254740991,
215
+ "nativeTargetTokens": 9007199254740991,
216
+ "freshTriggerTokens": 8192,
217
+ "freshTargetTokens": 3072,
218
+ "aggregateTriggerTokens": 32768,
219
+ "aggregateTargetTokens": 12288,
220
+ "historyTriggerTokens": 64000,
221
+ "historyKeepRecentToolCalls": 10,
222
+ "historyKeepRecentTokens": 8192,
223
+ "historyMinReclaimTokens": 12288,
224
+ "autoCompactTokens": 102400,
225
+ "microDeadlineTokens": 89600
226
+ }
227
+ },
228
+ "custom": {
229
+ "defaults": {
230
+ "profile": "custom",
231
+ "nativeToolResultEnabled": false,
232
+ "freshEnabled": true,
233
+ "aggregateEnabled": true,
234
+ "historyMode": "routine",
235
+ "nativeTriggerTokens": 9007199254740991,
236
+ "nativeTargetTokens": 9007199254740991,
237
+ "freshTriggerTokens": 8192,
238
+ "freshTargetTokens": 3072,
239
+ "aggregateTriggerTokens": 32768,
240
+ "aggregateTargetTokens": 12288,
241
+ "historyTriggerTokens": 500000,
242
+ "historyKeepRecentToolCalls": 10,
243
+ "historyKeepRecentTokens": 64000,
244
+ "historyMinReclaimTokens": 96000,
245
+ "tailTrim": {
246
+ "enabled": false,
247
+ "triggerTokens": 700000
248
+ }
249
+ },
250
+ "linkage": {
251
+ "profile": "custom",
252
+ "nativeToolResultEnabled": false,
253
+ "freshEnabled": true,
254
+ "aggregateEnabled": true,
255
+ "historyMode": "routine",
256
+ "nativeTriggerTokens": 9007199254740991,
257
+ "nativeTargetTokens": 9007199254740991,
258
+ "freshTriggerTokens": 8192,
259
+ "freshTargetTokens": 3072,
260
+ "aggregateTriggerTokens": 32768,
261
+ "aggregateTargetTokens": 12288,
262
+ "historyTriggerTokens": 500000,
263
+ "historyKeepRecentToolCalls": 10,
264
+ "historyKeepRecentTokens": 64000,
265
+ "historyMinReclaimTokens": 96000,
266
+ "tailTrim": {
267
+ "enabled": false,
268
+ "triggerTokens": 700000
269
+ }
270
+ }
271
+ }
272
+ }
273
+ }
@@ -0,0 +1,106 @@
1
+ {
2
+ "generator": "tokenizers 0.22.2 on Darwin",
3
+ "revision": "1",
4
+ "tokenizers": {
5
+ "deepseek-ai/DeepSeek-V4-Flash-Vision-Exp": "6821d6ad3681a4b137b066b76094fa82ebd0a380",
6
+ "deepseek-ai/DeepSeek-V4-Pro": "0e1a0e5e52aea73055f50fef6f2423db370265b6"
7
+ },
8
+ "cases": [
9
+ {
10
+ "label": "english prose",
11
+ "text": "The quick brown fox jumps over the lazy dog.",
12
+ "counts": {
13
+ "deepseek-ai/DeepSeek-V4-Pro": 10,
14
+ "deepseek-ai/DeepSeek-V4-Flash-Vision-Exp": 10
15
+ }
16
+ },
17
+ {
18
+ "label": "simplified chinese",
19
+ "text": "上下文压缩选择器在长任务中回收工具结果 token。",
20
+ "counts": {
21
+ "deepseek-ai/DeepSeek-V4-Pro": 13,
22
+ "deepseek-ai/DeepSeek-V4-Flash-Vision-Exp": 13
23
+ }
24
+ },
25
+ {
26
+ "label": "mixed zh-en",
27
+ "text": "DeepSeek Harness 的 tool result 压缩,Fresh/Aggregate/History 三个阶段。",
28
+ "counts": {
29
+ "deepseek-ai/DeepSeek-V4-Pro": 21,
30
+ "deepseek-ai/DeepSeek-V4-Flash-Vision-Exp": 21
31
+ }
32
+ },
33
+ {
34
+ "label": "json tool output",
35
+ "text": "{\"status\":\"ok\",\"items\":[{\"id\":1,\"path\":\"/tmp/a.txt\"}],\"count\":1}",
36
+ "counts": {
37
+ "deepseek-ai/DeepSeek-V4-Pro": 24,
38
+ "deepseek-ai/DeepSeek-V4-Flash-Vision-Exp": 24
39
+ }
40
+ },
41
+ {
42
+ "label": "python code",
43
+ "text": "def solve(width: int, height: int) -> int:\n return width * height // 2\n",
44
+ "counts": {
45
+ "deepseek-ai/DeepSeek-V4-Pro": 22,
46
+ "deepseek-ai/DeepSeek-V4-Flash-Vision-Exp": 22
47
+ }
48
+ },
49
+ {
50
+ "label": "shell transcript",
51
+ "text": "$ pnpm run test\n> vitest run\n\n Test Files 12 passed (12)\n",
52
+ "counts": {
53
+ "deepseek-ai/DeepSeek-V4-Pro": 19,
54
+ "deepseek-ai/DeepSeek-V4-Flash-Vision-Exp": 19
55
+ }
56
+ },
57
+ {
58
+ "label": "unicode whitespace",
59
+ "text": "line1\nline2\r\nline3\tline4 double spaces",
60
+ "counts": {
61
+ "deepseek-ai/DeepSeek-V4-Pro": 16,
62
+ "deepseek-ai/DeepSeek-V4-Flash-Vision-Exp": 16
63
+ }
64
+ },
65
+ {
66
+ "label": "deepseek chat special tokens",
67
+ "text": "<|begin▁of▁sentence|><|User|>hello<|Assistant|><think>\n",
68
+ "counts": {
69
+ "deepseek-ai/DeepSeek-V4-Pro": 6,
70
+ "deepseek-ai/DeepSeek-V4-Flash-Vision-Exp": 6
71
+ }
72
+ },
73
+ {
74
+ "label": "vision image placeholder",
75
+ "text": "before<|deepseek_image|>after",
76
+ "counts": {
77
+ "deepseek-ai/DeepSeek-V4-Pro": 9,
78
+ "deepseek-ai/DeepSeek-V4-Flash-Vision-Exp": 3
79
+ }
80
+ },
81
+ {
82
+ "label": "empty string",
83
+ "text": "",
84
+ "counts": {
85
+ "deepseek-ai/DeepSeek-V4-Pro": 0,
86
+ "deepseek-ai/DeepSeek-V4-Flash-Vision-Exp": 0
87
+ }
88
+ },
89
+ {
90
+ "label": "single ascii char",
91
+ "text": "a",
92
+ "counts": {
93
+ "deepseek-ai/DeepSeek-V4-Pro": 1,
94
+ "deepseek-ai/DeepSeek-V4-Flash-Vision-Exp": 1
95
+ }
96
+ },
97
+ {
98
+ "label": "emoji",
99
+ "text": "compression 🧠✅ done",
100
+ "counts": {
101
+ "deepseek-ai/DeepSeek-V4-Pro": 7,
102
+ "deepseek-ai/DeepSeek-V4-Flash-Vision-Exp": 7
103
+ }
104
+ }
105
+ ]
106
+ }