Skip to content

工作区与时间线

Agent 模式的中心抽象是工作区。

在普通生成中,模型通常直接返回一段文本。Agent 模式则不同:它会先在一个受约束的工作区中处理文件,最后再把指定输出提交到聊天。

这种设计让 TauriTavern 可以把“生成”拆成更透明的过程:读了什么、写了什么、改了什么、什么时候提交,都有清楚记录。

为什么要有工作区

工作区解决四个问题:

问题工作区带来的变化
中间草稿无处保存Agent 可以先写草稿,再修改成最终回复
工具结果污染聊天工具结果保留在运行过程里,不变成聊天楼层
难以理解模型行为时间线能展示关键读取、搜索、修改和提交
输出不止正文可以为状态栏、摘要、笔记等留下稳定位置

这也是 TauriTavern Agent 与传统工具调用最重要的差别之一:工具调用是运行事件,不是聊天消息。

工作区里有什么

当前配置档案可以控制 Agent 看到和写入哪些工作区根目录。常见根目录如下:

根目录用途
output/最终输出。默认消息正文是 output/main.md
scratch/临时笔记、草稿、整理过程
plan/规划文件。当前 Plan Mode 尚未作为完整运行时开放,但目录已保留
summaries/摘要、阶段总结、可复用概括
persist/同一聊天后续运行可继续使用的持久信息

这些路径是 Agent 工作区中的逻辑路径,不是系统文件路径。Agent 不能通过 ../、绝对路径或系统盘符访问工作区之外的内容。

WARNING

persist/ 适合保存简短、稳定、后续仍有意义的信息,例如尚未解决的剧情线、关系状态、用户偏好。它不适合塞入完整聊天记录、模型思考过程或大段临时工具结果。

输出如何进入聊天

当前默认输出文件是:

text
output/main.md

Agent 完成写作后,需要调用提交工具,把这个文件提交为聊天消息。提交后,聊天里看到的是最终内容;工作区和时间线仍然保留本次运行的过程信息。

这条路径有两个好处:

  • 聊天记录保持干净,只保存用户真正要阅读的回复。
  • Agent 过程仍可查看,方便理解和调试。

追加提交与短对话

除了替换式提交,Agent 也可以使用追加提交。第一次追加会创建本次运行对应的 Agent 消息,后续追加会继续向这条消息补充内容。

这种方式可以让 Agent 把回复拆成几段短内容,形成更像真人聊天的节奏。例如先回应一句,再补一个动作或解释,再以一句更轻的收尾结束。

text
第一次 append:嗯,我在。
第二次 append:刚才那句话我想了一下,其实你说得有道理。
第三次 append:不过如果是我的话,可能会先把这件事放一放。

当前追加提交的重点是“同一次运行中的连续提交”。它不会把每一次 append 变成完全独立的聊天楼层,因此仍能保留同一个 run 的工作区、时间线和提交记录。

时间线展示什么

时间线是运行日志的用户界面投影。它不会显示所有内部细节,但会显示对用户有意义的关键步骤。

常见时间线条目包括:

条目说明
读取查看聊天、世界书、SKILLS 或工作区文件
搜索在聊天或文件中查找相关片段
写入新建或重写工作区文件
修改对已有文件进行精确替换
提交把输出文件提交到聊天
保存将持久工作区变更保存到同一聊天的后续运行中
完成本次 Agent 运行正常结束
失败配置、模型、工具或保存过程出现错误

时间线的存在不是为了让用户阅读每一行细节,而是为了让 Agent 行为不再像一个黑箱。

什么会进入详情

部分事件可以展开详情。例如:

  • 搜索命中的片段。
  • 被读取的工作区文件。
  • 工具调用结果。
  • 写入后的输出文件内容。
  • 模型响应或错误摘要。

详情读取的是工作区中与本次运行相关的文件。它仍然遵循工作区路径限制,不会暴露系统文件。

取消、失败与完成

当前时间线会区分几种状态:

状态含义
正在运行Agent 仍在模型调用或工具循环中
已完成Agent 成功提交并结束
已取消用户或系统请求取消运行
失败出现无法继续的错误

取消不是失败。失败通常意味着某个必要条件没有满足,例如模型没有按工具调用格式返回、配置档案无效、路径非法,或聊天提交失败。

TauriTavern 会尽量把这类问题明确显示出来,避免把失败悄悄转成一段看似正常的回复。

Released under AGPL-3.0.