@ckanner/flywheel 0.29.1 → 0.30.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 +21 -0
- package/README.en.md +8 -2
- package/README.md +8 -2
- package/docs/claude-code-pro.md +1 -1
- package/docs/configuration.md +30 -0
- package/docs/en/claude-code-pro.md +2 -2
- package/docs/en/configuration.md +30 -0
- package/docs/en/flow-console.md +104 -0
- package/docs/en/getting-started.md +6 -2
- package/docs/en/workflow.md +6 -0
- package/docs/flow-console.md +108 -0
- package/docs/getting-started.md +6 -7
- package/docs/workflow.md +7 -1
- package/package.json +9 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.30.1 — 任务发现与可选影子评估
|
|
4
|
+
|
|
5
|
+
- 画布以任务选择为入口:按 DSH 会话 ID 找回 CLI 运行,旧记录一键选择;删除路径输入框,有实际位置时自动显示只读信息。
|
|
6
|
+
- 单阶段回执独立呈现;Review 默认展示 L1 → Review、记录评分和整体交付边界,完整流程可展开。
|
|
7
|
+
- 单阶段技能补充只读状态关联,区分加载技能、准备任务和实际启动。
|
|
8
|
+
- JEV 默认关闭,可选全局/项目开关;开启只做有界影子评估,失败不阻断原工作流,不参与实际 Quick/Full 选择。
|
|
9
|
+
- 修正 Claude 关闭 stdin 故障用例的额外子进程时序,并保留逐函数 100% 门禁。
|
|
10
|
+
|
|
11
|
+
源码、开发候选与正式发布分别验收;0.30.0 安装不会自动获得本轮变更。
|
|
12
|
+
|
|
13
|
+
## 0.30.0 — 流程控制台
|
|
14
|
+
|
|
15
|
+
- DSH 横向画布:规划/拆分、调度、任务、集成、终验、PR、Merge;节点运行、重跑与完整证据。
|
|
16
|
+
- 全局/项目配置编辑、逐阶段权限、Provider/模型/thinking 映射及角色历史策略。
|
|
17
|
+
- CLI 运行登记、多任务关联、运行归属与按 invocation 对账的成本/时延/验收统计。
|
|
18
|
+
- 受管 Provider session 交互、核对回执、验证交回与保持暂停退出;会话账本 v2 防止旧引擎忽略接管。
|
|
19
|
+
- 显式依赖/写入范围下的并行 Execute/L1、集中 CAS 与预算、串行 Review/合成候选复验。
|
|
20
|
+
- 明确授权的 PR 推送/创建和精确 HEAD 合并;保留未知或排队中的远端结果。
|
|
21
|
+
|
|
22
|
+
源码门禁与同候选双平台安装已通过;npm 可用性以六包 registry 完整性、公开安装及 latest 复核为准。
|
|
23
|
+
|
|
3
24
|
## 0.29.1
|
|
4
25
|
|
|
5
26
|
- 完成会话 P3 源码:Codex Pro 0.9.0/Claude Code Pro 0.4.0 公开 lifecycle v1、独立 durable journal 与只读 recovery,经 worker v3 接入 Go。派发检查点先 fsync 再 ACK;恢复终态仍绑定原候选和角色 guard,未知不盲目重放。
|
package/README.en.md
CHANGED
|
@@ -8,7 +8,7 @@ Current source supports **Auto, Quick, and Full** workflows. `flywheel-task` pre
|
|
|
8
8
|
|
|
9
9
|
Session policy supports **fresh/scoped**: new templates explicitly choose scoped, while old configurations default to fresh. Scoped mode can continue compatible history for the same task, role, and scope after a trusted normal terminal outcome; independent re-review still checks the complete current candidate. Both modes journal main-task Codex Pro, Claude Code Pro, DSH, and Kimi calls. Unknown dispatch, outcome, or cleanup blocks execution and cannot be bypassed by switching modes. P3 adds public typed lifecycle events, durable acknowledgements, and read-only Codex/Claude receipt recovery. P4 adds role overrides, bounded quality rebuilds, and paired evaluation tools. Real-account quality, cache, and performance results remain unverified; offline tests cannot establish them. See [Interrupted calls and context quality](docs/en/session-recovery.md). See [Session policy](docs/en/configuration.md#session-policy-history-reuse-and-invocation-safety).
|
|
10
10
|
|
|
11
|
-
This source targets **0.
|
|
11
|
+
This source targets **0.30.1**, including account defaults, account-error handling, and the current session directory. Check the npm registry before installing; merging source does not update an installed package. The desktop integration covers the checked **DSH Mac 0.2.1-rc.5 and 0.2.2-rc.1** interfaces. Version 0.28.4 declares only these two runtime versions. Check the registry before installing a version. Offline tests do not establish a live user Mac, account, or model pass.
|
|
12
12
|
|
|
13
13
|
The adaptive workflow and `flywheel-task` require a matching CLI/plugin release containing these changes. Check `flywheel control launch --help`; the older installation commands alone do not establish that this new interface is available.
|
|
14
14
|
|
|
@@ -104,7 +104,7 @@ flywheel control status --cwd "$PWD" --task-dir "$PWD/docs/my-feature"
|
|
|
104
104
|
|
|
105
105
|
`control launch` defaults to Auto and consumes prepared contracts; it does not invent requirements or create the outer task branch. `control start` and foreground `run` preserve the contract/persisted selection when `--mode` is omitted. Their optional mode is `auto|quick|full`; Go still enforces eligibility and one-way upgrade rules. `--only execute` is a partial loop, not Quick or complete delivery.
|
|
106
106
|
|
|
107
|
-
Packet delivery is a **local Git operation**. After evidence matches the current candidate, the engine commits the packet and fast-forwards it into the branch checked out at `cwd`. With the recommended layout, that is the task integration branch.
|
|
107
|
+
Packet delivery is a **local Git operation**. After evidence matches the current candidate, the engine commits the packet and fast-forwards it into the branch checked out at `cwd`. With the recommended layout, that is the task integration branch. Ordinary run does not publish remotely. Explicit console/CLI delivery controls can push a verified commit, create a PR and merge its exact head after authorization; release publication remains a separate operation. See [Workflow](docs/en/workflow.md) for commands, directory ownership, and merge timing.
|
|
108
108
|
|
|
109
109
|
### Desktop task controls
|
|
110
110
|
|
|
@@ -163,3 +163,9 @@ Maintainers can build the six packages from a tagged source checkout and use the
|
|
|
163
163
|
## License status
|
|
164
164
|
|
|
165
165
|
The package currently declares **`UNLICENSED`**. An open-source license has not been selected; these English documents do not change the repository's visibility or licensing status.
|
|
166
|
+
|
|
167
|
+
### Workflow console (current source)
|
|
168
|
+
|
|
169
|
+
The DSH view adds a horizontal task canvas, stage run/retry, per-stage configuration, controlled Provider-session interaction, declared parallel execution with serial integration, observed run metrics and PR/Merge receipts. See the [console guide](docs/en/flow-console.md). Source implementation does not imply npm publication or a local upgrade.
|
|
170
|
+
|
|
171
|
+
Optional, default-off JEV shadow evaluation is included in the 0.30.1 source; see the [guide](docs/en/jev-shadow.md). Advice cannot change workflows, and observer failures do not block tasks.
|
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Codex Pro、Claude Code Pro、DSH、Kimi 的主任务调用在两种模式下都
|
|
|
14
14
|
真实账号的质量、缓存与性能结果仍待完成,不能由离线实验推断。详见
|
|
15
15
|
[会话配置](docs/configuration.md#会话策略历史复用与调用安全)及[中断恢复与上下文质量](docs/session-recovery.md)。
|
|
16
16
|
|
|
17
|
-
当前源码的统一发行目标为 **v0.
|
|
17
|
+
当前源码的统一发行目标为 **v0.30.1**,使用 DSH Mac 桌面为入口:Kimi CLI 规划,DSH 原生 DeepSeek Flash 执行,DSH 原生 GPT 评审,较难的执行任务默认走 Codex Pro 插件的公开 machine API。0.28.3 包含 DeepSeek 账号默认、账号错误分类与会话当前目录修复;安装前核对 npm registry,源码合并不会更新已安装的包。DSH 插件提供控制面板、配置查看和安装预检;具名 model profiles 可复用于不同阶段,Go 仍是唯一状态所有者。设计依据见 [docs/design.md](docs/design.md),仓库约束见 [AGENTS.md](AGENTS.md)。
|
|
18
18
|
|
|
19
19
|
**基础安装命令适用于 0.28.0 及以后的完整 npm 发行版;Auto/Quick/Full 与 `flywheel-task` 需要包含本轮变更的同版本 CLI/插件。** 用 `flywheel control launch --help` 检查新增入口是否存在,并在安装前用 `npm view @ckanner/flywheel version` 核对 registry;源码合并或 GitHub Release 不代表 npm 已发行。旧 0.22.1 没有本教程使用的安装与 DSH 接口,当前发行状态见[发行记录](docs/releasing.md#3-失败恢复)。
|
|
20
20
|
|
|
@@ -152,7 +152,7 @@ Quick 不省略仓库门禁、适用 L2/L3、缺陷注入或 Git 持久化检查
|
|
|
152
152
|
阶段 Agent 调用(Execute、最终 Review),不含宿主准备、内部工具轮次与重试。
|
|
153
153
|
旧任务缺少新字段仍为 Full;恢复沿用持久化策略,Full 不因重启自动降为 Quick。
|
|
154
154
|
|
|
155
|
-
业务仓库建议先建立任务集成分支与独立 worktree;准备契约、Draft PR 和人工合并的完整流程见[从需求准备到 PR 合并](docs/workflow.md)。引擎的单元合并目标是启动 checkout 当前所在分支,GitHub PR
|
|
155
|
+
业务仓库建议先建立任务集成分支与独立 worktree;准备契约、Draft PR 和人工合并的完整流程见[从需求准备到 PR 合并](docs/workflow.md)。引擎的单元合并目标是启动 checkout 当前所在分支,GitHub PR 操作由使用者或获授权的宿主执行,也可使用[流程控制台](docs/flow-console.md)的明确授权入口。
|
|
156
156
|
|
|
157
157
|
准备阶段由当前 DSH 对话模型生成需求契约,`loops.plan` 只控制引擎启动后的规划/修订。复杂需求建议先用已授权的 `gpt-6-astra`、`high` 生成可审阅草稿;简单明确的任务可沿用 Flash,避免每个 packet 都重复调用昂贵规划模型。
|
|
158
158
|
|
|
@@ -285,3 +285,9 @@ npm run build:npm
|
|
|
285
285
|
## 许可证
|
|
286
286
|
|
|
287
287
|
当前源码与 Flywheel npm 包标记为 `UNLICENSED`,尚未授予开源许可证。英文文档和公开 npm 分发不改变这一状态;正式开源时需由维护者选择许可证,并同步源码声明与全部包的 metadata。第三方依赖遵循各自许可证。
|
|
288
|
+
|
|
289
|
+
### 流程控制台(当前源码)
|
|
290
|
+
|
|
291
|
+
DSH 会话视图提供从左到右的任务画布、节点运行/重跑、按阶段配置、受管 Session 交互、声明式并行与串行集成、运行指标和 PR/Merge 回执。完整操作与当前能力边界见[控制台指南](docs/flow-console.md)。源码状态不等于 npm 已发布或本机已升级。
|
|
292
|
+
|
|
293
|
+
可选、默认关闭的 JEV 影子评估源码实现见[使用说明](docs/jev-shadow.md)。开启仅记录建议,故障不阻断原流程;需要同版本 CLI/插件。
|
package/docs/claude-code-pro.md
CHANGED
|
@@ -9,7 +9,7 @@ Flywheel 现在可通过 `harness: "claude-code-pro"` 调用
|
|
|
9
9
|
|
|
10
10
|
**源码与发行边界:**此接入要求插件 **0.4.0 / machine protocol 1**;0.3.1 只有
|
|
11
11
|
DSH 工具入口,0.3.2 只有旧 machine 契约,均不满足新 lifecycle/recovery 接口。0.4.0 是本次配套源码版本,不能据此推断 npm 已
|
|
12
|
-
发布。Flywheel
|
|
12
|
+
发布。Flywheel 0.30.0 已发布;Claude 0.4.0 仍按下面的可选依赖流程准备。
|
|
13
13
|
合并、发布及用户安装各有独立状态。现有默认 loop/route 没有切换到 Claude。
|
|
14
14
|
|
|
15
15
|
## 1. 准备依赖
|
package/docs/configuration.md
CHANGED
|
@@ -407,3 +407,33 @@ lifecycle/recovery 导出、Node >=22.18.0 与 Codex 命令版本;同一 wor
|
|
|
407
407
|
任何 probe 都不发送 `session/prompt`、不运行 L1/L2/L3、不写 Flywheel 状态或创建工作树;SDK 初始化可能访问 provider 目录并产生自己的会话/缓存文件。只读指 Flywheel 配置与任务状态,不表示整个宿主文件系统绝对无写入。
|
|
408
408
|
|
|
409
409
|
桌面面板、`/flywheel` 和 `flywheel_control` 共用 `control config|doctor`,可省略 taskDir;只有 doctor 支持 `probe:true`。诊断阻断与传输失败分开显示。桌面使用的 PATH/profile/环境可能与终端不同,安装后应在面板里再检查一次。
|
|
410
|
+
|
|
411
|
+
### 在流程控制台编辑配置
|
|
412
|
+
|
|
413
|
+
DSH 的「全局 / 项目配置」先读取显式作用域和文件 revision,再编辑模型绑定、角色会话策略、预算、超时、重试或全局权限。保存前显示字段差异。目标文件被其他编辑器修改时拒绝覆盖,保存结果未确认时先重新读取核对。新项目文件以当前版本默认模板创建完整配置,项目文件优先于全局,任务文件优先于项目。
|
|
414
|
+
|
|
415
|
+
高级调用通过 stdin 传入 JSON。读取示例使用 `flywheel control config-edit --cwd /absolute/repo`,输入为 `{"scope":"project"}`。保存使用 `control config-save`,输入包含 scope、读取返回的 revision,以及仅包含改动章节的 values。reset=true 从内嵌默认完整模板开始替换。配置保存创建备份并原子发布,下一次引擎启动时加载。
|
|
416
|
+
|
|
417
|
+
### 控制台权限与调度
|
|
418
|
+
|
|
419
|
+
`permissions.bindings` 在全局 `permissions.mode` 上按 `loops.<role>`、`routes.<route>`、`judge-panel` 覆盖实际宿主权限,值为 `read-only`、`workspace-write` 或 `danger-full-access`。语法以 `permission-policy.schema.json` 为准;后端仍须证明支持该权限,不会把 Claude 原生审批模式伪装成只读沙箱。
|
|
420
|
+
|
|
421
|
+
`scheduler` 的字段以 `scheduler-policy.schema.json` 为准。默认 serial;parallel 只并发满足冻结 `schedule.after/writes` 的独立单元,`max-parallel` 控制任务并发,`providers` 按实际账号渠道限流。hard 预算在确认计费前只允许一个模型调用。声明缺失或写入冲突不会被解释为独立。
|
|
422
|
+
|
|
423
|
+
例如把 Review 固定为只读,并允许两个已声明独立的任务并行:
|
|
424
|
+
|
|
425
|
+
```json
|
|
426
|
+
{
|
|
427
|
+
"permissions": {
|
|
428
|
+
"mode": "full-access",
|
|
429
|
+
"bindings": {"loops.review":"read-only","routes.hard":"workspace-write"}
|
|
430
|
+
},
|
|
431
|
+
"scheduler": {"mode":"parallel","max-parallel":2,"providers":{"deepseek-account":1}}
|
|
432
|
+
}
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
这是字段片段,不是可直接替代完整配置的文件。控制台按实际文件读取完整草稿并校验后保存。CLI 运行索引、受管 Session 交互、指标完整性和 PR/Merge 权限边界见[流程控制台](flow-console.md)。
|
|
436
|
+
|
|
437
|
+
## 可选 JEV 影子评估
|
|
438
|
+
|
|
439
|
+
`jev-shadow.enabled` 默认 false,旧配置缺省同样关闭。全局/项目编辑器支持开关;开启只观察新任务,失败不阻断流程,不改变实际 Quick/Full。endpoint、固定响应版本、密钥变量名和时限详见 [JEV 指南](jev-shadow.md)。此功能需要 0.30.1 CLI/插件。
|
|
@@ -11,8 +11,8 @@ budgets, and delivery.
|
|
|
11
11
|
**Source and release boundary:** the integration requires plugin **0.4.0,
|
|
12
12
|
machine protocol 1**. Version 0.3.1 only exposes the DSH tool interface and lacks
|
|
13
13
|
the required machine receipt. The companion source version does not establish
|
|
14
|
-
an npm publication. Flywheel
|
|
15
|
-
|
|
14
|
+
an npm publication. Flywheel 0.30.0 is released; prepare Claude 0.4.0 through
|
|
15
|
+
the optional-dependency procedure below. No default stage or route selects Claude.
|
|
16
16
|
|
|
17
17
|
## 1. Prepare the optional dependency
|
|
18
18
|
|
package/docs/en/configuration.md
CHANGED
|
@@ -352,3 +352,33 @@ Codex Pro checks actually import the public API and verify exact version 0.9.0/p
|
|
|
352
352
|
No probe sends an inference prompt, runs L1/L2/L3, creates a worktree, or writes Flywheel task state. SDK initialization may contact a provider's catalog and write its own cache/session files; read-only here is scoped to Flywheel state and configuration. Recheck in the desktop panel because its PATH/profile/environment may differ from the terminal.
|
|
353
353
|
|
|
354
354
|
Repository references: [inline defaults](https://github.com/ckanner/flywheel/blob/main/templates/flywheel.config.example.json), [complete profiles](https://github.com/ckanner/flywheel/blob/main/templates/flywheel.profiles.example.json), [design](https://github.com/ckanner/flywheel/blob/main/docs/design.md), and [worker protocol](https://github.com/ckanner/flywheel/blob/main/plugins/dsh/PROTOCOL.md).
|
|
355
|
+
|
|
356
|
+
### Editing configuration in the workflow console
|
|
357
|
+
|
|
358
|
+
The Global / project configuration view first reads an explicit scope and file revision. Edit model bindings, role history policies, budget, timeouts, retries or the global permission policy, then review section changes before saving. Concurrent edits reject replacement; reread an unconfirmed save before proceeding. New project files use the current version's complete default template. Task files override project files, which override global configuration.
|
|
359
|
+
|
|
360
|
+
Advanced callers send JSON on stdin to `flywheel control config-edit --cwd /absolute/repo`, with `{"scope":"project"}`. Save through `control config-save` using scope, the returned revision and values containing changed sections only. With reset=true, replacement starts from the full embedded default template. Saving creates a backup and publishes atomically; the next engine start loads the file.
|
|
361
|
+
|
|
362
|
+
### Console permissions and scheduling
|
|
363
|
+
|
|
364
|
+
`permissions.bindings` overrides the global mode by `loops.<role>`, `routes.<route>` or `judge-panel`, using read-only, workspace-write or danger-full-access. Read `permission-policy.schema.json` for the contract. Adapters must still prove the requested capability; native Claude approval modes are not advertised as an OS read-only sandbox.
|
|
365
|
+
|
|
366
|
+
`scheduler` is defined by `scheduler-policy.schema.json`. Serial is the default. Parallel only dispatches independent units declared by frozen schedule.after/writes; max-parallel limits units and providers limits actual account channels. Hard budgets admit one model call until its accounting is durable. Missing declarations and overlapping write scopes are not independence.
|
|
367
|
+
|
|
368
|
+
For example:
|
|
369
|
+
|
|
370
|
+
```json
|
|
371
|
+
{
|
|
372
|
+
"permissions": {
|
|
373
|
+
"mode": "full-access",
|
|
374
|
+
"bindings": {"loops.review":"read-only","routes.hard":"workspace-write"}
|
|
375
|
+
},
|
|
376
|
+
"scheduler": {"mode":"parallel","max-parallel":2,"providers":{"deepseek-account":1}}
|
|
377
|
+
}
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
This is a field excerpt, not a complete configuration replacement. The console reads and validates the complete selected file. See the [console guide](flow-console.md) for run indexing, controlled session interaction, observation completeness and remote-delivery authority.
|
|
381
|
+
|
|
382
|
+
## Optional JEV shadow evaluation
|
|
383
|
+
|
|
384
|
+
`jev-shadow.enabled` defaults to false, including older configurations that omit it. The global/project editor exposes the switch. Enabling only observes new tasks; failures never block workflows or change Quick/Full. See the [JEV guide](jev-shadow.md) for endpoint, version pin, key variable and timeout. This feature requires the 0.30.1 CLI/plugin.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Flywheel workflow console
|
|
2
|
+
|
|
3
|
+
This guide describes the current source. Source, development candidates, local installation and npm publication are separate acceptance boundaries. Keep the CLI, platform packages and DSH plugin at one version.
|
|
4
|
+
|
|
5
|
+
## Find a task without entering paths
|
|
6
|
+
|
|
7
|
+
The canvas starts with task selection. One registered task belonging to the current DSH conversation opens automatically; multiple tasks require a choice. Terminal runs also record DSH's host session ID. This is discovery metadata, never authorization. The UI reads Go state after finding an index entry; the index is not proof of liveness or completion.
|
|
8
|
+
|
|
9
|
+
Older records without a host ID remain selectable under Recent tasks on this computer. Selection performs a read-only status query and associates the task with the conversation. Refreshing the list does not start, retry or replace a manually selected task. Read failures retain the existing canvas; unresolved operations still require reconciliation against their original task.
|
|
10
|
+
|
|
11
|
+
There are no editable task/project path fields. The assistant and engine supply the location; known workspace, task-record location and branch values appear as read-only information, while missing values are omitted. The task folder contains the specification, acceptance checks and progress; the workspace is the actual execution project/worktree. A prepared task can be associated by the assistant using read-only status and then selected from the list.
|
|
12
|
+
|
|
13
|
+
Loading a skill does not start the engine. flywheel-task prepares and calls flywheel_launch; a research/proposal-only response must explicitly say the engine was not started. Single-stage skills query flywheel_control status afterward to associate their canvas, or disclose the exact path when that tool is absent rather than claiming association.
|
|
14
|
+
|
|
15
|
+
## This stage versus the full workflow
|
|
16
|
+
|
|
17
|
+
When run.kind and control.kind identify the same single-stage operation, This run shows its recorded outcome. A review-only run defaults to **L1 → Review**, including the recorded verdict and score, while stating that overall delivery is not complete. Switch to Full workflow for the larger graph.
|
|
18
|
+
|
|
19
|
+
Continue workflow is behind an explicit disclosure. A passed stage does not start subsequent stages or mark the task completed. Failed, cancelled and unknown operations cannot inherit an older green verdict. Run ID, HEAD and digests are collapsed under Run details and file locations.
|
|
20
|
+
|
|
21
|
+
## Configuration
|
|
22
|
+
|
|
23
|
+
In an existing DSH conversation view, Flywheel remains after Statistics; the blank new-session landing page does not yet show these conversation views. Its pages are Workflow canvas, Global/project configuration, and Runs and comparison. Global settings require no task directory. Project settings target the selected Git root. Discovery still selects one complete file in task → project → global → embedded order; it does not deep-merge files.
|
|
24
|
+
|
|
25
|
+
Read a draft, edit the resource/Harness, model, effort, permissions and history policy, then inspect the target and diff. Version defaults replace the complete configuration. Go checks the content revision, backs up the original and publishes atomically. A running engine retains its snapshot; subsequent starts load the new settings.
|
|
26
|
+
|
|
27
|
+
Resources include ChatGPT through DSH or Codex Pro, Kimi Code, DeepSeek Account (Flash by default), and optional Claude Code Pro. Defaults come from the embedded template. Use config inspect and doctor for actual backend capabilities. An absent peer or unsupported permission fails explicitly. Provider sign-in stays with its normal account flow.
|
|
28
|
+
|
|
29
|
+
`permissions.bindings` overrides `loops.<role>`, `routes.<route>` or `judge-panel`. Unspecified bindings use the global policy. History overrides are role-based: execution routes share the execute policy while each packet keeps its own session. Scoped continuation requires the same task, role, goal and eligible binding; fresh also retains invocation-safety records.
|
|
30
|
+
|
|
31
|
+
## Canvas and operations
|
|
32
|
+
|
|
33
|
+
The left-to-right canvas shows Plan/decomposition, scheduling, task branches, integration, final acceptance, PR and Merge. A packet expands into Execute, L1, Review and Git delivery. State colors have text labels. Details identify the DSH source conversation, project/worktree, branch, HEAD, run ID, actual invocation binding and failure evidence.
|
|
34
|
+
|
|
35
|
+
The canvas supports panning, locating the current node and packet paging. Large tasks use bounded diagnostic excerpts. Read full node evidence loads one packet with a matching fresh canvas revision; it never changes the original ledger.
|
|
36
|
+
|
|
37
|
+
- Run stage submits the observed revision for lease-bound admission.
|
|
38
|
+
- Continue once records a reason and adds one Execute/L1 attempt without resetting failures or billing.
|
|
39
|
+
- Reopening a completed packet archives old evidence and invalidates downstream acceptance.
|
|
40
|
+
- Git delivery requires current L1 and independent Review evidence.
|
|
41
|
+
- Final acceptance runs milestone gates and Judge without starting Plan or unfinished execution units.
|
|
42
|
+
- Continue workflow resumes the persisted Full or ultraWork/Quick policy.
|
|
43
|
+
- Stop waits for managed work to settle; closing a view is not a stop.
|
|
44
|
+
|
|
45
|
+
Explicitly independent packets with satisfied dependencies can be run ahead in isolated worktrees. Integration changes invalidate old acceptance. Each asynchronous node operation records running/passed/failed/cancelled and its reason. Quick retains deterministic checks and independent final Review; omitted Plan/Judge stages are not presented as passes.
|
|
46
|
+
|
|
47
|
+
## Parallel execution
|
|
48
|
+
|
|
49
|
+
Read `flywheel template scheduler-policy.schema.json` for the current fields and bounds. For example:
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
{"scheduler":{"mode":"parallel","max-parallel":2,"providers":{"deepseek-account":1}}}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Provider-limit keys are account channel names. Eligibility comes from frozen packet contracts:
|
|
56
|
+
|
|
57
|
+
```yaml
|
|
58
|
+
schedule:
|
|
59
|
+
after: [M01-T01]
|
|
60
|
+
writes: [src/search/, tests/search/]
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Dependencies reference earlier known packet IDs. Writes are normalized relative paths or directory prefixes, without globs or escapes. Include ordinary tests/configuration and account for shared test resources. Undeclared independence, overlapping scopes and live-credential units remain serial.
|
|
64
|
+
|
|
65
|
+
Only Execute/L1 run concurrently. Each unit has a worktree; one Go coordinator serializes CAS writes and accounting. Hard budgets admit only one model call at a time, retaining its slot through durable accounting. Other modes enforce total and channel concurrency. Cancellation awaits every started worker.
|
|
66
|
+
|
|
67
|
+
Review, integration and milestone gates remain serial. A combined candidate is revalidated after incorporating earlier work. Bounded execution failures retain their escalation policy. Integration conflicts and failed gates preserve the worktree and evidence. Write scopes are orchestration/acceptance contracts; full access is not an OS sandbox.
|
|
68
|
+
|
|
69
|
+
## Controlled Provider session interaction
|
|
70
|
+
|
|
71
|
+
Read latest response opens the exact digest-bound receipt, not an invented native history path or a claim of complete provider history.
|
|
72
|
+
|
|
73
|
+
A settled, consumed, eligible packet session can be claimed. The persisted handoff prevents automatic run/step from continuing. Both the desktop prompt form and managed terminal restore that exact thread through its adapter and keep budgets/accounting. Missing history, changed bindings or a required rebuild cannot silently become a cold start.
|
|
74
|
+
|
|
75
|
+
```sh
|
|
76
|
+
cd -- '/absolute/task-worktree'
|
|
77
|
+
flywheel session '/absolute/task-worktree/docs/task-slug' --key 'execute/M01-T01'
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Each terminal line is a prompt. `/history` reads the latest response; `/reconcile` checks the original invocation; `/return` validates and returns; `/release` releases human control while staying paused; `/quit` retains the handoff. The desktop form supports multiline prompts.
|
|
81
|
+
|
|
82
|
+
Returning runs L1, applicable Quick gates and independent Review. Human text is not a passing verdict. Candidate-bound human-takeover evidence allows normal subsequent delivery. Release does not claim verification and cannot bypass unknown effects or cleanup. Milestone sessions currently expose read-only responses; interactive handoff is packet-scoped.
|
|
83
|
+
|
|
84
|
+
Ledger storage v2 is accepted by the new engine alongside legacy v1. Older engines reject v2 rather than ignoring human ownership. Session policy-version remains 1; worker/lifecycle versions are independent.
|
|
85
|
+
|
|
86
|
+
## Discovery and comparison
|
|
87
|
+
|
|
88
|
+
CLI and desktop starts register run IDs. A conversation retains multiple confirmed task associations. The index lives in runs/ beside the global configuration, optionally overridden by absolute FLYWHEEL_RUNS_DIR. It shows the latest 100 registrations and never scans the disk. Query Go again for liveness.
|
|
89
|
+
|
|
90
|
+
Compare operation kind, branch, HEAD, contract/configuration conditions, elapsed time and newly observed attempts, failures and deliveries. Select an exact run or all calls for the current task, including unregistered legacy observations. Invocation/receipt reconciliation precedes aggregation; late receipts keep their original attribution and are not double-billed.
|
|
91
|
+
|
|
92
|
+
Usage, cost and duration are known amounts, with missing/partial observations retained. Costs may include estimates from configured prices. Call failure rate is not code quality. Different conditions permit descriptive comparison only; quality conclusions require acceptance evidence and an independent oracle.
|
|
93
|
+
|
|
94
|
+
## PR and Merge
|
|
95
|
+
|
|
96
|
+
Inspect the project and remote first. Writes require normal GitHub CLI authentication, completed local acceptance, a still-valid candidate, and explicit repository/HEAD/base authorization. A changed registered repository identity is rejected. Fetch and push URLs must identify the same repository.
|
|
97
|
+
|
|
98
|
+
Push uses the approved commit and named task branch, without force, implicit tags or recursive submodule pushes. A separate remote task branch does not require switching the local checkout. Requery after push so an earlier Draft PR is updated instead of duplicated.
|
|
99
|
+
|
|
100
|
+
Merge rechecks the PR, head, base and checks, using `--match-head-commit`. It never uses admin bypass or enables auto-merge on its own. Merge-queue acceptance and actual MERGED state remain distinct; see the [GitHub CLI contract](https://cli.github.com/manual/gh_pr_merge).
|
|
101
|
+
|
|
102
|
+
Retries reconcile existing PR/merge results before mutations. Missing receipts remain unknown. Remote state is separate from local engine completion. Publication must bind the actual merge commit and artifacts for its own validation; Merge does not automatically publish npm packages or deploy.
|
|
103
|
+
|
|
104
|
+
The configuration panel also exposes default-off **JEV shadow evaluation (optional)**. See the [JEV guide](jev-shadow.md) for the switch, transmitted data and nonblocking failures. This requires the 0.30.1 CLI/plugin.
|
|
@@ -223,9 +223,9 @@ flywheel control status --cwd "$PWD" --task-dir "$PWD/docs/add"
|
|
|
223
223
|
|
|
224
224
|
In DSH Chat, the equivalent entries are `/flywheel-run <absolute-task-path>` and `/flywheel-status <same-path>`, with `/flywheel-stop <same-path>` when stopping is needed. Replace the placeholders with the real path returned during preparation. These skills resolve the project root without requiring an initial view selection.
|
|
225
225
|
|
|
226
|
-
Launch/start through
|
|
226
|
+
Launch/start through flywheel_launch or flywheel_control associates the task with this DSH conversation. Terminal runs record the host session ID; older runs are selectable from recent tasks. There are no editable path fields: known locations supplied by the assistant/engine appear read-only. Prepared tasks can also be associated through a read-only status query.
|
|
227
227
|
|
|
228
|
-
|
|
228
|
+
The UI separates the last stage from overall delivery and refreshes running state plus registered discovery. It does not scan directories. Public session projections restore explicit associations; forks do not inherit the parent task. Selection and status snapshots are separate, late replies cannot replace another task, and unconfirmed operations require reconciliation against their original target.
|
|
229
229
|
|
|
230
230
|
After a launch/start/stop timeout or disconnect, the background task's outcome may be unconfirmed. Keep the original task and project paths, refresh that task's status, and inspect logs before deciding how to recover. The view disables further mutations until that task is successfully reconciled and never retries them automatically. A prior snapshot, closing a page, or switching sessions cannot prove the engine stopped. The native trajectory retains its parent-session records; full worker histories are not merged into it.
|
|
231
231
|
|
|
@@ -261,6 +261,10 @@ For the first real run, record whether the task reached `completed`, all require
|
|
|
261
261
|
|
|
262
262
|
Stop active tasks and confirm their state, preserve configuration/customizations, then rerun the installation command with the original prefix/project/DSH options. To pin 0.28.0, first confirm that exact version exists in the registry and replace `@latest` with `@0.28.0`. `flywheel setup --no-global` repairs setup for the installed version without selecting a different CLI release.
|
|
263
263
|
|
|
264
|
+
Inside Flywheel's own source checkout, npm may consider the matching local package satisfied and then resolve an older global executable from PATH. If the installation report shows a different version, retry outside the checkout, or run `npm install --global --ignore-scripts --include=optional @ckanner/flywheel@0.30.0` followed by `flywheel setup --no-global` from that exact prefix. Preserve a custom prefix in both steps. Check the CLI version, installation report, and desktop-profile plugin version. Reload the running desktop as directed by the host so it loads the newly installed modules.
|
|
265
|
+
|
|
266
|
+
From 0.30.0, adopting the complete packaged preset is explicit: choose the global or project scope in the configuration editor, read it, load this version's defaults, review, and save. Saving backs up and replaces the selected configuration. Higher-priority task/project files still take precedence.
|
|
267
|
+
|
|
264
268
|
Existing hard-route configuration remains unchanged after upgrade. To adopt the new plugin route, change the effective hard binding or profile to `harness: "codex-pro"`, preserve model/channel/thinking, inspect it, and restart. Do not use `subagent_codex_pro` as a provider.
|
|
265
269
|
|
|
266
270
|
| Symptom | First check |
|
package/docs/en/workflow.md
CHANGED
|
@@ -210,3 +210,9 @@ For a delivery conflict, preserve the packet worktree, inspect Git state, resolv
|
|
|
210
210
|
The engine owns local state, bounded loops, verification, and Git delivery. The authorized host/user owns task-branch setup, GitHub pushes and PRs, remote CI policy, PR merge, and publication. Repository visibility and licensing are separate decisions.
|
|
211
211
|
|
|
212
212
|
Implementation references: [engine](https://github.com/ckanner/flywheel/blob/main/internal/machine/run.go), [Git/worktree operations](https://github.com/ckanner/flywheel/blob/main/internal/verify/verify.go), [design](https://github.com/ckanner/flywheel/blob/main/docs/design.md), and [bundled skills](https://github.com/ckanner/flywheel/tree/main/skills). Additional documentation: [Git worktree](https://git-scm.com/docs/git-worktree) and [GitHub auto-merge](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request).
|
|
213
|
+
|
|
214
|
+
## Interactive console delivery
|
|
215
|
+
|
|
216
|
+
The [workflow console](flow-console.md) adds stage controls, handoff, declared parallelism and explicitly authorized PR/Merge operations. Local completion does not authorize remote writes. An earlier Draft PR is reconciled after push; publication validates the actual merge commit separately.
|
|
217
|
+
|
|
218
|
+
Default-off [JEV shadow evaluation](jev-shadow.md) can independently observe new tasks without blocking execution on failure. Advice does not participate in Quick/Full selection or downgrade existing Full tasks. This feature requires the 0.30.1 CLI/plugin.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Flywheel 流程控制台
|
|
2
|
+
|
|
3
|
+
本文描述当前源码中的控制台。源码、开发候选、本机安装与 npm 正式发行分别验收;不要仅凭本文判断 `@latest` 已包含这些功能。CLI、平台包和 DSH 插件必须同版。
|
|
4
|
+
|
|
5
|
+
## 找到任务,不必填写路径
|
|
6
|
+
|
|
7
|
+
新版画布先显示任务选择。当前 DSH 会话只有一个已登记任务时自动打开;有多个任务时选择其一。通过终端运行的任务也会使用 DSH 提供的会话 ID 登记;该标识只用于发现,不能授予控制权限。页面读取运行索引后再请求 Go 状态,不把索引当成仍在运行或已经完成的证明。
|
|
8
|
+
|
|
9
|
+
旧版本记录没有会话 ID 时,从“本机最近任务”选择即可;选择会发送只读状态查询,并保存到当前会话关联。刷新任务列表不会启动、重试或切换你手动选中的任务。读取失败保留已打开画布;未确认的操作仍先核对原任务。
|
|
10
|
+
|
|
11
|
+
界面不再提供任务路径/项目路径输入框,也不要求用户填写。助手与引擎提供实际位置;有值后显示为只读的工作区、任务记录位置及分支,没有值不显示空字段。任务文件夹保存说明、验收清单和进度,工作区是实际执行的项目/worktree。准备但尚未运行的任务由助手通过只读 status 关联,随后也能在列表中选择。
|
|
12
|
+
|
|
13
|
+
Skill 已加载不代表引擎已经启动。`flywheel-task` 准备并通过 `flywheel_launch` 启动后才产生运行;只要求调研或方案时,助手应明确说明尚未启动。单阶段技能执行后通过 `flywheel_control status` 关联当前画布;没有该工具时明确给出路径,不能声称已关联。
|
|
14
|
+
|
|
15
|
+
## 本次阶段与完整流程
|
|
16
|
+
|
|
17
|
+
`run.kind` 与 `control.kind` 一致的单阶段任务优先显示“本次运行”和真实回执。仅运行 Review 时,默认画布为 **L1 → Review**,并显示记录结论、评分及“整体交付尚未完成”;其它未运行阶段不会盖过这次评审结果。可切换“完整流程”查看全貌。
|
|
18
|
+
|
|
19
|
+
“继续整个流程”移入明确的展开项;单阶段通过不自动启动后续阶段,也不把任务改为 completed。失败、取消和结果未知不会沿用旧绿色裁决。Run ID、HEAD 和配置摘要收在“运行记录与文件位置”,需要排查时再展开。
|
|
20
|
+
|
|
21
|
+
## 从配置开始
|
|
22
|
+
|
|
23
|
+
在已进入对话视图的 DSH 会话中,Flywheel 排在“统计”之后;新会话的空白首页尚未显示这排会话视图。内部有“运行画布”“全局/项目配置”“运行与对比”。全局配置可在没有任务目录时编辑;项目配置写入所选 Git 项目根。任务配置仍具有最高优先级,取首个完整文件,不做字段深度合并。
|
|
24
|
+
|
|
25
|
+
先读取草稿,再选择 Provider/Harness、模型、推理等级、权限与历史策略。“载入本版本默认值”导入完整默认模板;保存前显示差异与目标,Go 核对内容 revision、备份旧文件并原子写入。正在运行的引擎保留原快照,新配置在后续启动时加载。
|
|
26
|
+
|
|
27
|
+
支持的资源入口包括 ChatGPT · DSH、ChatGPT · Codex Pro、Kimi Code、DeepSeek Account(默认 Flash)及可选 Claude Code Pro。模型初值来自本版本模板,真实能力以 `config inspect`/`doctor` 为准。Claude 的可选适配器必须匹配公开 machine API;缺失或权限不支持会拒绝调用,不自动换后端。账号登录仍由各 Provider 自己完成。
|
|
28
|
+
|
|
29
|
+
`permissions.bindings` 可以覆盖 `loops.<role>`、`routes.<route>` 和 `judge-panel`;未覆盖项使用全局策略。会话策略按角色覆盖:执行 routes 共用 execute 的策略,各 packet 的历史仍隔离。scoped 只续接相同任务、角色、目标和绑定下可恢复的历史;fresh 也保留调用安全账本。
|
|
30
|
+
|
|
31
|
+
## 横向画布与节点操作
|
|
32
|
+
|
|
33
|
+
主线从左到右展示 Plan/拆分、调度、任务分支、集成、终验、PR、Merge。点击任务展开 Execute、L1、Review、Git 交付。状态配合颜色和文字,运行与节点详情展示来源 DSH 会话、项目/worktree、分支、HEAD、run ID、调用绑定和失败证据。
|
|
34
|
+
|
|
35
|
+
画布支持拖动、横移、定位当前节点和分组浏览。大任务使用有界诊断摘要;“读取完整节点证据”按需加载选中节点,revision 与同一时刻的画布状态一起刷新。摘要不会改写原始账本。
|
|
36
|
+
|
|
37
|
+
| 操作 | 含义 |
|
|
38
|
+
|---|---|
|
|
39
|
+
| 运行此阶段 | 提交已观察的 revision;Go 在任务租约内重新检查前置条件 |
|
|
40
|
+
| 人工继续一次 | 填写原因,追加一次 Execute/L1 尝试;保留累计失败和预算 |
|
|
41
|
+
| 已完成单元重跑 | 归档旧证据和提交回执,使当前与后续单元的候选证据失效 |
|
|
42
|
+
| Git 交付 | 只在当前 L1 与独立 Review 通过后持久化当前单元 |
|
|
43
|
+
| 终验 | 已集成单元的 L2/L3 与独立 Judge;不重新调用 Plan 或启动未完成单元 |
|
|
44
|
+
| 继续整个流程 | 由 Go 继续已保存的 Full 或 ultraWork/Quick 策略 |
|
|
45
|
+
| 停止 | 请求 Go 收束在飞子进程;关闭页面不代表停止 |
|
|
46
|
+
|
|
47
|
+
有显式调度声明且依赖已交付的独立 packet 可单独提前执行,仍使用隔离 worktree。合并后的候选变化会使旧验收失效,必须重新验证和 Review。每个异步节点操作保存 running/passed/failed/cancelled 回执,失败原因不会仅留在后台日志。
|
|
48
|
+
|
|
49
|
+
Quick 在 UI 中显示为 ultraWork/Quick;它仍要求确定性验证和独立最终 Review。Plan/Judge 按持久化策略标为不适用,不伪造完成状态。
|
|
50
|
+
|
|
51
|
+
## 串行与并行
|
|
52
|
+
|
|
53
|
+
配置入口为 `scheduler`,字段和边界以 `flywheel template scheduler-policy.schema.json` 为准。例如:
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{"scheduler":{"mode":"parallel","max-parallel":2,"providers":{"deepseek-account":1}}}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
`providers` 的键是实际账号渠道名。并行资格来自冻结 packet 的声明,而不是模型临时口头建议:
|
|
60
|
+
|
|
61
|
+
```yaml
|
|
62
|
+
schedule:
|
|
63
|
+
after: [M01-T01]
|
|
64
|
+
writes: [src/search/, tests/search/]
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
依赖必须指向较早编号的已知 packet;写入范围是规范相对路径/目录前缀,不支持通配符或越出项目的路径。声明要覆盖实现、普通测试和必要配置,并考虑共享测试服务等真实依赖。未声明独立性、写入范围冲突或需要 live 凭证的单元保留串行。
|
|
68
|
+
|
|
69
|
+
只有 Execute/L1 并发,工作区各自独立;一个 Go 协调器串行 CAS 保存状态和用量。hard 预算只允许一个模型调用在飞,并在下一调用前确认前一笔计费。其他模式按最大并发与渠道限制接纳。停止会等待整批已启动工作收尾。
|
|
70
|
+
|
|
71
|
+
Review、集成与里程碑 gate 保持串行。后续分支吸收已完成成果后,在合成候选上重新验收。执行重试耗尽仍走原有升级策略;集成冲突或门禁失败保留 worktree 和失败证据。`writes` 是调度/验收契约,完全权限本身不提供 OS 沙箱。
|
|
72
|
+
|
|
73
|
+
## 在同一 Provider Session 中接管
|
|
74
|
+
|
|
75
|
+
任务节点显示准确的 Provider session。读取最近回复只读取摘要校验过的原回执,不宣称它是后端的完整历史。
|
|
76
|
+
|
|
77
|
+
已确认收尾、已消费结果、绑定匹配的 packet session 可“暂停并接管”。接管标记持久化后,普通 run/单阶段操作不能绕过它。桌面输入的人工 Prompt 和 `flywheel session` 都通过原适配器恢复那个准确 thread,并继续预算与计费;恢复失败或需要重建时不冷启动替代。
|
|
78
|
+
|
|
79
|
+
```sh
|
|
80
|
+
cd -- '/absolute/task-worktree'
|
|
81
|
+
flywheel session '/absolute/task-worktree/docs/task-slug' --key 'execute/M01-T01'
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
终端每行是一条 Prompt;`/history` 查看最近回复,`/reconcile` 核对原调用,`/return` 验证交回,`/release` 退出接管并保持暂停,`/quit` 保留接管退出。多行 Prompt 可用桌面文本框。
|
|
85
|
+
|
|
86
|
+
“验证并交回”重新运行 L1、适用的 Quick gate 和独立 Review;人工回复本身不是通过证据。Go 保存绑定当前候选的 `human-takeover` 来源,后续正常交付仍由引擎完成。“退出接管”不声称验收成功;结果或清理未知时也不能借此解除阻断。里程碑会话目前提供只读回复,交互接管以 packet 为单位。
|
|
87
|
+
|
|
88
|
+
会话账本存储为 v2,新引擎兼容旧 v1;旧引擎会拒绝 v2,避免忽略接管标记。配置的 `sessions.policy-version` 仍是 1,worker/lifecycle 协议不因此改变。
|
|
89
|
+
|
|
90
|
+
## 发现运行与比较
|
|
91
|
+
|
|
92
|
+
CLI 和桌面启动自动登记 run ID;会话投影保留多个已确认任务。登记位于全局配置旁的 `runs/`,可用绝对 `FLYWHEEL_RUNS_DIR` 覆盖。列表只读取明确登记,显示最近 100 项,不扫描整个磁盘;当前存活状态始终重新查询 Go。
|
|
93
|
+
|
|
94
|
+
对比页面显示操作种类、分支、HEAD、契约/配置条件、运行时长、新增尝试、失败尝试和交付。可选准确 run ID,也可查看本任务全部调用(包括早期未登记记录)。指标先按 invocation/receipt 对账再汇总,迟到回执归属原调用,不重复计费。
|
|
95
|
+
|
|
96
|
+
用量、费用和时延只表示已知量,缺失/部分数据单列,费用也可能来自配置单价估算。调用失败率不等于代码质量;条件不同的运行只并列展示,不伪称配对收益。完整的质量结论需要任务验收和独立 oracle。
|
|
97
|
+
|
|
98
|
+
## 远端 PR 与 Merge
|
|
99
|
+
|
|
100
|
+
在 PR 节点先查询项目与远端状态。远端操作需要 GitHub CLI 的正常登录,以及当前本地任务完成、候选仍有有效验收、明确的仓库/HEAD/目标分支授权。已记录的项目远端发生变化会拒绝交付;fetch 与 push URL 必须指向同一仓库。
|
|
101
|
+
|
|
102
|
+
推送使用已批准的 commit 和明确任务分支,不强推,不隐式跟随 tags 或推送 submodules。可选择独立的远端任务分支,不必切换本地 checkout。推送后重新查询已有 PR,避免把预先创建的 Draft PR 误当成需要重复创建。
|
|
103
|
+
|
|
104
|
+
合并再次核对 PR、源 HEAD、base 和检查状态,并使用 GitHub CLI 的 `--match-head-commit`。不使用 admin 绕过,也不擅自开启 auto-merge。仓库要求 merge queue 时,“请求已接收”和“已合并”分别记录,以远端回执为准。接口语义见 [GitHub CLI 文档](https://cli.github.com/manual/gh_pr_merge)。
|
|
105
|
+
|
|
106
|
+
已确认的创建/合并操作重跑时先核对已有结果。命令失败或回执丢失保留 unknown,不猜测远端成功。PR/Merge 状态与引擎的本地完成分开;发布应绑定实际 merge commit 和发布产物重新验收,不因点击 Merge 自动发布 npm 或部署。
|
|
107
|
+
|
|
108
|
+
配置面板另提供默认关闭的 **JEV 影子评估(可选)**;开关、数据发送边界与失败回退见 [JEV 指南](jev-shadow.md)。此项需要 0.30.1 CLI/插件。
|
package/docs/getting-started.md
CHANGED
|
@@ -294,14 +294,9 @@ flywheel control status --task-dir "$PWD/docs/add" --cwd "$PWD"
|
|
|
294
294
|
在 DSH 对话中也可使用 `/flywheel-run <任务资料绝对路径>`、`/flywheel-status <同一路径>`,需要停止时用 `/flywheel-stop <同一路径>`。把占位内容替换成准备阶段给出的真实路径;这些技能会解析正确的项目根,不依赖先填写视图。
|
|
295
295
|
|
|
296
296
|
`ok: true` 只表示控制操作成功;`running` 表示引擎是否在运行,完成看 `state.status`。
|
|
297
|
-
DSH 工具 launch/start
|
|
298
|
-
启动或手动打开时,仍填写同一个 `task_dir` 与实际 `repo_dir`。项目目录仅在会话
|
|
299
|
-
当前目录相同时可留空,shell `cd` 不改变会话目录。视图展示请求/生效模式、理由、
|
|
300
|
-
阶段适用性、任务状态与刷新时间;不适用的 Plan/Judge 不算通过,也不会自动轮询。
|
|
297
|
+
DSH 工具 launch/start 关联当前会话视图;终端运行按宿主会话 ID 登记,旧任务可从最近任务列表选择。界面没有路径输入框,位置由助手/引擎取得,已知值才只读显示。准备但尚未运行的任务也可由助手通过只读 status 关联。
|
|
301
298
|
|
|
302
|
-
|
|
303
|
-
父会话关联。手动路径草稿与旧快照只是查看缓存,重载后可能需重选或刷新。修改路径
|
|
304
|
-
忽略旧响应,不会停止旧任务。每个会话只等待一个控制请求,启动或停止期间锁定目录。
|
|
299
|
+
视图展示本次阶段与完整流程的区别、真实状态和刷新时间;运行时只读刷新,任务发现只查已有登记,不扫描目录。公开会话投影可重建关联,fork 不继承父会话归属。选择和状态快照分开,晚到响应不能覆盖新任务,未知操作先核对原目标。
|
|
305
300
|
|
|
306
301
|
启动或停止超时、断连后,后台任务的结果可能尚未确认。保留原任务目录,先“刷新状态”和查看日志;界面在成功核对该任务前禁止继续启动/停止,也不会自动重试。已有快照只是上次结果,不能凭页面关闭、切换会话或停止按钮失去等待状态推断引擎已经结束。原生轨迹保留父会话自己的记录,worker 完整历史不自动合并到其中。
|
|
307
302
|
|
|
@@ -346,6 +341,10 @@ npx -y @ckanner/flywheel@latest install
|
|
|
346
341
|
|
|
347
342
|
自定义 prefix、项目 skills 或 DSH 入口时保留原参数。想固定某个已发布版本,可把 `@latest` 换成该精确版本,例如在 registry 确认 0.28.0 已发布后使用 `@0.28.0`;安装器始终为 CLI、平台包、worker 和桌面插件选择本次安装器的同一版本。已安装包的配置修复可用 `flywheel setup --no-global`,它不会将 CLI 升级到别的版本。
|
|
348
343
|
|
|
344
|
+
维护者在 Flywheel 自身源码目录中运行 `npx` 时,npm 可能把同名本地 package 视为已满足,再命中 PATH 中的旧全局入口。若安装报告的版本不是请求版本,请在源码目录之外重试,或执行 `npm install --global --ignore-scripts --include=optional @ckanner/flywheel@0.30.0` 后,用该 prefix 下的 `flywheel setup --no-global` 完成设置;自定义 prefix 时两步均保留它。最终核对 `flywheel version`、安装报告版本及 DSH profile 中的插件版本。桌面已在运行时,还须按宿主要求重载,磁盘安装成功不表示旧模块已经卸载。
|
|
345
|
+
|
|
346
|
+
从 0.30.0 起,若明确决定完整采用安装包内的预设,可在 **全局 / 项目配置** 中选择作用域、读取配置,点击 **载入本版本默认值**,审阅后 **保存配置**。这会备份并替换所选作用域的配置;上层任务/项目文件仍按配置优先级生效。
|
|
347
|
+
|
|
349
348
|
从 0.27.x 升级到本版后,要使用新的默认插件路径,应在有效配置的 `routes.hard`(或其 profile)设置 `"harness": "codex-pro"`,保留所选 model/thinking/channel。先用 `config inspect` 找到实际配置来源;不要把 external subagent 的工具名写成 DSH provider。
|
|
350
349
|
|
|
351
350
|
安装后对照新模板审阅需要迁移的配置,按宿主提示重新载入,运行 doctor,再用小任务验证。已有配置不会自动覆盖;特别检查任务级文件是否遮住了刚修改的项目或全局设置。安装不是跨 npm、DSH 与全部 skills 的单个事务:失败时报告已完成步骤,不擅自回退包管理器或删除用户文件。修正原因后重跑会重新核对版本与内容。
|
package/docs/workflow.md
CHANGED
|
@@ -238,7 +238,7 @@ Plan/Execute 请求 `workspace-write`,Review/Judge 以及 DSH/Codex(
|
|
|
238
238
|
packet worktree 贯穿该单元的执行、验收与评审;完成交付才由引擎处理本地合并
|
|
239
239
|
与清理。恢复入口仍是 `flywheel-run`,没有另一个独立的 resume skill。
|
|
240
240
|
|
|
241
|
-
Go
|
|
241
|
+
Go 按已配置策略和冻结依赖调度 packet,不依赖一个持续存活的父模型会话监督。`sessions.mode=scoped`
|
|
242
242
|
允许同 packet 的 Executor 返修续用,以及独立 Reviewer 在同范围复审时续用自己的
|
|
243
243
|
历史;每次复审仍完整检查当前候选、契约和适用需求,不能只关闭上轮 findings。
|
|
244
244
|
Plan 按同任务/里程碑续用,Judge 与第二意见各自隔离;显式 Plan
|
|
@@ -304,3 +304,9 @@ required checks、审阅要求和授权,再按仓库策略启用;Agent 的 p
|
|
|
304
304
|
[Astra 模型与 effort](https://developers.openai.com/api/docs/models/gpt-6-astra)、
|
|
305
305
|
[Kimi 模型配置](https://www.kimi.com/code/docs/en/kimi-code/models)、
|
|
306
306
|
[Flywheel 设计](design.md)。
|
|
307
|
+
|
|
308
|
+
## 控制台交互交付
|
|
309
|
+
|
|
310
|
+
新的[流程控制台](flow-console.md)提供阶段操作、接管、声明式并行与明确授权的 PR/Merge 入口。普通 run 的本地完成不自动授权远端写入;已有 Draft PR 会在推送后重新核对,Merge 后的发布另按真实 merge commit 验收。
|
|
311
|
+
|
|
312
|
+
默认关闭的 [JEV 影子评估](jev-shadow.md) 可独立观察新任务,故障不阻断执行。其建议不参与本节的 Quick/Full 判定;开启也不能降级已有 Full。此项需要 0.30.1 CLI/插件。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ckanner/flywheel",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.30.1",
|
|
4
4
|
"description": "A deterministic Go orchestrator for coding-agent loops, with task contracts, verification gates, Git worktrees, and DSH desktop integration.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"flywheel": "bin/flywheel.js",
|
|
@@ -34,10 +34,12 @@
|
|
|
34
34
|
"docs/configuration.md",
|
|
35
35
|
"docs/model-policy.md",
|
|
36
36
|
"docs/workflow.md",
|
|
37
|
+
"docs/flow-console.md",
|
|
37
38
|
"docs/en/getting-started.md",
|
|
38
39
|
"docs/en/configuration.md",
|
|
39
40
|
"docs/en/model-policy.md",
|
|
40
41
|
"docs/en/workflow.md",
|
|
42
|
+
"docs/en/flow-console.md",
|
|
41
43
|
"docs/examples/create-first-task.sh",
|
|
42
44
|
"docs/claude-code-pro.md",
|
|
43
45
|
"docs/en/claude-code-pro.md",
|
|
@@ -47,10 +49,10 @@
|
|
|
47
49
|
"docs/en/session-evaluation.md"
|
|
48
50
|
],
|
|
49
51
|
"optionalDependencies": {
|
|
50
|
-
"@ckanner/flywheel-darwin-arm64": "0.
|
|
51
|
-
"@ckanner/flywheel-darwin-amd64": "0.
|
|
52
|
-
"@ckanner/flywheel-linux-arm64": "0.
|
|
53
|
-
"@ckanner/flywheel-linux-amd64": "0.
|
|
52
|
+
"@ckanner/flywheel-darwin-arm64": "0.30.1",
|
|
53
|
+
"@ckanner/flywheel-darwin-amd64": "0.30.1",
|
|
54
|
+
"@ckanner/flywheel-linux-arm64": "0.30.1",
|
|
55
|
+
"@ckanner/flywheel-linux-amd64": "0.30.1"
|
|
54
56
|
},
|
|
55
57
|
"scripts": {
|
|
56
58
|
"release:check": "node scripts/release-preflight.js",
|
|
@@ -58,10 +60,10 @@
|
|
|
58
60
|
"test": "node --test npm/test/*.test.js",
|
|
59
61
|
"test:install": "node --test npm/test/install.integration.js",
|
|
60
62
|
"test:registry": "node npm/test/registry-smoke.js",
|
|
61
|
-
"build:npm": "bash scripts/build-npm.sh 0.
|
|
63
|
+
"build:npm": "bash scripts/build-npm.sh 0.30.1 dist-npm",
|
|
62
64
|
"test:sessions": "node scripts/test-session-evaluation.js"
|
|
63
65
|
},
|
|
64
66
|
"dependencies": {
|
|
65
|
-
"@ckanner/dsh-plugin-flywheel": "0.
|
|
67
|
+
"@ckanner/dsh-plugin-flywheel": "0.30.1"
|
|
66
68
|
}
|
|
67
69
|
}
|