跳转到正文

Runtime

kxen 桌面、server 与独立 agent CLI 的 Rust 执行、通信和持久化边界。

更新于 查看 Markdown

kxen 提供 Tauri 2 桌面应用、无头 server 和独立的 kxen-agent CLI。三者复用 Rust 中的 model routing、Agent loop、工具和持久化能力,但拥有不同的进程入口与交互契约。桌面 webview 和浏览器是同一内嵌服务的两个平等客户端,经同一个 /ws 端点通信;kxen-agent 不经过 WebSocket 或 AppState,通过 task、JSONL event、exit code 和 durable Session 独立运行。

分层

flowchart TB
UI["SolidJS UI"]
CLI["kxen-agent CLI"]
State["Rust AppState"]
DCP["DCPRuntime"]
Runtime["Agent loop、MRM、Tools、MCP、LSP、durable stores"]
Host["本地文件、进程、Provider 和系统能力"]
UI -->|"WebSocket(RPC 帧)"| State
State -->|"同一 WebSocket(stream 事件帧)"| UI
CLI -->|"task、JSONL、exit code"| DCP
State --> Runtime
DCP --> Runtime
Runtime --> Host

UI 不直接调用 Provider,也不直接拥有 Agent run。前端与后端之间只有一条 WebSocket 连接:操作以 JSON-RPC 帧发送,token、工具、审批、活动状态和终态事件则以同一连接上的 stream 事件帧推送,不存在独立的流通道。

AppState

AppState 持有跨 Session 的共享运行对象,包括:

  • Session 和 active run registry。
  • Auth store 和 Provider catalog。
  • WorkspaceRuntime registry、每个 Workspace 的 MRM 视图以及进程共享的并发、RPM 和路由历史。
  • Approval broker。
  • Task、PendingQueue、Team、BotSystem、Browser 和 usage 运行状态。Goal、Schedule、Bot 和 Knowledge 等长期对象由各自的本地持久存储承载。
  • Event bus。

共享状态不会因为前端组件卸载而结束。界面重连后应从后端快照恢复,再使用事件流保持更新。

DCP runtime

kxen-agent 为每个 Session 固定 DCPAgent definition、effective capability 和 runtime policy hash。它不创建 AppState,也不要求 server 存活。任务作为 DCPRun 写入独立 state root,工具副作用通过 durable journal 结算,进程退出后可用 --resume 继续。

这里的 DCP 是 Deterministic Context Pipeline,不是网络协议。GitHub、GitLab、Issue、PR、branch 和 comment 不进入 DCPAgent definition;需要时可以由 MCP tool、普通 CLI、内置 tool 或宿主调用提供。

Session

Session 是用户工作的持久边界。一次 run 是 Session 中的一次执行,不是新的 Session。pending queue、Goal、Team 和 Schedule 都通过 Session ID 关联。

Bot 是独立于 Session 的持久边界。BotRun 固定 definition revision、permission snapshot 和 provider-neutral context;Routine 与 Bot-to-Bot dispatcher 都只负责创建普通 BotRun,不建立绕过 MRM、Safety 或 Approval 的第二套执行路径。

终态

每次 run 必须产生完成、取消或错误终态。网络断线、前端刷新和模型流停止都不能成为静默结束。

平台边界

当前 Runtime 覆盖 macOS 14 及以上版本(Apple Silicon 和 Intel),Windows(x64 和 ARM64)和 Linux(x86_64 和 ARM64),桌面、server 与 kxen-agent 覆盖同样的六个平台。kxen 仍处于开发预览阶段,安装包和更新通道已经开放,安装方式以 可用性 为准。

导航

输入关键词以搜索…

↑↓ 移动↵ 打开Esc 关闭