dsh-super-code 0.2.1 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -22
- package/client/index.js +84 -33
- package/cordis.patch.yml +7 -0
- package/docs/Changelog.md +8 -0
- package/docs/Compatibility.md +69 -11
- package/docs/EvaluationResults.md +37 -22
- package/docs/UsageGuide.md +38 -10
- package/lib/core/batch-policy.d.ts +14 -0
- package/lib/core/batch-policy.d.ts.map +1 -0
- package/lib/core/batch-policy.js +31 -0
- package/lib/core/batch-policy.js.map +1 -0
- package/lib/core/teams.d.ts +1 -1
- package/lib/core/teams.d.ts.map +1 -1
- package/lib/core/teams.js +6 -6
- package/lib/core/teams.js.map +1 -1
- package/lib/dsh/preset-declaration.d.ts +75 -0
- package/lib/dsh/preset-declaration.d.ts.map +1 -0
- package/lib/dsh/preset-declaration.js +313 -0
- package/lib/dsh/preset-declaration.js.map +1 -0
- package/lib/dsh/preset-installation.d.ts +18 -9
- package/lib/dsh/preset-installation.d.ts.map +1 -1
- package/lib/dsh/preset-installation.js +57 -7
- package/lib/dsh/preset-installation.js.map +1 -1
- package/lib/dsh/preset-version.d.ts +7 -0
- package/lib/dsh/preset-version.d.ts.map +1 -0
- package/lib/dsh/preset-version.js +36 -0
- package/lib/dsh/preset-version.js.map +1 -0
- package/lib/dsh/super-code.d.ts +2 -0
- package/lib/dsh/super-code.d.ts.map +1 -1
- package/lib/dsh/super-code.js +18 -7
- package/lib/dsh/super-code.js.map +1 -1
- package/lib/memory-usage-projection.d.ts.map +1 -1
- package/lib/memory-usage-projection.js +29 -13
- package/lib/memory-usage-projection.js.map +1 -1
- package/package.json +3 -3
- package/presets/super-code/agent.cordis.yml +10 -0
package/README.md
CHANGED
|
@@ -4,22 +4,30 @@
|
|
|
4
4
|
|
|
5
5
|
A faster, more efficient coding plugin for DeepSeek Harness. It handles straightforward tasks directly, brings in specialist Agents when useful, and keeps sourced knowledge available for later conversations.
|
|
6
6
|
|
|
7
|
-
在同一组 SWE-bench Pro hard-100
|
|
7
|
+
在同一组 SWE-bench Pro hard-100 中,0.3.0 采用的 Batch.3 候选相比官方 minimal,平均回答耗时减少 **48%**、每题总 token 减少 **45%**、模型调用次数减少 **44.5%**,通过率从 **44% 提高到 54%**。[完整结果与限制](docs/EvaluationResults.md)
|
|
8
8
|
|
|
9
|
-
On the same SWE-bench Pro hard-100 set, the
|
|
9
|
+
On the same SWE-bench Pro hard-100 set, the Batch.3 candidate adopted for 0.3.0 uses **48% less response time**, **45% fewer total tokens**, and **44.5% fewer model calls**, with **54% passing versus 44%** for official minimal. [Full results and limitations](docs/EvaluationResults.md)
|
|
10
10
|
|
|
11
|
-
## 0.
|
|
11
|
+
## 0.3.1 · What's New
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
**Layered memory:** Separates task state, project knowledge, and global preferences. Only a few relevant summaries enter context; details are read when needed.
|
|
15
|
-
- **记忆库:** 在右侧新标签查看和搜索记忆;Agent 详情中能看到带入上下文、读取、保存和删除记录。
|
|
16
|
-
**Memory library:** Browse and search memories in a sidebar tab, and see each Agent's recorded context, reads, saves, and removals in its details.
|
|
17
|
-
- **宿主兼容:** 适配至 Harness `0.2.1-alpha.1`,补齐插件根路径及子路径的中英文展示资源;保留旧版目录预设及新版声明式预设。具体版本和验收范围见[兼容矩阵](docs/Compatibility.md)。
|
|
18
|
-
**Host compatibility:** Supports Harness through `0.2.1-alpha.1`, with Chinese/English display resources for the plugin root and subpaths. Keeps directory presets on older hosts and supports newer declarative presets. See the [verified versions and scope](docs/Compatibility.md).
|
|
13
|
+
设置页始终展开,显示插件与当前预设的独立版本,并提示版本不一致或旧预设未记录版本。目录式和 DSH NEXT 等声明式宿主均提供安装、确认重装、改名及恢复备份,默认名称和描述跟随中英文切换。[版本检查与更新](docs/UsageGuide.md#查看预设版本--checking-the-preset-version)
|
|
19
14
|
|
|
20
|
-
|
|
15
|
+
The settings page stays expanded, shows independent plugin and preset versions, and flags mismatched or unrecorded versions. Directory and declarative hosts such as DSH NEXT support installation, confirmed reinstallation, renaming and recovery backups. Default names and descriptions follow Chinese/English language changes. [Version checks and updates](docs/UsageGuide.md#查看预设版本--checking-the-preset-version)
|
|
21
16
|
|
|
22
|
-
|
|
17
|
+
本版本已逐版验证 Harness `0.1.5-alpha.1`~`0.2.1-alpha.2` 的 15 个官方 Web/CLI 版本;原生桌面范围和限制见[兼容矩阵](docs/Compatibility.md)。
|
|
18
|
+
|
|
19
|
+
This version verifies 15 official Web/CLI versions from Harness `0.1.5-alpha.1` through `0.2.1-alpha.2`; see the [matrix](docs/Compatibility.md) for native Desktop coverage and limits.
|
|
20
|
+
|
|
21
|
+
## 0.3.0 · What's New
|
|
22
|
+
|
|
23
|
+
- **批量工具调用:** 用 Harness 原生 PTC 在一次模型调用中组合多个操作,减少来回;独立读取可以并行,写入、测试和有依赖的操作依次执行,不用额外配置。
|
|
24
|
+
**Batched tool calls:** Uses Harness-native PTC to compose several operations in one model call. Independent reads can overlap; writes, tests, and dependent operations run in order. No extra setup is needed.
|
|
25
|
+
- **保留记忆与界面:** 延续任务、项目和全局三层记忆、右侧执行树及记忆库;已适配 Harness `0.1.5-alpha.1`~`0.2.1-alpha.1`。具体版本和验收范围见[兼容矩阵](docs/Compatibility.md)。
|
|
26
|
+
**Memory and interface:** Retains task, project, and global memory, the Agent tree, and the memory library, with adaptations for Harness `0.1.5-alpha.1`–`0.2.1-alpha.1`. See the [verified versions and scope](docs/Compatibility.md).
|
|
27
|
+
|
|
28
|
+
效果数据来自已完成 100 题评分的冻结 Batch.3 候选;整合后的 0.3.0 发布包另做功能回归,没有重新跑这 100 次模型任务。
|
|
29
|
+
|
|
30
|
+
Quality results come from the frozen Batch.3 candidate, which has scores for all 100 tasks. The integrated 0.3.0 package receives separate functional regression checks, not a fresh 100-task model run.
|
|
23
31
|
|
|
24
32
|
## 开始使用 · Get Started
|
|
25
33
|
|
|
@@ -35,8 +43,8 @@ Use Node.js 22 or later and a [verified Harness version](docs/Compatibility.md).
|
|
|
35
43
|
dsh plugin --profile web add dsh-super-code
|
|
36
44
|
```
|
|
37
45
|
|
|
38
|
-
|
|
39
|
-
|
|
46
|
+
GitHub Release 中的 0.3.1 安装包可用 `dsh plugin --profile web add ./dsh-super-code-0.3.1.tgz` 安装。
|
|
47
|
+
To install the 0.3.1 package from GitHub Releases, use `dsh plugin --profile web add ./dsh-super-code-0.3.1.tgz`.
|
|
40
48
|
|
|
41
49
|
2. **选中预设:** 打开“设置”→“Agent 预设”,选择 `super-code`。
|
|
42
50
|
|
|
@@ -62,17 +70,17 @@ The Agent tree shows status, usage, and cache hit rate. Drag to pan, scroll to z
|
|
|
62
70
|
|
|
63
71
|
同一组 100 题,均完成官方评分;评分环境异常已使用原补丁复核。时间不含官方评分,token 包含缓存输入,并不等于费用。
|
|
64
72
|
|
|
65
|
-
All
|
|
73
|
+
All five runs received official scores for the same 100 tasks. Grading anomalies were rechecked with the original patches. Time excludes grading; tokens include cache reads and are not a monetary cost estimate.
|
|
66
74
|
|
|
67
|
-
| 指标 / Metric | 官方 minimal | 0.0.9 | 0.1.2 | 0.2.0 分层记忆 |
|
|
68
|
-
|
|
69
|
-
| 通过 / Passed | 44/100 | 48/100 | 52/100 |
|
|
70
|
-
| 平均耗时 / Minutes per task | 25.69 | 16.46 | 16.01 |
|
|
71
|
-
| 平均总 token / Tokens per task | 11,578,047 | 9,623,217 | 9,938,176 |
|
|
72
|
-
| 模型调用/题 / Model calls | 124.85 | 92.78 | 99.78 | 93.83 |
|
|
75
|
+
| 指标 / Metric | 官方 minimal | 0.0.9 | 0.1.2 | 0.2.0 分层记忆 | 0.3.0 Batch.3 |
|
|
76
|
+
|---|---:|---:|---:|---:|---:|
|
|
77
|
+
| 通过 / Passed | 44/100 | 48/100 | 52/100 | 52/100 | **54/100** |
|
|
78
|
+
| 平均耗时 / Minutes per task | 25.69 | 16.46 | 16.01 | 15.15 | **13.46** |
|
|
79
|
+
| 平均总 token / Tokens per task | 11,578,047 | 9,623,217 | 9,938,176 | 9,299,094 | **6,381,969** |
|
|
80
|
+
| 模型调用/题 / Model calls | 124.85 | 92.78 | 99.78 | 93.83 | **69.29** |
|
|
73
81
|
|
|
74
|
-
0.2.0
|
|
82
|
+
Batch.3 相比 0.2.0 新通过 8 题、回退 6 题,净增 2 题。这是已用于诊断的历史题集,各轮宿主版本也有差异,结果不能单独证明某一项改动的效果。[多维指标、逐题证据与统计口径](docs/EvaluationResults.md)
|
|
75
83
|
|
|
76
|
-
|
|
84
|
+
Batch.3 gains eight tasks and regresses on six against 0.2.0, for a net gain of two. This is a historically exposed diagnostic set, and host revisions differ between some runs; the results do not isolate any single change. [Detailed metrics, per-task evidence, and methodology](docs/EvaluationResults.md)
|
|
77
85
|
|
|
78
86
|
[使用说明 · Usage](docs/UsageGuide.md) · [兼容性 · Compatibility](docs/Compatibility.md) · [版本记录 · Changelog](docs/Changelog.md)
|
package/client/index.js
CHANGED
|
@@ -28,13 +28,26 @@ const zh = {
|
|
|
28
28
|
'memory.usageEmpty': '尚无记忆读取记录', 'memory.context': '带入上下文', 'memory.read': '读取详情', 'memory.summary': '读取摘要',
|
|
29
29
|
'memory.remember': '保存', 'memory.forget': '删除', 'memory.omitted': '仅展示最近 100 条不同动作,完整记录保留在会话中。', 'memory.open': '查看记忆库',
|
|
30
30
|
'preset.title': 'Super Code 模式', 'usage.cacheUnknown': '缓存 —',
|
|
31
|
-
'preset.description': '更快、更省、更聪明的编码模式。', 'preset.refresh': '刷新状态',
|
|
31
|
+
'preset.description': '更快、更省、更聪明的编码模式。', 'preset.refresh': '刷新状态',
|
|
32
32
|
'preset.state.available': '预设可用', 'preset.state.installed': '用户预设已安装', 'preset.state.conflict': '已有同名预设',
|
|
33
33
|
'preset.state.missing': '尚未安装', 'preset.state.broken': '预设不可用',
|
|
34
|
-
'preset.availableHint': '
|
|
35
|
-
'preset.installHint': '
|
|
34
|
+
'preset.availableHint': '可在新对话中选择此预设。',
|
|
35
|
+
'preset.installHint': '安装 Super Code 预设;已有内容会保留,标识符冲突时请换个标识符。',
|
|
36
36
|
'preset.userConflict': '用户目录中已有相同标识符的预设,已保留。可更换标识符安装独立副本。',
|
|
37
|
-
'preset.
|
|
37
|
+
'preset.declaredHint': '此宿主通过预设声明加载 Super Code,可在此安装或确认重装。',
|
|
38
|
+
'preset.declaredReadonly': '此宿主通过插件声明加载预设,但未开放管理接口。请检查插件启用状态或重启宿主。',
|
|
39
|
+
'preset.state.declaredInstalled': '预设已安装',
|
|
40
|
+
'preset.installDeclared': '安装预设',
|
|
41
|
+
'preset.declaredNameHint': '用于识别预设,通常保留 super-code。以小写字母或数字开头,仅支持小写字母、数字和连字符,最多 64 个字符。',
|
|
42
|
+
'preset.readonly': '此宿主未开放用户预设目录,无法在此安装或重装副本。',
|
|
43
|
+
'preset.unavailableHint': '请检查插件是否已启用,然后重启宿主或刷新状态。',
|
|
44
|
+
'preset.pluginVersion': '插件版本', 'preset.presetVersion': '当前预设版本',
|
|
45
|
+
'preset.versionUnknown': '未记录版本', 'preset.versionMissing': '未安装',
|
|
46
|
+
'preset.versionMatches': '预设版本与当前插件一致。',
|
|
47
|
+
'preset.versionMismatch': '预设版本与当前插件版本不一致。',
|
|
48
|
+
'preset.versionUnknownHint': '此预设未记录版本,无法确认是否与当前插件一致。',
|
|
49
|
+
'preset.versionReinstallHint': '如需更新预设,请先保留自定义内容,再确认重新安装。',
|
|
50
|
+
'preset.versionReloadHint': '请确认插件更新已生效,重启宿主后刷新状态;若仍不一致,请重新安装插件。',
|
|
38
51
|
'preset.displayName': '显示名称', 'preset.displayNameHint': '支持中文和空格,最多 120 个字符,例如 Super Code 模式。', 'preset.name': '预设标识符', 'preset.nameHint': '用于安装目录,通常保留 super-code 即可。以小写字母或数字开头,仅含小写字母、数字和连字符,最多 64 个字符。',
|
|
39
52
|
'preset.confirmTitle': '确认重新安装预设',
|
|
40
53
|
'preset.confirmHint': '以下是通过本插件安装的预设,将会被移除并按照新名称重新安装,旧内容会保留恢复备份。对于需要保留的预设可以手动在列表中移除。',
|
|
@@ -46,7 +59,8 @@ const zh = {
|
|
|
46
59
|
'preset.error.invalid-display-name': '显示名称不能为空或全为空格,最多 120 个字符;支持中文和空格。',
|
|
47
60
|
'preset.error.name-taken': '该标识符已被占用,原预设未改动。请更换标识符。',
|
|
48
61
|
'preset.error.no-user-root': '此宿主没有可写的用户预设目录。',
|
|
49
|
-
'preset.error.
|
|
62
|
+
'preset.error.management-unavailable': '此宿主未开放预设管理接口,请检查插件启用状态或重启宿主。',
|
|
63
|
+
'preset.error.install-failed': '安装未完成,已尝试恢复原配置。请检查写入权限和宿主日志后重试。',
|
|
50
64
|
'preset.error.connection': '暂时无法读取预设状态,请刷新重试。',
|
|
51
65
|
'task.memory': '任务档案', 'task.other': '其他任务', 'task.history': '任务记录',
|
|
52
66
|
'status.active': '进行中', 'status.paused': '已暂停', 'status.completed': '已完成', 'status.cancelled': '已取消',
|
|
@@ -73,13 +87,26 @@ const en = {
|
|
|
73
87
|
'memory.usageEmpty': 'No memory reads recorded yet', 'memory.context': 'Added to context', 'memory.read': 'Read details', 'memory.summary': 'Read summary',
|
|
74
88
|
'memory.remember': 'Saved', 'memory.forget': 'Removed', 'memory.omitted': 'Showing the latest 100 distinct actions. Full records remain in the conversation.', 'memory.open': 'Open memory library',
|
|
75
89
|
'preset.title': 'Super Code', 'usage.cacheUnknown': 'Cache —',
|
|
76
|
-
'preset.description': 'A faster, more efficient, smarter coding mode.', 'preset.refresh': 'Refresh status',
|
|
90
|
+
'preset.description': 'A faster, more efficient, smarter coding mode.', 'preset.refresh': 'Refresh status',
|
|
77
91
|
'preset.state.available': 'Preset available', 'preset.state.installed': 'User preset installed', 'preset.state.conflict': 'Preset name already exists',
|
|
78
92
|
'preset.state.missing': 'Not installed', 'preset.state.broken': 'Preset unavailable',
|
|
79
|
-
'preset.availableHint': 'Select this preset in a new conversation.
|
|
80
|
-
'preset.installHint': 'Install
|
|
93
|
+
'preset.availableHint': 'Select this preset in a new conversation.',
|
|
94
|
+
'preset.installHint': 'Install the Super Code preset. Existing content is preserved; choose another identifier if it is taken.',
|
|
81
95
|
'preset.userConflict': 'A user preset with this identifier already exists and was preserved. Choose another identifier for a separate copy.',
|
|
82
|
-
'preset.
|
|
96
|
+
'preset.declaredHint': 'This host loads Super Code through a preset declaration. You can install it here or confirm reinstallation.',
|
|
97
|
+
'preset.declaredReadonly': 'This host loads plugin preset declarations but does not expose preset management. Check plugin activation or restart the host.',
|
|
98
|
+
'preset.state.declaredInstalled': 'Preset installed',
|
|
99
|
+
'preset.installDeclared': 'Install preset',
|
|
100
|
+
'preset.declaredNameHint': 'Identifies the preset; usually keep super-code. Start with a lowercase letter or digit; use only lowercase letters, digits and hyphens, up to 64 characters.',
|
|
101
|
+
'preset.readonly': 'This host does not expose a user preset directory for installing or reinstalling copies.',
|
|
102
|
+
'preset.unavailableHint': 'Check that the plugin is enabled, then restart the host or refresh the status.',
|
|
103
|
+
'preset.pluginVersion': 'Plugin version', 'preset.presetVersion': 'Current preset version',
|
|
104
|
+
'preset.versionUnknown': 'Version not recorded', 'preset.versionMissing': 'Not installed',
|
|
105
|
+
'preset.versionMatches': 'The preset version matches the installed plugin.',
|
|
106
|
+
'preset.versionMismatch': 'The preset version differs from the installed plugin.',
|
|
107
|
+
'preset.versionUnknownHint': 'This preset has no recorded version, so its version cannot be compared with the installed plugin.',
|
|
108
|
+
'preset.versionReinstallHint': 'To update the preset, save any custom content, then confirm reinstallation.',
|
|
109
|
+
'preset.versionReloadHint': 'Check that the plugin update has taken effect, restart the host and refresh the status. If the versions still differ, reinstall the plugin.',
|
|
83
110
|
'preset.displayName': 'Display name', 'preset.displayNameHint': 'Supports Chinese characters and spaces, up to 120 characters, e.g. Super Code 模式.', 'preset.name': 'Preset identifier', 'preset.nameHint': 'Used for the installation directory; usually keep super-code. Start with a lowercase letter or digit; use only lowercase letters, digits and hyphens, up to 64 characters.',
|
|
84
111
|
'preset.confirmTitle': 'Confirm preset reinstallation',
|
|
85
112
|
'preset.confirmHint': 'These presets were installed by this plugin. They will be removed and reinstalled with the new names shown, and recovery backups will be kept. Remove any preset you want to keep from the list.',
|
|
@@ -91,7 +118,8 @@ const en = {
|
|
|
91
118
|
'preset.error.invalid-display-name': 'The display name cannot be empty or whitespace-only and must be at most 120 characters. Chinese characters and spaces are supported.',
|
|
92
119
|
'preset.error.name-taken': 'This identifier is taken. The existing preset was preserved. Choose another identifier.',
|
|
93
120
|
'preset.error.no-user-root': 'This host has no writable user preset directory.',
|
|
94
|
-
'preset.error.
|
|
121
|
+
'preset.error.management-unavailable': 'This host does not expose preset management. Check plugin activation or restart the host.',
|
|
122
|
+
'preset.error.install-failed': 'Installation failed and restoration of the original configuration was attempted. Check write permissions and host logs, then retry.',
|
|
95
123
|
'preset.error.connection': 'Preset status is unavailable. Refresh to try again.',
|
|
96
124
|
'task.memory': 'Task memory', 'task.other': 'Other tasks', 'task.history': 'Task history',
|
|
97
125
|
'status.active': 'Active', 'status.paused': 'Paused', 'status.completed': 'Completed', 'status.cancelled': 'Cancelled', 'next': 'Next: ',
|
|
@@ -1047,10 +1075,11 @@ function synchronizePresetDisplay(api, locale, reload, onError) {
|
|
|
1047
1075
|
|
|
1048
1076
|
function PresetSettings({ api, t }) {
|
|
1049
1077
|
const [status, setStatus] = useState(null), [customId, setCustomId] = useState(null)
|
|
1050
|
-
const
|
|
1078
|
+
const reinstall = status?.reinstallable ?? status?.state === 'installed'
|
|
1079
|
+
const name = customId ?? (reinstall ? status.id : 'super-code')
|
|
1051
1080
|
const [customDisplayName, setCustomDisplayName] = useState(null)
|
|
1052
|
-
const displayName = customDisplayName ?? (
|
|
1053
|
-
const [busy, setBusy] = useState(true), [error, setError] = useState('')
|
|
1081
|
+
const displayName = customDisplayName ?? (reinstall ? status.name || t('preset.title') : t('preset.title'))
|
|
1082
|
+
const [busy, setBusy] = useState(true), [error, setError] = useState('')
|
|
1054
1083
|
const [confirmation, setConfirmation] = useState(null)
|
|
1055
1084
|
const dialog = useRef(null)
|
|
1056
1085
|
const alive = useRef(false), pending = useRef(false)
|
|
@@ -1059,7 +1088,20 @@ function PresetSettings({ api, t }) {
|
|
|
1059
1088
|
const element = dialog.current
|
|
1060
1089
|
element.showModal()
|
|
1061
1090
|
element.querySelector('[data-super-code-cancel]')?.focus()
|
|
1062
|
-
|
|
1091
|
+
// Removing the focused list row can leave focus outside the native dialog.
|
|
1092
|
+
// Capture Escape before the host's document listener closes Settings too.
|
|
1093
|
+
const target = element.ownerDocument.defaultView
|
|
1094
|
+
const cancel = event => {
|
|
1095
|
+
if (event.key !== 'Escape' || event.isComposing) return
|
|
1096
|
+
event.preventDefault()
|
|
1097
|
+
event.stopPropagation()
|
|
1098
|
+
setConfirmation(null)
|
|
1099
|
+
}
|
|
1100
|
+
target.addEventListener('keydown', cancel, true)
|
|
1101
|
+
return () => {
|
|
1102
|
+
target.removeEventListener('keydown', cancel, true)
|
|
1103
|
+
if (element.open) element.close()
|
|
1104
|
+
}
|
|
1063
1105
|
}, [confirmation !== null])
|
|
1064
1106
|
const run = async (install, confirmed = null) => {
|
|
1065
1107
|
if (pending.current) return
|
|
@@ -1089,28 +1131,36 @@ function PresetSettings({ api, t }) {
|
|
|
1089
1131
|
useEffect(() => { alive.current = true; run(false); return () => { alive.current = false } }, [api])
|
|
1090
1132
|
const submit = () => {
|
|
1091
1133
|
if (busy || pending.current || !displayName.trim() || !/^[a-z0-9][a-z0-9-]{0,63}$/.test(name.trim())) return
|
|
1092
|
-
if (
|
|
1134
|
+
if (reinstall) {
|
|
1093
1135
|
setConfirmation([{ previousId: status.id, id: name.trim(),
|
|
1094
1136
|
name: customDisplayName === null && displayName === t('preset.title') ? '' : displayName.trim(), label: displayName.trim() }])
|
|
1095
1137
|
} else run(true)
|
|
1096
1138
|
}
|
|
1097
1139
|
const available = status && ['available', 'installed'].includes(status.state)
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1140
|
+
const versionState = status?.presetVersion ? status.presetVersion === status.pluginVersion ? 'match' : 'mismatch' : 'unknown'
|
|
1141
|
+
return React.createElement('section', { className: 'dsh-super-code-settings' },
|
|
1142
|
+
React.createElement('header', { className: 'dsh-super-code-settings-header' },
|
|
1101
1143
|
React.createElement('span', { className: 'dsh-super-code-settings-head-text' },
|
|
1102
|
-
React.createElement('
|
|
1103
|
-
React.createElement('span', { className: 'dsh-super-code-settings-description' }, t('preset.description'))),
|
|
1104
|
-
|
|
1105
|
-
open && React.createElement('div', { className: 'dsh-super-code-settings-body' },
|
|
1144
|
+
React.createElement('h2', { className: 'dsh-super-code-settings-name' }, t('preset.title')),
|
|
1145
|
+
React.createElement('span', { className: 'dsh-super-code-settings-description' }, t('preset.description')))),
|
|
1146
|
+
React.createElement('div', { className: 'dsh-super-code-settings-body' },
|
|
1106
1147
|
status && React.createElement('p', { className: 'dsh-super-code-preset-status', role: 'status', 'data-available': available },
|
|
1107
|
-
React.createElement('span', { 'aria-hidden': true }, '●'), ' ', t(`preset.state.${status.state}`), ' · ', status.id),
|
|
1148
|
+
React.createElement('span', { 'aria-hidden': true }, '●'), ' ', t(status.delivery === 'declaration' && status.state === 'installed' ? 'preset.state.declaredInstalled' : `preset.state.${status.state}`), ' · ', status.id),
|
|
1108
1149
|
React.createElement('div', { className: 'dsh-super-code-settings-actions' },
|
|
1109
1150
|
React.createElement('button', { type: 'button', disabled: busy, onClick: () => run(false), 'aria-label': t('preset.refresh') }, t('preset.refresh'))),
|
|
1110
|
-
status && React.createElement('
|
|
1111
|
-
|
|
1151
|
+
status && React.createElement('dl', { className: 'dsh-super-code-preset-versions' },
|
|
1152
|
+
React.createElement('dt', null, t('preset.pluginVersion')),
|
|
1153
|
+
React.createElement('dd', null, status.pluginVersion),
|
|
1154
|
+
React.createElement('dt', null, t('preset.presetVersion')),
|
|
1155
|
+
React.createElement('dd', null, status.state === 'missing' ? t('preset.versionMissing') : status.presetVersion || t('preset.versionUnknown'))),
|
|
1156
|
+
status && status.state !== 'missing' && React.createElement('p', { className: 'dsh-super-code-version-hint', role: 'status', 'data-version-state': versionState },
|
|
1157
|
+
t(versionState === 'match' ? 'preset.versionMatches' : versionState === 'mismatch' ? 'preset.versionMismatch' : 'preset.versionUnknownHint'),
|
|
1158
|
+
versionState === 'mismatch' && ` ${t(reinstall && status.authorable ? 'preset.versionReinstallHint' : 'preset.versionReloadHint')}`),
|
|
1159
|
+
status && React.createElement('p', null, t(available ? 'preset.availableHint' : status.authorable ? 'preset.installHint' : 'preset.unavailableHint')),
|
|
1160
|
+
reinstall && React.createElement('p', null, t('preset.reinstallHint')),
|
|
1112
1161
|
status?.userConflict && status.state !== 'conflict' && React.createElement('p', null, t('preset.userConflict')),
|
|
1113
|
-
status
|
|
1162
|
+
status?.delivery === 'declaration' && React.createElement('p', { role: 'note' }, t(status.authorable ? 'preset.declaredHint' : 'preset.declaredReadonly')),
|
|
1163
|
+
status?.delivery === 'directory' && !status.authorable && React.createElement('p', { role: 'note' }, t('preset.readonly')),
|
|
1114
1164
|
status?.authorable && React.createElement('form', { onSubmit: event => { event.preventDefault(); submit() } },
|
|
1115
1165
|
React.createElement('label', { htmlFor: 'super-code-display-name' }, t('preset.displayName')),
|
|
1116
1166
|
React.createElement('input', { id: 'super-code-display-name', value: displayName, maxLength: 120, required: true, disabled: busy, 'aria-describedby': 'super-code-display-name-hint', onChange: event => setCustomDisplayName(event.target.value) }),
|
|
@@ -1120,8 +1170,8 @@ function PresetSettings({ api, t }) {
|
|
|
1120
1170
|
React.createElement('input', { id: 'super-code-preset-name', value: name, maxLength: 64, disabled: busy,
|
|
1121
1171
|
pattern: '[a-z0-9][a-z0-9\\-]{0,63}', required: true, autoComplete: 'off', spellCheck: false,
|
|
1122
1172
|
'aria-describedby': 'super-code-preset-name-hint', onChange: event => setCustomId(event.target.value) }),
|
|
1123
|
-
React.createElement('button', { type: 'submit', disabled: busy || !displayName.trim() || !/^[a-z0-9][a-z0-9-]{0,63}$/.test(name.trim()) }, t(busy ? 'preset.working' : status?.
|
|
1124
|
-
React.createElement('small', { id: 'super-code-preset-name-hint' }, t('preset.nameHint'))),
|
|
1173
|
+
React.createElement('button', { type: 'submit', disabled: busy || !displayName.trim() || !/^[a-z0-9][a-z0-9-]{0,63}$/.test(name.trim()) }, t(busy ? 'preset.working' : reinstall ? 'preset.reinstall' : status?.delivery === 'declaration' ? 'preset.installDeclared' : 'preset.install'))),
|
|
1174
|
+
React.createElement('small', { id: 'super-code-preset-name-hint' }, t(status?.delivery === 'declaration' ? 'preset.declaredNameHint' : 'preset.nameHint'))),
|
|
1125
1175
|
error && React.createElement('p', { role: 'alert' }, t(error))),
|
|
1126
1176
|
confirmation && React.createElement('dialog', { ref: dialog, className: 'dsh-super-code-confirm',
|
|
1127
1177
|
'aria-labelledby': 'super-code-confirm-title', 'aria-describedby': 'super-code-confirm-hint',
|
|
@@ -1196,11 +1246,12 @@ function apply(ctx) {
|
|
|
1196
1246
|
.dsh-super-code-memory-activity{margin-top:14px;font-size:12px}.dsh-super-code-memory-activity summary{cursor:pointer}.dsh-super-code-memory-activity-list{max-height:200px;overflow:auto}.dsh-super-code-memory-activity-list button{display:grid;grid-template-columns:auto 1fr;gap:5px 8px;width:100%;text-align:left;background:transparent;border:0;border-bottom:1px solid var(--agent-line);padding:10px 2px;color:inherit;font:inherit;cursor:pointer}.dsh-super-code-memory-activity-list small{grid-column:2;color:var(--agent-muted);overflow-wrap:anywhere}.dsh-super-code-memory-activity-list span{overflow-wrap:anywhere}
|
|
1197
1247
|
.dsh-super-code-memory-action{font-size:10px;color:#4d779f}.dsh-super-code-memory-action[data-action=read]{color:#14867b}.dsh-super-code-memory-action[data-action=remember]{color:#927247}.dsh-super-code-memory-action[data-action=forget]{color:var(--agent-muted)}
|
|
1198
1248
|
.dsh-super-code-memory button:focus-visible,.dsh-super-code-memory input:focus-visible{outline:2px solid var(--dsw-color-primary,#3276dc);outline-offset:2px}
|
|
1199
|
-
.dsh-super-code-settings{list-style:none;border:.5px solid var(--dsw-alias-border-l4,#dedfe3);border-radius:16px;background:var(--dsw-alias-bg-layer-
|
|
1200
|
-
.dsh-super-code-settings
|
|
1201
|
-
.dsh-super-code-settings-
|
|
1202
|
-
.dsh-super-code-settings-
|
|
1203
|
-
.dsh-super-code-
|
|
1249
|
+
.dsh-super-code-settings{list-style:none;border:.5px solid var(--dsw-alias-border-l4,#dedfe3);border-radius:16px;background:var(--dsw-alias-bg-layer-2,transparent);line-height:1.6;font-size:13px}
|
|
1250
|
+
.dsh-super-code-settings-header{display:flex;align-items:center;gap:12px;padding:14px 16px}
|
|
1251
|
+
.dsh-super-code-settings-head-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.dsh-super-code-settings-name{margin:0;font-size:15px;font-weight:600;line-height:1.4;color:var(--dsw-alias-label-primary,inherit)}
|
|
1252
|
+
.dsh-super-code-settings-description{font-size:13px;line-height:1.5;color:var(--dsw-alias-label-tertiary,#70757d)}
|
|
1253
|
+
.dsh-super-code-preset-versions{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 16px;margin:12px 0}.dsh-super-code-preset-versions dt{color:var(--dsw-alias-label-secondary,#70757d)}.dsh-super-code-preset-versions dd{margin:0;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
|
|
1254
|
+
.dsh-super-code-settings .dsh-super-code-version-hint[data-version-state=mismatch],.dsh-super-code-settings .dsh-super-code-version-hint[data-version-state=unknown]{border-left:2px solid #b87716;padding:8px 12px;background:color-mix(in srgb,#b87716 8%,transparent)}
|
|
1204
1255
|
.dsh-super-code-confirm{box-sizing:border-box;width:min(560px,calc(100vw - 48px));max-height:80vh;overflow:auto;border:1px solid var(--dsw-alias-border-l2,#dedfe3);border-radius:8px;padding:24px;color:var(--dsw-alias-label-primary,#202126);background:var(--dsw-alias-bg-layer-1,#fff);font-size:13px;line-height:1.6}.dsh-super-code-confirm::backdrop{background:#0006}.dsh-super-code-confirm h3{font-size:16px;margin:0 0 12px}.dsh-super-code-confirm p{margin:0 0 14px}.dsh-super-code-confirm ul{padding:0;margin:0 0 18px;list-style:none}.dsh-super-code-confirm li{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:12px 0;overflow-wrap:anywhere}.dsh-super-code-confirm-actions{display:flex;justify-content:flex-end;gap:8px}.dsh-super-code-confirm button{font:inherit;color:inherit;border:1px solid var(--dsw-alias-border-l1,#dedfe3);border-radius:6px;background:transparent;padding:7px 10px;min-height:34px;cursor:pointer}.dsh-super-code-confirm button:disabled{opacity:.45;cursor:default}.dsh-super-code-confirm button:focus-visible{outline:2px solid var(--dsw-color-primary,#3276dc);outline-offset:2px}
|
|
1205
1256
|
.dsh-super-code-settings-body{border-top:.5px solid var(--dsw-alias-border-l2,#dedfe3);margin:0 16px;padding:12px 0 14px}.dsh-super-code-settings-actions{display:flex;justify-content:flex-end}
|
|
1206
1257
|
.dsh-super-code-settings p{margin:8px 0;color:var(--dsw-alias-label-secondary,#70757d)}
|
package/cordis.patch.yml
CHANGED
|
@@ -16,6 +16,9 @@
|
|
|
16
16
|
plugins:
|
|
17
17
|
- id: super-code
|
|
18
18
|
name: dsh-super-code/super-code
|
|
19
|
+
config:
|
|
20
|
+
presetVersion: 0.3.1
|
|
21
|
+
presetInstallation: bundle:dsh-super-code
|
|
19
22
|
- id: compaction
|
|
20
23
|
name: cordis:group
|
|
21
24
|
group: true
|
|
@@ -61,6 +64,10 @@
|
|
|
61
64
|
name: '@deepseek-ai/dsh-skill-filesystem'
|
|
62
65
|
- id: tool-skill
|
|
63
66
|
name: '@deepseek-ai/dsh-tool-skill'
|
|
67
|
+
- id: tool-presentation
|
|
68
|
+
name: '@deepseek-ai/dsh-agent-tool-presentation'
|
|
69
|
+
config:
|
|
70
|
+
mode: ptc
|
|
64
71
|
|
|
65
72
|
# Register host projections and discover the browser contribution.
|
|
66
73
|
- insert:
|
package/docs/Changelog.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# 版本记录 · Changelog
|
|
2
2
|
|
|
3
|
+
- **0.3.1 · 2026-10-10**:设置页始终展开,展示插件与当前预设的独立版本,提示不一致或未记录版本;声明式宿主新增安装、确认重装、改名、恢复备份及默认名称/描述语言同步。保留目录式安装、归属校验和自定义内容保护,允许新版宿主使用的 Cordis/Schemastery alpha 依赖。
|
|
4
|
+
**0.3.1 · 2026-10-10**: Keeps settings expanded and shows independent plugin/preset versions with mismatch or unrecorded-version notices. Adds installation, confirmed reinstallation, renaming, recovery backups and default display-language synchronization on declarative hosts. Retains directory installation, ownership checks and custom display-field protection, and accepts the Cordis/Schemastery alpha dependencies used by newer hosts.
|
|
5
|
+
修复原生桌面宿主管理 API 的解析位置,以及移除确认列表条目后 Escape 误关设置页的问题。逐版验证 15 个官方 Harness 版本(`0.1.5-alpha.1`~`0.2.1-alpha.2`)及可获取的四个 macOS arm64 Desktop 发行包;[验证范围与限制](Compatibility.md)。
|
|
6
|
+
Fixes native Desktop management API resolution and Escape closing Settings after removing a confirmation row. Verifies 15 official Harness versions (`0.1.5-alpha.1`–`0.2.1-alpha.2`) and four available macOS arm64 Desktop releases; [verification scope and limits](Compatibility.md).
|
|
7
|
+
|
|
8
|
+
- **0.3.0 · 2026-10-09**:合入 Batch.3,用 Harness 原生 PTC 合并工具调用、并行独立读取,补齐批量调用中的 Agent 记忆使用记录,保留分层记忆及 0.2.1 的兼容适配,更新完整 100 题成绩和使用说明。
|
|
9
|
+
**0.3.0 · 2026-10-09**: Integrates Batch.3 with Harness-native PTC for composed tool calls and parallel independent reads, adds per-Agent memory activity for nested calls, retains layered memory and 0.2.1 compatibility updates, and refreshes the complete 100-task results and usage guide.
|
|
10
|
+
|
|
3
11
|
- **0.2.1 · 2026-10-08**:逐版验证 Harness `0.2.0-rc.2` 与 `0.2.1-alpha.1`,扩展 peer 依赖范围,补齐根路径及 `/dsh`、`/super-code` 子路径的中英文展示资源,以适配新版插件元数据读取机制。安装、主/子 Agent、记忆、重启及 Safari 界面验收通过;alpha.1 原生 Desktop 尚未验收。[兼容范围与限制](Compatibility.md)
|
|
4
12
|
**0.2.1 · 2026-10-08**: Verifies Harness `0.2.0-rc.2` and `0.2.1-alpha.1` individually, extends peer ranges, and exports Chinese/English display resources for the root, `/dsh`, and `/super-code` entries to support the new plugin metadata reader. Installation, main/child Agents, memory, restart, and Safari checks passed; native Desktop alpha.1 remains unverified. [Compatibility scope and limitations](Compatibility.md)
|
|
5
13
|
|
package/docs/Compatibility.md
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
# 宿主兼容性 · Host Compatibility
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## 0.3.1 · 2026-10-10
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
支持下限保持 `0.1.5-alpha.1`。截至本次核对,官方 npm 的 `latest`/`next` 指向 `0.2.0-rc.2`,`alpha` 指向 `0.2.1-alpha.2`;官方 macOS arm64 Desktop 更新源指向 `0.2.0-rc.2`。
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
The minimum remains `0.1.5-alpha.1`. On this date, official npm `latest`/`next` points to `0.2.0-rc.2` and `alpha` to `0.2.1-alpha.2`; the official macOS arm64 Desktop update feed points to `0.2.0-rc.2`.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
下表 15 个官方 Harness 版本均真实安装 0.3.1 候选包,使用固定并审计的宿主依赖和隔离 profile。预设检查覆盖缺失安装、确认流程所用的改名/改标识符重装接口、冲突保护、语言同步和重启后读取/重装。主/子 Agent、任务与项目/全局记忆、跨工作区隔离、重启读取及网页执行树、缩放拖动、侧栏详情、记忆库、展开设置、版本展示和确认列表移除/取消均通过。模型由本地确定性测试提供,没有调用外部模型。
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
All 15 official Harness versions below installed the 0.3.1 candidate with pinned, audited host dependencies and isolated profiles. Preset checks covered missing installation, rename/identifier reinstallation, conflicts, language synchronization and restart recovery. Main/child Agents, task/project/global memory, workspace isolation and restart reads passed, along with web tree/zoom/pan, sidebar details, memory library, expanded settings, independent versions, and removable/cancellable confirmation lists. Tests used a local deterministic model without external model calls.
|
|
12
|
+
|
|
13
|
+
| Harness | 预设机制 / Presets | 0.3.1 Web/CLI 与浏览器 / Web/CLI and browser |
|
|
12
14
|
|---|---|---|
|
|
13
15
|
| `0.1.5-alpha.1` | 目录 / Directory | 通过 / Pass |
|
|
16
|
+
| `0.1.5-alpha.2` | 目录 / Directory | 通过 / Pass |
|
|
17
|
+
| `0.1.5-rc.1` | 目录 / Directory | 通过 / Pass |
|
|
18
|
+
| `0.1.5-rc.2` | 目录 / Directory | 通过 / Pass |
|
|
14
19
|
| `0.1.5-rc.3` | 目录 / Directory | 通过 / Pass |
|
|
15
20
|
| `0.1.6-alpha.1` | 目录 / Directory | 通过 / Pass |
|
|
16
21
|
| `0.1.6-alpha.2` | 目录 / Directory | 通过 / Pass |
|
|
@@ -21,6 +26,55 @@ As of 2026-09-30, the Super Code 0.2.0 candidate passed isolated Web/CLI integra
|
|
|
21
26
|
| `0.2.0-rc.1` | 声明式 / Declarative | 通过 / Pass |
|
|
22
27
|
| `0.2.0-rc.2` | 声明式 / Declarative | 通过 / Pass |
|
|
23
28
|
| `0.2.1-alpha.1` | 声明式 / Declarative | 通过 / Pass |
|
|
29
|
+
| `0.2.1-alpha.2` | 声明式 / Declarative | 通过 / Pass |
|
|
30
|
+
|
|
31
|
+
原生 PTC 另在最低版、稳定最新版和预发布最新版(`0.1.5-alpha.1`、`0.2.0-rc.2`、`0.2.1-alpha.2`)验证独立读取并行、写入顺序、权限拒绝与部分失败保留。0.1.7 的两个 alpha 版没有预设文档读取接口,因此归属核验要求唯一、启用的 Loader 声明;其他声明式版本核验实际活跃组合的来源标记。桌面宿主使用自己的安装位置解析管理 API,避免加载第二份宿主模块。
|
|
32
|
+
|
|
33
|
+
Native PTC additionally passed parallel independent reads, ordered writes, permission denial and partial-failure preservation on the minimum, stable latest and prerelease latest versions. The two 0.1.7 alpha hosts lack the document reader, so ownership requires a unique enabled Loader declaration; later hosts verify the marker in the active composition. Desktop management resolves APIs from the running host installation to avoid loading a separate host module.
|
|
34
|
+
|
|
35
|
+
官方 macOS arm64 的 `0.1.7-rc.1`、`0.1.7-rc.2`、`0.2.0-rc.1`、`0.2.0-rc.2` 发行包均在隔离应用副本中启动,验证原生后端的预设安装、改名重装、语言和版本状态。副本保留原始 CFBundleName,仅隔离应用身份、profile 与测试端口。Safari 最新 alpha.2 与官方 Desktop rc.2 的实际界面验收另留截图。DSH NEXT 2.0.17-next(Harness rc.2)也使用隔离副本验收。
|
|
36
|
+
|
|
37
|
+
The official macOS arm64 releases of `0.1.7-rc.1`, `0.1.7-rc.2`, `0.2.0-rc.1` and `0.2.0-rc.2` launched in isolated app copies and passed native-backend preset installation, renamed reinstallation, language and version-state checks. Copies retain the original CFBundleName and isolate application identity, profiles and test ports. Separate screenshots record Safari alpha.2 and official Desktop rc.2 UI checks. DSH NEXT 2.0.17-next (Harness rc.2) uses an isolated copy as well.
|
|
38
|
+
|
|
39
|
+
四版原生后端均验证重启后的归属与版本恢复。官方 Desktop rc.2 和 DSH NEXT 实际点击完成缺失安装、改名/改标识符确认重装,核对设置回填及旧内容恢复备份。官方 Desktop 的中文版本不一致提示通过截图;移除聚焦条目后 Escape 只关闭确认框、保留设置页的修复已复验。英文及未知版本状态有双语单元覆盖,但后续原生截图受桌面控制接口超时限制,未记作通过。
|
|
40
|
+
|
|
41
|
+
All four native backends restored ownership and version state after restart. Actual clicks in official Desktop rc.2 and DSH NEXT completed missing installation and confirmed rename/identifier reinstallation, with form values and recovery backups checked. The official Desktop Chinese mismatch notice was captured, and Escape after removing the focused row now closes only the confirmation while retaining Settings. Unit tests cover English and unknown-version states; subsequent native screenshots were limited by desktop-control timeouts and are not claimed as passed.
|
|
42
|
+
|
|
43
|
+
更早版本及 `0.2.1-alpha.1/alpha.2` 的对应官方 macOS arm64 安装包未从本次核对的下载地址获取(HTTP 404),不能据此宣称这些版本的原生桌面窗口已通过。Web/CLI 验证与原生 Desktop 验证分别记录;其他平台、外部模型和完整用户升级场景仍需单独验收。下面保留历史发布记录。
|
|
44
|
+
|
|
45
|
+
Matching official macOS arm64 installers for earlier versions and `0.2.1-alpha.1/alpha.2` returned HTTP 404 at the checked download URLs; their native desktop windows are not claimed as verified. Web/CLI and native Desktop results are recorded separately. Other platforms, external models and complete user-upgrade scenarios require separate checks. Historical release records follow.
|
|
46
|
+
|
|
47
|
+
## 历史发布验证 · Previous Release Checks
|
|
48
|
+
|
|
49
|
+
Super Code 0.3.0 于 2026-10-09 重新验证了最低支持版 `0.1.5-alpha.1`、`0.2.0-rc.2` 和最新已适配版 `0.2.1-alpha.1`。三版均在隔离 profile 中真实安装发布候选包,通过原生 PTC 独立读取并行、写入顺序、权限拒绝、部分失败保留、主/子 Agent 记忆及重启读取;Playwright 网页回归覆盖执行树、拖动和缩放、侧栏详情、记忆库、记忆使用记录及可折叠设置。使用本地确定性模型,没有调用外部模型服务。
|
|
50
|
+
|
|
51
|
+
On October 9, 2026, Super Code 0.3.0 rechecked the minimum supported host, `0.1.5-alpha.1`, plus `0.2.0-rc.2` and the latest adapted host, `0.2.1-alpha.1`. All three installed the release candidate in isolated profiles and passed native PTC parallel reads, ordered writes, permission denial, partial-failure preservation, main/child Agent memory, and restart reads. Playwright web checks covered the tree, drag and zoom, sidebar details, the memory library, memory activity, and collapsible settings. These checks used a local deterministic model with no external model calls.
|
|
52
|
+
|
|
53
|
+
本次补齐了 PTC 内部记忆调用的使用记录解析;读取摘要、详情、保存和删除仍分别展示,父 Agent 的历史记录不会算成子 Agent 的操作。0.2.1 的语言资源及兼容改动保留,支持下限没有提高;中间版本保留此前验收记录,本次未全部重测。
|
|
54
|
+
|
|
55
|
+
This release adds memory activity for nested PTC calls. Summary reads, detail reads, saves, and removals remain distinct, and parent history is not attributed to a child's actions. The 0.2.1 locale and compatibility updates remain in place, with no increase in the minimum supported version. Intermediate versions retain their earlier verification records and were not all rerun for this release.
|
|
56
|
+
|
|
57
|
+
Super Code 0.2.1 的兼容适配于 2026-10-08 继续验证了 `0.2.0-rc.2` 与 `0.2.1-alpha.1`。官方 npm 发布记录在这个范围内没有其他版本;两版分别使用精确固定的宿主组件和新的隔离 profile。安装、激活、声明式预设、主/子 Agent、任务及项目/全局记忆、跨工作区隔离、重启读取均通过;Safari 中完成执行树、缩放、子 Agent 详情、记忆记录跳转及插件停用后重新启用的检查。alpha.1 另验证中英文切换时打开的 tab 和插件管理文案同步更新。以下更早版本保留此前的验收结果,本轮没有全部重测。
|
|
58
|
+
|
|
59
|
+
The Super Code 0.2.1 adaptation checked `0.2.0-rc.2` and `0.2.1-alpha.1` again on 2026-10-08. The official npm release history contains no other version between them. Each used precisely pinned host components and a fresh isolated profile. Installation, activation, declarative presets, main/child Agents, task and project/global memory, workspace isolation, and restart reads passed. Safari checks covered the execution tree, zoom, child Agent details, memory activity navigation, and disabling/re-enabling the plugin. Alpha.1 also passed Chinese/English switching for open tabs and plugin management text. Earlier rows retain their previous results; they were not all rerun in this batch.
|
|
60
|
+
|
|
61
|
+
截至 2026-09-30,下表中从 `0.1.5-alpha.1` 到 `0.2.0-rc.2` 的十个指定 Harness 版本通过了 Super Code 0.2.0 候选的隔离 Web/CLI 集成冒烟和真实浏览器验收,覆盖记忆库、Agent 详情、筛选和缩放。每个环境固定并审计宿主依赖,使用本地确定性模型,不访问外部模型服务;本轮也使用该验证方式。
|
|
62
|
+
|
|
63
|
+
As of 2026-09-30, the Super Code 0.2.0 candidate passed isolated Web/CLI integration and real browser checks on the ten listed Harness versions from `0.1.5-alpha.1` through `0.2.0-rc.2`, covering the memory library, Agent details, filtering, and zoom controls. Each environment pins and audits host dependencies and uses a local deterministic model, not an external model service. This batch uses the same verification approach.
|
|
64
|
+
|
|
65
|
+
| Harness | 预设机制 / Preset mechanism | 历史冒烟 / Previous smoke | 0.3.0 Web/PTC |
|
|
66
|
+
|---|---|---|---|
|
|
67
|
+
| `0.1.5-alpha.1` | 目录 / Directory | 通过 / Pass | 通过 / Pass |
|
|
68
|
+
| `0.1.5-rc.3` | 目录 / Directory | 通过 / Pass | 未重测 / Not rerun |
|
|
69
|
+
| `0.1.6-alpha.1` | 目录 / Directory | 通过 / Pass | 未重测 / Not rerun |
|
|
70
|
+
| `0.1.6-alpha.2` | 目录 / Directory | 通过 / Pass | 未重测 / Not rerun |
|
|
71
|
+
| `0.1.7-alpha.1` | 声明式 / Declarative | 通过 / Pass | 未重测 / Not rerun |
|
|
72
|
+
| `0.1.7-alpha.2` | 声明式 / Declarative | 通过 / Pass | 未重测 / Not rerun |
|
|
73
|
+
| `0.1.7-rc.1` | 声明式 / Declarative | 通过 / Pass | 未重测 / Not rerun |
|
|
74
|
+
| `0.1.7-rc.2` | 声明式 / Declarative | 通过 / Pass | 未重测 / Not rerun |
|
|
75
|
+
| `0.2.0-rc.1` | 声明式 / Declarative | 通过 / Pass | 未重测 / Not rerun |
|
|
76
|
+
| `0.2.0-rc.2` | 声明式 / Declarative | 通过 / Pass | 通过 / Pass |
|
|
77
|
+
| `0.2.1-alpha.1` | 声明式 / Declarative | 通过 / Pass | 通过 / Pass |
|
|
24
78
|
|
|
25
79
|
## 0.2.1-alpha.1 适配 · Adaptation
|
|
26
80
|
|
|
@@ -43,13 +97,17 @@ The host also splits composer `stats` and removes the runtime `invariant` export
|
|
|
43
97
|
|
|
44
98
|
## 依赖与安装注意事项 · Dependency and Installation Notes
|
|
45
99
|
|
|
100
|
+
对外说明按 Harness `0.1.5-alpha.1`~`0.2.1-alpha.2` 的适配范围写;npm 依赖声明仍需分别列出预发布系列。按 npm 的版本规则,单写 `>=0.1.5-alpha.1 <0.3.0` 会排除 `0.1.6-alpha.1`、`0.2.0-rc.2` 等已支持的 alpha/rc 版本,因此不能直接合并成一个连续范围。
|
|
101
|
+
|
|
102
|
+
User-facing guidance describes adaptations for Harness `0.1.5-alpha.1`–`0.2.1-alpha.2`; npm dependency declarations still list the prerelease series individually. Under npm's version rules, a single `>=0.1.5-alpha.1 <0.3.0` range excludes supported prereleases such as `0.1.6-alpha.1` and `0.2.0-rc.2`, so those declarations cannot be collapsed into one continuous range.
|
|
103
|
+
|
|
46
104
|
预发布依赖的 caret 范围可能解析到其他 alpha/rc 版本。此前默认安装 `0.1.6-alpha.1` 时混入 alpha.2,导致宿主在插件加载前报 `watchUserPatches` 导出缺失;`0.1.7-alpha.1` 也曾解析到 rc.1。验证环境通过精确 overrides 解决混版,但这并未修复上游发布的依赖声明,也不证明未锁定的默认安装总能成功。遇到类似错误时,应先核对实际安装的宿主组件版本。
|
|
47
105
|
|
|
48
106
|
Caret ranges on prerelease dependencies can resolve to other alpha/rc versions. A previous default `0.1.6-alpha.1` installation pulled alpha.2 components and failed on a missing `watchUserPatches` export before loading the plugin; `0.1.7-alpha.1` also pulled rc.1 components. Exact overrides removed this drift in the verification environments, but do not repair upstream dependency declarations or establish that every unpinned default installation works. Check the installed host component versions first when diagnosing such errors.
|
|
49
107
|
|
|
50
|
-
旧宿主在隔离 profile 中需要能够解析宿主包;测试按需补齐了该解析路径,并显式激活插件。各版本使用新的独立 profile
|
|
108
|
+
旧宿主在隔离 profile 中需要能够解析宿主包;测试按需补齐了该解析路径,并显式激活插件。各版本使用新的独立 profile 安装同一候选包,并复用缓存的宿主依赖;这些结果不代表全部版本的冷下载验收。
|
|
51
109
|
|
|
52
|
-
Older hosts need host packages to be resolvable from the isolated profile; the checks prepare that resolution path where needed and explicitly activate the plugin. Each version installs the same candidate package into a fresh profile
|
|
110
|
+
Older hosts need host packages to be resolvable from the isolated profile; the checks prepare that resolution path where needed and explicitly activate the plugin. Each version installs the same candidate package into a fresh profile and reuses cached host dependencies. These results do not cover cold downloads for every version.
|
|
53
111
|
|
|
54
112
|
`zod` 用于运行时输入校验,`js-yaml` 用于旧宿主的预设文件;依赖文件未内嵌到插件 tarball。发布包包含插件、用户文档和截图,不包含本地验证环境、原始日志或内部脚本。
|
|
55
113
|
|
|
@@ -57,9 +115,9 @@ Older hosts need host packages to be resolvable from the isolated profile; the c
|
|
|
57
115
|
|
|
58
116
|
## 官方 Desktop · Official Desktop
|
|
59
117
|
|
|
60
|
-
以下是此前 `0.2.0-rc.2` 的 Desktop
|
|
118
|
+
以下是此前 `0.2.0-rc.2` 的 Desktop 验收记录。0.3.0 本轮使用 Web/CLI 和 Playwright,未重测原生 Desktop;此前 `0.2.1-alpha.1` 的官方 GitHub Release 无 Desktop 附件,官方更新源也未获取到该版 macOS arm64 安装包,因此尚未完成该版原生 Desktop 验收。
|
|
61
119
|
|
|
62
|
-
The following is the previous Desktop verification for `0.2.0-rc.2`.
|
|
120
|
+
The following is the previous Desktop verification for `0.2.0-rc.2`. The 0.3.0 checks use Web/CLI and Playwright; native Desktop was not rerun. The official `0.2.1-alpha.1` GitHub Release had no Desktop assets, and its macOS arm64 installer was not available from the official update source, so native Desktop verification for that version remains outstanding.
|
|
63
121
|
|
|
64
122
|
官方 Desktop `0.2.0-rc.2` 的 macOS arm64 发行包已另行通过原生窗口验收:安装和启用插件、选择 Super Code、主/子 Agent 执行、执行树、缩放、侧栏详情、记忆库、记忆使用记录及可折叠设置。中英文切换时,已打开的 tab 标题和界面文案同步更新,任务标题与记忆正文保留原文;重启后记忆和界面语言可恢复。该验收使用隔离配置和本地确定性模型。
|
|
65
123
|
|
|
@@ -67,9 +125,9 @@ The official Desktop `0.2.0-rc.2` macOS arm64 release also passed checks in its
|
|
|
67
125
|
|
|
68
126
|
## 未覆盖项 · Not Covered
|
|
69
127
|
|
|
70
|
-
其他 Desktop
|
|
128
|
+
其他 Desktop 版本和平台、真实模型服务、完整升级/自定义配置回归、所有工具组合,以及整合发布包的新 SWE-bench 效果评测仍未覆盖。公开成绩采用[冻结候选结果](EvaluationResults.md);依赖声明中的版本范围不是未列版本的验证结论。
|
|
71
129
|
|
|
72
|
-
Other Desktop versions and platforms, live model services, complete upgrade/customization regression, every tool combination, and a new SWE-bench quality evaluation of the integrated
|
|
130
|
+
Other Desktop versions and platforms, live model services, complete upgrade/customization regression, every tool combination, and a new SWE-bench quality evaluation of the integrated release package remain outside this scope. Published scores use the [frozen candidate results](EvaluationResults.md); declared dependency ranges are not verification results for unlisted versions.
|
|
73
131
|
|
|
74
132
|
预设管理差异见[使用指南](UsageGuide.md),版本变更见[更新日志](Changelog.md)。
|
|
75
133
|
|
|
@@ -1,27 +1,31 @@
|
|
|
1
1
|
# SWE-bench Pro hard-100 · 校正结果 / Corrected Results
|
|
2
2
|
|
|
3
|
-
截至 2026-09
|
|
4
|
-
|
|
5
|
-
As of
|
|
6
|
-
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
| 指标 / Metric | 官方 minimal | 0.0.9 | 0.1.2 | 0.2.0 分层记忆 |
|
|
10
|
-
|
|
11
|
-
| 有效评分 / Valid scores | 100 | 100 | 100 | 100 |
|
|
12
|
-
| 通过题数 / Passed | 44 | 48 | 52 | 52 |
|
|
13
|
-
| 平均回答耗时 / Mean minutes | 25.69 | 16.46 | 16.01 | 15.15 |
|
|
14
|
-
| 耗时中位数 / Median minutes | 26.14 | 14.40 | 13.74 | 13.51 |
|
|
15
|
-
| 耗时 P90 / P90 minutes | 43.70 | 28.82 | 29.36 | 24.14 |
|
|
16
|
-
| 模型调用/题 / Model calls per task | 124.85 | 92.78 | 99.78 | 93.83 |
|
|
17
|
-
|
|
|
18
|
-
| 总输入 token/题 / Input tokens per task | 11,477,170 | 9,525,316 | 9,840,383 | 9,202,574 |
|
|
19
|
-
| 缓存输入 token/题 / Cached input per task | 11,404,101 | 9,461,981 | 9,775,799 | 9,142,006 |
|
|
20
|
-
| 非缓存输入 token/题 / Uncached input per task | 73,069 | 63,334 | 64,584 | 60,569 |
|
|
21
|
-
| 输出 token/题 / Output tokens per task | 100,877 | 97,901 | 97,793 | 96,520 |
|
|
22
|
-
| 总 token/题 / Total tokens per task | 11,578,047 | 9,623,217 | 9,938,176 | 9,299,094 |
|
|
23
|
-
| 输入缓存率 / Input cache hit rate | 99.363% | 99.335% | 99.344% | 99.342% |
|
|
24
|
-
| 缺少用量的请求 / Requests without usage | 7 | 8 | 1 | 1 |
|
|
3
|
+
截至 2026-10-09,下面五组都完成了同一批 100 题的官方评分。0.2.0 使用冻结的分层记忆候选,0.3.0 使用冻结的 Batch.3 候选成绩;本页不混入其他实验方案。
|
|
4
|
+
|
|
5
|
+
As of October 9, 2026, all five runs have official scores for the same 100 tasks. Version 0.2.0 refers to the frozen memory-hierarchy candidate; 0.3.0 reports the frozen Batch.3 candidate. Other experiments are not included.
|
|
6
|
+
|
|
7
|
+
## 版本对比 · Version Comparison
|
|
8
|
+
|
|
9
|
+
| 指标 / Metric | 官方 minimal | 0.0.9 | 0.1.2 | 0.2.0 分层记忆 | 0.3.0 Batch.3 |
|
|
10
|
+
|---|---:|---:|---:|---:|---:|
|
|
11
|
+
| 有效评分 / Valid scores | 100 | 100 | 100 | 100 | 100 |
|
|
12
|
+
| 通过题数 / Passed | 44 | 48 | 52 | 52 | 54 |
|
|
13
|
+
| 平均回答耗时 / Mean minutes | 25.69 | 16.46 | 16.01 | 15.15 | 13.46 |
|
|
14
|
+
| 耗时中位数 / Median minutes | 26.14 | 14.40 | 13.74 | 13.51 | 12.20 |
|
|
15
|
+
| 耗时 P90 / P90 minutes | 43.70 | 28.82 | 29.36 | 24.14 | 21.38 |
|
|
16
|
+
| 模型调用/题 / Model calls per task | 124.85 | 92.78 | 99.78 | 93.83 | 69.29 |
|
|
17
|
+
| 顶层工具调用/题 / Top-level tool calls per task | 127.36 | 116.55 | 123.34 | 119.16 | 69.73 |
|
|
18
|
+
| 总输入 token/题 / Input tokens per task | 11,477,170 | 9,525,316 | 9,840,383 | 9,202,574 | 6,290,407 |
|
|
19
|
+
| 缓存输入 token/题 / Cached input per task | 11,404,101 | 9,461,981 | 9,775,799 | 9,142,006 | 6,231,823 |
|
|
20
|
+
| 非缓存输入 token/题 / Uncached input per task | 73,069 | 63,334 | 64,584 | 60,569 | 58,584 |
|
|
21
|
+
| 输出 token/题 / Output tokens per task | 100,877 | 97,901 | 97,793 | 96,520 | 91,562 |
|
|
22
|
+
| 总 token/题 / Total tokens per task | 11,578,047 | 9,623,217 | 9,938,176 | 9,299,094 | 6,381,969 |
|
|
23
|
+
| 输入缓存率 / Input cache hit rate | 99.363% | 99.335% | 99.344% | 99.342% | 99.069% |
|
|
24
|
+
| 缺少用量的请求 / Requests without usage | 7 | 8 | 1 | 1 | 0 |
|
|
25
|
+
|
|
26
|
+
工具次数按宿主 `tool/call` 统计。一次 PTC 调用内部可以执行多个操作,因此这列不能用来比较实际执行了多少次文件读取或命令。
|
|
27
|
+
|
|
28
|
+
Tool counts use host `tool/call` events. One PTC call can execute several operations, so this column does not compare the number of underlying file reads or commands.
|
|
25
29
|
|
|
26
30
|
## 相比官方 minimal · Relative to Official minimal
|
|
27
31
|
|
|
@@ -30,6 +34,11 @@ As of September 30, 2026, all four runs have official scores for the same 100 ta
|
|
|
30
34
|
| 0.0.9 | +4 pp | -35.9% | -16.9% | 7 | 3 |
|
|
31
35
|
| 0.1.2 | +8 pp | -37.7% | -14.2% | 10 | 2 |
|
|
32
36
|
| 0.2.0 | +8 pp | -41.0% | -19.7% | 11 | 3 |
|
|
37
|
+
| 0.3.0 Batch.3 | +10 pp | -47.6% | -44.9% | 13 | 3 |
|
|
38
|
+
|
|
39
|
+
Batch.3 相比 0.2.0 平均耗时减少 11.1%、总 token 减少 31.4%、模型调用减少 26.2%,通过数从 52 增至 54;逐题新通过 8 题、回退 6 题。这是同题单轮结果,2 题的净增不能据此认定为稳定的质量提升。
|
|
40
|
+
|
|
41
|
+
Against 0.2.0, Batch.3 uses 11.1% less time, 31.4% fewer total tokens, and 26.2% fewer model calls. Passes rise from 52 to 54, with eight gains and six regressions. This is one run on the same tasks; a net gain of two does not establish a stable quality improvement.
|
|
33
42
|
|
|
34
43
|
0.2.0 与 0.1.2 都通过 52 题,平均耗时下降 5.4%、总 token 下降 6.4%,但逐题有 6 题改善、6 题回退。相对 minimal,0.2.0 新通过 11 题、回退 3 题(37、396、503),净增 8 题。不能把总体提升写成“原先正确的都没有退化”。
|
|
35
44
|
|
|
@@ -52,6 +61,10 @@ Sixteen grading records had anomalies such as the ConfigFileTest 500 ms timeout
|
|
|
52
61
|
|
|
53
62
|
The [four-version per-task data](../eval/results/swebench-pro-final-100/CorrectedFourVersions.json) contains all 400 scores, call counts, tokens, times, patch/evidence hashes, and individual correction reasons. Historical JSON is unchanged; the corrected summary is the current reporting source. Result files remain in the repository rather than the npm package.
|
|
54
63
|
|
|
64
|
+
[Batch.3 逐题数据](../eval/results/swebench-pro-final-100/Batch3Results.json)另存 100 条成绩、用量、耗时和原始证据及补丁哈希,汇总数字已逐题复算,并核对与上述基线使用同一批任务。Batch.3 的评分异常同样用原补丁复核,不把作废尝试的调用和用量加到最终结果中;这些数据也不进入 npm 包。
|
|
65
|
+
|
|
66
|
+
The separate [Batch.3 per-task data](../eval/results/swebench-pro-final-100/Batch3Results.json) contains 100 scores, usage, timing, and original evidence/patch hashes. Aggregates were recomputed from the rows, and task identities checked against the baselines above. Batch.3 grading anomalies were also rechecked with the original patches; discarded attempts' calls and usage are excluded from final results. These data stay outside the npm package too.
|
|
67
|
+
|
|
55
68
|
## 如何理解 · How to Read These Results
|
|
56
69
|
|
|
57
70
|
- **同题比较:** 固定题集标识为 `swebench-pro-hard-100-ddd22492f1c38839`,使用同一开发测试模型、`high` 推理等级、原生 DSH Web RPC 和官方评分器。这是按既有难度方法选出的历史 100 题,不是官方认定的“最难 100 题”,也不是未接触过的盲测集。
|
|
@@ -62,5 +75,7 @@ The [four-version per-task data](../eval/results/swebench-pro-final-100/Correcte
|
|
|
62
75
|
**Usage:** Recorded calls from each task’s final scored attempt are summed per task, then averaged over 100 tasks. Input includes cache reads; the cache rate is total cached input divided by total input, not the mean per-task rate. Missing usage is not estimated, so tokens do not represent a complete bill or the cost of earlier abandoned attempts.
|
|
63
76
|
- **候选身份:** 0.2.0 表示已评测的分层记忆候选,其实验包内部版本仍为 0.1.3,包 SHA-256 为 `164cc1b505c05288f01b6f12c0756af049dbde8f1a49bdb11f9a320a19c925f5`。新整合的记忆 UI 与兼容改动进行单测及真实宿主回归,未重新运行这 100 次模型任务。
|
|
64
77
|
**Candidate identity:** The evaluated memory-hierarchy candidate is reported as 0.2.0; its experimental package still carried version 0.1.3 and SHA-256 `164cc1b505c05288f01b6f12c0756af049dbde8f1a49bdb11f9a320a19c925f5`. The integrated memory UI and compatibility changes undergo unit and real-host regression checks, not a fresh 100-task model run.
|
|
78
|
+
- **0.3.0 来源:** 本页成绩属于内部版本 `0.3.0-batch.3` 的实际安装候选。整合时按冻结的运行模块逐文件核对,保留主干 0.2.1 的语言资源和兼容改动;发布包做类型、单测、打包及真实宿主回归,没有重新执行这 100 次模型任务。Batch.3 与分层记忆候选的 Harness 提交同为 `649bfcddf0e3532510a38380b9620570d8b13818`,仍不能分离提示词和工具呈现方式各自的作用。
|
|
79
|
+
**0.3.0 source:** These scores belong to the installed candidate carrying internal version `0.3.0-batch.3`. Integration checks the frozen runtime modules individually and retains main's 0.2.1 locale and compatibility updates. The release package undergoes type checks, unit tests, package checks, and real-host regression rather than rerunning those 100 model tasks. Batch.3 and the memory-hierarchy candidate share Harness commit `649bfcddf0e3532510a38380b9620570d8b13818`; their results still do not isolate prompt changes from tool presentation changes.
|
|
65
80
|
- **归因与隐私:** 各轮 Harness 提交不同,记忆工具实际触发也有限,不能把全部差异归因于记忆或单一改动。公开数据仅保留核对所需字段,不包含开发模型路由、凭据、环境变量、本机路径或用户消息原文。
|
|
66
81
|
**Attribution and privacy:** Harness revisions differ, and memory-tool use was limited; these results do not isolate memory or any single change. Public data retains audit fields without development model routes, credentials, environment variables, machine paths, or verbatim user messages.
|