Skip to content

引擎开发指南

权限等级与工具类别的组合决定执行策略(auto / confirm / deny):

readwritesystemfinance
safeconfirmconfirmconfirmconfirm
autoautoautoconfirmconfirm
full-accessautoautoautoauto
  • auto:直接执行,无需确认
  • confirm:暂停执行,等待用户在聊天界面点击确认或拒绝
  • deny:拒绝执行(保留策略,当前未启用)

当策略为 confirm 时,引擎通过 SSE 事件向前端发送确认请求,用户可在聊天界面中看到权限确认卡片,点击”允许”或”拒绝”。超时 30 秒未响应将自动拒绝。

用户发送消息 → LLM 决策调用工具 → 查询策略矩阵
→ auto: 直接执行
→ confirm: 发送 SSE 事件 → 前端弹出确认卡片 → 用户决策 → 执行或跳过

确认流程采用 Promise 阻塞模式:引擎发送 SSE permission_request 事件后挂起工具执行,前端渲染确认卡片,用户决策通过 HTTP API 回传,解除 Promise 阻塞继续执行。整个链路支持 AbortSignal 取消和超时保护。

权限控制基于策略矩阵(Policy Matrix)设计。每个工具在 ToolRegistry 中注册时声明类别,运行时引擎根据当前权限等级和工具类别查询策略矩阵,决定自动执行、请求确认或拒绝。

Claude 聊天 API 支持两个技能相关参数:

{
skills?: string[];
explicitSkill?: string;
}
  • skills:会话级启用技能 slug 列表,用于过滤全局启用技能。
  • explicitSkill:下一条消息优先使用的技能 slug,由 / 命令或技能面板 Sparkles 按钮产生。

普通技能会进入稳定的 system prompt;explicitSkill 会转换成 explicitSkillDirective,注入到用户 prompt,而不是 system prompt,以保留 prompt cache。两者同时存在时,显式技能优先,并会从普通技能列表中去重。

支持多种文件类型作为上下文:

files: [
{
name: "report.pdf",
data: fileBuffer,
type: "application/pdf"
},
{
name: "chart.png",
data: imageBuffer,
type: "image/png"
}
]
模式说明
code自主编码模式,自动执行工具
plan规划模式,先制定计划再执行
ask询问模式,每个操作需确认

DeepAgents 针对投资顾问场景优化,内置专用工具:

// 工具示例
stockSearchNewsTool // 股票新闻搜索
stockGetPriceTool // 获取股票价格
stockRecallMarketInfo // 市场信息召回
stockRecallCompanyInfo // 公司信息召回
noteQueryTool // 投资笔记查询
TravilySearchTool // 网络搜索

Hermes 聊天 API 也接收 skillsexplicitSkill。与 Claude 不同,Hermes 会把技能注册为工具:

registerSkillTools(registry, {
enabledSlugs: [...skills, explicitSkill],
});

Agent 会先通过 skills_list 浏览可用技能,再按需调用 skill_view 读取完整技能内容。若 explicitSkill 不在 skills 中,引擎会临时追加它,确保单次指定技能可用。

// 默认引擎配置
{
"defaultEngine": "hermes"
}
// 运行时切换引擎
const response = await agent.execute({
engine: "claude",
model: "claude-3-5-sonnet-latest",
messages: [...]
});
// DeepAgents 投资顾问
const advisor = await investmentAdvisorAgent.chat({
messages: [...],
accountId: "user_123",
model: "gpt-4-turbo"
});