Daeva

Polar Sponsor
爱发电 赞助
.NET 9.0

当用户需要与本地或远程GPU pod交互进行AI推理任务时使用此技能,包括音频转录(Whisper/语音转...)

Daeva — GPU Pod Orchestrator.

功能概述

Daeva — GPU Pod Orchestrator.是一项面向实际任务的技能,主要用于Daeva通过一个 REST API 和可选的 MCP 服务器将AI 推断函数( translaction, 图像生成, OCR, 视觉) 传送到GPU 支持的 pock;它处理 pock 生命周期。

核心要点

  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;

结果检查与注意事项

涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

Daeva — GPU Pod 编排器

Daeva 通过 REST API(以及可选的 MCP 服务器)将 AI 推理任务(语音转文字、图像生成、OCR、视觉分析)路由至由 GPU 支持的 Pod。它负责管理 Pod 的生命周期、独占组(自动解决 GPU 资源争用),以及可移植的 Pod 包。Daeva 可运行在与 Agent 相同的机器上,也可运行在远程主机上——默认为 localhost,但该值仅作为回退方案。

解析 Daeva 基础 URL

Daeva 可本地运行,也可运行于远程主机。请按以下顺序解析基础 URL:

  1. 检查环境变量。 若设置了 DAEVA_URL,则直接将其作为完整的基础 URL(例如:http://server.local:8787)。若仅设置了 DAEVA_PORT,则使用 http://127.0.0.1:$DAEVA_PORT。
  2. 尝试默认值。 若未设置任一环境变量,则使用 http://127.0.0.1:8787。
  3. 通过健康检查验证。 向已解析的 URL 的 /health 端点发起请求。若返回 {"ok":true},即可继续。
  4. 若健康检查失败且未设置任何环境变量,则必须向用户询问 Daeva 的实际部署地址,之后再继续操作。不得盲目猜测或重试。
# 从环境变量解析基础 URL,未设置时回退至 localhost 默认值
DAEVA_BASE="${DAEVA_URL:-http://127.0.0.1:${DAEVA_PORT:-8787}}"

# 验证服务可达性
curl -sf "$DAEVA_BASE/health"
# 预期响应:{"ok":true}

若服务运行在本地但当前未启动,请启动它:

# 前台运行
daeva
# 或:PORT=8787 node dist/src/cli.js

# systemd(用户级)
systemctl --user start daeva

下方所有端点均以 $DAEVA_BASE 为基础 URL。在构造 curl 命令、MCP 配置或下游技能(skill)的 URL 时,务必代入已解析的实际值——除非 Agent 确实与 Daeva 运行在同一台主机上,否则切勿硬编码 127.0.0.1。

重要:行为规范

Daeva 是一项共享服务。 它并非按用户或按会话隔离。多个 Agent 和用户可能共用同一个 Daeva 实例。请将其视为共享基础设施——不要对当前正在运行的内容或其原因做出任何假设。

请使用生命周期端点管理 Pod。 如需唤醒、切换或停止 Pod,请使用专用的生命周期端点(/pods/:podId/activate、/pods/:podId/stop、/pods/swap)。切勿提交虚假或一次性任务来强制触发 Pod 切换——这会污染任务队列,并可能在共享服务上引发非预期的副作用。

工作负载流量必须经由 Daeva 的代理转发,而非直连容器端口。 当 Daeva 已安装时,下游技能(如 ComfyUI 技能)和客户端(如 Whisper 客户端)应将请求发送至 Daeva 代理地址 $DAEVA_BASE/proxy/,而非直接访问 Pod 的容器端口。例如,若 ComfyUI 由 Daeva 托管,则 ComfyUI 技能应调用 $DAEVA_BASE/proxy/comfyapi,而非 http://localhost:8188。此举确保 Daeva 能够透明地处理 Pod 激活、独占组切换及请求路由。仅当确认 Daeva 并未托管该 Pod 时,才可绕过代理。

能力与任务类型

能力(Capability) 任务类型(Job Type) 必需输入(Required Input)
speech-to-text transcribe-audio filePath 或 url + contentType
image-generation generate-image prompt
ocr extract-text filePath 或 url
vision describe-image filePath 或 url

内置 Pod

Pod ID 支持的能力(Capabilities) 描述(Description)
comfyapi image-generation, vision ComfyUI/comfyapi 后端
whisper speech-to-text Whisper 语音转文字
ocr-vision ocr, vision OCR 与视觉分析

提交任务

向 /jobs 端点以 JSON 格式 POST 请求,需包含 type 字段,以及 files(或旧版 input)字段:

# 语音转文字
curl -s -X POST $DAEVA_BASE/jobs 
  -H 'Content-Type: application/json' 
  -d '{"type":"transcribe-audio","files":[{"source":"path","path":"/tmp/audio.wav"}]}'

# 图像生成
curl -s -X POST $DAEVA_BASE/jobs 
  -H 'Content-Type: application/json' 
  -d '{"type":"generate-image","capability":"image-generation","input":{"prompt":"a red fox on a snowy mountain"}}'

# OCR
curl -s -X POST $DAEVA_BASE/jobs 
  -H 'Content-Type: application/json' 
  -d '{"type":"extract-text","capability":"ocr","input":{"filePath":"/tmp/document.png"}}'

提交后,轮询任务状态并获取结果:

curl -s $DAEVA_BASE/jobs/          # 任务状态
curl -s $DAEVA_BASE/jobs//result    # 任务完成后的结果
curl -s $DAEVA_BASE/jobs                     # 列出全部任务

Pod 管理

这些端点用于控制完整的 Pod 生命周期——包括注册新 Pod、安装 Pod 包,以及管理运行时状态。

# 列出所有已注册的 Pod 及其运行时状态
curl -s $DAEVA_BASE/pods

# 依据清单(manifest)注册新 Pod
curl -s -X POST $DAEVA_BASE/pods/register 
  -H 'Content-Type: application/json' 
  -d '{ ... pod manifest JSON ... }'

# 依据别名(alias)安装 Pod 包(例如 "whisper")
curl -s -X POST $DAEVA_BASE/pods/create 
  -H 'Content-Type: application/json' 
  -d '{"alias":"whisper"}'

# 列出注册中心中所有可用别名
curl -s $DAEVA_BASE/pods/aliases

# 列出已安装的包
curl -s $DAEVA_BASE/pods/installed

# 激活(启动)指定 Pod
curl -s -X POST $DAEVA_BASE/pods//activate

# 停止指定 Pod
curl -s -X POST $DAEVA_BASE/pods//stop

# 切换至另一 Pod(自动处理独占组冲突)
curl -s -X POST $DAEVA_BASE/pods/swap 
  -H 'Content-Type: application/json' 
  -d '{"podId":"comfyapi"}'

独占组(Exclusivity groups): 当两个 Pod 共享同一块 GPU 且无法同时运行时,Daeva 在执行 Pod 切换或提交需使用不同 Pod 的任务时,会自动停止当前 Pod 并启动目标 Pod。

Pod 包来源

Pod 包可从多种来源安装:

  • local-file —— 本地目录,其中包含 pod-package.json
  • github-repo —— 格式为 owner/repo 的 GitHub 仓库,支持可选的 ref 和子路径
  • git-repo —— 任意 Git URL
  • uploaded-archive —— 直接上传的 .tar.gz 或 .zip 归档文件
  • registry-index —— 由注册中心目录委托查询

安装过程中,Daeva 将执行包内定义的安装钩子(install hooks),创建声明的宿主机目录,并持久化已解析的宿主机路径模板变量(例如 MODELS_DIR、INPUT_DIR)。

可观测性(Observability)

提供细粒度的状态端点,便于调试与监控:

# 全量聚合状态快照
curl -s $DAEVA_BASE/status

# Pod 运行时状态 + 容器级检查
curl -s $DAEVA_BASE/status/runtime

# 已安装包 + 注册中心状态
curl -s $DAEVA_BASE/status/packages

# 队列深度 + 独占组信息
curl -s $DAEVA_BASE/status/scheduler

# 最近任务历史
curl -s $DAEVA_BASE/status/jobs/recent

当某个 Pod 表现异常(如卡住)时,请使用 /status/runtime —— 它包含容器级别的详细信息。当需要诊断任务为何长期处于排队状态时(常见原因为独占组冲突),请使用 /status/scheduler。

完整 API 参考文档

核心端点(Core Endpoints)

方法(Method) 路径(Path) 用途(Purpose)
GET /health 存活性检查(Liveness check)
GET /pods 列出所有 Pod 及其运行时状态
POST /pods/register 注册新的 Pod 清单(manifest)
POST /pods/create 依据别名安装 Pod 包
GET /pods/aliases 列出注册中心中的别名
GET /pods/installed 列出已安装的包
POST /pods/:podId/activate 启动或激活指定 Pod
POST /pods/:podId/stop 停止指定 Pod
POST /pods/swap 切换至目标 Pod(服务端执行)
ALL /proxy/:podId/* 将请求代理至指定 Pod 的后端服务
POST /jobs 提交异步任务
GET /jobs 列出所有任务
GET /jobs/:id 获取指定任务的状态
GET /jobs/:id/result 获取指定任务的结果

可观测性端点(Observability Endpoints)

方法(Method) 路径(Path) 用途(Purpose)
GET /status 全量聚合状态快照
GET /status/runtime Pod 运行时状态 + 容器级检查
GET /status/packages 已安装包 + 注册中心状态
GET /status/scheduler 队列深度 + 独占组信息
GET /status/jobs/recent 最近任务历史

MCP 服务器配置

Daeva 自带一个 MCP stdio 服务器。其 --base-url 参数必须指向实际解析得到的 Daeva URL —— 请使用 $DAEVA_BASE,而非硬编码的 localhost 地址(除非 Daeva 确实与运行 MCP 客户端的主机位于同一台机器上)。

{
  "mcpServers": {
    "daeva": {
      "command": "daeva-mcp",
      "args": ["--base-url", "http://server.local:8787"]
    }
  }
}

请将 http://server.local:8787 替换为您环境中实际的 $DAEVA_BASE 值。配置好 MCP 服务器后,建议优先使用 MCP 工具,而非原始的 curl 命令。

故障排查(Troubleshooting)

  • /health 返回连接被拒绝(Connection refused) —— 服务未运行。请使用 daeva 或 systemctl --user start daeva 启动服务。
  • 任务长时间处于 queued 状态 —— 可能是未注册支持该能力的 Pod,或存在独占组冲突阻塞了任务。请检查 /pods 和 /status/scheduler。
  • Pod 无法启动 —— 请检查 /status/runtime 中的容器级错误信息。
  • 返回 404 alias not found —— 该别名在注册中心中不存在。请通过 /pods/aliases 查看有效选项。
  • 包安装失败 —— 请确认来源(本地路径、Git URL、归档文件)可访问。可通过 /status/packages 查看安装状态。

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习