cowork-flow 1.6.0 → 1.7.2
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 +213 -213
- package/CONTRIBUTING.md +137 -0
- package/LICENSE +1 -1
- package/README.md +108 -369
- package/docs/architecture.md +122 -0
- package/docs/hosts.md +290 -0
- package/docs/index.md +32 -0
- package/docs/release.md +104 -0
- package/package.json +37 -7
- package/presets/claude-code/.claude-plugin/plugin.json +28 -0
- package/presets/claude-code/skills/cowork-flow-bootstrap/SKILL.md +35 -0
- package/presets/codex/.codex-plugin/plugin.json +37 -0
- package/presets/codex/assets/logo.svg +4 -0
- package/presets/codex/skills/cowork-flow-bootstrap/SKILL.md +35 -0
- package/presets/dsh/agent.cordis.yml +35 -12
- package/presets/dsh/plugins/workflow-state.js +88 -72
- package/presets/dsh/preset.yml +1 -1
- package/presets/kimi-code/.kimi-plugin/plugin.json +35 -0
- package/presets/kimi-code/hooks/cowork-flow-inject.mjs +14 -2
- package/presets/kimi-code/skills/cowork-flow-bootstrap/SKILL.md +35 -0
- package/presets/opencode/cowork-flow/plugin-core.js +1077 -0
- package/presets/opencode/cowork-flow/skills/cowork-flow-bootstrap/SKILL.md +35 -0
- package/presets/opencode/plugins/cowork-flow.js +44 -0
- package/presets/plugin-meta.json +52 -0
- package/presets/qoder/.qoder-plugin/plugin.json +29 -0
- package/presets/qoder/agents/cowork-check.md +29 -0
- package/presets/qoder/agents/cowork-implement.md +30 -0
- package/presets/qoder/agents/cowork-research.md +23 -0
- package/presets/qoder/hooks/hooks.json +50 -0
- package/presets/qoder/hooks/inject-context.mjs +150 -0
- package/presets/qoder/skills/cowork-flow-bootstrap/SKILL.md +35 -0
- package/{template/.zcode → presets/zcode}/.zcode-plugin/plugin.json +4 -2
- package/{template/.zcode → presets/zcode}/agents/cowork-check.md +4 -4
- package/{template/.zcode → presets/zcode}/agents/cowork-implement.md +4 -4
- package/{template/.zcode → presets/zcode}/agents/cowork-research.md +1 -1
- package/{template/.zcode → presets/zcode}/hooks/inject-context.js +36 -19
- package/presets/zcode/skills/cowork-flow-bootstrap/SKILL.md +35 -0
- package/src/cli.js +130 -130
- package/src/commands/host.js +182 -0
- package/src/commands/init.js +28 -43
- package/src/commands/install-claude-code-plugin.js +129 -0
- package/src/commands/install-codex-plugin.js +312 -0
- package/src/commands/install-dsh-hook.js +36 -43
- package/src/commands/install-dsh-preset.js +228 -49
- package/src/commands/install-kimi-code-plugin.js +142 -0
- package/src/commands/install-kimi-hook.js +142 -122
- package/src/commands/install-opencode-plugin.js +158 -0
- package/src/commands/install-qoder-plugin.js +211 -0
- package/src/commands/install-zcode-plugin.js +131 -82
- package/src/commands/mcp-state.js +7 -6
- package/src/commands/registry.js +345 -0
- package/src/commands/source-refresh.js +10 -11
- package/src/commands/sync.js +10 -13
- package/src/commands/update.js +5 -10
- package/src/lib/cli-flags.js +102 -0
- package/src/lib/copy-template.js +89 -75
- package/src/lib/host-assets.js +192 -57
- package/src/lib/install-support.js +50 -0
- package/src/lib/platforms.js +0 -15
- package/src/lib/plugin-metadata.js +187 -0
- package/src/lib/plugin-payload.js +70 -0
- package/template/.cowork-flow/.version +1 -1
- package/template/.cowork-flow/adapters/claude-code/adapter.yaml +0 -1
- package/template/.cowork-flow/adapters/dsh/adapter.yaml +0 -1
- package/template/.cowork-flow/adapters/kimi-code/adapter.yaml +0 -1
- package/template/.cowork-flow/adapters/qoder/adapter.yaml +32 -0
- package/template/.cowork-flow/adapters/zcode/adapter.yaml +2 -2
- package/template/.cowork-flow/config.yaml +6 -4
- package/template/.cowork-flow/scripts/adapters/cli/batch_mode.py +10 -12
- package/template/.cowork-flow/scripts/adapters/cli/spec_check.py +67 -35
- package/template/.cowork-flow/scripts/adapters/cli/subagent.py +84 -38
- package/template/.cowork-flow/scripts/adapters/cli/task.py +42 -0
- package/template/.cowork-flow/scripts/adapters/cli/task_create_command.py +1 -9
- package/template/.cowork-flow/scripts/adapters/cli/task_lifecycle_commands.py +6 -0
- package/template/.cowork-flow/scripts/adapters/cli/task_navigation.py +13 -10
- package/template/.cowork-flow/scripts/adapters/cli/task_next_runner.py +2 -1
- package/template/.cowork-flow/scripts/adapters/git/git_context.py +14 -82
- package/template/.cowork-flow/scripts/adapters/host/claude_code_policy.py +2 -3
- package/template/.cowork-flow/scripts/adapters/host/codex_policy.py +2 -5
- package/template/.cowork-flow/scripts/adapters/host/host_manifest.py +122 -10
- package/template/.cowork-flow/scripts/adapters/host/inject.py +49 -19
- package/template/.cowork-flow/scripts/adapters/host/kimi_code_policy.py +1 -1
- package/template/.cowork-flow/scripts/adapters/host/policy_base.py +58 -0
- package/template/.cowork-flow/scripts/adapters/host/qoder_policy.py +66 -0
- package/template/.cowork-flow/scripts/adapters/host/workflow_state_hook.py +136 -132
- package/template/.cowork-flow/scripts/adapters/host/zcode_policy.py +23 -24
- package/template/.cowork-flow/scripts/adapters/mcp/state_server.py +41 -56
- package/template/.cowork-flow/scripts/adapters/review/test_intent.py +2 -2
- package/template/.cowork-flow/scripts/infra/config.py +26 -23
- package/template/.cowork-flow/scripts/infra/developer_profile.py +4 -41
- package/template/.cowork-flow/scripts/infra/files.py +3 -7
- package/template/.cowork-flow/scripts/infra/git_snapshot.py +8 -7
- package/template/.cowork-flow/scripts/infra/paths.py +9 -69
- package/template/.cowork-flow/scripts/infra/process.py +9 -0
- package/template/.cowork-flow/scripts/infra/skill_manifest.py +262 -169
- package/template/.cowork-flow/scripts/infra/storage/operation_log.py +2 -0
- package/template/.cowork-flow/scripts/infra/storage/state_store.py +0 -2
- package/template/.cowork-flow/scripts/infra/storage/unit_of_work.py +163 -18
- package/template/.cowork-flow/scripts/kernel/workflow_route.py +6 -16
- package/template/.cowork-flow/scripts/run.py +14 -4
- package/template/.cowork-flow/scripts/runtime/host_identity.py +33 -15
- package/template/.cowork-flow/scripts/runtime/session_state.py +83 -26
- package/template/.cowork-flow/scripts/services/context_discovery.py +15 -3
- package/template/.cowork-flow/scripts/services/context_paths.py +4 -4
- package/template/.cowork-flow/scripts/services/fact_view.py +13 -10
- package/template/.cowork-flow/scripts/services/lifecycle_checks.py +47 -13
- package/template/.cowork-flow/scripts/services/lifecycle_policy.py +5 -2
- package/template/.cowork-flow/scripts/services/readiness.py +8 -3
- package/template/.cowork-flow/scripts/services/spec_check.py +23 -33
- package/template/.cowork-flow/scripts/services/task_archive.py +76 -41
- package/template/.cowork-flow/scripts/services/task_creation.py +90 -34
- package/template/.cowork-flow/scripts/services/task_lifecycle.py +210 -50
- package/template/.cowork-flow/scripts/services/task_routing.py +0 -8
- package/template/.cowork-flow/scripts/services/task_tree.py +181 -29
- package/template/.cowork-flow/scripts/services/task_utils.py +3 -20
- package/template/.cowork-flow/scripts/services/workflow_runtime.py +39 -22
- package/template/.cowork-flow/spec/contracts/context-injection.md +27 -2
- package/template/.cowork-flow/spec/contracts/fact-layer-access.md +7 -4
- package/template/.cowork-flow/spec/contracts/index.md +4 -0
- package/template/.cowork-flow/spec/contracts/spec-checks.md +13 -2
- package/template/.cowork-flow/spec/runtime/host-assets.json +155 -18
- package/template/.cowork-flow/spec/runtime/index.md +1 -1
- package/template/.cowork-flow/spec/schemas/host-assets.schema.json +69 -7
- package/template/.dsh/README.md +27 -7
- package/template/.opencode/cowork-flow/plugin-core.js +1077 -0
- package/template/.opencode/plugins/cowork-flow.js +23 -800
- package/template/skills/python-runtime-design/SKILL.md +6 -0
- package/template/skills/runtime-health/scripts/doctor.py +725 -14
- /package/{template/.zcode → presets/zcode}/hooks/hooks.json +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,305 +1,305 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 更新日志
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## [Unreleased]
|
|
4
4
|
|
|
5
|
-
###
|
|
5
|
+
### Added
|
|
6
6
|
|
|
7
|
-
- **收集一致**:`tests/test_agents_managed_block.py` 的两条断言原为模块级函数,`python -m unittest`(发布门禁与 `test:template` 用的收集器)收集不到它们(实测 `Ran 0 tests`),只有 pytest 能看到。现移入 `unittest.TestCase`,并进入 `CORE_TEMPLATE_TEST_MODULES`(core 套件 176 → 178)。新增 `tests/test_test_collection.py` 守卫:`tests/` 下再出现对 unittest 不可见的模块级 `def test_*` 即失败。
|
|
8
|
-
- **Windows 静默通过**:`test/dsh-home-patch.test.js` 此前在 win32 顶层 `process.exit(0)`,`node --test` 把整个文件记为**通过文件**(不进 skipped、不进 fail)。现改为 7 个用例带 `{ skip: <具体原因> }`,Windows 上如实计入 skipped。
|
|
9
|
-
- **恒真断言**:`tests/test_host_adapters.py` 三处「断言自己刚写死的字面量长度」(`assertEqual(2, len(surfaces))` 等)改为非空断言——不再恒真,也不引入需要同步维护的数字。
|
|
10
|
-
- **CI 与发布同门禁**:ubuntu job 不再分步跑 fast / integration / core,合并为一步 `npm run release:check`(与 publish.yml 完全相同的命令,`setup-python` 前置到它之前);`test/package.test.js` 新增断言锁定该一致性。此前 `test:node:full` 与 `test:template:full` 两层只在发布时首次执行,PR 侧从不运行。
|
|
11
7
|
|
|
12
|
-
|
|
8
|
+
## [1.7.2] - 2026-10-04
|
|
13
9
|
|
|
14
|
-
|
|
15
|
-
- 删除 `host-assets.schema.json` 中第三处宿主名枚举——它处于漂移状态(要求 5 家、含 `dsh`、缺 `kimi-code`,而数据是 6 家)。schema 只约束结构,宿主覆盖由运行时按数据校验。
|
|
16
|
-
- 新增共享 fixture `tests/fixtures/host-manifest/invalid-missing-matrix-host.json`(平台已声明但矩阵缺条目),Python 与 JS 两侧都拒绝(`capability matrix missing host: codex`),证明常量删除后该规则仍生效。
|
|
17
|
-
- `spec/runtime/index.md` 记录派生规则。
|
|
10
|
+
### Added
|
|
18
11
|
|
|
19
|
-
|
|
12
|
+
- GitHub 现在会在收到 `v*` tag 推送时自动发布 npm:`.github/workflows/publish.yml` 新增 `push: tags` 触发器与按 tag 归一的 `concurrency` 锁(同一 tag 的重复触发串行化而非并发抢发),`scripts/release.sh --no-publish` 改为推送分支与 tag 并把发布交给 CI,`gh release create` 降级为可选的 Release 说明入口。推送 tag 即发布,无需再手工建 Release。
|
|
20
13
|
|
|
21
|
-
|
|
22
|
-
- 删除 `infra/paths.py` 中 `return` 之后的孤儿 try 块(引用未定义的 `file_path`,为 2026-08-05 移除 journal 流程时遗留)。
|
|
23
|
-
- 删除 `fact_view.STAGE_CONTRACT_STATES`(文件内零引用;活定义在 `workflow_state_hook`)、`lifecycle_checks` 两个零调用的 `*_blockers` 包装、`adapters/review/test_intent` 的恒空校验器 `validate_test_intent` 与三个未被读取的常量,以及断言其返回空的同义用例。
|
|
24
|
-
- 文档对齐:README 保护文件描述与 `syncPolicy` 实际一致(两个 spec 例外文件 + `.developer`);两处 spec-check 文案 3s → 2.5s;`spec/schemas/index.md` 补列 `host-assets.schema.json`;清理指向已 untrack `docs/` 的历史死链。
|
|
14
|
+
### Fixed
|
|
25
15
|
|
|
26
|
-
|
|
16
|
+
- 修复 tag 推送通道的空转:`verify-ubuntu` / `verify-windows` / `publish` 三个 job 的触发条件此前只认 `release` 事件和 `inputs.ref`,`on: push: tags` 触发工作流后三个 job 会被全部跳过——运行显示绿色却不会发布任何内容。三个门禁现在都放行 push 事件;Ubuntu 与 Windows 双平台验证仍是发布的硬前置。新增 `test/package.test.js` 断言锁住这一行为。
|
|
17
|
+
- npm 发布改用 **Trusted Publishing**(OIDC):publish job 声明 `id-token: write`,用 GitHub OIDC token 换取短期 npm 凭据,仓库不再保存长期 token。OIDC 交换需要 npm ≥ 11.5.1,而 Node 20 自带 npm 10,因此仅 publish job 改跑 Node 24(两个验证 job 保持 Node 20,与 `engines` 声明一致)。`setup-node` 保留 `registry-url` 以便 npm 读到 registry 后发起交换,但不提供 `NODE_AUTH_TOKEN`——占位符保持未解析,npm 先试交换、失败才回退。此前用 `NPM_TOKEN` secret 时,账号开启双因素认证会导致 CI 发布以 `EOTP` 失败。
|
|
18
|
+
- `package.json` 的 `bin` 路径去掉 `./` 前缀:npm 发布时会自动清理并告警,导致 tarball 里的 package.json 与源码不一致。
|
|
19
|
+
- Qoder 插件 hook 不再由宿主解析 `python`:改为 **Node 传输 shim**(`command: "node"` + `hooks/inject-context.mjs`),与 ZCode 插件同形态。修前在没有 `python` 命令的机器上(macOS 12.3+、只装 `python3` 的发行版),hook 以 `spawn python ENOENT` 静默失败,SessionStart / UserPromptSubmit 注入从未发生,日志里只有 `Non-blocking hook error(s) … Continuing execution`;Windows 上则依赖 `python.exe` 恰好在 PATH,商店版 Python 等环境同样哑。新 shim 由宿主必备的 Node 运行,内置 `COWORK_FLOW_PYTHON → python3 → python → py -3` 探测链自行定位项目运行时解释器,探测不到时保持 fail-open(exit 0)。升级动作:`cwf host add qoder --force` 刷新插件缓存后重启 Qoder。ZCode 的 `.js` shim(ESM 语法)在安装目录无 `package.json` 时依赖 Node ≥23 的语法探测,仓库声明的最低 Node 20 上会崩溃,建议后续同样改 `.mjs`——本次未动 ZCode。
|
|
27
20
|
|
|
28
|
-
|
|
21
|
+
## [1.7.1] - 2026-09-30
|
|
29
22
|
|
|
30
|
-
###
|
|
23
|
+
### Fixed
|
|
31
24
|
|
|
32
|
-
-
|
|
33
|
-
- 修复:`.gitattributes` 为 `*.js`/`*.mjs` 声明 `text eol=lf`(与已钉的 `.py`/`.md`/`.json` 等一致);`test/package.test.js` 新增行尾契约断言锁定该声明。
|
|
34
|
-
- 为什么只在 Windows CI 可见:开发者工作区与 ubuntu 检出都是 LF,只有 Windows 全新检出是 CRLF。断言保持严格——CRLF shebang 的脚本在 POSIX 上无法直接执行,要修的是检出契约而不是判据。
|
|
35
|
-
- 证据:全新检出实测踩中同一断言失败(`test:fast`);仅把该文件规范化为 LF → 整条 `npm run test:windows:core` exit 0;Node 20.12.0 / 20.20.2 / 24.14.1 结果一致,与 Node 版本无关。
|
|
25
|
+
- 三个机器级 hook shim(Qoder / ZCode / Kimi Code)改为 **fail-open**:项目侧运行时返回非零、无法启动或超时时,shim 把原因写进宿主运行日志并返回 0,只跳过本次注入——不再把宿主的「hook 失败」升级成「拒绝用户输入」。修前在 Qoder 里,只要工作区项目的运行时早于 qoder 适配(本项目 9 个旧项目都是),每次输入都会被拦:`inject.py: error: argument --host: invalid choice: 'qoder'` → `exit code 2` → `Blocking hook failure(s) … for UserPromptSubmit`。项目级写入的 Edit 期规范门禁(Claude Code / Codex)保留阻止语义,它与所调用的运行时同源、不存在版本错配。升级动作:`cwf host add qoder --force`(或对应宿主)刷新机器级载荷后重启宿主;要让旧项目恢复注入,再对该项目运行 `cwf project sync .`。
|
|
36
26
|
|
|
37
|
-
|
|
27
|
+
## [1.7.0] - 2026-09-29
|
|
38
28
|
|
|
39
|
-
|
|
40
|
-
- 本次门禁工作:`e262196` **+365 / −200**(含 2 个新文件 +162 行)、`7fa3f8b` +3 / −2,行尾修复为小改动(行尾声明 + 契约守卫 + 记账);新增集中在 `tests/` 与 `test/`。**AC-006「净行数 ≤ 0」未达成**——三条口径都是新增大于删除。
|
|
41
|
-
- 版本口径参考:自 1.5.0 发版提交 `a4b0bfc` 起,1.6.0 全部提交的净变化由本版本更早的宿主特性主导,不属本次门禁工作。
|
|
42
|
-
- 契约指纹:registry 登记的契约文件与 `spec/runtime/host-assets.json` 均未改动,指纹不变。
|
|
29
|
+
### Added
|
|
43
30
|
|
|
44
|
-
|
|
31
|
+
- 新增 `cwf` 命令名,并把命令整理为 `project`、`host`、`self`、`mcp`、`dev` 五组。`cwf --help` 和各层 `--help` 由同一注册表生成。
|
|
32
|
+
- 新增统一的机器级宿主命令:`cwf host add`、`cwf host remove` 和 `cwf host list`。
|
|
33
|
+
- 新增 Claude Code 插件安装器。插件写入用户技能目录,只提供 `cowork-flow-bootstrap` 引导技能,项目 hook 和 agents 仍由 `project init` 交付。
|
|
34
|
+
- 新增 OpenCode 全局插件安装器。插件自行注册引导技能目录,不修改用户的 `opencode.json`。
|
|
35
|
+
- 新增 Qoder 插件适配,提供 hook、三个 fixed subagent 和引导技能;工作区需要受信任,安装后需要重启 Qoder。
|
|
36
|
+
- 新增 Kimi Code 插件载荷。`cwf host add kimi-code` 默认准备插件源并打印 TUI 安装指令;工作流注入仍可显式使用 `--component hook`。
|
|
37
|
+
- 新增 Codex 插件。安装器准备稳定 marketplace 源并委托 Codex 官方 CLI 注册,不直接修改 `config.toml`。
|
|
38
|
+
- 新增 `cowork-flow-bootstrap` 机器级引导技能,用于没有项目运行时的目录。
|
|
39
|
+
- 新增 `presets/plugin-meta.json` 作为插件显示名、简介、作者、仓库、许可证和关键词的单一来源,并修正作者名拼写。
|
|
40
|
+
- Codex 插件支持 `interface.logo` 和 `interface.brandColor`;ZCode marketplace 支持 HTTPS 图标 URL。
|
|
41
|
+
- 新增 `SECURITY.md`、Issue 模板、PR 模板、Dependabot 和编辑器基础配置。
|
|
42
|
+
- Qoder 的 hook 注入新增一条用户可见痕迹:hook 输出补顶层 `systemMessage`,`qodercli` 的终端 TUI 会把它显示成 `<hook 名> says: <文案>`,每次 SessionStart / UserPromptSubmit 注入都会显示 `cowork-flow: 工作流状态已注入 · status=… · task=…`(只给人看,模型上下文不受影响;Edit 期的规范自查不带这条),文案与实际注入的状态走同一条解析路径。**Qoder 桌面版不渲染 hook 输出文本**:1.1.64 的桌面客户端里没有 `systemMessage` / `hook_system_message` 的渲染路径,聊天中的 hook 部件被直接跳过,所以桌面端要核对注入是否发生,看回复操作条上的锚点图标 tooltip(列出 `SessionStart`、`UserPromptSubmit` 及状态),或看 `~/.qoder/logs/runs/<最新一次运行>/qodercli.log` 里的 `hook.finished … success=true exit_code=0`。其它六个宿主的输出逐字节不变。升级动作:`cwf host add qoder --force` 刷新插件缓存,并在项目里运行 `cwf project sync .` 更新项目运行时(文案由项目运行时渲染),然后重启 Qoder。
|
|
45
43
|
|
|
46
|
-
|
|
47
|
-
- POSIX-only:`a session refresh replaces the cached block instead of accumulating` 与既有 DSH 内容用例在本机(Windows)skip,未在本机执行。
|
|
48
|
-
- 远端确认(提交 `e262196`,CI run 35503939861):ubuntu job 首次执行 `release:check` **通过**——17 条此前只在发布时运行的 `release.test.js` POSIX 用例在 CI 上真实执行并全部通过。
|
|
49
|
-
- 同一 run 的 `windows-core` 失败(步骤 `Run Windows core verification`,exit 1)。该 job 在改动前的 `aa0e34e` 上即为同样的失败,不是本版本的功能改动引入;根因是行尾契约缺失,已在本版本修复(见「Windows 检出与行尾契约」),远端日志无需仓库权限即可复现——全新 `git clone` 即可稳定踩中。
|
|
44
|
+
### Changed
|
|
50
45
|
|
|
51
|
-
|
|
46
|
+
- 七个宿主统一通过 `host-assets.json` 声明平台、技能根、载荷和同步策略;机器级组件、doctor 和命令帮助与声明保持一致。
|
|
47
|
+
- 项目技能只由 `template/skills/` 分发,插件不再复制项目技能。Codex、OpenCode、ZCode、Qoder、Kimi Code 和 DSH 统一改用 `.agents/skills/`;Claude Code 使用 `.claude/skills/`。
|
|
48
|
+
- Kimi Code 默认机器级组件改为插件;hook 保留为显式组件。DSH 默认组件仍为预设。
|
|
49
|
+
- `template/.zcode/` 迁到 `presets/zcode/`,机器级载荷与项目级资产分目录维护。
|
|
50
|
+
- `host-assets.json` 增加 `payload` 描述符,插件安装器从声明读取载荷位置和清单,不再各自硬编码。
|
|
51
|
+
- 插件清单统一由元数据投影并在安装时写入版本;项目级和机器级载荷共用同一份引导技能。
|
|
52
|
+
- 文档改为 README 用户指南、`docs/` 详细说明、`CONTRIBUTING.md` 贡献流程和 Keep a Changelog 更新日志,并随 npm 包发布。
|
|
53
|
+
- 发布脚本新增 `--dry-run` 和 `--no-publish`。前者会真实刷新自实例并运行前置检查,但停在版本 bump 之前;后者完成版本、提交和 tag 后交给 CI 发布。
|
|
54
|
+
- CI 明确记录测试跳过项;Windows 缺少 POSIX 前提时不再把跳过记为通过。
|
|
55
|
+
- 核心库做了一轮结构与注释整理(Python 运行时 + Node 核心库),**行为与对外契约零变化,无需升级动作**:`# ====` 横幅 13 处、`del` 占位 7 处、超长函数 14 个(Python 7 + Node 7)、≥60 字符的注释行 626 条(Python 161 + Node 465)、模板化 docstring 18 条全部清零;九个宿主安装器的重复骨架收敛为 `src/lib/install-support.js`;注释与 docstring 改为只写读代码看不出来的约束。按设计保留的例外:1 处 93 行的宿主载荷函数(`presets/dsh` 的 `apply`),以及 6 处属于协议或统一命令签名的参数。
|
|
56
|
+
- **升级动作**:升级 CLI 后运行 `cwf project sync .`。已有机器级组件按需重装:Codex、Claude Code、OpenCode、ZCode、Qoder 使用 `cwf host add <host> --force`;DSH 使用 `cwf host add dsh --component preset --force`;Kimi Code 重新运行 `cwf host add kimi-code` 并在 TUI 中安装插件。DSH 桌面版(0.2.0+)还需在 DSH 内执行一次 `plugin_manager { action: "install_bundle", target: "$DSH_HOME/bundles/cowork-flow" }`,命令输出里会打印完整路径。
|
|
52
57
|
|
|
53
|
-
###
|
|
58
|
+
### Fixed
|
|
54
59
|
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
60
|
+
- 适配 DeepSeek Harness 0.2.0 桌面版。0.2.0 起预设不再是 `$DSH_HOME/.agent-presets/<id>/` 目录(宿主自带技能原文:"Nothing reads that directory any more"),而是 bundle patch 里 `@deepseek-ai/dsh-agent-preset` 的一条声明行。`cwf host add dsh --component preset` 现在同时写 legacy 目录(0.1.x / CLI 线)与可安装 bundle(`$DSH_HOME/bundles/cowork-flow/`,含生成的 `cordis.patch.yml`、`package.json` 与插件副本),bundle 由宿主自己的插件管理器安装(桌面版是侧边栏 Plugins 页,填 bundle 目录的绝对路径;`plugin_manager` 工具行在桌面宿主组合里被禁用)。两条交付线只差宿主 API 不同的两处,bundle 生成时替换:工作流行(0.1.x `dsh-workflow-worker-thread` ↔ 0.2.0 `dsh-workflow-ptc`)与 persona 行的配置键(0.1.x `text` ↔ 0.2.0 `prefix`)——包解析不到或配置键不被接受,宿主会把**整个**预设判为不可用,因此两边都只写目标线存在的包与 schema 接受的键;workflow-state 插件补订阅 0.2.0 的 `agent/created` 事件(与旧名 `agent/session-start` 并存,两代都能预热)。
|
|
61
|
+
- 修复 `config.yaml` 行内注释剥离把引号内的 `#` 也当作注释起点的问题。`description: "a # b"` 以前被解析成 `a`,以 `#` 开头的引号值(`note: "# keep"`)还会被误判成段落头并吞掉后续缩进行。现在只有引号外、且位于行首或空白之后的 `#` 才开启注释;未加引号的 `v1#beta` 按 YAML 语义保留,列表项与标量使用同一判定。
|
|
62
|
+
- 修复 OpenCode 插件模块导出测试 helper 后导致宿主启动崩溃的问题。插件入口现在只导出可调用的插件工厂,逻辑放在独立模块中。
|
|
63
|
+
- 修复 Kimi Code 插件清单字段和路径不符合宿主 schema 的问题:技能路径改为 `./` 形式,显示信息移入 `interface`,安装器不再输出宿主拒绝的相对源目录。
|
|
64
|
+
- 修复 Qoder 插件清单路径不符合宿主 schema、导致插件被整体丢弃的问题。清单的 `hooks`/`agents`/`skills` 沿用了 zcode 宿主的裸路径写法,而 Qoder 要求路径以 `./` 开头(`hooks` 还要以 `.json` 结尾)、`agents` 只接受 `.md` 文件路径——一处不合法宿主就解析清单失败并丢弃**整个**插件:hook 不注册、agents 与 skills 也不加载,只在 `~/.qoder/logs/qodercli.log` 里留一行 `Failed to load installed plugin`。现在 `hooks`/`skills` 用 `./` 形式,`agents` 交给宿主的目录约定发现。升级动作:`cwf host add qoder --force` 后重启 Qoder。
|
|
65
|
+
- 修复 ZCode 技能根声明与宿主实际扫描路径不一致的问题,旧 `.cowork-flow/skills/` 副本在同步时清理。
|
|
66
|
+
- 修复测试和技能脚本在 `template/`、`presets/` 下写入 `__pycache__` / `*.pyc` 的问题,并增加交付树纯净性门禁。
|
|
67
|
+
- 修复 Windows 全新检出把 JavaScript 和运行器脚本转成 CRLF 的问题;`.gitattributes` 固定相关文件使用 LF。
|
|
68
|
+
- 修复 CLI 未知旗标被静默忽略的问题。`cwf` 统一区分用法错误和操作失败,并拒绝多余位置参数。
|
|
69
|
+
- 修复 `host list` 与注册表中的过时“无机器级组件”分支;所有已声明宿主都必须有对应组件和测试。
|
|
70
|
+
- 七家宿主的项目技能发现通道均完成本机验证,不再登记为未验证假设。
|
|
58
71
|
|
|
59
|
-
###
|
|
72
|
+
### Removed
|
|
60
73
|
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
- **契约诚实化**:`spec-checks.md` 矩阵与 README 从"opencode 降级:无"改为准确表述——五个宿主全部覆盖,其中 zcode 仅主会话、dsh 经预设注入;此前的"降级"是项目未接线,不是宿主能力缺失。
|
|
66
|
-
- **实弹验收项(未在本地执行)**:codex 会话编辑后 stderr 反馈可见(需宿主 hook 信任批准);opencode 会话 edit 后工具结果含单行警告;dsh 会话编辑后下一轮上下文含 spec-check 通知。
|
|
74
|
+
- 任务导航的 `allowedOperations` 不再列出没有实现的操作名(`verify_change`、`apply_review_fix`、`report_result`、`report_needs_context`)。这些 id 既没有状态迁移事实,也没有归属 Skill,永远不会成为下一步动作;路由判定结果不变。
|
|
75
|
+
- 删除插件、预设中的项目技能副本。旧安装由 `PLUGIN-SKILLS-LEGACY` 提示重装清理。
|
|
76
|
+
- 删除 qoder、zcode 和其他宿主的失效适配器路径声明,以及不再使用的技能路径推测和宿主枚举。
|
|
77
|
+
- 删除 `install-kimi-hook` 的无效 `--force` 选项;Kimi hook 始终重写自己的托管区块。
|
|
67
78
|
|
|
68
|
-
|
|
79
|
+
## [1.6.0] - 2026-09-20
|
|
69
80
|
|
|
70
|
-
|
|
71
|
-
- **doctor 检测**:新增只读 advisory 检查 `check_dsh_preset`——预设缺失时不报告;无标记或标记不可读 → `PRESET-UNKNOWN-VERSION`;与项目 `.cowork-flow/.version` 不一致 → `PRESET-STALE`;两者都附 `install-dsh-preset --force` 提示,且不进入 doctor 的 error 集合(`ok` 不受影响)。
|
|
72
|
-
- **背景**:预设不随 `sync`/npm 更新,此前升级路径只存在于 README 散文,用户可能长期停留在旧注入逻辑且没有任何提示;协议失败时该宿主的注入会静默降级为空输出。
|
|
81
|
+
### Changed
|
|
73
82
|
|
|
74
|
-
|
|
83
|
+
- PR CI 改为运行与发布相同的 `release:check` 门禁,避免只覆盖部分测试。
|
|
84
|
+
- 宿主必需集合改由 Host Asset Manifest 派生,删除 Python、JavaScript 和 schema 中的重复宿主枚举。
|
|
85
|
+
- README 保护文件说明、spec-check 超时文案和 schema 索引与实际行为对齐。
|
|
86
|
+
- 发布和测试报告保留平台跳过项,不把未执行用例记为通过。
|
|
75
87
|
|
|
76
|
-
|
|
77
|
-
- **契约修正**:`spec/contracts/spec-checks.md` 的「归属与 sync 策略」改为与实际一致——`spec/` 是 sync 保护前缀,已安装项目不会被同步改写;具名例外是 `syncPolicy.safeFiles` 中的契约文件。该文件加入 `safeFiles`(同 `workflow-state-templates.md` 先例),使契约修正能到达已安装下游。
|
|
78
|
-
- **fallback 自救路径**:`FALLBACK_BINDING_BLOCKER` 与两处 lifecycle 拒绝文案改为指向 workflow-state 头部的 `session` 属性(`COWORK_FLOW_CONTEXT_ID`),不再给出无任务可传的 `pass <task-dir>` 单一出路。
|
|
79
|
-
- **悬空引用清理**:README 与模板脚本/spec 中指向已 untrack 的 `docs/` 的引用全部改写或内联(MCP 客户端配置要点保留在 README)。
|
|
80
|
-
- **测试**:新增根/模板 managed block 字节相等与指针断言、fallback blocker 文案可执行性断言。
|
|
81
|
-
- **已知合法副作用**:contract fingerprint 由 `d1d0e2536e8fa150` 更新为 `2dc34375d28f8103`(内容派生;`host-assets.json` 的 `safeFiles` 条目变更)。
|
|
88
|
+
### Fixed
|
|
82
89
|
|
|
83
|
-
|
|
90
|
+
- 修复 `spec-check` 文本模式对规范声明解析错误伪绿的问题:解析错误与 `unchecked` 同样返回退出码 2,并在文本输出中列出出错的规范文件;`--allow-unchecked` 不豁免解析错误。
|
|
91
|
+
- 修复 Unit of Work 冲突补偿的两处丢失:回滚会恢复内容为 `{}` 的已删文件,也会把"写入前并不存在"的新文件还原为不存在。
|
|
92
|
+
- 修复任务创建重复使用已有目录、失败后留下半成品的问题:创建拒绝任何已存在的任务目录,中途失败只清理本次写入的文件与空目录,同 slug 可以重试。
|
|
93
|
+
- 修复 OpenCode 插件绑定运行上下文时两次写入不原子导致的半绑定:会话记录与上下文绑定在同一组锁下定稿,第二次写入失败会撤销已落盘的第一次。
|
|
94
|
+
- 修复运行上下文的 `initialize`、`bind`、`close` 在外部回滚后重试被旧记录卡住的问题:每次尝试使用独立操作 id,重试会真正改写文件,正常幂等重放与冲突诊断不变。
|
|
95
|
+
- 修复 Codex 插件卸载在 CLI 解绑失败时删除 marketplace 与缓存的问题:现在保留现场并打印可重试的手工步骤。
|
|
96
|
+
- 修复 Qoder 插件把"只有载荷、没有注册"的安装当成已安装的问题:判定同时要求注册表条目与启用标记,缺失时自动补齐。
|
|
97
|
+
- 修复根目录 `.zcodeignore` 未被忽略而阻塞发布干净工作树门禁和任务复核的问题。
|
|
98
|
+
- 修复状态文件含非法 UTF-8 时读取崩溃的问题:现在返回空结果、保留原文件并输出诊断。
|
|
99
|
+
- 修复 unittest 收集不到模块级测试函数的问题,并增加测试收集守卫。
|
|
100
|
+
- 修复 Windows 专属测试文件在顶层退出时被记为通过的问题;现在明确显示跳过原因。
|
|
101
|
+
- 修复宿主适配测试中的恒真断言。
|
|
102
|
+
- 修复 JavaScript 文件在 Windows 全新检出后使用 CRLF、导致 shebang 断言失败的问题。
|
|
103
|
+
- 补齐 DSH workflow-state 插件的刷新事件、section 注册、降级和工具透传测试。
|
|
84
104
|
|
|
85
|
-
###
|
|
105
|
+
### Removed
|
|
86
106
|
|
|
87
|
-
|
|
107
|
+
- 删除无调用的技能路径链、孤儿异常处理、恒空校验器和其它只由测试触发的死代码。
|
|
88
108
|
|
|
89
|
-
|
|
90
|
-
- **回退语义收紧**:`fallback_for_unbound` 仅在**恰好存在一个** main-session 绑定时跟随最新的那个;存在多个绑定时,未绑定 hook 会话渲染 no_task + rebind 提示,绝不交叉读取其他窗口。
|
|
91
|
-
- **会话身份显式化**:workflow-state 头部新增 `session=<contextKey>` 属性,模型可将其作为 `COWORK_FLOW_CONTEXT_ID` 传给后续 CLI 调用,打通 hook 会话与 CLI 身份。
|
|
92
|
-
- **MCP 拒绝隐式冒认**:`task_state` / `task_scope` / `task_list` 在不可信身份下拒绝隐式解析(`identity-untrusted`),不再冒认 process-fallback 任务;CLI `FALLBACK_BINDING_BLOCKER` 语义不变(回归护栏锁定)。
|
|
93
|
-
- 契约文档 context-injection.md 同步记录 session 属性与回退语义;新增 pytest 396 行覆盖(active_task_runtime / inject_entry / mcp_state_server / workflow_state_hook)。
|
|
109
|
+
## [1.5.0] - 2026-09-18
|
|
94
110
|
|
|
95
|
-
|
|
111
|
+
### Added
|
|
96
112
|
|
|
97
|
-
|
|
113
|
+
- 发布脚本新增 `--no-publish`,可完成版本、提交和 tag 后交给 CI 执行 npm 发布。
|
|
114
|
+
- Codex、OpenCode 和 DSH 增加编辑期规范检查,违规以单行提示返回,不阻断编辑动作。
|
|
115
|
+
- DSH 预设写入版本标记;doctor 可报告 `PRESET-UNKNOWN-VERSION` 和 `PRESET-STALE`。
|
|
116
|
+
- 修复上下文后补齐 MCP 注册、运行帮助和相关文档入口。
|
|
98
117
|
|
|
99
|
-
|
|
118
|
+
### Fixed
|
|
100
119
|
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
- **JS-only 行为移植进 Python 单源**:`formatRebindHints`(zcode 无任务体补活动任务列表)、`editScopeWarning`(逐文件 scope 白名单警告,与 spec 警告合并进同一载荷)、missing-task 统一文案(原 "stale" 通用回退改为明确指向任务目录不存在 + 建任务指引,全宿主生效)、`checkEssentialFiles` 缺文件警告(zcode)、无会话身份时的 newest-session 显示回退(zcode,仅显示不改写绑定语义)。
|
|
105
|
-
- **MCP 重定位**:`task_scope` / `task_specs` 补 CLI 同源事实命令(`task scope` / `task specs`),MCP 不再有独占能力;contract-registry 注册 `FACT_LAYER_ACCESS_V1` 契约(digest 行注入"MCP 优先查询事实,CLI 兜底");doctor 新增 MCP 注册健康项(项目级 .mcp.json 存在性 / 全局+项目双重注册提示 / 缺失提示),只读 advisory 不阻断;README 增加两档注册说明(全局受支持默认 + 项目 opt-in 地图)。
|
|
106
|
-
- **修复(1.2.0 遗留,Windows)**:`spec_check._run_command` 三处——含引号命令经 list2cmdline 转义后 cmd.exe 解析失败;`text=True` 未显式 `encoding="utf-8", errors="replace"`,中文 Windows cmd GBK 输出致解码线程崩溃、输出丢失;命令入口缺失在 Windows 被误分类为 violation(现经 `shutil.which` 归 unchecked,契约三态语义恢复一致)。
|
|
107
|
-
- **修复**:legacy runtime context 文件(缺 `runtime_context_id` 字段)注入显示回退到检测到的 id。
|
|
120
|
+
- 修复 PostToolUse 对 `file_path`、`filePath`、`path` 和 Codex 补丁文本的路径提取差异。
|
|
121
|
+
- 修复 DSH 预设升级后没有提示的问题。
|
|
122
|
+
- 修复无可信会话身份时 fallback 文案无法指导用户重新绑定的问题。
|
|
108
123
|
|
|
109
|
-
|
|
124
|
+
## [1.4.0] - 2026-09-14
|
|
110
125
|
|
|
111
|
-
###
|
|
126
|
+
### Fixed
|
|
112
127
|
|
|
113
|
-
|
|
128
|
+
- 修复多窗口下未绑定 hook 会话可能读取其它会话任务的问题。激活命令会认领当前会话;只有一个可信绑定时才允许回退跟随,多个绑定时保持 `no_task` 并提示重新绑定。
|
|
129
|
+
- MCP 任务查询不再用不可信的进程级身份冒认任务。
|
|
130
|
+
- 工作流状态新增 `session` 属性,供 hook 与后续 CLI 调用共享会话身份。
|
|
114
131
|
|
|
115
|
-
|
|
116
|
-
- **scope 路径相对化**:`edit_scope_warning` 此前拿原始绝对路径与仓库相对白名单比对,所有编辑都被误标越界;现与 spec 路径同样归一为仓库相对,警告行显示相对路径。
|
|
117
|
-
- **编辑期预算与节流加固**:edit 钳制 3s→2.5s(子进程预算余量);节流只在跑完一次后写入(执行器崩溃不再吞掉节流窗口);`files` 多值列表逐 token 剥引号。
|
|
118
|
-
- **delegated 子代理收到 spec 反馈**:编辑期 spec 警告的静默范围此前在 Python/JS 两侧不一致,现统一为 delegated 会话可达(scope 警告保持仅主会话)。
|
|
132
|
+
## [1.3.0] - 2026-09-09
|
|
119
133
|
|
|
120
|
-
|
|
134
|
+
### Changed
|
|
121
135
|
|
|
122
|
-
|
|
136
|
+
- 状态注入逻辑收拢到 Python 单一入口,宿主适配层只负责事件和传输差异。
|
|
137
|
+
- `task_scope`、`task_specs` 增加与 MCP 同源的 CLI 查询命令;MCP 主要作为无 hook 宿主的只读查询通道。
|
|
138
|
+
- ZCode 注入脚本缩减为传输层,编辑期检查使用节流和统一预算。
|
|
139
|
+
- 子代理无法收到宿主编辑期反馈时,改为在报告前显式运行 `spec-check` 自检。
|
|
123
140
|
|
|
124
|
-
###
|
|
141
|
+
### Fixed
|
|
125
142
|
|
|
126
|
-
-
|
|
143
|
+
- 修复 Windows 下带引号命令、中文输出解码和命令缺失分类不一致的问题。
|
|
144
|
+
- 修复未绑定 ZCode 会话的编辑期 scope/spec 警告完全静默。
|
|
145
|
+
- 修复 scope 使用绝对路径比较导致所有编辑都被误报越界。
|
|
146
|
+
- 修复缺少 git 时任务启动崩溃;无 HEAD 时降级为 working-tree 状态。
|
|
127
147
|
|
|
128
|
-
## 1.2.0 - 2026-09-08
|
|
148
|
+
## [1.2.0] - 2026-09-08
|
|
129
149
|
|
|
130
|
-
###
|
|
150
|
+
### Added
|
|
131
151
|
|
|
132
|
-
|
|
152
|
+
- 新增规范挂命令:项目规范可在 frontmatter 中声明 `cmd`、`files`、`timeout` 和 `when`。
|
|
153
|
+
- 新增 `./.cowork-flow/run spec-check`,结果分为 `pass`、`violation` 和 `unchecked`;后两者阻断完成。
|
|
154
|
+
- 编辑期检查提供单行提示,收口检查把结果写入任务记录。
|
|
155
|
+
- doctor 报告无法解析或无法执行的规范检查声明。
|
|
133
156
|
|
|
134
|
-
|
|
135
|
-
- **三态门禁语义**:`pass` / `violation`(complete 阻断、状态不推进)/ `unchecked`(命令缺失、解释器缺失、超时——阻断并要求显式 `--allow-unchecked`,豁免留痕进 `task.json` `meta.specCheckExempt` 供 review 可见)。unchecked 永不冒充 pass。
|
|
136
|
-
- **收口遥测**:complete 时全量结果写 `meta.specCheckSummary`,为"返工前移"效果提供可对比基线。
|
|
137
|
-
- **三线 digest 注入**:进入 in_progress 后,stage-contract 的 Specs 行升级为 h2 标题树索引(每 spec 最多 6 条、每条截断 24 字符),规范条目名随契约常驻注意力;spec 正文改动不影响 digest,超预算整行让位(Scope/Gates 永不丢)。python/zcode/opencode 输出由 matrix 用例锁定逐字相等,claude 线经 Python 单源自动获得。
|
|
138
|
-
- **编辑期快跑**:zcode(PostToolUse 短路径,spawn 单源 CLI、3.8s 上限)与 claude(PostToolUse 新增 hook 资产,exit 2 单行 stderr 反馈)在编辑命中 `files` 的声明时就地执行,违规单行警告、同文件 10 秒节流(状态在 `.cowork-flow/.runtime/`)、执行器缺失静默不阻断编辑流;opencode 降级为仅 digest + 收口。
|
|
139
|
-
- **doctor 健康项**:`specChecks` 报告声明解析错误与命令入口不存在——"跑不了的声明"在收口前暴露。
|
|
157
|
+
## [1.1.4] - 2026-08-31
|
|
140
158
|
|
|
141
|
-
|
|
159
|
+
### Fixed
|
|
142
160
|
|
|
143
|
-
|
|
161
|
+
- 修复 Windows 下 Node 直接启动 npm `.cmd` shim 时出现 `EINVAL` 的问题;`mcp-state` 改用与 npm 一致的 shell 启动方式。
|
|
144
162
|
|
|
145
|
-
|
|
163
|
+
## [1.1.3] - 2026-08-30
|
|
146
164
|
|
|
147
|
-
|
|
165
|
+
> 1.1.1 和 1.1.2 的变更首次随 1.1.3 一起发布;本版本同时承载前两个版本的代码。
|
|
148
166
|
|
|
149
|
-
|
|
167
|
+
### Changed
|
|
150
168
|
|
|
151
|
-
|
|
169
|
+
- scope 规则和阶段契约预算移入 `spec/runtime/scope-rules.json`,Python 与 JavaScript 运行时共用同一份数据。
|
|
170
|
+
- 缺少或损坏规则文件时使用与原行为一致的默认值。
|
|
152
171
|
|
|
153
|
-
###
|
|
172
|
+
### Fixed
|
|
154
173
|
|
|
155
|
-
-
|
|
156
|
-
-
|
|
157
|
-
-
|
|
158
|
-
- 修复预算兜底 1 字节超限:裁剪切分与闭标签间的换行预留。
|
|
159
|
-
- **CI 修复(delegated 注入崩溃)**:zcode delegated 分支不再以空输入对象重新发现项目根(`findProjectRoot({})`),改为复用 main 已解析的工作流根——在无 `.cowork-flow/` 的目录(干净 checkout、非项目目录)触发 delegated prompt 不再 `join(null)` 崩溃;对应的注入测试显式指定 spawn 工作目录,消除对测试运行 cwd 的隐式依赖(干净 checkout 下此前必红,实测 dev 推送 CI 双平台失败)。
|
|
160
|
-
- **CI 修复(Windows git 降级)**:`git` 二进制不可用(PATH 缺失/未安装)时 `_run_git_command` 捕获 OSError 按 rc!=0 降级——`current_head` 视为无头(不写 baseline)、变更集收集降级 status-only,`task start` 不再崩溃(Windows 的 CreateProcess 在 PATH 缺失时不回退,清空环境的会话测试此前必红;macOS execvp 有默认 PATH 兜底故本地绿)。
|
|
174
|
+
- 修复 delegated 注入在非项目目录中因空项目根崩溃。
|
|
175
|
+
- 修复 Windows 缺少 git 时任务上下文收集失败。
|
|
176
|
+
- 修复 scope 预算裁剪少保留一个换行,导致闭标签不完整的问题。
|
|
161
177
|
|
|
162
|
-
## 1.1.2 - 2026-08-30
|
|
178
|
+
## [1.1.2] - 2026-08-30
|
|
163
179
|
|
|
164
|
-
###
|
|
180
|
+
### Added
|
|
165
181
|
|
|
166
|
-
-
|
|
167
|
-
-
|
|
168
|
-
- **降级语义**:无 git 仓库 / HEAD 不存在 / 基线缺失 / diff 失败(如 rebase 孤儿化)→ 降级 status-only,与旧行为一致,不产生错误 blocker。
|
|
169
|
-
- **契约重开**:task-review SKILL 输入语义写明基线变更集与降级行为;已审查任务的增量重审聚焦自基线以来的变化,证据要求不变。
|
|
182
|
+
- 任务进入实现阶段时记录固定 review 基线。审查范围合并基线后的提交和当前 working tree,避免中途提交让越界文件从检查中消失。
|
|
183
|
+
- 无 git、HEAD 或基线时降级为 working-tree 状态,不产生虚假阻断。
|
|
170
184
|
|
|
171
|
-
## 1.1.1 - 2026-08-30
|
|
185
|
+
## [1.1.1] - 2026-08-30
|
|
172
186
|
|
|
173
|
-
###
|
|
187
|
+
### Fixed
|
|
174
188
|
|
|
175
|
-
-
|
|
176
|
-
-
|
|
177
|
-
-
|
|
178
|
-
-
|
|
179
|
-
-
|
|
180
|
-
-
|
|
181
|
-
- **review 门禁补洞**:implement.jsonl 缺失时 review 产生 `missing_implement_jsonl_file_scope` blocker(此前静默放行,删除 manifest 即绕过白名单)。
|
|
182
|
-
- **矩阵化跨端测试**:`test/fixtures/stage-contract-matrix.json` 单一数据文件驱动三线(python/zcode/opencode)逐字节相等断言,覆盖规范/`./` 前缀/非法边界/超限/emoji/缺锚点/空 scope/delegated 8 类用例;zcode hooks.json matcher(Bash|Edit|Write|MultiEdit)由模板测试锁定;新增 Python 侧矩阵断言。
|
|
183
|
-
- dev_type 畸形值(非字符串)在 task_specs 中按缺省降级;spec 指针忽略 directory 条目;normalizeScopePath 带 trim;zcode 生命周期刷新正则对齐 dsh(task|subagent|resume)。
|
|
184
|
-
- 契约文档如实化:context-injection.md 不再声称三线结构恒等/always emitted,改为差异表 + 矩阵锁定范围 + 残余缺口清单(matcher 依赖 ZCode 运行时工具名、JS 过滤为规则移植)。
|
|
189
|
+
- 修复带 `./` 前缀的 scope 条目导致 ZCode/OpenCode hook 崩溃。
|
|
190
|
+
- 修复超预算阶段契约产生未闭合文本的问题。
|
|
191
|
+
- MCP 拒绝仓库外路径和没有工具调用的 JSON-RPC 通知。
|
|
192
|
+
- JavaScript 与 Python 使用一致的 scope 过滤规则,delegated 子代理只读呈现父任务范围。
|
|
193
|
+
- 非法 UTF-8 锚点不再让整个阶段契约静默消失。
|
|
194
|
+
- review 缺少 `implement.jsonl` 时明确阻断。
|
|
185
195
|
|
|
186
|
-
## 1.1.0 - 2026-08-29
|
|
196
|
+
## [1.1.0] - 2026-08-29
|
|
187
197
|
|
|
188
|
-
>
|
|
198
|
+
> npm 上的 1.0.0 包早于最终发版修复;下文阶段 0-3 的完整能力从 1.1.0 起实际发布。
|
|
189
199
|
|
|
190
|
-
###
|
|
200
|
+
### Added
|
|
191
201
|
|
|
192
|
-
-
|
|
193
|
-
-
|
|
194
|
-
-
|
|
195
|
-
-
|
|
196
|
-
- MCP
|
|
202
|
+
- 新增统一的工作流状态注入、contract digest 和 decision anchor 摘要。
|
|
203
|
+
- 新增 `run state [task] --json` 事实视图,汇总任务、计划、会话和规范绑定。
|
|
204
|
+
- 新增 executor 归属、冲突阻断、显式接管和无会话 CI 启动。
|
|
205
|
+
- 新增子代理 evidence 记录。
|
|
206
|
+
- 新增无第三方依赖的只读 MCP 服务,提供 `task_state` 和 `task_list`。
|
|
207
|
+
- 新增全局 `cowork-flow mcp-state` 透传入口。
|
|
197
208
|
|
|
198
|
-
## 1.0.0 - 2026-08-26
|
|
209
|
+
## [1.0.0] - 2026-08-26
|
|
199
210
|
|
|
200
|
-
|
|
211
|
+
首个稳定主线版本,冻结任务状态、会话身份和宿主注入协议。
|
|
201
212
|
|
|
202
|
-
###
|
|
213
|
+
### Added
|
|
203
214
|
|
|
204
|
-
-
|
|
205
|
-
-
|
|
206
|
-
-
|
|
215
|
+
- 支持 Codex、OpenCode、Claude Code、DSH 和 ZCode 五个宿主。
|
|
216
|
+
- 新增 `<workflow-state>`、contract digest 和状态快照协议。
|
|
217
|
+
- 新增任务事实视图、executor 归属、stage contract、MCP 只读查询和全局 MCP 入口。
|
|
218
|
+
- 新增计划绑定、任务树、Party Mode 与 Batch 基础能力。
|
|
219
|
+
- 新增发布脚本、跨平台测试和主机资产同步。
|
|
207
220
|
|
|
208
|
-
###
|
|
221
|
+
### Changed
|
|
209
222
|
|
|
210
|
-
-
|
|
211
|
-
-
|
|
212
|
-
- 交互式平台选择器与平台检测断言随五宿主矩阵更新。
|
|
213
|
-
- release.sh 容错:`--version` 精确模式在版本文件已全部就位(干净工作树)时,`git commit` 的 no-op 空提交不再中止脚本,继续 tag 与 publish;其余 commit 失败仍立即中止。新增回归测试覆盖两条路径。
|
|
214
|
-
- release.sh 容错:目标发布 tag 已存在且指向当前 HEAD 时跳过创建并继续 publish(上次运行 tag 后 publish 未完成的重跑场景);指向其它提交则中止报错。新增回归测试覆盖两条路径。
|
|
215
|
-
- 方向收敛(阶段 0):README 定位改为「运行时上下文与协作事实层」;新增注入协议契约 `spec/contracts/context-injection.md`(事件时机矩阵、digest 形态规则、序列化规范);契约指纹序列化三线统一(zcode/opencode 稳定排序 + Python 紧凑分隔符,跨 host 指纹一致性测试锁定);Python 线补 slim(SessionStart 全量 / 后续单行指纹,无事件 host 按会话文件首次判定);codex 事件名读取;opencode 首次全量后续单行;dsh 会话开始全量、生命周期命令后单行刷新。
|
|
216
|
-
- 事实层 API 化(阶段 1a):新增 `./.cowork-flow/run state [task] --json` 事实视图——聚合 task.json(含 `_state` 修订)、decision-anchor 结构化要点(目标/验收项/被拒方案名)、plan 绑定、绑定会话与受信快照;无绑定输出 `task: null` 供机器分支。
|
|
217
|
-
- 注入结构化(阶段 1b):`<workflow-state>` 升级为属性事实头(`task`/`status`/`source` 进开标签,body 保留人读面包屑),三线一致并在协议契约冻结;planning/in_progress/review 状态下三线注入紧凑 `<decision-anchor>` 决策要点块(Python 复用 fact_view 解析单源),completed 终态与缺文件不注入。
|
|
218
|
-
- 多执行者语义(阶段 2):task.json 增加 `executor` 归属(start 写入会话 key 或显式 `--executor`);执行者冲突 fail-closed(`LIFECYCLE-EXECUTOR-001`,幂等重跑同样拦截),`--takeover` 显式接管并覆写归属(含已激活任务的幂等接管);`--executor` 允许无会话 CI/无头 start(不建会话绑定);子代理运行时上下文新增 `evidence` 证据位(`subagent evidence <id> --note [--artifact]`,CAS 保护、closed 可补记、不影响任务状态机);`run state` 人读摘要透出 Executor。
|
|
219
|
-
- 生态适配(阶段 3):新增 `./.cowork-flow/run mcp-state`——无依赖 MCP stdio 只读服务(newline-delimited JSON-RPC 2.0),工具 `task_state`(事实视图)与 `task_list`(活动任务概览);接入契约 `spec/contracts/fact-layer-access.md` 冻结只读保证与"不自创跨 agent 协议、adapter 保持薄"立场,写路径仍独占于 CLI 门禁链。
|
|
220
|
-
- 实现阶段守卫三件套:MCP `task_scope`/`task_specs` 只读工具(越界判定与规范清单,宿主无关、Python 单源);`<stage-contract>` 实现契约块三线注入(编辑白名单/规范入口/门禁预告/任务自声明验证命令,≤1200 字符,跨宿主逐字相等测试锁定);zcode 编辑越界实时警告(PostToolUse Edit/Write/MultiEdit 短路径,能力矩阵声明 `editScopeWarning`,其余宿主 fallback 到静态预告)。
|
|
221
|
-
- MCP 全局入口:npm CLI 新增 `cowork-flow mcp-state` 透传命令——从 cwd 向上定位最近 `.cowork-flow/` 并以继承 stdio exec 该项目的 `run mcp-state`;MCP 客户端全局注册一次(`cowork-flow mcp-state`)即可服务所有 cowork-flow 项目,无需逐项目配置。
|
|
223
|
+
- 会话绑定区分宿主 session id、显式 context id 和进程 fallback;不可信身份不再自动跟随其它会话。
|
|
224
|
+
- 状态转换与运行快照在同一事务单元内提交。
|
|
222
225
|
|
|
223
|
-
## 0.0.52 - 2026-08-26
|
|
226
|
+
## [0.0.52] - 2026-08-26
|
|
224
227
|
|
|
225
|
-
###
|
|
228
|
+
### Added
|
|
226
229
|
|
|
227
|
-
-
|
|
228
|
-
-
|
|
229
|
-
-
|
|
230
|
-
- contract digest 注入瘦身:SessionStart(含 compact/clear)注入完整块,UserPromptSubmit 仅重复指纹行。
|
|
231
|
-
- 新增 PostToolUse(Bash) 轮内刷新:生命周期命令落定后立即注入最新 workflow-state 与指纹行,无关命令零输出。
|
|
230
|
+
- 接入 ZCode 宿主、插件、hook、会话身份和项目技能。
|
|
231
|
+
- 生命周期命令后立即刷新工作流状态,无需等待下一条用户消息。
|
|
232
|
+
- doctor 新增会话卫生检查。
|
|
232
233
|
|
|
233
|
-
###
|
|
234
|
+
### Fixed
|
|
234
235
|
|
|
235
|
-
-
|
|
236
|
-
-
|
|
236
|
+
- 全局回退不再选择失效绑定或子代理会话。
|
|
237
|
+
- contract digest 在会话开始时输出完整内容,后续消息只输出指纹。
|
|
237
238
|
|
|
238
|
-
|
|
239
|
+
## [0.0.51] - 2026-08-15
|
|
239
240
|
|
|
240
|
-
|
|
241
|
+
### Added
|
|
241
242
|
|
|
242
|
-
|
|
243
|
+
- 接入 DeepSeek Harness 预设和 workflow-state hook。
|
|
244
|
+
- 任务可绑定计划,归档时保留计划快照。
|
|
245
|
+
- CI 在 Ubuntu 和 Windows 上运行 Python 测试。
|
|
243
246
|
|
|
244
|
-
###
|
|
247
|
+
### Fixed
|
|
245
248
|
|
|
246
|
-
-
|
|
247
|
-
-
|
|
248
|
-
- 补齐协议失败静默降级边界测试;记录 DSH 子代理绑定 field-test 路径(subagent init/bind/close)。
|
|
249
|
+
- 统一平台和 ZCode 会话上下文解析。
|
|
250
|
+
- Windows 通过 cmd wrapper 启动批处理和 hook。
|
|
249
251
|
|
|
250
|
-
|
|
252
|
+
## [0.0.50] - 2026-08-10
|
|
251
253
|
|
|
252
|
-
|
|
253
|
-
- 归档任务快照绑定计划(snapshot bound plan into archived task)。
|
|
254
|
+
### Changed
|
|
254
255
|
|
|
255
|
-
|
|
256
|
+
- task-review 明确把用户绑定的 spec 视为必须完成的检查项。
|
|
256
257
|
|
|
257
|
-
|
|
258
|
-
- 共享 PYTHONPATH bootstrap;批量动作与 codex hook 在 Windows 通过 cmd wrapper 运行。
|
|
259
|
-
- CI 在 Ubuntu/Windows 双平台跑全量 pytest;发布流程先同步 Skill replicas 再过全量门禁。
|
|
258
|
+
## [0.0.49] - 2026-08-08
|
|
260
259
|
|
|
261
|
-
|
|
260
|
+
### Added
|
|
262
261
|
|
|
263
|
-
|
|
262
|
+
- 新增源码仓库 `source-refresh` 命令。
|
|
263
|
+
- 计划绑定 lite 在高风险任务启动前检查计划和 decision anchor。
|
|
264
264
|
|
|
265
|
-
|
|
265
|
+
### Changed
|
|
266
266
|
|
|
267
|
-
|
|
267
|
+
- 拆分任务上下文服务,精简 lifecycle CLI 适配层。
|
|
268
|
+
- 状态恢复、host manifest、Batch 和 Party Mode 使用明确模块边界。
|
|
269
|
+
- CI 增加 Windows 发布信心门禁。
|
|
268
270
|
|
|
269
|
-
|
|
271
|
+
## [0.0.48] - 2026-08-05
|
|
270
272
|
|
|
271
|
-
|
|
272
|
-
- `task next` 暴露实现优先读上下文(implement read-first);test-first 技能强化 red-green 指引。
|
|
273
|
+
### Changed
|
|
273
274
|
|
|
274
|
-
|
|
275
|
+
- 拆分 lifecycle 命令并收紧路由和 runtime context 恢复规则。
|
|
276
|
+
- 移除旧 changes control plane 和 session journal 工作流。
|
|
277
|
+
- Party Mode 使用独立 board 存储;Batch 增加事实检查和 host action 结果校验。
|
|
278
|
+
- 新增 host capability matrix、集中同步策略和健康检查输出。
|
|
279
|
+
- README 增加任务流程图与故障排查说明。
|
|
275
280
|
|
|
276
|
-
|
|
277
|
-
- 状态恢复诊断增强;host manifest 契约对齐;批量与 party 编排器模块化。
|
|
278
|
-
- 保持 python 3.9 runner 兼容。
|
|
281
|
+
## [0.0.47] - 2026-08-05
|
|
279
282
|
|
|
280
|
-
|
|
283
|
+
此版本未保留本地条目正文,详情见 [GitHub Release](https://github.com/fishlikewater/cowork-flow/releases/tag/v0.0.47)。
|
|
281
284
|
|
|
282
|
-
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
-
|
|
294
|
-
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
- README 项目概览刷新、任务流程图;产品故障排查 playbook;changelog 发布就绪说明。
|
|
304
|
-
|
|
305
|
-
## 0.0.47 - 2026-08-05
|
|
285
|
+
[Unreleased]: https://github.com/fishlikewater/cowork-flow/compare/v1.7.2...HEAD
|
|
286
|
+
[1.7.2]: https://github.com/fishlikewater/cowork-flow/compare/v1.7.1...v1.7.2
|
|
287
|
+
[1.7.1]: https://github.com/fishlikewater/cowork-flow/compare/v1.7.0...v1.7.1
|
|
288
|
+
[1.7.0]: https://github.com/fishlikewater/cowork-flow/compare/v1.6.0...v1.7.0
|
|
289
|
+
[1.6.0]: https://github.com/fishlikewater/cowork-flow/compare/v1.5.0...v1.6.0
|
|
290
|
+
[1.5.0]: https://github.com/fishlikewater/cowork-flow/compare/v1.4.0...v1.5.0
|
|
291
|
+
[1.4.0]: https://github.com/fishlikewater/cowork-flow/compare/v1.3.0...v1.4.0
|
|
292
|
+
[1.3.0]: https://github.com/fishlikewater/cowork-flow/compare/v1.2.0...v1.3.0
|
|
293
|
+
[1.2.0]: https://github.com/fishlikewater/cowork-flow/compare/v1.1.4...v1.2.0
|
|
294
|
+
[1.1.4]: https://github.com/fishlikewater/cowork-flow/compare/v1.1.3...v1.1.4
|
|
295
|
+
[1.1.3]: https://github.com/fishlikewater/cowork-flow/compare/v1.1.2...v1.1.3
|
|
296
|
+
[1.1.2]: https://github.com/fishlikewater/cowork-flow/compare/v1.1.1...v1.1.2
|
|
297
|
+
[1.1.1]: https://github.com/fishlikewater/cowork-flow/compare/v1.1.0...v1.1.1
|
|
298
|
+
[1.1.0]: https://github.com/fishlikewater/cowork-flow/compare/v1.0.0...v1.1.0
|
|
299
|
+
[1.0.0]: https://github.com/fishlikewater/cowork-flow/compare/v0.0.52...v1.0.0
|
|
300
|
+
[0.0.52]: https://github.com/fishlikewater/cowork-flow/compare/v0.0.51...v0.0.52
|
|
301
|
+
[0.0.51]: https://github.com/fishlikewater/cowork-flow/compare/v0.0.50...v0.0.51
|
|
302
|
+
[0.0.50]: https://github.com/fishlikewater/cowork-flow/compare/v0.0.49...v0.0.50
|
|
303
|
+
[0.0.49]: https://github.com/fishlikewater/cowork-flow/compare/v0.0.48...v0.0.49
|
|
304
|
+
[0.0.48]: https://github.com/fishlikewater/cowork-flow/compare/v0.0.47...v0.0.48
|
|
305
|
+
[0.0.47]: https://github.com/fishlikewater/cowork-flow/releases/tag/v0.0.47
|