多会话管理
左侧栏是全部会话的时间线:今天、本周、更早。会话可以置顶、归档、重命名,跨项目聚在一起,也能用 ⌘P 直接按名字跳转。
有 agent 停下来等授权的会话,侧栏里会亮「待确认」徽标——它的优先级高于一切状态,扫一眼就知道哪条线卡住需要你。
在哪:主窗口左侧栏;跳转在 ⌘P 面板。
本页逐项介绍 Lectern 的十五项功能:它是什么、在哪里找到、怎么用。你也可以拖动回卷演示的时间轴,体验恢复到先前步骤的过程。
左侧栏是全部会话的时间线:今天、本周、更早。会话可以置顶、归档、重命名,跨项目聚在一起,也能用 ⌘P 直接按名字跳转。
有 agent 停下来等授权的会话,侧栏里会亮「待确认」徽标——它的优先级高于一切状态,扫一眼就知道哪条线卡住需要你。
在哪:主窗口左侧栏;跳转在 ⌘P 面板。
会话底部有一条时间轴。把游标拖回任意一轮之前,消息树就在那个点截断,agent 从那里重新出发——不是清空上下文重来,是把走错的那一段切掉。
截断走事件溯源,同时下发 rewound 事件:被切掉的消息不会在断线重连重放时「复活」。这一步是 v0.4.x 里最花力气的一处工程,因为要让回放和现场保持一致。
在哪:会话窗口底部的时间轴,拖动即回卷;游标停在哪一轮,续跑就从哪一轮开始。
事件流带序号,断线后从断点重放而不是整页重来;重连按指数退避自动进行。合盖休眠、切代理、弱网——回来时画面接着刚才的地方继续走。
这条链路同样覆盖中途断流的模型故障转移:备用端点接上后,会话状态不丢。
新会话可以跑在当前仓库的 git worktree 副本里:agent 的所有改动落在隔离分支,主工作区一行不脏。0.10 把它补成完整生命周期——创建先登记再动 Git(失败不静默降级)、目标分支创建时就固定(整合不再跟随主目录当前分支)、每一步查返回码。
整合是一道关卡:先核对目标分支没被别人推进(CAS 比对,不符就拒绝),再在受管临时区做合并——冲突会保留现场与冲突清单,修完重试;合并提交、推进目标、验证结果每步落 integration journal,中途断了能接着走、不重复合并。整合完工作区保留,会话继续指向它,不悄悄切回主目录。
审查有锚点:进入审查时生成内容指纹(已提交、未提交、untracked 全覆盖),验证证据绑定这份快照——审查之后谁再动过源码,旧证据一眼判定失效。
0.11 起整合加了一道实检:合并真正推进你的分支之前,先对合并出来的结果执行仓库声明的验证计划(.lectern/verification.json,比如真跑一遍测试)——两边测试各自通过、组合到一起失败时,目标分支一动不动;验证证据绑定 merge commit 与内容指纹,中断恢复重新验证,不凭旧证据免检。
在哪:新建会话时勾选「worktree 隔离」;整合与丢弃入口在会话的变更看板。
需要权限的动作——读文件之外的一切写操作与命令执行——agent 会停下来,弹出授权卡片:动什么、为什么、影响哪个路径,说清楚再问你。
三个按钮对应三种信任粒度:拒绝、允许一次、总是允许。选择会记入审计,事后可查可撤销。
人不在时任务卡在授权,侧栏亮「待确认」,托盘图标同步变化,系统通知提醒你回来拍板。
右侧看板实时呈现本轮触碰的文件与变更,Shiki 按语言按需加载语法高亮,明暗主题跟随系统。改动是逐行的,不是一段模糊的「已修改」。
确认与提交由你决定——机器不替你拍板。
在哪:会话右侧的 CHANGES 看板,随执行实时更新。
三模式命令面板,键盘优先:⌘K 执行命令,⌘P 跳转会话,⌘⇧F 全文搜索全部历史——不只是标题,消息正文也在索引里。
和引擎对话不离开键盘,是这套工作台的基本假设。
输入框里 @ 可以直接引用文件与目录,agent 读的是你指的那一份,不靠猜。Composer 下方的占用条实时显示当前上下文用量,快满的时候你先知道。
每个会话可以单独选模型,长任务和轻问答不必共用一个配置。
在哪:底部 Composer 的 @ 引用与上下文占用条;模型选择在 Composer 右下角。
菜单栏图标常驻显示运行状态:运行中、等待授权一目了然。任务完成或需要你回来时发系统通知——人不在屏幕前,也不错过任何一条线。
在哪:macOS 菜单栏(屏幕右上角);通知走系统通知中心。
全部数据在你的磁盘上:会话落在单文件 SQLite(zmzai.db),每一次文件写入与命令执行单独记入 audit.db,manual / auto / fine-grained 三种来源分开记账,失败不阻塞主流程。
卸载应用不会自动删数据;备份就是把目录拷走。模型推理经过 relay,其余什么都不上云。
在哪:~/Library/Application Support/Lectern(Windows 为 %APPDATA%\Lectern)。
改了 Web 项目的交付,验收由应用内置的 Chromium 真跑一遍:加载路由、点按钮、填输入、断言 DOM——HTTP 200、有一张截图、没报 console 错,任何单项都不能单独算「通过」,功能断言说了算。
证据分项可追溯:每个视口(桌面/移动等多档)每一步独立记录通过/失败,console 报错、资源加载失败、失败现场截图全部留痕。required 断言不过不放行;首次失败在同根预算内自动修复一次,第二次失败停手交还给你。
验证前后核对代码指纹——验证后你改了一行代码,旧证据即作废,重新验证才可接受。
在哪:交付面板的「浏览器验证」区(项目需在 .lectern/workspace.json 声明 devServer)。
原生应用、系统对话框这类没有 API 的界面,agent 通过 macOS 辅助功能做结构化操作——按名称点按钮、读静态文本、走菜单项,不是截图猜坐标。当前仅 macOS(Windows 显示为不可用,不假报)。
安全机制是硬的:动作前必须观察、动作后核对效果;观察 5 秒过期,陈旧点击直接拒绝;全桌面同一时刻只有一个控制者;⌘⇧⌫ 一键紧急停止,排队动作全部作废。密码、验证码永远由你输入,凭据不进模型上下文。
每次动作脱敏记入交付证据——它动了哪个控件、结果如何,事后可查。
在哪:需要时 agent 请求桌面控制;顶部出现常驻控制条(显示正在控制的应用与停止入口)。首次使用需在系统设置授予「辅助功能」与「屏幕录制」权限。
Agent 干大活时可以派出多个只读子代理并行探索(比如「这两个模块分别梳理依赖」),自己继续推进主线。子代理各自带上下文与工具白名单,全局共享运行额度(全局 6 个 / 每任务 3 个),任务树之外的操作一律拒绝。
收尾是自动的:父任务这轮做完但子代理还没收尾,就进入「等候子代理」调度态(不烧模型轮次、不需要你发「继续」);子代理完成后父任务自动续跑,结果并入上下文再汇总交付。交付有门禁——子代理还在跑、结果没被纳入或复核没通过,任务不能宣称完成;子失败绝不伪装成成功,失败原因进记录由父任务决定补救。
经得起崩溃:派生带幂等键(同一次派生重试拿到同一个子代理);应用重启后,排队中的子任务自动恢复执行,中断的进入恢复审查——不重放结果未知的副作用。
0.12 起,子代理的进展在工作台「子代理」标签页里实时可读:只读渲染子会话的完整转录,运行中的子代理即使不点开也会自动跟随,并行派生多个时用顶部标签切换——不再需要猜它卡在哪一步。
在哪:模型在需要并行探索时自动使用(agent_spawn 工具族);子任务行在会话流里,完整转录在工作台右侧的「子代理」标签页。
过程行弱化:每个工具调用收成一行「图标 中文名 · 摘要」(读取 / 查找 / 搜索 / 执行 / 编辑 / 写入 / 子任务),思考过程是「思考 · 持续了 Ns」——灰字、无边框无背景,层级只靠颜色深浅。运行中保持折叠单行,失败才整行标红并在行尾写「失败」。
一轮回答结束后,这一轮的全部过程自动收拢成一行「工作流程 · N 个步骤 · 时长」;想看细节点开就是逐步原文,正文留在原位。有失败时行上直接标出失败数量。
运行状态只有一个地方:输入框上方那一行(流光标 + 中文动作 + 时长)。停止键改成与发送同轮廓的墨底白方块——中止是常规操作,红色只留给破坏性确认。运行中断的错误也收成一行「✗ 运行中断 · 一句话原因」,展开才看原始错误与建议。
在哪:会话流本身;「工作流程」组在每轮回答末尾;恢复横幅在输入框上方。
登录后 Lectern 自动接通 memory.zmzai.cloud:每个项目跑第一个任务时自动创建专属知识库并绑定,之后的每个新任务开局,把召回的项目约定、有效命令、架构决策与故障结论作为背景注入(会话里有一行「项目记忆 N 条 · 来源」,点开看逐条与相关度)——不用每次重新交代「这个项目怎么构建、踩过什么坑」。
写入是受控的:任务交付后自动提炼 ≤5 条知识候选,默认进「待审」——你改写语句后采纳或丢弃;采纳的候选经本地持久 outbox 上传(幂等键 + 指数退避重试,状态不明先对账、绝不盲发),凭据失效自动暂停、恢复后续传。
知识库可换绑:选自己有权的任意库,包括 Agent 工作区的库——网页版 Agent 攒下的项目记忆,桌面端直接复用;换绑后旧待上传记录绝不发往新库。
在哪:设置 → 记忆(绑定/写入策略/候选待审/同步队列/最近召回);会话流里的记忆来源行;memory.zmzai.cloud 的「访问令牌」页管理桌面端凭据。
功能在持续补齐,推理档位贯通、自动更新都在路上——完整清单见 路线图;与同类形态的横向对比见 为什么是 Lectern。