实现AgentBus自动分发SuperAgent链路
This commit is contained in:
@@ -30,6 +30,16 @@ agentbus:
|
||||
connect-timeout: 15s
|
||||
capture:
|
||||
enabled: true
|
||||
superagent-dispatch:
|
||||
# dev 默认不自动调用 SuperAgent,需要联调时显式开启。
|
||||
enabled: ${AGENTBUS_DEV_SUPERAGENT_DISPATCH_ENABLED:${AGENTBUS_SUPERAGENT_DISPATCH_ENABLED:false}}
|
||||
worker-enabled: ${AGENTBUS_DEV_SUPERAGENT_DISPATCH_WORKER_ENABLED:${AGENTBUS_SUPERAGENT_DISPATCH_WORKER_ENABLED:false}}
|
||||
batch-size: ${AGENTBUS_DEV_SUPERAGENT_DISPATCH_BATCH_SIZE:${AGENTBUS_SUPERAGENT_DISPATCH_BATCH_SIZE:10}}
|
||||
max-attempts: ${AGENTBUS_DEV_SUPERAGENT_DISPATCH_MAX_ATTEMPTS:${AGENTBUS_SUPERAGENT_DISPATCH_MAX_ATTEMPTS:3}}
|
||||
lock-ttl: ${AGENTBUS_DEV_SUPERAGENT_DISPATCH_LOCK_TTL:${AGENTBUS_SUPERAGENT_DISPATCH_LOCK_TTL:5m}}
|
||||
initial-backoff: ${AGENTBUS_DEV_SUPERAGENT_DISPATCH_INITIAL_BACKOFF:${AGENTBUS_SUPERAGENT_DISPATCH_INITIAL_BACKOFF:30s}}
|
||||
max-backoff: ${AGENTBUS_DEV_SUPERAGENT_DISPATCH_MAX_BACKOFF:${AGENTBUS_SUPERAGENT_DISPATCH_MAX_BACKOFF:15m}}
|
||||
worker-fixed-delay-ms: ${AGENTBUS_DEV_SUPERAGENT_DISPATCH_WORKER_FIXED_DELAY_MS:${AGENTBUS_SUPERAGENT_DISPATCH_WORKER_FIXED_DELAY_MS:10000}}
|
||||
|
||||
superagent:
|
||||
task-result:
|
||||
@@ -41,8 +51,10 @@ superagent:
|
||||
base-url: ${DEERFLOW_DEV_BASE_URL:${DEERFLOW_BASE_URL:}}
|
||||
api-key: ${DEERFLOW_DEV_OPEN_API_KEY:${DEERFLOW_OPEN_API_KEY:}}
|
||||
external-subject-id: ${SUPERAGENT_DEV_DEBUG_EML_EXTERNAL_SUBJECT_ID:${SUPERAGENT_DEBUG_EML_EXTERNAL_SUBJECT_ID:th-hotel-debug-eml-upload}}
|
||||
agentbus-external-subject-id: ${SUPERAGENT_DEV_AGENTBUS_EXTERNAL_SUBJECT_ID:${SUPERAGENT_AGENTBUS_EXTERNAL_SUBJECT_ID:th-hotel-agentbus-source-message}}
|
||||
connect-timeout: ${SUPERAGENT_DEV_DEBUG_EML_CONNECT_TIMEOUT:${SUPERAGENT_DEBUG_EML_CONNECT_TIMEOUT:15s}}
|
||||
read-timeout: ${SUPERAGENT_DEV_DEBUG_EML_READ_TIMEOUT:${SUPERAGENT_DEBUG_EML_READ_TIMEOUT:180s}}
|
||||
sse-recovery-max-attempts: ${SUPERAGENT_DEV_OPEN_API_SSE_RECOVERY_MAX_ATTEMPTS:${SUPERAGENT_OPEN_API_SSE_RECOVERY_MAX_ATTEMPTS:5}}
|
||||
|
||||
aliyun:
|
||||
oss:
|
||||
|
||||
@@ -28,6 +28,16 @@ agentbus:
|
||||
connect-timeout: 15s
|
||||
capture:
|
||||
enabled: true
|
||||
superagent-dispatch:
|
||||
# prod 默认关闭自动分发;上线前必须确认 SuperAgent Open API、监控和回滚方案。
|
||||
enabled: ${AGENTBUS_PROD_SUPERAGENT_DISPATCH_ENABLED:false}
|
||||
worker-enabled: ${AGENTBUS_PROD_SUPERAGENT_DISPATCH_WORKER_ENABLED:false}
|
||||
batch-size: ${AGENTBUS_PROD_SUPERAGENT_DISPATCH_BATCH_SIZE:${AGENTBUS_SUPERAGENT_DISPATCH_BATCH_SIZE:10}}
|
||||
max-attempts: ${AGENTBUS_PROD_SUPERAGENT_DISPATCH_MAX_ATTEMPTS:${AGENTBUS_SUPERAGENT_DISPATCH_MAX_ATTEMPTS:3}}
|
||||
lock-ttl: ${AGENTBUS_PROD_SUPERAGENT_DISPATCH_LOCK_TTL:${AGENTBUS_SUPERAGENT_DISPATCH_LOCK_TTL:5m}}
|
||||
initial-backoff: ${AGENTBUS_PROD_SUPERAGENT_DISPATCH_INITIAL_BACKOFF:${AGENTBUS_SUPERAGENT_DISPATCH_INITIAL_BACKOFF:30s}}
|
||||
max-backoff: ${AGENTBUS_PROD_SUPERAGENT_DISPATCH_MAX_BACKOFF:${AGENTBUS_SUPERAGENT_DISPATCH_MAX_BACKOFF:15m}}
|
||||
worker-fixed-delay-ms: ${AGENTBUS_PROD_SUPERAGENT_DISPATCH_WORKER_FIXED_DELAY_MS:${AGENTBUS_SUPERAGENT_DISPATCH_WORKER_FIXED_DELAY_MS:10000}}
|
||||
|
||||
superagent:
|
||||
task-result:
|
||||
@@ -39,8 +49,10 @@ superagent:
|
||||
base-url: ${DEERFLOW_PROD_BASE_URL:${DEERFLOW_BASE_URL}}
|
||||
api-key: ${DEERFLOW_PROD_OPEN_API_KEY:${DEERFLOW_OPEN_API_KEY}}
|
||||
external-subject-id: ${SUPERAGENT_PROD_DEBUG_EML_EXTERNAL_SUBJECT_ID:${SUPERAGENT_DEBUG_EML_EXTERNAL_SUBJECT_ID:th-hotel-debug-eml-upload}}
|
||||
agentbus-external-subject-id: ${SUPERAGENT_PROD_AGENTBUS_EXTERNAL_SUBJECT_ID:${SUPERAGENT_AGENTBUS_EXTERNAL_SUBJECT_ID:th-hotel-agentbus-source-message}}
|
||||
connect-timeout: ${SUPERAGENT_PROD_DEBUG_EML_CONNECT_TIMEOUT:${SUPERAGENT_DEBUG_EML_CONNECT_TIMEOUT:15s}}
|
||||
read-timeout: ${SUPERAGENT_PROD_DEBUG_EML_READ_TIMEOUT:${SUPERAGENT_DEBUG_EML_READ_TIMEOUT:180s}}
|
||||
sse-recovery-max-attempts: ${SUPERAGENT_PROD_OPEN_API_SSE_RECOVERY_MAX_ATTEMPTS:${SUPERAGENT_OPEN_API_SSE_RECOVERY_MAX_ATTEMPTS:5}}
|
||||
|
||||
aliyun:
|
||||
oss:
|
||||
|
||||
@@ -30,6 +30,16 @@ agentbus:
|
||||
connect-timeout: 15s
|
||||
capture:
|
||||
enabled: true
|
||||
superagent-dispatch:
|
||||
# test 默认不自动调用 SuperAgent,联调时分别打开 outbox 和 worker。
|
||||
enabled: ${AGENTBUS_TEST_SUPERAGENT_DISPATCH_ENABLED:${AGENTBUS_SUPERAGENT_DISPATCH_ENABLED:false}}
|
||||
worker-enabled: ${AGENTBUS_TEST_SUPERAGENT_DISPATCH_WORKER_ENABLED:${AGENTBUS_SUPERAGENT_DISPATCH_WORKER_ENABLED:false}}
|
||||
batch-size: ${AGENTBUS_TEST_SUPERAGENT_DISPATCH_BATCH_SIZE:${AGENTBUS_SUPERAGENT_DISPATCH_BATCH_SIZE:10}}
|
||||
max-attempts: ${AGENTBUS_TEST_SUPERAGENT_DISPATCH_MAX_ATTEMPTS:${AGENTBUS_SUPERAGENT_DISPATCH_MAX_ATTEMPTS:3}}
|
||||
lock-ttl: ${AGENTBUS_TEST_SUPERAGENT_DISPATCH_LOCK_TTL:${AGENTBUS_SUPERAGENT_DISPATCH_LOCK_TTL:5m}}
|
||||
initial-backoff: ${AGENTBUS_TEST_SUPERAGENT_DISPATCH_INITIAL_BACKOFF:${AGENTBUS_SUPERAGENT_DISPATCH_INITIAL_BACKOFF:30s}}
|
||||
max-backoff: ${AGENTBUS_TEST_SUPERAGENT_DISPATCH_MAX_BACKOFF:${AGENTBUS_SUPERAGENT_DISPATCH_MAX_BACKOFF:15m}}
|
||||
worker-fixed-delay-ms: ${AGENTBUS_TEST_SUPERAGENT_DISPATCH_WORKER_FIXED_DELAY_MS:${AGENTBUS_SUPERAGENT_DISPATCH_WORKER_FIXED_DELAY_MS:10000}}
|
||||
|
||||
superagent:
|
||||
task-result:
|
||||
@@ -43,8 +53,10 @@ superagent:
|
||||
base-url: ${DEERFLOW_TEST_BASE_URL:${DEERFLOW_BASE_URL:}}
|
||||
api-key: ${DEERFLOW_TEST_OPEN_API_KEY:${DEERFLOW_OPEN_API_KEY:}}
|
||||
external-subject-id: ${SUPERAGENT_TEST_DEBUG_EML_EXTERNAL_SUBJECT_ID:${SUPERAGENT_DEBUG_EML_EXTERNAL_SUBJECT_ID:th-hotel-debug-eml-upload}}
|
||||
agentbus-external-subject-id: ${SUPERAGENT_TEST_AGENTBUS_EXTERNAL_SUBJECT_ID:${SUPERAGENT_AGENTBUS_EXTERNAL_SUBJECT_ID:th-hotel-agentbus-source-message}}
|
||||
connect-timeout: ${SUPERAGENT_TEST_DEBUG_EML_CONNECT_TIMEOUT:${SUPERAGENT_DEBUG_EML_CONNECT_TIMEOUT:15s}}
|
||||
read-timeout: ${SUPERAGENT_TEST_DEBUG_EML_READ_TIMEOUT:${SUPERAGENT_DEBUG_EML_READ_TIMEOUT:180s}}
|
||||
sse-recovery-max-attempts: ${SUPERAGENT_TEST_OPEN_API_SSE_RECOVERY_MAX_ATTEMPTS:${SUPERAGENT_OPEN_API_SSE_RECOVERY_MAX_ATTEMPTS:5}}
|
||||
|
||||
aliyun:
|
||||
oss:
|
||||
|
||||
@@ -28,6 +28,16 @@ agentbus:
|
||||
max-frame-bytes: 1048576
|
||||
capture:
|
||||
enabled: ${AGENTBUS_CAPTURE_ENABLED:true}
|
||||
superagent-dispatch:
|
||||
# M007 AgentBus 入库后自动分发 SuperAgent,默认关闭,联调环境显式开启。
|
||||
enabled: ${AGENTBUS_SUPERAGENT_DISPATCH_ENABLED:false}
|
||||
worker-enabled: ${AGENTBUS_SUPERAGENT_DISPATCH_WORKER_ENABLED:false}
|
||||
batch-size: ${AGENTBUS_SUPERAGENT_DISPATCH_BATCH_SIZE:10}
|
||||
max-attempts: ${AGENTBUS_SUPERAGENT_DISPATCH_MAX_ATTEMPTS:3}
|
||||
lock-ttl: ${AGENTBUS_SUPERAGENT_DISPATCH_LOCK_TTL:5m}
|
||||
initial-backoff: ${AGENTBUS_SUPERAGENT_DISPATCH_INITIAL_BACKOFF:30s}
|
||||
max-backoff: ${AGENTBUS_SUPERAGENT_DISPATCH_MAX_BACKOFF:15m}
|
||||
worker-fixed-delay-ms: ${AGENTBUS_SUPERAGENT_DISPATCH_WORKER_FIXED_DELAY_MS:10000}
|
||||
|
||||
superagent:
|
||||
task-result:
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
-- M007 AgentBus -> SuperAgent 自动分发:outbox 运行表,只记录 AI 调用过程,不创建业务订单或任务。
|
||||
CREATE TABLE platform_superagent_dispatch_run (
|
||||
id BIGINT NOT NULL COMMENT 'SuperAgent 自动分发运行 ID',
|
||||
hotel_id VARCHAR(64) NOT NULL COMMENT '酒店或业务上下文 ID',
|
||||
source_message_id BIGINT NOT NULL COMMENT '关联的内部 SourceMessage Inbox ID',
|
||||
source_provider VARCHAR(32) NOT NULL COMMENT '来源 provider,例如 AGENTBUS',
|
||||
source_channel VARCHAR(32) NOT NULL COMMENT '来源 channel,例如 OUTLOOK 或 EMAIL',
|
||||
external_message_id VARCHAR(256) NULL COMMENT '外部邮件消息 ID,对应 SourceMessage external_message_id',
|
||||
external_conversation_id VARCHAR(256) NULL COMMENT '外部邮件会话 ID,对应 SourceMessage external_conversation_id',
|
||||
dispatch_source VARCHAR(64) NOT NULL COMMENT '分发来源代码,第一版使用 AGENTBUS_REALTIME',
|
||||
idempotency_key VARCHAR(128) NOT NULL COMMENT '发送给 SuperAgent 的稳定幂等键',
|
||||
request_id VARCHAR(128) NOT NULL COMMENT '写入 X-Request-ID 的调用关联 ID',
|
||||
dispatch_status VARCHAR(32) NOT NULL COMMENT '分发状态:PENDING、RUNNING、SUCCEEDED、RETRYABLE_FAILED、FAILED、IGNORED',
|
||||
attempt_count INT NOT NULL DEFAULT 0 COMMENT '已尝试次数,worker 抢占时递增',
|
||||
max_attempts INT NOT NULL DEFAULT 3 COMMENT '最大尝试次数',
|
||||
next_attempt_at DATETIME(6) NULL COMMENT '下次可处理 UTC 时间;终态可为空',
|
||||
locked_until DATETIME(6) NULL COMMENT 'worker 抢占锁过期 UTC 时间',
|
||||
superagent_session_id VARCHAR(128) NULL COMMENT 'SuperAgent Open API session ID',
|
||||
superagent_run_id VARCHAR(128) NULL COMMENT 'SuperAgent run ID',
|
||||
superagent_run_uri VARCHAR(1024) NULL COMMENT 'SuperAgent run 查询 URI 或路径',
|
||||
last_event_id VARCHAR(128) NULL COMMENT '最后完整处理的 SSE event id,用于 Last-Event-ID 恢复',
|
||||
superagent_raw_answer LONGTEXT NULL COMMENT 'SuperAgent 最终原始回答',
|
||||
superagent_parsed_json LONGTEXT NULL COMMENT '从最终回答解析出的 JSON,无法解析时为空',
|
||||
superagent_trace_json LONGTEXT NULL COMMENT 'SuperAgent 公开 trace 摘要 JSON,不保存 Secret 或工具敏感入参',
|
||||
safe_error_code VARCHAR(64) NULL COMMENT '安全错误代码',
|
||||
safe_error_summary VARCHAR(512) NULL COMMENT '安全错误摘要,不包含正文、HTML、附件 URL 或 Secret',
|
||||
created_at DATETIME(6) NOT NULL COMMENT '记录创建 UTC 时间',
|
||||
updated_at DATETIME(6) NOT NULL COMMENT '记录更新 UTC 时间',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_superagent_dispatch_source_message (source_message_id, dispatch_source),
|
||||
KEY idx_superagent_dispatch_status_next (dispatch_status, next_attempt_at),
|
||||
KEY idx_superagent_dispatch_lock (dispatch_status, locked_until),
|
||||
KEY idx_superagent_dispatch_external_message (hotel_id, external_message_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
|
||||
COMMENT='SuperAgent 自动分发 outbox 运行表,记录 SourceMessage 入库后异步调用 SuperAgent 的状态和结果';
|
||||
Reference in New Issue
Block a user