LAYER 02 · 掌握组合语法
Service 与 Event:能力和协作要分开
Service 回答“谁能做”,Event 回答“何时让别人参与”
service = capability · event = extension point什么时候应该调用 ctx.fs,什么时候应该监听 fs/write-intent?
先建立直觉
医院的影像科是一项 Service:有明确接口和唯一当前提供者。术前会诊是 Event:多个科室按协议参与、观察或改变决策。
MECHANISM
机制拆解
Service 适合有身份、方法和替换实现的能力;事件适合横切策略、观察和 waterfall 改写。
DeepSeek Harness 把事件分成持久 SessionEvent、实时 agent/* 与能力事件;选择错误会导致回放污染或控制丢失。
第 1 步 / 共 4 步
声明契约
Service 定义方法;Event 定义 payload 与分发模式。
INVARIANTS
无论怎么扩展,都不能破坏
- Waterfall 监听器必须显式调用 next() 才会委托下游
- 最终事实只有一个权威版本
- 持久事件的 payload 必须是无损 JSON
FAILURE MODES
最容易踩中的坑
- ×用广播事件实现需要返回值的能力
- ×在观察事件中偷偷改写状态
- ×把回调异常传播到权威分发器
VERIFY IN SOURCE
不要相信结论,去源码里复核
以下链接固定到官方 deepseek-harness@47f9438;查看当前上游时请留意后续 breaking changes。
KNOWLEDGE CHECK
先停十秒,再揭晓答案
审批为什么是一个 waterfall,而不是普通广播?
为什么下一章紧接在这里
下一章加入 scope:同一个服务与事件协议,如何在不同 Agent 世界里拥有不同实现。