Other

项目介绍

awakenworks/awaken 是一个托管在 GitHub 上的开源项目,主要使用 Rust 编写,采用 Other 许可证,目前获得 100 个 Star、10 次 Fork。

仓库全名
awakenworks/awaken
开源许可证
Other
Star 数
100
Fork 数
10
未关闭 Issue
75

README 摘要

Awaken English | 中文 Build agent capability in Rust. Tune prompts, models, permissions, skills, and eval loops live. Serve AI SDK, AG-UI, A2A, MCP, and ACP clients from one runtime without turning each agent into a fragile script. Docs: Awaken docs · 中文文档 · Changelog. MSRV: Rust 1.93. The published crate is awaken; awaken-agent is a compatibility republish from when the project shipped under that name. Real Gemini in…

完整内容见 GitHub 原始 README 或本页 。

常见问题

awaken 用什么语言开发?

主要使用 Rust 编写,采用 Other 许可证,目前有 100 个 Star。

awaken 可以免费商用吗?

仓库标注的许可证为 Other,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 awaken 的源码?

可以直接克隆仓库:git clone https://github.com/awakenworks/awaken.git,默认分支为 main;安装与运行步骤见仓库 README。

awaken 最近还在维护吗?

仓库最近一次更新为 9月4日,当前有 75 个未关闭 Issue;Star 数为 100,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

AI agent runtime for Rust — type-safe state, multi-protocol serving, plugin extensibility.

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

语言占比

Astro
C#
CSS
Go
HTML
JavaScript
MDX
Python
Rust
Shell
TypeScript

Release

README

Awaken

English | 中文

CI crates.io awaken crates.io awaken-agent Changelog License MSRV

Build agent capability in Rust. Tune prompts, models, permissions, skills, and eval loops live. Serve AI SDK, AG-UI, A2A, MCP, and ACP clients from one runtime without turning each agent into a fragile script.

Docs: Awaken docs · 中文文档 · Changelog. MSRV: Rust 1.93. The published crate is awaken; awaken-agent is a compatibility republish from when the project shipped under that name.

Awaken admin console — connect Gemini, build an agent with the AI assistant, then test it live in the sandbox
Real Gemini in the Admin Console: connect a model, describe an agent, tune it, and run a live eval.

30-second version

Start the local server and Admin Console:

AWAKEN_HTTP_ADDR=127.0.0.1:38080 \
AWAKEN_ADMIN_API_BEARER_TOKEN=dev-token \
AWAKEN_STORAGE_DIR=./target/awaken-dev \
cargo run -p ai-sdk-starter-agent

pnpm --filter awaken-admin-console dev

Open http://127.0.0.1:3002, paste dev-token, configure a provider-backed model, then create or tune an agent. Without an API key, the starter backend uses a deterministic scripted executor so you can verify the server routes and console first.

The tune-first loop is:

Validate draft -> Preview chat -> Save snapshot -> Run task -> Inspect trace -> Capture dataset/eval -> Adjust

Why Awaken

  • Code stays stable. Tools, typed state, providers, stores, and plugins live in Rust.
  • Behavior tunes live. Prompts, model bindings, tool descriptions, permission rules, reminders, skills, delegates, and plugin sections change through managed config.
  • One backend serves many clients. AI SDK v6, AG-UI / CopilotKit, A2A, MCP, and ACP are adapters over the same runtime event stream and run model.
  • Runs are operational objects. Durable dispatch, HITL mailbox suspension, cancellation, trace capture, replay, datasets, eval runs, and audit restore are runtime/server contracts.
  • State and tools are typed. StateKey, generated JSON Schema for TypedTool, pure tool gating, and atomic commits make concurrent tool work auditable.

Tune-first workflow

Awaken treats agent behavior as managed resources, not scattered code edits. Server config writes are validated, published as registry snapshots, and auditable when stores are wired.

Tune online Managed by Awaken
Prompts, model bindings, reasoning effort, stop policies Validate, preview, save, publish next-run registry snapshots
Tool descriptions, allow/exclude rules, permission gates, reminders Typed schemas, policy validation, HITL suspension/resume
Providers, models, model pools, MCP servers, skills Capability metadata, provider checks, failover pools, catalogs
Traces, datasets, eval runs, audit history Replayable records, baseline diffs, restorable config revisions

Tools are written once and stay stable. Models, agents, prompts, skills, delegates, and policy sections are tuned through /v1/config/* or the Admin Console — Validate → Save → preview-chat → adjust.

Choose your mode

Awaken separates the agent execution loop from the service control plane.

Mode Start with You own Awaken provides
Runtime library awaken / awaken-runtime HTTP/UI/job scheduling, auth, config storage, concrete tools/providers/stores Direct run APIs, streaming events, typed tools/state, cancellation, tool gating, HITL primitives
Server control plane awaken-server + awaken-stores Deployment, tenant/auth policy, registered tools/providers, store selection HTTP/SSE, AI SDK/AG-UI/A2A/MCP/ACP adapters, mailbox orchestration, /v1/config/*, registry snapshots, Admin Console

Runtime mode is in-process library use inside a standard async Rust program. It is not a no_std or Tokio-free embedded target. Server mode wraps the same runtime with protocols, durable dispatch, managed config, audit/restore, trace/eval storage, and the browser workflow.

Quickstart A: server + Admin Console

Use this path when you want the tuning workflow first.

AWAKEN_HTTP_ADDR=127.0.0.1:38080 \
AWAKEN_ADMIN_API_BEARER_TOKEN=dev-token \
AWAKEN_STORAGE_DIR=./target/awaken-dev \
cargo run -p ai-sdk-starter-agent

pnpm install
pnpm --filter awaken-admin-console dev

Open http://127.0.0.1:3002, click the token pill, and paste dev-token. Configure a provider/model, create an agent, preview it, then copy the AI SDK or AG-UI route from the saved agent page.

Useful docs:

Quickstart B: runtime library

Use this path when your Rust application owns the I/O boundary and calls the runtime directly.

Prerequisites: Rust 1.93+ and an OpenAI-compatible API key.

[dependencies]
awaken = { git = "https://github.com/AwakenWorks/awaken" }
tokio = { version = "1", features = ["full"] }
async-trait = "0.1"
serde_json = "1"

These snippets follow the current main-branch API. Use the 0.5 to 0.6 migration guide when upgrading from the published 0.5 line.

export OPENAI_API_KEY=<your-key>

src/main.rs:

use awaken::engine::GenaiExecutor;
use awaken::prelude::*;
use async_trait::async_trait;
use serde_json::json;
use std::sync::Arc;

struct EchoTool;

#[async_trait]
impl Tool for EchoTool {
    fn descriptor(&self) -> ToolDescriptor {
        ToolDescriptor::new("echo", "Echo", "Echo input back to the caller").with_parameters(json!({
            "type": "object",
            "properties": { "text": { "type": "string" } },
            "required": ["text"]
        }))
    }

    async fn execute(&self, args: JsonValue, _ctx: &ToolCallContext) -> Result<ToolOutput, ToolError> {
        let text = args["text"].as_str().unwrap_or_default();
        Ok(ToolResult::success("echo", json!({ "echoed": text })).into())
    }
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let runtime = AgentRuntimeBuilder::new()
        .with_agent_spec(
            AgentSpec::new("assistant")
                .with_model_id("gpt-4o-mini")
                .with_system_prompt("You are helpful. Use the echo tool when asked.")
                .with_max_rounds(5),
        )
        .with_tool("echo", Arc::new(EchoTool))
        .with_provider("openai", Arc::new(GenaiExecutor::new()))
        .with_model(ModelSpec::new("gpt-4o-mini", "openai", "gpt-4o-mini"))
        .build()?;

    let request = RunActivation::new("thread-1", vec![Message::user("Say hello using the echo tool")])
        .with_agent_id("assistant");

    let result = runtime.run_to_completion(request).await?;
    println!("{}", result.response);
    Ok(())
}

Use runtime.run(request, sink) instead of run_to_completion when you need to stream events to SSE, WebSocket, protocol adapters, or tests. For a longer example, see crates/awaken/examples/multi_turn.rs.

The quickstart path is covered without network access:

cargo test -p awaken --test readme_quickstart        # offline scripted provider
OPENAI_API_KEY=<key> cargo test -p awaken --test readme_live_provider -- --ignored  # live provider

Protocols

Protocol Route / transport Typical client
AI SDK v6 POST /v1/ai-sdk/chat React useChat()
AG-UI POST /v1/ag-ui/run CopilotKit <CopilotKit>
A2A POST /v1/a2a/message:send Other agents
MCP POST /v1/mcp JSON-RPC 2.0 clients
ACP stdio via serve_stdio Agent Client Protocol hosts

Frontend guides: AI SDK · CopilotKit / AG-UI · HTTP SSE.

Extensions

The facade full feature pulls in the plugins below. Use default-features = false to opt out. awaken-ext-deferred-tools is a companion crate and is added as a direct dependency.

Extension What it does Feature / crate
Permission Allow/Deny/Ask rules on tool name and arguments; Ask suspends via mailbox for HITL. permission
Reminder Injects context messages when a tool call matches a configured pattern. reminder
Observability OpenTelemetry traces and metrics aligned with GenAI Semantic Conventions. observability
MCP Connects to external MCP servers and registers their tools as native Awaken tools. mcp
Skills Discovers skill packages and injects a catalog before inference. skills
Generative UI Streams declarative UI components via A2UI, JSON Render, and OpenUI Lang. generative-ui
Deferred Tools Hides large tool schemas behind ToolSearch and re-defers idle tools. awaken-ext-deferred-tools

Write your own with ToolGateHook or BeforeToolExecute — same trait signatures the built-ins use.

Architecture

Awaken demo — managed agent run with tool calls, approval, and trace

awaken                   Facade crate with feature flags
├─ awaken-runtime-contract Runtime contracts: specs, tools, events, state, commit coordinator
├─ awaken-server-contract  Server/store contracts: queries, scoped stores, mailbox/outbox, staged commits
├─ awaken-runtime        Resolver, phase engine, loop runner, runtime control
├─ awaken-server         HTTP routes, SSE replay, mailbox dispatch, protocol adapters
├─ awaken-stores         Thread + run + config + mailbox + profile stores
├─ awaken-tool-pattern   Glob/regex matching used by extensions
└─ awaken-ext-*          Optional extensions and companion plugins

For details, start with Architecture and Run Lifecycle and Phases.

When this fits

  • You want a Rust backend for AI agents with compile-time guarantees.
  • You need to serve AI SDK, CopilotKit, A2A, MCP, and/or ACP from a single backend.
  • Tools need to share state safely during concurrent execution, and runs need auditable history with checkpoints and resume.
  • Operators need to tune prompts, models, permissions, skills, traces, datasets, and evals without changing code.

When it does not

  • You need built-in file/shell/web tools out of the box — consider OpenAI Agents SDK, Dify, or CrewAI.
  • You want a visual workflow builder — consider Dify or LangGraph Studio.
  • You want Python and rapid prototyping — consider LangGraph, AG2, or PydanticAI.
  • You need an LLM-managed memory subsystem where the agent decides what to remember — consider Letta.

Examples and learning paths

Goal Start with Then
Build your first agent Get Started Build Agents
Tune a saved agent Use the Admin Console Configure Agent Behavior
See a full-stack app AI SDK starter CopilotKit starter
Explore the API Reference docs cargo doc --workspace --no-deps --open
Understand the runtime Architecture Run Lifecycle and Phases

Examples:

Example What it shows
live_test Basic LLM integration
multi_turn Multi-turn with persistent threads
tool_call_live Tool calling with calculator
ai-sdk-starter React + AI SDK v6 full-stack
copilotkit-starter Next.js + CopilotKit full-stack
openui-chat OpenUI Lang chat frontend
admin-console Config API management UI

Contributing

Setup in CONTRIBUTING.md and DEVELOPMENT.md. Good first issues is the entry-point label. Conversation: GitHub Discussions.

Acknowledgement

The awaken crate name on crates.io was transferred from @brayniac, who maintained an earlier crate under the same name. Versions 0.1–0.3 of awaken on crates.io belong to that earlier project; this codebase resumes the line that previously shipped as awaken-agent 0.2.x and starts at 0.4.0 to skip past those versions. Thank you.

License

Dual-licensed under MIT or Apache-2.0.

评论

暂无评论