Repository files navigation

vol

A Rust workspace containing a full LLM agent system — ReAct orchestration, tools, skills, MCP integration, sandboxes, sub-agent dispatch, sessions, TUI and web frontends.


1. The Agent System

  • ReAct orchestration with pluggable providers (Anthropic, OpenAI, DashScope)
  • Tools — built-in file/bash/web tools, CLI-style fs and task tools, skill tools, and MCP tools
  • Skills — markdown-frontmatter skills injected into the agent context
  • MCP — client for external MCP servers plus bundled servers (docs-rs-mcp, cli-tools-mcp, playwright-mcp)
  • Sandboxes — Local / Tmp / SSH / Firecracker / Wasm execution environments
  • Sub-agent dispatch — the built-in agent tool dispatches work to other agents declared in .agents/agents/*.toml
  • Sessions & tasks — persisted to SQLite / Postgres
  • Frontends — TUI and React web frontend
  • Server — JSON-RPC over WebSocket with a control-plane / data-plane split

2. Architecture

2.1 Core Concepts

  • AgentRuntime (vol-llm-runtime) is the single source of truth for agent resources — tools, skills, MCP clients, providers, session/task stores. Tool registration happens in AgentRuntimeBuilder::build(). [[vol-llm-runtime-crate]]
  • AgentDef — agents are declared in .agents/agents/*.toml and run a ReAct loop (vol-llm-agent): think → tool call → observe, until a final answer.
  • ContextContextBuilder composes the prompt from ContextContributors (skills, available-agent list via AgentInjector, session history) under a token budget. [[vol-llm-context-crate]]
  • Protocol — JSON-RPC 2.0 over WebSocket is the only application protocol; HTTP is reserved for /health and /metrics. Wire types live in vol-llm-agent-protocol. [[vol-llm-agent-protocol-crate]]

2.2 Control Plane / Data Plane

The agent server (vol-agent-server) supports three deployment modes configured via TOML:

Modecontrol_planedata_planeDescription
Standalone data-planefalsetrueSingle-node agent execution (legacy /ws behavior)
Standalone control-planetruefalseCluster coordinator — registry, routing, capability index
CombinedtruetrueBoth in one process, local node self-registers
 ┌──────────────────────────────────┐
Client / UI / CLI │ vol-agent-server │
─── JSON-RPC /ws ─►│ │
│ ┌─────────────────────────────┐ │
│ │ ControlPlaneServerCore │ │
│ │ NodeRegistry CapabilityIndex│ │
│ │ ControlRouter LeaseManager │ │
│ └─────────────┬───────────────┘ │
│ │ │
│ ┌─────────────▼───────────────┐ │
│ │ DataPlaneServerCore │ │
│ │ AgentRuntime AgentRouter │ │
│ │ ToolRegistry McpManager │ │
│ └─────────────────────────────┘ │
└──────────────────────────────────┘
│
┌────────────────────┼────────────────────┐
▼ ▼ ▼
vol-llm-agent-protocol vol-llm-runtime vol-llm-tool
(JSON-RPC + transport) (execution owner) (ToolRegistry)
  • Clients connect at /ws; data-plane nodes link to the control plane at /control/v1/ws.
  • Both planes live in vol-agent-server (no separate control-plane crate).
  • Dependency direction: vol-agent-servervol-llm-agent-protocol + vol-llm-runtime. Protocol and runtime must not depend on server (./scripts/check-agent-boundaries.sh).

[[agent-server-control-data-plane]]

2.3 Tools & Sandboxes

  • ToolRegistry — every tool implements the Tool trait and receives a ToolContext; registered once in AgentRuntimeBuilder::build(). [[tool-registry]]
  • Built-in toolsread / write / edit / grep / bash / web-search / web-fetch (vol-llm-tools-builtin).
  • CLI-as-tool — the fs and task tools expose CLI-style subcommands (fs read <path>, fs grep <pattern>, --json envelope) over the built-ins, sharing the vol-llm-cli-tool abstraction. [[vol-llm-fs-crate]] [[fs-cli-tool]]
  • Sandboxes — tools execute inside sandboxes: Local / Tmp / SSH / Firecracker / Wasm. SandboxManager provides unified lifecycle management with explicit instance identity, state tracking, and provider-based backend abstraction. Configuration lives in .agents/sandboxes/*.toml. [[sandbox-lifecycle]] [[vol-llm-sandbox-crate]]

2.4 Agent–Sub-agent Collaboration

The built-in agent tool lets an agent autonomously dispatch sub-tasks to other agents declared in .agents/agents/:

  • Dispatch by AgentDef.id — the sub-agent runs its own full ReAct loop and returns its final result synchronously. Dispatch is equivalent to a data-plane task submission; the decision maker switches from human to agent. [[agenttool-subagent-dispatch]]
  • Depth guard — the only nesting control: tool_config.agent.max_depth (default 1 = root may dispatch one layer; deeper dispatch is rejected).
  • Sessions persist by name — sub-agent sessions are keyed by agent name and remain observable by other agents and the UI.
  • AgentInjector — contributes the list of available agents to the context so the model knows it can dispatch. [[vol-llm-agent-tool-crate]]

2.5 Deployment Architecture

  • ArgoCD GitOps (primary)deploy/argocd/root.yaml (app-of-apps) deploys: control-plane (agent-server), data-plane nodes (agent-server-dp), specialized agent workers (agent-server-ansible, agent-server-dingtalk), MCP servers, nginx-proxy + React frontend (vol-llm-ui). [[argocd-app-of-apps-gitops]]
  • Runtime config as ConfigMaps — agents, providers, sandboxes, MCP endpoints and secrets live under deploy/argocd/manifests/runtime-config/, regenerated with python3 scripts/sync-configmaps.py.
  • Kustomize alternativedeploy/kustomize/overlays/{control-plane,data-plane}.
  • Legacy k8s/ tree is deprecated — prefer ArgoCD.
  • MCP servers run as standalone Deployments + ClusterIP Services. [[mcp-transport-pattern]]

See [[docs/wiki/concepts/argocd-app-of-apps-gitops]] for the full guide.

3. Project Structure

Agent Crates

CrateResponsibility
vol-llm-coreLLM abstractions, types, traits
vol-llm-providerAnthropic, OpenAI, DashScope provider implementations
vol-llm-toolToolRegistry, Tool trait, ToolContext
vol-llm-tools-builtinread/write/edit/grep/bash/web-search/web-fetch
vol-llm-cli-toolCore abstraction for "CLI-as-Tool" (shared by fs/task)
vol-llm-fsCLI-style fs tool over the file-op built-ins
vol-llm-taskTask models and stores (SeaORM SQLite/Postgres)
vol-llm-sandboxSandbox lifecycle management: SandboxManager, SandboxProvider, SandboxStore + implementations (Local/Tmp/SSH/Firecracker/Wasm)
vol-llm-skillSkill system (markdown-frontmatter)
vol-llm-agentReAct orchestration, AgentConfig, plugin system
vol-llm-agentsHigh-level agent implementations
vol-llm-yaml-agentDeclarative agent definitions via YAML
vol-llm-agent-toolAgentTool (sub-agent dispatch) + AgentInjector
vol-llm-contextContextBuilder / ContextContributor prompt construction
vol-llm-memoryLayered memory abstractions for cross-session agent memory
vol-llm-wikiWiki compression and management tool
vol-llm-mcpMCP client, server lifecycle, tool/resource/prompt discovery
vol-llm-runtimeAgentRuntime — single source of truth for runtime resources
vol-llm-agent-protocolJSON-RPC protocol (Operation/Payload/control.*) + transport
vol-sessionSession persistence (file + SeaORM SQLite/Postgres)
vol-agent-serverAgent server binary — DataPlaneServerCore + ControlPlaneServerCore
vol-llm-tuiTerminal UI (ratatui)
vol-llm-uiDEPRECATED — Dioxus WASM web frontend; replaced by React frontend/
vol-mcp-serversMCP server implementations (docs-rs-mcp, cli-tools-mcp, playwright-mcp)
md-frontmatterMarkdown frontmatter parser
ppt-agentPowerPoint generation agent

4. Installation & Deployment

Prerequisites

Rust toolchain (see rust-toolchain.toml), just for recipes, Node.js for the web frontend.

Local

# Agent server (standalone data-plane)
cp configs/vol-agent-server.env.example .env
source .env
cargo run -p vol-agent-server
# Per-mode configs: configs/vol-agent-server.{data-plane,control-plane}.toml# Web frontend (React, 2 terminals)
just web-backend # agent server on :3001 (cargo-watch)
just web-dev # Vite dev server on :5173 (WS proxy to :3001)

Docker

just docker-agent # or:
docker build -f dockers/vol-agent-server.Dockerfile -t vol-agent-server .
docker build -f dockers/vol-agent-server.alpine.Dockerfile -t vol-agent-server:alpine .

Kubernetes

# ArgoCD GitOps (primary)
kubectl apply -f deploy/argocd/root.yaml
# Kustomize (alternative)
kubectl apply -k deploy/kustomize/overlays/control-plane
kubectl apply -k deploy/kustomize/overlays/data-plane
# Post-deploy verification
./scripts/smoke-test.sh --all

Runtime config changes are synced to ConfigMaps with python3 scripts/sync-configmaps.py. See [[docs/wiki/concepts/argocd-app-of-apps-gitops]].

5. AI-Driven Development Workflow

This project uses Superpowers skills for structured development:

clarifying-requirements ──► brainstorming ──► writing-architecture
(需求澄清) (方案脑暴) (架构设计)
writing-architecture ──► writing-plans ──► subagent-driven-development
(架构设计) (实现计划) (按 task 派发 subagent)
PhaseOutputLocation
RequirementRequirement docdocs/superpowers/requirement/
ArchitectureDesign docdocs/superpowers/architectures/
SpecAddendum / detailed specdocs/superpowers/specs/
PlanTask-level implementation plandocs/superpowers/plans/
WikiCompiled knowledge basedocs/wiki/

Task Completion Checklist

  1. just test-crate <affected-crate> — all tests pass
  2. just cover-gate <affected-crate> 80 — coverage gate
  3. ./scripts/check-agent-boundaries.sh — dependency direction
  4. just fmt-check && just clippy-strict — formatting & lint
  5. wiki-ingest — ingest changes into docs/wiki
  6. (If UI affected) just fe-test + just fe-e2e — frontend test tiers

6. Core Tools & Commands

All recipes run via just (just help for the full list).

AreaCommands
Build & checkjust check, just clippy, just clippy-strict, just fmt, just fmt-check
Testsjust test-unit, just test-integration, just test-crate <crate>, just test-e2e, just test-tools, just test-sandbox
Coveragejust cover <crate>, just cover-gate <crate> 80, just cover-html <crate>, just cover-tools
Guardsjust boundaries, just no-doc-tests, just no-clippy-allow, just audit
Webjust web-dev, just web-backend, just web-build, just web-serve
Frontend testsjust fe-test (fe-test-unit / fe-test-integration), just fe-e2e, just fe-lint, just fe-type
Dockerjust docker-agent

Model Service

Endpointhttp://192.168.2.162:31693
Modelsgpt5.5, coding, qwen3.6-plus, glm5.1

Provider config lives in .agents/providers/*.toml and is auto-discovered.


Documentation

PathTopic
CLAUDE.mdAI agent quick reference (conventions, guardrails, commands)
docs/CONFIGURATION.mdFull configuration guide (TOML sections, env vars, K8s)
docs/wiki/index.mdWiki index — entities, concepts, sources, full search
docs/superpowers/Requirement / architecture / spec / plan documents

About

vol agent system

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

vol

A Rust workspace containing a full LLM agent system — ReAct orchestration, tools, skills, MCP integration, sandboxes, sub-agent dispatch, sessions, TUI and web frontends.


1. The Agent System

  • ReAct orchestration with pluggable providers (Anthropic, OpenAI, DashScope)
  • Tools — built-in file/bash/web tools, CLI-style fs and task tools, skill tools, and MCP tools
  • Skills — markdown-frontmatter skills injected into the agent context
  • MCP — client for external MCP servers plus bundled servers (docs-rs-mcp, cli-tools-mcp, playwright-mcp)
  • Sandboxes — Local / Tmp / SSH / Firecracker / Wasm execution environments
  • Sub-agent dispatch — the built-in agent tool dispatches work to other agents declared in .agents/agents/*.toml
  • Sessions & tasks — persisted to SQLite / Postgres
  • Frontends — TUI and React web frontend
  • Server — JSON-RPC over WebSocket with a control-plane / data-plane split

2. Architecture

2.1 Core Concepts

  • AgentRuntime (vol-llm-runtime) is the single source of truth for agent resources — tools, skills, MCP clients, providers, session/task stores. Tool registration happens in AgentRuntimeBuilder::build(). [[vol-llm-runtime-crate]]
  • AgentDef — agents are declared in .agents/agents/*.toml and run a ReAct loop (vol-llm-agent): think → tool call → observe, until a final answer.
  • ContextContextBuilder composes the prompt from ContextContributors (skills, available-agent list via AgentInjector, session history) under a token budget. [[vol-llm-context-crate]]
  • Protocol — JSON-RPC 2.0 over WebSocket is the only application protocol; HTTP is reserved for /health and /metrics. Wire types live in vol-llm-agent-protocol. [[vol-llm-agent-protocol-crate]]

2.2 Control Plane / Data Plane

The agent server (vol-agent-server) supports three deployment modes configured via TOML:

Modecontrol_planedata_planeDescription
Standalone data-planefalsetrueSingle-node agent execution (legacy /ws behavior)
Standalone control-planetruefalseCluster coordinator — registry, routing, capability index
CombinedtruetrueBoth in one process, local node self-registers
 ┌──────────────────────────────────┐
Client / UI / CLI │ vol-agent-server │
─── JSON-RPC /ws ─►│ │
│ ┌─────────────────────────────┐ │
│ │ ControlPlaneServerCore │ │
│ │ NodeRegistry CapabilityIndex│ │
│ │ ControlRouter LeaseManager │ │
│ └─────────────┬───────────────┘ │
│ │ │
│ ┌─────────────▼───────────────┐ │
│ │ DataPlaneServerCore │ │
│ │ AgentRuntime AgentRouter │ │
│ │ ToolRegistry McpManager │ │
│ └─────────────────────────────┘ │
└──────────────────────────────────┘
│
┌────────────────────┼────────────────────┐
▼ ▼ ▼
vol-llm-agent-protocol vol-llm-runtime vol-llm-tool
(JSON-RPC + transport) (execution owner) (ToolRegistry)
  • Clients connect at /ws; data-plane nodes link to the control plane at /control/v1/ws.
  • Both planes live in vol-agent-server (no separate control-plane crate).
  • Dependency direction: vol-agent-servervol-llm-agent-protocol + vol-llm-runtime. Protocol and runtime must not depend on server (./scripts/check-agent-boundaries.sh).

[[agent-server-control-data-plane]]

2.3 Tools & Sandboxes

  • ToolRegistry — every tool implements the Tool trait and receives a ToolContext; registered once in AgentRuntimeBuilder::build(). [[tool-registry]]
  • Built-in toolsread / write / edit / grep / bash / web-search / web-fetch (vol-llm-tools-builtin).
  • CLI-as-tool — the fs and task tools expose CLI-style subcommands (fs read <path>, fs grep <pattern>, --json envelope) over the built-ins, sharing the vol-llm-cli-tool abstraction. [[vol-llm-fs-crate]] [[fs-cli-tool]]
  • Sandboxes — tools execute inside sandboxes: Local / Tmp / SSH / Firecracker / Wasm. SandboxManager provides unified lifecycle management with explicit instance identity, state tracking, and provider-based backend abstraction. Configuration lives in .agents/sandboxes/*.toml. [[sandbox-lifecycle]] [[vol-llm-sandbox-crate]]

2.4 Agent–Sub-agent Collaboration

The built-in agent tool lets an agent autonomously dispatch sub-tasks to other agents declared in .agents/agents/:

  • Dispatch by AgentDef.id — the sub-agent runs its own full ReAct loop and returns its final result synchronously. Dispatch is equivalent to a data-plane task submission; the decision maker switches from human to agent. [[agenttool-subagent-dispatch]]
  • Depth guard — the only nesting control: tool_config.agent.max_depth (default 1 = root may dispatch one layer; deeper dispatch is rejected).
  • Sessions persist by name — sub-agent sessions are keyed by agent name and remain observable by other agents and the UI.
  • AgentInjector — contributes the list of available agents to the context so the model knows it can dispatch. [[vol-llm-agent-tool-crate]]

2.5 Deployment Architecture

  • ArgoCD GitOps (primary)deploy/argocd/root.yaml (app-of-apps) deploys: control-plane (agent-server), data-plane nodes (agent-server-dp), specialized agent workers (agent-server-ansible, agent-server-dingtalk), MCP servers, nginx-proxy + React frontend (vol-llm-ui). [[argocd-app-of-apps-gitops]]
  • Runtime config as ConfigMaps — agents, providers, sandboxes, MCP endpoints and secrets live under deploy/argocd/manifests/runtime-config/, regenerated with python3 scripts/sync-configmaps.py.
  • Kustomize alternativedeploy/kustomize/overlays/{control-plane,data-plane}.
  • Legacy k8s/ tree is deprecated — prefer ArgoCD.
  • MCP servers run as standalone Deployments + ClusterIP Services. [[mcp-transport-pattern]]

See [[docs/wiki/concepts/argocd-app-of-apps-gitops]] for the full guide.

3. Project Structure

Agent Crates

CrateResponsibility
vol-llm-coreLLM abstractions, types, traits
vol-llm-providerAnthropic, OpenAI, DashScope provider implementations
vol-llm-toolToolRegistry, Tool trait, ToolContext
vol-llm-tools-builtinread/write/edit/grep/bash/web-search/web-fetch
vol-llm-cli-toolCore abstraction for "CLI-as-Tool" (shared by fs/task)
vol-llm-fsCLI-style fs tool over the file-op built-ins
vol-llm-taskTask models and stores (SeaORM SQLite/Postgres)
vol-llm-sandboxSandbox lifecycle management: SandboxManager, SandboxProvider, SandboxStore + implementations (Local/Tmp/SSH/Firecracker/Wasm)
vol-llm-skillSkill system (markdown-frontmatter)
vol-llm-agentReAct orchestration, AgentConfig, plugin system
vol-llm-agentsHigh-level agent implementations
vol-llm-yaml-agentDeclarative agent definitions via YAML
vol-llm-agent-toolAgentTool (sub-agent dispatch) + AgentInjector
vol-llm-contextContextBuilder / ContextContributor prompt construction
vol-llm-memoryLayered memory abstractions for cross-session agent memory
vol-llm-wikiWiki compression and management tool
vol-llm-mcpMCP client, server lifecycle, tool/resource/prompt discovery
vol-llm-runtimeAgentRuntime — single source of truth for runtime resources
vol-llm-agent-protocolJSON-RPC protocol (Operation/Payload/control.*) + transport
vol-sessionSession persistence (file + SeaORM SQLite/Postgres)
vol-agent-serverAgent server binary — DataPlaneServerCore + ControlPlaneServerCore
vol-llm-tuiTerminal UI (ratatui)
vol-llm-uiDEPRECATED — Dioxus WASM web frontend; replaced by React frontend/
vol-mcp-serversMCP server implementations (docs-rs-mcp, cli-tools-mcp, playwright-mcp)
md-frontmatterMarkdown frontmatter parser
ppt-agentPowerPoint generation agent

4. Installation & Deployment

Prerequisites

Rust toolchain (see rust-toolchain.toml), just for recipes, Node.js for the web frontend.

Local

# Agent server (standalone data-plane)
cp configs/vol-agent-server.env.example .env
source .env
cargo run -p vol-agent-server
# Per-mode configs: configs/vol-agent-server.{data-plane,control-plane}.toml# Web frontend (React, 2 terminals)
just web-backend # agent server on :3001 (cargo-watch)
just web-dev # Vite dev server on :5173 (WS proxy to :3001)

Docker

just docker-agent # or:
docker build -f dockers/vol-agent-server.Dockerfile -t vol-agent-server .
docker build -f dockers/vol-agent-server.alpine.Dockerfile -t vol-agent-server:alpine .

Kubernetes

# ArgoCD GitOps (primary)
kubectl apply -f deploy/argocd/root.yaml
# Kustomize (alternative)
kubectl apply -k deploy/kustomize/overlays/control-plane
kubectl apply -k deploy/kustomize/overlays/data-plane
# Post-deploy verification
./scripts/smoke-test.sh --all

Runtime config changes are synced to ConfigMaps with python3 scripts/sync-configmaps.py. See [[docs/wiki/concepts/argocd-app-of-apps-gitops]].

5. AI-Driven Development Workflow

This project uses Superpowers skills for structured development:

clarifying-requirements ──► brainstorming ──► writing-architecture
(需求澄清) (方案脑暴) (架构设计)
writing-architecture ──► writing-plans ──► subagent-driven-development
(架构设计) (实现计划) (按 task 派发 subagent)
PhaseOutputLocation
RequirementRequirement docdocs/superpowers/requirement/
ArchitectureDesign docdocs/superpowers/architectures/
SpecAddendum / detailed specdocs/superpowers/specs/
PlanTask-level implementation plandocs/superpowers/plans/
WikiCompiled knowledge basedocs/wiki/

Task Completion Checklist

  1. just test-crate <affected-crate> — all tests pass
  2. just cover-gate <affected-crate> 80 — coverage gate
  3. ./scripts/check-agent-boundaries.sh — dependency direction
  4. just fmt-check && just clippy-strict — formatting & lint
  5. wiki-ingest — ingest changes into docs/wiki
  6. (If UI affected) just fe-test + just fe-e2e — frontend test tiers

6. Core Tools & Commands

All recipes run via just (just help for the full list).

AreaCommands
Build & checkjust check, just clippy, just clippy-strict, just fmt, just fmt-check
Testsjust test-unit, just test-integration, just test-crate <crate>, just test-e2e, just test-tools, just test-sandbox
Coveragejust cover <crate>, just cover-gate <crate> 80, just cover-html <crate>, just cover-tools
Guardsjust boundaries, just no-doc-tests, just no-clippy-allow, just audit
Webjust web-dev, just web-backend, just web-build, just web-serve
Frontend testsjust fe-test (fe-test-unit / fe-test-integration), just fe-e2e, just fe-lint, just fe-type
Dockerjust docker-agent

Model Service

Endpointhttp://192.168.2.162:31693
Modelsgpt5.5, coding, qwen3.6-plus, glm5.1

Provider config lives in .agents/providers/*.toml and is auto-discovered.


Documentation

PathTopic
CLAUDE.mdAI agent quick reference (conventions, guardrails, commands)
docs/CONFIGURATION.mdFull configuration guide (TOML sections, env vars, K8s)
docs/wiki/index.mdWiki index — entities, concepts, sources, full search
docs/superpowers/Requirement / architecture / spec / plan documents

About

vol agent system

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

vol

A Rust workspace containing a full LLM agent system — ReAct orchestration, tools, skills, MCP integration, sandboxes, sub-agent dispatch, sessions, TUI and web frontends.


1. The Agent System

  • ReAct orchestration with pluggable providers (Anthropic, OpenAI, DashScope)
  • Tools — built-in file/bash/web tools, CLI-style fs and task tools, skill tools, and MCP tools
  • Skills — markdown-frontmatter skills injected into the agent context
  • MCP — client for external MCP servers plus bundled servers (docs-rs-mcp, cli-tools-mcp, playwright-mcp)
  • Sandboxes — Local / Tmp / SSH / Firecracker / Wasm execution environments
  • Sub-agent dispatch — the built-in agent tool dispatches work to other agents declared in .agents/agents/*.toml
  • Sessions & tasks — persisted to SQLite / Postgres
  • Frontends — TUI and React web frontend
  • Server — JSON-RPC over WebSocket with a control-plane / data-plane split

2. Architecture

2.1 Core Concepts

  • AgentRuntime (vol-llm-runtime) is the single source of truth for agent resources — tools, skills, MCP clients, providers, session/task stores. Tool registration happens in AgentRuntimeBuilder::build(). [[vol-llm-runtime-crate]]
  • AgentDef — agents are declared in .agents/agents/*.toml and run a ReAct loop (vol-llm-agent): think → tool call → observe, until a final answer.
  • ContextContextBuilder composes the prompt from ContextContributors (skills, available-agent list via AgentInjector, session history) under a token budget. [[vol-llm-context-crate]]
  • Protocol — JSON-RPC 2.0 over WebSocket is the only application protocol; HTTP is reserved for /health and /metrics. Wire types live in vol-llm-agent-protocol. [[vol-llm-agent-protocol-crate]]

2.2 Control Plane / Data Plane

The agent server (vol-agent-server) supports three deployment modes configured via TOML:

Modecontrol_planedata_planeDescription
Standalone data-planefalsetrueSingle-node agent execution (legacy /ws behavior)
Standalone control-planetruefalseCluster coordinator — registry, routing, capability index
CombinedtruetrueBoth in one process, local node self-registers
 ┌──────────────────────────────────┐
Client / UI / CLI │ vol-agent-server │
─── JSON-RPC /ws ─►│ │
│ ┌─────────────────────────────┐ │
│ │ ControlPlaneServerCore │ │
│ │ NodeRegistry CapabilityIndex│ │
│ │ ControlRouter LeaseManager │ │
│ └─────────────┬───────────────┘ │
│ │ │
│ ┌─────────────▼───────────────┐ │
│ │ DataPlaneServerCore │ │
│ │ AgentRuntime AgentRouter │ │
│ │ ToolRegistry McpManager │ │
│ └─────────────────────────────┘ │
└──────────────────────────────────┘
│
┌────────────────────┼────────────────────┐
▼ ▼ ▼
vol-llm-agent-protocol vol-llm-runtime vol-llm-tool
(JSON-RPC + transport) (execution owner) (ToolRegistry)
  • Clients connect at /ws; data-plane nodes link to the control plane at /control/v1/ws.
  • Both planes live in vol-agent-server (no separate control-plane crate).
  • Dependency direction: vol-agent-servervol-llm-agent-protocol + vol-llm-runtime. Protocol and runtime must not depend on server (./scripts/check-agent-boundaries.sh).

[[agent-server-control-data-plane]]

2.3 Tools & Sandboxes

  • ToolRegistry — every tool implements the Tool trait and receives a ToolContext; registered once in AgentRuntimeBuilder::build(). [[tool-registry]]
  • Built-in toolsread / write / edit / grep / bash / web-search / web-fetch (vol-llm-tools-builtin).
  • CLI-as-tool — the fs and task tools expose CLI-style subcommands (fs read <path>, fs grep <pattern>, --json envelope) over the built-ins, sharing the vol-llm-cli-tool abstraction. [[vol-llm-fs-crate]] [[fs-cli-tool]]
  • Sandboxes — tools execute inside sandboxes: Local / Tmp / SSH / Firecracker / Wasm. SandboxManager provides unified lifecycle management with explicit instance identity, state tracking, and provider-based backend abstraction. Configuration lives in .agents/sandboxes/*.toml. [[sandbox-lifecycle]] [[vol-llm-sandbox-crate]]

2.4 Agent–Sub-agent Collaboration

The built-in agent tool lets an agent autonomously dispatch sub-tasks to other agents declared in .agents/agents/:

  • Dispatch by AgentDef.id — the sub-agent runs its own full ReAct loop and returns its final result synchronously. Dispatch is equivalent to a data-plane task submission; the decision maker switches from human to agent. [[agenttool-subagent-dispatch]]
  • Depth guard — the only nesting control: tool_config.agent.max_depth (default 1 = root may dispatch one layer; deeper dispatch is rejected).
  • Sessions persist by name — sub-agent sessions are keyed by agent name and remain observable by other agents and the UI.
  • AgentInjector — contributes the list of available agents to the context so the model knows it can dispatch. [[vol-llm-agent-tool-crate]]

2.5 Deployment Architecture

  • ArgoCD GitOps (primary)deploy/argocd/root.yaml (app-of-apps) deploys: control-plane (agent-server), data-plane nodes (agent-server-dp), specialized agent workers (agent-server-ansible, agent-server-dingtalk), MCP servers, nginx-proxy + React frontend (vol-llm-ui). [[argocd-app-of-apps-gitops]]
  • Runtime config as ConfigMaps — agents, providers, sandboxes, MCP endpoints and secrets live under deploy/argocd/manifests/runtime-config/, regenerated with python3 scripts/sync-configmaps.py.
  • Kustomize alternativedeploy/kustomize/overlays/{control-plane,data-plane}.
  • Legacy k8s/ tree is deprecated — prefer ArgoCD.
  • MCP servers run as standalone Deployments + ClusterIP Services. [[mcp-transport-pattern]]

See [[docs/wiki/concepts/argocd-app-of-apps-gitops]] for the full guide.

3. Project Structure

Agent Crates

CrateResponsibility
vol-llm-coreLLM abstractions, types, traits
vol-llm-providerAnthropic, OpenAI, DashScope provider implementations
vol-llm-toolToolRegistry, Tool trait, ToolContext
vol-llm-tools-builtinread/write/edit/grep/bash/web-search/web-fetch
vol-llm-cli-toolCore abstraction for "CLI-as-Tool" (shared by fs/task)
vol-llm-fsCLI-style fs tool over the file-op built-ins
vol-llm-taskTask models and stores (SeaORM SQLite/Postgres)
vol-llm-sandboxSandbox lifecycle management: SandboxManager, SandboxProvider, SandboxStore + implementations (Local/Tmp/SSH/Firecracker/Wasm)
vol-llm-skillSkill system (markdown-frontmatter)
vol-llm-agentReAct orchestration, AgentConfig, plugin system
vol-llm-agentsHigh-level agent implementations
vol-llm-yaml-agentDeclarative agent definitions via YAML
vol-llm-agent-toolAgentTool (sub-agent dispatch) + AgentInjector
vol-llm-contextContextBuilder / ContextContributor prompt construction
vol-llm-memoryLayered memory abstractions for cross-session agent memory
vol-llm-wikiWiki compression and management tool
vol-llm-mcpMCP client, server lifecycle, tool/resource/prompt discovery
vol-llm-runtimeAgentRuntime — single source of truth for runtime resources
vol-llm-agent-protocolJSON-RPC protocol (Operation/Payload/control.*) + transport
vol-sessionSession persistence (file + SeaORM SQLite/Postgres)
vol-agent-serverAgent server binary — DataPlaneServerCore + ControlPlaneServerCore
vol-llm-tuiTerminal UI (ratatui)
vol-llm-uiDEPRECATED — Dioxus WASM web frontend; replaced by React frontend/
vol-mcp-serversMCP server implementations (docs-rs-mcp, cli-tools-mcp, playwright-mcp)
md-frontmatterMarkdown frontmatter parser
ppt-agentPowerPoint generation agent

4. Installation & Deployment

Prerequisites

Rust toolchain (see rust-toolchain.toml), just for recipes, Node.js for the web frontend.

Local

# Agent server (standalone data-plane)
cp configs/vol-agent-server.env.example .env
source .env
cargo run -p vol-agent-server
# Per-mode configs: configs/vol-agent-server.{data-plane,control-plane}.toml# Web frontend (React, 2 terminals)
just web-backend # agent server on :3001 (cargo-watch)
just web-dev # Vite dev server on :5173 (WS proxy to :3001)

Docker

just docker-agent # or:
docker build -f dockers/vol-agent-server.Dockerfile -t vol-agent-server .
docker build -f dockers/vol-agent-server.alpine.Dockerfile -t vol-agent-server:alpine .

Kubernetes

# ArgoCD GitOps (primary)
kubectl apply -f deploy/argocd/root.yaml
# Kustomize (alternative)
kubectl apply -k deploy/kustomize/overlays/control-plane
kubectl apply -k deploy/kustomize/overlays/data-plane
# Post-deploy verification
./scripts/smoke-test.sh --all

Runtime config changes are synced to ConfigMaps with python3 scripts/sync-configmaps.py. See [[docs/wiki/concepts/argocd-app-of-apps-gitops]].

5. AI-Driven Development Workflow

This project uses Superpowers skills for structured development:

clarifying-requirements ──► brainstorming ──► writing-architecture
(需求澄清) (方案脑暴) (架构设计)
writing-architecture ──► writing-plans ──► subagent-driven-development
(架构设计) (实现计划) (按 task 派发 subagent)
PhaseOutputLocation
RequirementRequirement docdocs/superpowers/requirement/
ArchitectureDesign docdocs/superpowers/architectures/
SpecAddendum / detailed specdocs/superpowers/specs/
PlanTask-level implementation plandocs/superpowers/plans/
WikiCompiled knowledge basedocs/wiki/

Task Completion Checklist

  1. just test-crate <affected-crate> — all tests pass
  2. just cover-gate <affected-crate> 80 — coverage gate
  3. ./scripts/check-agent-boundaries.sh — dependency direction
  4. just fmt-check && just clippy-strict — formatting & lint
  5. wiki-ingest — ingest changes into docs/wiki
  6. (If UI affected) just fe-test + just fe-e2e — frontend test tiers

6. Core Tools & Commands

All recipes run via just (just help for the full list).

AreaCommands
Build & checkjust check, just clippy, just clippy-strict, just fmt, just fmt-check
Testsjust test-unit, just test-integration, just test-crate <crate>, just test-e2e, just test-tools, just test-sandbox
Coveragejust cover <crate>, just cover-gate <crate> 80, just cover-html <crate>, just cover-tools
Guardsjust boundaries, just no-doc-tests, just no-clippy-allow, just audit
Webjust web-dev, just web-backend, just web-build, just web-serve
Frontend testsjust fe-test (fe-test-unit / fe-test-integration), just fe-e2e, just fe-lint, just fe-type
Dockerjust docker-agent

Model Service

Endpointhttp://192.168.2.162:31693
Modelsgpt5.5, coding, qwen3.6-plus, glm5.1

Provider config lives in .agents/providers/*.toml and is auto-discovered.


Documentation

PathTopic
CLAUDE.mdAI agent quick reference (conventions, guardrails, commands)
docs/CONFIGURATION.mdFull configuration guide (TOML sections, env vars, K8s)
docs/wiki/index.mdWiki index — entities, concepts, sources, full search
docs/superpowers/Requirement / architecture / spec / plan documents

About

vol agent system

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

vol

A Rust workspace containing a full LLM agent system — ReAct orchestration, tools, skills, MCP integration, sandboxes, sub-agent dispatch, sessions, TUI and web frontends.


1. The Agent System

  • ReAct orchestration with pluggable providers (Anthropic, OpenAI, DashScope)
  • Tools — built-in file/bash/web tools, CLI-style fs and task tools, skill tools, and MCP tools
  • Skills — markdown-frontmatter skills injected into the agent context
  • MCP — client for external MCP servers plus bundled servers (docs-rs-mcp, cli-tools-mcp, playwright-mcp)
  • Sandboxes — Local / Tmp / SSH / Firecracker / Wasm execution environments
  • Sub-agent dispatch — the built-in agent tool dispatches work to other agents declared in .agents/agents/*.toml
  • Sessions & tasks — persisted to SQLite / Postgres
  • Frontends — TUI and React web frontend
  • Server — JSON-RPC over WebSocket with a control-plane / data-plane split

2. Architecture

2.1 Core Concepts

  • AgentRuntime (vol-llm-runtime) is the single source of truth for agent resources — tools, skills, MCP clients, providers, session/task stores. Tool registration happens in AgentRuntimeBuilder::build(). [[vol-llm-runtime-crate]]
  • AgentDef — agents are declared in .agents/agents/*.toml and run a ReAct loop (vol-llm-agent): think → tool call → observe, until a final answer.
  • ContextContextBuilder composes the prompt from ContextContributors (skills, available-agent list via AgentInjector, session history) under a token budget. [[vol-llm-context-crate]]
  • Protocol — JSON-RPC 2.0 over WebSocket is the only application protocol; HTTP is reserved for /health and /metrics. Wire types live in vol-llm-agent-protocol. [[vol-llm-agent-protocol-crate]]

2.2 Control Plane / Data Plane

The agent server (vol-agent-server) supports three deployment modes configured via TOML:

Modecontrol_planedata_planeDescription
Standalone data-planefalsetrueSingle-node agent execution (legacy /ws behavior)
Standalone control-planetruefalseCluster coordinator — registry, routing, capability index
CombinedtruetrueBoth in one process, local node self-registers
 ┌──────────────────────────────────┐
Client / UI / CLI │ vol-agent-server │
─── JSON-RPC /ws ─►│ │
│ ┌─────────────────────────────┐ │
│ │ ControlPlaneServerCore │ │
│ │ NodeRegistry CapabilityIndex│ │
│ │ ControlRouter LeaseManager │ │
│ └─────────────┬───────────────┘ │
│ │ │
│ ┌─────────────▼───────────────┐ │
│ │ DataPlaneServerCore │ │
│ │ AgentRuntime AgentRouter │ │
│ │ ToolRegistry McpManager │ │
│ └─────────────────────────────┘ │
└──────────────────────────────────┘
│
┌────────────────────┼────────────────────┐
▼ ▼ ▼
vol-llm-agent-protocol vol-llm-runtime vol-llm-tool
(JSON-RPC + transport) (execution owner) (ToolRegistry)
  • Clients connect at /ws; data-plane nodes link to the control plane at /control/v1/ws.
  • Both planes live in vol-agent-server (no separate control-plane crate).
  • Dependency direction: vol-agent-servervol-llm-agent-protocol + vol-llm-runtime. Protocol and runtime must not depend on server (./scripts/check-agent-boundaries.sh).

[[agent-server-control-data-plane]]

2.3 Tools & Sandboxes

  • ToolRegistry — every tool implements the Tool trait and receives a ToolContext; registered once in AgentRuntimeBuilder::build(). [[tool-registry]]
  • Built-in toolsread / write / edit / grep / bash / web-search / web-fetch (vol-llm-tools-builtin).
  • CLI-as-tool — the fs and task tools expose CLI-style subcommands (fs read <path>, fs grep <pattern>, --json envelope) over the built-ins, sharing the vol-llm-cli-tool abstraction. [[vol-llm-fs-crate]] [[fs-cli-tool]]
  • Sandboxes — tools execute inside sandboxes: Local / Tmp / SSH / Firecracker / Wasm. SandboxManager provides unified lifecycle management with explicit instance identity, state tracking, and provider-based backend abstraction. Configuration lives in .agents/sandboxes/*.toml. [[sandbox-lifecycle]] [[vol-llm-sandbox-crate]]

2.4 Agent–Sub-agent Collaboration

The built-in agent tool lets an agent autonomously dispatch sub-tasks to other agents declared in .agents/agents/:

  • Dispatch by AgentDef.id — the sub-agent runs its own full ReAct loop and returns its final result synchronously. Dispatch is equivalent to a data-plane task submission; the decision maker switches from human to agent. [[agenttool-subagent-dispatch]]
  • Depth guard — the only nesting control: tool_config.agent.max_depth (default 1 = root may dispatch one layer; deeper dispatch is rejected).
  • Sessions persist by name — sub-agent sessions are keyed by agent name and remain observable by other agents and the UI.
  • AgentInjector — contributes the list of available agents to the context so the model knows it can dispatch. [[vol-llm-agent-tool-crate]]

2.5 Deployment Architecture

  • ArgoCD GitOps (primary)deploy/argocd/root.yaml (app-of-apps) deploys: control-plane (agent-server), data-plane nodes (agent-server-dp), specialized agent workers (agent-server-ansible, agent-server-dingtalk), MCP servers, nginx-proxy + React frontend (vol-llm-ui). [[argocd-app-of-apps-gitops]]
  • Runtime config as ConfigMaps — agents, providers, sandboxes, MCP endpoints and secrets live under deploy/argocd/manifests/runtime-config/, regenerated with python3 scripts/sync-configmaps.py.
  • Kustomize alternativedeploy/kustomize/overlays/{control-plane,data-plane}.
  • Legacy k8s/ tree is deprecated — prefer ArgoCD.
  • MCP servers run as standalone Deployments + ClusterIP Services. [[mcp-transport-pattern]]

See [[docs/wiki/concepts/argocd-app-of-apps-gitops]] for the full guide.

3. Project Structure

Agent Crates

CrateResponsibility
vol-llm-coreLLM abstractions, types, traits
vol-llm-providerAnthropic, OpenAI, DashScope provider implementations
vol-llm-toolToolRegistry, Tool trait, ToolContext
vol-llm-tools-builtinread/write/edit/grep/bash/web-search/web-fetch
vol-llm-cli-toolCore abstraction for "CLI-as-Tool" (shared by fs/task)
vol-llm-fsCLI-style fs tool over the file-op built-ins
vol-llm-taskTask models and stores (SeaORM SQLite/Postgres)
vol-llm-sandboxSandbox lifecycle management: SandboxManager, SandboxProvider, SandboxStore + implementations (Local/Tmp/SSH/Firecracker/Wasm)
vol-llm-skillSkill system (markdown-frontmatter)
vol-llm-agentReAct orchestration, AgentConfig, plugin system
vol-llm-agentsHigh-level agent implementations
vol-llm-yaml-agentDeclarative agent definitions via YAML
vol-llm-agent-toolAgentTool (sub-agent dispatch) + AgentInjector
vol-llm-contextContextBuilder / ContextContributor prompt construction
vol-llm-memoryLayered memory abstractions for cross-session agent memory
vol-llm-wikiWiki compression and management tool
vol-llm-mcpMCP client, server lifecycle, tool/resource/prompt discovery
vol-llm-runtimeAgentRuntime — single source of truth for runtime resources
vol-llm-agent-protocolJSON-RPC protocol (Operation/Payload/control.*) + transport
vol-sessionSession persistence (file + SeaORM SQLite/Postgres)
vol-agent-serverAgent server binary — DataPlaneServerCore + ControlPlaneServerCore
vol-llm-tuiTerminal UI (ratatui)
vol-llm-uiDEPRECATED — Dioxus WASM web frontend; replaced by React frontend/
vol-mcp-serversMCP server implementations (docs-rs-mcp, cli-tools-mcp, playwright-mcp)
md-frontmatterMarkdown frontmatter parser
ppt-agentPowerPoint generation agent

4. Installation & Deployment

Prerequisites

Rust toolchain (see rust-toolchain.toml), just for recipes, Node.js for the web frontend.

Local

# Agent server (standalone data-plane)
cp configs/vol-agent-server.env.example .env
source .env
cargo run -p vol-agent-server
# Per-mode configs: configs/vol-agent-server.{data-plane,control-plane}.toml# Web frontend (React, 2 terminals)
just web-backend # agent server on :3001 (cargo-watch)
just web-dev # Vite dev server on :5173 (WS proxy to :3001)

Docker

just docker-agent # or:
docker build -f dockers/vol-agent-server.Dockerfile -t vol-agent-server .
docker build -f dockers/vol-agent-server.alpine.Dockerfile -t vol-agent-server:alpine .

Kubernetes

# ArgoCD GitOps (primary)
kubectl apply -f deploy/argocd/root.yaml
# Kustomize (alternative)
kubectl apply -k deploy/kustomize/overlays/control-plane
kubectl apply -k deploy/kustomize/overlays/data-plane
# Post-deploy verification
./scripts/smoke-test.sh --all

Runtime config changes are synced to ConfigMaps with python3 scripts/sync-configmaps.py. See [[docs/wiki/concepts/argocd-app-of-apps-gitops]].

5. AI-Driven Development Workflow

This project uses Superpowers skills for structured development:

clarifying-requirements ──► brainstorming ──► writing-architecture
(需求澄清) (方案脑暴) (架构设计)
writing-architecture ──► writing-plans ──► subagent-driven-development
(架构设计) (实现计划) (按 task 派发 subagent)
PhaseOutputLocation
RequirementRequirement docdocs/superpowers/requirement/
ArchitectureDesign docdocs/superpowers/architectures/
SpecAddendum / detailed specdocs/superpowers/specs/
PlanTask-level implementation plandocs/superpowers/plans/
WikiCompiled knowledge basedocs/wiki/

Task Completion Checklist

  1. just test-crate <affected-crate> — all tests pass
  2. just cover-gate <affected-crate> 80 — coverage gate
  3. ./scripts/check-agent-boundaries.sh — dependency direction
  4. just fmt-check && just clippy-strict — formatting & lint
  5. wiki-ingest — ingest changes into docs/wiki
  6. (If UI affected) just fe-test + just fe-e2e — frontend test tiers

6. Core Tools & Commands

All recipes run via just (just help for the full list).

AreaCommands
Build & checkjust check, just clippy, just clippy-strict, just fmt, just fmt-check
Testsjust test-unit, just test-integration, just test-crate <crate>, just test-e2e, just test-tools, just test-sandbox
Coveragejust cover <crate>, just cover-gate <crate> 80, just cover-html <crate>, just cover-tools
Guardsjust boundaries, just no-doc-tests, just no-clippy-allow, just audit
Webjust web-dev, just web-backend, just web-build, just web-serve
Frontend testsjust fe-test (fe-test-unit / fe-test-integration), just fe-e2e, just fe-lint, just fe-type
Dockerjust docker-agent

Model Service

Endpointhttp://192.168.2.162:31693
Modelsgpt5.5, coding, qwen3.6-plus, glm5.1

Provider config lives in .agents/providers/*.toml and is auto-discovered.


Documentation

PathTopic
CLAUDE.mdAI agent quick reference (conventions, guardrails, commands)
docs/CONFIGURATION.mdFull configuration guide (TOML sections, env vars, K8s)
docs/wiki/index.mdWiki index — entities, concepts, sources, full search
docs/superpowers/Requirement / architecture / spec / plan documents

About

vol agent system

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

vol

A Rust workspace containing a full LLM agent system — ReAct orchestration, tools, skills, MCP integration, sandboxes, sub-agent dispatch, sessions, TUI and web frontends.


1. The Agent System

  • ReAct orchestration with pluggable providers (Anthropic, OpenAI, DashScope)
  • Tools — built-in file/bash/web tools, CLI-style fs and task tools, skill tools, and MCP tools
  • Skills — markdown-frontmatter skills injected into the agent context
  • MCP — client for external MCP servers plus bundled servers (docs-rs-mcp, cli-tools-mcp, playwright-mcp)
  • Sandboxes — Local / Tmp / SSH / Firecracker / Wasm execution environments
  • Sub-agent dispatch — the built-in agent tool dispatches work to other agents declared in .agents/agents/*.toml
  • Sessions & tasks — persisted to SQLite / Postgres
  • Frontends — TUI and React web frontend
  • Server — JSON-RPC over WebSocket with a control-plane / data-plane split

2. Architecture

2.1 Core Concepts

  • AgentRuntime (vol-llm-runtime) is the single source of truth for agent resources — tools, skills, MCP clients, providers, session/task stores. Tool registration happens in AgentRuntimeBuilder::build(). [[vol-llm-runtime-crate]]
  • AgentDef — agents are declared in .agents/agents/*.toml and run a ReAct loop (vol-llm-agent): think → tool call → observe, until a final answer.
  • ContextContextBuilder composes the prompt from ContextContributors (skills, available-agent list via AgentInjector, session history) under a token budget. [[vol-llm-context-crate]]
  • Protocol — JSON-RPC 2.0 over WebSocket is the only application protocol; HTTP is reserved for /health and /metrics. Wire types live in vol-llm-agent-protocol. [[vol-llm-agent-protocol-crate]]

2.2 Control Plane / Data Plane

The agent server (vol-agent-server) supports three deployment modes configured via TOML:

Modecontrol_planedata_planeDescription
Standalone data-planefalsetrueSingle-node agent execution (legacy /ws behavior)
Standalone control-planetruefalseCluster coordinator — registry, routing, capability index
CombinedtruetrueBoth in one process, local node self-registers
 ┌──────────────────────────────────┐
Client / UI / CLI │ vol-agent-server │
─── JSON-RPC /ws ─►│ │
│ ┌─────────────────────────────┐ │
│ │ ControlPlaneServerCore │ │
│ │ NodeRegistry CapabilityIndex│ │
│ │ ControlRouter LeaseManager │ │
│ └─────────────┬───────────────┘ │
│ │ │
│ ┌─────────────▼───────────────┐ │
│ │ DataPlaneServerCore │ │
│ │ AgentRuntime AgentRouter │ │
│ │ ToolRegistry McpManager │ │
│ └─────────────────────────────┘ │
└──────────────────────────────────┘
│
┌────────────────────┼────────────────────┐
▼ ▼ ▼
vol-llm-agent-protocol vol-llm-runtime vol-llm-tool
(JSON-RPC + transport) (execution owner) (ToolRegistry)
  • Clients connect at /ws; data-plane nodes link to the control plane at /control/v1/ws.
  • Both planes live in vol-agent-server (no separate control-plane crate).
  • Dependency direction: vol-agent-servervol-llm-agent-protocol + vol-llm-runtime. Protocol and runtime must not depend on server (./scripts/check-agent-boundaries.sh).

[[agent-server-control-data-plane]]

2.3 Tools & Sandboxes

  • ToolRegistry — every tool implements the Tool trait and receives a ToolContext; registered once in AgentRuntimeBuilder::build(). [[tool-registry]]
  • Built-in toolsread / write / edit / grep / bash / web-search / web-fetch (vol-llm-tools-builtin).
  • CLI-as-tool — the fs and task tools expose CLI-style subcommands (fs read <path>, fs grep <pattern>, --json envelope) over the built-ins, sharing the vol-llm-cli-tool abstraction. [[vol-llm-fs-crate]] [[fs-cli-tool]]
  • Sandboxes — tools execute inside sandboxes: Local / Tmp / SSH / Firecracker / Wasm. SandboxManager provides unified lifecycle management with explicit instance identity, state tracking, and provider-based backend abstraction. Configuration lives in .agents/sandboxes/*.toml. [[sandbox-lifecycle]] [[vol-llm-sandbox-crate]]

2.4 Agent–Sub-agent Collaboration

The built-in agent tool lets an agent autonomously dispatch sub-tasks to other agents declared in .agents/agents/:

  • Dispatch by AgentDef.id — the sub-agent runs its own full ReAct loop and returns its final result synchronously. Dispatch is equivalent to a data-plane task submission; the decision maker switches from human to agent. [[agenttool-subagent-dispatch]]
  • Depth guard — the only nesting control: tool_config.agent.max_depth (default 1 = root may dispatch one layer; deeper dispatch is rejected).
  • Sessions persist by name — sub-agent sessions are keyed by agent name and remain observable by other agents and the UI.
  • AgentInjector — contributes the list of available agents to the context so the model knows it can dispatch. [[vol-llm-agent-tool-crate]]

2.5 Deployment Architecture

  • ArgoCD GitOps (primary)deploy/argocd/root.yaml (app-of-apps) deploys: control-plane (agent-server), data-plane nodes (agent-server-dp), specialized agent workers (agent-server-ansible, agent-server-dingtalk), MCP servers, nginx-proxy + React frontend (vol-llm-ui). [[argocd-app-of-apps-gitops]]
  • Runtime config as ConfigMaps — agents, providers, sandboxes, MCP endpoints and secrets live under deploy/argocd/manifests/runtime-config/, regenerated with python3 scripts/sync-configmaps.py.
  • Kustomize alternativedeploy/kustomize/overlays/{control-plane,data-plane}.
  • Legacy k8s/ tree is deprecated — prefer ArgoCD.
  • MCP servers run as standalone Deployments + ClusterIP Services. [[mcp-transport-pattern]]

See [[docs/wiki/concepts/argocd-app-of-apps-gitops]] for the full guide.

3. Project Structure

Agent Crates

CrateResponsibility
vol-llm-coreLLM abstractions, types, traits
vol-llm-providerAnthropic, OpenAI, DashScope provider implementations
vol-llm-toolToolRegistry, Tool trait, ToolContext
vol-llm-tools-builtinread/write/edit/grep/bash/web-search/web-fetch
vol-llm-cli-toolCore abstraction for "CLI-as-Tool" (shared by fs/task)
vol-llm-fsCLI-style fs tool over the file-op built-ins
vol-llm-taskTask models and stores (SeaORM SQLite/Postgres)
vol-llm-sandboxSandbox lifecycle management: SandboxManager, SandboxProvider, SandboxStore + implementations (Local/Tmp/SSH/Firecracker/Wasm)
vol-llm-skillSkill system (markdown-frontmatter)
vol-llm-agentReAct orchestration, AgentConfig, plugin system
vol-llm-agentsHigh-level agent implementations
vol-llm-yaml-agentDeclarative agent definitions via YAML
vol-llm-agent-toolAgentTool (sub-agent dispatch) + AgentInjector
vol-llm-contextContextBuilder / ContextContributor prompt construction
vol-llm-memoryLayered memory abstractions for cross-session agent memory
vol-llm-wikiWiki compression and management tool
vol-llm-mcpMCP client, server lifecycle, tool/resource/prompt discovery
vol-llm-runtimeAgentRuntime — single source of truth for runtime resources
vol-llm-agent-protocolJSON-RPC protocol (Operation/Payload/control.*) + transport
vol-sessionSession persistence (file + SeaORM SQLite/Postgres)
vol-agent-serverAgent server binary — DataPlaneServerCore + ControlPlaneServerCore
vol-llm-tuiTerminal UI (ratatui)
vol-llm-uiDEPRECATED — Dioxus WASM web frontend; replaced by React frontend/
vol-mcp-serversMCP server implementations (docs-rs-mcp, cli-tools-mcp, playwright-mcp)
md-frontmatterMarkdown frontmatter parser
ppt-agentPowerPoint generation agent

4. Installation & Deployment

Prerequisites

Rust toolchain (see rust-toolchain.toml), just for recipes, Node.js for the web frontend.

Local

# Agent server (standalone data-plane)
cp configs/vol-agent-server.env.example .env
source .env
cargo run -p vol-agent-server
# Per-mode configs: configs/vol-agent-server.{data-plane,control-plane}.toml# Web frontend (React, 2 terminals)
just web-backend # agent server on :3001 (cargo-watch)
just web-dev # Vite dev server on :5173 (WS proxy to :3001)

Docker

just docker-agent # or:
docker build -f dockers/vol-agent-server.Dockerfile -t vol-agent-server .
docker build -f dockers/vol-agent-server.alpine.Dockerfile -t vol-agent-server:alpine .

Kubernetes

# ArgoCD GitOps (primary)
kubectl apply -f deploy/argocd/root.yaml
# Kustomize (alternative)
kubectl apply -k deploy/kustomize/overlays/control-plane
kubectl apply -k deploy/kustomize/overlays/data-plane
# Post-deploy verification
./scripts/smoke-test.sh --all

Runtime config changes are synced to ConfigMaps with python3 scripts/sync-configmaps.py. See [[docs/wiki/concepts/argocd-app-of-apps-gitops]].

5. AI-Driven Development Workflow

This project uses Superpowers skills for structured development:

clarifying-requirements ──► brainstorming ──► writing-architecture
(需求澄清) (方案脑暴) (架构设计)
writing-architecture ──► writing-plans ──► subagent-driven-development
(架构设计) (实现计划) (按 task 派发 subagent)
PhaseOutputLocation
RequirementRequirement docdocs/superpowers/requirement/
ArchitectureDesign docdocs/superpowers/architectures/
SpecAddendum / detailed specdocs/superpowers/specs/
PlanTask-level implementation plandocs/superpowers/plans/
WikiCompiled knowledge basedocs/wiki/

Task Completion Checklist

  1. just test-crate <affected-crate> — all tests pass
  2. just cover-gate <affected-crate> 80 — coverage gate
  3. ./scripts/check-agent-boundaries.sh — dependency direction
  4. just fmt-check && just clippy-strict — formatting & lint
  5. wiki-ingest — ingest changes into docs/wiki
  6. (If UI affected) just fe-test + just fe-e2e — frontend test tiers

6. Core Tools & Commands

All recipes run via just (just help for the full list).

AreaCommands
Build & checkjust check, just clippy, just clippy-strict, just fmt, just fmt-check
Testsjust test-unit, just test-integration, just test-crate <crate>, just test-e2e, just test-tools, just test-sandbox
Coveragejust cover <crate>, just cover-gate <crate> 80, just cover-html <crate>, just cover-tools
Guardsjust boundaries, just no-doc-tests, just no-clippy-allow, just audit
Webjust web-dev, just web-backend, just web-build, just web-serve
Frontend testsjust fe-test (fe-test-unit / fe-test-integration), just fe-e2e, just fe-lint, just fe-type
Dockerjust docker-agent

Model Service

Endpointhttp://192.168.2.162:31693
Modelsgpt5.5, coding, qwen3.6-plus, glm5.1

Provider config lives in .agents/providers/*.toml and is auto-discovered.


Documentation

PathTopic
CLAUDE.mdAI agent quick reference (conventions, guardrails, commands)
docs/CONFIGURATION.mdFull configuration guide (TOML sections, env vars, K8s)
docs/wiki/index.mdWiki index — entities, concepts, sources, full search
docs/superpowers/Requirement / architecture / spec / plan documents

About

vol agent system

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

vol

A Rust workspace containing a full LLM agent system — ReAct orchestration, tools, skills, MCP integration, sandboxes, sub-agent dispatch, sessions, TUI and web frontends.


1. The Agent System

  • ReAct orchestration with pluggable providers (Anthropic, OpenAI, DashScope)
  • Tools — built-in file/bash/web tools, CLI-style fs and task tools, skill tools, and MCP tools
  • Skills — markdown-frontmatter skills injected into the agent context
  • MCP — client for external MCP servers plus bundled servers (docs-rs-mcp, cli-tools-mcp, playwright-mcp)
  • Sandboxes — Local / Tmp / SSH / Firecracker / Wasm execution environments
  • Sub-agent dispatch — the built-in agent tool dispatches work to other agents declared in .agents/agents/*.toml
  • Sessions & tasks — persisted to SQLite / Postgres
  • Frontends — TUI and React web frontend
  • Server — JSON-RPC over WebSocket with a control-plane / data-plane split

2. Architecture

2.1 Core Concepts

  • AgentRuntime (vol-llm-runtime) is the single source of truth for agent resources — tools, skills, MCP clients, providers, session/task stores. Tool registration happens in AgentRuntimeBuilder::build(). [[vol-llm-runtime-crate]]
  • AgentDef — agents are declared in .agents/agents/*.toml and run a ReAct loop (vol-llm-agent): think → tool call → observe, until a final answer.
  • ContextContextBuilder composes the prompt from ContextContributors (skills, available-agent list via AgentInjector, session history) under a token budget. [[vol-llm-context-crate]]
  • Protocol — JSON-RPC 2.0 over WebSocket is the only application protocol; HTTP is reserved for /health and /metrics. Wire types live in vol-llm-agent-protocol. [[vol-llm-agent-protocol-crate]]

2.2 Control Plane / Data Plane

The agent server (vol-agent-server) supports three deployment modes configured via TOML:

Modecontrol_planedata_planeDescription
Standalone data-planefalsetrueSingle-node agent execution (legacy /ws behavior)
Standalone control-planetruefalseCluster coordinator — registry, routing, capability index
CombinedtruetrueBoth in one process, local node self-registers
 ┌──────────────────────────────────┐
Client / UI / CLI │ vol-agent-server │
─── JSON-RPC /ws ─►│ │
│ ┌─────────────────────────────┐ │
│ │ ControlPlaneServerCore │ │
│ │ NodeRegistry CapabilityIndex│ │
│ │ ControlRouter LeaseManager │ │
│ └─────────────┬───────────────┘ │
│ │ │
│ ┌─────────────▼───────────────┐ │
│ │ DataPlaneServerCore │ │
│ │ AgentRuntime AgentRouter │ │
│ │ ToolRegistry McpManager │ │
│ └─────────────────────────────┘ │
└──────────────────────────────────┘
│
┌────────────────────┼────────────────────┐
▼ ▼ ▼
vol-llm-agent-protocol vol-llm-runtime vol-llm-tool
(JSON-RPC + transport) (execution owner) (ToolRegistry)
  • Clients connect at /ws; data-plane nodes link to the control plane at /control/v1/ws.
  • Both planes live in vol-agent-server (no separate control-plane crate).
  • Dependency direction: vol-agent-servervol-llm-agent-protocol + vol-llm-runtime. Protocol and runtime must not depend on server (./scripts/check-agent-boundaries.sh).

[[agent-server-control-data-plane]]

2.3 Tools & Sandboxes

  • ToolRegistry — every tool implements the Tool trait and receives a ToolContext; registered once in AgentRuntimeBuilder::build(). [[tool-registry]]
  • Built-in toolsread / write / edit / grep / bash / web-search / web-fetch (vol-llm-tools-builtin).
  • CLI-as-tool — the fs and task tools expose CLI-style subcommands (fs read <path>, fs grep <pattern>, --json envelope) over the built-ins, sharing the vol-llm-cli-tool abstraction. [[vol-llm-fs-crate]] [[fs-cli-tool]]
  • Sandboxes — tools execute inside sandboxes: Local / Tmp / SSH / Firecracker / Wasm. SandboxManager provides unified lifecycle management with explicit instance identity, state tracking, and provider-based backend abstraction. Configuration lives in .agents/sandboxes/*.toml. [[sandbox-lifecycle]] [[vol-llm-sandbox-crate]]

2.4 Agent–Sub-agent Collaboration

The built-in agent tool lets an agent autonomously dispatch sub-tasks to other agents declared in .agents/agents/:

  • Dispatch by AgentDef.id — the sub-agent runs its own full ReAct loop and returns its final result synchronously. Dispatch is equivalent to a data-plane task submission; the decision maker switches from human to agent. [[agenttool-subagent-dispatch]]
  • Depth guard — the only nesting control: tool_config.agent.max_depth (default 1 = root may dispatch one layer; deeper dispatch is rejected).
  • Sessions persist by name — sub-agent sessions are keyed by agent name and remain observable by other agents and the UI.
  • AgentInjector — contributes the list of available agents to the context so the model knows it can dispatch. [[vol-llm-agent-tool-crate]]

2.5 Deployment Architecture

  • ArgoCD GitOps (primary)deploy/argocd/root.yaml (app-of-apps) deploys: control-plane (agent-server), data-plane nodes (agent-server-dp), specialized agent workers (agent-server-ansible, agent-server-dingtalk), MCP servers, nginx-proxy + React frontend (vol-llm-ui). [[argocd-app-of-apps-gitops]]
  • Runtime config as ConfigMaps — agents, providers, sandboxes, MCP endpoints and secrets live under deploy/argocd/manifests/runtime-config/, regenerated with python3 scripts/sync-configmaps.py.
  • Kustomize alternativedeploy/kustomize/overlays/{control-plane,data-plane}.
  • Legacy k8s/ tree is deprecated — prefer ArgoCD.
  • MCP servers run as standalone Deployments + ClusterIP Services. [[mcp-transport-pattern]]

See [[docs/wiki/concepts/argocd-app-of-apps-gitops]] for the full guide.

3. Project Structure

Agent Crates

CrateResponsibility
vol-llm-coreLLM abstractions, types, traits
vol-llm-providerAnthropic, OpenAI, DashScope provider implementations
vol-llm-toolToolRegistry, Tool trait, ToolContext
vol-llm-tools-builtinread/write/edit/grep/bash/web-search/web-fetch
vol-llm-cli-toolCore abstraction for "CLI-as-Tool" (shared by fs/task)
vol-llm-fsCLI-style fs tool over the file-op built-ins
vol-llm-taskTask models and stores (SeaORM SQLite/Postgres)
vol-llm-sandboxSandbox lifecycle management: SandboxManager, SandboxProvider, SandboxStore + implementations (Local/Tmp/SSH/Firecracker/Wasm)
vol-llm-skillSkill system (markdown-frontmatter)
vol-llm-agentReAct orchestration, AgentConfig, plugin system
vol-llm-agentsHigh-level agent implementations
vol-llm-yaml-agentDeclarative agent definitions via YAML
vol-llm-agent-toolAgentTool (sub-agent dispatch) + AgentInjector
vol-llm-contextContextBuilder / ContextContributor prompt construction
vol-llm-memoryLayered memory abstractions for cross-session agent memory
vol-llm-wikiWiki compression and management tool
vol-llm-mcpMCP client, server lifecycle, tool/resource/prompt discovery
vol-llm-runtimeAgentRuntime — single source of truth for runtime resources
vol-llm-agent-protocolJSON-RPC protocol (Operation/Payload/control.*) + transport
vol-sessionSession persistence (file + SeaORM SQLite/Postgres)
vol-agent-serverAgent server binary — DataPlaneServerCore + ControlPlaneServerCore
vol-llm-tuiTerminal UI (ratatui)
vol-llm-uiDEPRECATED — Dioxus WASM web frontend; replaced by React frontend/
vol-mcp-serversMCP server implementations (docs-rs-mcp, cli-tools-mcp, playwright-mcp)
md-frontmatterMarkdown frontmatter parser
ppt-agentPowerPoint generation agent

4. Installation & Deployment

Prerequisites

Rust toolchain (see rust-toolchain.toml), just for recipes, Node.js for the web frontend.

Local

# Agent server (standalone data-plane)
cp configs/vol-agent-server.env.example .env
source .env
cargo run -p vol-agent-server
# Per-mode configs: configs/vol-agent-server.{data-plane,control-plane}.toml# Web frontend (React, 2 terminals)
just web-backend # agent server on :3001 (cargo-watch)
just web-dev # Vite dev server on :5173 (WS proxy to :3001)

Docker

just docker-agent # or:
docker build -f dockers/vol-agent-server.Dockerfile -t vol-agent-server .
docker build -f dockers/vol-agent-server.alpine.Dockerfile -t vol-agent-server:alpine .

Kubernetes

# ArgoCD GitOps (primary)
kubectl apply -f deploy/argocd/root.yaml
# Kustomize (alternative)
kubectl apply -k deploy/kustomize/overlays/control-plane
kubectl apply -k deploy/kustomize/overlays/data-plane
# Post-deploy verification
./scripts/smoke-test.sh --all

Runtime config changes are synced to ConfigMaps with python3 scripts/sync-configmaps.py. See [[docs/wiki/concepts/argocd-app-of-apps-gitops]].

5. AI-Driven Development Workflow

This project uses Superpowers skills for structured development:

clarifying-requirements ──► brainstorming ──► writing-architecture
(需求澄清) (方案脑暴) (架构设计)
writing-architecture ──► writing-plans ──► subagent-driven-development
(架构设计) (实现计划) (按 task 派发 subagent)
PhaseOutputLocation
RequirementRequirement docdocs/superpowers/requirement/
ArchitectureDesign docdocs/superpowers/architectures/
SpecAddendum / detailed specdocs/superpowers/specs/
PlanTask-level implementation plandocs/superpowers/plans/
WikiCompiled knowledge basedocs/wiki/

Task Completion Checklist

  1. just test-crate <affected-crate> — all tests pass
  2. just cover-gate <affected-crate> 80 — coverage gate
  3. ./scripts/check-agent-boundaries.sh — dependency direction
  4. just fmt-check && just clippy-strict — formatting & lint
  5. wiki-ingest — ingest changes into docs/wiki
  6. (If UI affected) just fe-test + just fe-e2e — frontend test tiers

6. Core Tools & Commands

All recipes run via just (just help for the full list).

AreaCommands
Build & checkjust check, just clippy, just clippy-strict, just fmt, just fmt-check
Testsjust test-unit, just test-integration, just test-crate <crate>, just test-e2e, just test-tools, just test-sandbox
Coveragejust cover <crate>, just cover-gate <crate> 80, just cover-html <crate>, just cover-tools
Guardsjust boundaries, just no-doc-tests, just no-clippy-allow, just audit
Webjust web-dev, just web-backend, just web-build, just web-serve
Frontend testsjust fe-test (fe-test-unit / fe-test-integration), just fe-e2e, just fe-lint, just fe-type
Dockerjust docker-agent

Model Service

Endpointhttp://192.168.2.162:31693
Modelsgpt5.5, coding, qwen3.6-plus, glm5.1

Provider config lives in .agents/providers/*.toml and is auto-discovered.


Documentation

PathTopic
CLAUDE.mdAI agent quick reference (conventions, guardrails, commands)
docs/CONFIGURATION.mdFull configuration guide (TOML sections, env vars, K8s)
docs/wiki/index.mdWiki index — entities, concepts, sources, full search
docs/superpowers/Requirement / architecture / spec / plan documents

About

vol agent system

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

vol

A Rust workspace containing a full LLM agent system — ReAct orchestration, tools, skills, MCP integration, sandboxes, sub-agent dispatch, sessions, TUI and web frontends.


1. The Agent System

  • ReAct orchestration with pluggable providers (Anthropic, OpenAI, DashScope)
  • Tools — built-in file/bash/web tools, CLI-style fs and task tools, skill tools, and MCP tools
  • Skills — markdown-frontmatter skills injected into the agent context
  • MCP — client for external MCP servers plus bundled servers (docs-rs-mcp, cli-tools-mcp, playwright-mcp)
  • Sandboxes — Local / Tmp / SSH / Firecracker / Wasm execution environments
  • Sub-agent dispatch — the built-in agent tool dispatches work to other agents declared in .agents/agents/*.toml
  • Sessions & tasks — persisted to SQLite / Postgres
  • Frontends — TUI and React web frontend
  • Server — JSON-RPC over WebSocket with a control-plane / data-plane split

2. Architecture

2.1 Core Concepts

  • AgentRuntime (vol-llm-runtime) is the single source of truth for agent resources — tools, skills, MCP clients, providers, session/task stores. Tool registration happens in AgentRuntimeBuilder::build(). [[vol-llm-runtime-crate]]
  • AgentDef — agents are declared in .agents/agents/*.toml and run a ReAct loop (vol-llm-agent): think → tool call → observe, until a final answer.
  • ContextContextBuilder composes the prompt from ContextContributors (skills, available-agent list via AgentInjector, session history) under a token budget. [[vol-llm-context-crate]]
  • Protocol — JSON-RPC 2.0 over WebSocket is the only application protocol; HTTP is reserved for /health and /metrics. Wire types live in vol-llm-agent-protocol. [[vol-llm-agent-protocol-crate]]

2.2 Control Plane / Data Plane

The agent server (vol-agent-server) supports three deployment modes configured via TOML:

Modecontrol_planedata_planeDescription
Standalone data-planefalsetrueSingle-node agent execution (legacy /ws behavior)
Standalone control-planetruefalseCluster coordinator — registry, routing, capability index
CombinedtruetrueBoth in one process, local node self-registers
 ┌──────────────────────────────────┐
Client / UI / CLI │ vol-agent-server │
─── JSON-RPC /ws ─►│ │
│ ┌─────────────────────────────┐ │
│ │ ControlPlaneServerCore │ │
│ │ NodeRegistry CapabilityIndex│ │
│ │ ControlRouter LeaseManager │ │
│ └─────────────┬───────────────┘ │
│ │ │
│ ┌─────────────▼───────────────┐ │
│ │ DataPlaneServerCore │ │
│ │ AgentRuntime AgentRouter │ │
│ │ ToolRegistry McpManager │ │
│ └─────────────────────────────┘ │
└──────────────────────────────────┘
│
┌────────────────────┼────────────────────┐
▼ ▼ ▼
vol-llm-agent-protocol vol-llm-runtime vol-llm-tool
(JSON-RPC + transport) (execution owner) (ToolRegistry)
  • Clients connect at /ws; data-plane nodes link to the control plane at /control/v1/ws.
  • Both planes live in vol-agent-server (no separate control-plane crate).
  • Dependency direction: vol-agent-servervol-llm-agent-protocol + vol-llm-runtime. Protocol and runtime must not depend on server (./scripts/check-agent-boundaries.sh).

[[agent-server-control-data-plane]]

2.3 Tools & Sandboxes

  • ToolRegistry — every tool implements the Tool trait and receives a ToolContext; registered once in AgentRuntimeBuilder::build(). [[tool-registry]]
  • Built-in toolsread / write / edit / grep / bash / web-search / web-fetch (vol-llm-tools-builtin).
  • CLI-as-tool — the fs and task tools expose CLI-style subcommands (fs read <path>, fs grep <pattern>, --json envelope) over the built-ins, sharing the vol-llm-cli-tool abstraction. [[vol-llm-fs-crate]] [[fs-cli-tool]]
  • Sandboxes — tools execute inside sandboxes: Local / Tmp / SSH / Firecracker / Wasm. SandboxManager provides unified lifecycle management with explicit instance identity, state tracking, and provider-based backend abstraction. Configuration lives in .agents/sandboxes/*.toml. [[sandbox-lifecycle]] [[vol-llm-sandbox-crate]]

2.4 Agent–Sub-agent Collaboration

The built-in agent tool lets an agent autonomously dispatch sub-tasks to other agents declared in .agents/agents/:

  • Dispatch by AgentDef.id — the sub-agent runs its own full ReAct loop and returns its final result synchronously. Dispatch is equivalent to a data-plane task submission; the decision maker switches from human to agent. [[agenttool-subagent-dispatch]]
  • Depth guard — the only nesting control: tool_config.agent.max_depth (default 1 = root may dispatch one layer; deeper dispatch is rejected).
  • Sessions persist by name — sub-agent sessions are keyed by agent name and remain observable by other agents and the UI.
  • AgentInjector — contributes the list of available agents to the context so the model knows it can dispatch. [[vol-llm-agent-tool-crate]]

2.5 Deployment Architecture

  • ArgoCD GitOps (primary)deploy/argocd/root.yaml (app-of-apps) deploys: control-plane (agent-server), data-plane nodes (agent-server-dp), specialized agent workers (agent-server-ansible, agent-server-dingtalk), MCP servers, nginx-proxy + React frontend (vol-llm-ui). [[argocd-app-of-apps-gitops]]
  • Runtime config as ConfigMaps — agents, providers, sandboxes, MCP endpoints and secrets live under deploy/argocd/manifests/runtime-config/, regenerated with python3 scripts/sync-configmaps.py.
  • Kustomize alternativedeploy/kustomize/overlays/{control-plane,data-plane}.
  • Legacy k8s/ tree is deprecated — prefer ArgoCD.
  • MCP servers run as standalone Deployments + ClusterIP Services. [[mcp-transport-pattern]]

See [[docs/wiki/concepts/argocd-app-of-apps-gitops]] for the full guide.

3. Project Structure

Agent Crates

CrateResponsibility
vol-llm-coreLLM abstractions, types, traits
vol-llm-providerAnthropic, OpenAI, DashScope provider implementations
vol-llm-toolToolRegistry, Tool trait, ToolContext
vol-llm-tools-builtinread/write/edit/grep/bash/web-search/web-fetch
vol-llm-cli-toolCore abstraction for "CLI-as-Tool" (shared by fs/task)
vol-llm-fsCLI-style fs tool over the file-op built-ins
vol-llm-taskTask models and stores (SeaORM SQLite/Postgres)
vol-llm-sandboxSandbox lifecycle management: SandboxManager, SandboxProvider, SandboxStore + implementations (Local/Tmp/SSH/Firecracker/Wasm)
vol-llm-skillSkill system (markdown-frontmatter)
vol-llm-agentReAct orchestration, AgentConfig, plugin system
vol-llm-agentsHigh-level agent implementations
vol-llm-yaml-agentDeclarative agent definitions via YAML
vol-llm-agent-toolAgentTool (sub-agent dispatch) + AgentInjector
vol-llm-contextContextBuilder / ContextContributor prompt construction
vol-llm-memoryLayered memory abstractions for cross-session agent memory
vol-llm-wikiWiki compression and management tool
vol-llm-mcpMCP client, server lifecycle, tool/resource/prompt discovery
vol-llm-runtimeAgentRuntime — single source of truth for runtime resources
vol-llm-agent-protocolJSON-RPC protocol (Operation/Payload/control.*) + transport
vol-sessionSession persistence (file + SeaORM SQLite/Postgres)
vol-agent-serverAgent server binary — DataPlaneServerCore + ControlPlaneServerCore
vol-llm-tuiTerminal UI (ratatui)
vol-llm-uiDEPRECATED — Dioxus WASM web frontend; replaced by React frontend/
vol-mcp-serversMCP server implementations (docs-rs-mcp, cli-tools-mcp, playwright-mcp)
md-frontmatterMarkdown frontmatter parser
ppt-agentPowerPoint generation agent

4. Installation & Deployment

Prerequisites

Rust toolchain (see rust-toolchain.toml), just for recipes, Node.js for the web frontend.

Local

# Agent server (standalone data-plane)
cp configs/vol-agent-server.env.example .env
source .env
cargo run -p vol-agent-server
# Per-mode configs: configs/vol-agent-server.{data-plane,control-plane}.toml# Web frontend (React, 2 terminals)
just web-backend # agent server on :3001 (cargo-watch)
just web-dev # Vite dev server on :5173 (WS proxy to :3001)

Docker

just docker-agent # or:
docker build -f dockers/vol-agent-server.Dockerfile -t vol-agent-server .
docker build -f dockers/vol-agent-server.alpine.Dockerfile -t vol-agent-server:alpine .

Kubernetes

# ArgoCD GitOps (primary)
kubectl apply -f deploy/argocd/root.yaml
# Kustomize (alternative)
kubectl apply -k deploy/kustomize/overlays/control-plane
kubectl apply -k deploy/kustomize/overlays/data-plane
# Post-deploy verification
./scripts/smoke-test.sh --all

Runtime config changes are synced to ConfigMaps with python3 scripts/sync-configmaps.py. See [[docs/wiki/concepts/argocd-app-of-apps-gitops]].

5. AI-Driven Development Workflow

This project uses Superpowers skills for structured development:

clarifying-requirements ──► brainstorming ──► writing-architecture
(需求澄清) (方案脑暴) (架构设计)
writing-architecture ──► writing-plans ──► subagent-driven-development
(架构设计) (实现计划) (按 task 派发 subagent)
PhaseOutputLocation
RequirementRequirement docdocs/superpowers/requirement/
ArchitectureDesign docdocs/superpowers/architectures/
SpecAddendum / detailed specdocs/superpowers/specs/
PlanTask-level implementation plandocs/superpowers/plans/
WikiCompiled knowledge basedocs/wiki/

Task Completion Checklist

  1. just test-crate <affected-crate> — all tests pass
  2. just cover-gate <affected-crate> 80 — coverage gate
  3. ./scripts/check-agent-boundaries.sh — dependency direction
  4. just fmt-check && just clippy-strict — formatting & lint
  5. wiki-ingest — ingest changes into docs/wiki
  6. (If UI affected) just fe-test + just fe-e2e — frontend test tiers

6. Core Tools & Commands

All recipes run via just (just help for the full list).

AreaCommands
Build & checkjust check, just clippy, just clippy-strict, just fmt, just fmt-check
Testsjust test-unit, just test-integration, just test-crate <crate>, just test-e2e, just test-tools, just test-sandbox
Coveragejust cover <crate>, just cover-gate <crate> 80, just cover-html <crate>, just cover-tools
Guardsjust boundaries, just no-doc-tests, just no-clippy-allow, just audit
Webjust web-dev, just web-backend, just web-build, just web-serve
Frontend testsjust fe-test (fe-test-unit / fe-test-integration), just fe-e2e, just fe-lint, just fe-type
Dockerjust docker-agent

Model Service

Endpointhttp://192.168.2.162:31693
Modelsgpt5.5, coding, qwen3.6-plus, glm5.1

Provider config lives in .agents/providers/*.toml and is auto-discovered.


Documentation

PathTopic
CLAUDE.mdAI agent quick reference (conventions, guardrails, commands)
docs/CONFIGURATION.mdFull configuration guide (TOML sections, env vars, K8s)
docs/wiki/index.mdWiki index — entities, concepts, sources, full search
docs/superpowers/Requirement / architecture / spec / plan documents

About

vol agent system

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

vol

A Rust workspace containing a full LLM agent system — ReAct orchestration, tools, skills, MCP integration, sandboxes, sub-agent dispatch, sessions, TUI and web frontends.


1. The Agent System

  • ReAct orchestration with pluggable providers (Anthropic, OpenAI, DashScope)
  • Tools — built-in file/bash/web tools, CLI-style fs and task tools, skill tools, and MCP tools
  • Skills — markdown-frontmatter skills injected into the agent context
  • MCP — client for external MCP servers plus bundled servers (docs-rs-mcp, cli-tools-mcp, playwright-mcp)
  • Sandboxes — Local / Tmp / SSH / Firecracker / Wasm execution environments
  • Sub-agent dispatch — the built-in agent tool dispatches work to other agents declared in .agents/agents/*.toml
  • Sessions & tasks — persisted to SQLite / Postgres
  • Frontends — TUI and React web frontend
  • Server — JSON-RPC over WebSocket with a control-plane / data-plane split

2. Architecture

2.1 Core Concepts

  • AgentRuntime (vol-llm-runtime) is the single source of truth for agent resources — tools, skills, MCP clients, providers, session/task stores. Tool registration happens in AgentRuntimeBuilder::build(). [[vol-llm-runtime-crate]]
  • AgentDef — agents are declared in .agents/agents/*.toml and run a ReAct loop (vol-llm-agent): think → tool call → observe, until a final answer.
  • ContextContextBuilder composes the prompt from ContextContributors (skills, available-agent list via AgentInjector, session history) under a token budget. [[vol-llm-context-crate]]
  • Protocol — JSON-RPC 2.0 over WebSocket is the only application protocol; HTTP is reserved for /health and /metrics. Wire types live in vol-llm-agent-protocol. [[vol-llm-agent-protocol-crate]]

2.2 Control Plane / Data Plane

The agent server (vol-agent-server) supports three deployment modes configured via TOML:

Modecontrol_planedata_planeDescription
Standalone data-planefalsetrueSingle-node agent execution (legacy /ws behavior)
Standalone control-planetruefalseCluster coordinator — registry, routing, capability index
CombinedtruetrueBoth in one process, local node self-registers
 ┌──────────────────────────────────┐
Client / UI / CLI │ vol-agent-server │
─── JSON-RPC /ws ─►│ │
│ ┌─────────────────────────────┐ │
│ │ ControlPlaneServerCore │ │
│ │ NodeRegistry CapabilityIndex│ │
│ │ ControlRouter LeaseManager │ │
│ └─────────────┬───────────────┘ │
│ │ │
│ ┌─────────────▼───────────────┐ │
│ │ DataPlaneServerCore │ │
│ │ AgentRuntime AgentRouter │ │
│ │ ToolRegistry McpManager │ │
│ └─────────────────────────────┘ │
└──────────────────────────────────┘
│
┌────────────────────┼────────────────────┐
▼ ▼ ▼
vol-llm-agent-protocol vol-llm-runtime vol-llm-tool
(JSON-RPC + transport) (execution owner) (ToolRegistry)
  • Clients connect at /ws; data-plane nodes link to the control plane at /control/v1/ws.
  • Both planes live in vol-agent-server (no separate control-plane crate).
  • Dependency direction: vol-agent-servervol-llm-agent-protocol + vol-llm-runtime. Protocol and runtime must not depend on server (./scripts/check-agent-boundaries.sh).

[[agent-server-control-data-plane]]

2.3 Tools & Sandboxes

  • ToolRegistry — every tool implements the Tool trait and receives a ToolContext; registered once in AgentRuntimeBuilder::build(). [[tool-registry]]
  • Built-in toolsread / write / edit / grep / bash / web-search / web-fetch (vol-llm-tools-builtin).
  • CLI-as-tool — the fs and task tools expose CLI-style subcommands (fs read <path>, fs grep <pattern>, --json envelope) over the built-ins, sharing the vol-llm-cli-tool abstraction. [[vol-llm-fs-crate]] [[fs-cli-tool]]
  • Sandboxes — tools execute inside sandboxes: Local / Tmp / SSH / Firecracker / Wasm. SandboxManager provides unified lifecycle management with explicit instance identity, state tracking, and provider-based backend abstraction. Configuration lives in .agents/sandboxes/*.toml. [[sandbox-lifecycle]] [[vol-llm-sandbox-crate]]

2.4 Agent–Sub-agent Collaboration

The built-in agent tool lets an agent autonomously dispatch sub-tasks to other agents declared in .agents/agents/:

  • Dispatch by AgentDef.id — the sub-agent runs its own full ReAct loop and returns its final result synchronously. Dispatch is equivalent to a data-plane task submission; the decision maker switches from human to agent. [[agenttool-subagent-dispatch]]
  • Depth guard — the only nesting control: tool_config.agent.max_depth (default 1 = root may dispatch one layer; deeper dispatch is rejected).
  • Sessions persist by name — sub-agent sessions are keyed by agent name and remain observable by other agents and the UI.
  • AgentInjector — contributes the list of available agents to the context so the model knows it can dispatch. [[vol-llm-agent-tool-crate]]

2.5 Deployment Architecture

  • ArgoCD GitOps (primary)deploy/argocd/root.yaml (app-of-apps) deploys: control-plane (agent-server), data-plane nodes (agent-server-dp), specialized agent workers (agent-server-ansible, agent-server-dingtalk), MCP servers, nginx-proxy + React frontend (vol-llm-ui). [[argocd-app-of-apps-gitops]]
  • Runtime config as ConfigMaps — agents, providers, sandboxes, MCP endpoints and secrets live under deploy/argocd/manifests/runtime-config/, regenerated with python3 scripts/sync-configmaps.py.
  • Kustomize alternativedeploy/kustomize/overlays/{control-plane,data-plane}.
  • Legacy k8s/ tree is deprecated — prefer ArgoCD.
  • MCP servers run as standalone Deployments + ClusterIP Services. [[mcp-transport-pattern]]

See [[docs/wiki/concepts/argocd-app-of-apps-gitops]] for the full guide.

3. Project Structure

Agent Crates

CrateResponsibility
vol-llm-coreLLM abstractions, types, traits
vol-llm-providerAnthropic, OpenAI, DashScope provider implementations
vol-llm-toolToolRegistry, Tool trait, ToolContext
vol-llm-tools-builtinread/write/edit/grep/bash/web-search/web-fetch
vol-llm-cli-toolCore abstraction for "CLI-as-Tool" (shared by fs/task)
vol-llm-fsCLI-style fs tool over the file-op built-ins
vol-llm-taskTask models and stores (SeaORM SQLite/Postgres)
vol-llm-sandboxSandbox lifecycle management: SandboxManager, SandboxProvider, SandboxStore + implementations (Local/Tmp/SSH/Firecracker/Wasm)
vol-llm-skillSkill system (markdown-frontmatter)
vol-llm-agentReAct orchestration, AgentConfig, plugin system
vol-llm-agentsHigh-level agent implementations
vol-llm-yaml-agentDeclarative agent definitions via YAML
vol-llm-agent-toolAgentTool (sub-agent dispatch) + AgentInjector
vol-llm-contextContextBuilder / ContextContributor prompt construction
vol-llm-memoryLayered memory abstractions for cross-session agent memory
vol-llm-wikiWiki compression and management tool
vol-llm-mcpMCP client, server lifecycle, tool/resource/prompt discovery
vol-llm-runtimeAgentRuntime — single source of truth for runtime resources
vol-llm-agent-protocolJSON-RPC protocol (Operation/Payload/control.*) + transport
vol-sessionSession persistence (file + SeaORM SQLite/Postgres)
vol-agent-serverAgent server binary — DataPlaneServerCore + ControlPlaneServerCore
vol-llm-tuiTerminal UI (ratatui)
vol-llm-uiDEPRECATED — Dioxus WASM web frontend; replaced by React frontend/
vol-mcp-serversMCP server implementations (docs-rs-mcp, cli-tools-mcp, playwright-mcp)
md-frontmatterMarkdown frontmatter parser
ppt-agentPowerPoint generation agent

4. Installation & Deployment

Prerequisites

Rust toolchain (see rust-toolchain.toml), just for recipes, Node.js for the web frontend.

Local

# Agent server (standalone data-plane)
cp configs/vol-agent-server.env.example .env
source .env
cargo run -p vol-agent-server
# Per-mode configs: configs/vol-agent-server.{data-plane,control-plane}.toml# Web frontend (React, 2 terminals)
just web-backend # agent server on :3001 (cargo-watch)
just web-dev # Vite dev server on :5173 (WS proxy to :3001)

Docker

just docker-agent # or:
docker build -f dockers/vol-agent-server.Dockerfile -t vol-agent-server .
docker build -f dockers/vol-agent-server.alpine.Dockerfile -t vol-agent-server:alpine .

Kubernetes

# ArgoCD GitOps (primary)
kubectl apply -f deploy/argocd/root.yaml
# Kustomize (alternative)
kubectl apply -k deploy/kustomize/overlays/control-plane
kubectl apply -k deploy/kustomize/overlays/data-plane
# Post-deploy verification
./scripts/smoke-test.sh --all

Runtime config changes are synced to ConfigMaps with python3 scripts/sync-configmaps.py. See [[docs/wiki/concepts/argocd-app-of-apps-gitops]].

5. AI-Driven Development Workflow

This project uses Superpowers skills for structured development:

clarifying-requirements ──► brainstorming ──► writing-architecture
(需求澄清) (方案脑暴) (架构设计)
writing-architecture ──► writing-plans ──► subagent-driven-development
(架构设计) (实现计划) (按 task 派发 subagent)
PhaseOutputLocation
RequirementRequirement docdocs/superpowers/requirement/
ArchitectureDesign docdocs/superpowers/architectures/
SpecAddendum / detailed specdocs/superpowers/specs/
PlanTask-level implementation plandocs/superpowers/plans/
WikiCompiled knowledge basedocs/wiki/

Task Completion Checklist

  1. just test-crate <affected-crate> — all tests pass
  2. just cover-gate <affected-crate> 80 — coverage gate
  3. ./scripts/check-agent-boundaries.sh — dependency direction
  4. just fmt-check && just clippy-strict — formatting & lint
  5. wiki-ingest — ingest changes into docs/wiki
  6. (If UI affected) just fe-test + just fe-e2e — frontend test tiers

6. Core Tools & Commands

All recipes run via just (just help for the full list).

AreaCommands
Build & checkjust check, just clippy, just clippy-strict, just fmt, just fmt-check
Testsjust test-unit, just test-integration, just test-crate <crate>, just test-e2e, just test-tools, just test-sandbox
Coveragejust cover <crate>, just cover-gate <crate> 80, just cover-html <crate>, just cover-tools
Guardsjust boundaries, just no-doc-tests, just no-clippy-allow, just audit
Webjust web-dev, just web-backend, just web-build, just web-serve
Frontend testsjust fe-test (fe-test-unit / fe-test-integration), just fe-e2e, just fe-lint, just fe-type
Dockerjust docker-agent

Model Service

Endpointhttp://192.168.2.162:31693
Modelsgpt5.5, coding, qwen3.6-plus, glm5.1

Provider config lives in .agents/providers/*.toml and is auto-discovered.


Documentation

PathTopic
CLAUDE.mdAI agent quick reference (conventions, guardrails, commands)
docs/CONFIGURATION.mdFull configuration guide (TOML sections, env vars, K8s)
docs/wiki/index.mdWiki index — entities, concepts, sources, full search
docs/superpowers/Requirement / architecture / spec / plan documents

About

vol agent system

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages