Repository navigation
Releases: Inmata/workflow
Release list
0.8.1:安装恢复、任务提取边界与协议事实收敛
补丁版本,收敛 0.8.0 之后全仓复核发现的安装恢复、任务提取边界、项目接入写入与协议事实判断问题,不新增任务协议或学习契约。
安装与接入
install/uninstall先落盘意图再改 hooks 配置;准备阶段或最终状态保存失败后,重试按配置前后指纹、current原/新目标和管理区绑定意图收敛,遇到第三种用户内容保留现场待核对。project onboard核对实际 hooks 注册:分组matcher、disableAllHooks、handler 被修改或配置无法读取时不再报告已注册;doctor复用同一判断。- AGENTS 管理区改为同目录临时文件写入并同步,替换前复核全文;接入/停用留下绑定意图,替换成功但状态保存失败后仍可收敛,用户手改内容继续按冲突保留。
协议与信号
- 工作包
role登记后不可修改;需要换角色时新建接替包,避免借改role改写审查与取消事实。 - 同一批接替链按合并后的整批目标图判断历史 PASS 与已审事实,新建的中间包也参与判断。
- 宿主
permission_mode作为当前事件的可信观测,普通工具事件在模式变化时同步;拒绝信号只回滚业务声明,不回滚该观测。
任务提取与对齐
task-start记录本任务起点,task-end固定 transcript 前缀的大小、SHA-256 与消息边界;登记后继续追加不进入旧作业,替换、截断、起点不可确认或旧作业缺少范围时跳过,不回退读取会话全文。- 学习被禁止的任务也推进边界;重放
task-end只查询原任务已有作业,不为当前新任务提前登记。 - 对齐只解析管理区内的标题与表格,目录检查计入完整性;读取失败或超出检查上限时给出“不完整”提示。
- 进程输出按流解码,跨块多字节字符不再损坏。
验证
npm test:380 项,378 通过,0 失败,2 跳过(Windows 符号链接用例)。npm run check:ok,版本 0.8.1,51 个语法文件、29 份文档、48 个发布文件、176 个本地链接。npm run demo:合成隔离 CLI smoke 通过;realACP: not-tested,不代表真实宿主回调或模型调用。node bin/workflow.mjs spec check --project .:ok,无 drift 发现。
升级后重装宿主即可;两个宿主共用 current,AGENTS 管理区未变,不需要重新接入。真实回调、模型调用和超大仓库下的 4 秒 Git 预检预算仍需另行验收。
0.8.0:任务分流、spec 锁外预检与维护验证
自 v0.7.0 以来,任务分流、spec 检查和接入预检得到改进。
主要变化
- 新任务必须明确声明
route(operation-only、lead-direct或delegated);已有历史任务保留兼容路径。 - task-end 和 Stop 的 spec Git 预检移到状态锁外,并绑定提交、spec、受管文件和索引快照;检查期间发生变化时拒绝过期结果。
- 预检 Git 调用共享从检查开始计算的 4 秒截止预算。同步文件快照无法强制中断,锁内 ref 复核另有预算,因此这不是整个 Hook 的严格 4 秒上限。
- onboard 先完成核心预检,再调用配置的执行器;PowerShell 参数按字面传递,兼容参数还原需要显式启用。
- 对齐读取故障报告 errors 并标记 stale/incomplete;未应用的对齐事务保持 pending 可见。
- 为仓库维护新增
npm run verify,组合已有检查并保留日志和摘要;明确直接调用协议函数时的回滚责任。
耗时实测
同一台 Windows 机器、合成宿主事件和小型 spec 夹具下,普通路径无稳定提速证据;正常 spec 收尾中位数增加约 65–73 ms。注入慢 Git 时,竞争者拿锁从 0/3 超时变为 3/3 成功、等待中位数约 6 ms。模拟 Git 超时的单次诊断样本中,拒绝回执从约 10.28 秒降到 4.24 秒。该测量不代表真实宿主端到端耗时,也不验证严格超时上限。
完整方法、174 个样本和复现脚本见基准报告。
升级
Claude Code 和 Codex 共用安装入口,升级时请在没有活动任务时按仓库 README 的安装说明更新两个宿主,并在新会话验证入口。已有项目无需仅因升级而重新接入。
0.7.0:锁争用排队、坏知识降级、后台复盘冲突出口与单包便捷参数
自 v0.6.3 以来的变化。0.6.1–0.6.3 没有单独发布 Release,它们的变化见 README“当前状态与限制”一节。
稳定性
- 锁争用有界排队:短暂锁争用时在预算内重试(普通 hook 1.5 秒,Interrupt/SessionEnd 等生命周期事件 0.7 秒,均低于宿主 hook 超时),不再直接失败;预算耗尽按
LOCKED保守放行并给一次恢复提示。锁改为每个持有者一份票据文件,已退出进程遗留的锁自动归档。 - 生命周期事件不丢:Interrupt、StopFailure、SessionEnd 先独立落盘,拿到锁后幂等消费;迟到的旧事件不打断新回合;两个 Lead 会话共用任务时,结束其中一个不再挂起另一方。
- 坏知识不再拖垮入口:入口先保存身份与回合,再在锁外读取对齐与知识;损坏条目跳过并给一句降级提示,有效条目照常召回。完整诊断用
knowledge select|explain。 - 后台复盘:BUSY 或只读暂缓时保存已有提案,后续 tick 只重试提交、不再调用模型,不必再手动
learning recover;内容冲突用learning resolve --run <ID> --keep|--discard处理;锁争用不再推迟整个检查周期。
检查对象
- 增量对齐:
apply/decide/suggest可带sources只确认本次重读的来源,按快照复核后只刷新这些来源的基线。 - spec:显式非 HEAD 的
--ref从该提交树读取 spec 与代码;门禁、task show、Stop 改用 hook 解析出的 worktree 根。代码改动不影响 spec 时推荐在内容提交上附Spec-OK,空提交只用于追认既有历史。 - 返修计数:一轮返修对应一个交付轮次,
supersedes链继承计数;从未产出的启动失败重派不再虚增返修。
安装与接入
- 重复
install会修复自有current入口的断链或错链(不重写宿主配置);用户自己的目录或另一宿主登记的有效快照保留,并报告conflict。 onboard把核心接入与后台复盘预检分开:未加--enable-learning时预检问题只提示;显式启用失败返回status: partial,退出码 1。
协作与信号
- 新增
signal task-update:同一任务中途改 goal 或permissions.mode/allowedPaths(--paths-mode replace|append),宿主处于只读或计划模式时只允许收窄。 - 宿主原生与 Codeg 的结构化提问工具自动记 waiting-user,文本提问仍需先声明。
- 计划交付一次列明分包与各包通道;已声明的通道或已指定的安排直接沿用,Lead 直接执行的任务不问 Worker。只在本回合显式进入计划交付时核对,计划模式下的普通讨论不再单独被挡;计划交付与在途包同时成立时合并为一次提醒。
signal packages新增单包便捷参数(--package、--status、--role、--channel、--handle、--ref、--depends-on、--supersedes、--verdict、--reviews等);task-end新增--validation-ref和可重复的--evidence;knowledge capture可用少量字段保存短材料(--incident必填)。同批多包、change、waivers仍用--input。
实测(同机、合成数据,基线 0.6.3)
| 场景 | 0.6.3 | 0.7.0 |
|---|---|---|
| 300 条知识,无变化回合入口 | 573 ms | 104 ms |
| 300 条知识,单条变化回合入口 | 900 ms | 226 ms |
| 直接召回知识 | 519 ms | 72 ms |
| 未接入目录的入口 | 15–23 ms | 约 0.6 ms |
| 单 Worker + 单 Reviewer 登记工具调用 | 9 次 | 6 次 |
| Lead 直接执行并验证 | 3 次 | 2 次 |
| 后台 BUSY 延期后的人工恢复命令 | 1 条 | 0 条 |
| 400 ms 持锁时入口成功率 | 0/5 | 5/5 |
代价:锁争用时会等待,400 ms 持锁下入口中位数约 210→457 ms;超过 1.5 秒预算的长持锁两个版本都会降级。完整数据见仓库 docs/plans/efficiency-review-benchmark.md。
升级
两个宿主都要重装:锁文件格式已变,两个宿主又共用 current,要避免新旧版本混跑。AGENTS 管理区没有变化,不需要重新接入。
cd D:\git-repo\workflow
git pull
node bin/workflow.mjs install --agent claude
node bin/workflow.mjs install --agent codex0.6.0:派工后等待收结果、信号改用文件、UI 分步确认
自 v0.5.1 以来的变化。
协作
- Lead 派完工作包后不再自行结束:有在途包时 Stop 挡一次,要求在同一回合用有界等待(
get_delegation_status批量传入在途 task_id、wait_ms60000,轮间调用check_user_feedback)收结果,或向用户说明为什么暂停。Codeg 不会在子任务结束时唤醒主会话。 - 工作包新增“相关技能”字段;Lead 报告“已满足”时注明是核实过还是推断;计划或参照资料只在未提交改动里时,派工前提示先提交。
- Claude Code 在 Codeg 中以 auto 模式担任 Lead 时,需放行
delegate_to_agent、get_delegation_status、cancel_delegation、check_user_feedback(见 README 安装一节)。
信号
- 推荐先写 UTF-8 JSON 文件再
signal --input;--base64仅作兼容,长串可能被宿主脱敏成占位符而失效。 task-start缺 goal、permissions,或把 mode/allowedPaths 写在顶层时,回执点名缺项。
spec
- spec 只写已实现的行为。计划“spec 影响”里的改后验收句子随工作包下发,实施期间以包内验收为准,集成时再改 spec。事后补写的“spec 影响”需先经用户确认。
UI 流程
- 派工前先和用户确认思路(最多 4 问),包括选用本机哪些设计类技能。
- 每个 UI 包分三步、逐步确认:当前构建的基准截图 → HTML 线框(每个局部 2~3 种布局,页内切换)→ 高保真。
- 高保真优先用项目自身界面技术做临时原型(如 WPF 临时窗口套现有主题),做不了时用 HTML 兜底。
- 生图只用于从零设计或换风格的方向探索;每步限时,中途换介质或方法按视觉方向变更先确认。
AGENTS 管理区未变,不需要重新接入。
升级
cd D:\git-repo\workflow
git pull
node bin/workflow.mjs install --agent claude
node bin/workflow.mjs install --agent codex然后开新会话。
🤖 Generated with Claude Code
0.5.1:spec 漂移检查,spec 改动并入计划
自 v0.4.2 以来的变化(包含未单独发布 release 的 0.5.0)。
0.5.1
- 计划末尾加“spec 影响”一节,列出要新建、修改、删除的 spec 及改后的验收句子。用户说“执行”即同时批准计划和这些 spec 改动,流程仍是“计划 → 执行”两步;只有计划之外的 spec 改动或要改已批准的验收时才再问。
- README 新增“计划和 spec 怎么配合”。
0.5.0
- spec:重要功能可在
.spec/<id>/spec.md写长期说明,code:列出管辖文件。task-end时从 git 历史检查“管辖文件改了、spec 没跟着更新”,须更新 spec 或做Spec-OK空提交放行;spec:<id>不可豁免。 spec check的 git 失败附带原因(如非 git 仓库、dubious ownership)。- Lead 没发
task-end就结束回合时,Stop 挡一次并列出缺项。 - Worker 交付多一行“文档影响”,Reviewer 对照 spec 核对。
- 对齐:用户说“重新对齐”即完整重做对齐并补 spec 清单,跑完 scan 或 status 不算完成。
- README 写明
disable/remove/uninstall删什么、留什么;三者都不回退已做的修改、提交和正式经验。 - 两个宿主的真实验收记录见
docs/acceptance.md第 7 节。
项目没有 .spec 时行为与 0.4.2 相同,只多了 Stop 的提醒。AGENTS 管理区未变,不需要重新接入。
升级
cd D:\git-repo\workflow
git pull
node bin/workflow.mjs install --agent claude
node bin/workflow.mjs install --agent codex然后开新会话。
🤖 Generated with Claude Code
v0.4.2
修复
- 对已接入项目重复执行
project onboard时,原先会丢失后台复盘开关、计划任务登记和对齐裁决。现在只刷新 AGENTS.md 管理区和身份,其余登记保留。 - 学习已启用时重复接入不再提示
--enable-learning,输出里报告现有计划任务。
文档
- README 补充升级后重新对齐与重新接入:对齐协议随插件升级生效,重新对齐只需在新会话对 Lead 说“重新对齐”;只有管理区文字变化或需要重新预检时才重新接入。
升级
cd D:\git-repo\workflow
git pull
node bin/workflow.mjs install --agent claude
node bin/workflow.mjs install --agent codex0.4.1 及更早版本请先升级再重复接入项目。
0.4.1:一步接入、取消知识负责人
自 v0.3.0 以来的变化(包含未单独发布的 0.3.1、0.4.0)。
0.4.1
- 取消知识负责人:同一项目的任何 Lead 会话都能写知识和对齐文件。并发修改同一文件时,旧指纹返回
CONFLICT,不会互相覆盖。project owner只为兼容保留。 - 用户批准的结构建议在当回合直接执行,再用
decide登记。 align apply自动登记表格里新出现的pending行;未登记却写了裁决状态的行会被拒绝,并给出decide命令。project onboard --enable-learning:一次完成启用后台复盘和注册计划任务,由用户在自己的终端执行。- 学习已启用时,入口上下文报告计划任务现状;对齐交付时写明后台复盘状态。
- 文档说明 Codex 按
hooks.json中分组的位置和内容记录信任。
0.4.0
project onboard:先检查安装版本、身份、AGENTS 残留和执行器,全部通过才写入。project remove:删除计划任务、管理区、本机记录和数据目录;项目内资料只列出不删。learning doctor --global;signal 组合命令回执附模板;对齐表格与登记不一致时报告 mismatch。
0.3.1
- 后台复盘可按项目选择 Codex CLI 或 Claude Code 执行器;新增
claudeSettings专用设置文件。 - 计划任务经
conhost --headless启动,不弹窗;登录触发器限定当前用户。 - 新增
docs/background-review.md后台复盘操作手册。
升级:拉取后运行 node bin/workflow.mjs install --agent codex 和 node bin/workflow.mjs install --agent claude,然后开新会话。
🤖 Generated with Claude Code