Skip to content

第一个 Session

本页会带你端到端走一遍完整的 Kairox session——在 TUI 和 GUI 里都跑一次,用真实的模型、真实的 tool 调用,以及真实的 permission 提示。读完之后,你会亲眼见过 Agent loop、trace 时间线、session 中途的模型切换,以及一次自动的 context compaction。

开始之前,请确认你已经跟过 快速开始(或者完整的 安装 流程),并且在 .kairox/config.toml 里有一个可用的 profile。如果还没有,把 kairox.toml.example 复制成 .kairox/config.toml,填上一个 API key,再回来。

你将看到什么

每一次 Kairox turn 的整体形状大致如下:

图里的每一根箭头,都会在 trace 时间线里成为一行。没有任何事情不是 event;UI 上没有任何东西不是从 event 渲染出来的。这就是这个模型。

第一部分 —— TUI 里的第一次 turn

打开 TUI:

bash
just tui

你会看到一个三栏布局:左侧是 session 列表,中间是聊天区,右侧是 trace。底部的状态栏显示当前激活的 profile、当前的 ApprovalPolicySandboxPolicy,以及 context 使用率仪表。

选一个 profile

Alt+P 打开 profile 选择器。用方向键选一个 profile(只要不是 fake、并且你已经配置了真实 API key 就行)。按 Enter

状态栏会刷新成新的 profile。这次模型切换是非破坏性的——现有 session 会继续用,但换上了新模型;聊天记录不会滚动,也不会被重置。

发一条消息

输入一段简短的消息——比如试试 What files are in this directory?——然后按 Ctrl+Enter 发送。

你会依次看到:

  1. 你的消息出现在聊天区。
  2. trace 区出现 UserMessageAddedContextAssembled 行。
  3. 随着模型开始流式输出,trace 区出现 ModelTokenDelta 行,聊天区里的文本一个字符一个字符地累积出来。
  4. 如果模型决定调用一个 tool(对于这条 prompt,很可能是 shell.exec),会弹出一个 permission 提示浮层。

处理 permission 提示

浮层会显示 tool 名(shell.exec)、确切的参数(ls .),以及风险等级(High,因为 shell 可以执行任何东西)。有三个选项:

  • Y —— 仅允许这一次调用。
  • N —— 仅拒绝这一次调用。模型会感知到拒绝并可以重新规划。
  • D —— 在本次 session 内,拒绝所有同类型的后续调用。

这次演练请按 Y

trace 里会出现一条 PermissionGranted event;tool 会执行;接着出现带有结果的 ToolInvocationStartedToolInvocationCompleted event;模型继续流式输出最终答案;turn 以 AssistantMessageCompleted 结束。

你刚刚见到了 Permissions & Tools 所描述的全部流程。

Session 中途切换模型

Alt+P 切到另一个 profile(比如从一个快模型切到一个更重的模型)。再发一条消息。新的请求会发到新模型,但聊天历史保留下来。runtime 会通过 session actor 把切换串行化,确保它不会和正在进行的 turn 竞争——见 Runtime & Sessions

观察 context 填充

每一次 turn 都会向 context 追加内容。状态栏的仪表显示当前用量占活跃 profile 的 context_window 的比例。当用量越过 auto_compact_threshold(默认 0.85)时,runtime 会触发一次自动 compaction:最老的那一层历史会被折叠成一条摘要消息。你会在 trace 里看到 ContextCompactionStartedCompactionSummaryContextCompactionCompleted event,仪表也会跟着回落。

要手动触发 compaction,打开命令面板(Ctrl+P)并执行 “Compact context”。完整的流水线见 Memory & Context

退出

Ctrl+C 可以中断当前 turn(如果没有 turn 在进行,则直接退出)。session 已经持久化到 ~/.kairox/ 下的 SQLite——下次再打开 TUI 时,session 列表里会包含它。

第二部分 —— GUI 里的第一个 session

GUI 给的是同一套 runtime,但交互方式不同:可点击的界面、常驻面板、trajectory 查看、autonomous task 控制,以及更完整的设置入口。

bash
just tauri-dev

桌面窗口会打开。下面的截图展示了默认的 workbench 布局:左侧是 session 列表,中间是聊天区,右侧是 trace 加 tasks,顶部还有模型与 context 控制。

Kairox 桌面 workbenchKairox 桌面 workbench
桌面 workbench:项目 session、聊天、trace、task graph、context 用量和带 trajectory 的 runtime 状态集中在一个窗口里。

在设置里配置

点击右上角的设置图标。设置按关注点分组:

  • General —— 主题、语言、devtools、updater 状态和应用行为。
  • Models —— profile 列表以及当前默认 profile。
  • Agents —— 多 Agent strategy 的配置。
  • Autonomous —— 基于 checkpoint 的 autonomous task 限制和控制。
  • MCP —— server 生命周期和 marketplace。
  • Skills —— 各作用域下启用的 skill。
  • Plugins —— 已安装的 plugin 以及它们贡献的内容。
  • Hooks —— hook 脚本和触发条件。
  • Instructions —— 用户指令与项目指令。
  • Archive —— 已归档 session 与保留策略控制。
Kairox 设置界面Kairox 设置界面
设置页把 model profile 和作用域控制,与 agents、autonomous tasks、MCP、skills、plugins、hooks、instructions 和 archives 放在同一个 tabbed surface 中。

同一个设置入口也会展示 autonomous task。当你让 Kairox 跨 session 继续一个目标时,checkpoint 会保留已完成事项、剩余事项和验证状态,便于检查。

Kairox autonomous task 设置Kairox autonomous task 设置
Autonomous task 设置页展示持久化目标、暂停 / 取消控制、session 次数与当前进度。

点击 Models,确认你的 profile 出现在列表里。点击 profile 把它设为新 session 的默认值。

开启一个 session

回到 workbench,点击 + New session。一个 session 会被创建出来;event 被追加到 SQLite。输入一段 prompt,按 Enter 发送(Shift+Enter 用于换行)。

内联式 permission 流程

当模型请求 tool 时,GUI 会把 permission 提示内联渲染到聊天流里,而不是弹模态框。你会看到 tool 名、参数,以及带 Allow / Deny / Always allow 按钮的风险等级。

“Always allow” 会把决策持久化为一条 workspace 作用域的规则(比如“在本 workspace 里始终允许 fs.read”)。runtime 会记住它;未来同形态的调用就不会再弹提示了。

观察 trace

右侧的 trace 时间线实时更新。每个 event 都有一行;你可以搜索 trace(/)、按 event 类型过滤,点一行就能查看 payload。你在 TUI 里看到的 PermissionGranted / ToolInvocationCompleted / ModelTokenDelta 行,在这里也会出现,只是展示更丰富。

当 turn 记录了实际动作时,trajectory viewer 可以查看按顺序捕获的 action/observation step,用于 replay、debug 和 eval。工具截图及其它图片附件会保持结构化,支持 vision 的模型可以直接接收它们,而不会把整段 base64 塞爆文本 context。

Kairox trajectory viewerKairox trajectory viewer
Trajectory tab 会把一次 turn 展开成按顺序记录的 tool action、input、observation、耗时和最终 outcome。

Session 中途切换模型

用 session 头部的 profile 下拉框选一个不同的 profile。runtime 会把切换排队(以免与正在进行的 turn 竞争),然后把后续请求路由到新模型。actor 模型详见 Runtime & Sessions

触发 compaction

打开命令面板(Ctrl/Cmd+P),搜索 “compact context” 并执行。trace 会记录 ContextCompactionStartedCompactionSummaryContextCompactionCompleted;context 仪表归位;聊天记录在外观上没有变化,但最老的几条消息在内部已被一条摘要替换。

持久化状态

关闭窗口,再用 just tauri-dev 重开。session 列表、聊天历史、trace 以及 task graph 都会从 event store 中恢复。GUI 里没有任何东西是只存在于内存里的——所有状态都从 event 重建。

第三部分 —— 试一下 MCP

MCP 设置页会先展示当前作用域已安装的 server。切到 Marketplace 标签后,可以浏览精选 MCP server——git、GitHub、filesystem、fetch 等等——并按需安装。

Kairox 设置里的 MCP 已安装 server 视图Kairox 设置里的 MCP 已安装 server 视图
MCP 设置页展示当前作用域已安装的 server,并可切换到 curated marketplace。

安装完成后,server 的 tool 会出现在 registry 里。模型可以调用它们;它们会和内置 tool 一样,经过同一个 policy engine。trace 会标记 tool 调用的来源 server,让你能审计谁在与谁通信。

完整的扩展能力故事——MCP、skill、plugin——见 Extensibility: MCP / Skills / Plugins

你学到了什么

走完这一遍,你对以下内容已经有了上手的直觉:

  • Agent loop 以及驱动每一个 UI 的 event 流。
  • 正交的 ApprovalPolicy × SandboxPolicy 模型以及内联式 permission 流程。
  • 在不丢失历史的前提下,中途切换 profile。
  • 自动和手动的 context compaction。
  • 跨重启的持久化 session。
  • trajectory 捕获以及 advisor 可见的 tool review event。
  • marketplace 和 MCP 生命周期。

更深的概念阅读:

  • 架构 —— 分层设计、依赖方向规则、facade trait。
  • Runtime & Sessions —— actor 模型、Agent loop、DAG 执行、多 Agent strategy。
  • Memory & Context —— <memory> 协议、context 装配、compaction 内部机制。
  • Permissions 与 Tools —— 两条策略轴、每一个内置 tool,以及决策流。

本页不涉及的内容

本页在每个 UI 里都走了一遍 happy-path session。它不涉及每一个按键(CLI & Keyboard)、每一个配置字段(Configuration),也不涉及出问题时该怎么办(Troubleshooting & FAQ)。

基于 Apache-2.0 协议发布。