包含关键字 typecho 的文章

最近一直在找工作,面试机会特别少。今天面了一个,他说短期项目大概两个月,签顾问合同还是协议,让我明天去面谈。有哪些需要注意的坑吗

去年 5 月离职,已经快一年了,加上年纪大,面试机会真的少。我想去试试但是怕太忙错过 3,4 月份的面试机会。不去又怕这两个月也找不到工作。facepalm

Link Card Preview Image - 1200x628.png

我的想法

源于我的身体疼痛
我自己久坐比较多,肩颈、腰背也经常紧(我相信程序员很少不是我这样的,哈哈)。

平时也会按摩、拉伸、想办法让身体松一点。但一直有个很实际的问题:身体状态很容易被忘掉。

今天按完觉得松了,过两天又坐回去了。某一阵子腰背不舒服,过几天再回头看,又记不清是从什么时候开始的。哪些方式真的有用,很多时候只能靠印象。

如何记录
所以我一开始想做的东西其实很简单:把按摩、疼痛、紧张、放松这些状态认真记下来。

哪里疼,哪里紧,哪里放松了;是按摩后缓解了一点,还是久坐后又回去了。

对我来说,这就是做这个东西最早的初衷:我想持续跟踪自己的身体状态,而不是每次都靠感觉。

记录后咋办
后来我发现,只做记录还不够。既然有了这些原始数据,那就应该继续往前走,把它做成可视化,再和拉伸动作、肌肉知识连起来,这样才真的能帮助自己理解身体。

三者结合
所以现在它的核心,其实是把 「身体区域 + 关联肌肉 + 拉伸动作」 三者串起来。不是孤立地记一条日志,也不是孤立地看一个动作,而是把这些信息连成一个关系。

所以,我做了一个 APP:「摩丘放松」

Frame.png

不是另一款复杂的健身课程 App ,也不只是疼痛记录。

从每日拉伸开始,记录身体疼痛、紧张与放松变化,用热力图更直观地看懂身体状态。

它有什么特点

  • 身体日志:记录疼痛、紧张、放松,也能顺手记按摩、锻炼后的感受
  • 身体可视化:尽量把状态落到身体图上,不想只留一堆文字
  • 拉伸推荐:记录完对应部位后,能继续看相关拉伸动作
  • 肌肉卡片:除了动作,还有相关肌肉的基础科普和怎么放松
  • 三者关联:身体区域、关联肌肉、拉伸动作是串起来的,不是分开的模块
  • AI 回顾:辅助做阶段总结,帮你捞一些身体状态的模式

我自己对它的定位,不是一个很重的健身 App ,更像一个身体觉察工具。重点不是做了多少动作,而是你能不能慢慢知道:自己最近哪里总是紧,什么方式对自己真的有用。

「放松,从身体觉察开始」,这是目前定的 Slogan.

顺手提一下我怎么看现有产品。

  • Bend:最老牌的产品,更偏拉伸本身,但没有把身体状态可视化这件事做进去
  • BodyKnows:更偏身体疼痛记录,但和拉伸、肌肉知识的关联没那么强

我自己想补的,正好是中间这块:记录 + 可视化 + 拉伸 + 肌肉科普 放在一起

最终目的是,让身体放松下来,大家都太累了

Frame-2.png

Frame3.png

适用人群

如果你刚好有这些需求,可以直接试试:

  • 久坐多,肩颈腰背容易紧
  • 按摩、理疗、拉伸后,想跟踪效果
  • 想养成每日拉伸习惯
  • 想长期记录身体状态,而不是只靠记忆

下载地址

App Store 搜索:摩丘放松

赠送兑换码

最后送 10 个月度会员兑换码,到期前取消不会扣费,希望获得你的反馈

没有拿到的朋友也没关系,因为大部分的功能都是免费的,可以直接下载使用

EFYTH3J6LHJ36MLKRY
86J86LKEPJJKF764PH
WTLF63A8L8H7NTY7L7
3KLTP7H7MHENFFWJNP
TW86NAMJLNT8M3XE7T
HH6PTHMXNTWHNEAWKT
Y7H8KEL36FFLLP8ALE
TNA3WMF6WPKTK4NH87
NTR47X6LNLEL47KMJY
W8HM7L8YN7HN8WR8P6

图片
没点进这篇文章的你,可能还未接触智能体;而点进来的你,大概率已经体验过“养龙虾”的便捷——这里说的,就是当下风靡全球的开源智能体OpenClaw。这只被网友亲切称为“赛博龙虾”的开源智能体,确实凭借突出的实用性收获了广泛关注。与传统“只会聊天”的AI不同,OpenClaw具备自主执行能力,终结了“Prompt(提示词)苦力”时代,让智能体从“能说”走向“会做”,也带动了全民“养虾”的热潮。使用OpenClaw时,用户无需繁琐提示,只需下达明确目标,它便能自主完成浏览器操作、文件查找、跨平台对比甚至代码调试等任务,这种高效便捷的特性,确实能为职场人、创业者节省大量时间,实现“一人高效办公”的效果。OpenClaw的实用性得到了不同群体的认可,无论是全球极客、创业群体,还是职场白领、普通大众,都能借助它提升效率。其普及也带动了整个“龙虾”类智能体赛道的发展,腾讯、华为等企业纷纷布局相关产品,可见OpenClaw引领的智能体趋势,已成为行业发展的重要方向。从金融建模、法律分析到日常文档处理、数据统计,OpenClaw均能胜任,相关实测显示,它能有效提升办公效率、节省人力成本,这也是其获得市场认可的核心原因。
图片

图片
这几年AI技术快速发展,OpenClaw的出现,打破了传统AI“只会聊天”的局限,开启了智能体实用化的新纪元。其开源特性降低了使用门槛,让不同群体都能接触并使用智能体,这是它能快速普及的关键。传统AI多以对话响应为主,而OpenClaw实现了从“被动响应”到“主动执行”的跨越,成为能辅助完成实际工作的“数字助手”,适配职场人、创业者的核心需求,这也是其核心价值所在。全民“养虾”热潮的背后,是大众对高效办公、便捷生活的追求,也是智能体行业快速发展的体现。OpenClaw用实际表现证明,智能体可成为融入日常、提升效率的实用工具,推动智能体成为未来科技发展的核心方向之一。截至目前,OpenClaw在OpenRouter平台的累计Token消耗量已达8.52T(万亿),稳居应用流行度榜首,成为无数职场人、开发者的首选智能体工具,更推动整个智能体市场进入高速增长的黄金期,一场围绕“高效、便捷、智能”的生产力变革,正在各行各业全面展开。
图片
OpenClaw带来的高效便捷有目共睹,但其使用过程中,预算控制问题也需要客观看待。在享受智能体红利的同时,合理规划使用成本,才能让其真正发挥价值。社交平台上,用户对OpenClaw的评价较为客观,既认可其高效性,也有不少人分享了使用中的成本困扰:长期高频使用下,Token消耗带来的成本压力逐渐显现,部分用户希望能在保证体验的同时,优化使用成本。OpenClaw本身为开源免费,但运行依赖大模型算力,需按Token计费,其全天候运行模式会持续消耗算力,若配置不当或高频使用,容易产生较高的使用成本。部分用户反馈的成本问题,是开源智能体在普及过程中普遍存在的现象,也是行业优化的方向。电商平台上出现的“上门卸载”服务,并非对OpenClaw的否定,而是部分用户因使用场景变化、成本控制需求等做出的选择,这也从侧面反映出,用户在使用智能体时,对成本的关注度正在提升。客观而言,OpenClaw作为海外开源标杆,在智能体技术普及上做出了重要贡献,其开源精神也为行业发展提供了支撑。同时,作为面向全球的产品,它在本地化适配和成本优化上,仍有提升空间,这也为国产智能体的发展提供了契机。
图片

图片
针对用户对智能体“高效+控费”的核心需求,上海容智深耕本土市场,推出“国产龙虾”,在延续OpenClaw核心优势的基础上,重点优化成本控制与本地化适配,兼顾实用性与经济性。“国产龙虾”保留了OpenClaw高效便捷的自主执行能力,同时从性价比、数据安全、本土适配三个维度进行优化,既能满足用户高效办公的需求,也能帮助用户合理控制使用成本。其核心优势集中在三点:一是高性价比,通过优化Token消耗逻辑,将月均使用成本控制在百元级别,帮助用户做好预算管理;二是高安全性,支持全私有化部署,保障用户数据安全;三是高适配性,贴合国内使用习惯,无需美元信用卡,无网络延迟,使用更便捷。“国产龙虾”即将正式亮相,它并非对OpenClaw的替代,而是针对国内用户需求的补充与优化,旨在为用户提供“高效且经济”的智能体解决方案,让更多人能在合理预算内,享受智能科技带来的便捷。

最近用 OpenClaw 做了不少自动化,其中一个痛点是 PikPak 网盘的文件管理——每次有新资源都要手动整理到对应文件夹,给 Infuse 用。

所以写了 pikpaktui ,一个纯 Rust 的 PikPak 终端客户端(多图警告):









TUI 模式:三栏 Miller 布局(类似 Yazi ),支持缩略图预览、视频串流播放( IINA/mpv/VLC )、离线下载管理,全键盘操作。

CLI 模式:27 个子命令( ls/mv/cp/rm/download/upload/share/login 等),支持 JSON 输出、dry-run 预览、Zsh Tab 补全(含云端路径补全)。很适合脚本和自动化。

我自己的用法是搭配 OpenClaw ,自动把 /My Pack 里的新内容按规则整理到对应目录——电影丢 /Movies ,剧集丢 /Series ,动漫丢 /Anime ,然后 Infuse 直接挂载 WebDAV 就能看,省心。

安装:

brew install Bengerthelorf/tap/pikpaktui

纯 Rust ,无 OpenSSL 依赖,支持 Linux (x86_64 musl static)、macOS Intel 和 Apple Silicon 。

欢迎试用反馈 🙏

整理 | 华卫

 

近日,软件巨头 Atlassian 宣布将裁撤约 10% 的员工,涉及约 1600 个岗位,并更换首席技术官,以此进行重组,进一步投资 AI。该公司一位发言人表示,受影响岗位中超过 900 个来自软件研发部门。之后,该公司股价在纳斯达克盘后交易中上涨逾 4%。

 

而这家公司在过去 12 个月里,其股价暴跌近 74%。Atlassian 是一家总部位于悉尼、在纳斯达克上市的澳美合资科技企业,主营软件开发、项目管理与团队协作工具,旗下拥有项目管理平台 Jira、协同办公产品 Confluence 等全球数十万机构都在使用的核心产品,年收入规模达数十亿美元。

召百名员工来“自裁”:踢走资深员工、新人却没事

美国时间周三晚间,Atlassian 联合创始人 Mike Cannon-Brookes 在一份内部通知中对员工表示,此 “对 Atlassian 而言是正确的决定”。同时他说道,“但这并不意味着做出这个决定很容易,远非如此。我知道这对你们每个人都将产生巨大影响,今天我和整个 Atlassian 都深感沉重。”

 

“软件公司在增长、盈利、速度、价值创造方面的‘优秀标准’已经提高” ,Cannon-Brookes 在致员工信中写道。他表示,裁员是经过 “深思熟虑、极其全面” 的流程后做出的决定。

 

Mike Cannon-Brookes

 

针对 AI 是否取代了这 1600 名被裁员工的问题,他写道:“我们的理念并非‘AI 取代人力’。但如果假装 AI 没有改变我们所需的技能结构,以及某些领域的岗位数量,那就是不诚实的。”该公司发言人透露,受影响员工中约 640 人位于北美,480 人在澳大利亚,250 人在印度,其余分布在日本、菲律宾、欧洲、中东和非洲。据了解,Atlassian 绝大多数员工从事软件工程与设计工作,截至 2025 年 6 月,这部分人员占其 13813 名全职员工总数的 50% 以上。

 

“这主要是为了适应变化。我们正在调整技能组合,改变工作方式,为未来而建设。”Cannon-Brookes 称,超过 100 名 Atlassian 员工参与了裁员岗位评估,优先保留拥有 AI 相关技能和可迁移技能的员工。同时,Cannon-Brookes 告诉员工,Atlassian 正在将自身重新定位为一家“AI 优先公司”。尽管 AI 不会直接取代这些岗位,但它是此次变革的核心导火索。“我们坚信,人与 AI 协同才能创造最佳成果。”

 

内部层面,Atlassian 裁员岗位的筛选方式引发了困惑与不满。一位不愿具名的员工表示,“除了逐个查名字,根本不知道具体谁被裁了”,流程显得很不统一,“我团队里一位上轮绩效超预期、已任职五年的资深员工被裁了,而入职不到三个月的新人却没受影响” 。

 

该员工表示,“我个人认为是公司之前招人太多了,而 Cannon-Brookes 希望借此推高股价。”他们猜测,公司可能因招聘投入或声誉顾虑,不愿裁掉新员工。

 

还有消息称,Atlassian 上月宣布暂停招聘工程师及其他相关岗位,叫停全球招聘计划。许多急切的求职者称自己被 “彻底失联”或是在最后一刻被收回录用通知。这些求职者纷纷在社交媒体和 Blind 等员工论坛上发泄不满,他们被卷入这场突如其来的招聘冻结。有人在 Blind 上发帖说道,“拿到了工程岗 offer…… 沉默三周后,我终于在领英联系招聘经理,对方告诉我公司冻结招聘了。” 另一则上周的帖子写道,“我也是,六小时后的面试刚被取消,只告诉我职位不再开放。我已经准备了好几周,真的很崩溃。”

CTO 都被开了,晋升“下一代 AI 人才”

值得一提的是,Atlassian 这次的人事调整连技术最高层职位都未放过。Atlassian 向监管机构提交的文件显示,重组后在 Atlassian 任职近四年的首席技术官 Rajeev Rajan 将于 3 月底卸任。他曾任职于 Meta,上任后为开发者推行了更严格的绩效指标。

 

CTO 的位置将由 Taroon Mandhana 与 Vikram Rao 两位内部晋升者联合接任,两人被该公司称作 “下一代 AI 人才”。Mandhana 担任协作首席技术官,Rao 担任企业级首席技术官兼首席信任官。

 

Atlassian 表示,这次裁员与战略变化有关,公司计划专注于 AI 开发和企业销售,将重点转向 AI 工具和协作产品。在此之前,Atlassian 就已在大力推进 AI 战略,包括自研 AI 工具 Rovo、收购开发 Arc 和 Dia 浏览器的 The Browser Company 以及开发者智能平台 DX,该公司还计划将这些技术整合到 Jira 和 Bitbucket 等产品中。

 

同时,Cannon-Brookes 称,公司将内部办公聊天工具 Slack 的开放时间比往常延长了至少 6 小时,以便员工与同事道别。他写道,“对于即将离开的 Atlassian 同仁,我为这一决定给你们带来的影响深表歉意,感谢你们为我们这段非凡历程所付出的一切。”Cannon-Brookes 还告诉员工,下周将举行全公司线上问答会,解答更多问题。“请善待自己,善待彼此,关心你的同事和朋友,给大家一点时间消化这件事。”

 

据悉,被裁员工预计将获得至少 16 周薪资的遣散费、每工作一年额外增加一周,以及延长的医保计划、按比例提前发放的奖金、归还公司笔记本电脑后可领取的 1000 美元 “技术补贴”。Atlassian 在监管文件中表示,此次裁员将产生 2.25 亿至 2.36 亿美元的相关费用,其中裁员及相关成本预计总计最高可达 1.74 亿美元,而缩减办公场地产生的退租相关费用至少为 6200 万美元。大部分成本将在 3 月底前产生,并于 6 月底前支付完毕。

 

该公司透露,他们希望重新平衡资源,为 AI 时代团队合作未来做准备,该计划包括办公空间和内部运营的调整,将支出和团队重新引导至与 AI 相关的技术和服务。

因 AI 陷危机:市值腰斩、两位联创身家缩水过半

Atlassian 由 Cannon-Brookes 和 Scott Farquhar 于 2002 年创立,两人均入选《福布斯》澳大利亚 50 位最富有人士名单。如今,由于投资者担忧 AI 会让这家软件公司的服务被淘汰,Atlassian 市值已蒸发过半,股价暴跌也让该公司两位联合创始人的净资产缩水逾半。

 

在声明中,Cannon-Brookes 强调,AI 的应用改变了公司所需的技能与岗位结构,此次重组将改善 Atlassian 财务状况,并 “自筹资金进一步加大对 AI 和企业销售业务的投入”。Cannon-Brookes 还写道,该公司于 2015 年上市,但自 2017 年以来的每个财年均处于亏损状态。

 

据了解,Atlassian 通过 Jira、Confluence、Trello 等流程协作应用的订阅服务获得收入增长,2025 年第四季度营收达 16 亿美元(合 23 亿澳元),同比增加 3 亿美元。但公司的确尚未实现盈利,自 2017 年以来每年均录得数百万美元亏损,其中 2025 年第四季度净亏损 4200 万美元,高于上年同期的 3800 万美元。Cannon-Brookes 表示,此次重组将加快公司实现盈亏平衡的进程。

 

“像 Atlassian 这样的软件公司有机会通过采用 AI 工具提升业务效率,尤其是在产品开发中。通过这种方式重组,他们可以减少实现现有业务并实现更高盈利增长所需的资源。“D.A. Davidson 分析师 Gil Luria 表示。

 

前不久,Cannon-Brookes 在接受 a16z 的采访时表示,在 AI 时代,所有企业都不得不重新进行自我审视。过去你可能认为内部有五十个流程都是你的独门秘籍,但实际上真正具备壁垒的可能只有二十个。“不是每一家 SaaS 公司都能在未来十年活下来。就像当年很多公司没能转型上云,没能从 Windows 时代走向互联网时代一样。”

 

而在几天前做客 20VC 播客节目时,Cannon-Brookes 又称 “SaaS 已死” 的说法“荒谬至极”。“照他们说的,我们就像一群原始人,只会敲敲打打写汇编代码,完全不懂大语言模型,我们不是简单地把 AI 功能外挂上去,而是在从头构建。”他说道。

 

然而,有网友这样形容 Atlassian 这家曾经的软件巨头所面临的 AI 时代危机:“现在,一个提示词就能建立 Jira。一年内,Atlassian 的整个产品组合将可以通过一个提示词克隆完成。Atlassian 的股票将归零。”

 

就在 Atlassian 宣布裁员数周前,科技巨头 Block 与澳大利亚科技公司 WiseTech 也因 AI 相关原因进行了类似裁员。Block 裁掉了全球 40% 的员工,员工规模从 1 万人缩减至 6000 人以下,联合创始人 Jack Dorsey 称,AI 带来的生产力提升 “从根本上” 改变了公司。WiseTech 则宣布将在两年内裁员 2000 人,约占员工总数的 30%。由于上述两家公司在过去半年内股价均大幅下跌,分析师认为,除 AI 因素外,它们各自还有其他裁员理由。

 

不少网友评价道,“许多公司都这样做,相信了 AI 的梦想和炒作,解雇了数千名员工,结果惨败。几乎所有人都不得不紧急招人。”

 

参考链接:

https://www.theguardian.com/technology/2026/mar/12/atlassian-layoffs-software-technology-ai-push-mike-cannon-brookes-asx

https://www.news.com.au/finance/business/technology/atlassian-to-cut-1600-jobs-in-ai-push/news-story/8b4b40046ab464788866cb1df4d3a00a

https://www.smh.com.au/technology/australian-software-giant-atlassian-to-cut-1600-workers-blaming-ai-20260311-p5o9n3.html

https://www.youtube.com/watch?v=0lzo2tFBFy8

2026 年,智能体将在企业级应用中取得哪些实质性突破?点击下载《2026 年 AI 与数据发展预测》白皮书,获悉专家一手前瞻,抢先拥抱新的工作方式!

在本快速入门指南中,您将利用 Snowflake Cortex 的 AI_TRANSCRIBE 函数,构建一个支持语音交互的 AI 助手。用户可通过录制音频消息,经由系统自动转录并由大语言模型处理,实现智能化、自然的对话体验。

学习目标

  • 使用 Snowflake Cortex 的 AI_TRANSCRIBE 函数实现语音转文本功能;

  • 创建具备适当加密机制的存储阶段,以安全处理音频数据;

  • 将 Streamlit 的音频输入功能与 Snowflake 进行集成;

  • 构建一个支持语音交互的对话式智能助手。

构建内容

您将完成一个具备语音交互能力的聊天机器人应用。用户可录制音频消息,系统将自动完成语音转文本处理,并通过大语言模型生成智能回复,最终实现流畅的语音对话式交互体验。

准备要求

  • 具备可用的Snowflake 账户访问权限

  • 掌握 Python 及 Streamlit 的基础知识;

  • 拥有使用 Cortex AI_TRANSCRIBE 函数的相应权限。

开始使用

请从 30daysofai GitHub 代码仓库克隆或下载代码:

git clone https://github.com/streamlit/30DaysOfAI.gitcd 30DaysOfAI/app
复制代码

本快速启动对应的应用程序代码:

第25天:语音助手

音频配置阶段

音频转录功能需要配置具有服务端加密的存储阶段。AI_TRANSCRIBE 函数只能访问存储在采用 Snowflake 托管加密(SNOWFLAKE_SSE)的存储阶段中的文件,这种加密方式可确保音频数据在 Snowflake 处理环境中的安全处理。

创建存储阶段

CREATE DATABASE IF NOT EXISTS RAG_DB;CREATE SCHEMA IF NOT EXISTS RAG_DB.RAG_SCHEMA;DROP STAGE IF EXISTS RAG_DB.RAG_SCHEMA.VOICE_AUDIO;CREATE STAGE RAG_DB.RAG_SCHEMA.VOICE_AUDIO    DIRECTORY = ( ENABLE = true )    ENCRYPTION = ( TYPE = 'SNOWFLAKE_SSE' );
复制代码

创建采用 SNOWFLAKE_SSE 加密的存储阶段,这是 AI_TRANSCRIBE 访问音频文件的必要条件。

重要提示:存储阶段必须使用 SNOWFLAKE_SSE 加密,AI_TRANSCRIBE 才能访问音频文件。

构建语音界面

连接与状态设置

首先,导入所需库并建立与 Snowflake 的连接。通过 try/except 结构,使应用程序能够在 Snowflake 环境中的 Streamlit 和本地环境中正常运行:

import streamlit as stimport jsonfrom snowflake.snowpark.functions import ai_completeimport ioimport timeimport hashlibtry:    from snowflake.snowpark.context import get_active_session    session = get_active_session()except:    from snowflake.snowpark import Session    session = Session.builder.configs(st.secrets["connections"]["snowflake"]).create()def call_llm(prompt_text: str) -> str:    df = session.range(1).select(        ai_complete(model="claude-3-5-sonnet", prompt=prompt_text).alias("response")    )    response_raw = df.collect()[0][0]    response_json = json.loads(response_raw)    if isinstance(response_json, dict):        return response_json.get("choices", [{}])[0].get("messages", "")    return str(response_json)if "voice_messages" not in st.session_state:    st.session_state.voice_messages = []if len(st.session_state.voice_messages) == 0:    st.session_state.voice_messages = [        {"role": "assistant", "content": "Hello! :material/waving_hand: I'm your voice-enabled AI assistant. Click the microphone button to record a message, and I'll respond to you!"}    ]if "voice_database" not in st.session_state:    st.session_state.voice_database = "RAG_DB"    st.session_state.voice_schema = "RAG_SCHEMA"if "processed_audio_id" not in st.session_state:    st.session_state.processed_audio_id = None
复制代码

会话状态用于跟踪对话消息、数据库配置以及最近处理音频的哈希值。该哈希值可防止在 Streamlit 重新运行时对同一录音进行重复处理。

侧边栏设置

侧边栏包含应用标题、配置选项以及阶段管理控件:

database = st.session_state.voice_databaseschema = st.session_state.voice_schemafull_stage_name = f"{database}.{schema}.VOICE_AUDIO"stage_name = f"@{full_stage_name}"with st.sidebar:    st.title(":material/record_voice_over: Voice-Enabled Assistant")    st.write("Talk to your AI assistant using voice input!")        st.header(":material/settings: Settings")        with st.expander("Stage Status", expanded=False):        try:            stage_info = session.sql(f"SHOW STAGES LIKE 'VOICE_AUDIO' IN SCHEMA {database}.{schema}").collect()            if stage_info:                session.sql(f"DROP STAGE IF EXISTS {full_stage_name}").collect()            session.sql(f"""            CREATE STAGE {full_stage_name}                DIRECTORY = ( ENABLE = true )                ENCRYPTION = ( TYPE = 'SNOWFLAKE_SSE' )            """).collect()            st.success(":material/check_box: Audio stage ready (server-side encrypted)")        except Exception as e:            st.error(f":material/cancel: Could not create stage")        if st.button(":material/delete: Clear Chat"):        st.session_state.voice_messages = [            {"role": "assistant", "content": "Hello! :material/waving_hand: I'm your voice-enabled AI assistant. Click the microphone button to record a message, and I'll respond to you!"}        ]        st.rerun()
复制代码

侧边栏提供设置界面及相关控件。阶段状态展开面板用于确保音频阶段已正确创建并加密。阶段重建功能可处理阶段配置错误等边界情况。

使用 AI_TRANSCRIBE 转录音频

处理录制的音频

主区域显示对话内容和音频输入组件。录制音频后,系统会将其上传至舞台并进行转录:

st.subheader(":material/voice_chat: Conversation")audio = st.audio_input(":material/mic: Click to record")for msg in st.session_state.voice_messages:    with st.chat_message(msg["role"]):        st.markdown(msg["content"])status_container = st.container()if audio is not None:    audio_bytes = audio.read()    audio_hash = hashlib.md5(audio_bytes).hexdigest()        if audio_hash != st.session_state.processed_audio_id:        st.session_state.processed_audio_id = audio_hash                with status_container:            transcript = None            with st.spinner(":material/mic: Transcribing audio..."):                try:                    timestamp = int(time.time())                    filename = f"audio_{timestamp}.wav"                                        audio_stream = io.BytesIO(audio_bytes)                    full_stage_path = f"{stage_name}/{filename}"                                        session.file.put_stream(                        audio_stream,                        full_stage_path,                        overwrite=True,                        auto_compress=False                    )                                        safe_file_name = filename.replace("'", "''")                                        sql_query = f"""                    SELECT SNOWFLAKE.CORTEX.AI_TRANSCRIBE(                        TO_FILE('{stage_name}', '{safe_file_name}')                    ) as transcript                    """                                        result_rows = session.sql(sql_query).collect()                                        if result_rows:                        json_string = result_rows[0]['TRANSCRIPT']                        transcript_data = json.loads(json_string)                        transcript = transcript_data.get("text", "")                                                if transcript:                            st.session_state.voice_messages.append({                                "role": "user",                                "content": transcript                            })                                except Exception as e:                    st.error(f"Error during transcription: {str(e)}")
复制代码

st.audio_input() 在主区域提供麦克风按钮供录制使用。音频字节通过 MD5 哈希算法生成唯一标识符。put_stream() 将音频上传至舞台。AI_TRANSCRIBE 结合 TO_FILE() 将语音转换为文本。系统解析 JSON 格式的转录文本,并将其添加到对话记录中。

生成语音响应

构建对话上下文

经过转写后,对话历史将被格式化为大语言模型的上下文,以生成相关响应:

            if transcript:                with st.spinner(":material/smart_toy: Generating response..."):                    conversation_context = "You are a friendly voice assistant. Keep responses short and conversational.\n\nConversation history:\n"                                        history_messages = [msg for msg in st.session_state.voice_messages[:-1]                                        if not (msg["role"] == "assistant" and "Click the microphone" in msg["content"])]                                        for msg in history_messages:                        role = "User" if msg["role"] == "user" else "Assistant"                        conversation_context += f"{role}: {msg['content']}\n"                                        conversation_context += f"\nUser: {transcript}\n\nAssistant:"                                        response = call_llm(conversation_context)                                        st.session_state.voice_messages.append({                        "role": "assistant",                        "content": response                    })                                try:                    session.sql(f"REMOVE {stage_name}/{safe_file_name}").collect()                except:                    pass                                st.rerun()else:    st.session_state.processed_audio_id = None
复制代码

对话历史以对话形式呈现,为上下文提供语境支撑。大语言模型(LLM)负责生成符合对话场景的回复内容。REMOVE 命令用于清理临时音频文件。st.rerun()方法可刷新界面,确保新消息能够及时显示。最后,在 else 分支中,当检测不到音频输入时,系统会将 processed_audio_id 重置为 None,从而确保后续录音文件能够被正常处理。

完整应用

将这些代码整合在一起,我们就得到了一个完整的语音助手应用:

import streamlit as stimport jsonfrom snowflake.snowpark.functions import ai_completeimport ioimport timeimport hashlibtry:    from snowflake.snowpark.context import get_active_session    session = get_active_session()except:    from snowflake.snowpark import Session    session = Session.builder.configs(st.secrets["connections"]["snowflake"]).create()def call_llm(prompt_text: str) -> str:    """Call Snowflake Cortex LLM."""    df = session.range(1).select(        ai_complete(model="claude-3-5-sonnet", prompt=prompt_text).alias("response")    )    response_raw = df.collect()[0][0]    response_json = json.loads(response_raw)    if isinstance(response_json, dict):        return response_json.get("choices", [{}])[0].get("messages", "")    return str(response_json)if "voice_messages" not in st.session_state:    st.session_state.voice_messages = []if len(st.session_state.voice_messages) == 0:    st.session_state.voice_messages = [        {            "role": "assistant",            "content": "Hello! :material/waving_hand: I'm your voice-enabled AI assistant. Click the microphone button to record a message, and I'll respond to you!"        }    ]if "voice_database" not in st.session_state:    st.session_state.voice_database = "RAG_DB"    st.session_state.voice_schema = "RAG_SCHEMA"if "processed_audio_id" not in st.session_state:    st.session_state.processed_audio_id = Nonedatabase = st.session_state.voice_databaseschema = st.session_state.voice_schemafull_stage_name = f"{database}.{schema}.VOICE_AUDIO"stage_name = f"@{full_stage_name}"with st.sidebar:    st.title(":material/record_voice_over: Voice-Enabled Assistant")    st.write("Talk to your AI assistant using voice input!")        st.header(":material/settings: Settings")        with st.expander("Database Configuration", expanded=False):        database = st.text_input("Database", value=st.session_state.voice_database, key="db_input")        schema = st.text_input("Schema", value=st.session_state.voice_schema, key="schema_input")                st.session_state.voice_database = database        st.session_state.voice_schema = schema                st.caption(f"Stage: `{database}.{schema}.VOICE_AUDIO`")        st.caption(":material/edit_note: Stage uses server-side encryption (required for AI_TRANSCRIBE)")                if st.button(":material/autorenew: Recreate Stage", help="Drop and recreate the stage with correct encryption"):            try:                full_stage = f"{database}.{schema}.VOICE_AUDIO"                session.sql(f"DROP STAGE IF EXISTS {full_stage}").collect()                session.sql(f"""                    CREATE STAGE {full_stage}                        DIRECTORY = ( ENABLE = true )                        ENCRYPTION = ( TYPE = 'SNOWFLAKE_SSE' )                """).collect()                st.success(f":material/check_circle: Stage recreated successfully!")                st.rerun()            except Exception as e:                st.error(f"Failed to recreate stage: {str(e)}")        with st.expander("Stage Status", expanded=False):        database = st.session_state.voice_database        schema = st.session_state.voice_schema        full_stage_name = f"{database}.{schema}.VOICE_AUDIO"                try:            stage_info = session.sql(f"SHOW STAGES LIKE 'VOICE_AUDIO' IN SCHEMA {database}.{schema}").collect()                        if stage_info:                st.info(f":material/autorenew: Recreating stage with server-side encryption...")                session.sql(f"DROP STAGE IF EXISTS {full_stage_name}").collect()                        session.sql(f"""                CREATE STAGE {full_stage_name}                    DIRECTORY = ( ENABLE = true )                    ENCRYPTION = ( TYPE = 'SNOWFLAKE_SSE' )            """).collect()            st.success(f":material/check_box: Audio stage ready (server-side encrypted)")                    except Exception as e:            st.error(f":material/cancel: Could not create stage")        if st.button(":material/delete: Clear Chat"):        st.session_state.voice_messages = [            {                "role": "assistant",                "content": "Hello! :material/waving_hand: I'm your voice-enabled AI assistant. Click the microphone button to record a message, and I'll respond to you!"            }        ]        st.rerun()st.subheader(":material/voice_chat: Conversation")audio = st.audio_input(":material/mic: Click to record")for msg in st.session_state.voice_messages:    with st.chat_message(msg["role"]):        st.markdown(msg["content"])status_container = st.container()if audio is not None:    audio_bytes = audio.read()    audio_hash = hashlib.md5(audio_bytes).hexdigest()        if audio_hash != st.session_state.processed_audio_id:        st.session_state.processed_audio_id = audio_hash                with status_container:            transcript = None            with st.spinner(":material/mic: Transcribing audio..."):                try:                    timestamp = int(time.time())                    filename = f"audio_{timestamp}.wav"                                        audio_stream = io.BytesIO(audio_bytes)                    full_stage_path = f"{stage_name}/{filename}"                                        session.file.put_stream(                        audio_stream,                        full_stage_path,                        overwrite=True,                        auto_compress=False                    )                                        safe_file_name = filename.replace("'", "''")                                        sql_query = f"""                    SELECT SNOWFLAKE.CORTEX.AI_TRANSCRIBE(                        TO_FILE('{stage_name}', '{safe_file_name}')                    ) as transcript                    """                                        result_rows = session.sql(sql_query).collect()                                        if result_rows:                        json_string = result_rows[0]['TRANSCRIPT']                        transcript_data = json.loads(json_string)                        transcript = transcript_data.get("text", "")                                                if transcript:                            st.session_state.voice_messages.append({                                "role": "user",                                "content": transcript                            })                        else:                            st.error("Transcription returned no text.")                            st.json(transcript_data)                    else:                        st.error("Transcription query returned no results.")                                except Exception as e:                    st.error(f"Error during transcription: {str(e)}")                        if transcript:                with st.spinner(":material/smart_toy: Generating response..."):                    conversation_context = "You are a friendly voice assistant. Keep responses short and conversational.\n\nConversation history:\n"                                        history_messages = st.session_state.voice_messages[:-1] if len(st.session_state.voice_messages) > 1 else []                                        history_messages = [msg for msg in history_messages if not (msg["role"] == "assistant" and "Click the microphone button" in msg["content"])]                                        for msg in history_messages:                        role = "User" if msg["role"] == "user" else "Assistant"                        conversation_context += f"{role}: {msg['content']}\n"                                        conversation_context += f"\nUser: {transcript}\n\nAssistant:"                                        response = call_llm(conversation_context)                                        st.session_state.voice_messages.append({                        "role": "assistant",                        "content": response                    })                                try:                    session.sql(f"REMOVE {stage_name}/{safe_file_name}").collect()                except:                    pass                                st.rerun()else:    st.session_state.processed_audio_id = Nonest.divider()st.caption("Day 25: Voice Interface | 30 Days of AI")
复制代码

现在,让我们来看看我们构建的语音助手应用程序:

部署应用

将上述代码保存为 streamlit_app.py,并使用以下任一方式进行部署:

  • 本地部署:在终端中运行streamlit run streamlit_app.py

  • Streamlit Community Cloud:通过 GitHub 仓库部署应用

  • Streamlit in Snowflake(SiS):直接在 Snowsight 中创建 Streamlit 应用

总结与资源

恭喜您!您已成功利用 Snowflake Cortex 的 AI_TRANSCRIBE 函数构建了一个支持语音交互的 AI 助手。现在,用户可以通过语音提问,并获得智能化的对话式回复。

本课要点

• 使用 Snowflake Cortex AI 服务中的 AI_TRANSCRIBE 函数实现语音转文本;

• 创建具备适当加密机制的内部阶段以处理音频文件;

• 将 Streamlit 的音频输入组件与 Snowflake 平台进行集成;

• 构建一个具备对话能力的语音助手。

相关资源

技术文档:

Snowflake AI_TRANSCRIBE 官方文档

Streamlit 音频输入组件文档

扩展阅读:

Snowflake Cortex 概述

原文地址:https://www.snowflake.com/en/developers/guides/build-voice-assistant-app-with-streamlit-and-snowflake-cortex/

点击链接立即报名注册:Ascent - Snowflake Platform Training - China更多 Snowflake 精彩活动请关注专区

🎧 测试一下你的“识曲能力”?

最近利用业余时间 vibe coding 了一个网页音乐猜歌小游戏 —— 《我要猜歌名》

很早就想做这个游戏了,苦于一直没找到合适的音乐 API 接入。最近发现 iTunes 其实有提供音乐试听片段的免费 API ,无需鉴权,刚好适用于这个场景,于是做了一个纯净、丝滑、甚至有点挑战性的网页版小游戏。


🕹️ 三种玩法:

  • 🏆 挑战模式 自由筛选年代、语言(国语/粤语/英语)和标签。你需要在字符池里精准拼出歌名!两轮机会,第一轮答对拿满分 3 分,10 首曲目满分 30 分。

  • ⚡ 限时模式 60 秒倒计时,4 选 1 快速作答。 答对加分,答错直接“速通”结算。我自己的最高记录是 17 首,看看你的手速如何?

  • ☕ 休闲模式 没压力,不计分,单纯当个随机播放器听听歌。遇到喜欢的歌还能直接查看详情,适合摸鱼时间。

  • 👑隐藏成就 暂时先保密,玩得足够多的话,应该就能触发

✨ 点击下方链接,晒出你的挑战分数!

http://music.rossroma.com/

一、转录因子研究的制备难点

转录因子是细胞通路的核心调控蛋白,参与细胞发育、分化等生理过程。其中,转录因子L(TFL)参与多项组织发育,其表达异常与部分发育障碍相关,是相关领域的重要研究靶点。
但TFL的制备存在诸多困难:该蛋白包含LIM结构域、同源结构域及内在无序区域,在大肠杆菌体系中表达易形成不溶性包涵体,复性难度大,功能性蛋白获取量少;在昆虫细胞、哺乳动物细胞、酵母等其他体系中,也存在获取量不足、纯化繁琐、蛋白易降解等问题,阻碍了TFL的结构解析、功能研究及靶向研究推进。
针对这一行业痛点,nuclera推出的eProtein Discovery无细胞蛋白表达筛选系统展现出独特优势。曼博生物代理eProtein Discovery无细胞蛋白表达筛选系统,如有需要欢迎点击了解无细胞蛋白表达系统详情。
研究人员借助该系统,成功完成全长TFL及两个功能结构域的无细胞蛋白表达与纯化,通过优化蛋白可溶性功能筛选条件,验证了制备蛋白的DNA结合功能。这一实践不仅为这类复杂难表达蛋白研究提供了可参考的技术方案,也充分体现了无细胞蛋白合成技术的应用价值,下面将详细解析该系统的核心技术与工作流程。

二、eProtein Discovery系统的核心技术与工作流程

eProtein Discovery是nuclera推出的无细胞蛋白合成系统,又称体外转录/翻译系统,其核心优势在于摆脱对活体细胞培养的依赖,实现蛋白制备的自动化。该系统依托cell-free system,结合数字微流控蛋白筛选、纳升液滴蛋白表达等关键技术,实现无细胞蛋白表达自动化,为难表达蛋白快速获取提供技术保障。
具体而言,该系统可同时筛选24种可溶性蛋白或11种膜蛋白,每种蛋白搭配8组不同表达条件,48小时内即可完成从DNA到活性蛋白的制备与纯化,其筛选结果还能为体内表达体系的菌株选择、质粒设计提供参考,顺畅衔接后续蛋白纯化表达流程。其核心工作流程分为三个关键阶段,全程自动化操作,可有效缩短蛋白制备周期,具体如下:

1、筛选条件优化

将设计好的eGene构建体、定制化无细胞混合体系加载至数字微流控卡盒,系统24小时内可完成192组表达条件筛选,生成192组表达数据和30组纯化数据,自动分析并筛选出适配的表达组合,确定蛋白放大生产的适配条件;

2、蛋白放大制备

根据筛选结果,选取对应表达组合进行过夜放大培养,借助专用纯化试剂完成蛋白纯化,从而获得微克级目标蛋白,可通过SDS-PAGE、Western blot等实验验证蛋白表达与纯化效果;

3、蛋白功能验证

将制备好的蛋白用于后续功能实验,验证其生物学功能,完成从蛋白制备到功能研究的闭环,为后续科研提供直接支撑

三、TFL的无细胞蛋白制备与筛选方案

基于上篇解析的eProtein Discovery无细胞系统核心技术与工作流程,研究人员针对TF L这类高度无序的难表达转录因子,开展了专项无细胞蛋白表达与纯化研究,逐步形成了完整的难表达蛋白快速获取方案。该方案全程严格遵循无细胞蛋白合成逻辑,优化每一步实验条件,确保实验结果的可靠性,具体方案如下:

1、构建体设计与制备

选取全长TF L、未知功能结构域L2、DNA结合结构域L3三种蛋白变体,通过系统内置的AlphaFold结构预测工具设计L2、L3,将三种变体导入系统云软件优化密码子后,添加3C和TEV序列;利用可溶性标签筛选技术,构建24个含不同可溶性标签的eGene构建体及1个无标签对照构建体,所有构建体C端均整合Strep标签和检测标签,分别用于磁珠纯化和蛋白定量。

2、无细胞混合体系配置

选取8种无细胞混合体系,在核心翻译机制基础上,添加金属辅因子、分子伴侣、二硫键促进剂及3C蛋白酶;结合TF L含两个LIM结构域的特点,在体系中加入Zn²⁺,稳定蛋白锌结合区域,为蛋白正确折叠提供适配环境。

3、自动化筛选与分析

将24个eGene构建体、8种无细胞混合体系及纯化磁珠、对照样品、缓冲液等加载至微流控卡盒,系统自动生成并分析192组表达图谱,24小时内筛选出每种蛋白变体对应的10组高表达组合并完成纯化,确定各变体的放大生产预测得率,为后续放大制备提供数据支撑。

四、TFL制备结果与功能验证

按照上述制备与筛选方案,研究人员依托eProtein Discovery系统,成功完成了三种TF L变体的制备与纯化。通过系统分析筛选数据、蛋白制备结果及功能验证实验,不仅验证了该系统在难表达蛋白制备中的应用效果,也为无细胞蛋白合成技术在转录因子研究中的多种应用提供了坚实的实验依据,具体结果如下:
筛选数据揭示优化方向:系统筛选的30组高得率表达条件中,所有构建体均含可溶性标签,全长TF L和L2适配P17标签,L3适配CUSF标签,与无标签构建体相比,蛋白表达量有所提升,体现了可溶性标签在蛋白可溶性功能筛选中的作用;无细胞混合体系中,Zn²⁺可稳定蛋白结构,GSSG、PDI⁺/GSSG的氧化环境配置,可提升不同蛋白变体的表达量,为复杂蛋白无细胞表达条件优化提供参考

TFL变体的AlphaFold结构预测
图1:TFL变体的AlphaFold结构预测。图示为全长TF L的预测结构(重点关注区域已高亮标注)。蛋白变体L2和L3基于上述区域筛选设计,同时获得了这些截短蛋白的结构预测结果。

eGene构建体与无细胞混合体系的筛选
图2:eGene构建体与无细胞混合体系的筛选。(A) 含可溶性标签的TF L eGene构建体设计方案。(B) 用于提高可溶性蛋白得率的无细胞混合体系筛选结果。

放大制备获得高纯度蛋白:选取适配表达组合进行过夜放大培养,在1.5mL体系中成功获得微克级三种TF L变体蛋白;SDS-PAGE分析显示,纯化后蛋白出现与预期分子量一致的单一条带,Western blot实验验证了蛋白标签的完整性,证实蛋白成功表达与纯化,可满足后续功能实验需求。
功能验证证实蛋白活性:通过DNA结合电泳迁移率变动分析验证蛋白生物学功能,结果显示,全长TF L可与含结合位点的标记DNA发生浓度依赖性结合,L3结构域可与DNA探针形成特异性复合物,阴性对照无结合现象;L2结构域未表现出DNA结合能力,为其功能研究提供了新线索,也证实eProtein Discovery系统制备的蛋白保留天然生物学功能。

三、无细胞蛋白表达技术的应用价值

结合本次TF L的制备与验证实验,eProtein Discovery系统凭借无细胞蛋白合成的独特技术特点,成功解决了TF L这类高度无序转录因子的制备难题,48小时内即可完成从DNA到功能性蛋白的全流程制备,有效突破了传统表达体系在复杂蛋白制备中的技术限制,为难表达蛋白研究提供了全新的技术路径。
除了转录因子制备,该系统还整合数字微流控、无细胞蛋白表达、荧光蛋白定量检测等技术,实现表达条件的高通量筛选与准确优化,可完成可溶性蛋白快速制备,其筛选结果可与体内表达体系衔接,可进行规模化制备。
在AI蛋白工程、de novo蛋白设计等前沿科研领域,eProtein Discovery系统可发挥难表达蛋白快速获取的优势,为人工设计蛋白、新型功能蛋白的制备与验证提供支撑,助力科研人员开展蛋白结构研究、靶向药物研发、再生医学等探索,推动无细胞蛋白表达技术在更多科研场景落地。上海曼博生物作为正式的nuclera中国代理,为国内科研人员、生物医药企业提供eProtein Discovery系统的产品咨询、采购安装、技术支持等全流程服务,如您需要可点击了解曼博生物代理的蛋白表达系统

你是否也曾想拥有一个能深度定制、数据完全自主可控的个人 AI 智能体?

2026年2月,阿里云 AgentScope 正式开源了 CoPaw(协同个人智能体工作站)。作为一款本地优先、可自托管的个人 AI 智能体框架,CoPaw 被广大开发者亲切地称为 OpenClaw 的“国产友好平替”。

现在,无需繁琐的本地环境配置,借助阿里云 PAI-EAS,只需 5分钟,你就能轻松拉起一个专属于你的 CoPaw Agent 工作站!

为什么选择在 PAI-EAS 上部署 CoPaw?

这不仅仅是一次简单的部署,而是打造“专属大模型 + 专属 Agent”一体化体验的最佳实践。

在这里,你可以享受到极高的模型自由度与成本控制力:

  • 模型自由,随心切换: 既支持一键调用阿里云百炼丰富的模型资源,也支持 PAI-EAS 自定义模型服务。
  • 极致的推理成本控制: 深度集成 Aliyun Coding Plan 服务,敲代码、做任务,成本都在掌控之中。
  • 全场景伴随助手: 支持原生接入钉钉、飞书等国民级办公频道,让你的专属 Agent 真正融入日常工作流。

5 分钟极速部署指南

只需简单的三个步骤,你的专属 AI 助理即可上线。

第一步 部署EAS服务

1. 登录 PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS。

2. 在推理服务页签,单击部署服务。然后在自定义模型部署区域,单击自定义部署。

3. 配置以下关键参数:

参数描述
服务名称自定义服务名称,示例:copaw\_demo。
部署方式选择镜像部署,同时勾选开启Web应用
镜像配置官方镜像中选择copaw,镜像版本选择最新版本
存储挂载选择OSS,持久化存储CoPaw的配置。
* Uri:要存储的OSS路径,如 oss://examplebucket/copaw/

* 挂载路径:挂载到服务实例中的目标路径,必须填写/mnt/data/
运行命令运行命令:/start.sh
端口号输入:8088
资源类型选择公共资源
部署资源选择CPU机型即可,可根据实际的资源需要进行选择,默认选择ecs.c7a.large
专有网络创建及配置相应的VPC、交换机和安全组。

4. 单击部署,等待一段时间即可完成模型部署。

第二步 配置公网访问

EAS 服务需借助 NAT 网关和 EIP 实现公网访问,步骤如下。详情请参见使用公网NAT网关SNAT功能访问互联网

1. 创建公网 NAT 网关并绑定EIP

前往NAT 网关 - 公网 NAT 网关购买页

  • 付费类型:按量付费。
  • 地域:选择 EAS 服务所在的地域。
  • 网络及可用区:选择 EAS 服务配置的 VPC。创建成功后无法修改。
  • 弹性公网IP:选择已有的未绑定实例的 EIP 或新购弹性公网 IP。
2. 配置 SNAT 条目

前往 公网 NAT 网关页面。找到步骤1创建的公网 NAT 网关,单击操作列的设置SNAT,单击创建 SNAT 条目。

  • SNAT 条目粒度:选择为 VPC 粒度。
  • 选择弹性公网 IP 地址:选择步骤1中创建/新购的弹性公网 IP。

第三步 配置模型 开始对话

1、单击调用/日志/监控列下的调用按钮,进入WebUI页面。
1d1302279d80404d996caf02bf93999c.png

2、配置模型。在设置 > 模型里面配置提供商,然后在LLM 配置区域选择提供商和模型。这里为您推荐三种模型配置方式,您可以任选一种:

2.1 Aliyun Coding Plan

访问 Coding Plan 页面,即可订阅并获取 Coding Plan 专属 API Key。>
2a751b5162e34f15871d883f0d38e1f0.png

2.2 添加 EAS 模型服务

a. 进入 Model Gallery 控制台,选择您想要部署的模型,例如:Qwen3.5-397B-A17B。
f2ae5d20fe4a4dca9508e5e9c8b1062c.png

b. 服务部署完成后,可以在 PAI-EAS 控制台查看调用地址和 token。
1fd40701093f4b0ea1d1ea203c8b81aa.png

c. 单击添加提供商,添加 PAI-EAS 为新的提供商,协议选择 OpenAI 兼容。
20c837641d244b83836b04cd24b46ade.png

d. 设置 URL 和 API 密钥。这里的 URL 填写 服务的调用地址+/v1,API 密钥填写服务的 Token。
09bf753b4a044457bd97a030ab247c69.png

e. 添加模型。
29f916b9f3b1436ebafe6be3938f850f.png

2.3 DashScope

单击 DashScope 提供商卡片上的设置,添加 阿里云百炼 API Key,参见 模型列表添加更多模型。
de555a875905496e92cc9e713041fb4c.png

3、向您的 CoPaw 私人助手进行对话和任务下达。
af8624e1ddfa4190b4bdc09e00596d91.png

4、您还可以参照频道配置指引,将 CoPaw 接入钉钉或飞书,详见频道配置

现在,打开聊天窗口,向你的 CoPaw 专属私人助手下达第一个任务吧!

CozyBase 是一个类似 Supabase 的、面向 AI Agent 的本地 BaaS 平台,通过它你可以用自然语言描述应用的需求想法,由 AI Agent 来进行实现。换句话说 CozyBase 就是属于你自己的 APP Store ,你可以让 Agent 定制化地满足你的需求。

比如你可以创建自己的家庭物资管理工具,记录追踪物资、药品、食材是否临近过期是否即将耗尽。
比如你可以创建自己的 30 天减脂计划应用,按自己的需求安排和记录减脂的安排。

甚至你可以让 Agent 帮你使用这些应用:“帮我标记首页功能开发已完成”,“我买了 2 盒维生素帮我记录一下” 等等。

与此同时,CozyBase 支持通过 ACP/MCP 协议接入到 OpenClaw 里,也就意味着你的龙虾🦞可以帮你在 CozyBase 中创建应用、使用应用。

下载地址: https://github.com/wcp1231/cozybase/releases
当前还是 alpha 测试版,只支持 M 系列芯片的 MacOS ,同时需要提前安装有 Codex 或 Claude Code 。

欢迎大家使用和反馈,创造独属于自己的应用。



3月13日,网易科技《后厂村AI派》举办 《带你玩转OpenClaw龙虾》专题沙龙,行业大咖、AI应用开发者、OPC创业者、云厂商负责人等齐聚现场,拆解了“养龙虾”的多种推荐部署方式、“养虾人”如何避坑以及最佳实践案例。枫清科技(Fabarta)技术合伙人兼CTO谭宇受邀出席沙龙并分享了Fabarta的OpenClaw实践与企业场景应用,并解答现场观众的提问。

微信图片_20260313161716_3356_3.jpg

在谭宇看来,OpenClaw的本质是Coding Agent能力外溢、交互方式与便利性的大幅提升,以及权限高度下放所引发的生产力释放效应三重维度的叠加。

立足于技术洞察的同时,枫清科技还聚焦于解决开源OpenClaw的核心痛点,于2月推出了Fabarta个人专属智能体龙虾版,实现了“让AI从动口到动手,让控制权始终在用户手中”。

它并非一款普通办公助手,而是将服务国央企与各行业龙头企业的知识引擎、智能体核心能力,全面浓缩并下沉至个人用户办公终端,以深度云边端协同架构为技术底座,打造真正面向个人的高安全、强专属、可信赖智能办公终端。

其底层技术已在化工、金融、制造、能源等数据安全要求极致严苛的行业深度验证,获得众多产业龙头广泛认可,从源头确保企业级安全标准直接赋能个人场景。

对普通用户而言,Fabarta个人专属智能体龙虾版开箱即用,内置周报整理、数据抓取、智能写作、翻译助手等高频办公场景,同时打通多渠道链接,一站式解决用户在不同大模型之间切换、选择的难题,并支持用户自定义配置更多场景,灵活适配个性化办公需求。 

在安全与可控层面,Fabarta个人专属智能体龙虾版坚持本地优先:原生支持本地部署,兼顾沙箱隔离、安全日志、高危操作熔断等多重安全机制,数据与行为全程可控,从根本上杜绝信息泄露风险。 

更具差异化的是,Fabarta个人专属智能体龙虾版拥有领先的个人特色记忆能力:依托本地长期记忆文件,从首次使用即可深度理解用户习惯与业务背景,再与短期工作记忆实时融合,实现越用越懂你、越用越高效的专属智能体验。 

在分享尾声,谭宇提到,OpenClaw的爆发与2025年初DeepSeek的效应类似,将产生不可逆的行业变革,Agent进入核心业务流程已势不可挡。他认为OpenClaw作为技术范式将长期存在,但产品形态必然持续进化。在这股热潮背后,企业应关注不变的核心要素——Agent执行过程与结果的可追溯、可审计、可管控性与上下文管理才是Agent可靠运行的基石。

在Fabarta企业级能力的支持下,依托云边端协同架构,用户的个人端能力可无缝向上延伸,极低门槛即可搭建企业级安全智能体,真正实现“个人好用、企业放心”。

3月14日,阿里云瑶池数据库团队联合云原生应用团队发起的OpenClaw「虾搞」数据库首场线下活动将在杭州阿里巴巴西溪园区正式拉开帷幕。

这是一场原本只计划70人的小型技术沙龙。然而上线4天后,报名人数突破了600人——来自北京、上海、广州、深圳乃至全国各地的开发者,用热情证明了大家对AI Agent技术的热切期待。

场地紧急扩容3倍!为什么是“虾搞”?

OpenClaw——这个以“龙虾”为名的开源多Agent协作框架,正悄然在数据库与AI的交叉地带掀起一股新浪潮。

在大模型时代,如何让多个智能体高效协作?如何将企业沉淀的数据资产与AI能力深度耦合?这是每一位开发者都在探索的核心命题。

“虾搞”二字,既是“瞎搞”的谐音玩梗,又暗藏深意:它致敬开发者骨子里那份敢于试错、乐于折腾、勇于探索的精神——不设边界,不惧未知,用代码“钳”出新可能。

所以,这不是随便“虾搞”,而是认真“搞大事”。明日活动亮点和现场福利抢先看

无法到场?直播同样精彩 

为了让更多虾友能够参与这场技术盛宴,我们特别安排了全程直播:

⏰ 直播时间: 3 月 14 日 14:00 起

📺 直播平台:本次活动将在阿里云、阿里云开发者、阿里云瑶池数据库视频号同步直播,微信群、钉钉群等多个用户社群同步转播。扫描下图进行预约吧。

1 简介

  OpenClaw火热,各家大厂都推出了一键安装服务,但需要支付虚拟机的费用和大模型的流量费用。但实际上OpenClaw完全可以安装到本地,只购买大厂大模型接口就行了。本文购买了阿里云百炼 Coding Plan 的 Lite 基础套餐,每月40元,可请求18000次。控制OpenClaw使用QQ的机器人,目前免费。OpenClaw可以直接装到Windows下,也可以装到Windows的WSL2下,本文选择安装到WSL2下。

2 安装WSL2

  安装WSL2方法不再赘述,安装后安装一个Linux,如Ubuntu-24,并将其设置为默认启动。

C:\Users\Administrator>wsl --install -d Ubuntu-24.04
正在下载: Ubuntu 24.04 LTS
正在安装: Ubuntu 24.04 LTS
已成功安装分发。它可通过 “wsl.exe -d Ubuntu-24.04” 启动

C:\Users\Administrator>wsl --list --verbose
  NAME              STATE           VERSION
* docker-desktop    Stopped         2
  Ubuntu-24.04      Stopped         2

C:\Users\Administrator>wsl --set-default Ubuntu-24.04
操作成功完成。

C:\Users\Administrator>wsl --list --verbose
  NAME              STATE           VERSION
* Ubuntu-24.04      Stopped         2
  docker-desktop    Stopped         2

  启动wsl,设置管理员用户密码。登录后sudo su为root用户。

C:\Users\Administrator>wsl
Provisioning the new WSL instance Ubuntu-24.04
This might take a while...
Create a default Unix user account: administrator
New password:
Retype new password:
passwd: password updated successfully
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 24.04.4 LTS (GNU/Linux 5.15.167.4-microsoft-standard-WSL2-20251029 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Thu Mar 12 17:42:08 CST 2026

  System load:  0.16                Processes:             32
  Usage of /:   0.1% of 1006.85GB   Users logged in:       0
  Memory usage: 5%                  IPv4 address for eth0: 172.27.70.29
  Swap usage:   0%


This message is shown once a day. To disable it please create the
/home/administrator/.hushlogin file.
administrator@Thinkpad:/mnt/c/Users/Administrator$ sudo su -
[sudo] password for administrator:
root@Thinkpad:/mnt/c/Users/Administrator#
root@Thinkpad:/home/administrator# cd
root@Thinkpad:~# pwd
/root
root@Thinkpad:~#

3 安装OpenClaw

  使用“curl -fsSL https://openclaw.ai/install.sh | bash”安装OpenClaw(参考https://docs.openclaw.ai/zh-CN/install)。

root@Thinkpad:~# curl -fsSL https://openclaw.ai/install.sh | bash

  🦞 OpenClaw Installer
  Shell yeah—I'm here to pinch the toil and leave you the glory.

✓ Detected: linux

Install plan
OS: linux
Install method: npm
Requested version: latest

[1/3] Preparing environment
✓ Node.js v22.22.1 found
· Active Node.js: v22.22.1 (/usr/bin/node)
· Active npm: 10.9.4 (/usr/bin/npm)

[2/3] Installing OpenClaw
✓ Git already installed
· Installing OpenClaw v2026.3.12
✓ OpenClaw npm package installed
✓ OpenClaw installed

[3/3] Finalizing setup

🦞 OpenClaw installed successfully (OpenClaw 2026.3.12 (6472949))!
cracks claws Alright, what are we building?

· Starting setup

🦞 OpenClaw 2026.3.12 (6472949) — If you can describe it, I can probably automate it—or at least make it funnier.

▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██
██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██
██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
                  🦞 OPENCLAW 🦞

  安装时会检测NodeJS等组件,没有会自动下载,正常情况下不用翻墙,如果联网失败,就多试几次。安装完成后,提示继续设置。(参考https://bailian.console.aliyun.com/cn-beijing/?tab=doc#/doc/?...

◇  I understand this is personal-by-default and shared/multi-user use requires lock-down. Continue?
│  Yes

  Onboarding mode选择QuickStart。

◇  Onboarding mode
│  QuickStart

  Model/auth provider选择Skip for now。

◇  Model/auth provider
│  Skip for now

  Filter models by provider选择All providers。

◇  Filter models by provider
│  All providers

  Default model选择Keep current。

◇  Default model
│  Keep current (default: anthropic/claude-opus-4-6)

  Select channel选择Skip for now。

◇  Select channel (QuickStart)
│  Skip for now

  Search provider选择Skip for now。

◇  Search provider
│  Skip for now

  Configure skills now选择No。

◇  Configure skills now? (recommended)
│  No

  Enable hooks选择Skip for now。

◇  Enable hooks?
│  Skip for now

  How do you want to hatch your bot选择Hatch in TUI。

◇  How do you want to hatch your bot?
│  Hatch in TUI (recommended)

  配置完成后,可以看到提示信息。

openclaw tui - ws://127.0.0.1:18789 - agent main - session main

 session agent:main:main

 Wake up, my friend!

  此时没有将gateway安装为服务,使用“openclaw onboard --install-daemon”安装为服务,执行过程中会回顾之前的配置。

root@Thinkpad:~# openclaw onboard --install-daemon

🦞 OpenClaw 2026.3.12 (6472949) — Powered by open source, sustained by spite and good documentation.
…………
…………
…………
◓  Installing Gateway service…
Installed systemd service: /root/.config/systemd/user/openclaw-gateway.service
Previous unit backed up to: /root/.config/systemd/user/openclaw-gateway.service.bak
◇  Gateway service installed.
…………
…………
…………

  然后可以用“openclaw dashboard”启动dashboard。并记录下这里的Token。

root@Thinkpad:~# openclaw dashboard

🦞 OpenClaw 2026.3.12 (6472949) — I don't just autocomplete—I auto-commit (emotionally), then ask you to review (logically).

Dashboard URL: http://127.0.0.1:18789/#token=f47ac10b58cc4372a5670e02b2c3d4795df418813aed3515
Copy to clipboard unavailable.
No GUI detected. Open from your computer:
ssh -N -L 18789:127.0.0.1:18789 root@<host>
Then open:
http://localhost:18789/
http://localhost:18789/#token=f47ac10b58cc4372a5670e02b2c3d4795df418813aed3515
Docs:
https://docs.openclaw.ai/gateway/remote
https://docs.openclaw.ai/web/control-ui
root@Thinkpad:~# openclaw onboard --install-daemon

  使用浏览器打开“http://localhost:18789/”。如果浏览器无法连接这恶鬼地址,说明gateway没有启动,需要手工启动gateway。这里已经以服务形式启动了,所以提示端口已占用。

root@Thinkpad:~# openclaw gateway run

🦞 OpenClaw 2026.3.12 (6472949) — Making 'I'll automate that later' happen now.

14:49:47 Gateway failed to start: gateway already running (pid 596); lock timeout after 5000ms
If the gateway is supervised, stop it with: openclaw gateway stop
14:49:47 Port 18789 is already in use.
14:49:47 - pid 596 root: openclaw-gateway (127.0.0.1:18789)
14:49:47 - Gateway already running locally. Stop it (openclaw gateway stop) or use a different port.
14:49:47 Gateway service appears enabled. Stop it first.
14:49:47 Tip: openclaw gateway stop
14:49:47 Or: systemctl --user stop openclaw-gateway.service

4 配置OpenClaw

  购买阿里云百炼CodingPlan服务,Lite版每月40元就够用了。
  使用浏览器打开“http://localhost:18789/”。保存Token后会自动跳转到面板页面。在Web UI的左侧菜单栏中选择配置 > RAW(或Config > RAW)。首次配置:复制以下内容到Raw JSONS输入框,替换已有内容。已有配置:若需保留已有配置,请勿直接全量替换,详见已有配置如何安全修改?将YOUR_API_KEY替换为Coding Plan 专属 API Key。(内容参考https://bailian.console.aliyun.com/cn-beijing/?tab=doc#/doc/?...

{
  "models": {
    "mode": "merge",
    "providers": {
      "bailian": {
        "baseUrl": "https://coding.dashscope.aliyuncs.com/v1",
        "apiKey": "YOUR_API_KEY",
        "api": "openai-completions",
        "models": [
          {
            "id": "qwen3.5-plus",
            "name": "qwen3.5-plus",
            "reasoning": false,
            "input": ["text", "image"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 1000000,
            "maxTokens": 65536,
            "compat": {
              "thinkingFormat": "qwen"
            }
          },
          {
            "id": "qwen3-max-2026-01-23",
            "name": "qwen3-max-2026-01-23",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 262144,
            "maxTokens": 65536,
            "compat": {
              "thinkingFormat": "qwen"
            }
          },
          {
            "id": "qwen3-coder-next",
            "name": "qwen3-coder-next",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 262144,
            "maxTokens": 65536
          },
          {
            "id": "qwen3-coder-plus",
            "name": "qwen3-coder-plus",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 1000000,
            "maxTokens": 65536
          },
          {
            "id": "MiniMax-M2.5",
            "name": "MiniMax-M2.5",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 196608,
            "maxTokens": 32768
          },
          {
            "id": "glm-5",
            "name": "glm-5",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 202752,
            "maxTokens": 16384,
            "compat": {
              "thinkingFormat": "qwen"
            }
          },
          {
            "id": "glm-4.7",
            "name": "glm-4.7",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 202752,
            "maxTokens": 16384,
            "compat": {
              "thinkingFormat": "qwen"
            }
          },
          {
            "id": "kimi-k2.5",
            "name": "kimi-k2.5",
            "reasoning": false,
            "input": ["text", "image"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 262144,
            "maxTokens": 32768,
            "compat": {
              "thinkingFormat": "qwen"
            }
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "bailian/qwen3.5-plus"
      },
      "models": {
        "bailian/qwen3.5-plus": {},
        "bailian/qwen3-max-2026-01-23": {},
        "bailian/qwen3-coder-next": {},
        "bailian/qwen3-coder-plus": {},
        "bailian/MiniMax-M2.5": {},
        "bailian/glm-5": {},
        "bailian/glm-4.7": {},
        "bailian/kimi-k2.5": {}
      }
    }
  },
  "gateway": {
    "mode": "local"
  }
}

image.png
  保存并更新后,可以在面板的对话界面进行测试,如果AI可以回答问题了,说明配置成功。

5 配置QQ机器人

  在腾讯官方网站上(https://q.qq.com/qqbot/openclaw/index.html),创建机器人。需要手机QQ扫码登录。创建后会产生AppID和AppSecret。
  在WLS中安装qqbot插件。命令为“openclaw plugins install @tencent-connect/openclaw-qqbot@latest”

root@Thinkpad:~# openclaw plugins install @tencent-connect/openclaw-qqbot@latest

🦞 OpenClaw 2026.3.12 (6472949) — Half butler, half debugger, full crustacean.

Downloading @tencent-connect/openclaw-qqbot@latest…
Extracting /tmp/openclaw-npm-pack-upu88E/tencent-connect-openclaw-qqbot-1.5.7.tgz…
……
……
……
Installing to /root/.openclaw/extensions/openclaw-qqbot…
Installing plugin dependencies…
15:05:00 [plugins] plugins.allow is empty; discovered non-bundled plugins may auto-load: openclaw-qqbot (/root/.openclaw/extensions/openclaw-qqbot/index.ts). Set plugins.allow to explicit trusted ids.
Config overwrite: /root/.openclaw/openclaw.json (sha256 161846249db5f18e688d9d4038bdda9343ed504144da154a713a2ca35d1a04c6 -> 5157ac1b0126623a322d119bdb965570fa6fea6b1c70665d4e5b60246d1aba1a, backup=/root/.openclaw/openclaw.json.bak)
Installed plugin: openclaw-qqbot
Restart the gateway to load plugins.

  配置绑定当前QQ机器人,使用命令openclaw channels add --channel qqbot --token "AppID:AppSecret",其中AppID、AppSecret需替换为实际值。

root@Thinkpad:~# openclaw channels add --channel qqbot --token "278327832:a5670e02b2c3d479"
🦞 OpenClaw 2026.3.12 (6472949) — I'll do the boring stuff while you dramatically stare at the logs like it's cinema.
……
……
……
Config overwrite: /root/.openclaw/openclaw.json (sha256 5157ac1b0126623a322d119bdb965570fa6fea6b1c70665d4e5b60246d1aba1a -> 529ee83c14e2204063a5c9497694332008e8eaa6fe922c5506a5736e1a5a3683, backup=/root/.openclaw/openclaw.json.bak)
Added QQ Bot account "default".

  最后重启动gateway,命令为“openclaw gateway restart”。

root@Thinkpad:~# openclaw gateway restart
🦞 OpenClaw 2026.3.12 (6472949) — Alexa, but with taste.
……
……
……
Restarted systemd service: openclaw-gateway.service

  此时,可以通过之前扫码登录的QQ上,会出现机器人,通过与机器人对话,可以控制主机上的OpenClaw。
image.png

6 控制浏览器

  因为OpenClaw是装在WSL中的,不能直接控制Windows的浏览器需要安装插件。使用“openclaw browser extension install”安装插件,使用“openclaw browser extension path”获取插件的路径。

root@Thinkpad:~# openclaw browser extension install

🦞 OpenClaw 2026.3.12 (6472949) — Half butler, half debugger, full crustacean.
……
……
~/.openclaw/browser/chrome-extension
Copy to clipboard unavailable.
Next:
- Chrome → chrome://extensions → enable “Developer mode”
- “Load unpacked” → select: ~/.openclaw/browser/chrome-extension
- Pin “OpenClaw Browser Relay”, then click it on the tab (badge shows ON)

Docs: docs.openclaw.ai/tools/chrome-extension
root@Thinkpad:~# openclaw browser extension path

🦞 OpenClaw 2026.3.12 (6472949) — Built by lobsters, for humans. Don't question the hierarchy.

~/.openclaw/browser/chrome-extension
……
……

  在 Edge/Chrome 中加载扩展:浏览器打开 edge://extensions(或 chrome://extensions),开启"开发者模式",点击"加载解压缩的扩展",选择上面命令输出的路径,把扩展固定到工具栏。配置扩展:点击扩展图标,打开选项页,设置 Gateway token(如果没配置过,OpenClaw 会自动生成)。使用:打开你想让OpenClaw控制的标签页,点击扩展图标(徽章显示 ON 表示已连接),OpenClaw就可以帮你操作那个标签页了。
image.png

1 简介

  OpenClaw火热,各家大厂都推出了一键安装服务,但需要支付虚拟机的费用和大模型的流量费用。但实际上OpenClaw完全可以安装到本地,只购买大厂大模型接口就行了。本文购买了阿里云百炼 Coding Plan 的 Lite 基础套餐,每月40元,可请求18000次。控制OpenClaw使用QQ的机器人,目前免费。OpenClaw可以直接装到Windows下,也可以装到Windows的WSL2下,本文选择安装到WSL2下。

2 安装WSL2

  安装WSL2方法不再赘述,安装后安装一个Linux,如Ubuntu-24,并将其设置为默认启动。

C:\Users\Administrator>wsl --install -d Ubuntu-24.04
正在下载: Ubuntu 24.04 LTS
正在安装: Ubuntu 24.04 LTS
已成功安装分发。它可通过 “wsl.exe -d Ubuntu-24.04” 启动

C:\Users\Administrator>wsl --list --verbose
  NAME              STATE           VERSION
* docker-desktop    Stopped         2
  Ubuntu-24.04      Stopped         2

C:\Users\Administrator>wsl --set-default Ubuntu-24.04
操作成功完成。

C:\Users\Administrator>wsl --list --verbose
  NAME              STATE           VERSION
* Ubuntu-24.04      Stopped         2
  docker-desktop    Stopped         2

  启动wsl,设置管理员用户密码。登录后sudo su为root用户。

C:\Users\Administrator>wsl
Provisioning the new WSL instance Ubuntu-24.04
This might take a while...
Create a default Unix user account: administrator
New password:
Retype new password:
passwd: password updated successfully
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 24.04.4 LTS (GNU/Linux 5.15.167.4-microsoft-standard-WSL2-20251029 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Thu Mar 12 17:42:08 CST 2026

  System load:  0.16                Processes:             32
  Usage of /:   0.1% of 1006.85GB   Users logged in:       0
  Memory usage: 5%                  IPv4 address for eth0: 172.27.70.29
  Swap usage:   0%


This message is shown once a day. To disable it please create the
/home/administrator/.hushlogin file.
administrator@Thinkpad:/mnt/c/Users/Administrator$ sudo su -
[sudo] password for administrator:
root@Thinkpad:/mnt/c/Users/Administrator#
root@Thinkpad:/home/administrator# cd
root@Thinkpad:~# pwd
/root
root@Thinkpad:~#

3 安装OpenClaw

  使用“curl -fsSL https://openclaw.ai/install.sh | bash”安装OpenClaw(参考https://docs.openclaw.ai/zh-CN/install)。

root@Thinkpad:~# curl -fsSL https://openclaw.ai/install.sh | bash

  🦞 OpenClaw Installer
  Shell yeah—I'm here to pinch the toil and leave you the glory.

✓ Detected: linux

Install plan
OS: linux
Install method: npm
Requested version: latest

[1/3] Preparing environment
✓ Node.js v22.22.1 found
· Active Node.js: v22.22.1 (/usr/bin/node)
· Active npm: 10.9.4 (/usr/bin/npm)

[2/3] Installing OpenClaw
✓ Git already installed
· Installing OpenClaw v2026.3.12
✓ OpenClaw npm package installed
✓ OpenClaw installed

[3/3] Finalizing setup

🦞 OpenClaw installed successfully (OpenClaw 2026.3.12 (6472949))!
cracks claws Alright, what are we building?

· Starting setup

🦞 OpenClaw 2026.3.12 (6472949) — If you can describe it, I can probably automate it—or at least make it funnier.

▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██
██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██
██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
                  🦞 OPENCLAW 🦞

  安装时会检测NodeJS等组件,没有会自动下载,正常情况下不用翻墙,如果联网失败,就多试几次。安装完成后,提示继续设置。(参考https://bailian.console.aliyun.com/cn-beijing/?tab=doc#/doc/?...

◇  I understand this is personal-by-default and shared/multi-user use requires lock-down. Continue?
│  Yes

  Onboarding mode选择QuickStart。

◇  Onboarding mode
│  QuickStart

  Model/auth provider选择Skip for now。

◇  Model/auth provider
│  Skip for now

  Filter models by provider选择All providers。

◇  Filter models by provider
│  All providers

  Default model选择Keep current。

◇  Default model
│  Keep current (default: anthropic/claude-opus-4-6)

  Select channel选择Skip for now。

◇  Select channel (QuickStart)
│  Skip for now

  Search provider选择Skip for now。

◇  Search provider
│  Skip for now

  Configure skills now选择No。

◇  Configure skills now? (recommended)
│  No

  Enable hooks选择Skip for now。

◇  Enable hooks?
│  Skip for now

  How do you want to hatch your bot选择Hatch in TUI。

◇  How do you want to hatch your bot?
│  Hatch in TUI (recommended)

  配置完成后,可以看到提示信息。

openclaw tui - ws://127.0.0.1:18789 - agent main - session main

 session agent:main:main

 Wake up, my friend!

  此时没有将gateway安装为服务,使用“openclaw onboard --install-daemon”安装为服务,执行过程中会回顾之前的配置。

root@Thinkpad:~# openclaw onboard --install-daemon

🦞 OpenClaw 2026.3.12 (6472949) — Powered by open source, sustained by spite and good documentation.
…………
…………
…………
◓  Installing Gateway service…
Installed systemd service: /root/.config/systemd/user/openclaw-gateway.service
Previous unit backed up to: /root/.config/systemd/user/openclaw-gateway.service.bak
◇  Gateway service installed.
…………
…………
…………

  然后可以用“openclaw dashboard”启动dashboard。并记录下这里的Token。

root@Thinkpad:~# openclaw dashboard

🦞 OpenClaw 2026.3.12 (6472949) — I don't just autocomplete—I auto-commit (emotionally), then ask you to review (logically).

Dashboard URL: http://127.0.0.1:18789/#token=f47ac10b58cc4372a5670e02b2c3d4795df418813aed3515
Copy to clipboard unavailable.
No GUI detected. Open from your computer:
ssh -N -L 18789:127.0.0.1:18789 root@<host>
Then open:
http://localhost:18789/
http://localhost:18789/#token=f47ac10b58cc4372a5670e02b2c3d4795df418813aed3515
Docs:
https://docs.openclaw.ai/gateway/remote
https://docs.openclaw.ai/web/control-ui
root@Thinkpad:~# openclaw onboard --install-daemon

  使用浏览器打开“http://localhost:18789/”。如果浏览器无法连接这恶鬼地址,说明gateway没有启动,需要手工启动gateway。这里已经以服务形式启动了,所以提示端口已占用。

root@Thinkpad:~# openclaw gateway run

🦞 OpenClaw 2026.3.12 (6472949) — Making 'I'll automate that later' happen now.

14:49:47 Gateway failed to start: gateway already running (pid 596); lock timeout after 5000ms
If the gateway is supervised, stop it with: openclaw gateway stop
14:49:47 Port 18789 is already in use.
14:49:47 - pid 596 root: openclaw-gateway (127.0.0.1:18789)
14:49:47 - Gateway already running locally. Stop it (openclaw gateway stop) or use a different port.
14:49:47 Gateway service appears enabled. Stop it first.
14:49:47 Tip: openclaw gateway stop
14:49:47 Or: systemctl --user stop openclaw-gateway.service

4 配置OpenClaw

  购买阿里云百炼CodingPlan服务,Lite版每月40元就够用了。
  使用浏览器打开“http://localhost:18789/”。保存Token后会自动跳转到面板页面。在Web UI的左侧菜单栏中选择配置 > RAW(或Config > RAW)。首次配置:复制以下内容到Raw JSONS输入框,替换已有内容。已有配置:若需保留已有配置,请勿直接全量替换,详见已有配置如何安全修改?将YOUR_API_KEY替换为Coding Plan 专属 API Key。(内容参考https://bailian.console.aliyun.com/cn-beijing/?tab=doc#/doc/?...

{
  "models": {
    "mode": "merge",
    "providers": {
      "bailian": {
        "baseUrl": "https://coding.dashscope.aliyuncs.com/v1",
        "apiKey": "YOUR_API_KEY",
        "api": "openai-completions",
        "models": [
          {
            "id": "qwen3.5-plus",
            "name": "qwen3.5-plus",
            "reasoning": false,
            "input": ["text", "image"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 1000000,
            "maxTokens": 65536,
            "compat": {
              "thinkingFormat": "qwen"
            }
          },
          {
            "id": "qwen3-max-2026-01-23",
            "name": "qwen3-max-2026-01-23",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 262144,
            "maxTokens": 65536,
            "compat": {
              "thinkingFormat": "qwen"
            }
          },
          {
            "id": "qwen3-coder-next",
            "name": "qwen3-coder-next",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 262144,
            "maxTokens": 65536
          },
          {
            "id": "qwen3-coder-plus",
            "name": "qwen3-coder-plus",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 1000000,
            "maxTokens": 65536
          },
          {
            "id": "MiniMax-M2.5",
            "name": "MiniMax-M2.5",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 196608,
            "maxTokens": 32768
          },
          {
            "id": "glm-5",
            "name": "glm-5",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 202752,
            "maxTokens": 16384,
            "compat": {
              "thinkingFormat": "qwen"
            }
          },
          {
            "id": "glm-4.7",
            "name": "glm-4.7",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 202752,
            "maxTokens": 16384,
            "compat": {
              "thinkingFormat": "qwen"
            }
          },
          {
            "id": "kimi-k2.5",
            "name": "kimi-k2.5",
            "reasoning": false,
            "input": ["text", "image"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 262144,
            "maxTokens": 32768,
            "compat": {
              "thinkingFormat": "qwen"
            }
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "bailian/qwen3.5-plus"
      },
      "models": {
        "bailian/qwen3.5-plus": {},
        "bailian/qwen3-max-2026-01-23": {},
        "bailian/qwen3-coder-next": {},
        "bailian/qwen3-coder-plus": {},
        "bailian/MiniMax-M2.5": {},
        "bailian/glm-5": {},
        "bailian/glm-4.7": {},
        "bailian/kimi-k2.5": {}
      }
    }
  },
  "gateway": {
    "mode": "local"
  }
}

image.png
  保存并更新后,可以在面板的对话界面进行测试,如果AI可以回答问题了,说明配置成功。

5 配置QQ机器人

  在腾讯官方网站上(https://q.qq.com/qqbot/openclaw/index.html),创建机器人。需要手机QQ扫码登录。创建后会产生AppID和AppSecret。
  在WLS中安装qqbot插件。命令为“openclaw plugins install @tencent-connect/openclaw-qqbot@latest”

root@Thinkpad:~# openclaw plugins install @tencent-connect/openclaw-qqbot@latest

🦞 OpenClaw 2026.3.12 (6472949) — Half butler, half debugger, full crustacean.

Downloading @tencent-connect/openclaw-qqbot@latest…
Extracting /tmp/openclaw-npm-pack-upu88E/tencent-connect-openclaw-qqbot-1.5.7.tgz…
……
……
……
Installing to /root/.openclaw/extensions/openclaw-qqbot…
Installing plugin dependencies…
15:05:00 [plugins] plugins.allow is empty; discovered non-bundled plugins may auto-load: openclaw-qqbot (/root/.openclaw/extensions/openclaw-qqbot/index.ts). Set plugins.allow to explicit trusted ids.
Config overwrite: /root/.openclaw/openclaw.json (sha256 161846249db5f18e688d9d4038bdda9343ed504144da154a713a2ca35d1a04c6 -> 5157ac1b0126623a322d119bdb965570fa6fea6b1c70665d4e5b60246d1aba1a, backup=/root/.openclaw/openclaw.json.bak)
Installed plugin: openclaw-qqbot
Restart the gateway to load plugins.

  配置绑定当前QQ机器人,使用命令openclaw channels add --channel qqbot --token "AppID:AppSecret",其中AppID、AppSecret需替换为实际值。

root@Thinkpad:~# openclaw channels add --channel qqbot --token "278327832:a5670e02b2c3d479"
🦞 OpenClaw 2026.3.12 (6472949) — I'll do the boring stuff while you dramatically stare at the logs like it's cinema.
……
……
……
Config overwrite: /root/.openclaw/openclaw.json (sha256 5157ac1b0126623a322d119bdb965570fa6fea6b1c70665d4e5b60246d1aba1a -> 529ee83c14e2204063a5c9497694332008e8eaa6fe922c5506a5736e1a5a3683, backup=/root/.openclaw/openclaw.json.bak)
Added QQ Bot account "default".

  最后重启动gateway,命令为“openclaw gateway restart”。

root@Thinkpad:~# openclaw gateway restart
🦞 OpenClaw 2026.3.12 (6472949) — Alexa, but with taste.
……
……
……
Restarted systemd service: openclaw-gateway.service

  此时,可以通过之前扫码登录的QQ上,会出现机器人,通过与机器人对话,可以控制主机上的OpenClaw。
image.png

6 控制浏览器

  因为OpenClaw是装在WSL中的,不能直接控制Windows的浏览器需要安装插件。使用“openclaw browser extension install”安装插件,使用“openclaw browser extension path”获取插件的路径。

root@Thinkpad:~# openclaw browser extension install

🦞 OpenClaw 2026.3.12 (6472949) — Half butler, half debugger, full crustacean.
……
……
~/.openclaw/browser/chrome-extension
Copy to clipboard unavailable.
Next:
- Chrome → chrome://extensions → enable “Developer mode”
- “Load unpacked” → select: ~/.openclaw/browser/chrome-extension
- Pin “OpenClaw Browser Relay”, then click it on the tab (badge shows ON)

Docs: docs.openclaw.ai/tools/chrome-extension
root@Thinkpad:~# openclaw browser extension path

🦞 OpenClaw 2026.3.12 (6472949) — Built by lobsters, for humans. Don't question the hierarchy.

~/.openclaw/browser/chrome-extension
……
……

  在 Edge/Chrome 中加载扩展:浏览器打开 edge://extensions(或 chrome://extensions),开启"开发者模式",点击"加载解压缩的扩展",选择上面命令输出的路径,把扩展固定到工具栏。配置扩展:点击扩展图标,打开选项页,设置 Gateway token(如果没配置过,OpenClaw 会自动生成)。使用:打开你想让OpenClaw控制的标签页,点击扩展图标(徽章显示 ON 表示已连接),OpenClaw就可以帮你操作那个标签页了。
image.png

在 GPUStack 的实际部署中,经常会遇到一个问题:
离线环境如何准备完整的镜像?

GPUStack 的核心服务镜像实际上只有一个:gpustack/gpustack
无论是 Server 还是 Worker 节点,运行的都是这个主镜像。

但在模型推理时,GPUStack 会根据所使用的 GPU 类型、计算框架以及推理后端,自动拉取对应的 运行时镜像(Runner)。在在线环境中,这些镜像可以按需自动下载;而在 离线或内网环境 中,如果提前不知道需要哪些镜像,就可能在部署过程中反复补充镜像,影响部署效率。

为了解决这个问题,我们在官方文档中提供了一个网页工具:

GPUStack 容器镜像选择器(Container Image Selector)

通过简单的选项选择,就可以 动态生成所需的 GPUStack 镜像列表,方便提前准备离线部署所需的镜像。

打开 GPUStack 容器镜像选择器

打开 GPUStack 官方文档:

https://docs.gpustack.ai

在顶部导航栏中,可以看到新增的 Container Image Selector 菜单。

桌面端界面:

移动端界面:

点击该菜单即可进入镜像选择工具,也可以直接访问:

https://docs.gpustack.ai/latest/image-selector/

进入 GPUStack 容器镜像选择器 页面。

切换中文界面

首次打开页面时默认是英文界面,可以在右上角语言菜单切换为 简体中文

切换为中文后,还会显示 国内镜像源选项,方便在国内网络环境中准备镜像。

配置镜像选择条件

通过几个常见的部署参数,即可生成对应的镜像列表。

GPU 类型

默认选择 NVIDIA

如果使用其他硬件平台,可以在这里进行选择。

计算框架版本

默认选择 最新版本

昇腾计算框架版本区分芯片类型,同一框架版本在不同芯片上对应不同镜像,请根据实际芯片型号选择对应镜像。

例如:计算框架 CANN 8.5 根据芯片不同,分为 CANN 8.5 (910b)CANN 8.5 (a3),以及 CANN 8.5 (310p)

如图所示:

驱动版本要求说明

不同计算框架版本对底层驱动版本有明确要求。部署 GPU 推理环境时,需要确保驱动版本满足对应框架版本的最低要求,否则可能出现容器无法启动、GPU 无法识别或推理异常等问题。

下面以 NVIDIA CUDA昇腾 CANN 为例说明常见版本的驱动要求。

NVIDIA CUDA 与驱动版本要求

CUDA 版本推荐驱动版本(Linux)
CUDA 12.9≥ 575
CUDA 12.8≥ 570
CUDA 12.6≥ 560

说明:

  • CUDA 程序运行需要兼容的 NVIDIA 驱动版本。
  • 新版本驱动通常向下兼容旧 CUDA 版本。

昇腾 CANN 与驱动版本要求

CANN 版本推荐昇腾 NPU Driver
CANN 8.525.5.0
CANN 8.325.3.0
CANN 8.225.2.0

说明:

  • 昇腾计算框架 CANN 需要匹配对应版本的 昇腾 NPU Driver
  • Driver 与 CANN 通常需要保持官方推荐组合,否则可能出现算子或运行时异常。

推理后端

推理后端按 最新版本排序。如果不选择,则默认显示全部可用后端。

目前内置推理后端包括例如:

  • vLLM
  • SGLang
  • MindIE
  • VoxBox

如果未找到所需的内置推理后端或对应版本,可以尝试 切换到较低版本的计算框架。一般来说,较高版本的 GPU 驱动能够兼容运行较低版本的计算框架

可选镜像

默认使用 GPUStack 内置镜像

服务器架构

服务器架构会根据硬件给出默认值:

  • 昇腾 GPU:默认 ARM64
  • 其他 GPU:默认 AMD64

如果服务器架构不同,也可以手动修改。

镜像源

默认镜像源为 Docker Hub

在中文界面下,还可以选择 国内镜像源,用于加速镜像准备。

查看生成的镜像列表

根据所选择的条件,页面会 动态生成对应的镜像列表,并且提供了拆分后 Server 节点和 Worker 节点所需的镜像列表。

这些镜像就是在运行 GPUStack 与模型推理过程中需要使用的镜像。

对于离线部署环境,可以提前将这些镜像准备好并导入到目标环境中。

镜像准备参考命令

页面底部提供了 离线部署相关的镜像准备命令和文档说明

小结

GPUStack 在运行时会根据模型和推理后端自动拉取运行时镜像。在在线环境中,这一过程通常是自动完成的;而在离线或内网环境中,提前准备所需镜像就变得十分重要。

GPUStack 容器镜像选择器提供了一种简单的方法:通过常见的部署参数组合,生成对应的镜像列表,帮助用户更清晰地了解需要准备哪些镜像,从而减少离线部署过程中反复补充镜像的情况。

工具地址:

https://docs.gpustack.ai/latest/image-selector/

🙌 加入 GPUStack 社区

如果你已经开始使用 GPUStack,
或者正在探索 本地大模型 / GPU 资源管理 / AI Infra
欢迎加入我们的社区交流群,一起交流实践经验、踩坑记录与最佳方案。

社区群二维码

👉 社区入口(持续更新)
https://github.com/gpustack/gpustack/blob/main/docs/assets/wechat-group-qrcode.jpg

数字化商业体系下,为企业网站部署数字证书,启用HTTPS加密,做网站安全防护,已经成为毫无争议的基本操作。尤其是网络上各种数据泄露事件不断、信息窃取新闻频发,更是坚定了企业维护网站安全的决心。然而,在面对免费证书与付费OV证书时,仍有诸多企业陷入挣扎:都是数字证书,免费的SSL真的不能满足企业需求吗?OV证书真的就是值得企业额外投入预算?其所产生的价值是否能挽回投入的成本?对此,JoySSL市场高级研究顾问深有感触,他表示,对于任何已经进入商业化运作,拥有大量用户数据且珍视品牌形象与声誉的企业来说,投资OV证书绝不是一项有去无回的成本支出,而是一次回报率极高的信任投入。OV证书相比于免费的DV证书,早已超越基础的安全加密,建立身份确权与品牌信任背书,为企业带来更高更稳定的商业回报。

免费证书局限 匿名缺陷引发系列危机

虽然DV证书可以以零成本实现基础加密,消除浏览器的不安全警示。但在商业环境中,天然的局限性暴露出免费证书的致命缺陷。由于免费证书不验证实体,导致无法应对钓鱼仿冒手段,从而引发信任危机。
此外,免费证书的签发机构不会为证书可能存在的风险提供担保。一旦出现网络安全事故,企业将独自面对诉讼、罚款及品牌声誉受损带来的损失。在面对深度信任场景时,免费证书依然不能打消客户疑虑。

OV证书价值 超越加密 信任直线升级

从加密到身份,OV证书完成了跨越级的转变。权威身份验证机制,确保证书持有者是真实存在的法律主体,用户可随时查验身份信息,同时无法伪造,从根本上断绝了仿冒行为和钓鱼攻击。

面对可能存在的安全风险,OV证书附带高额度责任保障,为企业增添一份网络安全保障,也是对企业做出的赔偿承诺。一张经过身份验证的OV证书,可有效建立信任传递,消除用户疑虑,降低决策风险,从而提升线上转化率与客户忠诚度。

投资回报分析 规避风险提升品牌信任

JoySSL技术专员指出,若将OV证书的投入与回报进行量化分析,其价值清晰可见。其一,可有效规避风险。一次数据泄露造成的直接损失,可能就高达数百万,品牌影响导致的损失更是严重。相比之下,对OV证书的投入几乎可以忽略不计。其二,经验证的企业身份,是获取品牌信任的有效方式,是驱动业务长期增长的持久动力。其三,OV证书满足行业监管基线,在电商、金融等领域更容易抓住商业机遇。

选择OV证书 助力企业赢得数字未来

如果企业致力于成为一个长久稳定发展、获取客户信赖,建立和维持品牌形象的公司,选择回报率极高的OV证书,就是一项十分值得的战略投资。在数字化浪潮的趋势下,OV证书可以为企业提供更多的发展契机,率先抓住商机,赢得数字未来,以可信的身份坐标获得持久的商业成功。

很多 3A 大作能叫好叫座的原因有优秀的画质以及剧情+操作体验带来特有的多巴胺分泌。

但也有很多小游戏、独立游戏也能风靡全球,我总结出来的一个特点就是“化学反应”。这个特性的游戏从《吸血鬼生存者》、《土豆兄弟》慢慢铺展开来,现在有了《杀戮尖塔 1、2》、《小丑牌》、《潜水员戴夫》以及现在的稍微大点的网游《LOLM:符文大乱斗》、《海克斯大乱斗》,他们都有共同点是游戏内存在随机事件,每次游戏都会有不同的体验。

这些游戏不能用一个类型来代表,但可以用一些共有特性来分析。所以有 2 友想开发游戏可以朝这个方面研究一下,我不是游戏开发者,我是一个打游戏的哈哈force_smile,小小见解,欢迎讨论。

开发者朋友们大家好:

这里是 「RTE 开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的技术」、「有亮点的产品」、「有思考的文章」、「有态度的观点」、「有看点的活动」,但内容仅代表编辑的个人观点,欢迎大家留言、跟帖、讨论。

本期编辑:@koki、@鲍勃

01 有话题的技术

1、Reka Edge:首包延迟 0.5s、吞吐翻倍的 7B 视觉模型,以 1/3 Token 占用冲击端侧物理 AI

Reka 正式推出下一代端侧视觉语言模型 Reka Edge。该模型采用 7B 参数量级,核心针对物理 AI(Physical AI)、机器人、无人机及移动端等受限环境优化,通过极高的 Token 效率实现了低延迟的视频流分析与物体检测。

  • 架构优化与 Token 效率

Reka Edge 弃用了传统的视觉编码方案,转而采用基于 ConvNeXt V2 的全卷积视觉编码器(657M 参数),配合从零训练的 6.4B Transformer 推理骨干网。该架构针对高分辨率数据进行了瓦片化(Tile)优化,单张图像块仅产生 64 个 Token。在处理 1024x1024 像素图像时,其输入 Token 量仅为同类模型的 1/3,显著降低了上下文窗口占用并提升了推理速度。

  • 性能基准与核心指标

在多项物理 AI 与视觉理解评测中,Reka Edge 表现优于 Qwen3.5 9B 及 Cosmos Reason2 8B,并在视频理解指标上接近参数量大得多的 Gemini 3 Pro。关键指标显示:其在 MLVU Test 与 MMVU 视频分析中处于行业领先地位;在 RefCOCO 物体检测基准上表现强劲;并在 Mobile Actions 评测中展现了端侧自主系统所需的工具调用(Tool-use)能力;同时具备更低的幻觉率与更强的对抗样本抗性。

  • 部署与量化规格

模型支持灵活的端云部署,尤其针对 VRAM 受限场景提供了深度量化方案。通过 4-bit 量化,显存占用从 13GB 降至 5GB(降幅 62%),且保留了 98% 以上的原始性能,吞吐量提升达 2.3 倍。此外,官方还提供专有的 Reka Quant 3.5-bit 模式,进一步压缩存储空间以适配超低功耗设备。

( @RekaAILabs\@X)

2、谷歌发布 Gemini Embedding 2 原生多模态嵌入模型,延迟骤降 70%

谷歌宣布推出全新的多模态嵌入模型 Gemini Embedding 2,这是首个基于 Gemini 架构构建的原生多模态嵌入模型。目前,该模型已经通过 Gemini API 和 Vertex AI 向开发者提供公开预览。

与此前仅支持文本向量化的嵌入模型不同,Gemini Embedding 2 可以将文本、图像、视频、音频以及文档等多种数据类型映射到同一个统一的嵌入空间,从而支持跨媒体语义理解与检索。这一能力意味着开发者可以在同一向量数据库中处理不同类型的数据,并基于语义相似度实现跨模态搜索、分类与聚类。

在能力规格上,Gemini Embedding 2 延续了 Gemini 系列模型的多模态处理优势,并对不同输入类型提供了明确的支持范围。

  • 文本:支持最多 8192 个输入标记的扩展上下文
  • 图像处理:每次请求最多可处理 6 张图像,支持 PNG 和 JPEG 格式
  • 视频:支持输入最长 120 秒的 MP4 和 MOV 格式视频
  • 音频:原生支持音频数据的导入和嵌入,无需中间文本转录。
  • 文档:直接嵌入最多 6 页的 PDF 文件

除了单模态处理能力之外,Gemini Embedding 2 还原生支持交错输入(interleaved input)。开发者可以在同一个请求中同时传入多种模态,例如「图片 + 文本描述」或「视频 + 文本提示」。模型会在生成向量表示时综合不同媒体之间的关系,从而捕捉更复杂的语义结构。例如,在电商或媒体分析场景中,系统可以同时理解商品图片与描述文本之间的关联。

参考链接:
https://x.com/GoogleAIStudio/status/2031421162123870239

( @InfoQ)

3、英伟达发布并开源混合架构大模型 Nemotron 3 Super

英伟达正式发布 Nemotron 3 Super,这是一个拥有 120B 总参数、12B 激活参数的混合专家模型(MoE)。该模型专门针对 Blackwell 架构优化,旨在解决自主智能体(Autonomous Agents)在长程任务中面临的「上下文爆炸」与「推理成本(Thinking Tax)」瓶颈。目前该模型已在 Hugging Face、Perplexity 等平台上线。

混合架构与算力表现

  • 混合架构(Hybrid Architecture):创新性地集成了 Mamba 层Transformer 层,前者将内存与计算效率提升 4 倍,后者确保深度推理能力。
  • 潜在专家混合(Latent MoE):采用新技术,在不增加推理成本的前提下,通过激活 4 个专家模块生成下一 Token,显著提升生成精度。
  • 多 Token 预测(Multi-Token Prediction):并行预测多个未来词,使推理速度提升 3 倍。
  • Blackwell & NVFP4 优化:在 Blackwell 平台上支持 NVFP4 精度运行,推理速度较 Hopper 平台(FP8)提升 4 倍且无精度损失。

针对智能体流的工程优化

  • 百万级长上下文:具备 1M Token 上下文窗口,可一次性加载完整代码库或数千页财务报告,有效避免多 Agent 协作中常见的「目标漂移(Goal Drift)」。
  • 解决上下文爆炸:针对多 Agent 场景中 Token 消耗较普通对话高出 15 倍的特性,Nemotron 3 Super 通过混合架构实现了 5 倍的吞吐量提升。
  • 高精度工具调用:针对大规模函数库(Function Libraries)优化了调用准确性,确保在网络安全、半导体设计等高壁垒领域的可靠执行。

HuggingFace 链接:
https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Super-120B-A1...

Blog 链接:
https://blogs.nvidia.com/blog/nemotron-3-super-agentic-ai/

(@橘鸦 Juya)

4、复旦等研究团队推出「第一人称视听基准」,补齐多模态模型「听觉拼图」

来自复旦大学,上海创智学院,INSAIT,华东师范大学,南开大学的研究团队,提出了首个系统评测第一人称声音理解能力的基准:EgoSound: Benchmarking Sound Understanding in Egocentric Videos

这是首个专门面向 MLLMs 的第一视角「声音理解」评测体系。目标很明确:让模型在真实世界中,能听见、理解、推理,并解释发生的一切。

以往的 egocentric VideoQA,更像一个「静音观察者」。它擅长回答:画面里有什么?人在做什么?却很难处理:谁在说话?为什么说?这个声音意味着什么?声音与动作如何形成因果链?

因此,EgoSound 关注的不是「视频里有什么」,而是:当声音成为关键证据时,模型还能不能答对

研究团队评测了多款 SOTA MLLMs,并进行系统分析,给未来方法研究提供清晰靶点。同时构建并筛选高质量 OpenQA 并借助多个强模型辅助标注。最终保证:每条问题都绕不开「听觉线索」。

评测结果非常直观,最强模型与人类差距超过27 个点说明:当前模型还无法稳定把声音转化为可靠认知。

人类平均准确率:83.9%

当前最佳模型:56.7%(Qwen3-Omni-Thinking-30B)

如果说过去的多模态模型更像一个擅长「看图说话」的解说员,那么 EgoSound 希望推动它成为真正的第一人称智能体:

既能看,也能听;不仅能描述,更能定位、解释与推断。

毕竟,真实世界从不静音。

(@量子位)

02 有亮点的产品

1、前 NotebookLM 团队成员项目:个性化自适应学习引擎 Wondering 开启早鸟测试

前 NotebookLM 团队成员 Cheng-Wei Hu 正式发布 Wondering 应用,定位为「全领域的 Duolingo」。

该平台旨在将任意垂直领域的复杂课题转化为颗粒度极小的视觉化引导路径,通过自适应引擎解决知识吸收效率与长程记忆留存的平衡问题,将多模态视觉内容与结构化教学路径结合,使用户能够在零碎时间内完成深度课题的闭环学习。

Wondering 的底层逻辑由三个核心技术维度支撑:

  • 自定义模式:允许用户自定义知识图谱的深入程度、内容难度分级。以及个性化偏好权重,实现学习路径的动态生成。
  • 主动学习机制:集成实时测试与练习工具,强制执行知识检索(Retrieval Practice)而非被动信息获取,确保理解力的工程化验证。
  • 长程掌握算法:针对长期记忆曲线设计的算法模型,重点解决非线性学习场景下的知识衰减问题。

目前系统处于限量早期测试阶段,支持跨平台同步(App Store 及 Web 端)

https://wondering.app/

( @HcwXd@X)

2、前快手语言大模型中心负责人张富峥,已加入智源人工智能研究院,负责 LLM 方向

据报道,前快手语言大模型中心负责人张富峥已加入北京智源人工智能研究院,负责 LLM 方向。张富峥博士长期深耕大模型、自然语言处理、知识图谱和搜索推荐等 AI 领域,曾在快手任 General Manger 及语言大模型中心负责人,负责 Klear 系列大模型的技术建设及相关业务应用。

加入快手之前,他是美团点评 NLP 中心的研究员,带领知识图谱团队负责构建围绕美团生活服务领域的知识图谱及其应用,为美团各场景业务提供更加智能的服务。更早前,他曾在微软亚洲研究院担任研究员。

(@雷锋网)

3、ChatGPT 发布动态视觉解释功能,支持 70 余项数理化公式实时交互

近日,ChatGPT 推出了动态可视化解释(interactive visual explanations)功能,便于用户实时查看公式、变量和数学关系的变化。

用户现在无需再阅读文字说明或查看静态图表,而是可以直接与交互式可视化内容互动。 例如,当用户向 ChatGPT 询问「什么是勾股定理」时,它就能进行解释并提供交互式可视化模块,用户可以调整变量、修改公式参数,并能实时看到这些更改如何影响图表和结果——将抽象的方程式转化为可以直接进行可视化实验的对象。

据介绍,动态可视化讲解功能涵盖 70 多个核心数学和科学概念(包括平方差、圆的面积、勾股定理、线性方程等),实时展示公式、变量和关系的运行方式,引导学习者理解,并面向所有已登录 ChatGPT 的用户开放。

OpenAI 计划未来扩展此功能,使其涵盖更多主题:「这仅仅是个开始。未来,我们计划将互动式学习扩展到更多学科,并继续开发能够强化 ChatGPT 学习效果的工具。」 这项新功能与 ChatGPT 近期推出的其他教育工具(例如学习模式)相辅相成,其学习模式可以引导用户逐步解决问题。

(@多知)

03 有态度的观点

1、Meta 称上传盗版电子书属于合理使用

为训练大模型,社交巨人 Meta 从 Z-Library 和 LibGen 等影子图书馆平台通过 BitTorrent 下载了逾百 TB 的电子书。

在正在进行的由图书作者提起的诉讼中,Meta 律师辩称,通过 BitTorrent 将盗版电子书上传给陌生人属于合理使用。Meta 还强调,这些数据帮助美国确立了其在全球 AI 领域的领先地位

法庭去年裁决,使用盗版电子书训练大模型属于合理使用,但 Meta 仍然需要为通过 BitTorrent 下载和分享电子书的行为承担责任。

图书作者认为,Meta 参与了侵权行为。Meta 在上周递交的补充书面询问中表示,在下载 BT 文件过程中共享文件也属于合理使用,理由是这是 BT 协议的固有特性,上传不是选择而是技术本身的工作方式。

Meta 还辩称,使用 BitTorrent 共享文件是获取这些宝贵(但盗版)数据的必要手段。以 Anna’s Archive 为例,这些数据集只能通过 BT 下载获取,因此 BitTorrent 是唯一的选择。

( @solidot.org)

04 社区黑板报

招聘、项目分享、求助……任何你想和社区分享的信息,请联系我们投稿。(加微信 creators2022,备注「社区黑板报」)

1、Physical AI 系列活动硅谷站!探讨和上手全模态与硬件智能丨 Meetup+Workshop,3 月 19 日

湾区硅谷的开发者和创业者们,3 月 19 日见!

GTC 期间,来一场动脑又动手的 Physical AI 全天候嘉年华!同一场地,两场硬核活动无缝衔接:

🌅 上午 09:30|Meetup:对话真实世界

Agora | RiseLink | MiniMax | HumanTouch | EverMind | Resonance Ventures 等大咖齐聚,拆解全模态与端侧智能的机会与未来。

🛠 下午 13:30|Workshop:手搓语音 AI 硬件

基于 TEN 框架,实操接通语音 AI Agent。重点来了👉现场备有 40 套 Agora R1 开发板,代码跑通直接把硬件带回家!

上下午活动需分开独立报名,名额有限,拼手速:

上午 Meetup 报名:
https://luma.com/8we6qyma

下午 Workshop 报名:
https://luma.com/onc0xr9y

地点:Sunnyvale (审核后发具体定位)

阅读更多 Voice Agent 学习笔记:了解最懂 AI 语音的头脑都在思考什么

写在最后:

我们欢迎更多的小伙伴参与 「RTE 开发者日报」 内容的共创,感兴趣的朋友请通过开发者社区或公众号留言联系,记得报暗号「共创」。

对于任何反馈(包括但不限于内容上、形式上)我们不胜感激、并有小惊喜回馈,例如你希望从日报中看到哪些内容;自己推荐的信源、项目、话题、活动等;或者列举几个你喜欢看、平时常看的内容渠道;内容排版或呈现形式上有哪些可以改进的地方等。

作者提示: 个人观点,仅供参考

实时云渲染云推流技术加速具身智能 AI 模拟到现实世界的转化效率

在具身AI的发展中,成功实现从模拟到现实的迁移依赖高保真物理模拟环境和1:1数字孪生,以掌握精确任务;这需要强大GPU算力来实现实时光线追踪和物理仿真。通过实时云渲染云推流技术,研究团队能够将大规模基于云的模拟能力即时传输到任意终端,平衡高精度视觉效果与设备移动性之间的矛盾。

  1. 解放“移动性”:打破工作站的枷锁

高保真模拟通常依赖服务器级GPU,为了在实验室中捕捉自然轨迹,研究需在移动环境中操作数据记录。实时云渲染云推流技术突破了头戴设备与固定工作站的物理束缚,将高精度视觉效果无线传输到移动设备,从而显著提升操作安全性与数据收集的灵活性。

正如NVIDIA所展示的,物理AI正在重新定义工业生产力,95%的机器人训练都在模拟环境中进行。实时云渲染云推流技术是将这种电影级模拟直接传输到现场无线终端的关键桥梁,确保无缝的视觉保真度和准确的现场适配。

  1. 数据一致性:虚拟物理同步和现场验证的精度

在协作研发和远程操作场景中,视觉反馈需要与云端物理引擎严格对齐,通过集中式渲染维护唯一的“事实来源”,避免本地独立运行时产生的微小偏差。实时云渲染云推流技术实现人类操作与云渲染帧在同一时间轴上的精确同步,从而生成高质量、无漂移的合成数据。

  1. 与现有研发流程无缝集成

专业的物理AI开发需要强大平台管理,以实现流式传输能力在现有研发流程中的无缝集成。通过开放的PaaS架构,团队可利用全面的后端 API 和多平台 SDK,将高性能流式传输嵌入机器人训练系统或仿真管理门户。这种深度集成使开发者能够定制数据通道与交互模式,确保无线终端即时访问高计算资源,并加速从模型验证到现场适配的周期。

LarkXR:高性能实时云渲染云推流PaaS平台

平行云作为行业内最早将实时云渲染云推流技术产品化的团队之一,不断深化其技术基础,解决复杂挑战,为企业XR树立了标杆。

LarkXR是平行云自研的企业级云渲染云推流产品,在各行业得到广泛应用。它基于云-网-端-PaaS架构构建,覆盖从数据中心到终端设备的全路径:

  • 专利 GPU 资源池化: 通过容器化会话隔离和主要引擎的动态调度,实现90%以上的资源利用率。
  • 资源实时监控,无缝对接业务系统: LarkXR是国内首个产品化实时云渲染PaaS平台,具有完整的前后台管理功能,可以实时监控程序、服务器、用户、终端等各类数据信息,同时也支持数据、图像、音视频乃至语音语义等多种数据的同步传输,可轻松与现有的三维可视化业务管理系统无缝嵌入,实现真正的业务云化。
  • 广泛的引擎兼容性快速实现B/S架构: 完美兼容UE、 Unity等主流引擎开发的3D /2D/WebGL应用。开发者无需修改应用程序源码、无需集成特定插件,即可实现,极大降低了迁移成本和门槛。
  • 超低时延超高自适应传输: 提供<20ms超低延迟,具备2Mbps\~100Mbps动态比特率自适应能力,确保视觉反馈与控制指令完美同步。
  • 完整的PaaS平台功能: 包括高频数据通道、交互式音视频同步,以及用于深度系统集成的局部视图优化。
  • 跨平台跨终端: 支持PC、手机、平板、中控系统、8K大屏和XR可穿戴设备,包括VR/AR/MR头显,扩展性出色。
  • 卓越的国产化与性能支持: 全面支持软硬件国产信创环境,并能提供最高120FPS、8K分辨率的高清视频流直推,符合网络安全等级保护要求,从底层架构上规避了数据泄露与被攻击风险;同时具备数据备份机制,确保核心数据可管、可控、可追溯。

平行云LarkXR在异构环境中具有强大的兼容性,对多终端提供通用支持,应用程序与设备之间松耦合,以及让开发者工作更轻松的工具,提升数据生产效率。

本文已发布于官网:https://www.pingxingyun.com/