首页 文章 精选 留言 我的

精选列表

搜索[国产算力],共10000篇文章
优秀的个人博客,低调大师

什么样的智能体才算“真正能干活”?

> 现在,大多数“AI智能体平台”仍然停留在“高级玩具”层级,真正能干活、能连接业务流程的还凤毛麟角。 本文分享我对**工具 → 数字员工 → 智能体平台**三层架构的理解,以及我正在落地一个能生成、校验、发送考核报告的“数字员工”时的技术设计与实现过程。 ![](https://developer.qcloudimg.com/http-save/yehe-100000/a796b424dc95b4ce7c4f418dc6987299.webp) ## 一、不是所有“智能体”都能干活:工具才是关键 当前智能体平台五花八门:Agent、Bot、AI助手... 看似什么都能干,但一旦你想让它“真正做事”,比如: - 打开一个 Excel 文件,读取数据、校验格式 - 访问公司后台系统发起一个审批流程 - 上传图片自动压缩重命名 - 登录企业邮箱发送一份日报 你会发现,大部分智能体平台根本做不了,或者只能通过提示词“委婉表达”,最后还是得人来操作。这是因为:**它们缺乏“工具属性”。** ### 工具属性指什么? 就是它具备 **明确的 API 接口能力或代码执行能力**,能操作真实系统、文件、网络,而不是停留在对话层面的虚拟建议。 --- ## 二、什么是“数字员工”?它是工具的组合体 我们可以把一个“能干活的智能体”拆解为三层: |层级|定义|示例| | --- | --- | --- | |🧰 工具|可执行的单一任务工具,封装明确接口|read_excel(), send_email(), compress_image()| |🧑‍💻 数字员工|多工具组合的业务流程模块,可完成完整任务|“自动生成考核报告并发邮件”| |🧠 智能体平台|托管、调度、交互的平台|可以嵌入飞书、钉钉、Web 的 Bot Framework| 换句话说,**数字员工是多个工具的编排逻辑,是从“技能”到“服务”的过渡体。** 例如我正构建的一个考核自动化数字员工,背后其实是这样一个流程: 1. 读取 Excel 考核数据 → 1. 调用规则引擎生成评语 → 1. 写入模板 Word 文档 → 1. 自动转换为 PDF → 1. 根据员工邮箱批量发送邮件 这些每一步都是一个“工具”,只有把它们组合起来,**这个 AI 才能被称为“员工”而不是“机器人”。** --- ## 三、当前智能体平台的断点:工具能力太薄弱 为什么现在大多数智能体平台都做不好落地? - **只会对话,不会动手** - **缺乏插件机制和运行沙箱** - **无法调用外部 API 或执行本地指令** - **无法绑定企业内系统(如 ERP、审批流、钉钉后台等)** 所以,只能开始自己做:把“数字员工”的流程逻辑写成脚本或模块化函数,然后通过 MCP(模型连接协议)桥接大模型与工具层。 --- ## 四、MCP:自己的“连接器” 设计:写一个 `generate_summary(dataframe)` 函数,然后用以下 MCP 格式描述: ``` { "tool": "generate_summary", "params": { "dataframe": "{{user_upload}}" }, "description": "对上传的数据生成文本概括" } ``` 大模型收到任务指令后,不直接“胡说八道”,而是返回要调用的工具名称和参数结构,然后我们通过 MCP runtime 执行。 这种方式有什么好处? - 可控:所有操作都在定义清晰的工具范围内 - 可维护:工具升级不会破坏流程 - 可集成:未来可以部署到飞书Bot、Slack、钉钉应用等任意平台 --- ## 五、构建实例:考核自动化数字员工 这是目前在用的一个真实场景: ### 📌 背景需求: 企业每月需要给上百名员工生成考核报告,过程复杂: 1. 人事上传 Excel 表格,内容杂乱 1. 需要根据规则自动生成评语 1. 填写进模板 Word 文档中,转为 PDF 1. 批量发邮件到个人邮箱 ### 🧩 技术实现架构: - 接口层:Flask 服务 + MCP runtime - 工具层: - `read_excel(path)` - `validate_format(df)` - `generate_comment(name, score)` - `fill_word_template(data)` - `convert_to_pdf(path)` - `send_email_with_attachment(email, path)` - 调度逻辑:定义为 `json` 流程 + 大模型语言分析补充 ### 💡 开发工具: - **Cursor**:用于代码组织、函数封装、自动测试编写 - **Python + pandas + openpyxl + win32com**:工具函数开发 - **移动云智能体平台**:部署交互入口 + 权限接入 上线后预期效果: - 整体考核报告流程从人工3天 → 数字员工2小时完成 - 报错率从30%下降到5% - 报表统一规范、可审计 --- ## 六、方向:开发者定义工具,平台负责集成 我的观点是:**不应该依赖大模型去“做所有事”** ,而是: - **程序员定义标准化工具(函数、API、容器服务)** - **平台通过 MCP 结构完成调用与调度** - **大模型参与流程选择与参数构造** 最终形成这样的生态: > **Tool API + MCP 标准 + 智能体平台宿主 → 面向企业落地的 AI 数字员工系统** --- ## 🏁总结 大模型不是魔法,——除非你给它更多**真正能执行的工具**。 想让 AI 真正“干活”,程序员不能缺席。你不是在写 prompt,你是在设计一整条“人机协作流程”。

优秀的个人博客,低调大师

面试必问的时间复杂度到底怎么算

高级工程师title的我,最近琢磨着好好刷刷算法题更高级一些,然鹅,当我准备回忆大学和面试时候学的数据结构之时,我发现自己对这个算法复杂度的记忆只有OOOOOooo 文章收录在 GitHub JavaKeeper ,N线互联网开发必备技能兵器谱 算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。 那么我们应该如何去衡量不同算法之间的优劣呢? 主要还是从算法所占用的「时间」和「空间」两个维度去考量。 时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。 空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。 因此,评价一个算法的效率主要是看它的时间复杂度和空间复杂度情况。然而,有的时候时间和空间却又是「鱼和熊掌」,不可兼得的,那么我们就需要从中去取一个平衡点。 时间复杂度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或「时间频度」。记为T(n)。 时间频度T(n)中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律,为此我们引入时间复杂度的概念。算法的时间复杂度也就是算法的时间度量,记作:T(n) = O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称「时间复杂度」。 这种表示方法我们称为「 大O符号表示法 」,又称为渐进符号,是用于描述函数渐进行为的数学符号 常见的时间复杂度量级有: 常数阶$O(1)$ 线性阶$O(n)$ 平方阶$O(n^2)$ 立方阶$O(n^3)$ 对数阶$O(logn)$ 线性对数阶$O(nlogn)$ 指数阶$O(2^n)$ 常数阶$O(1)$ $O(1)$,表示该算法的执行时间(或执行时占用空间)总是为一个常量,不论输入的数据集是大是小,只要是没有循环等复杂结构,那这个代码的时间复杂度就都是O(1),如: int i = 1; int j = 2; int k = i + j; 上述代码在执行的时候,它消耗的时候并不随着某个变量的增长而增长,那么无论这类代码有多长,即使有几万几十万行,都可以用$O(1)$来表示它的时间复杂度。 线性阶$O(n)$ $O(n)$,表示一个算法的性能会随着输入数据的大小变化而线性变化,如 for (int i = 0; i < n; i++) { j = i; j++; } 这段代码,for循环里面的代码会执行n遍,因此它消耗的时间是随着n的变化而变化的,因此这类代码都可以用$O(n)$来表示它的时间复杂度。 平方阶$O(n^2)$ $O(n²)$ 表示一个算法的性能将会随着输入数据的增长而呈现出二次增长。最常见的就是对输入数据进行嵌套循环。如果嵌套层级不断深入的话,算法的性能将会变为立方阶$O(n^3)$,$O(n^4)$,$O(n^k)$以此类推 for(x=1; i<=n; x++){ for(i=1; i<=n; i++){ j = i; j++; } } 指数阶$O(2^n)$ $O(2^n)$,表示一个算法的性能会随着输入数据的每次增加而增大两倍,典型的方法就是裴波那契数列的递归计算实现 int Fibonacci(int number) { if (number <= 1) return number; return Fibonacci(number - 2) + Fibonacci(number - 1); } 对数阶$O(logn)$ int i = 1; while(i<n) { i = i * 2; } 上面的代码,在while循环里面,每次都将 i 乘以 2,乘完之后,i 距离 n 就越来越近了,直到i不小于n退出。我们试着求解一下,假设循环次数为x,也就是说 2 的 x 次方等于 n,则由2^x=n得出x=log₂n。因此这个代码的时间复杂度为$O(logn)$ 线性对数阶$O(nlogn)$ 线性对数阶$O(nlogn) $,就是将时间复杂度为对数阶$O(logn)$的代码循环n遍的话,那么它的时间复杂度就是 n * O(logN),也就是了$O(nlogn)$,如下, for(m=1; m<n; m++) { i = 1; while(i<n) { i = i * 2; } } 除此之外,其实还有平均情况复杂度、最好时间复杂度、最坏时间复杂度。。。一般没有特殊说明的情况下,都是值最坏时间复杂度。 空间复杂度 空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的一个量度,同样反映的是一个趋势,一个算法所需的存储空间用f(n)表示。S(n)=O(f(n)),其中n为问题的规模,S(n)表示空间复杂度。 一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。 一般情况下,一个程序在机器上执行时,除了需要存储程序本身的指令、常数、变量和输入数据外,还需要存储对数据操作的存储单元。若输入数据所占空间只取决于问题本身,和算法无关,这样只需要分析该算法在实现时所需的辅助单元即可。若算法执行时所需的辅助空间相对于输入数据量而言是个常数,则称此算法为原地工作,空间复杂度为O(1)。当一个算法的空间复杂度与n成线性比例关系时,可表示为$0(n)$,类比时间复杂度。 空间复杂度比较常用的有:O(1)、O(n)、O(n²) 空间复杂度 $O(1)$ 如果算法执行所需要的临时空间不随着某个变量n的大小而变化,即此算法空间复杂度为一个常量,可表示为 O(1)举例: int i = 1; int j = 2; ++i; j++; int m = i + j; 代码中的 i、j、m 所分配的空间都不随着处理数据量变化,因此它的空间复杂度 S(n) = O(1) 空间复杂度 $O(n)$ int[] m = new int[n] for(i=1; i<=n; ++i) { j = i; j++; } 这段代码中,第一行new了一个数组出来,这个数据占用的大小为n,这段代码的2-6行,虽然有循环,但没有再分配新的空间,因此,这段代码的空间复杂度主要看第一行即可,即 S(n) = O(n) 复杂度速查表 来源:https://liam.page/2016/06/20/big-O-cheat-sheet/ 源地址:https://www.bigocheatsheet.com/ 图例 大-O 复杂度曲线 抽象数据结构的操作复杂度 数组排序 图操作 堆操作 参考 《大话数据结构》https://zhuanlan.zhihu.com/p/50479555

优秀的个人博客,低调大师

开发者简报:没用过 Vim,怎么算 Geeker?

文摘 了解渐进式JPEG和WebP格式 什么是渐进式jpeg 渐进式JPEG是使用与典型标准JPEG不同的编码过程创建的图像。传统上,JPEG从上到下,从左到右进行编码和解码。这被称为基线编码。但是,渐进式JPEG以不同的方式编码。当您看到渐进式JPEG加载时,您将看到整个图像的模糊版本,随着时间的推移,图像被解码或在浏览器中呈现时会变得更加清晰。 标准JPEG加载率为33%,66%和100% 渐进式JPEG加载,分别为33%,66%和100% 为什么要使用渐进式JPEG 渐进式JPEG的一个明显优势是存在感知性能提升。用户可以预览图像在下载完成之前的样子。此外,图像占用您网站的布局和空间加载速度更快,使整个过程感觉更快。渐进式JPEG通常也比非渐进式JPEG小,即使最终图像在视觉上是相同的。 重要的是,渐进式JPEG会占用更多的CPU和内存来进行编码和解码,因为图像数据会被多次解析。因此,虽然它确实可以让您更快地进行预览,但解码的总时间可能会接近2.5倍。 WebP WebP是一种现代图像格式,可为Web上的图像提供卓越的压缩,与PNG和JPEG等传统文件格式相比,文件大小平均节省30%以上。较小的图像意味着下载速度更快以及减少网络带宽,这两者都有助于页面显着更快地显示。 可以在Chrome开发者控制台,查看图像类型。 何时应该使用渐进式JPEG与WebP 除了使用延迟加载之外,使用WebP是理想方式。 如果你想使用渐进式JPEG,请确保你理解为什么要使用它们 - 因为它们也有缺点。我会警告不要使用渐进式JPEG格式来处理像缩略图这样的小图像,因为这些文件的文件大小往往比普通的JPEG图像大。 像任何东西一样,重要的是测试 并看看否真的减少了时间。在某些情况下,使用渐进式JPEG可能比WebP格式更好。例如,考虑文件大小差异。如果渐进式JPEG接近(在10kb到20kb之间)或小于WebP,则考虑使用渐进式JPEG而不是WebP。 渐进增强vs优雅降级 渐进增强:在网站设计初期以主体功能为主,一般都以IE为最低兼容对象并逐步的向主流浏览器兼容(如Chrome、Firefox等),这样就会使一些新的前端技术、功能无法全效展示。并追求极致的用户体验也就是说用户使用任何浏览器访问网页都不会觉得有什么不同。比如一些大型的公开网站、门户类网站都会使用渐进增强的方式开发,因为你不知道用户会使用什么样的浏览器和设备访问,你必须做到页面功能的全部兼容。 优雅降级:在网站设计初期以主流浏览器的标准为主,并赋予项目各种新技术和功能已达到最佳展示效果,然后在对一些不兼容的浏览器和设备做一些简单的向下兼容,或直接舍弃。有时我们在浏览一些web网页的时候会发现他有些提示:推荐使用某某浏览器或是请使用某某设备访问等等。这些web项目都舍弃了一些客户端来实现项目的最佳效果,而这种网站还是少数优雅降级的常用场景还有一些公司内部的系统或是特定用户和场景的应用。 教程 React的完整介绍 适合初学者的指南,涵盖了React的基础知识的概念。它不是React的编程指南,而是完整的介绍。 破解Android应用 本文并不是教你怎么去破解他人Android应用,而是帮助您成为具有安全意识的应用程序开发者。在本教程你能学到如下知识: 访问应用的私有数据 分析数据库 反编译代码 Vim历史和高效使用Vim 本文研究Vim历史,同时教你如何高效利用Vim JavaScript SEO基础知识 本指南介绍了Google搜索如何处理JavaScript以及改进web应用的最佳做法。 异步加载CSS的最简单方法 默认情况下,浏览器会同步加载外部CSS - 在下载和解析CSS时会影响页面渲染。本文教你如何使用最简单方式实现异步加载CSS。 在没有框架的情况下设计和构建渐进式Web应用程序(第1部分) 不需要计算机专业知识,也不需要了解JavaScript框架。仅需要一点HTML和CSS以及JavaScript基本知识,就能创建渐进式Web应用程序。 重构桌面版Slack 不要从头开始重写你的代码。Slack分享他们如何渐进逐步重构桌面版Slack。 Changefeed 精美的更改日志模块 资源&工具 exif-js 一个JavaScript库用于提取图片中的文字信息 JavaScript的基础知识(播客) 一个讲解JavaScript的基础知识播客网站 用Java实现的设计模式 通过简短介绍再搭配UML设计图 编程算法书 一本关于算法和Lisp的书,本书分为16章,3部分:基本数据结构,衍生数据和高级算法。作者计划每周在个人博客发布一部分内容,预计年底发布所有内容。 编写良好Common Lisp代码指南 编写良好可维护Common Lisp代码指南 JavaScript 代码规范 JavaScript 代码规范,自带 linter & 代码自动修正 Python - 100天从新手到大师 github五万star,只要你能坚持100天就能从零基础步入python编程高手。学习路线: Day01~15 - Python语言基础 Day16~Day20 - Python语言进阶 Day21~30 - Web前端入门 Day31~35 - 玩转Linux操作系统 Day36~40 - 数据库基础和进阶 Day41~55 - 实战Django Day56~60 - 实战Flask Day61~65 - 实战Tornado Day66~75 - 爬虫开发 Day76~90 - 数据处理和机器学习 Day91~100 - 团队项目开发 coding-interview-university 完整的计算机科学研究计划。 游戏源代码集合 这是PC游戏源代码的集合。大多数为商业产品,随后开放源代码。 Puffer 在浏览器中免费观看电视直播。可以观看NBC,CBS,ABC,PBS,FOX和Univision网络的美国电视台。 Puffer支持Chrome,Firefox和Edge浏览器,PC或Android手机或平板电脑。 不支持在iPhone或iPad或Safari浏览器中使用。 纯JS生成WiFi二维码 纯JS生成WIFI:S:<SSID>;T:<WPA|WEP|>;P:<password>;;二维码,生成的二维码保存HTML5 localStorage中,不在服务器。 编程讲座 主要收录关于编程语言架构设计相关内容视频 calisphere Calisphere是加利福尼亚州著名图书馆,档案馆和博物馆门户网站。收录超过1,275,000张图像,文本和录音。其中收录了上个世纪七十年代中国相关图像。 拉长号 通过拉缩浏览器吹长号(听起来也不太像哈哈哈) Web历史 一个有趣的网站简单介绍Web重要历史 首发微信公众号:ITPostman

资源下载

更多资源
Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册