Skip to content
コアコンセプト

Kova コアコンセプト

Agent、Workflow、Swarm から WAL 永続化まで —— Kova のコアアーキテクチャコンポーネントと設計思想を理解する。

3μsスケジューリング遅延
315Kops/s スループット
21workspace crate
<10MB単一バイナリ

Agent ​

Agent は基本的な実行単位であり、以下の要素から構成されます:

要素説明
System PromptSystem Promptシステムプロンプト。AI の役割・能力の境界・行動規範を定義し、メッセージ配列の先頭に配置します。Agent の役割、能力の境界、行動規範を定義する
Model使用する LLM モデル(実行時に切り替え可能)
ToolsAgent が呼び出せるツールセット
MemoryAgent のセッション履歴と永続化された状態

Agent ライフサイクル ​

Agent ステートマシン
graph LR
  Created --> Idle
  Idle --> Running
  Running --> Completed
  Running --> Paused
  Running --> Failed
  Running --> Recovering
  Paused -.恢复.-> Running
  Recovering -.重放 WAL.-> Running
状態意味
IdleAgent は作成済みで、タスクを待機している
Runningタスクを実行中
Paused手動で一時停止、再開可能
Completedタスク完了
Failed実行失敗(リトライ回数超過)
Recovering未完了の WAL レコードを検出し、自動復旧する

Agent 決定ループ ​

決定ループ
graph LR
  A[接收任务 / 上一步结果] --> B[LLM 推理<br/>分析 + 规划]
  B --> C{需要工具?}
  C -->|Yes| D[调用工具] --> E[工具结果] --> B
  C -->|No| F[生成最终回答] --> G[返回结果]

毎ラウンドごとにディスクへ書き込む

各ラウンドの決定はすべて WAL に書き込まれ、クラッシュ後に中断点から再生でき、LLM を再呼び出しする必要がありません。

Workflow ​

Workflow は複数の Agent またはステップを順序付き実行パイプラインに編成します。

ステップタイプ ​

タイプ説明
Agent ステップ指定した Agent に実行を委譲する
条件分岐前のステップの結果に応じて異なる経路を選択する
並列ステップ複数のステップを同時に実行する
待機ステップ外部イベントまたは人による承認を待つ
ループステップ条件を満たすまで繰り返し実行する

データの受け渡し ​

ステップ間ではテンプレート変数を介してデータを受け渡します:

{{input.topic}}              → 工作流输入参数
{{steps.research.output}}    → "research" 步骤的输出
{{steps.research.metadata}}  → "research" 步骤的元数据

エラー処理 ​

各ステップには独立したエラー戦略を設定できます:

戦略動作
retryN 回リトライ(デフォルト 3 回、指数バックオフ)
skip失敗したステップをスキップして実行を続ける
abortワークフロー全体を終了する
fallback代替ステップに切り替える

SwarmSwarm群知能モード。複数の Agent がコーディネーターによってタスクを割り当てられ、固定の事前定義フローなしに自律的に協調します。詳しく見る →(群体智能) ​

Swarm モードでは、複数の Agent が事前定義された固定フローなしに自律的に協調します。

動作の仕組み ​

Swarm 協調フロー
graph LR
  U[用户任务] --> C[协调者 Agent]
  C --> S[分解子任务]
  S --> R[研究 Agent]
  S --> D[编码 Agent]
  S --> T[测试 Agent]
  R --> M[收集结果]
  D --> M
  T --> M
  M --> O[综合输出]

Agent 同士は A2A(Agent-to-Agent)A2AAgent-to-Agent プロトコル。複数の Agent が直接通信し、タスクを委譲して情報を交換できるようにします。プロトコルを介して直接通信します:

json
{
  "from": "coordinator",
  "to": "researcher",
  "type": "task_delegate",
  "payload": {
    "task": "调研 WebAssembly 在服务端的性能基准",
    "constraints": {
      "max_tokens": 2000,
      "deadline": "5min"
    }
  }
}

WALWALWrite-Ahead Log、先行書き込みログ。すべての状態変更をまずログに書いてから実行することで、クラッシュ後にログから復旧できることを保証します。詳しく見る →(Write-Ahead Log) ​

WAL は Kova の永続化の中核となる仕組みで、データベースシステムの設計を参考にしています。

書き込みフロー ​

WAL 書き込みフロー
graph LR
  A[Agent 状态变更] --> B[序列化 + CRC32<br/>算校验和]
  B --> C[写入 WAL 文件<br/>先写日志]
  C --> D[执行实际操作]
  D --> E[标记 WAL 已完成<br/>确认提交]

復旧フロー ​

起動時に自動的に WAL をスキャンし、未完了の操作を復旧します:

  1. 完了済みのレコード —— スキップ。
  2. CRC32 検証に失敗 —— 破損とマークしてスキップ。
  3. 未完了のレコード —— 再実行。

リングバッファRing Bufferリングバッファ、固定サイズの循環ストレージ構造です。書き込みポインタが末尾に達すると先頭に巻き戻って古いデータを上書きします。WAL は power-of-2 サイズのリングバッファを使用します。 ​

WAL は power-of-2 サイズのリングバッファを使用します:

  • 書き込みポインタが末尾に達すると自動的にラップアラウンドする
  • 確認済みの古いレコードは新しいレコードで上書きされる
  • バッファが満杯になると compaction がトリガーされる

同期モード ​

モード説明パフォーマンス永続性
normalオペレーティングシステムが fsync のタイミングを決定する高数秒分のデータを失う可能性がある
full書き込みのたびに fsync する低データ損失ゼロ

暗号化オプション ​

機密性の高いシーンでは WAL の暗号化を有効にできます:

アルゴリズム説明
aes-256-gcm標準的な AES-256 暗号化
sm4国家暗号 SM4 アルゴリズム

同時に HMAC 完全性検証を有効にして、WAL ファイルの改ざんを防止できます。


ロック順序 ​

Kova は内部で厳格なロック取得順序を使用し、デッドロックを根本的に排除します:

ロック取得順序
graph LR
  A[Buffer Lock] --> B[Queue Lock] --> C[Transaction Lock]

コンパイル時のデッドロック防止

すべてのコードパスはこの順序に従う必要があります。順序に反してロックを取得しようとするとコンパイル時チェックがトリガーされます(Rust の型システムによって保証されます)。

ツールシステム ​

組み込みツール ​

ツール機能
web_searchインターネットを検索する
file_readファイルを読み取る
file_writeファイルに書き込む
http_requestHTTP リクエストを送信する
shell_execShell コマンドを実行する(サンドボックス環境)
db_queryデータベースクエリ

MCP ツール ​

Model Context Protocol を介して外部ツールサービスに接続します:

toml
# kova.toml
[[mcp.servers]]
name = "github"
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
env = { GITHUB_PERSONAL_ACCESS_TOKEN = "ghp_xxx" }

[[mcp.servers]]
name = "postgres"
command = "npx"
args = ["-y", "@modelcontextprotocol/server-postgres"]
env = { DATABASE_URL = "postgres://..." }

Agent は組み込みツールと同じように MCP ツールを呼び出せます。

A2A プロトコル ​

Agent-to-Agent 通信プロトコルで、以下をサポートします:

  • タスク委譲: ある Agent がサブタスクを別の Agent に渡す
  • 情報照会: Agent 同士が直接情報を交換する
  • 結果通知: タスク完了後に発起元へ通知する
  • 能力発見: 他の Agent が何をできるかを照会する

機能レイヤー ​

Kova は Rust feature flags でコンパイル範囲を制御します。最小コンパイルには pure-rust だけで済み、必要に応じて積み重ねます:serde(シリアライズ)、workflow(ワークフロー編成)→ agent(Agent エンジン)→ swarm(群体智能)、encrypt(暗号化)→ sm4(国家暗号)/ wal-hmac(完全性検証)など。


次のステップ ​

次のステップ

Powered by Lurus Technologies