跳转到主要内容

Documentation Index

Fetch the complete documentation index at: https://docs.profy.cn/llms.txt

Use this file to discover all available pages before exploring further.

Agent 平台(Expert + Agent Runtime)

Expert(AI 专家产品) 的对话与工具执行由 Agent Runtimeservices/agent-runtime)承载,运行在 声明式 Sandbox(E2B 或 Docker) 中。每个 Expert 对应隔离的文件系统与运行环境,通过 SSE 协议实现实时流式对话。

概述

运行时架构

层级说明
Core APIExpert / Sandbox 生命周期编排、鉴权、计费、prepare-invoke 等业务真源
Agent Runtimeservices/agent-runtime,在 Sandbox 内执行模型对话、工具与文件访问
Web 经 SSE 代理将对话请求转发到已由 Core 准备好的 Sandbox 端点;编排细节见 系统架构 — Expert 沙箱与 agent-runtime

Expert / Sandbox 生命周期

状态

状态标识说明
创建中provisioningSandbox 正在分配和启动
运行中runningExpert 就绪,可接受对话
已停止stoppedSandbox 已释放;元数据与配置保留以便快速恢复
异常errorSandbox 或 Agent Runtime 不可达;恢复后可自动转为 running

停止与删除的区别

操作Sandbox 行为DNS / 路由恢复速度
停止暂停或销毁沙箱计算资源,编排元数据保留对外入口由 Core/Web 统一维护时可保持路由稳定通常秒级(重新 provision)
删除元数据与工作区持久化按策略清理关联 URL 失效按产品策略可能不可恢复
设计决策:停止优先于「硬删路由对象」,避免反向代理 DNS 缓存 NXDOMAIN 导致的短时 404。旧 Kubernetes 方案中删除 Service 后 resolver 缓存曾造成唤醒窗口内无法路由,已在 Compose + 声明式 Sandbox 模型下由编排层显式管理。

Error 状态自动恢复

error 不是死胡同。checkInstanceHealth(或等价健康任务)在轮询时检测 Sandbox 与 Agent Runtime:
  • Sandbox 运行中 + Agent Runtime HTTP 可达 → 自动恢复为 running
  • Sandbox 仍在重启/崩溃循环 → 保持 error,等下次检查
  • Sandbox 已终结(失败 / 不存在)→ 保持 error,用户需手动重启
Health 路径对 error 状态的实例不应误触发「强制停止」,以免打断编排侧正在进行的自动恢复。

进入聊天的就绪门禁

前端在进入对话界面前,依次等待 3 个真实信号:
Sandbox 就绪 → Agent Runtime 可达 → 技能加载完成 → 文件列表预取 → 进入聊天
              ↓                      ↓                 ↓
         gatewayReady           skillsReady       filesLoaded → setView("chat")
步骤信号来源含义
1. 启动服务gatewayReadyHealth APISandbox 运行中 + Agent Runtime HTTP 可达
2. 装载技能skillsReadyHealth APIconfig 中的 URL 技能全部安装到 workspace/skills/
3. 准备工作区filesLoaded前端本地loadInstanceFiles 完成,文件列表已预取
用户在启动界面能看到每一步的真实进度和对勾。3 步全部完成后短暂展示全部对勾,再切入聊天。 所有入口统一走加载页:即使是已 running 的 Expert(如页面刷新、从列表重新进入),也会先显示加载页并执行 3 步就绪检查,确保文件列表在进入对话前就已就绪。对于已运行的实例,步骤 1-2 会在首次 health poll 时秒过。

前端文件状态管理

每个 Expert 通常映射一个主会话工作区。sandboxFiles(Sandbox 文件列表)是实例级状态,不随 session 生命周期重置:
概念级别说明
sandboxFilesExpert / 实例级Sandbox 文件系统列表,由 loadInstanceFiles 填充
trajectoryDataSession 级对话轨迹(tool calls、todos 等)
dbEventsSession 级持久化的对话事件,用于刷新后回放
switchToSession 在创建新 session 快照时,会保留当前 sandboxFiles,避免因 session 初始化而清空已加载的 Sandbox 文件。
历史 BugswitchToSession 曾用 initialWorkspaceSnapshotsandboxFiles: [])创建 fresh session,导致 loadInstanceFiles 加载的文件在 setView("chat") 触发 session 恢复时被清空——表现为文件「闪一下然后消失」。

Expert / 实例管理接口

以下 HTTP 路径沿用历史兼容前缀 /api/claw/*(实现上对应 Expert 与 Sandbox 编排):
方法路径说明
POST/api/claw/instances创建 Expert / Sandbox
GET/api/claw/instances列出用户的实例
GET/api/claw/instances/:id实例详情
PATCH/api/claw/instances/:id重命名实例
DELETE/api/claw/instances/:id删除实例(?permanent=true 永久删除)
POST/api/claw/instances/:id/restart重启实例
POST/api/claw/instances/:id/stop停止实例

SSE 实时流式交互

Agent 平台的核心交互基于 Server-Sent Events(SSE)协议,前端通过 POST /api/claw/chat 发送消息并接收实时流式响应。

SSE 事件流

SSE 事件类型

事件说明
textAI 文本输出片段,增量渲染
tool_call_chunk工具调用信息(函数名、参数、结果)
complete对话回合完成
error错误信息

消息处理架构

前端通过模块化的 Message Handler 处理不同事件类型:
apps/web/src/lib/message-handlers/
├── stream-processor.ts    # SSE 流解析和分发
├── tool-call-handler.ts   # 工具调用渲染
├── text-handler.ts        # 文本片段拼接
├── error-handler.ts       # 错误处理
└── complete-handler.ts    # 完成回调

Sandbox 与 Agent Runtime 访问

路由与端口

每个 Expert / Sandbox 分配由 Core 编排解析得到的运行时 URL(历史上常称 containerUrl)。Next.js 代理根据编排结果访问 Sandbox 内的 Agent Runtime,无需自建 Kubernetes Ingress。
端口用途访问方式
18789Agent Runtime HTTP(API + SSE)编排返回的默认入口
3000Web 预览(开发服务器)runtimeUrl:3000(视模板而定)
3001备用预览端口视模板而定
6080noVNC 浏览器访问视模板而定

实例配置

接口说明
GET /api/claw/instances/:id/config读取 Agent Runtime / 工作区配置
PATCH /api/claw/instances/:id/config更新配置(?apply=true 立即生效)
GET /api/claw/instances/:id/config-drift检测配置漂移

文件与预览

接口说明
GET /api/claw/files列出/读取/导出 Sandbox 工作区文件
POST /api/claw/files上传文件到 Sandbox
GET /api/claw/preview/:instanceId代理到 Sandbox 内的 Web 服务
GET /api/claw/novncnoVNC 桌面预览代理

技能系统

Expert 支持在 Sandbox 内安装和管理技能(Skill),扩展 Agent 能力:
方法路径说明
GET/api/claw/instances/:id/skills实例已安装的技能
GET/api/claw/skills技能注册表
PATCH/api/claw/skills启用/禁用技能
技能市场通过 SkillMarketDialog 组件提供可视化的技能发现与安装体验。

金币与服务计划

Expert / Sandbox 的运行消耗金币,计费规则由服务计划(Service Plan)定义。
接口说明
GET /api/claw/credits查询余额(代理到 Core)
GET /api/claw/service-plans服务计划列表(代理到 Core)
GET /api/claw/credits/transactions消费记录

Auth 桥接

Expert 对话与 Portal 共享用户体系。Web 端相关路由通过以下机制桥接认证:
  • proxy.ts 保护需登录的页面路由,无 Token 重定向登录
  • getAuthUserId() 为上述 API 路由提供用户身份
  • Token 在代理转发时自动注入到上游请求

健康检查与清理

接口说明
GET /api/claw/health实例健康状态(含 gatewayReady + skillsReady
POST /api/claw/health超时实例清理 + error 状态自动恢复检测
POST /api/claw/admin/cleanup管理员清理孤立实例
Health API 返回字段(名称可能随版本演进,以 OpenAPI/实现为准):
字段类型说明
healthybooleanSandbox / 进程是否存活
gatewayReadybooleanAgent Runtime HTTP 端口可达
skillsReadyboolean所有 URL 技能已安装到 workspace/skills/
podStatusstring历史字段名;语义上表示编排状态如 running / starting
uptimenumber实例运行秒数

相关链接

系统架构

Expert 与 Agent Runtime 在整体架构中的位置

金融支付

Expert / Sandbox 的金币计费

应用市场

技能市场与应用发现

部署指南

Docker Compose 与可选 E2B Sandbox