最近更新时间:2026-07-28 10:35:09
本文以一个 LangGraph 企业应用为例,演示如何把知识库、长期记忆、MCP、Sandbox、Workspace、Skills、AI 搜索和可观测能力接入同一个 Agent,并通过 AgentEngine CLI 将 Code 制品自动上传 KS3、发布为 Serverless 运行时。
本文面向已经完成《快速入门》和《入门指引》的开发者。快速部署强调“从 KSADK 样例到云端运行”的最短路径;本文强调业务工程治理、多组件协作、可追踪验证和故障恢复。
本次实践使用以下统一标识:
应用名称:企业云资源运营助手
工程与运行时名称:enterprise-cloud-assistant
测试资源前缀:enterprise-bp-20260723
区域:cn-beijing-6
框架:LangGraph
制品类型:Serverless Code
制品传输:AgentEngine CLI 自动打包并上传 KS3
快速部署解决的是“能否把一个 Agent 运行起来”。企业级实践还要回答:
业务源码是否可以安全交付,且不泄漏客户名称、账号和凭证。
本地、Code 制品和云端运行时是否使用同一份依赖契约。
知识库、MCP、Sandbox 等组件是否真的被调用,而不只是显示“已配置”。
长对话、工具失败、版本更新和回滚是否可追踪。
验收证据能否对应到真实命令、真实资源和真实运行日志。
因此,本文采用“一套脱敏工程、一个 AgentEngine 运行时、多个受控平台组件、两组长会话”的设计。
架构分为四层:
前端表现层:React SPA 负责 SSE 流式渲染、知识切片卡片和计费面板。
应用网关层:FastAPI 负责 JWT 鉴权、routes_chat、SSE 分发和 SPA 托管;AgentManager 管理会话,query_rewriter 补全短期上下文。
Agent 核心层:LangGraph、ChatOpenAI 和模块级 root_agent 共同完成 ReAct 循环与工具编排。
KSADK 平台能力层:知识库、长期记忆、MCP、Sandbox 和 Trace 为核心底座。
开始前需要:
Python 3.12。
KSADK / AgentEngine CLI 0.6.8。
Docker Desktop,用于本地容器验证。
星源 AgentKit、AgentEngine、知识库、MCP、Sandbox 等服务权限。
IAM AccessKey,用于控制面调用和 KS3 上传。
AgentKit API Key,用于 MCP、AI 搜索等平台工具。
一个 OpenAI 兼容模型服务。
凭证 | 用途 | 存放位置 |
|---|---|---|
IAM AK/SK | AgentEngine、知识库、MCP 和 KS3 控制面调用 | 本地 |
AgentKit API Key | MCP、AI 搜索、Sandbox 等平台能力 | 控制台密文变量 |
模型 API Key | OpenAI 兼容模型调用 | 控制台密文变量 |
AgentEngine API Key | 访问已部署运行时 |
|
使用 KSADK 公共接口加载紧凑工具集:
from ksadk.toolsets import get_agentengine_tools
platform_tools = list(
get_agentengine_tools(include=["focused", "tool_dispatcher"])
)合并业务工具和平台工具时必须按工具名去重,避免模型面对重名工具时产生不稳定选择。
本次创建 enterprise-bp-20260723-kb,导入三份不含真实业务数据的测试文档:
企业云资源产品与区域说明.md
企业云资源计费规则.md
企业运维响应规范.md代码侧只引用数据集 ID:
KSADK_KB_DATASET_ID=<DATASET_ID>
KSADK_KB_ENDPOINT=<AICP_ENDPOINT>
KSADK_KB_SCHEME=http长期记忆用于保存角色、区域和工作偏好,不应保存密钥或完整业务数据。
KSADK_LTM_BACKEND=sdk
KSADK_LTM_NAMESPACE=<MEMORY_NAMESPACE>
KSADK_LTM_ENDPOINT=<AICP_ENDPOINT>
KSADK_LTM_SCHEME=http本次注册了一个中性的企业指标 MCP:
协议:Streamable HTTP
状态:Active
工具:指标汇总、指标明细
MCP 后端地址和认证值由平台保存,文档、运行日志和 Agent 回复都不展示真实值。Agent 只通过 MCP Server ID 和 AgentKit API Key 使用平台能力。
Sandbox 用于执行确定性计算和受限脚本。本次在隔离环境执行:
5 * 25 + 15 * 100返回值为 1625,退出码为 0。
E2B_API_URL=<SANDBOX_MANAGER_URL>
E2B_API_KEY=<SANDBOX_API_KEY>
KSADK_SANDBOX_TEMPLATE_ID=<TEMPLATE_ID>
KSADK_SANDBOX_TIMEOUT=120Workspace 根目录使用运行时持久卷:
KSADK_WORKSPACE_ROOT=/app/data/workspace部署时显式挂载:
storage mount: /app/data
storage size: 20 Gi这样 SQLite 会话数据库和 Workspace 文件不会随着 Pod 重启丢失。
本次创建了本地只读 Skill enterprise-runbook,用于校验 P1 运维检查清单。Linux local_process Skill Runtime 成功执行并生成工件。
当前账号没有可用的云端 Skill Space,且现有 Sandbox 模板不是包含 /home/ksadk/agent.py 的专用 Skill Runtime 镜像,因此不能把通用 Sandbox 成功等同于云端 Skill Runtime 成功。
生产环境应单独创建 Skill Space,并使用专用 Skill Runtime 模板;不要用通用代码沙箱冒充 Skill Runtime。
AI 搜索用于补充外部时效信息,企业知识库用于回答受控事实。两类来源必须在回复中明确分区:
enterprise_knowledge 企业内部知识
external_web 外部公开网页
mcp 实时业务指标
sandbox 计算结果
memory 用户偏好在发布前完成三层验证。
python -m pytest -q测试覆盖:
原名称扫描;
依赖版本与根依赖契约;
Toolsets 合并与去重;
环境状态不返回凭证;
AI 搜索结果规范化;
测试知识和评测用例;
FastAPI 健康检查。
cd frontend
npm ci
npm run builddocker build -t enterprise-cloud-assistant:local .
docker run --rm -p 8122:8122 enterprise-cloud-assistant:local验证:
curl http://127.0.0.1:8122/health本文选择 Serverless Code,不依赖 KCR。AgentEngine CLI 会生成 Linux 依赖、打包 ZIP,并使用 IAM AK/SK 自动上传 KS3。
agentengine build . \
--mode code \
--push \
--region cn-beijing-6 \
--no-cache \
--output json本次制品结果:
制品类型:Code
ZIP 大小:79,536,294 字节
上传状态:pushed=true
目标:AgentEngine 管理的 KS3 Bucket
不要手工压缩目录。AgentEngine CLI 还会准备 Linux 依赖和运行入口,普通 ZIP 无法替代 Code Builder 产物。
单轮调用可以使用 CLI:
agentengine agent invoke \
--agent <AGENT_ID> \
--message "企业 P1 故障应在多久内首次响应?" \
--session enterprise-bp-session-a企业验收不能只看单轮回答。本次实际完成两组会话:
会话 A:12 轮,覆盖知识库、Sandbox、AI 搜索、MCP、Workspace、Skills 和记忆。
会话 B:4 轮,覆盖计算复核、角色边界和会话上下文。
16 轮请求全部返回 HTTP 200。每轮记录:
HTTP 状态;
响应耗时;
问题和脱敏回答;
token 用量;
相关运行日志和工具调用。
从构建元数据取得 KS3 路径,然后创建或更新运行时:
agentengine deploy . \
--target serverless \
--name enterprise-cloud-assistant \
--region cn-beijing-6 \
--account-id <ACCOUNT_ID> \
--artifact-type Code \
--ks3-path <KS3_ARTIFACT_PATH> \
--env-file .env \
--storage-size-gi 20 \
--storage-mount-path /app/data \
--observability \
--enable-public-access \
--auto-rollback单轮调用可以使用 CLI:
agentengine agent invoke \
--agent <AGENT_ID> \
--message "企业 P1 故障应在多久内首次响应?" \
--session enterprise-bp-session-a企业验收不能只看单轮回答。本次实际完成两组会话:
会话 A:12 轮,覆盖知识库、Sandbox、AI 搜索、MCP、Workspace、Skills 和记忆。
会话 B:4 轮,覆盖计算复核、角色边界和会话上下文。
16 轮请求全部返回 HTTP 200。每轮记录:
HTTP 状态;
响应耗时;
问题和脱敏回答;
token 用量;
相关运行日志和工具调用。
部署参数 --observability 会为运行时启用可观测能力。排障时按以下顺序定位:
Session:确认用户会话和请求边界。
Trace:确认一次请求的完整执行链。
Observation:区分模型调用、工具调用和错误。
Runtime Logs:定位启动、依赖、端口和底层 SDK 错误。
本次运行日志能够观察到:
Code Runtime 启动;
Agent 加载;
Uvicorn 监控端口;
对话请求 HTTP 200;
Sandbox 创建与复用。
评测集包含 12 个用例,覆盖知识库、记忆、MCP、Sandbox、Workspace、Skill、AI 搜索、可观测和安全边界。
纯净模式