[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"consumer-news-detail-899":3,"consumer-news-interaction-899":40,"consumer-news-related-899":43},{"detail":4,"item":35},{"card":5,"schemaVersion":22,"fields":23,"content":29},{"id":6,"kind":7,"targetType":8,"targetId":9,"subtype":7,"typeLabel":10,"title":11,"subtitle":12,"summary":13,"coverUrl":14,"badgeText":14,"href":15,"sourceName":12,"meta":16,"metrics":19,"tags":20,"resolved":21},"NEWS_ARTICLE:899","news","NEWS_ARTICLE",899,"资讯","C# U9 二次开发","博客园","U9 是用友 U9 Cloud，基于BEAS 开发平台，底层 C# + .NET Framework，服务端是 IIS+WCF，数据库 SqlServer；二次开发分：插件扩展、WebService 接口、单据扩展、自定义页面、外部程序调用 U9 接口。 ⚠️ U9 二次开发不建议直接修改 U9 原","","\u002Fnews\u002F899",[17,18],"2026","数据与架构",{},[18],true,"consumer-content-detail-v1",{"sourceName":12,"authorName":24,"categoryName":18,"summary":13,"description":13,"publishTime":25,"updateTime":26,"sourceUrl":27,"language":28},"追逐苦痛","2026-08-31T10:52","2026-09-02T20:37:54","https:\u002F\u002Fwww.cnblogs.com\u002Fhutie1980\u002Fp\u002F22770486","中文",{"format":30,"policy":31,"normalized":21,"html":32,"text":33,"wordCount":34,"hasBody":21},"HTML","NEWS_CONTENT_V1","\u003Cblockquote>\n \u003Cp>U9 是用友 U9 Cloud，基于\u003Cstrong>BEAS 开发平台\u003C\u002Fstrong>，底层 C# + .NET Framework，服务端是 IIS+WCF，数据库 SqlServer；二次开发分：插件扩展、WebService 接口、单据扩展、自定义页面、外部程序调用 U9 接口。 ⚠️ U9 二次开发\u003Cstrong>不建议直接修改 U9 原代码\u003C\u002Fstrong>，全部使用扩展、插件模式，升级不会覆盖。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2>一、开发环境准备\u003C\u002Fh2>\n\u003Col>\n \u003Cli>\u003Cstrong>必备工具\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cul>\n \u003Cli>Visual Studio（推荐 VS2019，.NET Framework 4.7，U9 老版本是 4.5）\u003C\u002Fli>\n \u003Cli>U9 开发端环境：安装 U9 BEAS 开发工具（U9 客户端里的【开发平台】）\u003C\u002Fli>\n \u003Cli>引用 U9 核心 dll（从 U9 服务器 bin 目录拷贝，不要 NuGet 下载）\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre>\u003Ccode>U9.dll\nU9.Common.dll\nU9.DB.dll\nU9.Platform.dll\nU9.Shell.dll\nU9.BO.dll\nU9.WCF.dll\nBEAS.Core.dll\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\n \u003Cp>路径：U9 安装目录 \u003Ccode>U9\\WebSite\\bin\u003C\u002Fcode>，复制到本地项目引用，\u003Cstrong>复制本地 = False\u003C\u002Fstrong>，服务器上本身有。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Col>\n \u003Cli>两种开发模式 1）\u003Cstrong>服务端插件开发（最常用）\u003C\u002Fstrong>：单据保存前 \u002F 后、审核前 \u002F 后、按钮点击事件，C# 类库项目 2）\u003Cstrong>外部程序调用 U9\u003C\u002Fstrong>：控制台 \u002F WINFORM，调用 U9 WCF WebService 接口 3）\u003Cstrong>BEAS 自定义页面\u003C\u002Fstrong>：在 BEAS 平台拖拽，后台写 C# 脚本\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2>二、模式 1：U9 服务端插件开发（C# 类库）\u003C\u002Fh2>\n\u003Cblockquote>\n \u003Cp>场景：销售订单、采购单，保存前校验、自动赋值、生成其他单据、审核后触发业务\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch3>1. 新建项目\u003C\u002Fh3>\n\u003Cp>VS 新建【类库 (.NET Framework)】，.NET4.7，引用上面 U9dll。\u003C\u002Fp>\n\u003Cp>插件类必须继承 \u003Ccode>U9.Platform.Plugin.IBusinessPlugin\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>using System;\nusing U9.Platform;\nusing U9.Platform.Plugin;\nusing U9.BO;\nusing U9.Common;\n\nnamespace U9Plugin.Demo\n{\n    \u002F\u002F\u002F &lt;summary&gt;\n    \u002F\u002F\u002F 销售订单插件示例\n    \u002F\u002F\u002F &lt;\u002Fsummary&gt;\n    public class SaleOrderPlugin : IBusinessPlugin\n    {\n        \u002F\u002F插件执行入口\n        public void Execute(PluginContext context)\n        {\n            \u002F\u002F获取当前业务对象\n            var bo = context.BusinessObject as ISaleOrder;\n\n            \u002F\u002F区分事件类型\n            switch (context.EventType)\n            {\n                case PluginEventType.BeforeSave:\n                    \u002F\u002F保存前事件\n                    BeforeSave(bo, context);\n                    break;\n                case PluginEventType.AfterSave:\n                    \u002F\u002F保存后\n                    break;\n                case PluginEventType.BeforeAudit:\n                    \u002F\u002F审核前\n                    break;\n                case PluginEventType.AfterAudit:\n                    \u002F\u002F审核后\n                    break;\n            }\n        }\n\n        private void BeforeSave(ISaleOrder saleOrder, PluginContext ctx)\n        {\n            \u002F\u002F示例校验：订单金额不能小于0\n            if(saleOrder.TotalAmount &lt; 0)\n            {\n                \u002F\u002F抛出异常，阻止保存\n                throw new U9Exception(\"订单总金额不能小于0！\");\n            }\n\n            \u002F\u002F给字段赋值\n            saleOrder.Memo = \"插件自动赋值备注\";\n\n            \u002F\u002F遍历分录\n            foreach(var line in saleOrder.Lines)\n            {\n                var qty = line.Qty;\n            }\n        }\n\n        \u002F\u002F插件描述，U9平台识别\n        public PluginDescriptor GetDescriptor()\n        {\n            return new PluginDescriptor\n            {\n                Name = \"SaleOrderDemoPlugin\",\n                DisplayName = \"销售订单自定义插件\",\n                \u002F\u002F绑定BO元数据ID，销售订单BO编码：SAL.SaleOrder\n                BOName = \"SAL.SaleOrder\",\n                \u002F\u002F订阅哪些事件\n                SubscribeEvents = new PluginEventType[]\n                {\n                    PluginEventType.BeforeSave,\n                    PluginEventType.AfterSave,\n                    PluginEventType.BeforeAudit\n                }\n            };\n        }\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>2. 部署插件\u003C\u002Fh3>\n\u003Cp>1. 编译生成 dll，放到 U9 服务器 \u003Ccode>U9\\WebSite\\bin\\Plugin\u003C\u002Fcode> 2. 登录 U9【开发平台】→【插件管理】→注册插件，填入类的完整名 \u003Ccode>U9Plugin.Demo.SaleOrderPlugin,U9Plugin.Demo\u003C\u002Fcode> 3. 启用插件，重启 U9 应用池（IIS 回收应用程序池） 4. 测试新建销售订单触发插件。\u003C\u002Fp>\n\u003Cblockquote>\n \u003Cp>关键点：BO 名称，每个单据有自己 BOName，比如 PO.PurchaseOrder 采购订单；可以在 BEAS 元数据浏览器查询 BO 编码。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2>三、模式 2：外部 C# 程序调用 U9 WCF 接口\u003C\u002Fh2>\n\u003Cblockquote>\n \u003Cp>场景：外部系统，C# 控制台 \u002F WPF，新增、查询 U9 单据，不写插件。 U9 对外提供 WCF 服务地址： \u003Ccode>http:\u002F\u002Fip\u002FU9\u002FService\u002FBusinessService.svc\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch3>方式 A：添加服务引用\u003C\u002Fh3>\n\u003Cp>VS 项目右键添加服务引用，填入上面地址，生成客户端代理。\u003C\u002Fp>\n\u003Cp>简单调用示例：\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F\u002F创建销售订单\nvar client = new BusinessServiceClient();\nclient.Open();\n\n\u002F\u002F构造DTO，调用Create接口\nvar result = client.Create(\"SAL.SaleOrder\", saleOrderDto);\n\nclient.Close();\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>方式 B：直接使用 U9SDK（需要引用 dll）\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>\u002F\u002F需要账号密码，U9用户编码+密码\nvar loginInfo = new LoginInfo(){UserCode=\"admin\",Password=\"xxx\",OrgId=1001};\nBusinessService svc = new BusinessService();\nsvc.Login(loginInfo);\n\n\u002F\u002F创建销售订单\nsvc.Create(\"SAL.SaleOrder\", dto);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cblockquote>\n \u003Cp>注意：跨服务器调用，需要 U9 服务器开启 WCF 权限，防火墙开放端口。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2>四、模式 3：BEAS 平台自定义页面（内嵌 C# 脚本）\u003C\u002Fh2>\n\u003Cp>1. 登录 U9，打开【开发平台】，新建【自定义页面】 2. 拖拽控件（文本框、按钮、表格） 3. 按钮事件写 C# 脚本，脚本可以直接操作 BO 对象。\u003C\u002Fp>\n\u003Cblockquote>\n \u003Cp>脚本环境是 U9 内置，不能引用外部 dll；复杂逻辑建议独立插件。\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch2>五、常用核心 API 说明\u003C\u002Fh2>\n\u003Col>\n \u003Cli>\u003Cstrong>BO 查询数据\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cpre>\u003Ccode>\u002F\u002FQuery查询BO\nvar list = U9.DB.DBContext.Current.Query(\"SAL.SaleOrder\")\n    .Where(\"DocNo=@DocNo\", new {DocNo=\"SO202608001\"})\n    .ToList&lt;ISaleOrder&gt;();\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Col>\n \u003Cli>\u003Cstrong>抛出业务提示\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cpre>\u003Ccode>throw new U9Exception(\"自定义提示信息\");\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Col>\n \u003Cli>创建其他单据（插件内部）\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cpre>\u003Ccode>\u002F\u002FBOFactory创建采购订单\nvar po = BOFactory.Create&lt;IPurchaseOrder&gt;(\"PO.PurchaseOrder\");\npo.SupplierID = 123;\npo.Save();\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>六、重要坑点（U9 开发高频踩坑）\u003C\u002Fh2>\n\u003Col>\n \u003Cli>\u003Cstrong>版本兼容\u003C\u002Fstrong>：U9 V2.8、V3.0、Cloud 版本 dll 不一样，开发机器 dll 版本必须和服务器版本一致，否则报错。\u003C\u002Fli>\n \u003Cli>\u003Cstrong>不要直接 SQL 操作数据库\u003C\u002Fstrong>！禁止 \u003Ccode>SqlConnection\u003C\u002Fcode>直接写 SQL 改 U9 表，必须走 BO 对象，否则缓存、触发器、业务逻辑失效，数据错乱。\u003C\u002Fli>\n \u003Cli>插件部署后\u003Cstrong>必须回收 IIS 应用池\u003C\u002Fstrong>，dll 不会自动加载。\u003C\u002Fli>\n \u003Cli>组织 OrgID：U9 是多组织，所有单据必须指定组织 ID，忘记会报权限错误。\u003C\u002Fli>\n \u003Cli>事务：插件上下文是同一个事务，BeforeSave 抛出异常，全部回滚。\u003C\u002Fli>\n \u003Cli>升级风险：所有业务逻辑写插件，\u003Cstrong>不要修改 U9 原有 dll，不要修改 BEAS 元数据原始 BO\u003C\u002Fstrong>，升级会覆盖。\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2>七、调试技巧\u003C\u002Fh2>\n\u003Cp>1. 服务器附加进程调试：VS 附加 \u003Ccode>w3wp.exe\u003C\u002Fcode>（IIS 进程），断点打插件代码。 2. 日志：U9 日志路径 \u003Ccode>U9\\Log\u003C\u002Fcode>，可以代码写日志\u003C\u002Fp>\n\u003Cpre>\u003Ccode>U9.Common.LogHelper.LogInfo(\"我的日志信息\");\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>八、学习资料渠道\u003C\u002Fh2>\n\u003Col>\n \u003Cli>U9 开发平台元数据浏览器：查看全部 BO、字段、事件。\u003C\u002Fli>\n \u003Cli>U9 二次开发文档（用友实施文档，BEAS 开发手册）\u003C\u002Fli>\n \u003Cli>BO 示例：系统自带的插件例子，在 U9 安装目录 Sample。\u003C\u002Fli>\n\u003C\u002Fol>","U9 是用友 U9 Cloud，基于BEAS 开发平台，底层 C# + .NET Framework，服务端是 IIS+WCF，数据库 SqlServer；二次开发分：插件扩展、WebService 接口、单据扩展、自定义页面、外部程序调用 U9 接口。 ⚠️ U9 二次开发不建议直接修改 U9 原代码，全部使用扩展、插件模式，升级不会覆盖。 一、开发环境准备 必备工具 Visual Studio（推荐 VS2019，.NET Framework 4.7，U9 老版本是 4.5） U9 开发端环境：安装 U9 BEAS 开发工具（U9 客户端里的【开发平台】） 引用 U9 核心 dll（从 U9 服务器 bin 目录拷贝，不要 NuGet 下载） U9.dll U9.Common.dll U9.DB.dll U9.Platform.dll U9.Shell.dll U9.BO.dll U9.WCF.dll BEAS.Core.dll 路径：U9 安装目录 U9\\WebSite\\bin，复制到本地项目引用，复制本地 = False，服务器上本身有。 两种开发模式 1）服务端插件开发（最常用）：单据保存前 \u002F 后、审核前 \u002F 后、按钮点击事件，C# 类库项目 2）外部程序调用 U9：控制台 \u002F WINFORM，调用 U9 WCF WebService 接口 3）BEAS 自定义页面：在 BEAS 平台拖拽，后台写 C# 脚本 二、模式 1：U9 服务端插件开发（C# 类库） 场景：销售订单、采购单，保存前校验、自动赋值、生成其他单据、审核后触发业务 1. 新建项目 VS 新建【类库 (.NET Framework)】，.NET4.7，引用上面 U9dll。 插件类必须继承 U9.Platform.Plugin.IBusinessPlugin using System; using U9.Platform; using U9.Platform.Plugin; using U9.BO; using U9.Common; namespace U9Plugin.Demo { \u002F\u002F\u002F \u003Csummary> \u002F\u002F\u002F 销售订单插件示例 \u002F\u002F\u002F \u003C\u002Fsummary> public class SaleOrderPlugin : IBusinessPlugin { \u002F\u002F插件执行入口 public void Execute(PluginContext context) { \u002F\u002F获取当前业务对象 var bo = context.BusinessObject as ISaleOrder; \u002F\u002F区分事件类型 switch (context.EventType) { case PluginEventType.BeforeSave: \u002F\u002F保存前事件 BeforeSave(bo, context); break; case PluginEventType.AfterSave: \u002F\u002F保存后 break; case PluginEventType.BeforeAudit: \u002F\u002F审核前 break; case PluginEventType.AfterAudit: \u002F\u002F审核后 break; } } private void BeforeSave(ISaleOrder saleOrder, PluginContext ctx) { \u002F\u002F示例校验：订单金额不能小于0 if(saleOrder.TotalAmount \u003C 0) { \u002F\u002F抛出异常，阻止保存 throw new U9Exception(\"订单总金额不能小于0！\"); } \u002F\u002F给字段赋值 saleOrder.Memo = \"插件自动赋值备注\"; \u002F\u002F遍历分录 foreach(var line in saleOrder.Lines) { var qty = line.Qty; } } \u002F\u002F插件描述，U9平台识别 public PluginDescriptor GetDescriptor() { return new PluginDescriptor { Name = \"SaleOrderDemoPlugin\", DisplayName = \"销售订单自定义插件\", \u002F\u002F绑定BO元数据ID，销售订单BO编码：SAL.SaleOrder BOName = \"SAL.SaleOrder\", \u002F\u002F订阅哪些事件 SubscribeEvents = new PluginEventType[] { PluginEventType.BeforeSave, PluginEventType.AfterSave, PluginEventType.BeforeAudit } }; } } } 2. 部署插件 1. 编译生成 dll，放到 U9 服务器 U9\\WebSite\\bin\\Plugin 2. 登录 U9【开发平台】→【插件管理】→注册插件，填入类的完整名 U9Plugin.Demo.SaleOrderPlugin,U9Plugin.Demo 3. 启用插件，重启 U9 应用池（IIS 回收应用程序池） 4. 测试新建销售订单触发插件。 关键点：BO 名称，每个单据有自己 BOName，比如 PO.PurchaseOrder 采购订单；可以在 BEAS 元数据浏览器查询 BO 编码。 三、模式 2：外部 C# 程序调用 U9 WCF 接口 场景：外部系统，C# 控制台 \u002F WPF，新增、查询 U9 单据，不写插件。 U9 对外提供 WCF 服务地址： http:\u002F\u002Fip\u002FU9\u002FService\u002FBusinessService.svc 方式 A：添加服务引用 VS 项目右键添加服务引用，填入上面地址，生成客户端代理。 简单调用示例： \u002F\u002F创建销售订单 var client = new BusinessServiceClient(); client.Open(); \u002F\u002F构造DTO，调用Create接口 var result = client.Create(\"SAL.SaleOrder\", saleOrderDto); client.Close(); 方式 B：直接使用 U9SDK（需要引用 dll） \u002F\u002F需要账号密码，U9用户编码+密码 var loginInfo = new LoginInfo(){UserCode=\"admin\",Password=\"xxx\",OrgId=1001}; BusinessService svc = new BusinessService(); svc.Login(loginInfo); \u002F\u002F创建销售订单 svc.Create(\"SAL.SaleOrder\", dto); 注意：跨服务器调用，需要 U9 服务器开启 WCF 权限，防火墙开放端口。 四、模式 3：BEAS 平台自定义页面（内嵌 C# 脚本） 1. 登录 U9，打开【开发平台】，新建【自定义页面】 2. 拖拽控件（文本框、按钮、表格） 3. 按钮事件写 C# 脚本，脚本可以直接操作 BO 对象。 脚本环境是 U9 内置，不能引用外部 dll；复杂逻辑建议独立插件。 五、常用核心 API 说明 BO 查询数据 \u002F\u002FQuery查询BO var list = U9.DB.DBContext.Current.Query(\"SAL.SaleOrder\") .Where(\"DocNo=@DocNo\", new {DocNo=\"SO202608001\"}) .ToList\u003CISaleOrder>(); 抛出业务提示 throw new U9Exception(\"自定义提示信息\"); 创建其他单据（插件内部） \u002F\u002FBOFactory创建采购订单 var po = BOFactory.Create\u003CIPurchaseOrder>(\"PO.PurchaseOrder\"); po.SupplierID = 123; po.Save(); 六、重要坑点（U9 开发高频踩坑） 版本兼容：U9 V2.8、V3.0、Cloud 版本 dll 不一样，开发机器 dll 版本必须和服务器版本一致，否则报错。 不要直接 SQL 操作数据库！禁止 SqlConnection直接写 SQL 改 U9 表，必须走 BO 对象，否则缓存、触发器、业务逻辑失效，数据错乱。 插件部署后必须回收 IIS 应用池，dll 不会自动加载。 组织 OrgID：U9 是多组织，所有单据必须指定组织 ID，忘记会报权限错误。 事务：插件上下文是同一个事务，BeforeSave 抛出异常，全部回滚。 升级风险：所有业务逻辑写插件，不要修改 U9 原有 dll，不要修改 BEAS 元数据原始 BO，升级会覆盖。 七、调试技巧 1. 服务器附加进程调试：VS 附加 w3wp.exe（IIS 进程），断点打插件代码。 2. 日志：U9 日志路径 U9\\Log，可以代码写日志 U9.Common.LogHelper.LogInfo(\"我的日志信息\"); 八、学习资料渠道 U9 开发平台元数据浏览器：查看全部 BO、字段、事件。 U9 二次开发文档（用友实施文档，BEAS 开发手册） BO 示例：系统自带的插件例子，在 U9 安装目录 Sample。",3439,{"id":6,"kind":7,"title":11,"summary":13,"image":14,"href":15,"meta":36,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":39},"2026 · 数据与架构","#2563eb","16 \u002F 10",[18],{"targetType":8,"targetId":9,"likedByMe":41,"likeCount":42,"commentCount":42,"contentLikeCount":42,"contentCommentCount":42,"sourceLikeCount":42,"sourceCommentCount":42},false,0,[44,51,57,64,70,79,85,92],{"id":45,"kind":7,"title":46,"summary":47,"image":48,"href":49,"meta":36,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":50},"NEWS_ARTICLE:842","几何分布：从“等一个结果”开始","你有没有过这样的经历？ 在游戏里抽卡，抽了多少次才终于出货？ 站在路边等公交车，第几辆来的才是你要坐的那一路？ 给客户打电话，打到第几个才终于接通？ 刷短视频时，刷了多少条才刷到自己想看的内容？ 这些场景背后，都藏着一个共同的概率模型——几何分布（Geometric Distribution）。 几","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F83005\u002F202609\u002F83005-20260902112922617-1277310049.png","\u002Fnews\u002F842",[18],{"id":52,"kind":7,"title":53,"summary":54,"image":14,"href":55,"meta":36,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":56},"NEWS_ARTICLE:884","OSS 文件上传的几个风险点和解决方案","〇、前言 OSS 作为海量数据的承载平台，一旦配置不当，可能引发敏感数据泄露、恶意文件上传、巨额流量盗刷甚至数据被勒索加密等严重后果。 了解这些风险并非杞人忧天，而是帮助开发者和运维人员在使用 OSS 时建立正确的安全思维——从凭证管理、权限控制、访问策略到上传校验，每一个环节都可能在疏忽中成为攻击","\u002Fnews\u002F884",[18],{"id":58,"kind":7,"title":59,"summary":60,"image":61,"href":62,"meta":36,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":63},"NEWS_ARTICLE:892","zg 正式开源：本地检索，不止于关键词","🚀 zg（zvec-grep）正式开源！\n　\n我们打磨了一款面向人与 AI Agent 的「本地检索工具」——  \n默认在本机完成索引与检索，既能理解模糊意图，也保留 rg 的精确与高效。\n　\n🔒 本地优先：文件处理、索引和检索均在设备内完成，代码与文档无需上传，保护隐私与数据安全。\n　\n⚡️","https:\u002F\u002Fintranetproxy.alipay.com\u002Fskylark\u002Flark\u002F0\u002F2026\u002Fpng\u002F24957442\u002F1786498962962-a148a454-6626-4fdc-81ff-e95a9f71c9cd.png","\u002Fnews\u002F892",[18],{"id":65,"kind":7,"title":66,"summary":67,"image":14,"href":68,"meta":36,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":69},"NEWS_ARTICLE:925","订单的含金量在分化","复杂的流程，在产品设计阶段就需要综合考虑多方面的建议，前期业务和技术的介入，避免产品层面出现合理但不合适的设计，过繁或者过简都不利于整体的迭代节奏。","\u002Fnews\u002F925",[18],{"id":71,"kind":7,"title":72,"summary":73,"image":74,"href":75,"meta":76,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":77},"NEWS_ARTICLE:827","MHS 三部曲（下）：谁允许 AI 行动？——权力、合规与中国厂商的答卷","我们总在等待一个像 ChatGPT 那样的机器人时刻。但具身智能真正的拐点，也许先发生在更不起眼的地方：一台陌生设备，第一次能把自己的能力、状态和边界完整告诉 AI；一个 Agent，第一次能把试出来的经验固化成可验证、可复用的机器技能。","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F510\u002F202608\u002F510-20260830153745229-1536981088.jpg","\u002Fnews\u002F827","2026 · 人工智能",[78],"人工智能",{"id":80,"kind":7,"title":81,"summary":82,"image":14,"href":83,"meta":17,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":84},"NEWS_ARTICLE:829","我不会美工，用 WorkBuddy 1 分钟做出 4 张海报","先说结果：下面这 4 张海报，从我发出指令到拿到图片，大约 1 分钟。 我不会美工，也没有打开 Photoshop。用的工具，是我之前用 WorkBuddy 做的一个海报生成器。这个生成器本身也没花几分钟，具体开发过程我在上一篇文章里写过。 这次我把海报生成器的网址、产品截图和要求一起发给 Work","\u002Fnews\u002F829",[7,8],{"id":86,"kind":7,"title":87,"summary":88,"image":89,"href":90,"meta":17,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":91},"NEWS_ARTICLE:828","一个人抵一个团队的时代，企业级 AI Agent 还需要做什么？","对于企业而言，真正需要的，不是一个“会聊天”的 Agent，而是一套能被多用户、多场景复用，且权限清晰、过程可审计、成本可控制的 Agent 能力体系。","https:\u002F\u002Fimg2024.cnblogs.com\u002Fblog\u002F2232255\u002F202609\u002F2232255-20260902173524728-659996478.png","\u002Fnews\u002F828",[7,8],{"id":93,"kind":7,"title":94,"summary":95,"image":14,"href":96,"meta":97,"badge":10,"author":12,"stats":-1,"accent":37,"coverRatio":38,"tags":98},"NEWS_ARTICLE:832","用 runtime-async 写一个支持 async\u002Fawait 的轻量脚本引擎","起因：一个好奇 事情的开头很简单。 给 .NET 做过动态脚本的人大概都碰到过同一堵墙：表达式树也好、Reflection.Emit 也好，都很难支持 async\u002Fawait。原因不在语法，而在 await 的实现方式——C# 编译器要为每个 async 方法生成一个状态机结构体，把方法体切成若干片","\u002Fnews\u002F832","2026 · 软件开发",[99],"软件开发"]