智管到底(只干到底)
> 复杂任务,一路管到底:拆解 → 匹配技能 → 装缺失技能 → 分阶段执行 → 断点续跑 → 收尾汇总。
> 先判档,再动手:L0 直接做 / L1 轻量三段 / L2 完整五阶段。别名:只干到底 / 智管到底 / 干到底 / 管到底。
零、启用方式
- 自动判断(默认):接到任务先按判据表估规模,命中 L1/L2 直接加载,不反问「要不要用」。
- 显式点名:用户消息出现「只干到底、智管到底、干到底、管到底、一路管到底、帮我管到底」任一词 → 立即启用,跳过规模判断;任务再小也至少走 L1。
- 优先级:用户点名 > 自动判断 > 直接做。「不问要不要用」≠「不问需求」:L2 在阶段 1 后仍要展示分析卡等用户确认。
一、启动判据(三档严格嵌套 L2⊃L1⊃L0;读完需求即可判;判不准降一档)
| 档 | 判据 | 做法 |
|---|---|---|
| L0 不启用 | 交付物 1 个 且 单步可完成 且 无需装技能(单次读/查/算/翻/格式转换、一问一答、解释概念) | 直接做,不搞仪式 |
| L1 轻量编排 | 交付物 ≤2 个 且 需 ≥2 步加工 且 不命中 L2 任一项 | 三段:3 行拆解 → 逐段执行并落盘 → 汇总。不建快照、不装技能、不五阶段 |
| L2 完整编排 | 命中任一:① 交付物 ≥2 个/② 需安装缺失技能/③ 跨阶段依赖/④ 断点续跑(批量 ≥20 项或预计跨会话) | 完整五阶段 + snapshot.py |
- 中途升档:第 4 次工具调用仍未收尾,或发现要装技能/跨阶段依赖/批量超预期 → 当场升 L2,已完成段落不重跑。
- 降档出口:L2 阶段 1 拆解后发现不满足任何 L2 判据 → 记录原因后收拢为 L1;窗口止于快照 init,init 后不再降档。
- 示例:「调研 XX 出报告+图+PPT」L2(3 个交付物);「白屏排查并修好」L1;「这 PDF 讲的啥」L0。
二、全局容错与断点续跑(优先级高于一切业务逻辑)
- 强制分阶段:L2 每阶段完成必须落盘快照(编号/目标/产出/待办/依赖技能/中间文件路径);L1 段落不进快照文件。
- 异常分级:传输层(502/504/ETIMEDOUT/断流)→ 立即原样重发不等;模型层繁忙/429 → 等 5 秒重发;业务层(工具报错/脚本非零退出)→ 先定位改法再重试。三类均不判任务失败、不丢成果。
- 自动重试:单步最多连试 3 次,仅重试失败步、禁止从头重跑;3 次仍败 → 置告警、保留成果、用
ready优先推进不依赖它的环节,等人工确认后retry开新一轮(本轮归零、累计留痕)。 - 断点续跑:恢复第一步=
show读快照 → 核对 → 从未完成阶段继续;严禁重复执行已完成步骤。用户发「继续」→ 直接续跑。 - 技能容错:目标技能缺失 → 先
skill-scanner安全扫描,通过再安装调度,不因单个缺失终止任务。 - 防卡死:单步 ≤90 秒,超时强制落盘 + 暂停,不无限等待。
- 上下文预算:会话累计 60 次工具调用或 3 次压缩 → 落盘快照并主动建议新开会话,靠
show接续,不靠长上下文硬背。 - 大文件拆段写:单次 ≤400 行 / 30KB,超出先写骨架再追加。
- 禁止:因单步异常结束整个任务;丢弃中间结果;删除/清空快照。
三、主流程
L1 轻量三段
- 拆解:3~5 行——交付物是什么 / 3~5 步子任务 / 每步有没有坑。
- 执行:逐子任务做,每完成一步立刻落盘,不攒到最后。
- 汇总:交付成品 + 一句话交代「做了哪些 / 没做哪些 / 卡在哪」。
出现跨阶段依赖或需装缺失技能 → 当场升 L2,已完成段落不重跑。
L2 五阶段(严格顺序)
- 任务解析与拆解:输出【任务分析卡】——核心目标、交付物格式、领域约束与输出风格、子阶段及依赖关系、所需能力(联网/文档/PPT·Excel·Word/绘图/转写)。
- 技能匹配检查:对照
references/skill-pool.md与实时已装清单,输出【技能调度计划表】(✅ 已装直接调度 / ⚠️ 未装排队)。skill-pool.md 顶部标注了最后核对日期,超 30 天先实时核对再用(以各 SKILL.md 的name为准,目录名带__skillhub后缀属正常)。 - 缺失技能安装:
skill-scanner扫描 → 通过才装(安装入口优先find-skills)→ 更新清单;不通过标记高危并告警。 - 分阶段调度执行:每阶段
stage-start→ 调用技能产出 →stage-done --output --note;失败stage-fail走第 3 条重试策略。 - 收尾汇总:全部成功 → 汇总交付;有告警 → 输出已完成内容 + 故障清单与卡点,等用户指令(重试/跳过/改需求)。
四、交互约定
- 阶段 1 完成后先展示分析卡 + 调度计划表,确认后再执行(L1 不发卡、不打断)。
- 每个大阶段完成自动推送进度快照。
- 恢复:用户输入 继续;停止:用户输入 停止 → 立即停新步骤、存快照、输出已完成内容。
五、snapshot.py(确定性脊柱)
快照状态读写一律走脚本,禁止靠模型记忆推算。状态文件:<工作区>/.orchestrator/task-state.json。调用一律用绝对路径:python ~/.workbuddy/skills/zhiguan-daodi__skillhub/scripts/snapshot.py ...。
# 下面用 $ZGD 指代脚本绝对路径——复制即可执行;换了安装位只改这一行。
ZGD="python ~/.workbuddy/skills/zhiguan-daodi__skillhub/scripts/snapshot.py"
# 初始化(元五阶段串成链;末尾「收尾」必须挂 5:4,漏挂会让 ready 引导先收尾再干活)
$ZGD init --goal "<目标>" --deliverable "<交付物>" \
--stages "解析与拆解|技能匹配|安装缺失技能|分阶段执行|收尾汇总" --deps "2:1;3:2;4:3;5:4"
$ZGD show / next / ready / status # 查询;均可加 --json 结构化输出(供脚本/模型消费)
$ZGD stage-start --id N [--force-dep] # 三守卫:done / 失败已告警 / 依赖未满足 → [SKIP]
$ZGD stage-done --id N [--output <路径>] [--note <说明>] # 重复上报幂等,不覆盖首份
$ZGD stage-fail --id N --reason "<原因>" # 累计 3 次自动告警置 failed
$ZGD retry --id N # 仅限 failed 阶段;清零告警、本轮归零、累计留痕
$ZGD stage-add --id 4.1 --name "<子阶段>" --dep 3 # 4.x 任务子阶段只能这样建
$ZGD deps --id N [--on "1,2"] # --on "" 清空;"2:"/全空段报错
$ZGD skills --pending "pdf,xlsx" --installed "docx"
$ZGD alert --id N --msg "<告警>" # 引用不存在的阶段会报错
$ZGD stop --reason "<原因>"
$ZGD recover [--force] # 快照损坏时从 .bak 回滚;完好快照须 --force
关键语义(完整版与历史依据见 README):
- 任务工序挂在「#4 分阶段执行」下用 stage-add --id 4.x 建立;父容器不产出、不计进度分母;子阶段全 done 后须 stage-done --id 4 收口,全部叶子 done 且无 alert 时任务自动转 done。
- next 优先返回 running/paused(续跑不跳步),依赖只认前置 done;成环/自依赖/引用不存在阶段直接拒绝。任务 stopped 时 next/ready 会先显式提示停止态,对阶段 stage-start 才恢复 running。
- 写入=临时文件+fsync+os.replace 原子替换、写前留 .bak、全程跨进程锁(msvcrt/flock);损坏用 recover 回滚,损坏件按内容去重另存 .corrupt-*。recover 在完好快照上以退出码 2 拒绝白干活,须 --force。
- 快照 schema 超前当前版本 → 入口拒绝并提示升级,不带读不懂的结构静默跑。
- 脚本任何异常输出 [ERROR] + 中文 + 下一步建议,不抛 Traceback;参数错误内嵌出错子命令签名。
六、硬约束
- 只读写工作区与
~/.workbuddy/skills/,不写系统目录。 - 不自动发布/外发/删除/提交表单;对外动作一律先报备确认。
- 技能安全扫描不通过 → 绝不安装;快照文件是任务生命线,任何情况下不得删除/清空。
- 本技能只应存在一份目录:若同时出现
zhiguan-daodi/与zhiguan-daodi__skillhub/,相对路径会命中哪个版本取决于当前工作目录——保留 version 较高的一份,把旧目录移出技能目录。 - 发布/升级前先检查、再打包(两者都用绝对路径,安装态下相对路径会解析失败):
python ~/.workbuddy/skills/zhiguan-daodi__skillhub/scripts/release_check.py
python ~/.workbuddy/skills/zhiguan-daodi__skillhub/scripts/package.py --out <输出目录>