微信小程序授权功能全解析:从原理到实战避坑指南
1. 项目概述为什么小程序授权是开发者的必修课刚接触微信小程序开发那会儿我最头疼的就是授权这块。用户信息、位置、相册、蓝牙……每次调用这些能力都得先过用户授权这一关。流程没搞对轻则功能用不了用户抱怨重则审核被拒上线延期。特别是最近微信对隐私协议的要求越来越严chooseImage:fail api scope is not declared in the privacy agreement这类报错成了高频“拦路虎”。这不仅仅是调个API那么简单它关系到用户体验、数据合规和功能稳定性。今天我就结合自己踩过的坑和项目经验把微信小程序授权功能从原理到实操再到避坑指南给你彻底讲明白。无论你是刚入门的新手还是想系统梳理授权逻辑的老手这篇都能帮你建立起清晰、可落地的认知框架。2. 授权功能的核心原理与设计思路2.1 权限体系与Scope理解授权的基石微信小程序的授权本质上是一个“能力申请”的过程。微信将各种敏感或涉及用户隐私的API调用能力封装成了一个个具体的“权限”官方称之为scope。比如你想让用户选张图片就需要申请scope.writePhotosAlbum写入相册或scope.chooseImage选择图片的权限。这里的关键在于权限scope与API是强绑定的。不是你调用了wx.chooseImage就能选图而是你必须先获得对应的scope授权。这个设计思路源于隐私保护法规和平台责任要求应用必须明确告知用户“为什么要用这个功能”并获得用户的明确同意。权限分为两种主要类型用户信息类权限如获取用户头像昵称scope.userInfo、获取手机号scope.phoneNumber。这类权限授权结果直接返回敏感数据。设备与功能类权限如地理位置scope.userLocation、蓝牙scope.bluetooth、相册scope.writePhotosAlbum、通讯地址scope.address等。这类权限授权后你才能调用相应的硬件或系统功能API。理解这个绑定关系是解决绝大多数授权问题的第一步。当你看到xxx:fail api scope is not declared in the privacy agreement这个报错时它的直接原因就是你调用的API所需的scope没有在你小程序的隐私协议中声明。2.2 授权流程的演进从粗暴弹窗到精细化管理早期的授权流程相对简单粗暴开发者可以在页面加载时直接调用wx.authorize弹窗询问用户。但这种体验很差用户可能还没明白这个功能是干嘛的就被索要权限容易导致拒绝。因此微信逐步优化了授权策略核心思想变成了“按需申请、场景化说明”。现在的标准最佳实践是先检查wx.getSetting在需要用到某个功能前先检查用户是否已经授权过。已授权直接调用功能API。未授权不立即弹窗而是在用户触发某个具体功能比如点击“上传头像”按钮时再调用wx.authorize申请授权并且最好在按钮旁有清晰的文案说明为何需要这个权限。这个流程的优化显著提升了授权通过率和用户体验。它要求开发者更细致地设计交互将权限申请融入具体的功能场景中。2.3 隐私协议Privacy Agreement的强制关联这是近年来最重要的变化也是目前开发者遇到问题最多的地方。微信要求所有需要授权的scope都必须在小程序管理后台的《小程序隐私保护指引》中进行声明和配置。配置路径登录微信公众平台 - 进入小程序管理后台 - 设置 - 服务内容声明 - 用户隐私保护指引 - 更新。你需要在这里像填空一样明确填写收集/使用的信息类型例如“位置信息”、“相册图片库/视频库访问”。使用目的必须清晰、具体地说明为什么需要这个信息。例如“用于为您提供附近的店铺推荐服务”比“用于改善服务”要好得多。对应的API/组件要勾选或填写你实际使用的API如wx.chooseLocation,wx.chooseImage等。关键点后台配置的声明必须与你代码中实际申请和使用的scope完全匹配。如果声明了A scope却用了B scope的API或者代码用了某个scope但后台没声明都会导致调用失败并出现前述的报错。这个配置不是可选项而是上线前必须完成的步骤否则涉及隐私的API将无法在真机上正常调用。3. 核心API详解与实战代码拆解3.1 wx.getSetting权限状态的侦察兵这个API用于获取用户当前的授权设置状态。它返回一个对象包含了所有已询问过权限的授权状态用户点击过“允许”或“拒绝”的权限。wx.getSetting({ success (res) { // res.authSetting 是一个对象键为 scope 字符串值为布尔值 console.log(授权状态, res.authSetting); // 例如{ “scope.userInfo“: true, “scope.userLocation“: false } if (res.authSetting[scope.userLocation]) { // 用户已授权地理位置可以安全调用 wx.getLocation this.doSomethingWithLocation(); } else { // 用户未授权或已拒绝需要引导用户触发授权 this.showAuthGuide(location); } }, fail (err) { console.error(获取设置失败, err); } })实操心得不要在应用一启动就批量检查所有权限这既不必要也影响体验。应该在具体功能入口处检查对应的单个权限状态。wx.getSetting是后续授权决策的唯一可靠依据。3.2 wx.authorize发起授权请求的正式渠道当检测到用户未授权时你需要使用wx.authorize来发起授权弹窗。注意对于部分 scope如scope.userInfo此接口已失效需要使用按钮组件下文会详述。// 以申请地理位置权限为例 wx.authorize({ scope: scope.userLocation, success (res) { // 用户点击了“允许” console.log(地理位置授权成功); // 授权成功后立即调用功能API this.getLocationAndUse(); }, fail (err) { // 用户点击了“拒绝” console.log(地理位置授权被拒绝, err); // 这里应该给出友好的提示引导用户去设置页手动开启 this.showGoToSettingModal(); } })重要注意事项一次性wx.authorize针对同一个scope只会弹窗一次。如果用户点击了“拒绝”再次调用将不再弹窗而是直接进入fail回调。此时你必须引导用户手动前往设置页开启。scope 值必须准确这里的scope字符串必须与微信官方文档中定义的完全一致且已在隐私协议中声明。3.3 wx.openSetting授权管理的后门当用户拒绝授权后小程序无法再次主动弹起授权窗口。唯一的途径是引导用户点击一个按钮通过wx.openSetting打开小程序自己的设置页面让用户手动切换权限开关。// 通常在一个模态对话框的确认按钮中触发 wx.openSetting({ success (settingRes) { // 用户从设置页返回可以再次检查授权状态 console.log(设置页返回, settingRes.authSetting); if (settingRes.authSetting[scope.userLocation]) { // 用户在设置页打开了权限 this.getLocationAndUse(); } else { // 用户仍然没有打开权限尊重用户选择可能禁用相关功能 this.showFeatureDisabledHint(); } } })注意wx.openSetting的调用也必须由用户点击行为触发例如bindtap不能由 API 自动调用否则会被拦截。设计一个友好的引导弹窗解释为何需要权限以及如何打开至关重要。3.4 特殊Scope的处理以用户信息为例scope.userInfo获取用户头像昵称是最特殊的权限。由于微信策略调整wx.authorize({scope: ‘scope.userInfo’})已完全失效。现在唯一正确的方式是使用button组件的open-typegetUserInfo。!-- WXML 中 -- button open-typegetUserInfo bindgetuserinfoonGetUserInfo 授权登录 /button// JS 中 Page({ onGetUserInfo(e) { // 用户点击按钮并确认授权后信息会在这里 if (e.detail.userInfo) { // 用户同意授权 const { nickName, avatarUrl } e.detail.userInfo; console.log(用户昵称, nickName, 头像, avatarUrl); // 可以将信息发送到后端服务器 this.loginToServer(e.detail); } else { // 用户拒绝授权 console.log(用户拒绝了授权); } } })核心逻辑这个按钮会弹出一个官方样式的授权窗口。用户的操作结果同意或拒绝通过事件bindgetuserinfo回调给开发者。同意后e.detail.userInfo中包含了加密数据encryptedData和iv通常需要发送到你的后端服务器结合session_key和appid进行解密才能获得真实的unionId和openId完成 unionId 登录。绝对不要相信前端直接返回的未加密信息用于关键业务逻辑。4. 完整授权流程实战以“上传头像”功能为例让我们把一个常见的“上传头像”功能走通它涉及scope.userInfo昵称头像用于展示和scope.writePhotosAlbum访问相册。4.1 第一步隐私协议配置在微信小程序后台的隐私保护指引中你必须声明收集“微信昵称、头像”用于“在个人资料页展示用户昵称和头像”。申请“相册图片库权限”用于“允许用户从手机相册选择图片作为头像上传”。 并关联好对应的API。4.2 第二步页面逻辑与代码实现// pages/profile/profile.js Page({ data: { userInfo: null, // 用户信息 hasUserInfo: false, // 是否有用户信息 canIUseGetUserProfile: true, // 兼容性判断 }, onLoad() { // 页面加载时检查用户信息授权状态旧版兼容方式现已不推荐主动弹窗 this.checkAuthStatus(); }, // 检查授权状态 checkAuthStatus() { wx.getSetting({ success: (res) { if (res.authSetting[scope.userInfo]) { // 用户已授权过用户信息旧版授权方式 wx.getUserInfo({ success: (res) { this.setData({ userInfo: res.userInfo, hasUserInfo: true }) } }) } // 注意scope.writePhotosAlbum 不需要在此时检查应在点击上传按钮时检查 } }) }, // 处理“授权登录”按钮获取用户信息 onGetUserInfo(e) { const that this; if (e.detail.userInfo) { // 用户同意授权 that.setData({ userInfo: e.detail.userInfo, hasUserInfo: true }); // 通常这里需要将 e.detail 中的加密数据发送到后端解密并登录 wx.login({ success: (loginRes) { wx.request({ url: https://your-server.com/login, method: POST, data: { code: loginRes.code, encryptedData: e.detail.encryptedData, iv: e.detail.iv }, success(res) { // 后端解密成功返回 unionId/openId 和 session console.log(登录成功, res.data); } }) } }) } else { // 用户拒绝授权 wx.showToast({ title: 授权失败部分功能受限, icon: none }); } }, // 处理“上传头像”按钮点击 onChooseAvatar() { const that this; // 1. 先检查相册权限 wx.getSetting({ success(res) { if (!res.authSetting[scope.writePhotosAlbum]) { // 2. 未授权发起授权请求 wx.authorize({ scope: scope.writePhotosAlbum, success() { // 3. 授权成功调用选择图片API that.selectImageFromAlbum(); }, fail() { // 4. 授权被拒引导去设置页 wx.showModal({ title: 提示, content: 需要您授权访问相册才能选择图片是否去设置开启, success(modalRes) { if (modalRes.confirm) { wx.openSetting(); // 由用户点击模态框的确认按钮触发这里只是示意 } } }); } }) } else { // 已授权直接选择图片 that.selectImageFromAlbum(); } } }) }, // 从相册选择图片 selectImageFromAlbum() { wx.chooseImage({ count: 1, sizeType: [compressed], // 压缩图 sourceType: [album], // 从相册选 success(res) { const tempFilePath res.tempFilePaths[0]; console.log(选中图片, tempFilePath); // 这里可以显示预览并调用上传接口将图片传到自己的服务器 // that.uploadAvatar(tempFilePath); }, fail(err) { console.error(选择图片失败, err); // 处理失败例如可能是隐私协议未配置好 if (err.errMsg.includes(api scope is not declared)) { wx.showToast({ title: 功能配置异常请联系客服, icon: none }); } } }) } })!-- pages/profile/profile.wxml -- view classcontainer !-- 用户信息区域 -- view wx:if{{!hasUserInfo}} text请先授权登录/text button open-typegetUserInfo bindgetuserinfoonGetUserInfo授权登录/button /view view wx:else classuser-info image src{{userInfo.avatarUrl}} modeaspectFill/image text{{userInfo.nickName}}/text button bindtaponChooseAvatar更换头像/button /view /view这个流程清晰地展示了“检查 - 授权 - 使用”的链条并且将授权请求与具体的用户操作点击按钮紧密绑定符合最佳实践。5. 高频问题排查与避坑指南在实际开发中90%的授权问题都集中在以下几个方面。我整理了一个速查表方便你快速定位问题现象可能原因解决方案xxx:fail api scope is not declared in the privacy agreement1. 小程序后台隐私协议未声明该API对应的scope。2. 隐私协议已声明但未发布生效仅保存未提交。3. 代码中使用的scope与后台声明的不一致。1. 登录公众平台在【设置-服务内容声明-用户隐私保护指引】中补充声明。2. 检查声明是否已提交并生效有生效时间。3. 核对代码中的scope字符串与后台声明的API是否匹配。调用wx.authorize不弹窗直接进入fail回调用户之前已经拒绝过该权限。wx.authorize对同一scope只主动弹窗一次。必须引导用户手动开启。设计一个友好的提示说明需要权限的原因并提供一个按钮在按钮的bindtap事件中调用wx.openSetting()。wx.openSetting无法打开设置页wx.openSetting必须由用户点击行为直接触发不能在异步回调如setTimeout,wx.showModal的success回调中直接调用。确保调用wx.openSetting()的代码路径是由一个按钮的bindtap事件同步触发的。获取用户信息头像昵称失败仍在使用已废弃的wx.getUserInfo或wx.authorize({scope: ‘scope.userInfo’})接口。统一改用button open-typegetUserInfo组件。如果需要静默获取openId使用wx.login获取code传给后端即可无需用户信息授权。真机调试正常体验版/正式版授权失败1. 隐私协议未配置或未生效。2. 服务器域名未配置如果授权后需调用自家接口。3. 小程序基础库版本过低某些API或scope不支持。1. 检查并发布隐私协议。2. 在【开发-开发设置-服务器域名】中配置request合法域名。3. 在管理后台设置最低基础库版本并在代码中做好兼容判断。授权弹窗描述文案不清晰后台隐私协议中填写的“使用目的”描述过于笼统。修改隐私协议中的描述使其具体、清晰、易懂明确告知用户收集信息用于什么功能。例如“用于为您展示附近的推荐商家”比“用于提供更好的服务”更佳。蓝牙、位置等硬件权限申请被系统拦截除了小程序层级的授权部分硬件功能如蓝牙、后台定位还需要手机系统层级的权限。在引导文案中提醒用户在授权小程序后可能还需要在手机的系统设置中为该小程序开启蓝牙、定位等权限。独家避坑技巧开发阶段开启“调试模式”在开发者工具和真机调试时勾选“开启调试模式”可以在真机上绕过部分权限校验和域名校验快速验证主要逻辑。但切记这不能替代正式的隐私协议配置。善用“隐私信息保护”检测微信开发者工具提供了“代码静态分析”功能可以扫描代码中使用的隐私相关API并提示你是否已在后台声明。上线前务必跑一遍。授权状态本地缓存对于非关键权限如位置用户拒绝后可以将其选择缓存在本地如wx.setStorageSync。下次再提示时可以根据缓存判断是否要再次引导去设置页避免频繁打扰用户。降级处理方案对于非核心功能所需的权限例如定位用于推荐城市但不是核心用户拒绝后应有降级方案。比如允许用户手动输入城市而不是完全禁用功能。6. 进阶场景与最佳实践6.1 多框架下的授权处理Taro/uni-app如果你使用 Taro 或 uni-app 开发授权逻辑的本质不变但API调用方式会封装成框架自己的语法。以 uni-app 中获取用户信息为例// uni-app 中使用 uni.getUserProfile (对应新版获取用户信息) uni.getUserProfile({ desc: ‘用于完善会员资料‘, // 声明用途 success: (res) { console.log(‘用户信息‘, res.userInfo); // 后续登录逻辑与原生小程序一致需要 unionId 则需将 encryptedData 等传后端 }, fail: (err) { console.log(‘获取失败‘, err); } }); // uni-app 中授权地理位置 uni.authorize({ scope: ‘scope.userLocation‘, success: () { uni.getLocation({ /* ... */ }); }, fail: () { /* 引导去设置 */ } });核心原则查阅你所用框架的官方文档找到其封装的授权API。然后务必仍然回到微信公众平台配置隐私协议因为框架最终也是调用原生APIscope的声明要求是一样的。6.2 授权与登录态管理的结合授权和登录是两件事但常关联进行。一个典型的 unionId 登录流程如下前端通过button open-type“getUserInfo”获取用户加密数据encryptedData和iv。前端调用wx.login()获取临时登录凭证code静默获取无需授权。前端将code、encryptedData、iv发送给自己的后端服务器。后端用appId、appSecret和code向微信服务器换取session_key和openid。后端用session_key解密encryptedData得到包含unionId(如果已绑定开放平台) 在内的完整用户信息。后端根据unionId识别用户生成自定义登录态如Token返回给前端。前端存储Token后续请求携带以识别用户。安全要点session_key和appSecret绝不能存放在前端。解密过程必须在后端完成。6.3 用户体验优化策略预加载与懒授权不要在首页一次性申请所有权限。像通讯地址、发票抬头等完全可以等到用户进入“下单填写地址”或“开发票”页面时再申请。清晰的引导文案在申请权限的按钮旁或弹窗出现前用简短的文案说明权限用途。例如“需要您的位置信息来寻找附近的维修点”。被拒绝后的挽回路径用户拒绝后不要只弹个Toast就结束。应该在相关功能入口处持续但克制地提醒例如在头像处显示一个灰色图标点击后提示“前往设置开启相册权限以上传头像”。设置页直达入口在“我的”或“设置”页面里可以放一个“隐私权限管理”的入口直接调用wx.openSetting方便用户集中管理。授权功能是小程序开发生态中规则明确但细节繁多的一环。吃透它的原理严格遵循“检查-场景化申请-处理结果”的流程并提前在后台配置好隐私协议就能避开大多数坑。剩下的就是结合业务设计出既合规又流畅的用户体验了。

相关新闻

DocSift:基于RAG的长文档智能检索与问答系统实践

DocSift:基于RAG的长文档智能检索与问答系统实践

你有没有遇到过这样的场景:手里有一份几十页甚至上百页的PDF文档,想用大模型快速提取信息、总结要点或者回答几个具体问题。你兴冲冲地把整个PDF扔给模型,结果要么是上下文长度不够,模型直接“罢工”;要么是处理速度慢…

2026/10/18 5:19:02 阅读更多 →
Git分支核心原理与实战:从指针模型到GitHub Flow工作流

Git分支核心原理与实战:从指针模型到GitHub Flow工作流

1. 从“三棵树”到“时光机”:理解Git分支的本质如果你刚开始接触Git,可能会觉得分支这个概念有点抽象,甚至有点“吓人”。很多人把它想象成代码的“平行宇宙”,听起来很酷,但操作起来却容易让人一头雾水。今天&#x…

2026/10/18 5:19:19 阅读更多 →
网络讨论模式分析:基于规则引擎识别二极管思维与双标行为

网络讨论模式分析:基于规则引擎识别二极管思维与双标行为

这次我们来看一个名为“大头鹰”的网络现象分析工具。这个项目并非传统意义上的软件或模型,而是一套用于识别和分析网络讨论中特定行为模式的方法论与关键词库。它主要针对网络环境中常见的“二极管思维”、“双标行为”和“怨妇心态”等非理性讨论模式进行结构化拆…

2026/10/18 5:20:23 阅读更多 →

最新新闻

Python宠物信息管理系统:SQLite+Tkinter实战开发指南

Python宠物信息管理系统:SQLite+Tkinter实战开发指南

简介:这是一套面向Python初学者与课程设计实践者的宠物信息管理系统完整开发资料,聚焦宠物诊所、动物收容所或家庭宠物管理等实际场景,解决多维度宠物数据登记、健康追踪与主人协同管理问题。资源包共4个文件,含1个SQL数据库脚本&…

2026/10/19 0:37:05 阅读更多 →
AI工具飞速上手之Claude Code:把settings.json改到TaoToken的CLI配置指南

AI工具飞速上手之Claude Code:把settings.json改到TaoToken的CLI配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:37:05 阅读更多 →
推荐 5 个 Hooks,代码质量提升 3 倍:TaoToken 统一 Key 下的 Claude Code 实战

推荐 5 个 Hooks,代码质量提升 3 倍:TaoToken 统一 Key 下的 Claude Code 实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:37:05 阅读更多 →
三菱PLC变址寄存器实现螺丝机配方管理,换型不再改程序

三菱PLC变址寄存器实现螺丝机配方管理,换型不再改程序

做三轴螺丝机项目,最让我头疼的不是走位精度,也不是电批扭矩,反而是配方管理。第一版程序就写了四种产品型号,直接拿比较指令一段段选参数,等客户说要加第五个型号,我发现光梳理坐标就得翻小半个程序。后来…

2026/10/19 0:37:05 阅读更多 →
SOPC数字时钟设计:NIOS II软硬协同全流程实战

SOPC数字时钟设计:NIOS II软硬协同全流程实战

简介:本资源是一套完整的基于SOPC的数字电子时钟课程设计实现方案,面向嵌入式系统与数字电路方向的本科高年级学生及FPGA初学者,解决从硬件描述、软核集成到多模态人机交互的全流程开发问题。压缩包共4175个文件,约50.29MB&#x…

2026/10/19 0:37:05 阅读更多 →
基于Java Web的在线报名系统课设开发:SSM架构与避坑指南

基于Java Web的在线报名系统课设开发:SSM架构与避坑指南

简介:面向Java Web课程设计的在线报名系统完整项目包,适合计算机相关专业学生完成课程设计,也适合初学JSP/Servlet的开发者进行实战参考。系统围绕考生、管理员两类角色展开,核心功能包括考生注册登录、个人资料维护、通过身份证号…

2026/10/19 0:36:05 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →