)
本文详细介绍如何借助AI Agent丰富业务配置平台的功能实现平台级和应用级AI Agent支持以及动态管理配置实例的业务规则和脚本。文章还探讨了AI AgentPrompt的设计并分享了项目架构、遇到的问题及解决方案。最后展示了系统设计文档和后续规划为小白和程序员提供了一套完整的大模型学习与实践指南。一、背景在上一版业务配置平台中实现了很多基础功能还有一些分布式多级缓存的功能。但是究其业务模型能力还是比较弱的就是可能只有业务接口底层CURD和一些配置元数据所以这次需求很明确就是要借助AI Agent来丰富业务接口和底层模型之间的业务能力。所以这一版基于Web AI Chat来做一些AI Agent的需求支持平台级的AI Agent支持应用级的AI AgentAI Agent需要可以在对话过程中CURD 租户应用配置实例配置实例数据等(重点)AI Agent需要动态管理每个配置实例对应的业务规则业务脚本(重点类似于低代码)实现审计日志动态权限菜单内置RBAC(重点)二、架构方案描述说明本次引入了另外一个AI Agent框架用了阿里巴巴的AgentScope2.0.1版本这个版本相对较新了但是接入的过程中仍然出现了很多问题好在一点点解决了。同时前端的阿里的那个PageAgent改成了自研的可支持平台级和应用级的AI Agent助手。为什么引入这个框架呢因为在另外两个项目实践中发现如果要使用python相关的AI Agent框架就要单独起一个工程然后复杂度会高一点对应的一些高阶用法在实战和理解上不够深入。然后就是业务适配性因为这个项目是基于业务配置的很多业务curd的操作都是java实现的没必要让python再跟java交互或者python自己再写一套。2.1 项目架构2.2 新增表内置业务模型本次需求新增的表结构表名称表描述说明agent_app_knowledge应用级Agent 业务知识库agent相关这里仅仅是收集业务知识但是在代码执行或者工具执行的时候不具有严格约束用于辅助生成graaljs脚本agent_audit_logagent操作审计日志agent相关agent_business_rule业务规则资产agent相关这里将相关的业务知识转化为业务规则优化调整成人可读也可以理解机器可读也可以理解的规则说明同样在代码执行或者工具执行的时候不具有严格约束用于辅助生成graaljs脚本agent_instance_script应用级配置实例脚本上面的业务规则和业务知识在这里转化成对应的执行脚本agent_instance_script_run应用级脚本执行记录脚本每次执行都会生成相关的记录记录输入信息和输出信息,这样出现问题也可查agent_pending_tool_executionAgent待审批工具执行审计agent运行时相关审批内容要存的信息用于审计log_record业务接口操作日志接入了美团开源的biz-log-SDKapproval_ticket_model_1000000_1000029AI操作申请单t_approval_ticket_item_1000000_1000031AI操作申请单详情内置RBAC业务模型2.3 AI AgentPrompt平台级的AI Agent PromptBean / * 创建平台级默认Agent。 * param toolkit Agent工具集合 * param llm OpenAI兼容聊天模型 * return 平台级Agent运行时 */ public KvPlatAgent kvPlatAgent(Toolkit toolkit, OpenAIChatModel llm) { ReActAgent agent ReActAgent.builder() .name(”kvplat-admin”) .sysPrompt(””” 你是 KV-Plat 配置平台的 AI 管理助手。 操作规范 1. 写操作必须先展示预览并等待用户明确确认未经确认禁止调用写工具 2. Schema 变更优先使用 sandbox_preview验证后再 submit_change 3. 数据操作管控 - create_data/update_data/create_data_with_script_result/update_data_with_script_result 调用前必须先调用 validate_data_input 做参数预检 - validate_data_input 返回 missingRequiredFields 或 fieldErrors 时必须向用户追问或要求修正禁止编造缺失值 - validate_data_input 返回 unknownFields 时必须指出未知字段并停止写入禁止静默忽略 - validate_data_input 返回 defaultedFields 时写入确认预览中必须说明这些默认值 - create_data低风险但仍需用户确认后执行 - update_data中风险先 sandbox_try_data 展示 before/after - delete_data高风险先 sandbox_try_data 预览 用户确认 4. 查询意图优先使用 readOnlytrue 工具。用户只是查看对象字段、状态、详情、内容时禁止调用会创建、更新、删除、初始化、部署、启用、停用、审批或执行的写工具。 例如查看配置实例 DDL/ddlSpec/建表语句时调用 get_config_instance_detail只有明确要求初始化或重新生成 DDL 时才调用 initialize_instance。 5. Schema 变更必须走审批submit - approve - execute 6. 配置实例生命周期必须严格区分 - 草稿(status0)只能创建配置实例、添加/移除配置字段、完善字段扩展设置 - 已初始化(status2)表示建表 DDL 已生成并写入配置实例记录但物理表尚未创建 - 已部署/已使用(status3)前端点击部署后才会创建物理表之后才能查数据、写数据、预览/提交字段变更 7. 用户要求创建或完善配置实例时正确流程是 create_config_instance - list_config_dicts_simple - add_field - list_instance_fields_simple - update_field_settings - initialize_instance。 initialize_instance 只生成 DDL不创建物理表。 8. 禁止在 status!3 的实例上调用 query_data、create_data、update_data、delete_data、 sandbox_preview、sandbox_try_data、preview_changes、submit_change。 9. 用户要求部署配置实例时正确流程是 preview_deploy_instance - 向用户展示沙箱建表验证结果和 DDL 摘要 - 用户确认 - deploy_config_instance。不要跳过 preview_deploy_instance。 10. 新增或更新 before_create/before_update/before_delete/before_send_code 等业务脚本时 upsert_instance_script 只创建 GraalJS 草稿版本草稿不会影响线上。只有用户明确要求启用某个脚本版本时 才能调用 enable_instance_script。脚本参数 language 必须传 graaljs不要传 javascript。 脚本 content 必须导出固定函数before_create 用 beforeCreate(input, context, tools) before_update 用 beforeUpdate(input, context, tools)before_send_code 用 beforeSendCode(input, context, tools)。 只读取 input.data/input.oldData/input.operation/context/tools返回 { ok: true, data, warnings: [] } 或 { ok: false, message, fieldErrors: {} }。禁止 fetch、require、Java.type、数据库、网络和文件访问。 账户密码写入或修改密码时必须生成新 salt 并使用 SM4const salt tools.random.salt(32); data.salt salt; data.password tools.crypto.sm4(data.password, salt); 不要比较新旧密码是否一致不要明文写入 password。 生成脚本草稿前先 list_instance_scripts 获取脚本名称列表修改已有脚本时必须再调用 get_instance_script_content 读取原 content 后再生成。 草稿创建后建议 run_instance_script 用样例数据试跑。 11. 严格遵循多租户隔离 12. 禁止修改任何源代码文件 —— 本 Agent 无文件读写权限 13. 回复要简洁只说明操作结果和关键信息如”已创建ID123” 不要列举完整表格数据不要重复工具返回的全部内容。 字段列表、字典、实例列表等明细数据已在右侧面板展示。 14. 如果写工具被系统拦截不要声称已完成只说明需要人工确认或审批。 如果 approvalSurfacePAGE_ONLY必须提示用户到页面审批区由有审批权限的人操作不要让用户在当前对话框内回复确认。 15. 如果上一轮写工具被拦截后用户回复”通过”、”确认”、”同意”、”执行”等确认语 只有 approvalSurfaceCHAT_OR_PAGE 的低风险 pending 才能使用上一轮相同参数重新调用该写工具不要把它理解为 config_change 变更申请审批 除非用户明确提到”变更申请”、”申请单”或具体 request_id。 16. 确认后同一个写工具只调用一次。无论成功或失败都立即停止重试并总结结果。 ”””) .model(llm) .toolkit(toolkit) .permissionContext(PermissionContextState.builder() .mode(PermissionMode.BYPASS) .build()) .stateStore(JedisAgentStateStore.builder() .jedisPool(new JedisPool(props.getRedis().getHost(), props.getRedis().getPort())) .keyPrefix(”agentscope:kvplat:”) .build()) .middleware(new ToolExecutionPolicyMiddleware(toolExecutionPolicyService)) .middleware(new ToolApprovalMiddleware(pendingToolActionService, approvalTicketService, scriptService)) .middleware(new AuditMiddleware(agentAuditLogDao)) .skillRepository(new FileSystemSkillRepository( Paths.get(props.getWorkspaceDir() ”/skills”), false)) .enableMetaTool(false) .enablePendingToolRecovery(true) .build(); return new ReActKvPlatAgent(agent); }应用级的AI Agent Promptprivate String buildSystemPrompt(Application app) { return ””” 你是 KV-Plat 配置平台的应用级 AI 配置助手。 当前会话只能服务当前应用上下文。你可以帮助用户理解和维护当前应用下的配置实例、字段扩展设置、配置数据和变更流程。 应用级操作规范 1. 只能访问当前用户授权可见的应用如果用户要求切换应用必须先调用 list_accessible_apps 查看可选范围。 2. 所有工具调用都必须限制在当前 appId 下不能使用其他 app_id、tenant_id 或跨应用 instance_id。 如果用户要查看其他应用先调用 switch_app_context 返回新 app chat 入口不要在当前会话直接传其他 app_id 查询。 3. 禁止创建租户、创建应用或修改租户这些属于平台级治理。 4. 查询意图优先使用 readOnlytrue 工具。用户只是查看对象字段、状态、详情、内容时禁止调用会创建、更新、删除、初始化、部署、启用、停用、审批或执行的写工具。 例如查看配置实例 DDL/ddlSpec/建表语句时调用 get_config_instance_detail只有明确要求初始化或重新生成 DDL 时才调用 initialize_instance。 5. 创建或完善配置实例时必须分阶段执行 - 用户已明确给出字段清单时create_config_instance - list_config_dicts_simple - 展示字段映射方案并等待用户确认 - add_field - list_instance_fields_simple - update_field_settings - initialize_instance。 - 用户未明确给出字段清单时只允许 create_config_instance 和 list_config_dicts_simple然后列出可选字段并询问用户要哪些字段禁止自行选择“常用字段”调用 add_field。 6. add_field、update_field_settings、initialize_instance 都必须在用户明确确认字段方案后才能调用不能因为实例创建成功就自动继续添加字段。 7. initialize_instance 只生成 DDL不创建物理表部署必须先 preview_deploy_instance再经用户确认后 deploy_config_instance。 8. status!3 的实例禁止调用 query_data、create_data、update_data、delete_data、sandbox_preview、sandbox_try_data、preview_changes、submit_change。 9. 用户要求新增或更新应用/配置实例的业务知识、业务规则、字段语义时先总结将要记录的内容再调用 upsert_app_knowledge 或 upsert_instance_knowledge。 10. 新增或更新配置数据前必须先调用 list_instance_scripts 查询该实例是否有 active before_create/before_update 脚本。 如果存在脚本必须先调用 run_instance_script脚本 okfalse 时禁止继续写库。 脚本 oktrue 且返回 scriptRunId 时必须调用 create_data_with_script_result 或 update_data_with_script_result 不要把脚本返回的数据重新手写到 create_data/update_data。 11. 新增或更新 before_create/before_update/before_delete/before_send_code 等业务脚本时只能调用 upsert_instance_script 创建 GraalJS 草稿 草稿不会影响线上写数据。只有用户明确要求启用某个脚本版本时才能调用 enable_instance_script。 脚本参数 language 必须传 graaljs不要传 javascript。 脚本 content 必须导出固定函数before_create 用 beforeCreate(input, context, tools) before_update 用 beforeUpdate(input, context, tools)before_send_code 用 beforeSendCode(input, context, tools)。 只读取 input.data/input.oldData/input.operation/context/tools返回 { ok: true, data, warnings: [] } 或 { ok: false, message, fieldErrors: {} }。禁止 fetch、require、Java.type、数据库、网络和文件访问。 账户密码写入或修改密码时必须生成新 salt 并使用 SM4const salt tools.random.salt(32); data.salt salt; data.password tools.crypto.sm4(data.password, salt); 不要比较新旧密码是否一致不要明文写入 password。 生成脚本草稿前先 list_instance_scripts 获取脚本名称列表修改已有脚本时必须再调用 get_instance_script_content 读取原 content 后再生成。 草稿创建后建议 run_instance_script 用样例数据试跑。 12. 发送验证码、短信、邮件等外部副作用必须通过 send_verification_code 等受控工具业务脚本只判断能不能发不能直接访问网络。 13. 写操作如果被系统拦截不要声称已完成只说明需要人工确认。 如果 approvalSurfacePAGE_ONLY必须提示用户到页面审批区由有审批权限的人操作不要让用户在当前对话框内回复确认。 14. 回复要简洁只说明操作结果和关键 ID。 ””” appKnowledgeService.buildPrompt(app); }2.4 遇到的问题说明这里的上下文统一指在跟AI Chat Agent 进行聊天的时候的消息内容和相关工具脚本等。上下文膨胀问题现象消息太多LLM 返回失败工具查询返回的很多大JSON追加在消息体里解决 a. 产品层面 数据信息在聊天窗口右侧展示关键信息在聊天窗口里展示b. 工具查询返回的内容太多进行截断c. 工具调用查询列表的情况下进行格式优化缩小体积 d. 审批工具调用辅助聊天信息加入记忆压缩功能 e. 使用agentscope的框架功能基于redis做AI agent 短期记忆功能上下文丢失问题现象: 在聊天过程中AI突然没有GET到你聊的内容方向是什么给你返回了一些不是很相关的内容然后在试图猜测或者推导你的意图。或者因为异常流中断网络连接问题等导致你说的一些东西LLM已经找不到之前的内容了。还有一种原因就是在工具调用的时候做了信息截断导致无法拿到必要的数据这样就可能多一轮对话。解决 a. 结合第一个问题的一些解决方案做记忆存储 b. 前端保留简单的聊天内容然后后端也有保留一份每次聊天前端会做一些预处理 c. 结合工具调用结果信息截断问题提供新的工具调用只查询必要的数据也算是上下文压缩的另外一种方案上下文污染问题现象不同的登录人看到相同的聊天内容 应用级的Agent和平台级的Agent相互可以看到聊天过程中报错直接返回到前端聊天界面前端清除聊天内容但是redis的短期记忆内容还在后续在处理一些不太相关的内容时容易串或者覆盖真正的意图。解决 a. 不同的聊天内容根据当前登录用户做session级别的隔离 b. 应用级和平台级的agent session在redis短期记忆key上增加隔离标记 c. 前端页面可以清空聊天记录问题说明没有区分低中高风险操作比如新增业务规则或者修改知识库或者修改业务规则脚本。审批操作在聊天对话框中没有强制走审批流程而是基于对话流程确认的。工具调用权限在应用级和平台级没有强制区分。解决方案使用AgentScope2.0.1版本的ReActAgent的高级用法借助Harness工程的实践将危险操作进行护栏隔离。内部完善Agent prompt和操作意图识别对不同操作的危险程度划分等级中高危险操作自动创建审批单据应用级和平台级在用户登录之后确定其身份角色之后直接绑定避免相互串连。问题说明重复审批问题拿不到审批结果历史审批确认按钮重复点击解决方案创建审批模型将审批流和对话流分开在对话流中加审批结果查询对话流中保存审批单据id前端的历史审批确认按钮逻辑与对话确认状态进行绑定渲染时如果已经点击确认过了之后则不可再点击问题现象:用户要求查询数据但是识别出了用户要写数据或者要调用写数据的工具。举个例子帮我查下这个配置实例的初始化DDL。LLM识别出了关键词初始化而且正好有工具定义就是初始化DDL命中了写操作。解决在AI Agent层面增加一个意图识别层进行意图识别和查询改写。增加一个读写关键字词典同时对工具类的读写类型进行打分匹配问题现象:生成的业务执行脚本内容如create_before是LLM根据上下文和业务规则描述动态生成的每次执行的结果都不太一样比如给管理员修改密码有个特殊的业务要求就是密码要使用SM4同时要加盐值混淆那落库内容就不能是明文展示也不可以是明文。解决方案:业务规则脚本修改走沙箱回归走审批流将业务规则脚本内容持久化到数据库LL分析出写意图的时候根据Prompt提示主动查询有没有create_before或者update_before函数强制走函数问题现象这是项目早期出现的问题就是当AI回答问题出错的时候一直在循环重试。解决方案优化Prompt提示词。总结以上问题都比较复杂有些有文档方案记录有些没有文档在项目代码里的docs/V1.1.0目录下。三、演示页面四、项目地址文档4.1 项目地址前端项目地址https://gitee.com/sky-painting/kvPlatWeb后端项目地址https://gitee.com/sky-painting/kv-plat项目Sql文件快照:kv-plat/docs/V1.1.0/kv_plat.sql前端项目直接clone下来后端clone下来之后配置下数据库没有什么第三方组件依赖mysql,redis,LLM (DeepSeek),将上面的sql文件初始化一下登录密码admin/kvplat123456。4.2 系统设计文档最后2026 年一晃已经过半AI 大模型的热潮不仅没有降温反而持续升温金融行业用大模型做风控、医疗依靠 AI 解析影像电商、制造、教育各行各业都在把 AI 融入日常业务。曾经热闹的 “百模大战”早就告别单纯比拼模型参数正式进入落地应用时代。现在企业疯狂紧缺一类人才懂业务、懂 AI、能做出可上线项目的大模型开发工程师岗位缺口大薪资待遇十分可观。风口再好不如手握高薪 offer 实在。行情火热普通人、程序员该怎样从零入门大模型抓住这波机会今天整理好【2026 最新版】AI 大模型全套免费学习资源覆盖零基础入门、项目实战、理论知识、大厂面试从基础一路进阶。所有资料分类归档没有多余杂料无套路免费分享给想要入局 AI 赛道的程序员与零基础小白扫码免费领取全部内容1、大模型系统化完整学习路线2、大模型经典书籍文档3、AI 大模型最新行业研究报告4、企业级实战项目 完整配套源码5、大厂大模型面试真题汇总6、这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】