近几年,随着网信监管持续加强,“平台是否需要展示用户IP归属地”已经不再是产品层面的可选项,而逐渐成为一项明确的合规要求,是一个涉及监管理解、产品边界、技术选型和长期维护的综合问题。本文结合平台侧实践,分享一套基于 IP查询+离线库 的合规实施思路。

为什么平台需要展示用户IP属地?

从监管角度看,IP归属地展示的核心目的在于提升信息透明度与治理能力
通过向用户展示基础属地信息,可以在一定程度上减少误导性传播,也为平台在内容治理、风险处置和舆情应对中提供基础支撑。需要强调的是,监管要求展示的并不是精确定位信息,而是相对粗粒度的归度,通常到国家或省级即可。这本身就是在合规要求与用户隐私保护之间取得的平衡。

合规实施前必须明确的几个边界

在动手实现之前,有几个问题必须先统一认识。
首先,展示粒度要克制,不应展示到城市、区县甚至更精细的位置。其次,IP归作为客观提示信息存在,而不应被用于用户画像、标签或推荐权重计算。再次,展示逻辑必须统一,避免同一用户在短时间内频繁出现属地变化,造成误解或投诉。从监管实践看,真正容易出问题的往往不是“少展示了一点”,而是展示过度或口径不一致
平台需展示用户IP属地.png

为什么不建议完全依赖在线IP询接口?

不少平台最初的实现方式,是在请求链路中直接调用第三方在线ip接口。这种方式在功能验证阶段确实省事,但在合规场景下风险明显。

一方面,在线接口存在稳定性和延迟问题,一旦异常,前端展示就会受到影响;另一方面,第三方接口的数据和算法更新不可控,历史展示结果难以复现;此外,在涉及用户访问行为数据时,还需要额外评估数据出境与合规风险。因此,在正式合规方案中,我们更倾向于把IP归属地身可控范围内**。

IP查询+线库的整体实现思路

最终,我们采用的是一种相对稳妥的方式:获取用户IP → 本地离线库解析 → 统一展示规则输出。

整个过程不依赖外部网络请求,解析逻辑、数据版本和展示口径均由平台统一控制,便于长期维护和合规审计。

后端实现示意

下面以之前的后端实例为例

服务启动时加载IP离线库

public class IpLocationService {

    private static IpOfflineDb ipDb;

    public static void init() {
        // 启动时加载离线库到内存
        ipDb = IpOfflineDb.load("/data/ip/ip_offline.dat");
    }
}

请求链路中解析用户IP归属地

public static String resolveIpLocation(String ip) {
    IpLocation loc = ipDb.lookup(ip);
    if (loc == null) {
        return "未知";
    }

    // 合规展示:只到国家 / 省级
    if ("CN".equals(loc.getCountryCode())) {
        return loc.getProvince();
    }
    return loc.getCountryName();
}

前端展示字段示例

{
  "user_id": "123456",
  "content": "……",
  "ip_location": "北京"
}

在前端层面,仅作为提示信息展示,不参与排序、推荐或用户标记。

合规实现中的几个实践经验

在实际运行过程中,有几点经验非常重要:

  • IP离线库更新不宜过于频繁,避免属地展示抖动
  • 历史内容的属地展示口径应保持一致
  • IP归属地展示逻辑应有统一配置,避免各业务线自行实现
  • 所有变更都应具备可追溯记录,方便监管核查
    IP归属地展示不是一次性功能,而是一项长期存在的合规能力

在这套方案中,我们最终为平台接入了IP数据云的IP离线库。其数据更新节奏相对稳定,解析结果在长期使用中保持一致性,同时在本地可控、性能和维护成本方面都比较符合合规系统的要求。

如今,Mend.io 正在扩展其应用安全 (AppSec) 能力,为五款最受欢迎的代理式集成开发环境 (Agentic IDE)——包括 Windsurf、CoPilot、Claude Code、Amazon Q Developer 和 Cursor——提供安全保障,确保开发者能够以人工智能的速度高效工作,而无需在安全性上做出任何妥协。

软件创造的新纪元
代理式IDE正在重新定义代码的编写方式。现在,开发者可以直接与智能编码代理协作,在数秒内即可生成、重构和调试整个代码库。谷歌和微软等主要科技领导者估计,其高达30%的代码现已由人工智能生成,而且这一数字仍在持续增长。

但这种加速发展也带来一个紧迫的问题:在代码被审查或测试之前,由谁来保障其安全?传统的安全工具介入时机过晚,通常是在人工智能生成的代码已经进入代码仓库之后。

在代码诞生的瞬间构筑安全
我们将安全性直接融入人工智能工作流。通过 Mend MCP 服务器,我们将 Mend SAST 和 Mend SCA 嵌入到代理式IDE中,使开发者在人工智能代理生成代码的同时就能获得实时保护。

  • 即时检测漏洞 —— Mend SAST 能够在人工智能生成代码和自定义代码的编写过程中识别其中的缺陷。
  • 自主修复问题 —— Mend SAST 和 Mend SCA 将检测结果反馈给IDE,以便在代码提交进入您的CI/CD流水线之前,解决专有代码和开源代码中的漏洞。
  • 简化安全开发流程 —— 所有这一切都在IDE内部无缝发生,不会对开发者的工作流程增加任何额外阻力。

为以人工智能速度构建的团队而生
无论是试图安全地规模化采用人工智能的开发负责人,争分夺秒以重新获得安全可见性的安全专家,还是努力在无风险前提下保持开发速度的DevSecOps主管,提供主动、自动化的安全保障来保护人工智能驱动的创新都至关重要。

通过深入开发者日常工作的AI编码环境,我们正在赋能开发团队,使其能够比以往任何时候都更快、更智能、更安全地进行软件构建。

随着人工智能编码工具生态系统的不断发展,安全也必须随之进化。Mend.io的代理式IDE集成标志着我们向自主化、人工智能原生的应用安全迈出了关键一步——在这个新范式中,代码不仅被智能地生成,同样也被智能地保护。

无论是零代码小白还是资深开发者,都能在这些平台上找到适合自己的解决方案。今天,我们就来盘点一下 2026 年最值得关注的开源低代码 / 零代码平台,帮助您找到最适合的工具。

一、敲敲云 - 永久免费开源零代码平台

2026 年 1 月 12 日,敲敲云全新版本 v2.3.0 正式发布!  这一版本最大的亮点是正式宣布永久免费开放,彻底打破了传统零代码平台的用户数、应用数、表单数等多重限制,实现真正的零门槛、零成本使用。

敲敲云专注于为企业快速构建应用和工作流,是一款强大且易用的零代码平台。用户无需编写任何代码,即可通过丰富的组件库轻松创建各类应用,真正做到了 "人人都是开发者"。

产品特点:

  • 免费零代码使用,快速上手,无需开发背景
  • 丰富的组件库和模板,满足多样化应用需求
  • 可视化流程设计器,支持拖放式工作流设计
  • 强大的工作流引擎,支持复杂流程逻辑与条件判断
  • 优秀的团队协作功能,支持资源共享和协同开发
  • 数据收集能力强,快速高效地采集业务数据

官网:www.qiaoqiaoyun.com

源码下载

快速安装

二、JeecgBoot - 免费开源低代码平台(最流行)

JeecgBoot 是国内首个免费开源的低代码平台,基于 BPM 理念,采用前后端分离架构(SpringBoot 3.x、SpringCloud、Vue、Mybatis-plus 等),支持微服务架构。其强大的代码生成器可一键生成前后端代码,极大减少重复劳动,提升开发效率。

作为国内最流行的低代码平台之一,JeecgBoot 在 Java 开发者社区中拥有极高的知名度和活跃度。

产品优势:

  • 免费开源,社区活跃,灵活度高,适合 Java 项目
  • 提供丰富低代码模块,实现真正零代码开发(在线表单、报表、大屏设计、移动配置、流程设计等)
  • 简单功能零代码配置,复杂功能低代码生成,兼顾智能与灵活性
  • 业务流程采用工作流引擎,流程与表单松耦合设计,支持灵活配置
  • 保障企业流程保密性,显著减轻开发人员负担
  • 国产数据库友好(达梦、人大金仓)

官网:www.jeecg.com

源码下载

三、积木报表 - 像搭建积木一样设计报表

积木报表 (jimureport),是一款免费的数据可视化报表,含报表、打印、大屏和仪表盘,像搭建积木一样完全在线设计!功能涵盖:复杂报表、打印设计、图表报表、门户设计、大屏设计等!

  • JimuReport 侧重传统复杂报表和打印

  • JimuBI 侧重数据大屏和仪表盘可视化设计

产品优势:

  • JimuReport 采用 Web 版报表设计器,类 Excel 操作风格,通过拖拽完成报表设计,所见即所得。
  • 领先的企业级 Web 报表,支持各种复杂报表,专注于解决企业报表难题。
  • JimuBI 是专注于数字孪生和数据可视化的工具,旨在通过直观、动态且视觉吸引力强的形式呈现实时业务数据,尤其擅长打造 交互式大屏和仪表盘
  • JimuBI 业内唯一实现全场景覆盖:同时支持大屏(炫酷动态)、仪表盘(专业分析)、门户(交互式业务看板)、移动端(随时随地查看),真正实现 "一次开发,多端适配"。
  • 大屏采用类 word 风格,可以随意拖动组件,想怎么设计怎么设计,可以像百度和阿里一样,设计出炫酷大屏!
  • 秉承 "简单、易用、专业" 的产品理念,极大的降低报表开发难度、缩短开发周期、节省成本.

官网:https://jimureport.com

代码下载

四、Budibase

Budibase 是一个开源低代码平台,可以更快地构建业务应用程序,从而增强团队能力并提高生产力。IBM、Deloitte、Proctor 和 Gamble、Rakuten 等企业在内部使用该平台。

它利用内部数据库,但也集成了领先的数据库,包括 ArangoDB、DynamoDB、Mongo DB、MySQL、S3 等。

产品特点包括:

  • 为所有团队成员快速构建内部工具
  • 在企业中设置和自动化表单
  • 创建管理面板来管理数据和
  • 团队和客户的简单门户

源码下载

五、Appsmith

Appsmith 是一个用于构建管理面板、内部工具和仪表板的低代码项目。与超过 15 个数据库和任何 API 集成。构建你需要的一切,速度提高 10 倍。允许你拖放组件来构建仪表板、使用 Java 对象编写逻辑并连接到任何 API、数据库或 GraphQL 源。

源码下载

六、BudiBase

Budibase 是一个开源的低代码平台,帮助 IT 专业人士在几分钟内在自己的基础架构上构建、自动化和交付内部工具。它专注于为开发人员提供工具,以加快一个平台内的开发、部署和集成过程。

源码下载

七、Joget

Joget 使业务用户、非编码人员或编码人员能够使用单一平台轻松构建、交付、监控和维护企业应用程序。Joget DX 在一个简单、灵活和开放的平台中结合了业务流程自动化、工作流管理和低代码应用程序开发的优点。

项目地址

八、n8n(流程自动化)

n8n 是一个开源的工作流自动化工具,主要用于连接不同的应用程序和服务,实现数据的自动化处理和流程的自动化执行。它提供了一个可视化的界面,让用户可以通过拖拽节点的方式来构建工作流,无需编写复杂的代码。

主要特点包括:

  • 节点式工作流设计:用户可以通过拖拽不同的节点来构建工作流,每个节点代表一个特定的功能或操作。
  • 丰富的集成能力:n8n 支持与多种第三方服务和应用程序的集成,如 Slack、Google Drive、GitHub 等。
  • 自定义节点:用户可以根据自己的需求创建自定义节点,扩展 n8n 的功能。

源码下载

最近想换个鼠标,目前用的是罗技的 G304 ,用了大概3年左右。

但这东西需要装电池,经历好几次鼠标带出门,拿出来没电的情况,那叫一个尴尬。很不优雅!
准备换新了,大家现在手里捏着的鼠标,是什么型号, 用了多久时间了? 可以推荐一波

备注:主要配合 MacbooK 使用。

这现在一台减 2000 那到了 18 出了 这个 air 回收是按官方卖的价格 50% 折抵 还是按照 目前减了 2000 的价格折抵呢? 我感觉应该是按照官方价格吧~ 另外你们真的没人买 512G 的吗? 我看大多数都是买的 256G

大家好,我是老刘

最近TIOBE在2026年一月的编程语言排名出来了。

不出意外的,Dart又排在25名之后了。

为啥作为跨平台一哥Flutter的编程语言,Dart的排名如此落后?除了Flutter,Dart还有哪些应用场景?

本文我们来讨论一下这些问题。

1. Dart 语言近半年排名趋势

老刘统计了 Dart 语言在 TIOBE 索引中的近半年排名趋势,发现 Dart 语言的排名一直保持在 25 名之后,而其 Ratings 也始终保持在 0.60% 左右。

日期Dart在TIOBE的排名Ratings
2025-07280.61%
2025-08280.59%
2025-09280.62%
2025-10270.62%
2025-11260.69%
2025-12260.64%
2026-01260.63%

数据来源:https://www.tiobe.com/tiobe-index/

2. TIOBE并非根据语言使用量进行排名

TIOBE 索引是一个衡量编程语言 popularity 的指标,它根据每个月的搜索量来计算每个语言的排名。

每个月,TIOBE 会发布一个排名,该排名是根据搜索量的百分比来计算的。

它聚合了全球主流搜索引擎和网站的数据,包括 Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube, Baidu 等25个以上的平台。

计算Ratings逻辑大致如下:

  • 首先计算每种语言在各个搜索引擎上的“命中数”(hits)。
  • 对这些数据进行归一化处理(消除不同搜索引擎总量差异的影响)。
  • 最后计算出该语言在所有被统计语言总搜索量中的 占比(即 Ratings) 。

所以TIOBE的排名只能代表Dart语言在众多编程语言中的受关注程度,而非其在实际开发中的使用数量。

3. 为啥Dart语言排名始终不高?

与 2025 年大幅攀升的语言(如 C# 成为 2025 年度语言、 Perl 从 32 名冲回 11 名、 Zig 冲到 42 名)相比,Dart 的排名非常稳定,没有出现剧烈的排名跳跃。

根本原因是Dart语言的排名是与Flutter深度绑定的。

和大多数编程语言不通,比如Java用于服务端开发、Android开发的多个不同的领域。

而Dart的主要应用场景只有Flutter。

如果Dart在未来没有脱离Flutter用于其它方向,那么它的排名就会继续保持在20名之后。

4. Dart排名稳定代表了什么?

我们来看一下Dart排名波动最大的时间点。

可以看到Dart语言最受关注的时间是在2017年Flutter刚发布的时候。

之后是Flutter的高速扩张然后成为客户端跨平台开发的首选框架。

最近这几年,Flutter逐步进入了稳定期,Dart语言的关注度也开始稳定下来。

所以Dart语言的排名稳定从某种程度上代表了Flutter生态相对比较稳定。

这对我们这些Flutter开发者来说是一个好消息。

毕竟没有一个程序员喜欢自己吃饭的语言框架三天两头出现大的变动。

而且语言和框架的稳定带来的另一个好处就是AI友好度的提升。

因为AI模型通常是基于某个语言或框架训练的,而如果这些语言或框架经常变化,那么在日常开发中就需要程序员不停的去修正AI生成的代码。

5. 希望Dart语言能有更多领域的应用

之前老刘就专门写过文章,之前我喜欢Kotlin的强大,现在更喜欢Dart的简洁。

[Kotlin vs Dart:当“优雅”变成心智负担,我选择了更简单的 Dart
](https://mp.weixin.qq.com/s/KyqmMXTE4GyAJU2NjJYtUg)

随着编程风格越来越趋向于简洁、稳健。

我也越来越喜欢Dart这种既能同时支持面向对象和函数式编程两种编程范式,同时又能在日常开发中保持语法简洁的编程语言。

所以老刘还是希望能有更多的领域可以应用到Dart语言。

老刘觉得在以下一些领域Dart还是有用武之地的:

服务端开发 (Backend)

如果能用 Dart 写后端,实现**前后端同构**,复用同一套 Model 和 业务逻辑,将极大地降低全栈开发的门槛。像 Serverpod 和 Dart Frog 这样的框架已经开了个好头,但还需要更完善的生态。

命令行工具 (CLI)

Dart 优秀的 AOT 编译能力,使其生成的二进制文件启动极快且无需依赖环境。编写跨平台的脚本工具,Dart 其实比 Python 或 Node.js 更具部署优势。

WebAssembly (Wasm)

随着 Dart 对 WasmGC 的支持日益完善,未来 Dart 代码将能以近乎原生的性能运行在浏览器中,这为高性能 Web 应用提供了新的可能。
当然这部分可能还是和Flutter有很大的绑定关系。

总结

如果Dart能像JavaScript从浏览器走向Node.js那样,成功在服务端或CLI领域突围,那么对于我们这些Flutter开发者来说,将是一个好消息。

因为这意味着我们掌握的这门语言,将拥有更广阔的舞台,而不仅仅局限于画UI。

那么作为开发者,我们不妨在日常的小工具、脚本或者简单的后端服务中,多给 Dart 一些机会。

毕竟,生态的繁荣,离不开每一个开发者的尝试与贡献。

🤝 如果看到这里的同学对客户端开发或者Flutter开发感兴趣,欢迎联系老刘,我们互相学习。

🎁 点击免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。可以作为Flutter学习的知识地图。

🚀 覆盖90%开发场景的《Flutter开发手册》

📂 老刘也把自己历史文章整理在GitHub仓库里,方便大家查阅。
🔗 https://github.com/lzt-code/blog

大家好,我是 Immerse,一名独立开发者、内容创作者、AGI 实践者。

关注公众号:沉浸式AI,获取最新文章(更多内容只在公众号更新)

个人网站:https://yaolifeng.com 也同步更新。

转载请在文章开头注明出处和版权信息。

我会在这里分享关于编程独立开发AI干货开源个人思考等内容。

如果本文对您有所帮助,欢迎动动小手指一键三连(点赞评论转发),给我一些支持和鼓励,谢谢!


Vercel 开源了一个项目,叫 agent-skills。

他们把团队积累的 React、Next.js 开发经验,打包成了 AI 可以直接调用的技能包。

写代码时,AI 会自动检查性能问题、可访问性、最佳实践。相当于自动 Code Review。

3 个技能包

react-best-practices:40 多条规则,分 8 个类别。

包括消除请求瀑布流、优化包体积、服务端性能、客户端数据获取。每条规则标注优先级(Critical、High、Medium)。

web-design-guidelines:100 多条规则。

涵盖可访问性、焦点状态、表单处理、动画、排版、图片、性能、导航、暗黑模式、触控交互、国际化。

vercel-deploy-claimable:在聊天窗口直接部署到 Vercel。

支持 40 多种框架,部署完给预览地址和认领地址。

安装和使用

npx add-skill vercel-labs/agent-skills

装完不需要配置,AI 自动检测使用场景。写 React 组件时自动检查性能,说要部署时自动调用部署功能。

工具支持

这个思路的价值

把经验和最佳实践结构化,让 AI 能理解和执行。

比文档好用,AI 会在写代码时主动提醒你。这些技能遵循 Agent Skills 标准,是开放格式。


项目地址:https://github.com/vercel-labs/agent-skills

引导语:在管理 Active Directory (AD) 时,了解用户的登录时间对于安全审计和账号管理至关重要。然而,AD 中提供了多个相关属性,如 LastLogon、LastLogonTimestamp 和 LastLogonDate,它们的作用和适用场景各不相同。本文将深入剖析它们的区别,帮助您更高效地管理用户登录数据。

简介:Active Directory 维护着多个用户登录时间的属性,包括 LastLogon、LastLogonTimestamp 和 LastLogonDate。虽然它们都与用户登录记录相关,但在同步机制、精确度和适用性上存在显著差异。本文将对这三个属性进行详细对比,帮助 IT 管理员正确理解并合理利用这些信息,以优化安全策略和资源管理。

关键词:Active Directory、LastLogon、LastLogonTimestamp、LastLogonDate、用户登录时间、AD 账户管理、安全审计

什么是Active Directory登录属性?
Active Directory操作中的安全标识符是记录用户授权过程信息的基础参数。它们使管理员能够追踪访问活动并识别潜在问题,例如长期未登录的用户。

举例来说,当企业需要识别已闲置90天的账户时,通常会使用LastLogonTimeStamp属性。而另一方面,在取证调查中则需要依赖LastLogon属性的精确结果——该属性记录了用户在特定域控制器(DC)上的实际登录时间。

什么是LastLogon属性?
LastLogon属性记录了用户在特定域控制器(DC)上的最后一次登录时间。该属性具有非复制特性,意味着每个域控制器都会独立保存其专属记录。虽然它能提供最精确的登录时间数据,但若需获取域内全局信息,必须向所有域控制器发送查询请求。

LastLogon属性的核心优势在于其高精度特性。然而由于该属性未在域控制器之间同步,对于管理大规模环境的管理员而言,这反而成为痛点。例如,若企业部署了五台域控制器,每台控制器都将单独保存用户的LastLogon记录。

使用 PowerShell 查询 LastLogon
要从所有 DC 收集用户的 LastLogon,可以使用 PowerShell。此脚本会获取并汇总数据:
$Username = "john.doe"
$DCs = Get-ADDomainController -Filter *
$LastLogonResults = foreach ($DC in $DCs) {
Get-ADUser -Server $DC.HostName -Identity $Username -Properties LastLogon |
Select-Object @{Name="DomainController";Expression={$DC.HostName}},
@{Name="LastLogon";Expression={[DateTime]::FromFileTime($_.LastLogon)}}
}
$LastLogonResults | Sort-Object LastLogon -Descending
此脚本会查询所有 DC 的用户 LastLogon 属性,返回结果并按日期排序。

什么是LastLogonTimeStamp属性?
LastLogonTimeStamp属性提供域级登录活动视图。与LastLogon不同,该属性会在所有域控制器(DC)间同步更新,因此管理员可通过任意域控制器获取统一数据。但其更新周期较长:属性默认值为0,仅当用户最近一次登录发生在14天或更早前时才会触发更新。

该属性通过更新延迟机制平衡了复制流量与管理实用性。它能便捷追踪闲置账户,为审计工作提供基础支持,但由于更新频率较低,无法用于高精度登录时间追踪。

修改更新频率
管理员可以通过修改 Active Directory 中的 ms-DS-Logon-Time-Sync-Interval 属性来调整默认的 14 天间隔。例如,要将间隔改为 7 天,请使用以下 PowerShell 命令:
Set-ADObject -Identity "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=yourdomain,DC=com" -Partition "CN=Configuration,DC=yourdomain,DC=com" -Add @{msDS-LogonTimeSyncInterval=7}
这种调整允许更频繁地更新,提供相对最新的登录数据,同时仍能最大限度地减少复制流量。

什么是 LastLogonDate 属性?
LastLogonDate 属性是 LastLogonTimeStamp 属性的人性化版本。它以可利用的格式提供相同的信息,由主体根据需要进行解释。

如果管理员需要用户操作的整体信息,而又不需要转换原始时间戳,那么使用 LastLogonTimeStamp 属性是最理想的选择。与 LastLogonTimeStamp 类似,它也会复制到所有其他 DC 上。

使用 PowerShell 获取 LastLogonDate
要检索用户的 LastLogonDate,请执行以下操作:
Get-ADUser -Identity "john.doe" -Properties LastLogonDate | Select-Object Name, LastLogonDate
该命令以简单明了的格式输出用户名及其最后登录日期,有助于快速查看。

追踪登录属性的重要性

  • 识别闲置账户

    • 休眠账户因易被攻击者重新激活而构成重大安全威胁。通过登录属性追踪用户活动,管理员可快速判定并禁用长期未使用的账户。
  • 检测可疑行为

    • 异常登录(如深夜或凌晨时段的系统访问)可能是账户遭劫持的信号。LastLogon等属性详细记录登录会话信息,帮助管理员回溯安全事件的时间线以调查可疑案例。
  • 支持合规审计

    • 《通用数据保护条例》(GDPR)和《健康保险流通与责任法案》(HIPAA)等法规要求严格监控用户访问行为。登录属性作为关键审计证据,是企业维持合规的重要支撑。
  • 简化审计流程

    • LastLogonDate等集中化存储的登录数据大幅简化审计工作。管理员可直观分析访问模式趋势,在提升效率的同时降低审计复杂度。

Lepide如何助力安全运维
Lepide Active Directory审计工具提供全域用户活动实时可视性,支持对安全事件与异常登录的即时响应。通过持续监控认证活动,管理员能在可疑模式或未授权访问发生时即刻介入调查,而非依赖定期审计被动发现问题。其Active Directory清理方案通过识别/禁用休眠账户,有效缩减攻击面,降低未授权访问风险。

除实时威胁检测外,Lepide还提供:

  • 可定制化告警机制:针对特定安全场景(如登录失败、非工作时间访问、异常行为模式)配置触发规则
  • 全景合规支持:详细日志记录与合规报告自动生成功能,完整留存历史数据并构建符合GDPR/HIPAA等标准的审计轨迹

通过部署Lepide解决方案,企业可实现:
✅ Active Directory环境全景洞察
✅ 安全防护体系强化升级
✅ 合规性要求自动化满足
✅ IT运维效率显著提升

立即掌控Active Directory安全态势
[点击预约个性化演示],了解Lepide如何帮助您:

  • 监控全域登录活动
  • 实时检测安全威胁
  • 持续保持合规状态

常见问题
Q. 为什么每次登录后都不更新 LastLogonTimeStamp?
为尽量减少复制流量,LastLogonTimeStamp 更新的频率较低,通常每 14 天更新一次,除非另有配置。
Q. 如何获取用户最准确的最后登录时间?
查询所有域控制器上的 LastLogon 属性,并使用最新的时间戳。
Q. 能否修改 LastLogonTimeStamp 属性的更新频率?
可以,可以通过修改域配置中的 ms-DS-Logon-Time-Sync-Interval 属性来调整更新频率。
Q. 在 Active Directory 中,LastLogonDate 是否默认可用?
是的,LastLogonDate 是一个计算属性,默认情况下可用,它提供了 LastLogonTimeStamp 的人可读格式。

项目介绍

基于深度学习的智能害虫识别系统,帮助农业生产者快速、准确地识别农作物病虫害,提高病虫害防治效率,保障农业生产安全。系统采用前后端分离架构,前端使用Vue3+Element Plus构建用户友好的交互界面,后端采用Flask框架提供高效的数据处理和API服务,核心识别算法基于TensorFlow深度学习框架和ResNet50卷积神经网络模型。

系统主要功能包括:用户注册与登录、害虫图片上传、实时识别、识别历史记录查询、数据统计可视化等。用户可以通过上传害虫图片,
图片
图片
图片

选题背景与意义

随着全球人口的增长和农业现代化的推进,农作物病虫害防治面临着越来越大的挑战。传统的病虫害识别方法主要依赖人工经验,存在识别效率低、准确率不高、受主观因素影响大等问题。尤其是在大规模农业生产中,病虫害的及时识别和防治显得尤为重要,直接关系到农作物的产量和质量。

近年来,深度学习技术在计算机视觉领域取得了显著进展,卷积神经网络(CNN)在图像识别任务中表现出了优异的性能。ResNet50作为一种深度残差网络,具有强大的特征提取能力和梯度传播效率,能够有效解决深度网络训练中的梯度消失问题。

关键技术栈:ResNet50

ResNet50是微软研究院提出的一种深度残差网络结构,是ResNet(Residual Network)系列网络中的经典模型之一。它由50层卷积神经网络组成,通过引入残差连接(Residual Connection)解决了深度网络训练中的梯度消失问题,使得构建更深层次的神经网络成为可能。

ResNet50的核心创新点在于残差块(Residual Block)的设计。传统的卷积神经网络在堆叠多层后会出现退化现象,即网络深度增加但性能反而下降。ResNet通过在残差块中引入恒等映射(Identity Mapping),使得网络可以学习到残差信息,避免了退化问题的发生。残差块的结构可以表示为:y = F(x, {Wi}) + x,其中F(x, {Wi})是残差函数,表示学习到的特征与输入之间的差异。

技术架构图

图片

系统功能模块图

图片

演示视频 and 完整代码 and 安装

地址:https://www.yuque.com/ziwu/qkqzd2/qis0k3f4bsvy0xop

随着电子签章应用在市场越来越普及和受追捧,超级大厂也相继推出了自己的电子签章产品,如华为的华为云电子签、阿里的阿里云电子签、腾讯的腾讯电子签服务。那这些大厂推出的电子签章产品和服务与传统第三方电子签公司北京安证通有什么相同和区别呢?接下来我们通过多个维度进行差异化的浅析。1. 核心定位与生态整合
图片

  1. 技术架构与优势
    图片
  2. 合规性与认证
    图片
  3. 定价与成本
    图片
  4. 适用场景与客户群体
    图片
  5. 优势与局限性对比云厂商电子签的优势:1) 生态协同:与现有办公流、业务系统无缝衔接。2) 成本优势:云用户可享受集成套餐优惠。3) 快速部署:针对通用场景开箱即用。北京安证通的优势:1) 专业性:深耕电子签名领域,功能更细致。2) 中立性:数据不绑定单一生态,适合多平台协作。3) 行业方案:更适配高频复杂场景

出于市场对网络安全的不断重视,众多企业也逐渐开启网站的SSL证书部署,既响应政策号召,又可避免被潜在的网络攻击威胁。正因如此,当企业在官网上看到绿色的安全锁标志时,通常认为数字证书的任务已经结束。事实上,真正的风险往往从安全证书部署完成后才开始显现。从证书签发机构的可信度,到服务器配置的细节,再到日常维护和管理,每一个环节的疏忽,都有可能让这一重要的安全措施失去应有的效果,甚至演变成新的攻击途径。JoySSL通过长期的安全审查和行业研究发现,多数企业在部署SSL证书后,常常忽略其生命周期内的安全管理工作,从而无形中埋下了严重的隐患。这些问题并非SSL技术的固有缺陷,而是源于“部署即完成”的错误观念以及粗放的管理方式。

证书安全锁不彻底 身份验证模糊

安全锁标志并不意味对所有内容的保护,主网页采用HTTPS加密,但部分资源如图片或样式表,仍通过HTTP协议加载,从而形成混合内容,导致浏览器降低网站的安全评级,未加密的HTTP资源可能会被篡改。

对金融、政务、电商等平台,仅使用DV证书无法有效向用户证明企业的真实身份,尤其在防范钓鱼攻击方面,信任缺陷尤为突出。EV证书显示的绿色地址栏,能够为企业提供对抗仿冒行为的显著可视化优势。

过期证书服务中断 一证通用弊端

未能及时续期是证书服务中断的主要原因,依靠个人记忆来管理大批量证书的续期工作,极易出现疏漏,从而导致关键业务平台因证书过期而无法正常运行。引入自动化的监控,建立完整的证书生命周期管理机制,方能有效降低中断风险。

私钥作为SSL证书体系的核心,需要极高的保护措施。若在多台服务器间重复使用同一私钥,将私钥以明文存储在共享目录或代码仓库中,一旦私钥泄露,所有相关服务均可能受到安全威胁。

颁发机构不被信任 证书无人管理

并非所有证书颁发机构都具备同等的可信度,较为冷门的颁发机构其根证书可能难以得到广泛认可,应优先选择与全球顶级根证书库合作的供应商。

随着企业业务规模的不断扩大,可能会产生大量无人维护的数字证书。一旦出现过期或配置问题,便可能引发安全漏洞与业务中断的风险。企业需完善并维护统一的证书管理清单,确保安全措施全面覆盖。

主动部署数字证书 打造安全堡垒

部署SSL证书,只是创建可信通信环境的开端,而非安全策略的最终目标。其实际效果取决于配置的规范性、管理的高效性以及应对的及时性。JoySSL市场总监表示,当下互联网环境形势严峻,企业应将SSL证书管理作为核心的安全运营工作,系统化解决常见的风险。让SSL证书成为坚固、可靠且持续有效的安全屏障,为企业的数字化转型提供全面且专业的保障。

Aspire 13.1作为增量更新发布,它基于 Aspire 13 引入的多语言平台基础。此次发布专注于通过增强命令行界面、更深入地支持 AI 辅助开发工作流程、改进仪表板体验以及更清晰的 Azure 环境部署行为来提高开发者的生产力。

 

据团队报告,此次更新旨在使日常开发任务更可预测、更易于自动化,并与现代 AI 编码工具更好地对齐。

 

Aspire 13.1 中的一个核心新增功能是通过与模型上下文协议(Model Context Protocol,MCP)集成,扩展了对 AI 编码智能体的支持。一个新的命令允许项目在初始化时支持 MCP,使兼容的 AI 工具能够发现 Aspire 集成、检查应用程序结构并与运行中的资源交互。

 

aspire mcp init
复制代码

 

连接后,AI 智能体可以查询应用程序状态、查看日志并通过暴露的端点检查跟踪。这种集成旨在简化开发过程中 AI 助手的使用,而无需为每个工具进行自定义设置。

 

Aspire CLI进行了几次更新,旨在减少创建、运行和维护项目时的摩擦。如前所述,项目创建命令现在可以选择通道,并且一旦选择,将全局保持,确保新项目的行为一致。

 

CLI 还能检测到已经运行的实例,并在启动新运行之前自动停止它们,从而避免常见的冲突。安装脚本现在支持一个选项来跳过修改系统 PATH,这在受控环境中非常有用。

 

此次发布的仪表板更新专注于清晰度和可见性。新的参数标签允许直接从资源详情中查看和管理配置值。GenAI 可视化器已增强,以更好地显示工具定义、评估和相关日志,并支持预览音频和视频内容。仪表板的几个稳定性问题也得到了解决。

 

(GenAI 可视化器工具定义,来源:官方Aspire文档

 

Azure改进方面,Aspire 13.1 引入了更清晰的命名和更强大的验证。Azure Redis 集成已重命名,以更好地匹配底层服务,并且在部署过程中更早地执行额外检查,以便尽早发现配置问题。

 

Azure 资源现在暴露出标准化的连接属性,这些属性在支持的语言中通用,使得非.NET 应用程序能够使用一致的设置进行连接。还增加了对 Azure App Service 中部署槽的支持和对默认角色分配的更精细控制。

 

通过引入通用容器注册表资源,容器和部署工作流得到了改进,允许开发者锁定 Azure 容器注册表之外的注册表。容器镜像推送现在更加明确和可预测,特别是在部署到 Azure 容器应用时。Docker Compose 支持已得到改进,以增强可移植性并减少并行构建期间的竞争条件。

 

此次发布还包括针对JavaScript和前端开发的更新,例如一个新的起始模板,该模板结合了 ASP.NET Core 后端和基于 Vite 的前端,改进了开发中的 HTTPS 处理,并修复了与包管理器相关的问题。

 

证书处理得到了简化,新增了配置 HTTPS 和在支持的容器中终止 TLS 的新 API。

 

此外,Aspire 13.1 还稳定了之前预览版中的几个集成,包括 Dev Tunnels、端点代理支持和 Azure Functions。模板已更新以反映一致的模式,并且广泛的错误修复集提高了跨平台的可靠性。

 

Aspire 13.1需要.NET 10 SDK 或更高版本。建议从早期版本升级的开发者查看已记录的重大变更,特别是围绕 Azure Redis API 和重命名的连接属性。

 

对于感兴趣的读者,完整的发布说明和详细文档可在官方Aspire存储库和文档渠道中找到。

 

原文链接:

https://www.infoq.com/news/2026/01/dotnet-aspire-13-1-release/

生成式 AI 的投资回报远超预期?Snowflake 调研全球 1900 位企业与 IT 专业人士后发现平均 ROI 高达 41%!点击下载完整报告

每个人都在努力提高大语言模型的精准度。但真正的挑战并非精度,而是上下文理解能力。在 BUILD 2025 大会上,Hex 合作伙伴工程负责人 Armin 探讨了为什么传统的方法,如评估套件或合成问题集往往不够有效,以及成功的 AI 系统是如何通过随着时间推移逐步积累上下文来构建的。

由 Snowflake Cortex 提供支持的 Hex,启用了一个新的对话式分析模型,每次交互都让模型变得更聪明。通过 Hex 的 Notebook Agent 与 Threads 功能,业务用户可直接定义核心问题,而数据团队则将这些问题精炼、审计并转化为持久且值得信赖的工作流。

在这个模型中,测试用例不再由数据团队闭门设计,而是由业务需求驱动并在数据工作流中自动实施,最终形成一个具有生命力的上下文系统,而非一成不变的提示词或测试集,它能随着组织共同演进。

准确率不是终点

Armin 开场就把矛头对准了一个常见做法:把业务用户会问的问题合成成一批样例,甚至进一步转成 SQL 查询,然后把这些喂给 LLM,用类似单元测试的方式去衡量它的准确率、稳定性与一致性。他不否认“准确性是顶层关注”,但他强调,把 LLM 当作传统软件组件来做单元测试,本身就是一个不合适的范式。

原因在于,当你把业务问题硬转换为一组 SQL,并据此去构建样例与评估集时,你很难覆盖真实业务中不断变化的语义、不断扩张的问题空间,以及不同用户在不同语境下对同一指标的不同问法。更重要的是,即使你做出了一个看似通过率很高的测试集,也依然回答不了企业最在意的那件事:当它在真实环境中生成了一个结论,你如何知道它不是在胡编?你又如何知道它到底做了什么才得到这个结论?

因此,Armin 把正确性从结果层拉回到系统层:你需要的不是一个靠样例证明自己正确的聊天机器人,而是一套可审计的系统,它能够随着时间变得灵活、可塑,能够让业务用户在使用中不断收敛可回答的问题类型,也能够让系统拥有被“硬化”的路径:哪些能力可以放开,哪些问题必须收紧,哪些定义需要固化,哪些数据应该进入上下文、哪些不应该。

在他看来,真正有效的路线是:从一套能运行、能被观察的系统出发,让系统在使用中暴露问题、沉淀模式,再反过来加固上下文。这种思路听起来不如直接做评估来得爽快,但它更接近企业系统的真实生长方式。

对话式分析如何变成“可审计的系统”

为了把“可审计”讲得具体,Armin 用 Hex 的产品演示展示了对话式分析在真实系统中应该是什么形态。演示从一个非常典型的业务问题开始:假设我是营销经理,我想让系统分析销售机会的“首次触达来源”(first touch source),并做营销归因视角的拆解。这里一个很关键的动作,是他先在系统里配置模型提供方:通过密钥对(key pair)连接到 Snowflake 实例,使用 Snowflake Cortex 内托管的 Claude,并强调这是一个“walled garden”的私有网络环境。这样做的直接意义是:模型驻留在数据所在的环境里,数据可以传递给模型,同时也能让 IT 团队对数据出入边界更放心。

进入线程后,Hex 并不是立刻吐出一句“结论”,而是在后台进行一系列用户不可见但决定可信度的步骤:它会先围绕可访问的元数据“思考”,查看平台上已有的 Hex 项目、仪表板或资产,判断是否存在可复用的内容;它会拉取来自数据仓库的表描述、列描述等元数据,并强调这些可以自动导入、不需要复杂配置;如果企业已经有 dbt 元数据,也可以进一步带入;随后它形成一个“漏斗式”的收敛过程:从广义元数据到相关表、再到更具体的模型信息与底层数据,最后才开始把 SQL 单元格、可能的 Python 单元格、图表与可视化逐步组织起来,用以回答最初的问题。

这也解释了他在演示里专门强调的一个点:这种模式一开始会“慢”,但这是刻意设计的。因为此时系统面对的是生产数据仓库,它需要把大量上下文带进来,需要推理与迭代,而这类深度思考天然会以时间为代价。换来的收益是:它可以生成更细致、接近数据科学家或嵌入式数据分析师水平的分析过程。Armin 也提到,未来会有更偏“快速、短促回答”的迭代版本,可能更多依赖语义模型,而不是每次都在全量上下文里深挖。但在这个阶段,他们优先解决的是“在没有分析师介入的情况下,业务用户也能得到一份扎实的分析报告”。

当线程生成结果后,界面里不仅有图表,还能继续做探索:拖拽维度与度量、查看底层表格数据、检查异常、做更深的切片。这时“可信度焦虑”就会自然出现:这么多信息暴露给业务用户,我怎么知道它没有幻觉?我该不该信这些 SQL?我如何让它更确定?Armin 的回答不是“相信模型”,而是把系统的底座亮出来:在 Hex 里,每一个线程、每一个项目,背后都由笔记本支撑。把线程保存为项目后,你可以在笔记本里看到完整对话以 Markdown 的形式呈现;更重要的是,你能看到它实际运行的 SQL、过滤条件、连接逻辑、图表生成过程,以及它如何一步步构建出整份报告。对于负责准确性与治理的数据团队来说,这种“把对话落到可审计的笔记本”非常关键——它让系统从一开始就具备被审核、被追责、被修正的可能。

在此基础上,Armin 进一步展示了一个更现实的协作场景:业务用户提出问题后,不一定要立刻去找数据团队提工单,而是先在对话线程里得到初步洞察;如果需要更深入的分析(比如进一步做季节性拆解),技术用户可以把笔记本智能体(notebook agent)限定在这个项目范围内,和智能体一起继续规划、推理、生成图表,并在生成的“待处理变更”中逐条审核、决定保留哪些结果。分析由此变成一种可协作、可迭代、可沉淀的工作流,而不是一次性、不可解释的问答。

从一次性对话到可复用资产

如果到这里为止,Hex 展示的是“可观察性”,那么 Armin 在后半段想讲的,是上下文如何变成系统能力,如何从一次性对话沉淀为可复用资产。

他先展示了一个从笔记本走向应用(app builder)的路径:当某些分析内容需要“持久化”,例如营销与销售负责人希望随时看到季节性分析或关键指标,而不是每次回来重新提问,那么就可以把笔记本中已经生成的图表、文本等资产拖拽到应用构建器里,做成一个仪表板、报告或更像 BI 的交互界面。这里的核心并不是“又做了一个 BI”,而是强调:即便呈现形态变成 BI 风格,背后依然由笔记本驱动,仍然保留 SQL、Python、Snowpark 等灵活性;同时,笔记本与应用这两种范式始终连接,资产是可回溯的。换句话说,展示层可以更友好,但底层逻辑并不会因此变成不可审计的黑箱。

紧接着他抛出了“连接胶水”的问题:当我们有线程、有笔记本、有应用,如何让它们构成一个一致的策略?答案是语义模型——它是 Armin 所谓“上下文引擎”的关键组成部分。原因也很务实:企业里那些精心构建的报表与仪表板,通常包含大量转化逻辑、业务口径、SQL/Python 查询,这些恰恰是 LLM 最需要、也最容易误解的上下文。如果不能把这些上下文结构化,LLM 的确定性就无从谈起。

在演示里,语义模型有两条路:一是导入已有的 Snowflake semantic view。Hex 可以浏览生产仓库、发现可访问的语义视图,然后快速引入,例如引入一个 B2B sales model,让 enriched metadata 直接在 Hex 中可用。另一条路更贴近多数团队的起点:不是先有语义视图,而是先有一堆被业务反复使用的仪表板项目。Hex 的语义建模工作台里有一个“建模智能体”(modeling agent),它能理解 Hex 的语义建模能力,并且能针对某个具体项目(例如 sales and marketing dashboard)去阅读项目里包含的 SQL 单元格、DataFrame 操作、joins、函数与过滤条件,形成建模计划,做错误预防,推断表关系,把“项目里已经存在的业务逻辑”烘焙进语义模型中。

这一段其实回答了一个关键的企业问题:语义模型从哪来?它不一定需要从零凭空设计,它可以从企业已经在用的分析资产中被抽取、被规范、被版本化。建好之后,语义模型还能用一种“拖拽式”的方式被检查:你可以选择维度、度量,查看聚合、查看系统生成的 SQL,在发布之前把模型硬化到你满意的程度。

更进一步,Armin 也回应了“供应商锁定”的担忧。他明确表示,Hex 不希望用专有 YAML 把用户锁死,并提到两个方向:其一是和 Snowflake 等一起推动“开放语义交换”(Open Semantic Interchange),一个由约 18 家甚至更多公司组成的联盟,目标是让语义模型信息能在不同系统之间互换,以促进 LLM 采用并避免 vendor lock-in;其二是更近期开启“写回”能力,让在 Hex 中构建的语义模型可以写回到 semantic views 中,保证不同系统间“友好共存”。这些内容在分享里出现得很明确:终点不是锁定格式,而是让用户愿意因为体验与工作流而持续使用。

当语义模型准备好后,线程侧的使用方式也随之变化:你可以把对话线程限定为“只使用语义模型”,而不是访问整个生产数据仓库。Armin 强调,这会让系统随着时间更确定:当你不断硬化语义模型、补充上下文,它会越来越稳定、越来越可控。也正因此,他再次回到开场的观点:把精力放在构建上下文系统上,而不是试图用合成样例把原型聊天机器人测到“看起来准确”。

规模化审计与上下文飞轮

分享的最后一部分,Armin 把问题推到最现实的规模化挑战上:当系统从一个人试用扩展到五十、一百个用户时,你如何监控它?你如何知道 LLM 系统到底在做什么,业务用户到底拿它解决什么问题?这时,“可审计”就不能停留在某个线程或某个项目,而必须成为一套能覆盖全局的治理能力。

他提到 Hex 的“上下文工作室”(context studio),目前处于少数 Alpha 合作伙伴的 Alpha 阶段,但他之所以专门强调它,是因为它承载了上下文系统最关键的一环:理解使用行为,反过来指导上下文如何演进。

具体来说,你可以看到平台总体使用情况:用户更常用笔记本还是线程?创建了多少语义模型?也可以按对话量看用户分布,查看某个用户使用线程的频次、提问的类型。更重要的是,当你下钻到“问题类型”时,Armin 给出了一个很强的判断:这些真实问题才是你的单元测试。不是你在上线前试图一次性“破坏一切”并用评估集兜住,而是看清业务用户到底在问什么,再回去硬化你需要硬化的上下文与问题类型。

围绕“如何策划上下文”,他在分享里给出了三个层次的抓手。最直接的是规则文件(rules file):你可以在里面定义 SQL 的数据质量防护、业务定义、偏好的 SQL 风格、杂项信息,以及希望系统使用的可视化方式,并且这些内容可以即时编辑、保存或导出。第二层是“经认可的数据”(endorsed data):由数据团队或所谓“金层”背书的数据资产,可以在 Hex 的语境下被定义清楚,决定哪些数据可以喂给 LLM。第三层则是更成熟、也最关键的做法:语义项目(semantic projects)。随着审计能力增强,你不仅能看到语义模型被使用的次数,还能观察是否有多个语义模型被同时使用、是否需要在某些场景中合并;你也能判断哪些项目最常被引用,从而决定是否需要对下游数据做更多建模,或者是否需要补充列描述、表描述等元数据来改善上下文质量。

这些细节共同指向同一个结论:上下文不是一次性设计出来的,它是被真实使用不断“磨”出来的。你从稍微宽的范围起步,抽取一两个语义模型,让业务用户用起来;再通过审计看到真实问题与真实路径,回去修规则、补语义、加背书数据、完善元数据。如此循环,系统才会越来越确定、越来越可信。

这场分享最有价值的地方,在于它没有把“可信”简化为一个指标,也没有把“准确率”当作唯一的归宿。Armin 反复强调的其实是另一套思维:企业要的不是一个在评估集上表现漂亮的聊天机器人,而是一套能持续吸收上下文、可审计、可治理的系统。

从线程到笔记本的可观察性,从笔记本到应用的资产化,从项目到语义模型的上下文结构化,再到面向规模化使用的审计与上下文工作室——这些环节被串成一个整体,目的只有一个:让 LLM 在真实业务里变得更确定,并且在需求增长时仍然能保持可控与可信。

原视频地址:https://www.snowflake.com/en/build/americas/agenda/?login=ML

🔥【活动推荐】2 月 2 日-6 日,Snowflake Discover重磅上线!这是一场免费、线上、可实时互动的技术活动,旨在帮助您全面提升数据与 AI 能力,深入了解如何更高效地管理、整合与分析数据。4 天时间 18 场技术干货分享,由来自亚太地区的一线技术专家亲自分享与讲解~

点击报名 Discover,更多 Snowflake 精彩活动请关注专区

孩子三年级,老师让用金山打字通练习打字
我在家里的 Windows 机上尝试装,搜到两个疑似官方的地址,结果一个给我装了金山软件管家,一个给我装了毒霸。都卸载了。商店了搜了一个,结果是山寨的。最后不知道在哪找到一个,打开一看,不支持高分屏,完全没法用……
搜了些网页上练打字的,都不满意。

我想目的是练打字,小孩子字都认不全,如果打的内容自己熟悉,才能集中精神到打字上。

于是晚上过一会发个命令,两晚上 Vibe 出来一个部署了一下,甚至还随手买了个域名。

有刚好要学打字的孩子的可以一起试试,不知道还有什么可以让打字更有趣的办法啊,欢迎提建议。

https://lessontyping.com

---
🚀 Screenshot API - 专业的网页截图解决方案
无需自建服务器,无需维护浏览器环境,一个 API 调用搞定一切!

🎯 为什么选择 Screenshot API ?
开箱即用,极简集成
- 一行代码完成网页截图
- RESTful API 设计,支持所有编程语言
- Bearer Token 认证,安全可靠

🎯 典型应用场景

- 📱 小程序/H5 - 解决小程序截图限制,生成分享海报
- 📊 数据大屏 - 定时生成报表截图,自动归档
- 📄 文档生成 - 网页转图片,批量生成 PDF
- 🎨 设计工具 - 批量生成网站截图,竞品分析
- 🔍 SEO 工具 - 网站预览与监控
- 📧 营销工具 - 自动生成邮件预览图
🎁 福利
新用户注册即送 500 次免费额度!
使用兑换码账号可获得一年的 pro 版使用权限,兑换码已放在评论区,先到先得!
(兑换码需要登录后,在控制台右上角的个人中心的账号设置选项使用)

---
立即体验: https://screen-web.redbin.cn
由开发者为开发者构建 | 简单 · 强大 · 可靠
---
欢迎各位大佬试用,有任何意见或建议可以:
- 在评论区反馈
- 通过网站的意见反馈渠道提交
- 持续迭代优化中 🔥

在人工智能的发展历程中,每一次交互范式的变化,几乎都对应着一次底层能力的跃迁。 2026 年,AI 正在经历一场清晰而确定的转向:从以对话为中心,走向以任务为核心。

这一变化并非界面形态的简单升级,而是 AI 角色定位的根本重构。


一、对话式 AI 的阶段性完成

以 Chatbot 为代表的对话交互,曾是大模型技术普及的重要入口。 它降低了使用门槛,让非技术用户也能直接接触和理解生成式 AI 的能力。

但在真实生产环境中,这种交互方式逐渐暴露出边界:

  • 交互成本随任务复杂度急剧上升

用户需要反复构造提示、修正结果,效率并不稳定。

  • 对复杂任务缺乏结构化支撑

多步骤、并行逻辑、长周期目标难以通过线性对话完成。

  • 输出偏“表达”,而非“结果”

对话更擅长解释问题,却难以直接交付可执行成果。

这意味着,对话式 AI 正在完成它作为“通用入口”的历史使命。


二、能力演进:AI 正在获得“做事”的条件

范式转移的核心原因,并不在交互设计,而在能力结构的变化。

1. 推理能力走向系统化

模型开始具备任务分解、路径规划和结果校验的能力, 不再只生成答案,而是先形成“如何完成任务”的内部结构。

2. 工具调用成为标准能力

通过 API、函数调用等机制,AI 可以直接操作搜索、代码、数据和业务系统, 从文本生成扩展为真实动作的执行。

3. 目标驱动的智能体形态出现

在实际工程中,智能体来了, 它不再依赖逐条指令,而是围绕目标自主组织行为流程,形成感知—决策—执行的闭环。


三、任务导向架构的三层共识

围绕“完成任务”这一目标,行业逐渐形成稳定的系统结构。

1. 规划层(Planning)

将模糊需求转化为明确步骤,并在执行过程中动态调整。

2. 记忆层(Memory)

通过上下文、向量化存储等方式,支撑长期任务与跨阶段协作。

3. 执行层(Action)

连接外部系统,直接产出结果,而非仅给出建议。

这三层共同构成了 AI 从“对话系统”走向“任务系统”的基础。


四、实践趋势:AI 正在消失于界面之中

在越来越多的应用场景中,AI 不再以独立产品形态存在:

  • 嵌入到代码编辑、设计、数据分析等工具中,作为功能模块运行
  • 在后台完成大部分流程,仅在关键节点引入人工确认
  • 从“被频繁对话”转向“低存在感、高完成度”

AI 正在成为一种基础能力,而非一个需要持续互动的对象。


五、结论:评价标准已经改变

这场转移的核心,并不是“AI 是否更像人”, 而是:

  • 是否能稳定完成任务
  • 是否能降低人类参与成本
  • 是否能在真实流程中长期运行

对话没有消失,但已退居入口层。 真正决定 AI 系统价值的,是其任务完成效率与可靠性

2026 AI 元年,本质上是 AI 从“展示能力”走向“承担职责”的一年。

在构建问答Agent时,多轮对话的上下文记忆是核心需求——让Agent能记住历史对话内容,结合「历史问题+历史回答+当前问题」给出连贯回复,而非孤立回答每个问题。

LangChain中的ConversationBufferMemory轻量、易用的短期记忆组件,核心作用是按顺序缓存对话历史,并将历史内容注入到模型的输入提示中,实现问答Agent的短期记忆能力,适合中小长度的多轮对话场景。

本文将基于LangChain框架,从核心原理、完整可运行代码、关键细节、进阶优化四个维度,教你为问答Agent集成ConversationBufferMemory,支持OpenAI/国产大模型(通义千问/文心一言),代码可直接复用。

一、核心概念铺垫

1.1 ConversationBufferMemory 核心作用

  • 键值对形式按时间顺序存储对话历史(问题+回答);
  • 支持将对话历史格式化为字符串/消息对象,注入到LLM的输入提示中;
  • 提供清空记忆、获取记忆、修改记忆的便捷方法;
  • 轻量无依赖,无需额外存储,对话历史保存在内存中(会话结束即销毁,符合「短期记忆」定位)。

1.2 核心搭配

ConversationBufferMemory通常与ConversationChain(通用对话链)/RetrievalQA(知识库问答链)搭配使用,本文先实现基础问答Agent(基于ConversationChain),后续补充带知识库的问答Agent优化方案。

1.3 关键参数

参数名作用常用值
memory_key记忆在提示模板中的变量名(需与提示模板一致)chat_history(推荐)
return_messages记忆返回格式:True返回消息对象(HumanMessage/AIMessage)False返回拼接字符串False(基础场景)/True(复杂场景)
input_key输入问题的变量名input(默认,无需修改)
output_key输出回答的变量名output(默认,无需修改)

二、环境准备

安装LangChain核心依赖+大模型适配依赖(以OpenAI/通义千问为例,二选一即可):

# 核心依赖:LangChain核心+社区组件
pip install langchain-core langchain-community -i https://pypi.tuna.tsinghua.edu.cn/simple

# 可选1:OpenAI模型依赖(GPT-3.5/GPT-4)
pip install langchain-openai -i https://pypi.tuna.tsinghua.edu.cn/simple

# 可选2:国产大模型依赖(通义千问/文心一言/智谱清言)
pip install langchain-qianfan langchain-dashscope -i https://pypi.tuna.tsinghua.edu.cn/simple

三、完整实现:基础问答Agent+短期记忆

3.1 方案1:基于OpenAI模型(GPT-3.5/GPT-4)

# 1. 导入核心模块
from langchain_openai import ChatOpenAI
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
from langchain.prompts import PromptTemplate
import os

# 2. 配置环境(OpenAI API密钥)
# 国内用户需配置代理:os.environ["HTTP_PROXY"] = "http://127.0.0.1:7890"
os.environ["OPENAI_API_KEY"] = "你的OpenAI API密钥"

# 3. 初始化LLM模型
llm = ChatOpenAI(
    model="gpt-3.5-turbo",  # 推荐gpt-3.5-turbo,性价比高
    temperature=0.1,        # 越低回答越稳定,适合问答场景
    max_tokens=2048
)

# 4. 初始化ConversationBufferMemory(核心:短期记忆)
memory = ConversationBufferMemory(
    memory_key="chat_history",  # 记忆变量名,需与提示模板中的{chat_history}一致
    return_messages=False,      # 返回字符串格式的对话历史,适合基础场景
    input_key="input"           # 输入问题的变量名,默认input即可
)

# 5. 自定义带记忆的提示模板(必须包含{chat_history}和{input})
# 模板说明:chat_history=历史对话,input=当前问题,让模型结合两者回答
prompt = PromptTemplate(
    input_variables=["chat_history", "input"],  # 必须包含记忆变量和输入变量
    template="""你是一个专业的问答助手,善于结合历史对话内容回答当前问题。
    历史对话:{chat_history}
    当前问题:{input}
    请简洁、准确地回答当前问题,无需额外赘述。"""
)

# 6. 构建带记忆的问答链(核心:将LLM、记忆、提示模板绑定)
conversation_chain = ConversationChain(
    llm=llm,
    memory=memory,
    prompt=prompt,
    verbose=True  # 开启详细日志,可查看输入的提示内容(含历史对话)
)

# 7. 测试多轮问答(验证记忆效果)
if __name__ == "__main__":
    # 第一轮问答
    print("===== 第一轮 =====")
    res1 = conversation_chain.invoke({"input": "什么是大语言模型?"})
    print("回答:", res1["output"], "\n")

    # 第二轮问答(结合历史:问大语言模型的核心优势)
    print("===== 第二轮 =====")
    res2 = conversation_chain.invoke({"input": "它的核心优势是什么?"})
    print("回答:", res2["output"], "\n")

    # 第三轮问答(结合历史:问该优势的应用场景)
    print("===== 第三轮 =====")
    res3 = conversation_chain.invoke({"input": "这些优势能用到哪些领域?"})
    print("回答:", res3["output"], "\n")

    # 手动查看记忆中的对话历史
    print("===== 查看短期记忆 =====")
    print(memory.load_memory_variables({}))

    # 清空记忆(可选)
    # memory.clear()
    # print("清空记忆后:", memory.load_memory_variables({}))

3.2 方案2:基于国产模型(通义千问,国内用户推荐)

替换上述步骤2和步骤3即可,其余代码完全不变,适配性拉满:

# 2. 配置环境(通义千问API密钥,从阿里云DashScope获取)
os.environ["DASHSCOPE_API_KEY"] = "你的通义千问API密钥"

# 3. 初始化通义千问模型(替换OpenAI)
from langchain_dashscope import ChatDashScope
llm = ChatDashScope(
    model="qwen-plus",  # 通义千问轻量版,免费额度足够测试
    temperature=0.1,
    max_tokens=2048
)

3.3 运行结果与关键日志

核心输出(记忆生效)

===== 第一轮 =====
回答: 大语言模型是基于大尺度语料训练、具备强大自然语言理解与生成能力的人工智能模型,能完成文本创作、问答、翻译等多种自然语言处理任务。

===== 第二轮 =====
回答: 大语言模型的核心优势包括:1. 强大的上下文理解与语义分析能力;2. 灵活的自然语言生成能力,可输出流畅、贴合语境的文本;3. 泛化能力强,能处理未见过的新问题;4. 多任务适配,无需单独训练即可完成多种NLP任务。

===== 第三轮 =====
回答: 这些优势可应用在智能客服、内容创作、教育辅导、代码开发、数据分析、机器翻译、智能助手等领域,覆盖互联网、教育、金融、制造业等多个行业。

===== 查看短期记忆 =====
{'chat_history': 'Human: 什么是大语言模型?\nAI: 大语言模型是基于大尺度语料训练、具备强大自然语言理解与生成能力的人工智能模型,能完成文本创作、问答、翻译等多种自然语言处理任务。\nHuman: 它的核心优势是什么?\nAI: 大语言模型的核心优势包括:1. 强大的上下文理解与语义分析能力;2. 灵活的自然语言生成能力,可输出流畅、贴合语境的文本;3. 泛化能力强,能处理未见过的新问题;4. 多任务适配,无需单独训练即可完成多种NLP任务。\nHuman: 这些优势能用到哪些领域?\nAI: 这些优势可应用在智能客服、内容创作、教育辅导、代码开发、数据分析、机器翻译、智能助手等领域,覆盖互联网、教育、金融、制造业等多个行业。'}

Verbose日志(关键:验证历史对话注入)

开启verbose=True后,可看到模型的实际输入提示包含了历史对话,这是记忆生效的核心:

> Entering new ConversationChain chain...
Prompt after formatting:
你是一个专业的问答助手,善于结合历史对话内容回答当前问题。
    历史对话:Human: 什么是大语言模型?
AI: 大语言模型是基于大尺度语料训练、具备强大自然语言理解与生成能力的人工智能模型,能完成文本创作、问答、翻译等多种自然语言处理任务。
    当前问题:它的核心优势是什么?
    请简洁、准确地回答当前问题,无需额外赘述。
> Finished chain.

四、关键细节:避免记忆失效的核心要点

ConversationBufferMemory使用简单,但容易因参数不匹配、提示模板错误导致记忆失效,以下是必须遵守的3条铁律:

4.1 提示模板必须包含memory_key指定的变量

比如memory_key="chat_history",则提示模板中必须有{chat_history},且输入变量列表要包含该变量:

# 正确:input_variables包含chat_history和input
prompt = PromptTemplate(
    input_variables=["chat_history", "input"],
    template="历史对话:{chat_history}  当前问题:{input}"
)

# 错误:缺少chat_history,记忆无法注入
prompt = PromptTemplate(
    input_variables=["input"],
    template="当前问题:{input}"
)

4.2 invoke入参必须是字典,且键为input_key

默认input_key="input",因此调用时必须传{"input": "你的问题"},而非直接传字符串:

# 正确
conversation_chain.invoke({"input": "什么是大语言模型?"})

# 错误:入参不是字典,记忆无法关联当前问题
conversation_chain.invoke("什么是大语言模型?")

4.3 避免手动修改对话历史(除非特殊需求)

ConversationBufferMemory自动追加每次的inputoutput到记忆中,无需手动修改:

# 自动追加:无需干预
conversation_chain.invoke({"input": "问题1"})  # 记忆中添加问题1+回答1
conversation_chain.invoke({"input": "问题2"})  # 记忆中追加问题2+回答2

# 手动修改(特殊需求时使用)
memory.save_context(
    inputs={"input": "手动添加的问题"},
    outputs={"output": "手动添加的回答"}
)

五、进阶优化:适配更复杂的问答场景

5.1 优化1:带知识库的问答Agent+短期记忆

实际场景中,问答Agent通常需要结合私有知识库(如PDF/文档),此时将ConversationChain替换为RetrievalQA,并搭配ConversationBufferMemory即可实现「知识库+多轮记忆」的问答能力:

# 新增:导入知识库相关模块
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import FAISS
from langchain_text_splitters import CharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain.chains import RetrievalQA

# 1. 加载知识库(以文本文件为例,可替换为PDF/Word加载器)
loader = TextLoader("your_knowledge_base.txt")  # 你的知识库文件
documents = loader.load()
# 分割文本为小片段
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=100)
texts = text_splitter.split_documents(documents)
# 构建向量库
embeddings = OpenAIEmbeddings()
db = FAISS.from_documents(texts, embeddings)
retriever = db.as_retriever(search_kwargs={"k": 3})  # 每次检索3个相关片段

# 2. 初始化记忆(与基础版一致)
memory = ConversationBufferMemory(
    memory_key="chat_history",
    return_messages=False,
    input_key="question"  # 注意:RetrievalQA的默认输入键是question,需修改
)

# 3. 构建带记忆的知识库问答链
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",  # 适合小片段文本,简单高效
    retriever=retriever,
    memory=memory,
    chain_type_kwargs={
        "prompt": PromptTemplate(
            input_variables=["chat_history", "context", "question"],
            template="""结合历史对话和知识库内容回答当前问题,若知识库无相关内容,仅结合历史对话回答。
            历史对话:{chat_history}
            知识库内容:{context}
            当前问题:{question}
            回答要求:简洁、准确,基于知识库内容,不要编造。"""
        )
    },
    verbose=True
)

# 4. 测试:结合知识库+历史对话的多轮问答
qa_chain.invoke({"question": "知识库中提到的大语言模型有哪些应用?"})
qa_chain.invoke({"question": "这些应用中,哪个在教育领域的落地效果最好?"})  # 结合历史

5.2 优化2:限制记忆长度(避免历史对话过长)

ConversationBufferMemory无限制追加对话历史,当对话轮数过多时,会导致提示词过长、推理成本增加、模型注意力分散

解决方案:使用ConversationBufferWindowMemory(窗口记忆),仅保留最近N轮对话,本质是ConversationBufferMemory的进阶版,参数完全兼容:

from langchain.memory import ConversationBufferWindowMemory

# 仅保留最近2轮对话,超出的自动丢弃
memory = ConversationBufferWindowMemory(
    memory_key="chat_history",
    k=2,  # 核心参数:保留最近k轮对话
    return_messages=False
)

# 用法与ConversationBufferMemory完全一致,无需修改其他代码
conversation_chain = ConversationChain(llm=llm, memory=memory, prompt=prompt)

5.3 优化3:记忆格式为消息对象(适合复杂提示)

当提示模板需要更精细的对话格式时,将return_messages=True,记忆会返回HumanMessage/AIMessage对象,而非拼接字符串,便于灵活格式化:

# 初始化记忆:返回消息对象
memory = ConversationBufferMemory(
    memory_key="chat_history",
    return_messages=True,  # 核心:返回消息对象
    input_key="input"
)

# 自定义提示模板:遍历消息对象格式化
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder

# 使用MessagesPlaceholder接收消息对象,无需手动拼接
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是专业的问答助手,结合历史对话回答问题。"),
    MessagesPlaceholder(variable_name="chat_history"),  # 匹配memory_key
    ("human", "{input}")  # 匹配input_key
])

# 构建链(用法不变)
conversation_chain = ConversationChain(llm=llm, memory=memory, prompt=prompt)

六、常用操作:记忆的增删改查

ConversationBufferMemory提供了便捷的方法操作记忆,满足个性化需求:

# 1. 查看记忆内容
memory.load_memory_variables({})  # 返回字典,键为memory_key

# 2. 清空记忆(会话结束/切换用户时使用)
memory.clear()

# 3. 手动添加记忆
memory.save_context(
    inputs={"input": "手动添加的问题"},
    outputs={"output": "手动添加的回答"}
)

# 4. 手动删除记忆(需先获取记忆,再修改,最后重新保存)
# 步骤1:获取记忆内容
chat_history = memory.load_memory_variables({})["chat_history"]
# 步骤2:修改/删除内容(如删除最后一行)
chat_history = "\n".join(chat_history.split("\n")[:-2])
# 步骤3:重新保存
memory.chat_memory.add_user_message("")  # 清空原有记忆
memory.chat_memory.add_ai_message("")
memory.save_context(inputs={"input": ""}, outputs={"output": chat_history})

七、总结

7.1 核心流程回顾

为问答Agent添加ConversationBufferMemory的核心步骤仅5步:

  1. 安装LangChain核心依赖+大模型依赖;
  2. 初始化LLM模型(OpenAI/国产模型);
  3. 初始化ConversationBufferMemory,指定memory_key
  4. 构建包含记忆变量的提示模板;
  5. 将LLM、记忆、提示模板绑定到对话链,调用invoke实现多轮问答。

7.2 记忆组件选型建议

记忆组件核心特点适用场景
ConversationBufferMemory无限制保存所有对话历史,轻量易用短对话、测试场景
ConversationBufferWindowMemory保留最近N轮对话,限制长度常规多轮问答场景(推荐)
ConversationSummaryMemory对长对话历史做摘要压缩,节省令牌超长对话、高成本模型场景
VectorStoreRetrieverMemory将对话历史存入向量库,按需检索相关历史需精准匹配历史对话的复杂场景

7.3 性能优化建议

  1. 优先使用ConversationBufferWindowMemory,并设置合理的k值(如3-5轮);
  2. 降低LLM的max_tokens,避免无意义的长回答;
  3. 开启verbose=False(生产环境),减少日志开销;
  4. 生产环境中,可将记忆与会话ID绑定,实现多用户隔离。

八、常见问题排查

问题1:记忆失效,模型不结合历史对话回答

  • 原因:提示模板缺少memory_key变量,或input_variables未包含该变量;
  • 解决:检查提示模板,确保包含{chat_history}(或自定义的memory_key),且input_variables列表包含该变量。

问题2:调用时提示「key error: input」

  • 原因:invoke入参不是字典,或键与input_key不匹配;
  • 解决:调用时传{"input": "你的问题"}(默认input_key="input"),若修改了input_key,则传对应键。

问题3:知识库问答Agent记忆失效

  • 原因:RetrievalQA的默认输入键是question,而非input,记忆的input_key不匹配;
  • 解决:初始化记忆时设置input_key="question"

问题4:对话历史过长,模型推理变慢

  • 原因:ConversationBufferMemory无限制追加历史;
  • 解决:替换为ConversationBufferWindowMemory,设置k值限制轮数。

原文地址:https://mp.weixin.qq.com/s/HIzL5jDluuRKL4ZVOmrkqA

Moltbot 官网:https://clawd.bot/
GitHub:https://github.com/moltbot/moltbot


Clawdbot改名Moltbot

过去一段时间,大模型领域的讨论,正在悄然发生变化。

最早的时候,大家关注的是模型本身
参数规模、上下文长度、推理能力、对话表现。

随后,技术讨论逐渐转向 Prompt 工程
如何写 Prompt 才更稳定,如何减少幻觉,如何控制输出风格。

而当越来越多团队真正尝试把大模型接入到业务系统中,一个更现实的问题开始浮出水面:

真正难的,从来不是“让模型说话”,而是“让模型做事”。

Moltbot,正是在这样一个背景下,逐渐进入工程视野的。


一、为什么“聊天式 AI”很难真正落地?

很多团队在引入 Claude 或其他大模型时,往往会从一个最简单的形态开始:

  • 一个对话框
  • 一段 Prompt
  • 一次 API 调用

在 Demo 阶段,这样的方式往往效果不错。

但当你尝试把它用于真实业务,很快就会遇到一系列问题:

  • 用户提问方式高度不可控
  • 输出内容难以被系统稳定解析
  • 多轮对话状态混乱
  • 出错后无法回滚或兜底
  • 模型“自由发挥”,但业务不能接受

这时你会意识到一个关键事实:

聊天,非常适合展示模型能力,但并不适合承载复杂任务。

而企业真正需要的,往往不是一个“能聊天的 AI”,
而是一个 可以嵌入流程、被约束行为、被审计结果的 Bot


二、Moltbot 的核心定位:Bot,而不是 Chat

理解 Moltbot,首先要区分三个概念:

  • 模型(Model):Claude 本身的推理与生成能力
  • 聊天应用(Chat App):围绕对话体验构建的交互形式
  • Bot / Agent:围绕明确目标构建的执行单元

Moltbot 的定位,明显偏向第三种。

它并不是试图把 Claude 包装成“更聪明的聊天工具”,
而是关注一个更工程化的问题:

如何让 Claude 在可控边界内,稳定、可复现地完成一类任务?

这也决定了 Moltbot 的设计重点,从一开始就不是“对话体验”,而是:

  • 行为约束
  • 任务结构
  • 工程可控性

三、从工程视角看,Moltbot 解决了哪些关键问题?

从“自由输入”到“受控指令”

传统聊天模式下,模型面对的是高度不确定的自然语言。

而在 Moltbot 的设计理念中,更强调:

  • 明确的任务边界
  • 结构化或半结构化输入
  • 清晰的目标定义

模型不再“随意发挥”,而是在一个被限定的问题空间中工作。


从“自然语言回答”到“可执行结果”

在真实系统中,模型输出往往不是给人直接阅读的,而是要交给程序继续处理。

这意味着输出必须具备:

  • 稳定格式
  • 可解析结构
  • 可校验结果

Moltbot 更强调这种工程友好的输出方式,而不是追求语言表现力。


从“多轮聊天”到“任务状态管理”

多轮对话在工程上真正的难点,从来不在模型,而在状态。

Moltbot 更接近一种:

  • 显式状态
  • 可追踪流程
  • 可中断、可恢复

的任务执行模型。

这让 Bot 更像一个具备生命周期的系统组件,而不是一次次随机对话。


四、从 Agent 视角重新理解 Moltbot

如果从 Agent 的角度来看,Moltbot 体现了几个非常成熟的工程共识。

任务优先,而不是对话优先

Agent 的价值,不在于“聊得多自然”,而在于:

  • 是否能拆解任务
  • 是否能选择正确的工具
  • 是否能在失败时兜底

Moltbot 明显是围绕“完成目标”来设计的。


工具是能力边界的延伸

任何一个严肃的 Agent,都不可能只依赖模型本身。

在 Moltbot 的工程思路中:

  • 模型负责判断
  • 工具负责执行

这种分工让系统更清晰,也更可靠。


可控性,永远高于自主性

在演示场景中,高自主性往往意味着“更像人”;
在生产环境中,高自主性往往意味着“高风险”。

Moltbot 的设计取向非常明确:

宁可保守一点,也要稳定可控。

这正是工程思维,而不是玩具思维。


五、Moltbot 更适合哪些真实场景?

从工程实践角度看,Moltbot 更适合:

  • 企业内部流程 Bot
  • 研发辅助工具
  • 数据处理与分析
  • 规则明确、目标清晰的自动化任务

而它并不追求:

  • 情感陪伴
  • 闲聊互动
  • 高度开放式创作

这是一次清醒而理性的取舍。


六、一个常被忽视的价值:工程认知的变化

在使用 Moltbot 这类框架的过程中,开发者往往会经历一次明显的转变。

最初你关注的是:

  • Prompt 怎么写
  • 模型效果好不好

但慢慢地,你开始关心:

  • Prompt 是否应该模板化
  • 状态是否应该外置
  • 输出是否需要校验
  • 行为是否需要审计

这意味着你已经开始把 AI 当成系统的一部分来设计


七、从 Moltbot 看 AI 应用的长期方向

Moltbot 并不是所谓的“终极方案”,
但它释放了一个非常清晰的信号:

AI 应用正在从“展示智能”,走向“工程执行”。

未来真正有价值的 AI 系统,往往具备:

  • 模型可替换
  • 行为可约束
  • 结果可回溯
  • 风险可控制

而这些,本质上都是工程问题。


写在最后

如果说前一阶段的大模型浪潮,让我们看到了“智能的可能性”,
那么现在这个阶段,正在考验的是:

谁能把智能,变成可靠、可持续的工程能力。

Moltbot 的意义,并不在于它使用了 Claude,
而在于它代表了一种 更成熟、更务实的 AI 工程路径

对于真正想把大模型落地的开发者来说,这类实践,远比追逐模型参数更值得投入精力。


很多企业上线ITSM系统或者部署ITIL流程的初衷很直接:统一入口、规范工单、提升效率,最好还能形成可审计的闭环。

但现实往往是:系统上线后“看起来很忙”,却难以稳定交付;业务抱怨仍多,IT 团队疲于救火,流程被绕过,口径争论不断。

问题不一定出在工具,而常常出在“交付治理”缺位——没有把 IT 服务交付当成一项可以被设计、被运营、被审计、被持续改进的组织能力。

真正成熟的 IT 服务管理,不只是把工单从邮件与群聊里搬到系统里,而是用一套稳定的机制回答三个问题:

(1)我们交付的服务是什么;

(2)交付质量如何保证;

(3)出现波动时如何快速收敛并持续变好。

当交付治理建立起来,工单系统才会从“记录工具”升级为“组织运行的服务中枢”。

在平台层面,本文会以ManageEngine卓豪 ServiceDesk Plus 这类企业级 IT 服务管理平台为参照,给你一套可落地的交付治理方法论:从服务定义、流程边界、组织职责、指标体系、审计追溯,到上线后的持续运营路线。你可以把它当作一份“把 ITSM 做成组织能力”的操作手册。

交付治理是什么:让“流程执行”变成“结果可控”

很多组织把 ITSM 的成功定义为“工单都进系统、流程跑起来、SLA 看起来达标”。但只要你做过一段时间,就会发现这套定义很脆弱:工单进系统并不等于问题被解决;流程跑起来也不等于体验变好;SLA 达标更不等于业务满意。

交付治理要解决的,恰恰是这种“表面合规、结果不可控”的尴尬。

所谓交付治理,本质是一套“可控机制”:它把服务交付拆成可管理的单元,并明确边界、责任、标准、升级路径与审计证据。换句话说,它让组织在面对波动时不再靠个人英雄主义,而是靠机制稳定输出。

先把服务说清楚:服务目录与交付标准的“最小可用版本”

交付治理的第一步不是做一百条流程,也不是把所有工单字段补齐,而是把服务讲清楚:用户要的到底是什么?IT 能交付什么?交付需要什么输入?

交付产物是什么?如果这些不清晰,所有流程都会变成“填表运动”,最终被绕开。

流程边界与例外机制:让系统“既严谨又不僵硬”

交付治理的第二步是把流程边界设好:什么必须走强流程,什么可以走轻流程,什么必须升级,什么允许例外。很多 ITSM 失败不是因为流程不够严,而是“该严的地方不严、该灵活的地方太死”。最终导致两种极端:要么流程被绕过、要么流程变成拖累。

组织与职责:把“谁来做”写进体系,而不是写进群聊

交付治理真正难的地方,是组织层面:谁负责什么?谁拍板?谁背 SLA?谁负责复盘?如果职责不清,流程再完整也会变形:该升级的不升级、该通知的不通知、该复盘的不了了之。

你需要把“责任结构”显性化,让系统里的每一步都有明确主人。

指标体系与审计证据:把“交付好不好”变成可证明的事实

交付治理要建立“可证明性”。很多组织最痛的不是做不好,而是做得不错却无法被认可:因为没有一致口径、没有可追溯证据、没有业务听得懂的指标。

要解决这个问题,你需要把指标分层:运营层看效率,质量层看复发与稳定,治理层看风险与合规。这样既能支持一线管理,也能支持管理层决策。

1)交付治理会不会让流程更慢?

短期可能会多一些结构化输入,但长期会显著减少返工、扯皮与升级救火的时间。治理的目标是降低隐性摩擦,而不是增加表面步骤。

2)团队小、人手紧,也需要这么做吗?

越小的团队越依赖关键个人,风险越高。交付治理能把经验沉淀为机制与知识,降低个人依赖,反而更重要。

3)最推荐的起点是什么?

从“最小可用服务目录 + 责任结构”起步:先把高频服务做成可控单元,再上例外机制与指标分层,最后固化复盘闭环。

4)如何避免流程被绕过?

核心是降低入口摩擦(用户好选、模板清晰)、提升结果确定性(进度可见、交付可验收)、并把例外机制做成“正规通道”。只靠强制,绕过一定会发生。

5)怎么证明交付治理真的有效?

看三件事:复发率是否下降、长尾工单是否收敛、改进行动是否能按期关闭;同时看满意度与自助率是否上升。治理有效一定能在指标上体现。

把 ITSM 做成组织能力,关键不在“流程有多全”,而在“交付是否可控、风险是否可审计、改进是否可持续”。

你可以从高频服务与最小治理机制开始,逐步形成服务目录、责任结构、例外机制、指标分层与复盘闭环的完整体系,让 IT 从“救火队”转向“稳定的服务交付者”。

摘要

2026 年被公认为 AI 元年,核心标志是 AI 发展重心从大模型的理论探索转向智能体的规模化落地。历经 2022 年以来的技术沉淀,GPT、文心一言等大模型构建起坚实的能力底座,支撑智能体实现 “感知 - 决策 - 执行 - 优化” 的闭环能力,完成了 AI 从 “能理解” 到 “能行动” 的关键跃迁。本文聚焦这一变革,剖析技术演进、产业价值与落地逻辑,梳理核心挑战并展望未来趋势,为把握产业智能化转型提供精准参考。

目录

一、序章:2026 AI 元年的核心标志 —— 从大模型到智能体的跃迁
二、技术演进:大模型到智能体的四大核心能力突破
三、产业落地:智能体赋能多行业的转型实践
四、革命内核:从大模型到智能体的三大落地逻辑变革
五、挑战与破局:规模化落地的核心路径
六、未来趋势:2026 年后智能体发展方向
七、结语
八、FAQ
九、参考文献

一、序章:2026 AI 元年的核心标志 —— 从大模型到智能体的跃迁

2026 年,AI 产业正式迈入 “元年” 阶段,其核心标志并非某款大模型的诞生,而是技术重心从理论探索转向智能体的规模化落地。过去四年,大模型在语义理解、多模态处理等领域完成技术沉淀,完善了算力与数据基础,为智能体的自主决策能力提供支撑。

2026 年的关键转折在于 AI 从 “能理解” 到 “能行动” 的升级:大模型是被动响应的辅助工具,而智能体具备 “感知 - 决策 - 执行 - 优化” 的完整闭环能力,成为可自主完成任务的 “数字员工”。这一转变重构了 AI 应用逻辑,推动其从专业领域走向全域普及。

二、技术演进:大模型到智能体的四大核心能力突破

从大模型到智能体的跃迁,核心是四大能力的协同升级:

  1. 自主决策能力​:通过强化学习实现复杂任务拆解与主动规划,脱离人类实时干预。例如,营销智能体可自主制定新品推广方案并动态优化。
  2. 多模态交互能力​:无缝整合文本、图像、传感器数据等,适配复杂场景信息环境。工业智能体可综合设备图像与运行数据,精准给出维护方案。
  3. 跨系统协同能力​:通过标准化接口对接 ERP、MES 等业务系统,实现数据互通与任务联动。生产智能体可联动仓储与供应链系统,自主调度生产资源。
  4. 持续进化能力​:基于实时场景数据动态优化模型参数,适配个性化需求。客服智能体可通过日常对话数据持续提升回答精准度。

三、产业落地:智能体赋能多行业的转型实践

2026 年,智能体已在多行业实现规模化落地:

  • 制造业​:柔性生产智能体将产线换型时间从小时级缩至分钟级,生产效率提升 35%;预测性维护智能体降低设备故障率 40%,维护成本减少 25%。
  • 金融业​:智能风控体使信贷不良率下降 1-2 个百分点;智能服务体常见问题解决率达 92%,人工成本降低 65%。
  • 服务业​:餐饮智能点餐体提升翻台率 25%;零售智能导购体提升转化率 28%,客单价提高 15%。
  • 公共服务​:智能政务体使办理效率提升 60%,群众满意度达 95%;智能教学体实现个性化因材施教,学习效率提升 25%。

四、革命内核:从大模型到智能体的三大落地逻辑变革

智能体落地革命本质是三大逻辑的重构:

  1. 应用逻辑​:从 “工具调用” 转向 “目标驱动”。用户只需明确目标,智能体即可自主完成全流程任务,无需人工干预。
  2. 价值逻辑​:从 “效率提升” 升级为 “价值创造”。智能体不仅提升效率,更能创造全新业务模式,如制造业的柔性定制生产。
  3. 生态逻辑​:从 “单一技术” 拓展为 “协同生态”。以智能体为中枢,联动大模型、业务系统等形成跨场景协同体系,最大化技术价值。

五、挑战与破局:规模化落地的核心路径

智能体落地面临三大核心挑战:

  • 技术挑战​:算力适配不足、数据安全风险与决策可靠性待提升。
  • 落地挑战​:行业适配性差、中小企业成本压力大、复合型人才缺口显著。
  • 破局路径​:技术迭代,研发高效算力调度与数据加密技术;生态共建,推动政企研协同开发标准化解决方案;标准规范,建立技术应用与伦理监管体系。

六、未来趋势:2026 年后智能体发展方向

2026 年后,智能体将向三大方向发展:

  1. 普惠化​:低代码 / 无代码平台普及,标准化服务套餐降低应用门槛,惠及中小企业与个人。
  2. 协同化​:构建多智能体网络,实现跨领域全域联动,支撑复杂产业任务与城市管理。
  3. 安全化​:强化数据安全、模型安全技术防护,完善伦理规范与监管体系,保障健康发展。

七、结语

2026 AI 元年的智能体落地革命,是大模型技术沉淀的必然结果,实现了 AI 从 “理解” 到 “行动” 的关键跨越。尽管面临技术、成本、人才等挑战,但随着生态共建与标准完善,智能体将推动产业全面智能化转型。企业需主动拥抱变革,个人需提升 AI 素养,社会需构建规范体系,共同开启智能时代全新篇章。

八、FAQ

1. 2026 AI 元年的核心标志为何是大模型到智能体的跃迁?

因这一跃迁实现 AI 从被动辅助到主动行动的质变,让 AI 真正融入产业全流程,重构应用逻辑并推动全域普及,是 AI 进入规模化落地阶段的核心特征。

2. 智能体与大模型的核心区别是什么?

核心区别在于自主决策、跨系统协同、持续进化能力与目标驱动的应用逻辑。大模型需人工调用,智能体可自主完成全流程任务。

3. 中小企业应用智能体的核心障碍与解决办法?

核心障碍是成本与技术门槛。可通过低代码平台、标准化服务套餐降低投入,借助产业生态获取轻量化解决方案。

4. 2026 年后智能体的核心发展趋势?

核心是普惠化(低门槛)、协同化(多智能体联动)、安全化(技术 + 伦理双重保障)。

九、参考文献

[1] 中国信息通信研究院. 2026 人工智能产业发展白皮书 [R]. 2026.
[2] 麦肯锡咨询公司. AI 元年:全球产业变革与发展机遇分析 [R]. 2026.
[3] 德勤咨询。智能时代:企业智能体规模化落地实践指南 [R]. 2026.
[4] 工业和信息化部。新一代人工智能发展规划(2024-2030 年)[Z]. 2024.

引言:从“几何图形”到“概率博弈”
在量化交易(Quantitative Trading)的入门阶段,网格策略(Grid Trading)几乎是每个开发者的必修课。写一个while True循环,基于固定的Price Gap挂出Buy/Sell Limit单。

但实盘教训往往很惨痛:静态网格在单边行情下极其脆弱。因为缺乏对库存(Inventory)的感知,程序会在下跌趋势中机械地“接飞刀”,直至耗尽流动性被套牢。

最近重读高频交易(HFT)经典文献Avellaneda-Stoikov(AS)模型,发现它的核心思想完全可以降维打击普通网格——将“死扛”转化为“库存博弈”。

本文将分享如何用Python复现AS模型的核心逻辑,并探讨在Python这种非实时系统下,如何通过高性能行情API来弥补速度短板。


理论核心:重新定义“中间价”
传统的网格策略是“几何对称”的:Ask = Mid + Gap Bid = Mid - Gap

AS模型提出了一个颠覆性的概念:保留价格(Reservation Price, r)。它认为,交易员不应锚定市场价,而应锚定自己的“心理价”。

其核心计算公式如下(建议直接复制):

r = s - q × γ × σ²

作为开发者,我们需要深入理解这四个变量的物理含义,以及工程实现上的妥协:

  1. s (Mid Price):市场共识
    当前订单薄的买一卖一均价。[进阶注解]:在高频领域,通常会使用微观价格(Micro-price)或考虑订单流不平衡(OFI)来修正s。但作为入门复现,直接使用Mid Price是性价比最高的选择。
  2. q (Inventory Factor): 库存压力——策略的灵魂
    这是AS模型的重力参数。[工程避坑]:绝对不能直接用持仓数量(如10000)代入公式。必须归一化: q = (当前持仓 - 目标持仓) / 满仓限制

q > 0(积压):r < s。挂单整体下移,降价甩卖,拒接新货。

q < 0(短缺):r > s。挂单整体上移,溢价抢筹,惜售不卖。

  1. γ (Risk Aversion): 风险厌恶系数
    策略的性格参数。γ越大,策略越“怂”,稍微拿点货就拼命降价。
  2. σ² (Volatility): 市场波动率
    [工程妥协]:学术界通常使用GARCH模型或已实现波动率(Realized Volatility)。但在工程落地时,使用ATR或滚动窗口的标准差(Std)通常已经足够捕捉盘面风险。

源码实现:封装AS_Grid_Logic类
Talk is cheap, show me the code.以下是基于Python的算法逻辑封装。为了降低理解门槛,我们对AS模型进行了工程化简化:保留了最核心的库存偏斜(Skew),而将复杂的价差宽度(Spread)计算简化为ATR动态调整。


import numpy as np

class AS_Grid_Logic:
    """
    Avellaneda-Stoikov动态网格策略核心逻辑
    """
    def __init__(self, risk_gamma: float = 0.5, max_pos: int = 1000):
        """
        :param risk_gamma: 风险厌恶系数(Gamma), 值越大策略越倾向于去库存
        :param max_pos: 最大持仓限制, 用于归一化计算
        """
        self.risk_gamma = risk_gamma
        self.max_pos = max_pos

    def calculate_skew(self, current_pos: int, volatility: float) -> float:
        """
        计算价格偏移量(Spread Shift)
        """
        # 防御性编程: 避免除零错误
        if self.max_pos == 0:
            return 0.0
        
        # 1.关键步骤:归一化库存q (-1.0 ~ 1.0)
        # 如果不归一化,公式中的线性惩罚项会直接溢出
        q = current_pos / self.max_pos
        
        # 2.核心公式: Shift = q * gamma * sigma^2
        # 物理含义: 库存压力 * 怂的程度 * 市场风浪
        shift = q * self.risk_gamma * (volatility ** 2)
        return shift

    def get_quotes(self, mid_price: float, current_pos: int, 
                   volatility: float, half_spread: float):
        """
        生成最终的Bid/Ask价格
        :param mid_price: 当前市场中间价
        :param current_pos: 当前持仓
        :param volatility: 波动率(如ATR或std)
        :param half_spread: 基础网格半宽(此处简化处理,未使用AS模型的k参数求解)
        :return: (bid_price, ask_price, reservation_price)
        """
        # 计算偏移
        shift = self.calculate_skew(current_pos, volatility)
        
        # 计算保留价格(Reservation Price)
        # 这一步将锚点从市场价s切换到了心理价r
        reservation_price = mid_price - shift
        
        # 生成围绕保留价格的网格
        bid_price = reservation_price - half_spread
        ask_price = reservation_price + half_spread
        
        return bid_price, ask_price, reservation_price

# --- 单元测试/模拟运行 ---
if __name__ == "__main__":
    # 初始化策略: 比较激进的去库存设定(Gamma=1.5)
    logic = AS_Grid_Logic(risk_gamma=1.5, max_pos=1000)
    
    # 模拟场景: 市场价100,满仓被套(pos=1000),高波动(vol=2.0)
    bid, ask, res_p = logic.get_quotes(
        mid_price=100.0, 
        current_pos=1000, 
        volatility=2.0, 
        half_spread=0.5
    )
    
    print(f"Market Mid Price: 100.00")
    print(f"Inventory Ratio (q): 1.0 (满仓焦虑状态)")
    print(f"Reservation Price: {res_p:.2f} (心理中枢大幅下移)")
    print(f"Algo Bid: {bid:.2f} (防止接盘)")
    print(f"Algo Ask: {ask:.2f} (降价甩卖)")

运行结果解析: 在满仓且高波动场景下,算法将Ask报价从理论的100.5压低到了94.5(示例值)。 这在代码层面实现了:“只要我有货且市场不稳,我就比谁跑得都快”。


工程挑战:Python跑做市是伪命题吗?
这也是很多资深交易员会质疑的点:“Python有GIL锁,延迟那么高,跑AS模型不是找死吗?”

你是对的,但也不全对。你跑不赢FPGA驱动的顶级HFT团队,但你的对手盘如果是散户,你只需要跑赢HTTP轮询即可。

在实盘落地时,我们需要解决两个工程瓶颈:

1.Maker策略的费率控制 AS模型本质是提供流动性(Market Making)。

痛点:高频调整挂单容易导致在价格剧烈波动时误成交为Taker。

优化:不要每秒都重挂单。在代码中增加min_step_filter(最小变动过滤器),只有当abs(new_price - old_price) > threshold时才发送Order Update请求。

2.逆向选择(Adverse Selection)与数据源延迟 这是最致命的。当Python算出r需要下移时,通常是因为市场已经发生了Micro-crash。

瓶颈:如果你使用的是普通的RESTful行情API(轮询机制),延迟通常在500ms~1000ms。等你的Cancel Order到达交易所,原本的Buy Limit早就被Toxic Flow击穿了。

解决方案:必须升级行情API的接入方式。

技术选型建议:TickDB 对于Python开发者,如果不想花大量时间维护C++的底层连接,推荐使用TickDB这样的专业数据基础设施:

WebSocket Stream:实盘必须使用WebSocket订阅全量Tick数据。TickDB提供的行情API可以实现毫秒级的Tick推送。

Event-Driven(事件驱动):将策略架构改为OnTick()事件驱动模式。TickDB的Python SDK能够很好地适配这种模式,确保策略在接收到最新Tick的瞬间完成计算和发单。

Data Consistency:AS模型依赖准确的volatility计算。TickDB提供的清洗后的历史Tick数据,可以方便地预热计算ATR。


总结
从“死网格”进化到“AS动态网格”,本质是量化思维的升维:

算法层:引入Inventory(q)和Volatility(σ)因子,使策略具备自我保护能力。

工程层:承认Python的速度局限,通过接入高性能行情API(TickDB),利用WebSocket低延迟特性构建护城河。

代码已开源在文中,欢迎各位开发者Copy测试。如有关于行情API对接或算法优化的疑问,欢迎在评论区技术交流。

在数字经济成为必选题的今天,许多企业都面临一个共同的困境:数据量爆炸式增长,但数据价值却始终“雾里看花”。我们坐拥海量数据,为何在决策时仍感“无据可依”?
图片
数据采集问题的核心往往不在于数据本身,而在于数据从“原材料”到“价值资产”的转化过程缺乏科学、规范的治理。今天,我们就以五度易链的实践为例,深入拆解一下数据治理中最为关键的标准化开发流程。这套覆盖“采集-解析-清洗-标准化”的全链路体系,正是确保每一份数据都能被科学处理,最终转化为驱动业务增长的可靠引擎。数据采集:全面覆盖,筑牢数据基础
图片
数据采集数据采集是数据开发的起点,直接决定后续数据处理的广度与深度。五度易链运用专业的数据采集工具与成熟技术,能够根据不同行业和场景的具体需求,进行精准、全面的数据抓取。采集范围覆盖线上平台数据、线下业务系统数据、第三方合作数据等各类数据源,确保数据的完整性与全面性。同时,建立合规的数据采集机制,对数据来源的合法性、数据采集过程的安全性进行全程管控,在保障数据全面性的同时,坚守数据安全与合规底线,为后续数据处理工作奠定坚实基础。数据解析:深度挖掘,揭示数据价值采集到的原始数据多为非结构化形式,难以直接应用。五度易链采用先进的数据解析技术与算法模型,对海量原始数据进行深度挖掘与智能解析。通过技术手段,从杂乱无章的非结构化数据中提取关键信息,揭示数据背后隐藏的内在关联与发展规律。数据清洗:多维度质控,提升数据质量
图片
数据质量是数据价值实现的核心前提,五度易链建立严格的多维度质量控制流程,对采集到的原始数据进行深度排查与净化处理。清洗过程围绕数据准确性、完整性、一致性、唯一性、时效性等多个核心质量指标,通过自动化检测与人工复核相结合的方式,全面排查数据中的无效信息、错误记录、重复数据以及与业务无关的冗余数据。例如,针对数据录入错误导致的格式不一致、数值异常等问题,通过智能算法进行自动修正;对于重复采集的数据,建立去重规则进行精准剔除。通过多维度的清洗处理,有效提升数据集的质量与精准度,确保后续数据分析结果的可靠性与有效性。数据标准化:统一规范,实现数据兼容不同来源、不同类型的数据在格式、口径、计量单位等方面存在差异,直接影响数据的整合应用。五度易链遵循国内外相关行业标准及规范,结合企业业务需求,对完成清洗后的有效数据进行统一格式转换和标准化处理。通过建立统一的数据编码规则、字段定义标准、计量单位规范等,消除不同数据源之间的“语言壁垒”,让原本分散、异构的数据能够实现整合兼容。标准化处理后的数据,不仅便于后续进行高效的数据分析、挖掘与应用,更能支持跨部门、跨业务的数据共享与协同,为企业构建统一的数据应用平台提供关键支撑,最终实现客户定制化数据开发的核心目标。
图片
数据治理应用高质量的数据治理已成为企业核心竞争力的重要组成部分。五度易链大数据治理解决方案标准化的“采集-解析-清洗-标准化”数据开发流程,为企业提供全方位、高品质的数据治理服务。当我们将视线从单一的技术环节拉升至整个数据价值链时,会发现数据治理远不止是IT项目,而是一项关乎企业核心竞争力的战略工程。无论是金融行业的风控升级、政务领域的数据共享,还是制造行业的智能制造、生物医药行业的研发创新,五度易链都能精准匹配需求,助力企业破解数据治理痛点,激活数据核心价值。你是否也在工作中遇到过数据质量或数据整合的挑战?欢迎在评论区分享你的故事,我们一起探讨。