课程总纲 / 阶段 2 · 使用
L09

日常使用与权限模型

熟练日常操作,理解权限审批、计划模式与上下文压缩的设计。

预计阅读 25 分钟难度 ★★☆☆☆含实操建议

一、会话管理:新建、恢复、分叉Sessions

操作它做什么背后的机制(L07 呼应)
新建会话开一本新账本新的空 Session Log
恢复(resume)回到中断前的会话继续聊重放日志重建状态
分叉(fork)从某一点复制出新分支复制日志到边界点,长出平行会话——"如果当时换个方向……"

分叉是日常最有用的进阶操作:模型走岔了,从岔路口分叉一个新会话重来,原会话完好保留。API 形态:ctx.sessions.fork(source, boundary?, childSessionId?)

二、权限与审批:缰绳怎么拉Permissions & Approval

packages/interaction/ 提供,核心理念:敏感操作先问人

设计要点:权限系统不是独立开关,而是挂在工具执行管线上的一个普通插件,可用自定义策略插件替换——"一切皆插件"在安全领域的直接体现。

三、计划模式:先方案,后动手Plan Mode

解决高频痛点:直接让智能体动手,可能大刀阔斧改错方向。/plan 进入:

/plan 进入模型只调研
不动手改
产出计划方案入账
(logged state)
你审阅通过或打回
/plan off 退出才开始执行

四、todo 工具:模型的任务清单Todo

todo_writepackages/todo/)是模型自己维护任务清单的工具,复杂任务里你会看到它自己列清单、勾进度。相当于它给自己贴便利贴,你能围观它的"心理活动"。清单状态通过日志事件持久,刷新/恢复不丢——"模型可见 ⟺ 日志记录"的又一案例。

五、上下文压缩:对话太长怎么办Compaction

压缩(compaction)= 把旧对话摘要成紧凑内容,腾出上下文窗口继续干。

方式触发说明
自动压缩上下文压力(serial 的 agent/pre-step 检测)到压力线自动摘要旧内容
手动压缩你发起命令和自动走同一条压缩服务,不另搞一套
溢出恢复请求报错(agent/request-error)规范的兜底恢复路径

压缩是标准能力缝(ctx.compaction + 可替换 provider)——想用自己的摘要策略,换个 provider 就行。

六、日常效率技巧小结Daily Tips

approval 审批
敏感操作执行前征求用户同意的机制。
permission preset
预定义的权限松紧组合。
plan mode
先出方案、用户审阅、再执行的模式。
compaction 压缩
摘要压缩旧对话,腾出上下文窗口。
✏️ 动手练习
  1. 在一个演示项目里给 dsh 布置一个会改文件的任务:先不开 plan mode 跑一次,再用 /plan 重跑一次,对比体验。
  2. 任务中途点分叉,从中间点开一个新方向,观察原会话是否完好。
  3. 故意聊一个超长话题(或粘贴大文件)触发自动压缩,观察压缩前后上下文的变化。
📝 自测(点击展开答案)
1. fork 和"重开一个会话"有什么本质区别?
fork 复制日志到边界点,新会话带着之前的上下文;重开从零开始。fork 用来探索"换个方向",原会话原封不动。
2. plan mode 为什么不让"计划状态"只存在内存里?
计划是日志事件(plan/mode):恢复时还在、回放能看到审阅决策。跨重载存活的状态必须进日志——"模型可见即可日志"的同族纪律。
3. plan mode 期间模型为什么"动不了手"?是谁拦的?
不是叮嘱模型,是独立的沙箱/审批轴在执行层拦截——计划管方向,沙箱管边界,两轴独立。
4. 自动压缩和手动压缩是什么关系?
同一条压缩服务(ctx.compaction 能力缝)的两个入口:自动由上下文压力触发(agent/pre-step 检测),手动由命令触发;手动没有特权,也不另搞一套。
权威出处:packages/interaction/README.md · packages/plan/README.md · packages/compaction/README.md · extension-cookbook(功能→机制表)