第一个 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:
just tui你会看到一个三栏布局:左侧是 session 列表,中间是聊天区,右侧是 trace。底部的状态栏显示当前激活的 profile、当前的 ApprovalPolicy 与 SandboxPolicy,以及 context 使用率仪表。
选一个 profile
按 Alt+P 打开 profile 选择器。用方向键选一个 profile(只要不是 fake、并且你已经配置了真实 API key 就行)。按 Enter。
状态栏会刷新成新的 profile。这次模型切换是非破坏性的——现有 session 会继续用,但换上了新模型;聊天记录不会滚动,也不会被重置。
发一条消息
输入一段简短的消息——比如试试 What files are in this directory?——然后按 Ctrl+Enter 发送。
你会依次看到:
- 你的消息出现在聊天区。
- trace 区出现
UserMessageAdded和ContextAssembled行。 - 随着模型开始流式输出,trace 区出现
ModelTokenDelta行,聊天区里的文本一个字符一个字符地累积出来。 - 如果模型决定调用一个 tool(对于这条 prompt,很可能是
shell.exec),会弹出一个 permission 提示浮层。
处理 permission 提示
浮层会显示 tool 名(shell.exec)、确切的参数(ls .),以及风险等级(High,因为 shell 可以执行任何东西)。有三个选项:
- Y —— 仅允许这一次调用。
- N —— 仅拒绝这一次调用。模型会感知到拒绝并可以重新规划。
- D —— 在本次 session 内,拒绝所有同类型的后续调用。
这次演练请按 Y。
trace 里会出现一条 PermissionGranted event;tool 会执行;接着出现带有结果的 ToolInvocationStarted 和 ToolInvocationCompleted 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 里看到 ContextCompactionStarted、CompactionSummary 和 ContextCompactionCompleted event,仪表也会跟着回落。
要手动触发 compaction,打开命令面板(Ctrl+P)并执行 “Compact context”。完整的流水线见 Memory & Context。
退出
按 Ctrl+C 可以中断当前 turn(如果没有 turn 在进行,则直接退出)。session 已经持久化到 ~/.kairox/ 下的 SQLite——下次再打开 TUI 时,session 列表里会包含它。
第二部分 —— GUI 里的第一个 session
GUI 给的是同一套 runtime,但交互方式不同:可点击的界面、常驻面板、trajectory 查看、autonomous task 控制,以及更完整的设置入口。
just tauri-dev桌面窗口会打开。下面的截图展示了默认的 workbench 布局:左侧是 session 列表,中间是聊天区,右侧是 trace 加 tasks,顶部还有模型与 context 控制。


在设置里配置
点击右上角的设置图标。设置按关注点分组:
- 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 与保留策略控制。


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


点击 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。


Session 中途切换模型
用 session 头部的 profile 下拉框选一个不同的 profile。runtime 会把切换排队(以免与正在进行的 turn 竞争),然后把后续请求路由到新模型。actor 模型详见 Runtime & Sessions。
触发 compaction
打开命令面板(Ctrl/Cmd+P),搜索 “compact context” 并执行。trace 会记录 ContextCompactionStarted、CompactionSummary 和 ContextCompactionCompleted;context 仪表归位;聊天记录在外观上没有变化,但最老的几条消息在内部已被一条摘要替换。
持久化状态
关闭窗口,再用 just tauri-dev 重开。session 列表、聊天历史、trace 以及 task graph 都会从 event store 中恢复。GUI 里没有任何东西是只存在于内存里的——所有状态都从 event 重建。
第三部分 —— 试一下 MCP
MCP 设置页会先展示当前作用域已安装的 server。切到 Marketplace 标签后,可以浏览精选 MCP server——git、GitHub、filesystem、fetch 等等——并按需安装。


安装完成后,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)。