KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA
配套项目:可恢复的配置变更 — keel 龙骨
Real-world Execution 的配套项目:配套项目:可恢复的配置变更
代码只模拟配置服务和通知服务,不会修改本机配置、执行 Shell 或发送真实消息。重点是观察动作契约、幂等、未知结果、对账和补偿怎样协同。
准备环境
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r courses/advanced/real-world-execution/course/project/requirements.txt
建议运行顺序
python courses/advanced/real-world-execution/course/project/examples/01_action_contract.py
python courses/advanced/real-world-execution/course/project/examples/03_preview_and_execute.py
python courses/advanced/real-world-execution/course/project/examples/04_idempotency.py
python courses/advanced/real-world-execution/course/project/examples/05_long_running_job.py
python courses/advanced/real-world-execution/course/project/examples/06_unknown_and_reconcile.py
python courses/advanced/real-world-execution/course/project/examples/07_change_run.py
真实模型只参与动作提议:
ollama serve
ollama pull qwen3:8b
$env:OLLAMA_MODEL = "qwen3:8b"
python courses/advanced/real-world-execution/course/project/examples/02_ollama_plan.py
源码阅读顺序
contracts.py Proposal、Command、Preview、Receipt 和 fingerprint
environment.py 可观察的配置/通知 Adapter 与失败注入
idempotency.py 同键重放与异参冲突
gateway.py deadline、Attempt、unknown 和统一执行点
reconciliation.py 只读取外部事实的对账器
jobs.py 长任务状态机
events.py 最小事件历史
change_run.py 配置加通知的编排式 Saga
ollama_planner.py 真实 Ollama Structured Outputs
测试
python -m unittest discover -s courses/advanced/real-world-execution/course/project/tests -v
测试不依赖 Ollama,固定验证:
- effect 与 fingerprint 不能伪造;
- 同一命令重放不产生第二次副作用;
- 同一幂等键配不同参数会冲突;
- deadline 和资源版本在执行点生效;
- 提交后丢响应先进入 unknown;
- Reconciler 只对账,不重放;
- Job 的 accepted、running、succeeded 与取消状态稳定;
- 通知失败产生明确部分成功或补偿结果;
- 事件序号连续并保留 command 关联。
生产替换项
内存字典不能处理多进程竞态和主机故障。生产系统应把幂等记录、Command、Receipt、Operation 和事件放进事务存储,使用工作流引擎或可靠队列,加入 worker lease/fencing、持久化 deadline、签名回调、人工操作台和独立对账任务。