一、会话管理:新建、恢复、分叉Sessions
| 操作 | 它做什么 | 背后的机制(L07 呼应) |
| 新建会话 | 开一本新账本 | 新的空 Session Log |
| 恢复(resume) | 回到中断前的会话继续聊 | 重放日志重建状态 |
| 分叉(fork) | 从某一点复制出新分支 | 复制日志到边界点,长出平行会话——"如果当时换个方向……" |
分叉是日常最有用的进阶操作:模型走岔了,从岔路口分叉一个新会话重来,原会话完好保留。API 形态:ctx.sessions.fork(source, boundary?, childSessionId?)。
二、权限与审批:缰绳怎么拉Permissions & Approval
由 packages/interaction/ 提供,核心理念:敏感操作先问人。
- 审批(approval):智能体要执行需授权的操作时 UI 弹出请求,你允许/拒绝/始终允许;权限预设(permission preset):预定义的松紧组合,决定哪些免问、哪些必问。
- 机制是瀑布事件:
tools/pre-execute 的监听器返回 allow / deny / ask——ask 即转人工(L15 你会亲手写一扇这样的门)。
设计要点:权限系统不是独立开关,而是挂在工具执行管线上的一个普通插件,可用自定义策略插件替换——"一切皆插件"在安全领域的直接体现。
三、计划模式:先方案,后动手Plan Mode
解决高频痛点:直接让智能体动手,可能大刀阔斧改错方向。/plan 进入:
/plan 进入模型只调研
不动手改
→
产出计划方案入账
(logged state)
→
你审阅通过或打回
→
/plan off 退出才开始执行
- 计划是被日志记录的状态(
plan/mode 事件)——恢复会话时计划还在,回放能看到当时批了什么;
- 退出走
exit_plan_mode 且需用户审阅——不是模型自己说了算;
- 执行期约束不靠"叮嘱模型",继续由沙箱/审批独立把关——计划管方向,沙箱管边界,两轴独立。
四、todo 工具:模型的任务清单Todo
todo_write(packages/todo/)是模型自己维护任务清单的工具,复杂任务里你会看到它自己列清单、勾进度。相当于它给自己贴便利贴,你能围观它的"心理活动"。清单状态通过日志事件持久,刷新/恢复不丢——"模型可见 ⟺ 日志记录"的又一案例。
五、上下文压缩:对话太长怎么办Compaction
压缩(compaction)= 把旧对话摘要成紧凑内容,腾出上下文窗口继续干。
| 方式 | 触发 | 说明 |
| 自动压缩 | 上下文压力(serial 的 agent/pre-step 检测) | 到压力线自动摘要旧内容 |
| 手动压缩 | 你发起命令 | 和自动走同一条压缩服务,不另搞一套 |
| 溢出恢复 | 请求报错(agent/request-error) | 规范的兜底恢复路径 |
压缩是标准能力缝(ctx.compaction + 可替换 provider)——想用自己的摘要策略,换个 provider 就行。
六、日常效率技巧小结Daily Tips
- 派活写清楚验收标准:循环 + 工具意味着模型会一直试到通过——说清"什么样算完成"比盯每一步有用。
- 走岔就分叉,别在原会话反复纠偏——纠偏消息也进日志,越纠越长。
- 大事开计划模式:"改一堆文件"的任务先 /plan 再动手。
- 审批策略提前配:安全的设免问、危险的保持必问——审批疲劳是缰绳形同虚设的头号原因。
approval 审批
敏感操作执行前征求用户同意的机制。
permission preset
预定义的权限松紧组合。
plan mode
先出方案、用户审阅、再执行的模式。
compaction 压缩
摘要压缩旧对话,腾出上下文窗口。
✏️ 动手练习
- 在一个演示项目里给 dsh 布置一个会改文件的任务:先不开 plan mode 跑一次,再用 /plan 重跑一次,对比体验。
- 任务中途点分叉,从中间点开一个新方向,观察原会话是否完好。
- 故意聊一个超长话题(或粘贴大文件)触发自动压缩,观察压缩前后上下文的变化。
📝 自测(点击展开答案)
1. fork 和"重开一个会话"有什么本质区别?
fork 复制日志到边界点,新会话带着之前的上下文;重开从零开始。fork 用来探索"换个方向",原会话原封不动。
2. plan mode 为什么不让"计划状态"只存在内存里?
计划是日志事件(plan/mode):恢复时还在、回放能看到审阅决策。跨重载存活的状态必须进日志——"模型可见即可日志"的同族纪律。
3. plan mode 期间模型为什么"动不了手"?是谁拦的?
不是叮嘱模型,是独立的沙箱/审批轴在执行层拦截——计划管方向,沙箱管边界,两轴独立。
4. 自动压缩和手动压缩是什么关系?
同一条压缩服务(ctx.compaction 能力缝)的两个入口:自动由上下文压力触发(agent/pre-step 检测),手动由命令触发;手动没有特权,也不另搞一套。