跳转到内容

开发 Agent 路径

这条路径对应 Awaken 的开发侧:实现 runtime 可以安全执行的能力。代码聚焦 tool、 plugin、state、provider、store 和明确执行边界。后续应由运营者调整的行为放进 托管配置,再进入 调优与运营 使用浏览器和 REST 工作流。

Build Agents 先说明为什么某项能力应该写进代码,再把可运营调优的部分交给 配置。这样能把高成本、强安全边界的决策留在经过 review 的 Rust 中,同时让运营者 后续清楚地调 prompt、tool、permission 和 governance。

Build Agents 是进入在线运营前的完整开发路径:

  1. 构建 Agent —— 先让 runtime 可执行。
  2. 状态与存储 —— 决定 agent 记住什么、恢复什么、共享什么、持久化什么。
  3. 服务与集成 —— 通过 server、protocol、mailbox、config 和 admin surfaces 暴露 runtime。
  4. 调优与运营 —— 在代码和存储边界安全后,再调整已保存的行为。

因此 state/storage 和 server integration 都是开发期事项,不是上线后的补救工作。 它们决定后续调优、trace、eval 和分布式 run 是否有可靠数据可用。

需求放在这里为什么这样更好
长时间运行且不应阻塞当前 turn 的工作后台任务或后台 agentrun 可以等待、恢复或接收 inbox 事件,不会把工作藏在不可追踪的线程里。
专家型子任务需要返回一个边界清晰的结果delegate 或 sub-agent tool父 agent 收到普通 tool result,可自行决定继续、重试或总结。
另一个 agent 应接管同一段对话Agent handoff在安全 step 边界切换 active agent,同时保留 thread history 和 state 连续性。
多个独立 agent 之间需要通信send_message / mailbox-backed 通信实时 child message 和持久跨 thread message 都有明确 receipt,不依赖临时共享内存。
子 agent 需要父侧 state类型化 StateKey seed/export 策略state 契约可见,持久 key 是显式选择,传递失败会暴露为错误。
thread、run、config 或 profile 需要持久化File/Postgres/NATS store 与 commit coordinator存储边界在开发期接好,后续运营调优才有可靠的 config、mailbox 和历史数据。
插件需要向模型注入上下文PhaseContext + StateCommand + AddContextMessagehook 只读 snapshot 并返回命令,runtime 统一节流、排序、注入和提交。

文档说明代码能力时,应尽量指向已经能编译或已被测试覆盖的示例:

能力开发面代码参考
Runtime 组装AgentRuntimeBuilder、provider、model、tool、commit coordinatorcrates/awaken-doctest/examples/http_app_builder.rscrates/awaken-runtime/src/builder.rs
自定义 providerLlmExecutorProviderExecutorFactoryModelPoolSpeccrates/awaken/tests/readme_quickstart.rscrates/awaken-server/tests/config_api.rs
Plugin 注入上下文PhaseHookPhaseContextStateCommandAddContextMessage、tool filtercrates/awaken-doctest/examples/plugin_registrar.rscrates/awaken-runtime/src/agent/state/loop_actions.rs
后台工作BackgroundTaskManagerBackgroundTaskPluginSendMessageToolCancelTaskToolcrates/awaken-runtime/tests/background_task_lifecycle.rscrates/awaken-runtime/src/extensions/background/
Sub-agent 作为工具run_child_agentChildAgentParamsBackendRunResult.state 导出crates/awaken-runtime/tests/child_agent_seed.rscrates/awaken-runtime/src/child_agent/mod.rs
Store 边界ThreadRunStoreConfigStoreProfileStoreMailboxStoreVersionedRegistryStorecrates/awaken-doctest/examples/thread_store_trait.rscrates/awaken-stores/tests/
MCP 集成McpToolRegistryManager、custom transport、sampling handlercrates/awaken-ext-mcp/tests/mcp_tests.rscrates/awaken-ext-mcp/src/transport.rs
Observability / EvalMetricsSinkTraceStoreRuntimeReplayerJudgeConfigcrates/awaken-ext-observability/tests/crates/awaken-eval/tests/eval_integration.rs

从任务出发,而不是先理解整个系统。找到与你下一步需求匹配的行;侧边栏里每条脊柱都自成一体。

我想要……去这里
让 runtime 可执行构建 Agent
添加一个模型可调用的 tool添加 Tool
从长时间运行的 tool 上报进度上报 Tool 进度
调用 MCP 或外部 tool server使用 MCP Tools
延迟加载 tool 以保持 prompt 精简使用延迟加载工具
让 tool 受控地运行一个子 agent在工具里调用 Sub-Agent
让 tool 启动超出当前 turn 的长时间工作从工具启动后台任务
从 plugin 注入模型上下文或过滤 tool添加 Plugin
在文本之外流式输出 UI 文档使用 Generative UI
决定 agent 记住、共享和持久化什么状态与存储
让一个 agent 接管当前对话使用 Agent Handoff
让独立 agent 之间通信或等待人工HITL 与 Mailbox
协调多个 agent多智能体模式
通过 HTTP 或协议暴露 runtime服务与集成
让 tool 经过人工审批才能执行启用工具权限 HITL(位于 调优与运营
代码安全后再调优已保存的行为通过配置调优 Agent 行为(位于 调优与运营