NewLife.Cube AI对话助手揭秘:SSE流式输出、工具循环与智能填表的代码实现原理
NewLife.Cube AI对话助手揭秘SSE流式输出、工具循环与智能填表的代码实现原理【免费下载链接】NewLife.CubeWeb快速开发平台搭建管理后台灵活可扩展内部集成了用户权限管理、模板继承、SSO登录、OAuth服务端、数据导出与分享等多个功能模块在真实项目中经历过单表100亿数据添删改查的考验。项目地址: https://gitcode.com/gh_mirrors/ne/NewLife.CubeNewLife.Cube 是一个 .NET 平台的 Web 快速开发后台管理系统其内置的AI 对话助手支持 SSE 流式输出、大模型工具循环调用与智能填表三大核心能力。本文带你从代码层面揭秘这套 AI 对话助手的实现原理悬浮球提问后消息如何经全局端点/Ai/AiChat流转、SSE 事件流如何逐字推送到浏览器、AI 如何循环调用工具读取页面数据以及帮我填表又是如何安全落地的。 AI 助手能力一览魔方把所有用户交互场景统一收敛到一个全局端点不再为每个页面重复写对话接口能力说明底层实现AI 对话含工具调用右下角悬浮球任意页面可用AiController全局端点/Ai/AiChatSSE 流式智能填表实体页 / 配置页帮我填表get_form_schema/fill_form工具浏览器操作AI 读取/操作你当前页面run_js工具 检查点机制系统健康诊断首页AI 诊断按钮流式输出报告DiagnoseSystemStreamAsync日志摘要 / 安全周报定时作业非流式AILogSummaryJob/AISecurityReportJob所有配置集中在CubeSetting的「AI」分类AISwitch总开关、AIProvider服务商、AIModel模型等管理后台修改后运行期即时生效。详见 Doc/AI-人工智能.md 中的配置项表格——源码位于NewLife.Cube/Setting.cs。 数据流从悬浮球到 SSE 事件流一次提问的完整链路如下右下角悬浮球_AiAssistant.cshtml / AiAssistant.vue → POST /Ai/AiChat携带 area/controller 目标页面 会话消息 _query 查询条件 → AiController 解析目标控制器按能力接口分级注册工具 → NewLife.AI AiChatService 编排会话历史 工具循环 空响应兜底 → SSE 事件流回前端text / 工具调用事件 / run_js 下发前端请求体会携带area、controller、url等目标页面标识见NewLife.Cube/AI/CubeAiChatRequest.cs后端据此知道你正在哪个页面上提问这是智能填表与页面数据感知的前提。⚡ SSE 流式输出的实现细节SSEServer-Sent Events是 AI 助手打字机效果的关键。核心逻辑内聚在NewLife.Cube/AI/AiController.cs的RunSseAsync方法约第 188–245 行要点有四标准 SSE 响应头Content-Type: text/event-stream; charsetutf-8、Cache-Control: no-cache并加X-Accel-Buffering: no关闭 Nginx 缓冲保证逐字即时推送写事件 立即 Flush每个事件先写data: {json}\n\n再FlushAsync刷新到网络前端才能实时看到增量文本规范 JSON 协议camelCase 命名、忽略 null、中文直出不做\uXXXX转义超长 Int64 自动转字符串避免 JS 精度丢失会话隔离会话键按用户ID 页面URL 前端sessionId拼接纵深防御防止跨用户、跨页面串话。对话核心由 NewLife.AI 的AiChatService承担逐事件枚举await foreach后统一经同一个写回调输出——这也让浏览器工具能复用同一条 SSE 通道下发指令。 工具循环AI 如何看懂你的页面大模型本身并不知道你的页面长什么样魔方通过ToolRegistry 工具注册表给它装上一双眼睛。AiController按目标页面的能力接口分级注册工具工具服务提供的工具作用BuiltinToolServiceget_current_time / calculate 等内置基础工具SystemInfoToolServiceget_system_info系统状态、健康诊断数据NetworkToolService网页抓取 / 搜索 / 天气 / 翻译 / IP 定位免费联网能力CubeToolsTEntityget_data_context/get_form_schema/fill_form实体页数据与填表PageDataContextToolServiceget_page_context页面数据上下文两级降级BrowserToolServicerun_js在用户浏览器执行脚本ConfigFormToolServiceget_form_schema/fill_form配置表单页填表所谓工具循环LLM 生成回答的过程中发现需要数据就发起工具调用 → 框架执行工具拿到结果 → 把结果喂回 LLM 继续推理 → 循环直到给出最终答复。整个过程对前端是透明的事件流中只会穿插工具调用事件。所有工具方法均为virtual二次开发者可直接继承重写或在控制器中重写CreateCubeTools返回自定义工具集——这是魔方 AI 扩展性的关键设计。 智能填表原理先读 Schema再安全回填帮我填一张新增用户的表单这类需求由两个工具协作完成核心代码在NewLife.Cube/AI/CubeTools.cs第一步get_form_schema从实体的字段元数据构建 Schema字段名、显示名、类型、枚举值、必填、最大长度编辑模式还会并入当前记录已有值让 AI 基于现状补全而不是凭空生成。第二步fill_formAI 返回字段值字典后端做四重安全过滤后才回填到前端表单自动维护字段拒填CreateTime、UpdateTime、RegisterIP 等审计字段由框架填充AI 不可碰敏感字段拒填AiFormHelper按命名规则识别 ApiKey / Secret / Password / Token / ConnStr 等字段类型强转换CoerceValue按字段类型Int32/Decimal/DateTime/枚举等安全转换转换失败记入 errors 而非抛异常不写数据库回填只是预填前端表单由用户人工确认后再提交——这是重要的安全边界。 浏览器工具 run_js 与检查点机制最有意思的设计是run_jsAI 可以生成一段 JavaScript下发到你自己的浏览器当前页面执行再拿回执行结果继续推理。它借助检查点Checkpoint机制实现请求-响应配对工具调用时生成检查点编号优先复用ToolCallId经 SSE 下发{type:run_js,checkpointId:...,script:...}事件后端调用PageCheckpointService.WaitForChoiceAsync挂起等待最长 30 秒前端执行脚本后POST /Ai/OperationResult回传结果唤醒等待中的工具执行结果回到 LLM对话继续。PageCheckpointServiceNewLife.Cube/AI/PageCheckpointService.cs底层走事件总线单机用进程内总线集群经 Redis/星尘广播——即使回传请求命中另一台服务器也能唤醒等待方天然支持分布式部署。检查点还绑定用户编号跨用户回传直接忽略防止串扰。get_page_context工具复用了同一条管道并做两级降级页面控制器实现了IPageDataContext接口就走服务端权威数据否则自动在浏览器执行标准采集脚本抓取标题、表格、表单字段控制在 8192 字符内任何页面零后端改动即可获得当前页面数据。 权限与安全边界AI 助手不是开后门它被完整地套在魔方的权限体系内端点标注[EntityAuthorize(PermissionFlags.Detail)]无 AI 权限直接拒绝对话目标是实体页时还会校验当前用户对该实体菜单的 Detail 权限越权对话返回 403会话键按用户页面作用域隔离数据查询只暴露安全字段AiDataHelper.FilterSafeFieldsrun_js下发脚本全量审计日志脚本等价于用户自己在 DevTools 执行写操作前 AI 会被提示词要求先向用户说明。相关规则文档见Doc/AI-人工智能.md与Doc/SYS-安全与审计.md。 快速上手与二次开发上手三步系统设置 → 魔方设置打开AISwitch按需选择服务商NewLife / DeepSeek / OpenAI 兼容等与模型 → 刷新页面右下角悬浮球即可对话。二次开发扩展点三个能力接口实现一个接口即获得对应 AI 能力接口实现位置能力IEntityAiContextReadOnlyEntityControllerTEntity实体页数据上下文与定制提示词IFormAiContextConfigControllerTConfig配置表单页填表IPageDataContext任意控制器非实体页服务端数据上下文核心源码路径速查全局端点NewLife.Cube/AI/AiController.cs、AI 抽象层NewLife.Cube/AI/IAIService.cs、实体工具集NewLife.Cube/AI/CubeTools.cs、表单助手NewLife.Cube/AI/AiFormHelper.cs、浏览器工具NewLife.Cube/AI/BrowserToolService.cs、检查点服务NewLife.Cube/AI/PageCheckpointService.cs前端为NewLife.Cube.Vue/web/core/components/ai/AiAssistant.vue与 MVC 的_AiAssistant.cshtml。 小结魔方的 AI 助手用单一全局端点 能力接口分级注册 SSE 统一管道 检查点回传四个设计让 AI 能力像插件一样接入任意页面同时把权限、审计、敏感数据三道安全闸门焊死在工具层——这套模式对任何想在自研后台中集成 AI 助手的团队都有参考价值。【免费下载链接】NewLife.CubeWeb快速开发平台搭建管理后台灵活可扩展内部集成了用户权限管理、模板继承、SSO登录、OAuth服务端、数据导出与分享等多个功能模块在真实项目中经历过单表100亿数据添删改查的考验。项目地址: https://gitcode.com/gh_mirrors/ne/NewLife.Cube创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

How to Sort MySQL Data Alphabetically

How to Sort MySQL Data Alphabetically

In today’s post, we’ll explore the methods for sorting data alphabetically in MySQL. Sorting data is a fundamental operation in database management, especially when you want to present information in a user-friendly manner. Whether you’re working with c…

2026/8/26 19:48:38 阅读更多 →
Umi-OCR 使用指南:离线 OCR 如何识别截图、批量图片与扫描版 PDF(附 7 个实用技巧)

Umi-OCR 使用指南:离线 OCR 如何识别截图、批量图片与扫描版 PDF(附 7 个实用技巧)

Umi-OCR 使用指南:离线 OCR 如何识别截图、批量图片与扫描版 PDF(附 7 个实用技巧) 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印…

2026/8/26 19:47:38 阅读更多 →
163MusicLyrics 三分钟上手:网易云、QQ音乐歌词批量下载完整攻略

163MusicLyrics 三分钟上手:网易云、QQ音乐歌词批量下载完整攻略

163MusicLyrics 三分钟上手:网易云、QQ音乐歌词批量下载完整攻略 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 拷歌进车机或U盘时最头疼的就是歌词全缺失&a…

2026/8/26 19:47:38 阅读更多 →

最新新闻

Anthropic多智能体:能力越强,协作越容易失控?

Anthropic多智能体:能力越强,协作越容易失控?

来源|Anthropic Frontier Red Team 研究报告《Patterns and problems in emerging multiagent systems》未来,大量AI智能体会在代码仓库、交易市场、各类业务系统里互相打交道。AI与AI之间的交互规模,很可能会超过人机交互、人与人交互的总量…

2026/8/26 20:21:51 阅读更多 →
无人叉车AGV:工厂上下料与仓储搬运自动化方案

无人叉车AGV:工厂上下料与仓储搬运自动化方案

工厂上下料和仓储搬运是制约产线效率的关键环节。很多制造企业已经实现加工设备自动化和MES数据采集,但物料仍依赖人工叉车转运,存在路径穿插、峰谷不均、交接不清和夜班减员等问题。无人叉车AGV通过激光导航、任务调度和低电量自动回充,把“…

2026/8/26 20:21:51 阅读更多 →
轨道交通车辆段智能检修:车底检测与运维机器人方案

轨道交通车辆段智能检修:车底检测与运维机器人方案

轨道交通车辆段检修的核心风险点中,车底部位最容易出现视觉盲区、漏检和夜间作业安全隐患。传统车底检测依赖地沟人工打光、俯身观察和纸质记录,单列动车组车底检测通常需要2名以上检修人员配合,巡检时长受天窗期、光线和人员经验影响较大。 …

2026/8/26 20:21:51 阅读更多 →
Python 自动化实战:搭建出海企业 B2B 销售线索池(附可直接运行的脚本)

Python 自动化实战:搭建出海企业 B2B 销售线索池(附可直接运行的脚本)

Python 自动化实战:搭建出海企业 B2B 销售线索池(附可直接运行的脚本) 对于正在“出海”的中国企业来说,海外 B2B 销售拓展有一个隐形的成本黑洞:线索获取。 你的销售团队可能每天花 2-3 小时在 LinkedIn、TechCrunc…

2026/8/26 20:20:51 阅读更多 →
SpringAI集成RAG实操(postgresql+pgvector)中(集成到项目中)

SpringAI集成RAG实操(postgresql+pgvector)中(集成到项目中)

1、在pom.xml 引入依赖<!-- 自动整合 PGVector 向量存储 --><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-vector-store-pgvector</artifactId><version>1.0.0-M7</version></dep…

2026/8/26 20:20:51 阅读更多 →
从静态图到动态视频:让 InternVL3-2B-hf 看懂视频的完整实践指南

从静态图到动态视频:让 InternVL3-2B-hf 看懂视频的完整实践指南

从静态图到动态视频&#xff1a;让 InternVL3-2B-hf 看懂视频的完整实践指南 【免费下载链接】InternVL3-2B-hf 项目地址: https://ai.gitcode.com/hf_mirrors/OpenGVLab/InternVL3-2B-hf InternVL3-2B-hf 是 OpenGVLab 发布的 InternVL3 系列中最轻量的 20 亿参数多模…

2026/8/26 20:20:51 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要&#xff1a; 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数&#xff08;random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录&#xff1a; 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中&#xff0c;主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段&#xff0c;转入了政务服务的常态化落地应用&#xff1b;在实际使用过程中&#xff0c;它能自主理解办事需求、辅助完成填报申报、开展材料预审&#xff0c;并联动多个系统协同作业&#xff0c;真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态&#xff0c;宏观上观察到的光是由无数个微观的光量子组成的&#xff0c;每个光子在产生的瞬间&#xff0c;其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前&#xff0c;在微观层面&#xff0c;每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”&#xff0c;而是SIP会话的动态重定向你有没有遇到过这样的场景&#xff1a;客服坐席A正在和客户通电话&#xff0c;突然需要把这通对话无缝转给专家坐席B&#xff0c;客户完全感知不到中间的断连——既没听到忙音&#xff0c;也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack&#xff1f;如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法&#xff0c;那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →