---
title: "运行时模型"
description: "客户端、Go 控制面、Rust 能力内核与 Zig 工具链组成的分层架构。"
source: https://carina.nebutra.com/zh-cn/concepts/runtime/
---

# 运行时模型

> 客户端、Go 控制面、Rust 能力内核与 Zig 工具链组成的分层架构。

Carina 是**分层 Agent 运行时**。每层只承担一种职责，并通过明确协议调用下一层；这样客户端可以替换，模型可以切换，而权限与审计边界保持稳定。

## 分层

| 层 | 语言 | 职责 |
| --- | --- | --- |
| Agent Surface | Go（daemon 内） | Agent 循环、提示词和 reasoner backend |
| Client Surfaces | TS / Python / Go | CLI、TUI、IDE、Web 与 SDK，只渲染 JSON-RPC |
| Control Plane | Go | daemon、RPC、会话、调度、worker 与模型路由 |
| Capability Kernel | Rust | 权限、策略、审计、事务补丁和 WASM 插件 |
| Native Toolchain | Zig | scan、grep、diff、patch、process runner 与 pty |

```text
Client Surfaces ──JSON-RPC──▶ Go Control Plane（Agent loop）
       ──Capability API──▶ Rust Kernel ──Native Calls──▶ Zig Tools
```

## 核心原则

1. Agent 不直接访问系统资源；读文件、执行命令、联网、读密钥和持久记忆写入都是能力请求。
2. 每个副作用先经过能力内核，按会话 profile 产生 `PermissionDecision`。
3. 每次执行都写入追加式 Event Log，会话可仅凭事件回放。
4. 每个补丁按 Proposed → Validated → Approved → Applied → Verified → Committed 流转，并保留回滚指针。
5. 工具必须声明权限；未声明的能力使用会产生 `PolicyViolation`。
6. 本地单机是默认形态，远程 worker 是扩展；CLI 与 IDE 都只是同一 JSON-RPC 的客户端。
7. 云身份与同步属于产品边界，本地 runtime 始终是仓库动作的最终权威。

## Go 控制面

- `go/daemon`：daemon 生命周期、RPC、恢复、Agent loop 与受治理本地记忆。
- `go/rpc`：JSON-RPC 2.0 实现，与 `protocol/jsonrpc` 注册表一致。
- `go/session-store`：会话状态和追加式 JSONL 事件日志。
- `go/scheduler` / `go/worker`：优先级、并发和本地/远程/CI worker。
- `go/model-router`：provider fallback、速率限制、token 用量与 streaming。
- `go/kernel`：Rust capability kernel bridge。
- `go/mcp` / `go/mcpserver`：受治理的 MCP 管理器与服务端。

## Rust 能力内核

- `carina-kernel`：所有副作用能力的类型与 facade。
- `carina-policy`：`read-only`、`safe-edit`、`full-workspace`、`ci-runner` 等 profile。
- `carina-patch`：补丁事务、冲突检测和回滚。
- `carina-audit`：事件模型；`protocol/events/events.json` 是权威。
- `carina-plugin-runtime`：只允许 manifest 声明能力的 WASM host。

## Zig 原生工具链

`carina-scan`、`carina-grep`、`carina-diff`、`carina-patch-native`、`carina-run`、`carina-pty` 输出机器可读 JSON，并且不能绕过 kernel policy。

## 一次任务如何流动

```text
用户提示 → daemon 建会话 → Agent 调模型 → 模型请求 FileRead
→ Rust 内核检查策略 → Zig 扫描/读取 → 模型提出补丁
→ PatchTransaction 与审批 → Zig 应用 → daemon 请求 CommandExec 跑测试
→ Event Log 记录全部动作 → 用户检查或回滚
```

## 通信与存储

| 关注点 | MVP 选择 |
| --- | --- |
| IPC | stdio / unix socket 上的 JSON-RPC 2.0 |
| 存储 | JSON 状态、JSONL 事件、文件快照；`carina-index` 使用 SQLite |
| 插件 | manifest 声明权限的 WASM |

## 性能目标

| 操作 | 目标 |
| --- | --- |
| CLI 冷启动 | &lt; 100ms |
| CLI 热启动 | &lt; 30ms |
| 10k 文件工作区扫描 | &lt; 1s |
| 中型仓库 grep | &lt; 300ms |
| 单文件补丁应用 | &lt; 50ms |

## 权威来源

- 架构：`docs/architecture.md`
- 产品定位：`docs/product.md`
- 能力与文档地图：`apps/docs/FEATURE_MAP.md`

  阅读[策略与能力](/zh-cn/concepts/policy/)了解副作用如何受控，再看[审计与回滚](/zh-cn/concepts/audit/)理解事件链和补丁事务。

---
Source: https://carina.nebutra.com/zh-cn/concepts/runtime/
Markdown: https://carina.nebutra.com/zh-cn/concepts/runtime/index.md
