@ckanner/flywheel 0.31.0 → 0.31.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/CHANGELOG.md +48 -5
- package/CONTRIBUTING.md +19 -0
- package/LICENSE +21 -0
- package/README.en.md +4 -171
- package/README.md +152 -269
- package/README.zh-CN.md +116 -0
- package/bin/flywheel-claude-code-pro-worker.js +1 -1
- package/bin/flywheel-codex-pro-worker.js +1 -1
- package/bin/flywheel-dsh-worker.js +1 -1
- package/bin/flywheel.js +1 -1
- package/bin/runtime.js +1 -1
- package/docs/README.md +84 -0
- package/docs/README.zh-CN.md +64 -0
- package/docs/archive/README.md +13 -0
- package/docs/archive/codex-pro-adapter-handoff.md +197 -0
- package/docs/archive/design-v0.24.md +540 -0
- package/docs/design.md +681 -0
- package/docs/en/claude-code-pro.md +25 -16
- package/docs/en/configuration.md +306 -141
- package/docs/en/contributing.md +303 -0
- package/docs/en/flow-console.md +67 -13
- package/docs/en/getting-started.md +232 -126
- package/docs/en/investigation.md +219 -0
- package/docs/en/jev-shadow.md +67 -0
- package/docs/en/model-policy.md +147 -62
- package/docs/en/releasing.md +207 -0
- package/docs/en/session-evaluation.md +4 -2
- package/docs/en/session-recovery.md +49 -6
- package/docs/en/workflow.md +222 -114
- package/docs/evaluation/README.md +12 -0
- package/docs/evaluation/jev-historical-provisional.json +138 -0
- package/docs/evaluation/jev-historical-result-2026-11-10.json +174 -0
- package/docs/plans/2026-11-01-dsh-integration.md +67 -0
- package/docs/plans/2026-11-01-model-profiles-preflight.md +29 -0
- package/docs/plans/2026-11-01-npm-installation.md +19 -0
- package/docs/plans/2026-11-03-codex-pro-default.md +28 -0
- package/docs/plans/2026-11-06-adaptive-workflow.md +365 -0
- package/docs/plans/2026-11-07-session-lifecycle.en.md +424 -0
- package/docs/plans/2026-11-07-session-lifecycle.md +337 -0
- package/docs/plans/2026-11-08-flow-console.md +271 -0
- package/docs/plans/2026-11-10-jev-shadow.md +32 -0
- package/docs/plans/2026-11-10-task-discovery.md +17 -0
- package/docs/plans/2026-11-10-workbench-redesign.md +19 -0
- package/docs/plans/2026-11-12-feedback-driven-workflows.md +739 -0
- package/docs/plans/README.md +22 -0
- package/docs/reviews/2026-08-24-v0.18-review-fixplan.md +265 -0
- package/docs/reviews/2026-09-12-pr4-pr5-review.md +70 -0
- package/docs/reviews/README.md +12 -0
- package/docs/validation/2026-11-01-npm-installation.md +105 -0
- package/docs/validation/2026-11-01-profiles-preflight.md +67 -0
- package/docs/validation/2026-11-01-results.md +114 -0
- package/docs/validation/2026-11-03-codex-pro-default.md +90 -0
- package/docs/validation/2026-11-04-dsh-native-view.md +85 -0
- package/docs/validation/2026-11-04-release-0.28.1.md +33 -0
- package/docs/validation/2026-11-04-release-0.28.2.md +35 -0
- package/docs/validation/2026-11-05-dsh-0.2.2-compatibility.md +26 -0
- package/docs/validation/2026-11-05-registry-smoke-recovery.md +26 -0
- package/docs/validation/2026-11-05-release-0.28.3.md +32 -0
- package/docs/validation/2026-11-05-subscription-model-access.md +60 -0
- package/docs/validation/2026-11-05-view-order.md +14 -0
- package/docs/validation/2026-11-07-adaptive-workflow.md +79 -0
- package/docs/validation/2026-11-07-claude-code-pro.md +144 -0
- package/docs/validation/2026-11-07-session-lifecycle.md +136 -0
- package/docs/validation/2026-11-08-session-p3-p4.md +99 -0
- package/docs/validation/2026-11-09-flow-console.md +81 -0
- package/docs/validation/2026-11-10-jev-shadow.md +50 -0
- package/docs/validation/2026-11-10-task-discovery.md +45 -0
- package/docs/validation/2026-11-10-workbench-redesign.md +54 -0
- package/docs/validation/2026-11-11-release-0.30.2.md +65 -0
- package/docs/validation/2026-11-11-release-0.31.0.md +46 -0
- package/docs/validation/2026-11-12-dsh-0.2.2-rc.2.md +58 -0
- package/docs/validation/2026-11-12-feedback-driven-workflows.md +187 -0
- package/docs/validation/README.md +41 -0
- package/docs/validation/evidence/2026-11-08-session-p3-p4.json +5430 -0
- package/docs/validation/evidence/claude-node-bridges.txt +118 -0
- package/docs/validation/evidence/claude-npm-build.txt +15 -0
- package/docs/validation/evidence/claude-npm-candidate.json +54 -0
- package/docs/validation/evidence/claude-npm-install.txt +21 -0
- package/docs/validation/evidence/claude-npm-tests.txt +145 -0
- package/docs/validation/evidence/claude-plugin-tests.txt +205 -0
- package/docs/validation/evidence/claude-quality-gate.txt +29 -0
- package/docs/validation/evidence/claude-race.txt +7 -0
- package/docs/validation/evidence/codex-pro-070-probes.txt +4 -0
- package/docs/validation/evidence/dsh-bridge.txt +4 -0
- package/docs/validation/evidence/dsh-native-view-bridge-tests.txt +1 -0
- package/docs/validation/evidence/dsh-native-view-build.txt +15 -0
- package/docs/validation/evidence/dsh-native-view-candidate.json +54 -0
- package/docs/validation/evidence/dsh-native-view-inspect.txt +27 -0
- package/docs/validation/evidence/dsh-native-view-install-tests.txt +19 -0
- package/docs/validation/evidence/dsh-native-view-npm-tests.txt +143 -0
- package/docs/validation/evidence/dsh-native-view-plugin-tests.txt +99 -0
- package/docs/validation/evidence/dsh-native-view-quality-gate.txt +29 -0
- package/docs/validation/evidence/dsh-plugin-tests.txt +48 -0
- package/docs/validation/evidence/function-coverage.txt +378 -0
- package/docs/validation/evidence/npm-build.txt +13 -0
- package/docs/validation/evidence/npm-contract-tests.txt +65 -0
- package/docs/validation/evidence/npm-dsh-bridge.txt +18 -0
- package/docs/validation/evidence/npm-dsh-plugin-tests.txt +62 -0
- package/docs/validation/evidence/npm-function-coverage.txt +420 -0
- package/docs/validation/evidence/npm-install-tests.txt +20 -0
- package/docs/validation/evidence/npm-quality-gate.txt +29 -0
- package/docs/validation/evidence/npm-race.txt +7 -0
- package/docs/validation/evidence/pr-dsh-bridge.txt +4 -0
- package/docs/validation/evidence/pr-dsh-plugin-tests.txt +48 -0
- package/docs/validation/evidence/pr-function-coverage.txt +379 -0
- package/docs/validation/evidence/pr-quality-gate.txt +28 -0
- package/docs/validation/evidence/pr-race.txt +6 -0
- package/docs/validation/evidence/profiles-control-smoke.json +1 -0
- package/docs/validation/evidence/profiles-dsh-bridge.txt +18 -0
- package/docs/validation/evidence/profiles-dsh-plugin-tests.txt +59 -0
- package/docs/validation/evidence/profiles-function-coverage.txt +411 -0
- package/docs/validation/evidence/profiles-quality-gate.txt +29 -0
- package/docs/validation/evidence/profiles-race.txt +7 -0
- package/docs/validation/evidence/quality-gate.txt +28 -0
- package/docs/validation/evidence/race.txt +6 -0
- package/docs/validation/evidence/watchdog-startup-after.txt +2 -0
- package/docs/validation/evidence/watchdog-startup-before.txt +6 -0
- package/docs/validation/evidence/watchdog-startup-quality-gate.txt +29 -0
- package/docs/validation/evidence/watchdog-startup-race.txt +7 -0
- package/docs/{claude-code-pro.md → zh-CN/claude-code-pro.md} +23 -17
- package/docs/{configuration.md → zh-CN/configuration.md} +323 -139
- package/docs/zh-CN/contributing.md +240 -0
- package/docs/{flow-console.md → zh-CN/flow-console.md} +55 -12
- package/docs/zh-CN/getting-started.md +352 -0
- package/docs/zh-CN/investigation.md +182 -0
- package/docs/zh-CN/jev-shadow.md +79 -0
- package/docs/zh-CN/model-policy.md +123 -0
- package/docs/zh-CN/releasing.md +120 -0
- package/docs/{session-evaluation.md → zh-CN/session-evaluation.md} +4 -2
- package/docs/{session-recovery.md → zh-CN/session-recovery.md} +46 -12
- package/docs/zh-CN/workflow.md +270 -0
- package/npm/install.js +1 -1
- package/package.json +12 -25
- package/docs/getting-started.md +0 -418
- package/docs/model-policy.md +0 -65
- package/docs/workflow.md +0 -314
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# DSH 集成与可靠执行:验证记录
|
|
2
|
+
|
|
3
|
+
日期:2026-11-01。基线:`ckanner/flywheel@0a464473f590e6717a88d7ea885290df7339c7a3`。本地分支:`work/flywheel-dsh-reliability`。
|
|
4
|
+
|
|
5
|
+
**本记录是首次完整离线验收的快照。** 当时尚未提交或发布;随后用户已明确授权提交、PR、自审、CI 和合并。远端结果以对应 PR 与 Actions 记录为准,不能由本地验收代替。上述 SHA 是开发基线,不是包含全部修改的新提交;PR 合并也不等于 npm 发行。
|
|
6
|
+
|
|
7
|
+
后续具名 profiles、provider/channel 分离、诊断 CLI 与面板的验证见[配置与预检记录](2026-11-01-profiles-preflight.md)。本文关于 profiles 后置的描述仅保留首次快照的当时范围。
|
|
8
|
+
|
|
9
|
+
最终方案见 [设计](../design.md),工作范围及 F01–F09 完成情况见 [实施计划](../plans/2026-11-01-dsh-integration.md),安装与首个任务见 [入门教程](../zh-CN/getting-started.md),接口速查见 [项目 README](../../README.md)。
|
|
10
|
+
|
|
11
|
+
## 1. 验证环境与结果
|
|
12
|
+
|
|
13
|
+
环境是 Linux amd64,Go `1.27.3`,Node.js `24.22.1`。没有调用付费模型,也没有修改用户的 Mac、账号或外部插件仓库。
|
|
14
|
+
|
|
15
|
+
| 检查 | 结果 | 证据 |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| `make quality-gate` | PASS:vet、gofmt、全部包测试与逐函数覆盖门禁 | [完整输出](evidence/quality-gate.txt) |
|
|
18
|
+
| Go 覆盖率 | **377 个函数逐一 100%;5,472 个插桩 statement,未覆盖 0** | [逐函数输出](evidence/function-coverage.txt) |
|
|
19
|
+
| 核心六包 `go test -race` | PASS:machine、verify、watchdog、drivers、cli、modules | [输出](evidence/race.txt) |
|
|
20
|
+
| DSH `npm run check` | PASS:构建成功,**24 项 Node 测试全部通过** | [输出](evidence/dsh-plugin-tests.txt) |
|
|
21
|
+
| Go → Node worker → fake DSH SDK | PASS:真实进程与 JSONL / JSON-RPC 边界 | [输出](evidence/dsh-bridge.txt) |
|
|
22
|
+
| Go control → 实际引擎 → fake Kimi → stop | PASS:nonce、lease、取消与状态收尾;纳入 CLI 完整门禁 | `internal/cli/control_test.go` |
|
|
23
|
+
| Linux amd64 原生构建 | PASS;实际执行 `version`、`control --help`、导出内嵌配置 | 开发版标识 `dev-dsh-0a46447` |
|
|
24
|
+
| Darwin arm64 / amd64 交叉编译 | PASS;产物分别确认为 Mach-O arm64 / x86_64 | 本轮交付包 |
|
|
25
|
+
| 编译后二进制的配置 | PASS:Plan=Kimi、default=DSH Flash、hard=Codex、Review=DSH;DeepSeek 只有 Flash | `flywheel template flywheel.config.example.json` |
|
|
26
|
+
| 文档本地链接、Markdown 围栏、`git diff --check` | PASS | 本轮检查 |
|
|
27
|
+
|
|
28
|
+
覆盖率仍使用项目原有门禁:排除 `cmd/flywheel` 的单行启动桩;没有 statement 的 build/嵌入数据包不计为缺口。这是 Go statement coverage,不是 branch coverage,也不表示所有语义、平台、模型或现实使用场景都已覆盖。Node 插件有独立的行为测试,本记录不将 Go 的 100% 数字套用给 JavaScript。
|
|
29
|
+
|
|
30
|
+
本地受限执行环境会阻止 Node 测试所需的子进程操作;已在允许本地进程生命周期测试的执行环境中重新运行并取得上述 24 项完整结果。测试仍然使用本地协议桩,没有转为真实模型调用。
|
|
31
|
+
|
|
32
|
+
## 2. 本轮实际验证的行为
|
|
33
|
+
|
|
34
|
+
### 持久化和恢复
|
|
35
|
+
|
|
36
|
+
- 失败的 commit hook、index-only 篡改、工作区与 index 同时被 hook 修改、账本 hook 修改源码或报告,都不能推进 completed。
|
|
37
|
+
- 单元代码提交、快进合并、主账本提交及任务最终完成前都有持久化检查。非 Git 目录不能产生完成交付。
|
|
38
|
+
- 非账本 candidate 的 assume-unchanged、skip-worktree、有效 clean/process filter 与 working-tree-encoding 被明确拒绝,不自动修改用户 Git 设置。
|
|
39
|
+
- 合并或提交失败保留实现 WIP、分支和报告;已确认交付后的单纯清理失败保留 worktree 引用及 `cleanup-error`。
|
|
40
|
+
- 报告先在候选工作区生成,再校验并归档。历史 tracked 报告恢复到调用前 HEAD 的内容与模式;仅原来未跟踪的临时报告删除。
|
|
41
|
+
- 旧候选、done-report、契约或检查配置被修改后不能复用旧绿灯;失效证据保存在历史中。
|
|
42
|
+
- 从任务子目录启动会规范化为 Git 根;手动重执行已完成单元会重新打开里程碑,并能继续完成与安全清理。
|
|
43
|
+
|
|
44
|
+
### 契约与验证
|
|
45
|
+
|
|
46
|
+
- planner 已自行提交、本轮没有新提交 SHA 时仍同步保留工作区;修改相邻 packet 也同步整份契约目录,保留未提交实现。
|
|
47
|
+
- planner 越权修改代码、目录外 oracle 或运行配置时拒绝自动提交并保留文件。提交 hook 导致契约漂移也拒绝继续。
|
|
48
|
+
- 跨重启重新核对契约指纹。旧版本没有指纹的 completed 状态保守重验;合法后续单元的普通源码变化不被误当成旧单元的契约修订。
|
|
49
|
+
- 新 packet 或修订会重开相关里程碑,调度器动态回访;同一 run 的同一里程碑最多访问三次,避免反复重开导致无限调用。
|
|
50
|
+
- L1、L2/L3 与独立 Review/Judge 都检查前后候选身份;验证命令或评审修改候选,不能把绿灯套在新内容上。
|
|
51
|
+
- verification-gap 返回 Plan 后先复验;加强后的检查失败会回到执行,并将实际命令、退出信息和评审理由放入下一轮反馈。
|
|
52
|
+
- 普通单测与回归可修改;受保护验收和契约不可由 executor 改动。提示词带入真实保护路径/正则。
|
|
53
|
+
|
|
54
|
+
### 模型进程与计量
|
|
55
|
+
|
|
56
|
+
- Kimi 使用 CLI print/stream-json,不用 ACP;验证显式 session、cwd、thinking、取消、错误事件、尾行以及可靠终态。未知 usage 保持未知。
|
|
57
|
+
- Codex CLI 使用显式模型和角色权限;只有完整 `turn.completed`、对应文本和可靠物理退出共同成立才成功。空、部分或非法 usage 不伪装成已知零。
|
|
58
|
+
- DSH worker 核对 request/session/cwd/provider/model/effort/权限回执;只有完整沙箱及可证明的 SDK 终态才能提交结果。idle、token 截断、错帧、错误权限和强制关闭不判成功。
|
|
59
|
+
- stop 不信任 PID 数字,而用每次运行的随机 token 发请求;等待 lifetime lease 释放后再 CAS 更新状态。旧 PID、旧请求、换代、启动窗口、超时与请求写失败均有回归。
|
|
60
|
+
- 超时、取消、信号及清理失败不因退出码恰好符合预期而通过;缺陷注入的不完整执行不能冒充成功发现缺陷。
|
|
61
|
+
- metrics 写失败停止后续模型调用;unknown usage/cost 单独计数,汇总只表示已知下限。hard token budget 无法验证未知用量时停止。
|
|
62
|
+
|
|
63
|
+
## 3. DSH 宿主与实机边界
|
|
64
|
+
|
|
65
|
+
接口目标固定为已核对的 DSH Mac `0.2.1-rc.5`。本轮在官方 npm rc.5 上实际验证了 Host command/tool 注册、SDK 初始化与关闭;在当前 Linux 环境,原生沙箱不可用时 doctor 正确拒绝,且没有发送模型 prompt。
|
|
66
|
+
|
|
67
|
+
以下仍需在用户 Mac 上验证,不能用交叉编译或 fake SDK 代替:
|
|
68
|
+
|
|
69
|
+
1. About 中的具体 DSH 版本、CPU 架构、桌面命令入口;插件的实际安装和界面渲染。
|
|
70
|
+
2. SDK profile 中 DeepSeek/ChatGPT adapter 的实际注册与授权;桌面 profile 不会自动成为 SDK profile。
|
|
71
|
+
3. Seatbelt 与文件权限探针;Kimi CLI 的会话恢复和取消。Kimi print 模式不提供本适配器可宣称的 OS 级工作区沙箱。
|
|
72
|
+
4. 使用账号可用模型完成一个小任务,检查 done-report、验收、提交、暂停/恢复及停止,记录真实延迟、速率、额度和 usage。
|
|
73
|
+
5. 异常断电/应用退出之后的真实恢复。`stopped` 代表引擎生命周期结束,不是任意脱离进程组的进程已被全局清理的证明;清理错误仍须查看证据。
|
|
74
|
+
|
|
75
|
+
本轮没有真实模型性能基准,不给出未经测量的速度、成本节省比例或质量排名。已有控制机制包括确定性门禁前置、有效证据复用、有界重试、里程碑级终验、明确渠道与未知用量记账。
|
|
76
|
+
|
|
77
|
+
## 4. 交付与后续范围
|
|
78
|
+
|
|
79
|
+
交付包含完整源码快照、相对于上述基线的补丁、DSH 本地安装包、两个 Mac 架构的 Go 开发版二进制与 SHA-256 校验清单。Mac 产物是交叉编译的开发构建,本记录不宣称已完成 Mac 实机运行、签名或公证发行。
|
|
80
|
+
|
|
81
|
+
现有 `loops/routes/channels` 可定义每阶段和每路由的 harness/model/provider;具名 profile 引用、复杂自适应路由及并行团队调度继续后置。
|
|
82
|
+
|
|
83
|
+
`ckanner/dsh-subagent-codex-pro` 未在此 session 修改,Flywheel 当前 `hard` 仍采用独立 Codex CLI。其独立加固任务、源码基线、接口契约和验收矩阵在 [Codex Pro adapter 交接文档](../archive/codex-pro-adapter-handoff.md)。
|
|
84
|
+
|
|
85
|
+
## 5. 发布前文档与代码复核
|
|
86
|
+
|
|
87
|
+
用户后续明确授权提交、PR、自审、CI 和合并。复核补充了项目配置发现、文件模式/链接持久化和 Gate 输出截断等回归,且新增双平台插件/bridge CI。本文第 1 节数字及附件是首轮离线验收快照;新修改的最终质量门禁、远端检查与合并结论需以更新的验证证据和对应 PR 为准,不由本段预先宣称通过。
|
|
88
|
+
|
|
89
|
+
文档复核修正 skills 的实际单环语义、默认 control 启动、任务路径与配置优先级,以及 install-skills 的快照刷新/用户目录保护。新增 [Mac 安装与首个任务教程](../zh-CN/getting-started.md) 和可在新目录准备的 [小任务脚本](../examples/create-first-task.sh),示例本身不调用模型或自动提交。
|
|
90
|
+
|
|
91
|
+
## 6. PR 前最终本地验收
|
|
92
|
+
|
|
93
|
+
在上述复核修复、教程和 skills 1.3.1 冻结后,重新执行完整门禁;此节取代首轮快照作为本次提交的本地验收依据。远端 CI 和合并结果由对应 PR 的 Checks/合并记录确认,不能从本地结果推断。
|
|
94
|
+
|
|
95
|
+
| 检查 | 结果 | 证据 |
|
|
96
|
+
|---|---|---|
|
|
97
|
+
| 完整 `make quality-gate` | PASS:vet、格式、全部 Go 测试、逐函数覆盖率 | [输出](evidence/pr-quality-gate.txt) |
|
|
98
|
+
| Go 覆盖率 | **378 个函数逐一 100%;5,488 个 statement,未覆盖 0** | [逐函数输出](evidence/pr-function-coverage.txt) |
|
|
99
|
+
| 六核心包 race | PASS | [输出](evidence/pr-race.txt) |
|
|
100
|
+
| DSH 插件构建和测试 | PASS:24 / 24 | [输出](evidence/pr-dsh-plugin-tests.txt) |
|
|
101
|
+
| 实际 Go → Node → 模拟 SDK | PASS | [输出](evidence/pr-dsh-bridge.txt) |
|
|
102
|
+
| 文档与教程 | 本地链接、围栏、脚本语法、示例初始红/修正后测试及 CLI verify 绿 | [完整教程](../zh-CN/getting-started.md) |
|
|
103
|
+
|
|
104
|
+
本次自审修复并验证:子目录启动遗漏项目根配置;Git 的 filemode/symlinks 设置隐藏未持久化模式差异;确定性 Gate 丢弃输出截断标记;Mac 临时目录符号链接导致的插件测试不便携。相关回归保留在源码中。执行提示词也明确外部冻结 oracle 的修订需显式人工任务,不能误解为 Plan 可直接修改。
|
|
105
|
+
|
|
106
|
+
GitHub CI 保留 Linux/macOS 的原始 Go 100% 门禁,并增加两平台 Node 插件、跨进程链路、原生 CLI 和打包检查,Linux 运行核心 race;只产生 Actions 开发产物,不触发 npm 发布。Mac 桌面与真实账号验收边界不变。
|
|
107
|
+
|
|
108
|
+
首轮 PR CI 的 Ubuntu 检查通过,macOS 暴露了任务目录别名与 Git 物理路径混用的问题。已用真实符号链接在 Linux 复现并修复;现在 TaskDir 与 Cwd 使用同一物理路径命名空间,新增混合别名、worktree/in-place 暂停和跨别名恢复回归。Kimi 路径断言及 Zcode 测试 fixture 的请求写入/退出竞态同步修复。
|
|
109
|
+
|
|
110
|
+
第二轮 Ubuntu 继续通过,macOS 仅剩后台进程组清理用例失败。依据 [Apple XNU 的进程组信号实现](https://github.com/apple-oss-distributions/xnu/blob/f6217f891ac0bb64f3d375211650a4c1ff8ca1ea/bsd/kern/kern_sig.c#L1675-L1721),SIGKILL 后的探测可在退出/回收窗口暂时返回 `EPERM`。修复在原清理期限内重试,但必须最终观察到 `ESRCH` 才成功;持续权限错误、其他探测错误及初次 kill 权限失败仍失败。新增瞬时、交错与持续错误回归,真实后台写入测试保持清理及停止写入断言,为系统回收留 1 秒预算;注入测试使用短期限验证失败上界。
|
|
111
|
+
|
|
112
|
+
第三轮 macOS 的全部 Go 测试通过,但逐函数门禁指出 `canonicalDirectory` 的绝对路径解析错误分支未覆盖。真实删除 cwd 的用例在两个平台经过不同错误分支,不能单独证明每条失败路径。保留真实目录回归,并增加确定性的路径解析失败注入,经 `CreateContext` 验证任务目录/工作目录错误的传播、上下文创建停止及状态不变;不删除防御分支,也不降低门禁。
|
|
113
|
+
|
|
114
|
+
以上本地门禁与 race 日志已按最终修复版本更新;远端结论见 [PR #13 的 Checks 与合并记录](https://github.com/ckanner/flywheel/pull/13),本文不预先宣称远端通过。
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Codex Pro 默认接入验证记录
|
|
2
|
+
|
|
3
|
+
## 1. 固定基线与实际接入
|
|
4
|
+
|
|
5
|
+
Flywheel 以 `cb7d996eb233565f31d6804b3c6963a18cdb0d93` 为基线,发行目标 0.28.0。上游核验对象为 [Codex Pro v0.8.0](https://github.com/ckanner/dsh-subagent-codex-pro/releases/tag/v0.8.0),main `04ecdb677735d84f3a0f5dba01a9d9b28c324c0e`。
|
|
6
|
+
|
|
7
|
+
本轮于 2026-11-04 完成复核;上游 PR #1–4 已合并,0.8.0 已发布,无需重复提交同一问题。其 [main CI](https://github.com/ckanner/dsh-subagent-codex-pro/actions/runs/41647110921) 的 Ubuntu/macOS × Node 22/24 四个 lane 均为 183 total、177 pass、6 skip、0 fail,并通过 packed install 的公开 machine API/CLI/guardian 冒烟。这是上游证据,不替代 Flywheel 的 CI。
|
|
8
|
+
|
|
9
|
+
DSH 兼容性审查固定在 `deepseek-ai/deepseek-harness` 的 `b830ec950faba0a46dda564be3e2d854afed94f1`:读取了 SDK protocol、SDK server README、subagent types 与 manager。该基线的 Host subagent 依赖真实父 Agent,SDK 未提供外部 subagent start RPC;因此采用插件公开 machine API,而非构造父会话。这里的 rc.5 是兼容基线,不宣称是所有发行渠道的最新版本。
|
|
10
|
+
|
|
11
|
+
已直接读取 npm 发布包,核对包名、版本、Node >=22.18.0、公开 `./machine` 和 `./package.json` exports。npm SHA-512 integrity 为:
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
sha512-hbWPMkjWPsY8DDhcUIzBBCNR3TZexeOSSv9yP1zzIiyP2NvHfedfNkHz2ubreUyyonst+/539t7izwzl3ZOHxA==
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
集成实际导入这个包的公开 `runMachine`,不是复制 runner、调用旧 `codex exec` 或伪造 DSH 父会话。默认模板和 profiles 示例的 hard 都是 `codex-pro`;旧配置不自动覆盖。
|
|
18
|
+
|
|
19
|
+
## 2. 验收层次
|
|
20
|
+
|
|
21
|
+
| 层次 | 验证内容 |
|
|
22
|
+
|---|---|
|
|
23
|
+
| Go 单元/协议 | 配置与 profiles、请求身份、完整 receipt、模型/目录/权限、usage、错误映射、取消与物理终态;逐函数 100% statement coverage |
|
|
24
|
+
| Node worker | 实际导入固定 npm 插件,使用 fake app-server 执行真实 machine/guardian 代码;输入错误、超限、EOF、信号、输出断开和清理 |
|
|
25
|
+
| Go→Node→插件 | 真实父子进程管道,固定插件 runner/guardian 与脚本化 app-server;同一调用请求、返回、预算和终态验证 |
|
|
26
|
+
| npm 候选 | 六包构建一次,在隔离 registry/HOME/DSH 协议桩中安装;取得真实 Codex Pro tarball,验证公开 API、CLI、worker、10 个 skills 和 GUI 入口 |
|
|
27
|
+
| CI/发行 | Linux/macOS 消费同一候选,核心 race;发行另核精确 tag/source/integrity、registry 安装和 latest |
|
|
28
|
+
| 用户 Mac/账号 | 本环境未提供真实用户桌面与订阅;不据离线结果声称这层已通过 |
|
|
29
|
+
|
|
30
|
+
## 3. 发现并处理的关键问题
|
|
31
|
+
|
|
32
|
+
- **旧默认未消费插件:**新增独立 harness 和实际 machine API worker,npm 精确依赖与启动器解析;没有插件时拒绝,不自动使用旧 CLI。
|
|
33
|
+
- **参数与计量证据:**effort 仅 accepted、effectiveEffort 为 null;实际 provider 未提供则未知;完整 receipt 留存,partial usage 不当成完整预算或零费用。
|
|
34
|
+
- **两层进程收尾:**模型输出不证明执行结束;正常 app-server 收尾可以有终止信号,外层 worker 仍须可靠退出。真实 EOF、取消、父进程/worker 死亡用 PID/进程组消失验证,不只看文本日志。
|
|
35
|
+
- **清理未知后误重试:**实际 SIGKILL worker 时,Go 可在几毫秒内返回,但独立 guardian/app-server 此后仍存活。driver 现将缺失可信回执、执行身份不符、终态后坏 JSON/重复 frame 等情况标记为清理未确认;Plan/Execute/Review/Judge/Intake/Garden 均停止本次自动执行、保存升级与审计、保留 worktree,禁止重试、fallback、Plan 冷启动及后续候选。已有可信清理回执的普通服务错误仍沿原策略重试。此修复不声称 caller 死亡时已经同步确认所有进程退出。
|
|
36
|
+
- **模块状态所有权窗口:**只检查 PID 会漏掉主引擎已持 `.run.lock`、尚未写 PID 的启动窗口。预算记账与清理升级共用持锁的 Load/CAS Save;真实占锁回归确认主 state 字节不变,模块独立 inbox/metrics 仍保留。
|
|
37
|
+
- **全局停止提前截断:**原 SIGTERM kill switch 的默认 5 秒会绕过 worker 自己的 10 秒宽限。改为登记并尊重各子进程宽限,保留快照所有权与最终强杀/等待。
|
|
38
|
+
- **完整策略时点:**用实际 0.8.0 包和故意回报宽 roots/network 的 app-server 复现:插件会先发 turn,完整策略到最终 receipt 才交给调用者。因此 Flywheel 的完整策略校验只是交付资格检查;文档和 doctor 明确警告,不宣传为事前隔离。
|
|
39
|
+
- **npm 12 安装夹具:**真实安装首次触发 `EALLOWREMOTE`。已将直接 URL `npm pack` 改为从官方 registry 获取精确的 `dsh-subagent-codex-pro@0.8.0`,仍强制校验锁文件 resolved、tarball SHA-512、manifest 名称/版本及依赖图。没有放宽 `allow-remote`;修复后完整安装重跑通过。规则依据见 [npm 12 配置](https://docs.npmjs.com/cli/v12/using-npm/config/#allow-remote)。
|
|
40
|
+
|
|
41
|
+
## 4. 本轮执行记录
|
|
42
|
+
|
|
43
|
+
### 本地门禁
|
|
44
|
+
|
|
45
|
+
环境:Linux amd64,Go 1.27.3,Node 24.22.1,npm 12.2.1。所有结果为本轮实际执行,没有调用付费模型推理。
|
|
46
|
+
|
|
47
|
+
| 命令/检查 | 实际结果 |
|
|
48
|
+
|---|---|
|
|
49
|
+
| `make quality-gate` | 通过 vet、gofmt 与全部 Go 测试;439 个受测函数逐函数 100% statement coverage,单行 cmd 入口按项目既定规则排除 |
|
|
50
|
+
| `go test -race ./internal/machine ./internal/verify ./internal/watchdog ./internal/drivers ./internal/cli ./internal/modules ./internal/diagnostic -count=1` | 七个核心包全部通过;最后修改 modules lease 后,又单独重跑该包 race 通过 |
|
|
51
|
+
| `npm --prefix plugins/dsh run check` | 61 tests,61 pass,0 fail,0 skip |
|
|
52
|
+
| `npm test` | 78 tests,78 pass,0 fail,0 skip |
|
|
53
|
+
| `FLYWHEEL_TEST_NODE_BRIDGE=1 go test ./internal/drivers -run '^Test(DSH\|CodexPro)NodeWorkerOfflineBridge$' -count=1 -v` | DSH 与 Codex Pro 两组通过,含真实插件 guardian、取消、worker SIGKILL、Go SIGKILL、策略与用量校验 |
|
|
54
|
+
| `npm run build:npm` | 六个同版本 0.28.0 候选构建及 integrity 检查通过,四平台二进制完成交叉构建;不是 macOS 运行验收 |
|
|
55
|
+
| `FLYWHEEL_NPM_PACKAGES_DIR=dist-npm npm run test:install` | npm 12 夹具修复后,7 tests,7 pass,0 fail,0 skip;包含安装后实际运行公开插件 API、进程清理、重复安装、保留自定义配置、CLI 取消和失败恢复 |
|
|
56
|
+
| 文档/发布包 | 新 `docs/workflow.md` 已进入 meta tarball;相关文档的 62 个相对文件链接及本地 Markdown 锚点有效;`git diff --check` 通过 |
|
|
57
|
+
|
|
58
|
+
六包使用同一次冻结源码快照构建,快照 SHA-256 为 `b51416adc3b13281f0af8299ad2540d433931f7148534dfcd9d25bc2603e7e7f`。这是含本轮修复的工作区快照,候选清单明确标注 `dirty: true`,仅用于本地验证,不具备发行资格。构建后更新的是未打入六包的安装测试夹具及本验证记录;安装测试消费原始六个 tarball,没有为通过测试重打包或替换真实插件依赖。
|
|
59
|
+
|
|
60
|
+
独立代码复核实际重现并关闭了清理未知误重试、模块状态所有权两个阻断项;额外核查了错误 run/thread/ownership、终态尾部损坏、已有 fatal 时的持久化,以及普通服务错误的正常 retry/fallback。当前没有剩余本地复核阻断项;这不是 GitHub 上的人类 approval。
|
|
61
|
+
|
|
62
|
+
### 首轮 PR 与远端 CI
|
|
63
|
+
|
|
64
|
+
首轮交付 PR 为 [Flywheel #23](https://github.com/ckanner/flywheel/pull/23),当时保持 Draft、未合并、未发布。最终 head 与后续检查、合并状态以 PR 为准。
|
|
65
|
+
|
|
66
|
+
首次 [PR CI run 41818659925](https://github.com/ckanner/flywheel/actions/runs/41818659925) 在 `npm-candidate` 启动前失败,没有 runner 或测试 step,依赖它的 test job 跳过。GitHub 页面明确提示账户近期付款失败或 Actions 支出上限需提高,应检查 Billing & plans;这不是代码测试失败,也不能算远端 CI 已通过。后续 `4dfb489` 的 [CI run 41821215839](https://github.com/ckanner/flywheel/actions/runs/41821215839) 同样未进入 runner。账户恢复后仍须对最终源码运行 Linux/macOS CI;后续合并授权与追加验证见下节。没有修改账户付款、支出上限或仓库可见性。
|
|
67
|
+
|
|
68
|
+
### 2026-11-04 追加:worktree skills 与合并授权
|
|
69
|
+
|
|
70
|
+
用户进一步要求完善并合并 PR,同时确认各 Loop 和 skills 的 worktree 规范。复核发现工作流文档已有说明,但技能入口尚未覆盖。因此补齐全部 10 个内置 skills:准备时建立或复用任务集成 worktree;启动、恢复和单环执行从任务路径解析同一物理仓库根与分支;packet 候选目录仍交给引擎管理。Status/Stop 只使用原任务路径,不受开发分支检查阻碍。入口遵循既有工作区选择与授权,不重复询问,也不迁移或重置已有 state。
|
|
71
|
+
|
|
72
|
+
此次只修改 skills 和文档,没有改变引擎的 worktree 回退行为或增加全局强制隔离开关。`flywheel-new`/`run`/`exec` 递增为 1.7.0,其余七个 skills 为 1.6.0。各 Loop 的目录、确定性 verify 与模型 Judge 的区别、CLI/GUI 不自动执行 skill 正文的边界,均写入 [工作流](../zh-CN/workflow.md#各阶段的执行目录)。
|
|
73
|
+
|
|
74
|
+
| 追加检查 | 结果 |
|
|
75
|
+
|---|---|
|
|
76
|
+
| `go test ./internal/skillsembed ./internal/cli -count=1` | 两包全量通过,覆盖真实 YAML、内嵌读取、控制接口及安装快照 |
|
|
77
|
+
| `npm test` | 再次 78/78,0 fail,0 skip |
|
|
78
|
+
| `npm run build:npm` | 重新构建六包候选;源码快照 SHA-256 为 `b9a962ea17d7cbb43c9d5cb08bc2393e20d3d6b6bfd1acb89f8918a1c03063de`,仍为本地未发行候选 |
|
|
79
|
+
| 候选二进制 `skills read` | 逐一读取 10 个内置 skills,正文与仓库当前源文件一致 |
|
|
80
|
+
| `FLYWHEEL_NPM_PACKAGES_DIR=dist-npm npm run test:install` | 再次 7/7,0 fail,0 skip;消费本次重新构建的同一批 tarball |
|
|
81
|
+
| 独立入口验证 | 使用含空格的隔离 Git 路径,原终端在 main、任务在另一 worktree 的 `task/add`;按 skill 正确选择任务根与绝对 task 路径,预检前后工作区不变,未启动引擎或调用模型 |
|
|
82
|
+
| 文档核对 | 核对每个 Loop 的真实 CWD、verify 不调用 Judge、Kimi 权限边界及 `in-place` 限制;`git diff --check` 通过 |
|
|
83
|
+
|
|
84
|
+
用户已明确授权普通 PR 合并。合并前读取 main 显示未配置分支保护和 required checks,PR 无冲突、无待处理 review;本轮合并将使用正常 PR 流程,不修改仓库规则,不把账户阻断写成 CI green。合并结果和 main CI 另在 PR 中记录。此次授权与本地检查不能代替正式发行所需的双平台门禁;未创建发行 tag、未发布 0.28.0。本次从官方 registry 查询时,meta 包 `latest` 仍为 0.27.3。
|
|
85
|
+
|
|
86
|
+
## 5. 保留的能力边界
|
|
87
|
+
|
|
88
|
+
Codex Pro 0.8.0 没有公开的运行前完整 sandboxPolicy guard。workspace-write 允许 Codex 标准临时目录;用户/项目配置仍可能在调用前扩展权限,事后拒绝不能撤销访问。需要预防此类访问的环境须等待上游 guard 或另行采用已验证的宿主隔离,不能靠此回执检查声称具备该能力。
|
|
89
|
+
|
|
90
|
+
协议桩不证明真实模型质量、账号授权、订阅额度或美元账单。Mac 桌面 UI、Seatbelt、GUI 的 CLI/登录可见性、真实 Flash/GPT/Kimi/Codex 小任务以及本机重启恢复仍需在用户实际环境验证。缺少这些证据时不将其列为“完整实机测试通过”。
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# DSH 原生 Flywheel 视图:修复与验证记录
|
|
2
|
+
|
|
3
|
+
日期:2026-11-04。环境:Linux amd64,Node 24.22.1,npm 12.2.1,Go 1.27.3。
|
|
4
|
+
|
|
5
|
+
本次针对用户安装后的截图反馈:底部 Flywheel 大弹层越过窗口右边界,遮挡对话、输入框和宿主控件,且配置、任务与诊断混在同一个临时弹层中。
|
|
6
|
+
|
|
7
|
+
**状态:已按用户提供的三个固定版本文档完成校正,源码与离线验收记录如下。本轮用户已明确授权提交分支、创建 PR,并在自行验证后合并;具体提交/合并状态以 GitHub 为准。本改动没有发布到 npm,也没有替换用户 Mac 上已安装的插件。已发行 0.28.0 仍使用旧浮层。真实 DSH 组装界面和 Mac 视觉验收尚未完成。**
|
|
8
|
+
|
|
9
|
+
## 1. 接入决策
|
|
10
|
+
|
|
11
|
+
完整控制页面注册为原生 `conversation.view` 的独立 `flywheel` 条目,使用 DSH 的顶部视图导航,与对话、轨迹并列。删除底部大浮层,不替换宿主已有条目;输入框、权限与模型选择器、右侧栏保留宿主归属。
|
|
12
|
+
|
|
13
|
+
Flywheel 页面承担已有 Go 任务的启停、状态、工作单元、人工处理项、有效模型配置和环境诊断。需求讨论仍在对话中,父会话事件仍由原生轨迹展示。完整配置放入可展开区域,长字段换行;原始 JSON 在局部区域查看。
|
|
14
|
+
|
|
15
|
+
本次不新增自绘侧栏,也不虚构一个从 dock 全局切换视图的 API。后续若需要边聊边看任务摘要,应使用宿主公开侧栏槽位,并单独验证与文件、变更等原生工具并存。
|
|
16
|
+
|
|
17
|
+
### 核对的 DSH 依据
|
|
18
|
+
|
|
19
|
+
- 声明版本为 `0.2.1-rc.5` 的源码快照 `b830ec950faba0a46dda564be3e2d854afed94f1`:[槽位规则](https://github.com/deepseek-ai/deepseek-harness/blob/b830ec950faba0a46dda564be3e2d854afed94f1/docs/subsystems/slots.md)、[Conversation 合同](https://github.com/deepseek-ai/deepseek-harness/blob/b830ec950faba0a46dda564be3e2d854afed94f1/packages/client/ui-conversation/src/client/contract/slots.ts)。这是版本声明与源码核对,不声称核验了发行 tag 映射。
|
|
20
|
+
- 用户指定的同一源码 `b830ec950faba0a46dda564be3e2d854afed94f1`:[外部插件实践](https://github.com/deepseek-ai/deepseek-harness/blob/b830ec950faba0a46dda564be3e2d854afed94f1/packages/preset/agent-preset/skills/cordis-plugin-development/references/practices.md)、[UI 规范](https://github.com/deepseek-ai/deepseek-harness/blob/b830ec950faba0a46dda564be3e2d854afed94f1/.agents/skills/dsh-client-ui-ux/SKILL.md)、[布局说明](https://github.com/deepseek-ai/deepseek-harness/blob/b830ec950faba0a46dda564be3e2d854afed94f1/packages/client/ui-layout/README.md)。
|
|
21
|
+
|
|
22
|
+
第一轮草案误用了 DSH 内部 Client 包,虽通过当时的组件夹具测试,却违反外部 plain-JS 插件规范。最终客户端运行时只加载 React。按钮、输入框和加载指示器按固定宿主源码实现于插件自身,保留 MIT 归属;状态实现符合公开结构化 StoreHandle 契约,由宿主创建、缓存并绑定会话读取 hooks。CSS 由 React 视图的 style 元素拥有,不从组件外操作 document.head/body。颜色只引用实际存在的 `--dsw-alias-*`,使用宿主 locale,字体继承宿主。路径与展开状态属于查看状态;异步请求和显示快照位于 apply 层控制器,通过自有 observable 注入。控制器以会话绑定的 actions 身份隔离,Go 继续独占业务状态。
|
|
23
|
+
|
|
24
|
+
按 ui-layout 规则,Conversation 内的视图位于既有标题栏下方,不重复叠加独立管理页的 macOS 48px 留白,不改全局窗口变量。错误、等待和提示使用预留反馈区,完整详情可局部滚动;持续的未知结果提示不会被后续只读查询的加载状态隐藏。
|
|
25
|
+
|
|
26
|
+
## 2. 异常行为与审查中关闭的问题
|
|
27
|
+
|
|
28
|
+
| 场景 | 当前处理 |
|
|
29
|
+
|---|---|
|
|
30
|
+
| 打开、关闭或切换视图 | 不自动启动、停止、扫描或探测任务;不自动轮询 |
|
|
31
|
+
| 启动/停止等待中 | 同一会话只保留一个在途请求,锁定目标路径 |
|
|
32
|
+
| 只读请求期间修改路径 | 仍等待原请求结束,旧响应不能覆盖新选择 |
|
|
33
|
+
| 会话切换或绑定代际变化 | 不把旧请求的结果交给另一个会话或新的绑定 |
|
|
34
|
+
| 路径不存在、cwd 缺失、进程无法创建 | 仅在宿主结构化证明未派发时,显示修正指引并允许手动重试 |
|
|
35
|
+
| 已派发的启动/停止请求超时、断连、非法响应或进程失败 | 保留“结果未确认”,禁止重复启停,直到成功读取原目标状态 |
|
|
36
|
+
| 状态读取失败 | 保留上次有效快照及确认时间,明确标为待确认 |
|
|
37
|
+
| 诊断存在阻断项 | 展示完整失败报告;未测试的账号、额度和推理不冒充通过 |
|
|
38
|
+
|
|
39
|
+
独立审查发现并修复了两项具体恢复缺陷:
|
|
40
|
+
|
|
41
|
+
1. 浏览器不能把输入的路径与 Go 的真实路径做字面比较。`/var`、符号链接、尾部斜杠或 `..` 经规范化后可能不同;任务身份仍由拥有文件系统权限的 host 校验。
|
|
42
|
+
2. 将派发前错误一律标记为未知,会让不存在的原路径永久阻塞界面。新增结构化派发证明后,可以区分已知未执行和执行结果未知。每个 host 命令失败都使用外层包装,子进程错误文字不能冒充宿主证明;旧格式和异常格式继续按未知处理。协议见 [PROTOCOL.md](https://github.com/ckanner/flywheel/blob/main/plugins/dsh/PROTOCOL.md#dsh-命令失败与是否派发)。
|
|
43
|
+
|
|
44
|
+
独立复核未发现剩余源码或协议阻断问题。该结论不包含真实桌面几何布局验证。
|
|
45
|
+
|
|
46
|
+
## 3. 已执行验证
|
|
47
|
+
|
|
48
|
+
| 检查 | 结果与边界 |
|
|
49
|
+
|---|---|
|
|
50
|
+
| Go 完整质量门禁 | `make quality-gate` 通过,vet、格式与逐函数 100% statement coverage 保持;[日志](evidence/dsh-native-view-quality-gate.txt) |
|
|
51
|
+
| 插件干净依赖安装 | `npm ci --ignore-scripts` 通过,53 个包 |
|
|
52
|
+
| 完整插件构建与测试 | **75/75 通过**,其中 UI 19 项、真实发布版 renderer 集成 1 项、控制面 9 项;[完整日志](evidence/dsh-native-view-plugin-tests.txt) |
|
|
53
|
+
| 根目录 npm 契约测试 | **125/125 通过**;[完整日志](evidence/dsh-native-view-npm-tests.txt) |
|
|
54
|
+
| Go → Node → DSH / Codex Pro 离线桥接 | 两个指定桥接测试通过;[日志](evidence/dsh-native-view-bridge-tests.txt) |
|
|
55
|
+
| 隔离源码六包构建 | 四个平台二进制、插件、meta 共六包通过;[日志](evidence/dsh-native-view-build.txt) |
|
|
56
|
+
| 同一候选的真实 npm 安装流程 | **7/7 通过**,使用隔离 registry、用户目录和 DSH 协议桩;[完整日志](evidence/dsh-native-view-install-tests.txt) |
|
|
57
|
+
| 浏览器产物与 host 语法 | `node --check` 通过 |
|
|
58
|
+
| 差异空白检查 | `git diff --check` 通过 |
|
|
59
|
+
|
|
60
|
+
UI 测试运行构建后的插件、自有控件与状态实现、React 和 jsdom;只允许客户端加载 React。普通行为测试对槽位桥接和 Remote 使用适配器。新增的集成测试真实加载 `@deepseek-ai/cordis@4.0.5`、`dsh-client-ui-renderer@0.2.1-rc.5` 和 `dsh-client-ui-slots@0.2.1-rc.5`:验证等待原生声明、与对话/轨迹并存、隐藏与重开、会话及绑定代际隔离、声明收起/重建和插件卸载。没有槽位崩溃,组件外 DOM 保持不变,样式随 React 视图卸载。另有真实 handler / runControl / fixture CLI 的往返测试,覆盖可修复的派发前错误、进程已执行后的未知结果、子进程伪造错误标记及路径规范化。
|
|
61
|
+
|
|
62
|
+
响应式和主题规则已做源码核对。独立审查按固定默认色板计算亮/暗文字对比度,说明、占位符、状态文字改用可读的 primary/secondary;状态色作为边线等辅助标记。默认 secondary 在基础背景的对比度约为 5.80/12.11,在暗色卡片背景约为 9.25。这是色板计算,不是实际显示器或所有自定义主题的验证,也不作整个界面的 WCAG 认证声明。
|
|
63
|
+
|
|
64
|
+
另外,在隔离 Linux Context 中安装官方 rc.5 的 CordisInspectRegistry、SystemPrompt、ToolRuntime 与 tool-cordis,实际调用 `cordis_inspect_list` 和 `cordis_inspect_query`:先读取 Service/Event 目录,再读取已列出的 commands/tools 具体契约。目录包含 98 个 Host Service 和 76 个 Event;[检查摘要](evidence/dsh-native-view-inspect.txt)。没有连接用户桌面的 Client,因此不宣称完成目标 Mac 的 live Client inspection。客户端契约由固定源码与真实已发布 renderer 集成验证。
|
|
65
|
+
|
|
66
|
+
上一轮对话中的交互示意展示的是当时草案,不能作为本次最终控件实现或原生宿主视觉验收的证据。jsdom 不计算实际页面几何,也不代替浏览器截图。
|
|
67
|
+
|
|
68
|
+
六包构建从没有 `node_modules` 或 `dist` 的源码快照开始,在快照内按插件锁文件安装构建依赖,明确禁用生命周期脚本,再编译 CSS Modules;安装包的运行时依赖不包含这套开发依赖。
|
|
69
|
+
|
|
70
|
+
### 开发候选身份
|
|
71
|
+
|
|
72
|
+
本次基线是 `3cb79b9b7cffaacb799ecd804a0d7cdd885635e1`,工作分支为 `fix/dsh-native-task-view`。测试候选保持仓库当前版本 `0.28.0`,仅用于隔离验证,`source.dirty: true`,**不可发布,也不能覆盖 npm 已存在的 0.28.0**。
|
|
73
|
+
|
|
74
|
+
构建与安装测试使用的源码快照 SHA-256 和六包完整性见 [candidate 记录](evidence/dsh-native-view-candidate.json)。验证日志和 candidate 元数据在构建之后补入;测试后的生产代码、依赖锁文件和构建脚本未再修改。CSS 导出映射排序后,已逐字节确认六包候选中的 client.js、control.js、index.js 与插件测试使用的产物一致;第三方许可证声明也已包含且内容一致。后续发布仍须使用新版本、已审阅提交、准确 tag 和新的完整发行候选。
|
|
75
|
+
|
|
76
|
+
## 4. 仍需实机验收
|
|
77
|
+
|
|
78
|
+
连接的浏览器无法访问执行环境的本地测试服务;直接打开内嵌测试页也被浏览器安全策略拒绝。本次没有绕过该限制,也没有真实 DSH/Mac 截图。因此以下项目尚未通过:
|
|
79
|
+
|
|
80
|
+
- 目标 Mac 和用户实际 DSH 版本的插件加载、原生导航与完整页面组装。
|
|
81
|
+
- 390 CSS px 的验收最小宽度、常见桌面宽度、缩放、左右侧栏组合;检查对话、输入框、按钮和长路径没有相互遮挡。
|
|
82
|
+
- 亮/暗主题、键盘焦点、输入中调整窗口、长模型名和错误详情。
|
|
83
|
+
- 真实桌面断连、插件重载、切换任务与后台运行的可见结果。
|
|
84
|
+
|
|
85
|
+
Go、DSH SDK、Kimi 和 Codex Pro 的实际模型调用、账号、Seatbelt 等实机验证也不由这次 UI 离线检查证明。本次未修改 worker 权限或辅助能力策略,完整 worker 历史仍不会自动并入父会话轨迹,Go 任务也未冒充原生团队或后台任务条目。
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Flywheel 0.28.1 发行准备与验证
|
|
2
|
+
|
|
3
|
+
日期:2026-11-04。目标:将 PR #26 的原生 Flywheel 会话视图作为补丁版本发行,再安装到用户现有 DSH Mac 桌面的 desktop profile。
|
|
4
|
+
|
|
5
|
+
## 来源与范围
|
|
6
|
+
|
|
7
|
+
- 基线:`2e3692296fd5356b37e474957c6619d660b86845`(原生 DSH 会话视图已合并)。
|
|
8
|
+
- 六个 npm 包统一到 `0.28.1`;meta 精确依赖、插件锁文件与构建入口同步。
|
|
9
|
+
- 更新中英文安装说明;执行后续发行时必须使用精确 tag、干净提交与同一批候选 tarball。
|
|
10
|
+
- 2026-11-04 已通过 npm 结构化 E404 确认六个包的 `0.28.1` 尚不存在。
|
|
11
|
+
|
|
12
|
+
## 发行环境与 CI 边界
|
|
13
|
+
|
|
14
|
+
本机为 macOS arm64,Go 1.27.3、Node 24.22.1、npm 12.2.1。工具版本仅通过发行命令环境选择,不替换用户终端默认版本。
|
|
15
|
+
|
|
16
|
+
[main CI 41878328057](https://github.com/ckanner/flywheel/actions/runs/41878328057) 的 job 未启动,GitHub annotation 为账号付款失败或支出限制;这不是测试失败,也不是 CI 通过。用户已要求发布新版本并安装到现有桌面端,本次采用仓库发行指南中的维护者手动路径。保留正常 workflow,不修改账单、仓库可见性、2FA 或包权限。
|
|
17
|
+
|
|
18
|
+
本轮本地验证不等同于 Linux runner 运行、DSH 实机 UI 或模型账号验收。四个平台交叉编译不证明所有平台 runtime 已验收。
|
|
19
|
+
|
|
20
|
+
## 源码验证
|
|
21
|
+
|
|
22
|
+
| 检查 | 状态 |
|
|
23
|
+
|---|---|
|
|
24
|
+
| Go quality gate(vet、格式、逐函数 100% statement coverage) | 通过;逐函数 100% |
|
|
25
|
+
| DSH 插件构建与离线测试 | 75/75 通过 |
|
|
26
|
+
| 根目录 npm 测试 | 125/125 通过 |
|
|
27
|
+
| Go → Node → DSH / Codex Pro 离线桥接 | 两项通过 |
|
|
28
|
+
| 核心包 race(本机 macOS arm64) | 七个指定包全部通过 |
|
|
29
|
+
| 六包版本预检与 diff 空白检查 | 通过 |
|
|
30
|
+
|
|
31
|
+
## 后续发行证据
|
|
32
|
+
|
|
33
|
+
本文件是源码发行准备记录,不宣称 npm 已上传、latest 已提升、候选安装或 DSH 实机加载已通过。干净精确 tag 的候选构建、六包 integrity、实际候选安装、registry 安装、latest 复核及桌面安装结果在对应 GitHub Release 中记录;发行脚本只发布实际通过验证的同一候选,失败重试保留原产物。
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Flywheel 0.28.2 发行准备
|
|
2
|
+
|
|
3
|
+
日期:2026-11-04(America/New_York)。基线:`36cf909654cd6837bda1a9be6ca25d792207c5d2`,已合并 PR #27。
|
|
4
|
+
|
|
5
|
+
## 本机复核
|
|
6
|
+
|
|
7
|
+
PR #27 已在远端合并,因此本次没有重复执行合并。复核覆盖迁移命令的源配置选择、备份、逐项替换、失败报告,阶段权限解析、DSH/Codex Pro 完全权限回执、Plan 恢复身份和候选修改拒绝。
|
|
8
|
+
|
|
9
|
+
实际生效配置仍为旧全局文件;迁移预览未写入文件,原 SHA-256 为 `ffcdf2a0d418a6822f59158ff955421c99d451828ae309b4e6fb8159261b4bb5`。用户已确认采用完整订阅预设和完全权限;安装完成后才迁移,避免旧 0.28.1 读取不了新权限字段。预算、验收和 worktree 等非模型配置保留,原始字节备份。
|
|
10
|
+
|
|
11
|
+
## Mac 门禁修复
|
|
12
|
+
|
|
13
|
+
首次本机门禁发现配置迁移用例假定删除 cwd 后 `filepath.Abs` 必然失败;macOS 并非如此,测试失败且覆盖率为 99.8%。本次增加窄路径解析注入缝,生产仍调用 `filepath.Abs`;保留错误断言,并验证未应用、无备份且目录无新增文件,不依赖平台的 Getwd 行为。不跳过用例、不放宽覆盖率。
|
|
14
|
+
|
|
15
|
+
## 验证状态
|
|
16
|
+
|
|
17
|
+
工具链:macOS arm64、Go 1.27.3、Node 24.22.1、npm 12.2.1。
|
|
18
|
+
|
|
19
|
+
- DSH 插件:87/87 通过。
|
|
20
|
+
- 根目录 npm:126/126 通过。
|
|
21
|
+
- Go quality gate:修复后完整通过;逐函数 100% statement coverage,状态机包 806.863 秒。
|
|
22
|
+
- Go/Node DSH 与 Codex Pro 离线桥接:两项通过。
|
|
23
|
+
- config 与核心包 race:修复后 8 个指定包完整通过;状态机包 568.802 秒。
|
|
24
|
+
|
|
25
|
+
用户已明确选择正式发行后安装,并授权完整订阅预设和全部阶段完全权限,旧文件需备份;六包统一为 0.28.2。精确 tag、干净候选、原 tarball 完整性、registry 安装与 latest 结果仍由实际后续发行证明。本文件不是 npm 已发布或模型账号已验证的声明。真实模型推理未执行;发布与目标 Mac 安装的最终证据记录在 GitHub Release。
|
|
26
|
+
|
|
27
|
+
## 本机实际 SDK 接入
|
|
28
|
+
|
|
29
|
+
使用临时配置副本和本轮 worker 做无推理探测,真实全局配置未应用。DeepSeek 首先通过;ChatGPT 返回 `initialize: no adapter registered for provider "chatgpt"`。实际桌面 profile 已有 `dsh-plugin-chatgpt@0.1.17`,独立 sdk profile 未安装。通过桌面自带 CLI 将同版 adapter 注册到 sdk profile 后,四个必需 DSH 检查(intake、default、review、judge)全部通过,确认配置、请求的完全权限与 SDK 正常关闭。没有发送模型 prompt,也不把此检查写成真实模型响应或额度验收。
|
|
30
|
+
|
|
31
|
+
## 测试运行资源边界
|
|
32
|
+
|
|
33
|
+
最初并行的全量覆盖率与 race 检查撞到 Go 默认单包 10 分钟总时限;单独执行时也受本机资源争用影响,仍在推进不同测试但未在总时限内结束。观测到 10 核机器系统负载约 179,随后回落。后续使用本机 Apple Git 2.54.0,`GOMAXPROCS=2`、`GOFLAGS="-p=1 -timeout=30m"`,分开完成套件;该设置只控制包并发和外层测试进程总窗口,不更改被测命令的 watchdog 超时、取消断言、测试集合或逐函数 100% 覆盖率门禁。最终结果以完整命令实际结束为准,尚未完成的检查不标为通过。
|
|
34
|
+
|
|
35
|
+
最新 main CI [41949051234](https://github.com/ckanner/flywheel/actions/runs/41949051234) 仍因 GitHub 账号付款/支出限制未启动 job;本机通过不记为远端 CI 通过,发行沿用经授权的手动流程。
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# DSH 0.2.2-rc.1 兼容复核(0.28.4)
|
|
2
|
+
|
|
3
|
+
## 来源和故障
|
|
4
|
+
|
|
5
|
+
用户已将桌面更新到 0.2.2-rc.1。已发布 Flywheel 0.28.3 将 engines.dsh 精确锁在 0.2.1-rc.5;新版宿主拒绝加载桌面插件,SDK 也禁用了同包的 flywheel-worker-policy 行。无推理探测复现 INVALID_REQUEST,原始诊断明确说明策略模块被版本门禁禁用;没有发送模型 prompt。
|
|
6
|
+
|
|
7
|
+
核对的上游源码:rc.5 `b830ec950faba0a46dda564be3e2d854afed94f1`;rc.1 `66491b05e3f05ad35bcdd4f6cd7ed26041d9e3db`。检查 engines.dsh 的优先级与 includePrerelease 规则、commands/tools 注册、会话当前目录、客户端槽位/StoreHandle/renderer、SDK 方法及事件/关闭协议、shell/sandbox/approval。所用公共签名仍可用。两版 effectivePolicy 均为私有,overrideOf 为公开;本次回执改为读取显式写入后的公开 overrideOf。
|
|
8
|
+
|
|
9
|
+
准入后实机进一步复现真正的生命周期变化:三种权限模式均返回 `cannot append before session/created completes`。新版 Session 公告只读;两版 AgentFactory 均在公告结束后串行等待公开 agent/created,再释放模型工作。本次把权限事件移至该阶段,继续在任何 prompt 之前要求完整权限回执。
|
|
10
|
+
|
|
11
|
+
## 修复与门禁
|
|
12
|
+
|
|
13
|
+
统一六包 0.28.4。DSH 声明是两个已核对精确版本的并集,未知未来版本仍不放行;同步 Cordis 与 host peer 范围。主测试使用新版真实发布的 renderer,锁定旧 renderer 的隔离 fixture 再对同一构建运行生命周期测试。测试专用 MIT fixture 固定新版宿主真实兼容性检查器,验证没有版本豁免时的接受和拒绝。
|
|
14
|
+
|
|
15
|
+
不修改 DSH 的版本豁免或强制规则。保留已迁移的账号全局配置;迁移后 SHA-256 应仍为 `86a56fb012d669263c5e958c14a5effbfdade122167f235d2cd39b21000bdddb`。当前还存在其他旧官方插件的兼容警告,本轮不修改其配置。
|
|
16
|
+
|
|
17
|
+
本轮实际结果(macOS arm64;测试 Node 24.22.1/npm 12.2.1,目标 worker Node 26.12.1,官方桌面 CLI DSH 0.2.2-rc.1):
|
|
18
|
+
|
|
19
|
+
- 插件主检查 109/109 通过,使用真实发布的 rc.1 renderer/Cordis 4.1.0。
|
|
20
|
+
- 相同插件构建在锁定 rc.5 renderer/Cordis 4.0.5 的独立依赖目录中,通过真实 renderer 生命周期检查(1/1)。
|
|
21
|
+
- Go/Node DSH 与 Codex Pro 离线跨进程桥接两项通过(18.117 秒)。
|
|
22
|
+
- npm 单元/协议门禁 126/126 通过(45.042 秒)。
|
|
23
|
+
- 新候选源 worker 在实际 rc.1 的四项配置 SDK 探测均通过;read-only、workspace-write、danger-full-access 三种真实 shell/权限回执和正常收尾分别通过。全部为 doctor,无模型 prompt。
|
|
24
|
+
- 全局账号配置 SHA-256 保持不变。Go、templates、skills 源码相对 0.28.3 无差异;本轮没有新的 Go 改动。
|
|
25
|
+
|
|
26
|
+
六包 0.28.4 开发候选已隔离构建,原 tarball 的真实安装测试 7/7 通过(9.530 秒);另对打包后的插件 manifest 使用新版宿主原始检查器验证,两版均被接受且没有版本豁免。开发候选标记 dirty,不用于上传;批准提交后在精确干净 tag 上构建正式候选并复测。本记录不声明 npm 已发布、桌面已恢复、模型账号已验证或未知版本可运行。后续发行必须绑定干净源码、精确 tag 与同一候选;不覆盖已发布的 0.28.3。
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# 0.28.3 registry 安装检查恢复(2026-11-05)
|
|
2
|
+
|
|
3
|
+
## 故障与修复
|
|
4
|
+
|
|
5
|
+
六包原候选均已上传并确认 registry SHA-512;进入公开安装门禁后,registry-smoke.js 仍硬编码旧 provider `deepseek-official`,而原生 CLI 正确返回本版已约定的 `deepseek-account`。同一源码中的候选安装检查已经断言账号 provider,两个检查的重复预期发生漂移。
|
|
6
|
+
|
|
7
|
+
候选与公开 registry 安装现在共用 `assertFlashAccountProfile`,仍严格断言账号 provider,不删除或放宽检查。以后过期预期会在发布前的真实候选安装中失败。此修复仅涉及未打包的 npm/test 校验代码和本记录,不修改运行时代码、用户配置、package metadata 或已上传 tarball。
|
|
8
|
+
|
|
9
|
+
单元门禁另外复现了夹具启动时序问题:1 秒外部步骤预算在 global-cli 阶段已经耗尽,未到用例预期的挂起 doctor。把该用例预算设为 3 秒用于准入真实 Node 夹具,保留 preflight 阶段、超时错误、失败报告及 trap 清理的全部断言;不修改生产超时或运行时代码。
|
|
10
|
+
|
|
11
|
+
## 固定的交付身份
|
|
12
|
+
|
|
13
|
+
发行源提交与 v0.28.3 仍为 `2f86fe8a5af39e3e89eba5d3b0d62cd97de7971e`,源快照为 `e15b6428b149ba93ef997ab0e2b58bb7664f58a6597e24f1a40a6064524369eb`。不移动旧 tag、不重建或替换六个已发布包。修正检查器保存在独立维护 checkout;本次 registry 门禁使用该检查器对公开的精确 0.28.3 运行,候选和发布来源仍绑定原干净 tag。
|
|
14
|
+
|
|
15
|
+
后续交互工具只将 `npm run test:registry` 的 cwd 指向已批准、干净且固定提交的维护 checkout;保留 FLYWHEEL_NPM_VERSION、官方 registry、安装环境、超时及其全部断言。原来源/tag/tarball identity、TTY、每次写入前检查和 latest 防倒退约束不变。检查器提交与最终 registry 结果在 GitHub Release 单独记录;维护源码不冒充发行源。
|
|
16
|
+
|
|
17
|
+
## 验证
|
|
18
|
+
|
|
19
|
+
macOS arm64,Node 24.22.1/npm 12.2.1:
|
|
20
|
+
|
|
21
|
+
- 根目录 npm 单元/协议检查 126/126 通过(141.910 秒);原 1 秒启动预算的失败已复现并说明,3 秒夹具准入后的所有原断言通过。
|
|
22
|
+
- 原六包候选安装 7/7 通过,共用账号 profile 断言已在发布前路径执行。
|
|
23
|
+
- 公开 registry 精确 0.28.3 安装通过:实际 npm 安装、原生 CLI、10 个 skills 和 DSH CLI 协议夹具验证;真实桌面未验证,推理请求为 0。
|
|
24
|
+
- 再次核对原发行源码仍干净、快照一致,原六包与保留备份逐项完整性一致。
|
|
25
|
+
|
|
26
|
+
Go、DSH runtime 与发行包字节未修改,已通过的 Go quality/race、插件和桥接结果仍绑定原交付源码;不重新生成包。latest 尚未在本记录中声明完成,最终提升与新检查器提交身份以 GitHub Release 为准。
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# 0.28.3 发行复核(2026-11-05)
|
|
2
|
+
|
|
3
|
+
## 来源与范围
|
|
4
|
+
|
|
5
|
+
用户要求复核最新代码与 PR、修复问题并发行新版本。最新 PR [#28](https://github.com/ckanner/flywheel/pull/28) 已于 2026-11-05 合并为 `cf89b13491070bf290e8db773f09a3ea92df4270`;本轮从该提交独立准备统一六包 0.28.3,没有重复合并。
|
|
6
|
+
|
|
7
|
+
改动包括 DeepSeek 账号默认与显式迁移、精确账号错误分类及结构化码传递、会话当前目录和宿主技能语法。复核错误分类与进程物理终态、取消、坏协议和未确认清理的优先级;保留原始诊断和显式后备策略。OpenAI 模型档位说明与官方模型页及部署指南一致;未执行本项目模型 A/B 或真实模型推理。
|
|
8
|
+
|
|
9
|
+
## 发行复核修复
|
|
10
|
+
|
|
11
|
+
真实 Go worker 子进程回归复现:ready 后直接 exit 1、损坏终态以及错误 settings 均返回 TRANSPORT,但 CleanupError 为空,旧引擎可继续传输重试。补充独立清理确认事实,只有完整且匹配的终态才能确认 SDK shutdown;worker 已启动却无可信回执时保留协议诊断并停止本次运行。正常 provider 错误的已确认清理仍保留原重试策略,启动失败不误报遗留进程,取消与超时优先级保持。损坏 AUTH 尾帧同样覆盖为 TRANSPORT 与清理未知;所有终态(含取消)校验已知 session 身份。
|
|
12
|
+
|
|
13
|
+
原 error-before-timeout 用例仅留 100ms 启动真实 Go test 子进程,本机负载下可在发出 AUTH 前就超时,未覆盖其宣称的顺序。为 admission 预留 2 秒,仍验证收到账号错误后物理超时且保留 TIMEOUT 优先级;生产 watchdog 和测试断言未放宽。
|
|
14
|
+
|
|
15
|
+
## 门禁与边界
|
|
16
|
+
|
|
17
|
+
本机使用 macOS arm64、Go 1.27.3、Node 24.22.1、npm 12.2.1。
|
|
18
|
+
|
|
19
|
+
- `make quality-gate` 完整通过,逐函数 100% statement coverage;machine 为 413.473 秒。
|
|
20
|
+
- DSH 插件 `check`:108/108 通过。
|
|
21
|
+
- 根目录 npm:126/126 通过。
|
|
22
|
+
- 修复后的 Go/Node DSH 与 Codex Pro 离线桥接:两项通过,27.253 秒。
|
|
23
|
+
- 统一 0.28.3 的六包开发候选已隔离构建;真实 npm 安装测试 7/7 通过。开发候选标记 dirty,不用于上传;正式候选在批准提交后的精确干净 tag 上另行构建一次,并复测同一组 tarball。
|
|
24
|
+
- config、verify、watchdog、drivers、cli、modules、diagnostic 七包与 machine 的 race 全部通过;machine 为 346.933 秒。
|
|
25
|
+
|
|
26
|
+
Go 使用本机 Apple Git、`GOMAXPROCS=2`、`GOFLAGS="-p=1 -timeout=30m"`。外层测试窗口与包并发只控制测试资源,不改变生产 watchdog、取消断言、测试集合或 100% 门禁。本轮完整结果仅证明上述 Mac 与离线协议边界,不宣称最终源码的 Linux runtime、桌面 UI、账号授权、额度或真实推理已验收。
|
|
27
|
+
|
|
28
|
+
交互发行将继续调用现有 `releaseLocal`;仓库外 I/O adapter 仅将 npm publish/dist-tag 的上传与人工认证窗口设为最多 600 秒,避免原 180 秒同时计入较慢上传和浏览器认证。查询、180 秒可见性等待、killSignal、TTY、源码/tag/完整性和安装门禁保持不变;不改发布候选字节或账号安全设置。
|
|
29
|
+
|
|
30
|
+
合并后的 main CI [41978638516](https://github.com/ckanner/flywheel/actions/runs/41978638516) 的 npm-candidate 没有 runner 或步骤;检查注释明确为账号付款/支出限制。此结果不记为测试失败或 CI 通过。本轮沿用用户已授权的手动发行路径;精确 tag、干净来源、同一候选、六包 integrity、registry 安装和 latest 门禁保持不变。
|
|
31
|
+
|
|
32
|
+
升级保留现有用户配置。本轮发行不自动改写本机 API provider,也不更改凭证、DSH profile、真实运行任务或权限。采用账号预设需要另行显式迁移。最终上传、latest 和 registry 验证证据记录在 GitHub Release;本记录本身不证明发行已完成。
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# 订阅模型迁移、完全权限与任务 UI 验收
|
|
2
|
+
|
|
3
|
+
日期:2026-11-05。基线:`987a8641f09cdab83d81996df66eee183c073b7d`(0.28.1 发行准备)。
|
|
4
|
+
|
|
5
|
+
## 问题与修复范围
|
|
6
|
+
|
|
7
|
+
用户截图显示旧全局配置仍使用 Z.AI/GLM 和 Kimi K3,未采用已约定的 ChatGPT 订阅、Kimi Code 订阅和 DeepSeek Flash API 分工。安装会保留已有完整配置,新模板不会覆盖旧全局或更高优先级的项目/任务文件;此外 Kimi driver 的省略模型默认仍为 K3。既有 `approval=never` 只是非交互审批,不能把原来的 workspace-write/read-only 变为完全权限。
|
|
8
|
+
|
|
9
|
+
本轮增加显式 `config migrate --preset subscriptions`,按配置检查的同一优先级更新实际命中的文件,备份原始字节并保留非模型设置。迁移替换全部约定的模型、thinking 和活动渠道,关闭旧第二意见并报告移除旧多模态路由;未知自定义阶段/路由阻断。未引用的 profiles/channels 保留,所选渠道的旧 fallback 和模型映射移除,旧 Z.AI 不再自动可达。
|
|
10
|
+
|
|
11
|
+
新增 `permissions.mode`:新模板与显式迁移使用 full-access;旧文件未声明时保留 role-based。所有阶段、渠道降级、配置查看、doctor 和 Plan 恢复身份使用同一个权限解析器。DSH 使用公开 danger-full-access+never,Codex Pro 映射到其公开 machine API,Kimi 使用原生 print auto。完整访问不关闭契约、冻结验收和候选身份检查。
|
|
12
|
+
|
|
13
|
+
保留 PR #26 的原生 conversation.view 接入。面板补充已有任务的准备说明、任务资料目录/可选项目目录、检查安装与配置/检查 DSH 接入的用途;配置明确显示真实来源及权限,不自动扫描、创建或启动任务。
|
|
14
|
+
|
|
15
|
+
## 验证结果
|
|
16
|
+
|
|
17
|
+
环境:Linux amd64,Go 1.27.3,Node 24.22.1,npm 12.2.1。
|
|
18
|
+
|
|
19
|
+
| 验证 | 结果 | 证明范围 |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| `make quality-gate` | 通过;每个被测 Go 函数 100% statement coverage | vet、格式、完整 Go 回归;包括模型迁移、真实文件失败场景、权限与候选身份 |
|
|
22
|
+
| `npm --prefix plugins/dsh run check` | 87/87 | 构建、客户端行为、真实 rc.5 renderer 生命周期、DSH/Codex Pro 协议和进程收尾 |
|
|
23
|
+
| `npm test` | 126/126 | 启动器、安装报告、发行协议及取消行为 |
|
|
24
|
+
| 两项 Go → Node 离线桥接 | 2/2 | 真实 worker 进程、full-access 请求与回执、DSH 无推理 doctor、真实 Codex Pro 0.8.0 machine API |
|
|
25
|
+
| `go test -race`(config、machine、verify、watchdog、drivers、cli、modules、diagnostic) | 8 包通过 | 本轮变动及核心并发生命周期,无 race 报告 |
|
|
26
|
+
| 六包隔离构建 | 通过 | 四个平台原生二进制、插件与 meta 同版打包,校验包身份和 integrity |
|
|
27
|
+
| 同一候选的真实 npm 安装 | 7/7 | Linux amd64 的安装、重跑、用户配置保留、失败恢复、worker 调用与取消 |
|
|
28
|
+
| `git diff --check` | 通过 | 变更无空白错误 |
|
|
29
|
+
|
|
30
|
+
跨进程检查使用实际安装的 Codex Pro 公开 API;DSH SDK 对端和 Codex app-server 对端使用离线协议夹具。它们没有验证用户的真实账号、额度或模型响应。四个平台均完成交叉构建,实际安装执行仅在 Linux amd64。
|
|
31
|
+
|
|
32
|
+
## 关键失败场景
|
|
33
|
+
|
|
34
|
+
- 预览不写文件;应用前备份原始内容;大整数预算、用户说明、验证和 worktree 设置不丢失。重复应用不重新格式化或再建备份。
|
|
35
|
+
- 任务/项目/全局优先级、物理路径、陈旧预览、文件身份或权限变化、锁冲突、备份/写入/发布失败均有回归。新建全局文件采用排他发布,不能覆盖抢先创建的用户文件。
|
|
36
|
+
- 受限执行端不能用错误回执冒充完全权限。DSH 在 prompt 前拒绝策略不匹配;full-access 如实记录不受 OS 沙箱限制,不伪造 enforcement。
|
|
37
|
+
- Codex Pro 的请求枚举、实际 sandbox 和精确策略形状分别校验;兼容 Codex CLI 不伪造该插件才提供的有效配置回执。
|
|
38
|
+
- Plan 权限改变或旧状态缺权限身份时冷启动。完全权限的 Reviewer/第二 Judge 若改动候选,即使声称 pass 也不能推进交付。
|
|
39
|
+
- 独立审查发现“应用失败时仍展示候选为普通配置”的问题,现以 `configurationStatus` 区分 proposed/effective/unconfirmed,并补充只读文件失败和写入后读取失败回归。复核确认问题关闭。
|
|
40
|
+
- 安装报告区分配置 created/existing/error,不将初始化失败误报为已创建。安装本身不偷偷迁移已有模型配置。
|
|
41
|
+
|
|
42
|
+
## 候选身份与发行边界
|
|
43
|
+
|
|
44
|
+
本轮开发候选仍使用仓库现有版本 `0.28.1`,基线提交如上,`dirty: true`。源码快照:
|
|
45
|
+
|
|
46
|
+
```text
|
|
47
|
+
67607ab3938e2c883d014fc5921d7599ea2e12a02f18d346948714a23f7f75f5
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
六包为 `@ckanner/flywheel`、`@ckanner/dsh-plugin-flywheel` 及 darwin-arm64/darwin-amd64/linux-arm64/linux-amd64 四个平台包。安装测试直接消费这批 tarball;测试后源码快照再次核对一致。本验收记录在候选验证后补入,不改变被测程序或打包清单中的用户文档。
|
|
51
|
+
|
|
52
|
+
此候选只作开发验证,不能覆盖 npm 已发布的 0.28.1;本轮没有发布包或推进 dist-tag。检查时 registry latest 为 0.28.1,其中尚无新迁移命令和 permissions.mode。源码提交、PR/CI 状态和后续正式发行须分别报告。
|
|
53
|
+
|
|
54
|
+
## 实际限制
|
|
55
|
+
|
|
56
|
+
没有接入用户 Mac,未修改截图中的全局配置,也未完成 Mac 桌面几何、账号登录或真实付费模型调用验收。任务运行中不会热加载配置,下次引擎启动才使用新绑定。
|
|
57
|
+
|
|
58
|
+
迁移采用同类进程互斥、发布前文件复核和完整文件的原子可见替换。它不声称对任意外部编辑器提供原子 CAS,也不声称目录 fsync 所需的掉电事务保证。迁移期间不要同时编辑目标文件。
|
|
59
|
+
|
|
60
|
+
完全权限通过后端正式接口请求;宿主静态拒绝、管理员配置和操作系统账号权限仍然有效。它不会自动把桌面全部插件能力复制到独立 worker,既有辅助模型/自主委派/web 工具限制仍在。
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# 0.28.5 会话视图排序复核
|
|
2
|
+
|
|
3
|
+
用户要求将 Flywheel 放到“统计”之后,自定义视图排在内置视图后。实际 DSH 0.2.2-rc.1 显示“对话/轨迹/Flywheel/统计”;插件注册 order 为 20,上游内置 Stats 在固定提交 66491b05e3f05ad35bcdd4f6cd7ed26041d9e3db 中为 40。官方 entry-customization 文档明确更多菜单没有 Pin 或排序操作。
|
|
4
|
+
|
|
5
|
+
本次只把 Flywheel 公共 slot 注册顺序设为 1000,保留内置条目、ID 和布局所有权,不改变模型、权限、SDK 或 Go 控制协议。六包版本统一为 0.28.5;0.28.4 的已发布源码、tag 和 tarball 不覆盖。现有账号配置保持。
|
|
6
|
+
|
|
7
|
+
按仓库要求运行既有门禁,不改原有断言和时限:
|
|
8
|
+
|
|
9
|
+
- 插件主检查 109/109、旧版真实 renderer 生命周期 1/1 通过;两版发布的 renderer 均检查同一插件构建。
|
|
10
|
+
- Go/Node DSH 与 Codex Pro 跨进程桥接两项通过(28.069 秒)。
|
|
11
|
+
- npm 协议/安装器单元门禁 126/126 通过(130.219 秒)。
|
|
12
|
+
- 首轮并发检查时观测到本机负载 236,多项启动/取消检查超时;降低到单文件并发后插件和桥接通过,根 npm 有两项 15 秒外层测试窗口超时。负载回落后,同样源码、断言和时限的完整 npm 门禁通过,没有扩大测试窗口或改生产超时。
|
|
13
|
+
|
|
14
|
+
六个同版本开发候选已隔离构建,实际 npm 安装门禁 7/7 通过(8.200 秒)。开发候选标记 dirty,不用于上传;正式候选将在批准后的精确干净 tag 上构建并复测。用户已选择继续准备 0.28.5,而非并入以后更新。本文不声明已发布或本机已改变排序;当前桌面仍为 0.28.4。
|