
一次对话回合如何流转
选择一个阶段,查看它做什么、如何配置以及写入什么。
Input
这一阶段发生什么
消息从聊天、Slack、API 或 MCP 客户端到达。原始文本成为 Conversation memory 中新一步的第一个条目。此时还没有 task 运行,所以这一阶段展示的是内存步骤,而不是审计条目。
仅为说明用的示例值
{
"key": "input",
"value": "What is the weather?"
}Parser
这一阶段发生什么
parser 对文本做规范化,并在智能体的词典中查找,把词和短语转换为 trigger(current_weather) 这样的语义表达式。这是查表而不是调用模型,所以相同的文本总是得到相同的表达式。
流水线中的每个 task 写入一条条目:HMAC 签名、仅追加、带序列检查。
仅为说明用的示例值
{
"words": [
{
"word": "weather",
"expressions": "trigger(current_weather)",
"frequency": 0
}
],
"phrases": [
{
"phrase": "what is the weather",
"expressions": "trigger(current_weather)"
}
]
}{
"id": "0b5e9a0c-6f3d-4b1e-9d57-2c1f8a7e4d10",
"conversationId": "6650f1c2a7b94e0012ab34cd",
"agentId": "support-agent",
"agentVersion": 1,
"userId": "user-4711",
"environment": "production",
"stepIndex": 0,
"taskId": "ai.labs.parser",
"taskType": "expressions",
"taskIndex": 0,
"durationMs": 3,
"input": {
"input": "What is the weather?"
},
"output": {
"expressions": [
"trigger(current_weather)"
]
},
"actions": [],
"cost": 0,
"timestamp": "2026-10-14T09:12:41.208Z",
"hmac": "v4:a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468",
"agentSignature": "MEUCIQDk3x…9fQ==",
"sequence": 0
}Behavior Rules
这一阶段发生什么
Behavior Rules 是针对表达式和 Conversation memory 的 IF-THEN 条件。每条匹配的规则都会发出动作。路由由配置而非代码决定,因此相同的输入每次都走相同的路径。
流水线中的每个 task 写入一条条目:HMAC 签名、仅追加、带序列检查。
仅为说明用的示例值
{
"behaviorGroups": [
{
"name": "",
"behaviorRules": [
{
"name": "Ask for City",
"actions": [
"ask_for_city"
],
"conditions": [
{
"type": "inputmatcher",
"configs": {
"expressions": "trigger(current_weather)"
},
"conditions": []
}
]
}
]
}
]
}{
"id": "0b5e9a0c-6f3d-4b1e-9d57-2c1f8a7e4d10",
"conversationId": "6650f1c2a7b94e0012ab34cd",
"agentId": "support-agent",
"agentVersion": 1,
"userId": "user-4711",
"environment": "production",
"stepIndex": 0,
"taskId": "ai.labs.behavior",
"taskType": "behavior_rules",
"taskIndex": 1,
"durationMs": 1,
"input": {
"expressions": [
"trigger(current_weather)"
]
},
"output": {
"behavior_rules:success": [
"Ask for City"
]
},
"actions": [
"ask_for_city"
],
"cost": 0,
"timestamp": "2026-10-14T09:12:41.208Z",
"hmac": "v4:a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468",
"agentSignature": "MEUCIQDk3x…9fQ==",
"sequence": 1
}Tasks
这一阶段发生什么
task 监听动作:LLM 调用、HTTP 调用、MCP 工具或知识库检索。每个 task 写入一条带签名的审计条目,记录它读取了什么、产出了什么,以及模型和工具的细节。
流水线中的每个 task 写入一条条目:HMAC 签名、仅追加、带序列检查。
仅为说明用的示例值
{
"tasks": [
{
"actions": [
"send_message"
],
"id": "simpleChat",
"type": "anthropic",
"description": "Answers weather questions",
"parameters": {
"apiKey": "${vault:anthropic-key}",
"modelName": "claude-sonnet-5-5",
"systemMessage": "You are a helpful assistant",
"addToOutput": "true"
}
}
]
}{
"id": "0b5e9a0c-6f3d-4b1e-9d57-2c1f8a7e4d10",
"conversationId": "6650f1c2a7b94e0012ab34cd",
"agentId": "support-agent",
"agentVersion": 1,
"userId": "user-4711",
"environment": "production",
"stepIndex": 0,
"taskId": "ai.labs.llm",
"taskType": "langchain",
"taskIndex": 2,
"durationMs": 1840,
"input": {
"input": "What is the weather in Vienna?",
"actions": [
"send_message"
]
},
"output": {
"text": "Vienna: 14 °C, light rain."
},
"llmDetail": {
"modelName": "claude-sonnet-5-5",
"inputTokens": 412,
"outputTokens": 18
},
"toolCalls": {
"name": "get_weather",
"args": {
"city": "Vienna"
},
"result": "14 °C, light rain"
},
"actions": [
"send_message"
],
"cost": 0.0016,
"timestamp": "2026-10-14T09:12:41.208Z",
"hmac": "v4:a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468",
"agentSignature": "MEUCIQDk3x…9fQ==",
"sequence": 2
}Output
这一阶段发生什么
Output 模板把发出的动作转换为回复:文本和快捷回复。回复保存到内存,并返回给消息来源的渠道。
仅为说明用的示例值
{
"outputSet": [
{
"action": "ask_for_city",
"timesOccurred": 0,
"outputs": [
{
"valueAlternatives": [
{
"type": "text",
"text": "Which city would you like to know the weather of?"
}
]
}
],
"quickReplies": []
}
]
}{
"key": "output",
"value": [
"Which city would you like to know the weather of?"
]
}Tool boundary
这一阶段发生什么
无论来源如何,每次工具调用都要经过同一道边界。匹配 toolApprovals 模式的调用会暂停,等待人工决定,决定会作为 hitl.approval 条目写入 ledger。凭据以 ${vault:keyName} 引用的形式从 vault 获取。
流水线中的每个 task 写入一条条目:HMAC 签名、仅追加、带序列检查。
仅为说明用的示例值
{
"hitlConfig": {
"toolApprovals": {
"requireApproval": [
"mcp:*",
"delete_*",
"transfer_funds"
],
"exempt": [
"mcp:read_*"
],
"approvalTimeout": "PT30M",
"timeoutPolicy": "AUTO_REJECT",
"pauseReason": "Approval required for {toolNames}"
}
}
}{
"id": "0b5e9a0c-6f3d-4b1e-9d57-2c1f8a7e4d10",
"conversationId": "6650f1c2a7b94e0012ab34cd",
"agentId": "support-agent",
"agentVersion": 1,
"userId": "user-4711",
"environment": "production",
"stepIndex": -1,
"taskId": "hitl.approval",
"taskType": "hitl",
"taskIndex": -1,
"durationMs": 0,
"input": {},
"output": {
"verdict": "APPROVED",
"decidedBy": "slack:U04EXAMPLE",
"automated": false,
"pauseType": "TOOL_CALL",
"toolDecisions": [
{
"callId": "call_01",
"toolName": "transfer_funds",
"verdict": "APPROVED",
"amended": false,
"argsDigest": "sha256:9c1d…e407"
}
]
},
"actions": [],
"cost": 0,
"timestamp": "2026-10-14T09:12:41.208Z",
"hmac": "v4:a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468",
"agentSignature": "MEUCIQDk3x…9fQ==",
"sequence": 3
}Conversation memory
这一阶段发生什么
Conversation memory 保存每一步(input、expressions、actions、output),以及作用域为步骤、对话或用户(longTerm)的属性。对话状态(READY、IN_PROGRESS、ENDED、AWAITING_HUMAN 或 ERROR)也一并保存。
仅为说明用的示例值
{
"conversationState": "READY",
"conversationSteps": [
{
"data": [
{
"key": "input",
"value": "What is the weather?"
},
{
"key": "expressions",
"value": [
"trigger(current_weather)"
]
},
{
"key": "actions",
"value": [
"ask_for_city"
]
},
{
"key": "output",
"value": [
"Which city would you like to know the weather of?"
]
}
]
}
],
"conversationProperties": {
"chosenCity": "Vienna"
}
}核心平台
使EDDI成为完整AI编排平台的核心功能。
🖥️ EDDI管理器
生产就绪的React UI,用于可视化构建、部署和监控代理,支持11种语言的i18n、实时聊天调试和审计仪表板。
⚙️ 配置即代码
代理逻辑是JSON配置,不是编译代码。提示词工程师即时迭代,无需重新部署。
🔌 MCP服务器(89个工具)
通过模型上下文协议实现完整的AI原生控制。Claude Desktop、Cursor和自定义客户端以编程方式管理代理。
🔐 安全优先
无eval(),密钥库集成,路径遍历保护,OIDC/Keycloak,按用户工作空间,加密审计跟踪。
✋ 人机协同
暂停回合、对工具调用设卡,或要求阶段签核。审批工作流支持超时策略、Slack卡片和崩溃安全状态。
🚀 性能
企业级运行时提供数百万轻量级线程处理IO密集型LLM工作负载。
🤖 多代理
基于意图的发现、托管对话,以及支持投票、共享工件和人类成员的群组协作。
AI能力
让EDDI代理更智能、更快速、更经济的高级AI功能。
🧠 记忆与上下文
持久记忆、梦境整合、滚动摘要和令牌感知窗口。会记忆的代理。
📚 知识库与RAG
抓取网站,或将PDF、Word、Excel和PowerPoint文件上传到知识库,并按计划自动刷新。8个嵌入提供商、6个向量存储。企业知识检索开箱即用。
📈 模型级联
基于置信策略的成本优化多模型路由。该模式的已发表部署报告显示,在质量保持不变的情况下推理成本降低31%至58%(证据)。
🧭 19个LLM提供商
Claude、GPT、Gemini、Grok、DeepSeek、Kimi、Qwen、GLM、Mistral、Llama等,云端托管或本地运行均可。模型目录介绍每个模型的擅长领域及运行方法。
⏰ 调度与心跳
定时触发、心跳唤醒、梦境周期。自主行动的主动代理。
内置代理工具
EDDI 内置 12 个开箱即用的工具,代理可以在对话中直接调用,无需外部设置。
配置与可移植性
代理配置可移植、可组合、可同步,在环境之间无摩擦地迁移代理。
📤 Import / Export
代理以 ZIP 文件形式可移植,自动清除密钥。导入合并或覆盖,无版本冲突。
🔄 Agent Sync
实例间实时同步,支持结构匹配、内容差异比较和选择性资源拾取。
📝 Prompt Snippets
可复用、版本化的系统提示构建块。通过 {{snippets.safety_rules}} 引用。