@ckanner/flywheel 0.33.1 → 0.34.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.
- package/CHANGELOG.md +22 -0
- package/README.md +1 -0
- package/README.zh-CN.md +2 -0
- package/THIRD_PARTY_NOTICES.md +5 -1
- package/bin/flywheel-kimi-native-worker.js +5 -0
- package/bin/flywheel.js +8 -1
- package/bin/runtime.js +5 -1
- package/dist/bridge.mjs +89 -7
- package/dist/claude-code-pro-bridge.mjs +55 -6
- package/dist/client.js +40 -5
- package/dist/codex-pro-bridge.mjs +12 -5
- package/dist/control.mjs +1 -1
- package/dist/kimi-native-bridge.mjs +429 -0
- package/dist/kimi-native-runtime.mjs +233 -0
- package/dist/kimi-native-worker.mjs +77 -0
- package/dist/kimi-tower-candidate.mjs +227 -0
- package/dist/machine-worker.mjs +39 -5
- package/dist/managed-lcu.mjs +223 -0
- package/dist/native-doctor.mjs +36 -0
- package/dist/native-jobs.mjs +72 -0
- package/dist/native-policy.mjs +371 -0
- package/dist/native-resources.mjs +144 -0
- package/dist/native.mjs +251 -0
- package/dist/policy.mjs +13 -3
- package/dist/prewarm.mjs +4 -1
- package/dist/protocol.mjs +8 -1
- package/dist/worker.mjs +16 -9
- package/docs/README.md +9 -0
- package/docs/README.zh-CN.md +3 -0
- package/docs/design.md +33 -11
- package/docs/en/claude-code-pro.md +2 -2
- package/docs/en/configuration.md +17 -5
- package/docs/en/contributing.md +5 -3
- package/docs/en/getting-started.md +2 -2
- package/docs/en/model-policy.md +2 -2
- package/docs/en/native-capabilities.md +185 -0
- package/docs/en/releasing.md +2 -2
- package/docs/en/session-recovery.md +2 -2
- package/docs/plans/2026-11-13-native-harness-capabilities.en.md +258 -0
- package/docs/plans/2026-11-13-native-harness-capabilities.md +276 -0
- package/docs/plans/README.md +1 -0
- package/docs/validation/2026-11-14-desktop-native-configuration.md +128 -0
- package/docs/validation/2026-11-14-native-harness-implementation.md +215 -0
- package/docs/validation/2026-11-14-published-companions.md +15 -0
- package/docs/validation/2026-11-14-release-0.33.1.md +78 -0
- package/docs/validation/README.md +3 -0
- package/docs/validation/evidence/2026-11-14-native-harness-candidate.json +255 -0
- package/docs/validation/evidence/2026-11-14-native-harness-sessions.json +6009 -0
- package/docs/validation/evidence/2026-11-14-native-harness-tower-candidate.json +192 -0
- package/docs/zh-CN/claude-code-pro.md +2 -2
- package/docs/zh-CN/configuration.md +21 -8
- package/docs/zh-CN/contributing.md +5 -3
- package/docs/zh-CN/getting-started.md +2 -2
- package/docs/zh-CN/model-policy.md +2 -2
- package/docs/zh-CN/native-capabilities.md +184 -0
- package/docs/zh-CN/releasing.md +2 -2
- package/docs/zh-CN/session-recovery.md +1 -1
- package/native/darwin-amd64/flywheel +0 -0
- package/native/darwin-arm64/flywheel +0 -0
- package/native/linux-amd64/flywheel +0 -0
- package/native/linux-arm64/flywheel +0 -0
- package/native/manifest.json +9 -9
- package/node_modules/dsh-preset-generator/CHANGELOG.md +77 -0
- package/node_modules/dsh-preset-generator/LICENSE +21 -0
- package/node_modules/dsh-preset-generator/README.md +149 -0
- package/node_modules/dsh-preset-generator/docs/README.zh.md +95 -0
- package/node_modules/dsh-preset-generator/package.json +43 -0
- package/node_modules/dsh-preset-generator/src/composition.mjs +150 -0
- package/node_modules/dsh-preset-generator/src/gen-presets.mjs +367 -0
- package/node_modules/dsh-preset-generator/src/policy.mjs +17 -0
- package/node_modules/dsh-subagent-codex-pro/CHANGELOG.md +16 -1
- package/node_modules/dsh-subagent-codex-pro/README.md +57 -4
- package/node_modules/dsh-subagent-codex-pro/assets/native-client.js +118 -0
- package/node_modules/dsh-subagent-codex-pro/cordis.patch.yml +6 -0
- package/node_modules/dsh-subagent-codex-pro/docs/README.zh.md +49 -2
- package/node_modules/dsh-subagent-codex-pro/docs/machine-lifecycle-validation.md +1 -1
- package/node_modules/dsh-subagent-codex-pro/docs/machine-lifecycle.md +1 -1
- package/node_modules/dsh-subagent-codex-pro/docs/machine-lifecycle.zh.md +1 -1
- package/node_modules/dsh-subagent-codex-pro/docs/machine.md +2 -2
- package/node_modules/dsh-subagent-codex-pro/docs/native-capabilities.md +254 -0
- package/node_modules/dsh-subagent-codex-pro/docs/native-capabilities.zh.md +180 -0
- package/node_modules/dsh-subagent-codex-pro/lib/config.js +56 -0
- package/node_modules/dsh-subagent-codex-pro/lib/config.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/desktop-native.js +109 -0
- package/node_modules/dsh-subagent-codex-pro/lib/desktop-native.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/dsh-types.js +3 -4
- package/node_modules/dsh-subagent-codex-pro/lib/dsh-types.js.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/index.js +64 -15
- package/node_modules/dsh-subagent-codex-pro/lib/index.js.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/jobs.js +6 -2
- package/node_modules/dsh-subagent-codex-pro/lib/jobs.js.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/machine-cli.js +2 -2
- package/node_modules/dsh-subagent-codex-pro/lib/machine-cli.js.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/machine-local.js +5 -2
- package/node_modules/dsh-subagent-codex-pro/lib/machine-local.js.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/machine-supervision.js +11 -0
- package/node_modules/dsh-subagent-codex-pro/lib/machine-supervision.js.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/machine-supervisor.js +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/machine-supervisor.js.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/machine.js +20 -3
- package/node_modules/dsh-subagent-codex-pro/lib/machine.js.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/native.js +297 -0
- package/node_modules/dsh-subagent-codex-pro/lib/native.js.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/process-guardian.js +11 -1
- package/node_modules/dsh-subagent-codex-pro/lib/process-guardian.js.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/run.js +19 -1
- package/node_modules/dsh-subagent-codex-pro/lib/run.js.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/tool.js +123 -57
- package/node_modules/dsh-subagent-codex-pro/lib/tool.js.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/types/config.d.ts +31 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/config.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/desktop-native.d.ts +30 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/desktop-native.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/dsh-types.d.ts +7 -5
- package/node_modules/dsh-subagent-codex-pro/lib/types/dsh-types.d.ts.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/types/index.d.ts +31 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/index.d.ts.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/types/jobs.d.ts +2 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/jobs.d.ts.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/types/machine-local.d.ts.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/types/machine-supervision.d.ts.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/types/machine.d.ts +7 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/machine.d.ts.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/types/native.d.ts +120 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/native.d.ts.map +1 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/run.d.ts +11 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/run.d.ts.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/types/tool.d.ts +11 -0
- package/node_modules/dsh-subagent-codex-pro/lib/types/tool.d.ts.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/types/wire.d.ts +7 -1
- package/node_modules/dsh-subagent-codex-pro/lib/types/wire.d.ts.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/lib/wire.js +34 -6
- package/node_modules/dsh-subagent-codex-pro/lib/wire.js.map +1 -1
- package/node_modules/dsh-subagent-codex-pro/package.json +28 -4
- package/npm/install.js +2 -2
- package/package.json +25 -10
- package/plugins/dsh/KIMI_NATIVE_PROTOCOL.en.md +76 -0
- package/plugins/dsh/KIMI_NATIVE_PROTOCOL.md +76 -0
- package/plugins/dsh/PROTOCOL.md +149 -17
- package/plugins/dsh/README.md +15 -12
- package/plugins/dsh/README.zh-CN.md +8 -8
- package/plugins/dsh/THIRD_PARTY_NOTICES.md +5 -1
- package/plugins/dsh/vendor/README.md +40 -11
- package/plugins/dsh/vendor/chatgpt.json +21 -0
- package/plugins/dsh/vendor/claude-code-pro.json +21 -0
- package/plugins/dsh/vendor/codex-pro.json +13 -8
- package/plugins/dsh/vendor/lcu.json +21 -0
- package/plugins/dsh/vendor/preset-generator.json +16 -0
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
{
|
|
2
|
+
"candidate": {
|
|
3
|
+
"format_version": 2,
|
|
4
|
+
"version": "0.34.0",
|
|
5
|
+
"source": {
|
|
6
|
+
"commit": "1512b4b690a8d2b01edc70994ba4404b92659d79",
|
|
7
|
+
"tree": "1083a22b5177797fcde323480bda733b9042e06f",
|
|
8
|
+
"dirty": false,
|
|
9
|
+
"snapshot_sha256": "cd4d50eba9c2abe5c04d80d7059b3daf692127e5afcd51dd61c0b5a48d6bfc54"
|
|
10
|
+
},
|
|
11
|
+
"packages": [
|
|
12
|
+
{
|
|
13
|
+
"name": "@ckanner/flywheel",
|
|
14
|
+
"version": "0.34.0",
|
|
15
|
+
"filename": "ckanner-flywheel-0.34.0.tgz",
|
|
16
|
+
"bytes": 18873136,
|
|
17
|
+
"integrity": "sha512-1058P0psSstNlkzycB9HEeeCa/xmoGT4Th37/KTkApnmInUDUXnKIxECaWgWLQfp6NawoAoca8sJC7N1DVDH/g=="
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"sha256": "41f3db0ed3d5e50fc0b0825f8278d49b1d4653732f7f0f4758a7bf3b074e1ee8",
|
|
22
|
+
"native": {
|
|
23
|
+
"protocol": 1,
|
|
24
|
+
"version": "0.34.0",
|
|
25
|
+
"platforms": {
|
|
26
|
+
"darwin-arm64": {
|
|
27
|
+
"bytes": 10385074,
|
|
28
|
+
"sha256": "ef7f4bab41bcc599647580a955212b5c0eedb39ace0845c9d39965dba1e92698"
|
|
29
|
+
},
|
|
30
|
+
"darwin-amd64": {
|
|
31
|
+
"bytes": 11320736,
|
|
32
|
+
"sha256": "53f218a5d9209b7397cd1d184dbbf4401db6b88b0b40f7670b86e7eea0877aeb"
|
|
33
|
+
},
|
|
34
|
+
"linux-arm64": {
|
|
35
|
+
"bytes": 10158240,
|
|
36
|
+
"sha256": "312ccc6461ebfd0dc767b024cbb1e4a05b4d6ac8915c60d471a2952823ee0343"
|
|
37
|
+
},
|
|
38
|
+
"linux-amd64": {
|
|
39
|
+
"bytes": 11096224,
|
|
40
|
+
"sha256": "3c898627cff6a1ad703d883083e04388fea7df97d7b3d90bfaa1e7208af7eabd"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"kimiLauncherMode": "0o755",
|
|
45
|
+
"equivalentRemoteSource": {
|
|
46
|
+
"repository": "ckanner/flywheel",
|
|
47
|
+
"commit": "be4351fbb9fb54b450f3963b5065026434c592b0",
|
|
48
|
+
"tree": "1083a22b5177797fcde323480bda733b9042e06f"
|
|
49
|
+
},
|
|
50
|
+
"packedTowerModule": {
|
|
51
|
+
"path": "package/dist/kimi-tower-candidate.mjs",
|
|
52
|
+
"sha256": "985704d3ac5d3fdb7641ba4b63ffbf6c91ea3ecd17e0c192b881ec2ac26773a4",
|
|
53
|
+
"declaredSourceReceiptPresent": true
|
|
54
|
+
},
|
|
55
|
+
"recordVersion": 1,
|
|
56
|
+
"observedDate": "2026-11-14",
|
|
57
|
+
"reason": "Tower directory-alias and prompt-boundary runtime correction after macOS CI exposed noncanonical helper fixtures",
|
|
58
|
+
"previousCandidate": "2026-11-14-native-harness-candidate.json",
|
|
59
|
+
"companionPackages": "unchanged exact versions, source commits, trees and tarballs in previousCandidate.companionPackages",
|
|
60
|
+
"checks": {
|
|
61
|
+
"kimiTowerFocused": {
|
|
62
|
+
"passed": 22,
|
|
63
|
+
"failed": 0,
|
|
64
|
+
"skipped": 0,
|
|
65
|
+
"milliseconds": 27270.454965
|
|
66
|
+
},
|
|
67
|
+
"nodeMain": {
|
|
68
|
+
"passed": 395,
|
|
69
|
+
"failed": 0,
|
|
70
|
+
"skipped": 0,
|
|
71
|
+
"milliseconds": 165670.774883
|
|
72
|
+
},
|
|
73
|
+
"nodeLegacyHost": {
|
|
74
|
+
"passed": 10,
|
|
75
|
+
"failed": 0,
|
|
76
|
+
"skipped": 0,
|
|
77
|
+
"milliseconds": 2009.826984
|
|
78
|
+
},
|
|
79
|
+
"kimiGoNodeBridge": {
|
|
80
|
+
"result": "pass",
|
|
81
|
+
"seconds": 2.048
|
|
82
|
+
},
|
|
83
|
+
"packedHost": {
|
|
84
|
+
"passed": 10,
|
|
85
|
+
"failed": 0,
|
|
86
|
+
"skipped": 0,
|
|
87
|
+
"milliseconds": 4512.678864
|
|
88
|
+
},
|
|
89
|
+
"installedCandidate": {
|
|
90
|
+
"passed": 15,
|
|
91
|
+
"failed": 0,
|
|
92
|
+
"skipped": 0,
|
|
93
|
+
"milliseconds": 46653.651485,
|
|
94
|
+
"optionalClaudeTarballTested": true
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"limits": {
|
|
98
|
+
"registryPublished": false,
|
|
99
|
+
"targetMacAcceptance": false,
|
|
100
|
+
"liveModelInference": false,
|
|
101
|
+
"dshMasterImageRuntimeTested": false
|
|
102
|
+
},
|
|
103
|
+
"finalCI": "The final PR head includes subsequent evidence and test-fixture changes, with no further runtime changes; PR #44 checks and body record its separately built exact-head candidate and Linux/macOS results.",
|
|
104
|
+
"ciThirdRun": {
|
|
105
|
+
"runId": 43585747595,
|
|
106
|
+
"head": "f4ac488fa58f267f619adbee6a07eba2621cee92",
|
|
107
|
+
"artifactId": 14109977482,
|
|
108
|
+
"archiveSHA256": "00cb9a51c85e46f7d771753ef2b4775c2a6d5f5c7d6db7fc2c14ea235af33def",
|
|
109
|
+
"candidate": {
|
|
110
|
+
"format_version": 2,
|
|
111
|
+
"version": "0.34.0",
|
|
112
|
+
"source": {
|
|
113
|
+
"commit": "1e6cb302eddfd950d67ea32f24719999cb690b67",
|
|
114
|
+
"tree": "a84f754fae398cd5f4fdb6c8ccc8df99ee645ae3",
|
|
115
|
+
"dirty": false,
|
|
116
|
+
"snapshot_sha256": "ee8de5ef55e2c2d615715362ef17aa882a1e80dbe7dfd90bdbe2a7d2b31d06c2"
|
|
117
|
+
},
|
|
118
|
+
"packages": [
|
|
119
|
+
{
|
|
120
|
+
"name": "@ckanner/flywheel",
|
|
121
|
+
"version": "0.34.0",
|
|
122
|
+
"filename": "ckanner-flywheel-0.34.0.tgz",
|
|
123
|
+
"bytes": 18899640,
|
|
124
|
+
"integrity": "sha512-QJSntAISp7l5WOOb+5yMnufeB8nw72rb+nbJntJi4ZJL6Yll4cuyTk1xHlql3cMIsypRIwhKJmlL8FvpsrEBHQ=="
|
|
125
|
+
}
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
"tarballSHA256": "c1d5cabd85ce4d4a82c1cd2dfd69ff63c4577c3964682bb2f1c94469d527b345",
|
|
129
|
+
"result": "failure",
|
|
130
|
+
"npmCandidate": "success",
|
|
131
|
+
"linux": "success",
|
|
132
|
+
"macOS": {
|
|
133
|
+
"goQualityGate": "success",
|
|
134
|
+
"perFunctionStatementCoverage": 100,
|
|
135
|
+
"nodeMain": {
|
|
136
|
+
"passed": 395,
|
|
137
|
+
"failed": 0,
|
|
138
|
+
"skipped": 0
|
|
139
|
+
},
|
|
140
|
+
"nodeLegacyHost": {
|
|
141
|
+
"passed": 10,
|
|
142
|
+
"failed": 0,
|
|
143
|
+
"skipped": 0
|
|
144
|
+
},
|
|
145
|
+
"nodeBridges": {
|
|
146
|
+
"result": "failure",
|
|
147
|
+
"failedNativeCases": [
|
|
148
|
+
"ClaudeCodePro native child receipt",
|
|
149
|
+
"CodexPro native capability scope"
|
|
150
|
+
],
|
|
151
|
+
"dsh": "pass",
|
|
152
|
+
"kimi": "pass",
|
|
153
|
+
"cause": "Two new Go test fixtures derived protocol 3 recovery journals from logical temporary-directory aliases instead of physical parents"
|
|
154
|
+
},
|
|
155
|
+
"laterNpmAndInstallGates": "not-run"
|
|
156
|
+
},
|
|
157
|
+
"fixtureCorrection": {
|
|
158
|
+
"linuxAliasedTMPDIRReproduced": true,
|
|
159
|
+
"productionCodeChanged": false,
|
|
160
|
+
"journalOwnershipGuardChanged": false,
|
|
161
|
+
"usageAndChildAssertionsPreserved": true,
|
|
162
|
+
"aliasedNativeCases": {
|
|
163
|
+
"before": {
|
|
164
|
+
"result": "failure",
|
|
165
|
+
"cases": 2,
|
|
166
|
+
"seconds": 0.204
|
|
167
|
+
},
|
|
168
|
+
"after": {
|
|
169
|
+
"result": "pass",
|
|
170
|
+
"cases": 2,
|
|
171
|
+
"seconds": 0.69
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
"aliasedAllFourBridges": {
|
|
175
|
+
"result": "pass",
|
|
176
|
+
"backends": [
|
|
177
|
+
"DSH",
|
|
178
|
+
"CodexPro",
|
|
179
|
+
"ClaudeCodePro",
|
|
180
|
+
"KimiNative"
|
|
181
|
+
],
|
|
182
|
+
"seconds": 44.975
|
|
183
|
+
},
|
|
184
|
+
"localGoQualityGate": {
|
|
185
|
+
"result": "pass",
|
|
186
|
+
"perFunctionStatementCoverage": 100,
|
|
187
|
+
"log": "native-quality-pro-fixture-fix.log"
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
"finalExactHeadResult": "recorded in PR #44 checks and body; this historical run remains a failure"
|
|
191
|
+
}
|
|
192
|
+
}
|
|
@@ -7,7 +7,7 @@ Flywheel 通过 `harness: "claude-code-pro"` 调用
|
|
|
7
7
|
的公开 machine API。插件运行用户已安装的 Claude Code CLI,使用该 CLI 的原生工具
|
|
8
8
|
循环与登录环境。Go 仍负责阶段调度、角色会话、验证、预算和交付。
|
|
9
9
|
|
|
10
|
-
适配器要求 **`dsh-subagent-claude-code-pro@0.
|
|
10
|
+
适配器要求 **`dsh-subagent-claude-code-pro@0.5.0`**、machine protocol 1
|
|
11
11
|
及其公开 lifecycle/recovery 接口。旧桌面工具接口和旧 machine 契约不能替代这些
|
|
12
12
|
接口。默认阶段和路由均未选择 Claude。源码兼容性与包可用性需要分别核对;
|
|
13
13
|
发行流程见[发布指南](releasing.md)。
|
|
@@ -19,7 +19,7 @@ Flywheel 通过 `harness: "claude-code-pro"` 调用
|
|
|
19
19
|
|
|
20
20
|
Flywheel 包含 `flywheel-claude-code-pro-worker`,把 Claude 插件作为精确版本的
|
|
21
21
|
**optional peer**。没有选择这个后端时无需安装插件,也不会启动 Claude。选择后必须
|
|
22
|
-
让 worker 的 Node 依赖解析能找到 `dsh-subagent-claude-code-pro@0.
|
|
22
|
+
让 worker 的 Node 依赖解析能找到 `dsh-subagent-claude-code-pro@0.5.0`。仅在 DSH
|
|
23
23
|
desktop profile 安装插件,不保证独立 worker 能访问该目录。
|
|
24
24
|
|
|
25
25
|
registry 已有该精确版本时,将它装到 Flywheel 所在的同一全局 npm prefix 或同一项目依赖树。
|
|
@@ -62,6 +62,15 @@ DSH 桌面在登录后且没有任何 provider API key 时,可以自动选择
|
|
|
62
62
|
|
|
63
63
|
需要继续用 API Key 的自定义配置仍受支持:在完整配置的相关绑定及其 channel 中一致选择 `deepseek-official`,按 DSH API provider 的正常方式配置凭证。不要仅改 channel 名却保留冲突的显式 provider;也不必为账号路径额外添加 API key。
|
|
64
64
|
|
|
65
|
+
## 原生能力配置
|
|
66
|
+
|
|
67
|
+
`native-profiles` 定义版本化 harness options,绑定使用 `native-profile` 引用。
|
|
68
|
+
模型 profiles、loops、routes、judge-panel 和 execution-policy 的允许绑定均支持,
|
|
69
|
+
引用必须与实际 harness 匹配。省略可继承模型 profile,显式空字符串关闭继承。
|
|
70
|
+
静态能力不依赖 JEV 开关;工作台按当前 harness 选择配置,高级 JSON 编辑定义。
|
|
71
|
+
实际 options 进入历史及冻结策略身份,准入、用量和清理仍取决于运行回执。
|
|
72
|
+
完整示例、LCU、Tower 和独立 Review/Team 入口见[原生能力](native-capabilities.md)。
|
|
73
|
+
|
|
65
74
|
## 从完整模板开始
|
|
66
75
|
|
|
67
76
|
查看默认内联表或可复用 profiles 表:
|
|
@@ -298,8 +307,9 @@ null、错拼字段和不完整对象在模型启动前拒绝。字段信源为
|
|
|
298
307
|
|
|
299
308
|
`sessions.mode` 控制历史复用,不关闭调用安全记录。Codex Pro、Claude Code Pro、DSH 和 Kimi 的主任务
|
|
300
309
|
Plan/Execute/Review/Judge 调用在两种模式下都先记录调用意图,再保存可信终态回执。
|
|
301
|
-
`fresh`
|
|
302
|
-
`resident-session`
|
|
310
|
+
`fresh` 不复用通用的角色历史,保持后端原有的新调用方式;仅未配置 `native-profile` 的
|
|
311
|
+
旧 Kimi CLI 路径保留 Plan `resident-session` 行为。原生 Agent/Swarm 历史使用 scoped
|
|
312
|
+
角色账本,Tower 始终 fresh;`scoped` 在身份兼容且终态满足条件时延续同角色历史。
|
|
303
313
|
其他适配器及 mock 仍使用原有调用路径;Intake/Garden 不在该角色会话策略内。
|
|
304
314
|
|
|
305
315
|
| 角色 | 历史作用域与责任 |
|
|
@@ -314,8 +324,11 @@ Quick 的正常首次成功路径仍只有 Execute 和最终 Review 两次阶段
|
|
|
314
324
|
会话选择、恢复、重建和计量;技能、模型与桌面控制面不扫描后端历史来猜测会话。
|
|
315
325
|
|
|
316
326
|
Plan 显式 `resident-session:false` 在 scoped 下仍关闭该角色的历史复用;省略该字段
|
|
317
|
-
|
|
318
|
-
|
|
327
|
+
不等于明确关闭。未选择 `native-profile` 时,`resident-session:true` 保留旧 Kimi CLI
|
|
328
|
+
Plan 行为。原生 Agent/Swarm 在全局 `fresh` 下将这个显式 resident 意图映射为 scoped
|
|
329
|
+
角色账本;显式 `sessions.roles.plan:"fresh"` 仍优先关闭复用。旧 CLI Session 不会导入,
|
|
330
|
+
Tower 始终 fresh。该选项不启用跨 harness 历史复用;Codex Pro 仍拒绝它,为 Codex Pro
|
|
331
|
+
选择 scoped 应使用 `sessions`。
|
|
319
332
|
|
|
320
333
|
复用身份包含实际任务/工作目录、角色/作用域、harness、provider、channel、model、
|
|
321
334
|
thinking、权限及后端运行配置引用。home/profile、worker 和命令引用取实际子进程所用
|
|
@@ -344,7 +357,7 @@ thinking、权限及后端运行配置引用。home/profile、worker 和命令
|
|
|
344
357
|
派发、结果或清理有任何一项未知时,原调用阻止继续执行;换成 fresh、改变适配器或
|
|
345
358
|
重启不能绕过。子进程退出只解决进程事实,不证明模型结果已知。`resume-candidate`
|
|
346
359
|
只是允许适配器尝试正常续接,不是历史已持久化或任意崩溃后都可恢复的证明。
|
|
347
|
-
Codex Pro 0.
|
|
360
|
+
Codex Pro 0.10.0 与 Claude Code Pro 0.5.0 的主任务调用使用外层 worker v3,
|
|
348
361
|
接通公开 typed lifecycle、等待 Go 持久化后返回的 ACK,以及不发送新 turn 的只读
|
|
349
362
|
recovery。Codex 可以在配置核对后的 `thread-ready` 阻止新 turn;Claude 原生 init
|
|
350
363
|
发生在 prompt 已派发之后,不能提供同等的派发前配置证明。两个后端都保留未知窗口,
|
|
@@ -551,10 +564,10 @@ Quick 复用现有 Execute 与 Review 绑定,不自动改变 thinking、账户
|
|
|
551
564
|
```
|
|
552
565
|
|
|
553
566
|
完整 profiles 模板使用 `profiles.codex-pro`,hard 路由引用它。插件精确消费
|
|
554
|
-
`dsh-subagent-codex-pro@0.
|
|
567
|
+
`dsh-subagent-codex-pro@0.10.0` 的公开 `dsh-subagent-codex-pro/machine` API。
|
|
555
568
|
精确依赖由插件 package 和 lockfile 锁定;生命周期开发时使用的源码包见
|
|
556
569
|
[vendor 来源记录](https://github.com/ckanner/flywheel/blob/main/plugins/dsh/vendor/README.md)。内部仍使用 Codex app-server 和用户已有登录,不需要父模型二次委派;缺包、
|
|
557
|
-
版本或回执不符会失败,不自动回退 `codex exec`。Claude 另为精确 `0.
|
|
570
|
+
版本或回执不符会失败,不自动回退 `codex exec`。Claude 另为精确 `0.5.0` optional peer,
|
|
558
571
|
未选择该后端时无需安装。
|
|
559
572
|
|
|
560
573
|
已有配置不自动改写。要从旧路径迁移,在 `config inspect` 显示的有效文件中修改 inline harness 或其 profile,保留所选 model/thinking/channel,然后重启引擎。保留 `harness: "codex"` 则明确继续使用旧 CLI。`codex-pro` 必须提供 model 和 channel,不沿用旧 Codex driver 的隐式模型;`resident-session: true` 会在加载时拒绝。thinking 省略时为 high。
|
|
@@ -645,7 +658,7 @@ doctor 不接收运行时的 `--mode` 覆盖,只反映 Spec/已保存状态
|
|
|
645
658
|
|
|
646
659
|
DSH 的 `ready.reasoningEffort` 是 SDK 接受配置之后的 worker 回显,不是模型服务独立证明的实际推理强度。没有模型请求的检查不能证明更高档位提高质量;GPT、Kimi 和 Flash 也不共用同一套档位枚举,详见[推理等级说明](model-policy.md)。
|
|
647
660
|
|
|
648
|
-
Codex Pro 本地检查额外实际导入公开 machine API,核对精确 0.
|
|
661
|
+
Codex Pro 本地检查额外实际导入公开 machine API,核对精确 0.10.0/协议 1、typed
|
|
649
662
|
lifecycle/recovery 导出、Node >=22.18.0 与 Codex 命令版本;同一 worker 只查一次。
|
|
650
663
|
绑定的 `durableJournal`、`readOnlyRecovery`、`threadReadyBeforeDispatch` 表示锁定
|
|
651
664
|
适配器的静态能力;Claude 最后一项为 false。`historyRecoveryTested` 保持 false。
|
|
@@ -70,12 +70,14 @@ Worktree 隔离 checkout 文件和 index,不是安全沙箱。串行执行保
|
|
|
70
70
|
make quality-gate
|
|
71
71
|
npm --prefix plugins/dsh ci --ignore-scripts
|
|
72
72
|
npm --prefix plugins/dsh run check
|
|
73
|
-
FLYWHEEL_TEST_NODE_BRIDGE=1 go test ./internal/drivers -run '^Test(DSH|CodexPro|ClaudeCodePro)NodeWorkerOfflineBridge$' -count=1
|
|
73
|
+
FLYWHEEL_TEST_NODE_BRIDGE=1 go test ./internal/drivers -run '^Test(DSH|CodexPro|ClaudeCodePro|KimiNative)NodeWorkerOfflineBridge$' -count=1
|
|
74
74
|
npm test
|
|
75
75
|
npm run build:npm
|
|
76
76
|
FLYWHEEL_NPM_PACKAGES_DIR=dist-npm npm run test:install
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
+
`make test` 与 `make coverage` 使用有限的 15 分钟 Go 包级测试预算(`FLYWHEEL_TEST_TIMEOUT`)。machine 包包含数百个真实 Git 与持久化状态场景,macOS 需要这份累计预算;生产 watchdog、单项测试保护和每函数 100% 覆盖率门禁保持原有要求。
|
|
80
|
+
|
|
79
81
|
| 改动 | 必需验证 |
|
|
80
82
|
|---|---|
|
|
81
83
|
| Go 引擎 | `make quality-gate`:vet、格式、测试和覆盖率 |
|
|
@@ -83,9 +85,9 @@ FLYWHEEL_NPM_PACKAGES_DIR=dist-npm npm run test:install
|
|
|
83
85
|
| npm 安装或发行 | 根 npm 测试、单包候选构建、安装同一个 tarball |
|
|
84
86
|
| 文档 | 链接、锚点、代码围栏、可运行示例、翻译一致性,以及受影响的内嵌/包内容 |
|
|
85
87
|
|
|
86
|
-
Claude 桥接要求 worker 的依赖树中存在精确 0.
|
|
88
|
+
Claude 桥接要求 worker 的依赖树中存在精确 0.5.0 optional machine API;因未安装 peer
|
|
87
89
|
而跳过不能算该后端通过。使用源码候选时保留已审查 source/tarball 身份。Codex Pro 的
|
|
88
|
-
0.
|
|
90
|
+
0.10.0 bundled 源码包同样由实际 integrity 与 [vendor 记录](https://github.com/ckanner/flywheel/blob/main/plugins/dsh/vendor/README.md)
|
|
89
91
|
固定。
|
|
90
92
|
|
|
91
93
|
生命周期、状态或进程改动还应复现 Linux CI 的 race 检查:
|
|
@@ -46,7 +46,7 @@ Full 需要所配置的 Plan/Execute/Review/Judge 后端;合格 Quick
|
|
|
46
46
|
运行前提。
|
|
47
47
|
|
|
48
48
|
Claude 为可选后端。选择 `claude-code-pro` 时,还需在 worker 能解析的依赖树中安装
|
|
49
|
-
匹配的 0.
|
|
49
|
+
匹配的 0.5.0 配套包,并准备已登录的 Claude CLI,详见[Claude Code Pro](claude-code-pro.md)。
|
|
50
50
|
|
|
51
51
|
## 2. 安装
|
|
52
52
|
|
|
@@ -124,7 +124,7 @@ dsh plugin --profile sdk add dsh-plugin-chatgpt@0.1.17
|
|
|
124
124
|
这是兼容基线,不代表当前最新版本。按该 adapter 的正常授权流程操作,保持 `DSH_HOME`
|
|
125
125
|
一致,不把凭证放进任务文件或 Git。
|
|
126
126
|
|
|
127
|
-
hard 路由直接导入精确锁定的 Codex Pro 0.
|
|
127
|
+
hard 路由直接导入精确锁定的 Codex Pro 0.10.0 公开 machine API,需要本机 Codex 程序
|
|
128
128
|
与登录,不需要父模型通过 `subagent_codex_pro` 工具二次委派。可选 Claude 有独立的
|
|
129
129
|
依赖与登录。
|
|
130
130
|
|
|
@@ -49,7 +49,7 @@ ChatGPT 与 Kimi 订阅同样需要相应适配器或 CLI,以及其支持的
|
|
|
49
49
|
|
|
50
50
|
| 已核对的集成 | 可请求的值 | 说明 |
|
|
51
51
|
|---|---|---|
|
|
52
|
-
| GPT-6.1 Sol/Codex Pro 0.
|
|
52
|
+
| GPT-6.1 Sol/Codex Pro 0.10.0 | `low`、`medium`、`high`、`xhigh`、`max` | machine API 传递指定 effort |
|
|
53
53
|
| Sol、Astra/DSH ChatGPT provider | `low`、`medium`、`high`、`xhigh`、`max` | provider 序列化为 `reasoning.effort` |
|
|
54
54
|
| Kimi K3.1 Pro/原生 CLI | `low`、`high`、`max` | 不能关闭 thinking;兼容别名 `xhigh`、`max`、`ultra` 都映射到原生 `max` |
|
|
55
55
|
| DeepSeek Flash/已核对的 DSH adapter | `off`、`low`、`high`、`max` | 此适配器拒绝 `medium` 和 `xhigh` |
|
|
@@ -124,5 +124,5 @@ DSH `initialize` 校验配置,但回复只包含 server 信息。Flywheel 的
|
|
|
124
124
|
`ready.reasoningEffort` 是初始化成功后的请求回显,不是模型服务独立证明。
|
|
125
125
|
Codex Pro 区分 `requestedEffort`、`accepted` 和未知的 `effectiveEffort:null`。
|
|
126
126
|
依据见 [DSH SDK server](https://github.com/deepseek-ai/deepseek-harness/blob/b830ec950faba0a46dda564be3e2d854afed94f1/packages/sdk/server/src/server.ts)
|
|
127
|
-
与 [Codex Pro machine 协议](https://github.com/ckanner/dsh-subagent-codex-pro/blob/
|
|
127
|
+
与 [Codex Pro machine 协议](https://github.com/ckanner/dsh-subagent-codex-pro/blob/9c7d724cb19dc29457a56f4a4269c24278595d2f/docs/machine.md)。
|
|
128
128
|
无推理 doctor 不能证明账号余额、真实调用或更高档位的收益。
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# 使用原生 Agent、Team、Swarm 与 LCU
|
|
2
|
+
|
|
3
|
+
[文档](../README.zh-CN.md) · 简体中文 · [English](../en/native-capabilities.md) · [完整设计](../plans/2026-11-13-native-harness-capabilities.md)
|
|
4
|
+
|
|
5
|
+
Flywheel 0.34.0 的实现候选可以在正式 loop 中调用各 harness 的原生协作能力。先定义 `native-profiles`,再把某个 profile 绑定到需要它的阶段。静态配置无需开启 JEV;模型、账号 channel、权限和角色历史仍由原有绑定决定。
|
|
6
|
+
|
|
7
|
+
本页描述源码候选。配套包身份见 [vendor 记录](https://github.com/ckanner/flywheel/blob/main/plugins/dsh/vendor/README.md),不能仅凭这里的版本号假设 npm 已发布或本机已经安装。
|
|
8
|
+
|
|
9
|
+
## 1. 选择实际后端
|
|
10
|
+
|
|
11
|
+
| harness | loop 内能力 | 依赖与权限 |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
| `dsh` | PTC、子 Agent、Team、Workflow、显式 Web、LCU | 本机 DSH;实际 PTC probe;LCU 另需 0.5.0 peer 和 full-access |
|
|
14
|
+
| `kimi` | Server Agent / Swarm / Tower | 已登录 Kimi;当前 Server API;显式 full-access |
|
|
15
|
+
| `codex-pro` | 原生 agents 与子线程 | 内置 Codex Pro 0.10.0;已登录 Codex CLI;实际 sandbox/approval 回执 |
|
|
16
|
+
| `claude-code-pro` | Agent 定义、Workflow、Advisor | 可选 Claude Code Pro 0.5.0;已登录 Claude CLI;显式 full-access |
|
|
17
|
+
|
|
18
|
+
在 DSH 中选择 ChatGPT 模型仍然使用 DSH 的工具循环,不自动获得 Codex 的 app-server 能力。桌面的 `heavy` Agent Preset 也不自动成为独立 SDK worker 的组合;worker 使用与生成器共享策略的 PTC overlay,并验证实际运行结果。
|
|
19
|
+
|
|
20
|
+
### 对齐独立 worker 的依赖
|
|
21
|
+
|
|
22
|
+
桌面、全局 CLI worker 和选中的 SDK profile 是不同的 Node 解析树。只更新桌面不会更新其他位置。先从受管安装记录(`~/.config/flywheel/installation.json`)确认 Flywheel 的实际 prefix;需要可选 Claude 或 LCU 后端时,将精确 peer 安装到同一 prefix:
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
npm install --global --prefix /absolute/flywheel-node-prefix --ignore-scripts dsh-subagent-claude-code-pro@0.5.0 dsh-plugin-lcu@0.5.0
|
|
26
|
+
dsh plugin --profile sdk add --save-exact --ignore-scripts dsh-plugin-chatgpt@0.1.20
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
自定义了 `FLYWHEEL_DSH_PROFILE` 时,将 `sdk` 换成实际名称,并继续与 `desktop` 分离。这些命令只对齐软件依赖,不更改模型凭据、权限或原生 profile 开关。之后运行 `flywheel doctor --json`;可导入不等于已验证真实原生准入或模型视觉。
|
|
30
|
+
|
|
31
|
+
### DSH 桌面插件的默认配置与 PTC 调用
|
|
32
|
+
|
|
33
|
+
Codex Pro 和 Claude Code Pro 自身提供原生能力配置页。打开插件管理器中对应插件的配置,设置 `native` 默认值;DSH 的 PTC 工具 `subagent_codex` 和 `subagent_claude_code` 会在每次调用开始时读取这些设置。已经启动的调用保留自己的配置快照,后续保存不会改变它的执行参数。
|
|
34
|
+
|
|
35
|
+
| 普通工具的 `native` 参数 | 实际含义 |
|
|
36
|
+
| --- | --- |
|
|
37
|
+
| 省略 | 读取插件当前默认值;插件也未配置时,沿用 CLI 原有行为 |
|
|
38
|
+
| 对象 | 以这个完整对象替换该次调用的 native 默认值;不与默认值逐字段合并 |
|
|
39
|
+
| `null` | 明确关闭该次普通调用的原生协作能力,不退回 CLI 的隐式启用状态 |
|
|
40
|
+
|
|
41
|
+
Codex 的设置包括 Agent 启用状态、并发子线程数、子 Agent 默认模型和 effort,以及可选 V2 backend。Claude 的设置包括 Agent 定义、并发与深度、Workflow 和 Advisor;启用 Advisor 时必须指定其模型。工具也支持相应的逐次覆盖。原生能力设置遵守现有权限和模型选择策略。
|
|
42
|
+
|
|
43
|
+
这里的 `native` 指 Codex/Claude 内部的能力,DSH 仍然可以用 PTC 编排这些工具。独立原生 Review 和真正的交互 Team 使用专门入口;保存普通 Agent 默认值不会启动这些任务。
|
|
44
|
+
|
|
45
|
+
这些桌面默认值只属于桌面插件。Flywheel 的直接 `codex-pro` / `claude-code-pro` worker 使用所选 `native-profile` 的确定快照,不读取另一份 DSH profile 的动态设置;独立 `/machine` 入口也不会为此加载桌面 UI 或 DSH 服务。正常重生成 daily/heavy preset 会保留单独保存的插件配置。
|
|
46
|
+
|
|
47
|
+
## 2. 定义与绑定
|
|
48
|
+
|
|
49
|
+
先运行 `flywheel config inspect --cwd /absolute/repo --json` 找到真正命中的完整配置。Flywheel 按任务→项目→全局→默认选择一个完整文件,文件之间不做字段合并。
|
|
50
|
+
|
|
51
|
+
把下面**片段**合入完整文件;需要的定义可单独选用:
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"native-profiles": {
|
|
56
|
+
"heavy-team": {
|
|
57
|
+
"harness": "dsh",
|
|
58
|
+
"options": {
|
|
59
|
+
"version": 1, "preset": "heavy",
|
|
60
|
+
"agents": {"enabled": true, "maxConcurrent": 4, "maxDepth": 2},
|
|
61
|
+
"team": {"enabled": true},
|
|
62
|
+
"workflows": {"enabled": true},
|
|
63
|
+
"web": {"search": true, "fetch": true}
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"swarm": {
|
|
67
|
+
"harness": "kimi",
|
|
68
|
+
"options": {"version": 1, "mode": "swarm", "agents": {"enabled": true}}
|
|
69
|
+
},
|
|
70
|
+
"tower": {
|
|
71
|
+
"harness": "kimi",
|
|
72
|
+
"options": {"version": 1, "mode": "tower", "agents": {"enabled": true}}
|
|
73
|
+
},
|
|
74
|
+
"codex-team": {
|
|
75
|
+
"harness": "codex-pro",
|
|
76
|
+
"options": {"version": 1, "agents": {"enabled": true, "maxConcurrentThreads": 4, "backend": "v2"}}
|
|
77
|
+
},
|
|
78
|
+
"claude-flow": {
|
|
79
|
+
"harness": "claude-code-pro",
|
|
80
|
+
"options": {"version": 1, "agents": {"enabled": true}, "workflows": {"enabled": true}, "advisor": {"enabled": true, "model": "opus"}}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
在当前阶段绑定上加入 `native-profile`,保留它原来的其他字段。例如默认 Execute 仍然是 DeepSeek account + DSH:
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"routes": {
|
|
91
|
+
"default": {
|
|
92
|
+
"harness": "dsh", "provider": "deepseek-account",
|
|
93
|
+
"channel": "deepseek-account-sdk", "model": "deepseek-flash", "thinking": "high",
|
|
94
|
+
"native-profile": "heavy-team"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
模型 `profiles`、`loops`、`routes`、`judge-panel` 和 `execution-policy.bindings` 都可引用。引用必须与实际 harness 匹配。绑定省略字段可继承模型 profile;显式 `"native-profile":""` 关闭继承。`native-profiles` 的 options 改变后,原有不兼容角色历史不会继续复用。
|
|
101
|
+
|
|
102
|
+
桌面工作台的“模型与会话”增加“原生能力”选择器,只列当前 harness 的配置;在高级 JSON 中编辑定义。保存仍需要当前文件 revision,配置从下次启动生效。选择 profile 只是配置意图,实际准入仍以运行回执为准。
|
|
103
|
+
|
|
104
|
+
## 3. 用在不同阶段
|
|
105
|
+
|
|
106
|
+
Plan 可以让 Team/Swarm 并行调查,root 最后输出正式 Spec 和 packets。Execute 可以使用原生 Agent、Workflow 或 Tower,结果仍要通过原有验证和独立 Review。Review 和 Judge 使用自己的角色历史与子任务,永远不继承 Executor 的历史。Intake/Garden 可以使用同样能力生成建议,不能据此修改状态文件。
|
|
107
|
+
|
|
108
|
+
开启 native profile 不新增第二个循环控制器:Go 继续决定是否重试、预算是否允许、哪个 candidate 被验收以及何时交付。原生 task board 的完成状态不是 Flywheel completed。
|
|
109
|
+
|
|
110
|
+
## 4. LCU 与截图
|
|
111
|
+
|
|
112
|
+
给 DSH profile 增加以下 options 字段,并为对应角色明确选择 full-access:
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"lcu": {
|
|
117
|
+
"enabled": true,
|
|
118
|
+
"config": {"chrome": true, "audio": false}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
`config` 还支持实际 runtime 的 `app`、`command`、`allowedApps`、`allowedOrigins`。应使用本机真实 app/runtime 和已授权目标。LCU peer 必须能从 SDK worker 的实际 Node 依赖树解析;只在另一份桌面 profile 中安装不等于独立 worker 已可导入。
|
|
124
|
+
|
|
125
|
+
worker 先取得整台桌面的受管 lease;root 和后代的 GUI 操作顺序执行。PTC 工具名为 `lcu_cua`,程序对象仍为 `cua`。对象 handle 只属于当前 runtime epoch,重启后需重新取得。未确认清理的 lease 不被其他调用自动接管;先核对原 owner 的终态与实际 runtime,不能仅删除锁来假装完成。
|
|
126
|
+
|
|
127
|
+
图片和 manifest 保存在 `<taskDir>/reports/native/<invocationId>/`。归档 hash 对应实际 DSH AttachmentStore 的最终字节,capture hash 单独保留。图片存在不等于模型已经收到;`imageDeliveredToModel` 可以为 `unverified`。ChatGPT provider 0.1.20 修复真实图片到模型请求的投影,但尚未在用户账号上完成实机视觉验收。
|
|
128
|
+
|
|
129
|
+
公开 Pro machine API 可以显式接收媒体与结构化输出设置;正式 Go loop 不会自动把所有归档图片注入下一轮,也不会把外部 JSON schema 或 native review 文本当作自己的验收 verdict。
|
|
130
|
+
|
|
131
|
+
## 5. Kimi Tower 的候选工作目录
|
|
132
|
+
|
|
133
|
+
Tower 在独立 Git 副本中运行,包括当前 dirty/untracked/binary/symlink/mode/deletion 状态。它不是 OS 沙箱;当前权限为完全访问。worker 对提示词中的精确执行目录做有边界映射,并记录摘要。
|
|
134
|
+
|
|
135
|
+
仅 Execute 在完成与清理都确认后才尝试导回。导回前再次核对源 HEAD、文件内容与模式、外部 task 契约,并进行 binary patch check。源目录或 Spec/packet 有并发变化时保留 candidate 并返回冲突;其他角色只保留产物。导回仍要经过正常验证、Review 和 Git 交付。
|
|
136
|
+
|
|
137
|
+
native Kimi 不读取或写回旧 `plan-session` 缓存。Agent/Swarm 使用角色账本;
|
|
138
|
+
显式旧 `resident-session:true` 可保留续接意图,但 `sessions.roles.plan:"fresh"`
|
|
139
|
+
明确优先。Tower 始终 fresh,不续接旧 Session。Kimi Server 模式缺乏已证明的整树 `agents.maxConcurrent` 硬上限,因此不要为这些模式填写这个字段;明确请求时会在派发前被拒绝。完整协议见 [Kimi native](https://github.com/ckanner/flywheel/blob/main/plugins/dsh/KIMI_NATIVE_PROTOCOL.md)。
|
|
140
|
+
|
|
141
|
+
## 6. 独立原生 Review 与交互 Team
|
|
142
|
+
|
|
143
|
+
这些操作有单独的原生任务回执,不直接进入正式 loop 的 verdict:
|
|
144
|
+
|
|
145
|
+
```sh
|
|
146
|
+
flywheel native codex-review --request /absolute/codex-review.json
|
|
147
|
+
flywheel native claude-review --request /absolute/claude-review.json
|
|
148
|
+
flywheel native claude-team --request /absolute/claude-team.json
|
|
149
|
+
flywheel native claude-recover --request /absolute/recovery.json
|
|
150
|
+
flywheel native claude-control --request /absolute/control.json
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
请求是对应公开包 API 加私有绝对 `recoveryDirectory`;输入必须是 regular JSON 文件,最多 1 MiB。Codex 的最小示例:
|
|
154
|
+
|
|
155
|
+
```json
|
|
156
|
+
{
|
|
157
|
+
"protocol": 1, "requestId": "review-001", "cwd": "/absolute/repo",
|
|
158
|
+
"model": "gpt-6.1-sol", "effort": "high",
|
|
159
|
+
"prompt": "Review the selected changes.", "permissionMode": "read-only", "threadMode": "ephemeral",
|
|
160
|
+
"native": {"version": 1, "review": {"target": {"type": "uncommittedChanges"}}},
|
|
161
|
+
"recoveryDirectory": "/absolute/private/native-review-001"
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
远端 Claude Review 的请求需 `protocol:1`、唯一 requestId、绝对 cwd、`consent:true` 和 recoveryDirectory。它运行 `ultrareview --json --no-post`;本地超时不会证明远端 job 已结束。使用原 requestId、runId 和 recoveryDirectory 只读原本地 journal,取回已持久化的回执;不查询云端状态,也不重新提交 Review。
|
|
166
|
+
|
|
167
|
+
交互 Team 请求使用公开 `runInteractiveTeam` 的 prompt 和 permissionMode;tmux 必须可用。`claude-control` 支持 capture/send/resize/cancel/attach,使用 receipt 中的原 requestId/runId 和同一 recoveryDirectory。完整字段见 [Claude native API](https://github.com/ckanner/dsh-subagent-claude-code-pro/blob/d14ff8d8334fefd039c3d48ee2a969747d1e88c8/docs/native-capabilities.md)。
|
|
168
|
+
|
|
169
|
+
Claude `recoverNativeJob` 只读本地 durable journal,不启动进程或向云端查询。当前回执明确 `jobId:null`、`querySupported:false`、`cancelSupported:false`。本地恢复 status 为 terminal 也不等于 remote 完成:若远端 state 仍为 unknown 或 native.cleanup.confirmed 为 false,不能自动重放或声称云任务已取消。
|
|
170
|
+
|
|
171
|
+
## 7. 查看真实可用性与失败
|
|
172
|
+
|
|
173
|
+
```sh
|
|
174
|
+
flywheel doctor --cwd /absolute/repo --json
|
|
175
|
+
flywheel doctor --cwd /absolute/repo --probe --json
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
native doctor 检查本地 worker、精确 public manifest 与 capability 版本,不发模型、启动 Team、创建云 job 或操作 GUI。DSH native profile 不拿 legacy SDK probe 冒充 native 准入;其实际 PTC、模型与目标能力要在正式 worker admission 时证明。`native.admission` 保持 unknown,`inferenceTested:false` 和 `admissionTested:false` 不等于失败的登录尝试。
|
|
179
|
+
|
|
180
|
+
`native-receipt` 保存请求、实际配置、观察、children、usage、completion 与 cleanup。Pro 的 native-event 不是 durable lifecycle ACK。root 返回时仍有活跃子任务,不会因随后关进程而变成完成。清理不明、receipt 损坏或恢复不确定会继续阻断。
|
|
181
|
+
|
|
182
|
+
预算和并发也保持真实语义:Flywheel scheduler 限根调用;Claude 的 requested limits 是 observed guard,`hard:false`;Kimi 没有该整树硬上限。外部子 Agent、Advisor、compaction 或 Tower 消耗无法精确归属时 total 保留 unknown。hard budget 不把 unknown 当成零。详细测试与尚未实机验证的范围见[验证记录](../validation/2026-11-14-native-harness-implementation.md)。
|
|
183
|
+
|
|
184
|
+
桌面插件配置、PTC 参数类型和本轮真实包验证见[桌面配置跟进记录](../validation/2026-11-14-desktop-native-configuration.md)。
|
package/docs/zh-CN/releasing.md
CHANGED
|
@@ -20,8 +20,8 @@ worker 包。`plugins/dsh` 是 **private 源码/构建/测试区**,不是
|
|
|
20
20
|
旧四个平台包及 `@ckanner/dsh-plugin-flywheel` 保留为历史版本;新流程不上传它们的
|
|
21
21
|
新版本,也不撤销其已发布字节。
|
|
22
22
|
|
|
23
|
-
Codex Pro 0.
|
|
24
|
-
根目录与源码构建区锁文件都保持原 tarball integrity。Claude Code Pro 0.
|
|
23
|
+
Codex Pro 0.10.0 继续内置[已核对的正式发行包](https://github.com/ckanner/flywheel/blob/main/plugins/dsh/vendor/README.md),
|
|
24
|
+
根目录与源码构建区锁文件都保持原 tarball integrity。Claude Code Pro 0.5.0 是外部
|
|
25
25
|
可选 peer。Provider CLI 和账号凭据不在包内。普通 npm 安装只放置文件,`install`/
|
|
26
26
|
`setup` 才执行用户设置,禁止在 postinstall 隐藏 profile 或凭据修改。
|
|
27
27
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[文档目录](../README.zh-CN.md) · [English](../en/session-recovery.md) · 简体中文
|
|
4
4
|
|
|
5
5
|
Flywheel 分别处理角色对话历史续用和中断调用恢复。fresh 与 scoped 都保留调用安全
|
|
6
|
-
检查。公开 journal 的持久化恢复要求 **Codex Pro 0.
|
|
6
|
+
检查。公开 journal 的持久化恢复要求 **Codex Pro 0.10.0** 或 **Claude Code Pro 0.5.0**;
|
|
7
7
|
DSH 与 Kimi 继续使用各自支持的恢复路径。
|
|
8
8
|
|
|
9
9
|
## 恢复已有任务
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/native/manifest.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"protocol": 1,
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.34.0",
|
|
4
4
|
"platforms": {
|
|
5
5
|
"darwin-arm64": {
|
|
6
|
-
"bytes":
|
|
7
|
-
"sha256": "
|
|
6
|
+
"bytes": 10402066,
|
|
7
|
+
"sha256": "9bd8edc0c6f187c1f7d1e9ef108ad931d5dc0a2ec369d6f5ca8a4cc845ef0e07"
|
|
8
8
|
},
|
|
9
9
|
"darwin-amd64": {
|
|
10
|
-
"bytes":
|
|
11
|
-
"sha256": "
|
|
10
|
+
"bytes": 11333504,
|
|
11
|
+
"sha256": "4b383a1f5bc6bcbaac84be424b3cd5d4bdc78abbff6cd47562275abce1ab2ab8"
|
|
12
12
|
},
|
|
13
13
|
"linux-arm64": {
|
|
14
|
-
"bytes":
|
|
15
|
-
"sha256": "
|
|
14
|
+
"bytes": 10223776,
|
|
15
|
+
"sha256": "c6643be2090ed15454b7e3d936a09284b131c8de449935d5976cdaffdf7257bd"
|
|
16
16
|
},
|
|
17
17
|
"linux-amd64": {
|
|
18
|
-
"bytes":
|
|
19
|
-
"sha256": "
|
|
18
|
+
"bytes": 11112608,
|
|
19
|
+
"sha256": "1bb2aedb76d4eeccf2ac807172cb976fa231ba0ca331153809ec1bf994a1b3c0"
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
}
|