2026年3月

XYplorer 是一款高级的Windows 选项卡式文件管理器,具有通用预览、标签管理、双窗口界面、高级搜索工具、可高度自定义的界面以及一系列用于自动进行周期性任务的独特功能等特点

一、准备工作

安装包下载:https://pan.quark.cn/s/ae4a91c75620
  ,先下载好 XYplorer 26 安装包(压缩包形式,内含 XYplorer主程序),保存到电脑本地。

二、安装 XYplorer 26

  1. 解压安装包

    找到下载的 XYplorer26压缩包,右键点击 → 选择【解压到 XYplorer26】。

  2. 复制主程序到目标磁盘

    • 打开解压后的 XYplorer26文件夹,右键 XYplorer主程序 →【复制】;
    • 打开要安装的磁盘(如 D 盘)→ 在空白处右键 →【粘贴】。
  3. 创建桌面快捷方式

    • 双击打开粘贴后的 XYplorer文件夹;
    • 右键 XYplorer图标 →【显示更多选项】→【发送到】→【桌面快捷方式】。

三、验证安装

双击桌面【XYplorer - 快捷方式】图标,成功打开软件主界面,说明安装完成!

大家好!给大家分享一款我做的克隆父母声音讲故事的 APP

做这个的原因和背景:
我现在每天都要给儿子讲绘本、讲故事,有时候有点累,突然想到一个 idea ,就是克隆一下我的声音给他讲,然后就开始网上搜这个 idea 相关的产品,发现很少,然后还跟 ai 交流发现了这个产品受众的其他痛点,比如,父母出差,或者想要留住爷爷奶奶的声音等等,然后一想就是一大连篇,还可以做成长记录,语音生日信,时光胶囊等等。

然后就打算自己做一个,也顺便试下是否可以当做副业推一推。

目前 Android 的话,大家可以免费下载,也可以暂时免费使用,有孩子的爸妈可以去试试,这个产品分享给了身边的有孩子的朋友,他们还是觉得挺好,愿意尝试。请大家可以多多提意见和建议,我也会不断迭代升级!

产品名称:
生声念念,大概意思就是克隆父母声音,ai 生成故事,给小朋友念

官网:
https://www.shengshengniannian.com
(内有 APP 下载地址)

核心功能:

  • 克隆声音
  • 定制故事 、寓教故事
  • 故事合成音频
  • 播放故事
  • 订阅、内购

未来功能:

  • 成长记录
  • 语音生日信
  • 时间胶囊
  • 故事共创分享社区

进展:
iOS 已完成提交审核中,Android 完成核心功能准备接入支付(这块好像个人不行,得个体户或者企业 还在想办法)

个人情况:
原本就是开发,主要做 Java 后端,Android 起家,然后学了 Java ,学了前端 Vue ,兼职过运维等等,
还算是有专业编程基础

收获:
即便是项目不成功也没有关系,目前这个项目几乎全是靠 AI 来写的,用了各种编程 AI: claude code, codex, antigravity, kiro 等,各种免费的额度、公益站、付费的模型等都在混着使用,也踩了很多坑,了解到各个 AI 模型之间的一些差异,国外(claude openai google 系模型)、国产模型( minimax glm qwen kimi )的使用感受等等,也累积有很多 AI 相关使用的经验和技巧等。也使用了 cc-switch 、CLIProxyAPI 等工具,总之就是对模型的混用和薅有了新的认识

还要感谢站内的大佬们分享的一些公益站和薅羊毛的方法,也让我能够省下一大笔 token 成本。

对于编程 AI 工具和模型目前使用感受上,个人觉得还是国外的模型确实要厉害一些,claude 系列的 codex 系列的 这俩算是数一数二的。由于费用原因,目前还是在大量使用 codex (因为有很多免费额度可以去薅😂),这俩的编程专业能力还是最强的。

过程中,有丰富的收获,经历了:iOS 开发者的申请,打包,国内备案网站和 APP ,上架 AppStore (被拒审了一次),国内支付遇到阻塞,目前正在想办法看是注册个个体户还是一人公司?

AI 技术:
克隆主要是用的 bilibili 开源的 indexTTS2.0 ,目前声音、音色都很像,还不错哦。故事生成的话就是用的国产模型 GLM (也会随时切换)

花费时间:
工作之余做的,目前断断续续,前前后后差不多(加上备案啥的)一个月左右了。

总结:
一切都只是个开始,不管最后结果如何,至少自己还在努力,给自己创造更多的可能,至少多个选择多条路。后面最重要的也就是推广了,这块现在的想法是,可能未来会向自媒体方向去发展,毕竟这是一个大趋势,虽然没有经历过,但是只要迈出那一步就好。或者可以考虑尝试投流,看看市场对这类产品是感冒。

最后,再请大家帮忙看看:

产品方向是否有明显偏差?
体验流程哪里最容易劝退?
订阅/内购价格是否合适?
或者其他更好的建议和意见 3q!

One Commander Pro是一款功能强大、简洁易用的双窗格文件管理器,它提供了丰富的功能和直观的用户界面,使用户能够更高效地组织、浏览和管理文件和文件夹。

一、安装 OneCommander Pro 3.50(64bit)

  1. 解压安装包

    安装包下载:https://pan.xunlei.com/s/VOnb3_wNW6AQXb8kzQSJxnr1A1?pwd=8cup#,找到下载的 OneCommander Pro 3.50(64bit)压缩包,右键 →【解压到 OneCommander Pro 3.50(64bit)】。

  2. 运行安装程序

    打开解压后的文件夹,双击 Setup文件启动安装向导。

  3. 按向导安装

    • 点击【Next】→ 修改安装路径(将首字符 C改为 D可装到D盘)→【Next】→【Next】;
    • 等待安装进度条完成 → 点击【Close】退出安装界面。

二、激活软件(注册机方式)

  1. 解压激活工具

    回到解压的 OneCommander Pro 3.50(64bit)文件夹,右键 Crack压缩包 →【解压到当前文件夹】。

  2. 生成并复制激活码

    • 右键解压出的 Keygen→【以管理员身份运行】;
    • 点击【Generate】生成激活码 → 右键复制生成的激活码。

三、启动与中文设置

  1. 启动软件并选择语言

    双击桌面 OneCommander图标 → 点击【Next】→ 选择【中文简体】→【Start】。

  2. 输入激活码

    • 点击左下角【ⓘ】→【关于】→【输入许可证】;
    • 粘贴步骤2复制的激活码 → 点击【√】→【确定】。

安全研究机构 Innora AI Security Research 发布技术分析称,在支付宝 com.eg.android.AlipayGphone v10.8.26.7000、v10.8.30.8000 中,DeepLink 与 WebView JSBridge 组合可形成攻击链,用户主动点击链接,外部页面即可在应用内调用部分 AlipayJSBridge API。其称 iOS 可用 API 为 18 个,高于 Android 的 13 个,并涉及 tradePay、getLocation 等接口,API 被利用可导致机密位置信息和财务信息被掌握。

研究团队表示已按负责任披露流程向蚂蚁集团提交多轮报告,蚂蚁集团于 2026 年 3 月 10 日回复相关问题属于“正常功能”。

https://innora.ai/zfb/

https://seclists.org/fulldisclosure/2026/Mar/4

https://github.com/sgInnora/alipay-deeplink-research

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

 XMIND是一款专业的跨平台思维导图软件,基于Eclipse RCP架构与Java语言开发,支持Windows、Mac、Linux及移动端操作系统。

一、安装 Xmind 2025

  1. 解压安装包

    安装包下载: https://pan.quark.cn/s/ec5191d321d5 ,找到下载的 Xmind 2025 安装包,右键点击 → 选择【解压到当前文件夹】。

  2. 运行安装程序

    打开解压后的【XMind 2025】文件夹,找到 Setup安装程序,右键 →【以管理员身份运行】(避免权限不足)。

  3. 等待自动安装

    软件会自动执行安装,耐心等待进度条完成。

  4. 结束安装向导

    安装完成后,关闭弹出的安装完成页面。

二、软件

  1. 复制文件

    返回解压的【XMind 2025】文件夹,打开【Crack】文件夹 → 右键 winmm.dll文件 →【复制】。

  2. 粘贴到安装目录

    • 右键桌面 Xmind 图标 →【打开文件所在的位置】;
    • 在打开的文件夹空白处右键 →【粘贴】。

三、启动与防更新设置

  1. 启动软件

    双击桌面 Xmind 图标 → 点击【继续】→【同意】→ 关闭欢迎页面。

  2. 关闭自动更新(关键)

    点击界面上的【...】图标 → 选择【关闭自动更新】按钮(防止更新后激活失效)。

图片
没点进这篇文章的你,可能还未接触智能体;而点进来的你,大概率已经体验过“养龙虾”的便捷——这里说的,就是当下风靡全球的开源智能体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的替代,而是针对国内用户需求的补充与优化,旨在为用户提供“高效且经济”的智能体解决方案,让更多人能在合理预算内,享受智能科技带来的便捷。

‌XMIND是一款专业的跨平台思维导图软件,基于Eclipse RCP架构与Java语言开发,支持Windows、Mac、Linux及移动端操作系统。

一、安装 Xmind 2022

  1. 解压安装包

    安装包下载: https://pan.quark.cn/s/6fb569aeb43a ,找到下载的 Xmind 2022 安装包,右键点击 → 选择【解压到当前文件夹】。

  2. 运行安装程序

    打开解压后的【XMind 2022】文件夹,找到 XMind 2022 v12.0.3 x64安装程序,右键 →【以管理员身份运行】(避免权限不足)。

  3. 等待自动安装

    软件会自动执行安装,耐心等待进度条完成。

  4. 结束安装向导

    安装完成后,点击右上角【关闭】按钮退出安装界面。

二、激活与配置

  1. 复制补丁

    返回解压的【XMind 2022】文件夹,打开【Crack】文件夹 → 右键 app.asar文件 →【复制】。

  2. 替换安装目录文件

    • 右键桌面 Xmind 图标 →【打开文件所在的位置】;
    • 进入【resources】文件夹 → 空白处右键 →【粘贴】;
    • 点击【替换目标中的文件】。
  3. 运行 hosts 脚本

    返回【Crack】文件夹,右键 hosts文件 →【以管理员身份运行】→ 程序自动执行并关闭(约几秒)。

三、启动与防更新设置

  1. 启动软件

    双击桌面 Xmind 图标 → 点击【同意】→【跳过】→【新建】思维导图。

  2. 禁止自动更新(关键)

    • 点击顶部菜单栏【三】→【首选项】;
    • 下拉选择【关闭自动更新】→ 点击【应用】。

最近用 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 。

欢迎试用反馈 🙏

如题,感觉现在社区中的讨论度已经下去了,每天通过日报来观察变化还是少了些互动感,也许可以有 telegram 等渠道?

部署了一个 AI Agent,给了它调模型的权限、读 S3 的权限、写数据库的权限。上线后发现它在凌晨 3 点自己跑去扫描了一遍 S3 bucket 列表。不是被攻击了,是 Agent「觉得有必要」。怎么防止这种事?

AI Agent 跟传统应用有个根本区别:行为不完全可预测。传统应用写了什么代码就执行什么,Agent 根据 prompt 和上下文动态决策。

所以安全策略不能只靠「审查代码」,需要「运行时约束 + 事后审计」。

这篇讲四个层面的防护方案,全部基于亚马逊云科技的原生服务。

第一层:IAM 最小权限

给 Agent 配专用 IAM Role,权限遵循最小原则。

举例:一个只需要调 Bedrock 推理的 Agent:

{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": ["bedrock:InvokeModel"],
        "Resource": "arn:aws-cn:bedrock:*::foundation-model/anthropic.claude-*"
    }]
}

要点:

  • Action 精确到方法(不用 bedrock:*
  • Resource 精确到模型(不给全部模型访问权)
  • 用 Condition 加区域限制、token 上限
  • 不给 List/Describe 类权限(Agent 不需要「探索」)

第二层:VPC 网络隔离

Agent 运行在私有子网,不暴露公网。通过 VPC Endpoint 访问 Bedrock、S3 等服务:

  • 流量走亚马逊云科技内网,不经过公网
  • Endpoint 可以加 Policy,在网络层做第二道权限过滤
  • 安全组只放行 443 到 Endpoint

好处:即使 Agent 被 prompt injection 攻击尝试访问外部 URL,网络层直接拒绝。

第三层:CloudTrail + CloudWatch 审计

Agent 的每个 API 调用都被 CloudTrail 记录。配合 CloudWatch 做实时告警:

  • 调用频率异常(5 分钟内 > 100 次)→ 告警
  • 非工作时间活动(北京 22:00-06:00)→ 告警
  • 权限拒绝事件(AccessDenied)→ 告警 + 自动暂停

开启 Bedrock Model Invocation Logging,记录每次模型调用的详细信息。

第四层:Bedrock Guardrails

在模型层面加安全策略:

  • 内容过滤:屏蔽不当内容生成
  • 话题限制:只允许讨论业务相关话题
  • PII 检测:自动识别和脱敏个人信息
  • 词汇过滤:自定义禁用词列表

调用时传入 guardrailIdentifier

response = client.invoke_model(
    modelId='anthropic.claude-3-sonnet-20240229-v1:0',
    guardrailIdentifier='my-guardrail',
    guardrailVersion='1',
    body=request_body
)

四层组合

IAM(权限) + VPC(网络) + CloudTrail(审计) + Guardrails(内容)

每层独立工作,任何一层被绕过,其他层仍然有效。

关键思维

从「信任 Agent 的代码」转向「约束 Agent 的行为」。

Agent 可能做任何它有权限做的事。安全策略要假设它会,然后用技术手段确保它只做你允许的事。


🔗 Amazon Bedrock:https://aws.amazon.com/cn/bedrock/
🔗 Bedrock Guardrails:https://aws.amazon.com/cn/bedrock/guardrails/
🔗 CloudTrail:https://aws.amazon.com/cn/cloudtrail/

整理 | 华卫

 

近日,软件巨头 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 精彩活动请关注专区

3 月 12 日,阶跃星辰推出基于 OpenClaw 打造的云端 AI 助手 StepClaw,并开放 5 万个可一键部署并使用“小龙虾”的体验名额,限时免费 1 个月。

值得关注的是,体验名额不仅支持通过阶跃 AI APP 一键部署“小龙虾”,更提供了包含 5000 万模型 Tokens、服务器、存储在内的全家桶免费权益,在大幅降低普通用户安装门槛的同时,能够让人们真正把 AI 工具使用起来。据悉,今天该功能还将在阶跃 AI 网页端上线,支持部署和使用。

地址:https://www.stepfun.com/chats/new

 

StepClaw 的核心亮点之一在于其搭载的 Step 3.5 Flash 模型——这款由阶跃星辰开源的基座模型,官方定位是“为 Agent 而生”,自 3 月初全面开源后,迅速登顶 OpenClaw 模型调用量月榜,并连续多日位列全球第一,是开源社区“最受开发者欢迎的龙虾大脑”。

据 OpenRouter 公布的数据显示,过去 30 天内 Step 3.5 Flash 的 Tokens 调用总量已超越了包括 Gemini 3 Flash Preview、Claude Sonnet 4.6 在内的国际一线模型,且中国模型在前五名中占据过半席位,也显示出中国开源力量正在全球 Agent 生态中强势崛起。

 

根据阶跃星辰官方介绍,StepClaw 云端部署配置了双核 CPU、4GB 内存与 40GB 存储,支持复杂任务执行、长期记忆且 7×24 小时在线运行,即使用户设备关机也能保持云端运行。另外,产品内置了阶跃自研搜索工具及丰富的技能库,极大地拓展了用户的使用场景。

 

目前,迅速走红的 OpenClaw 生态已从开发者圈层蔓延到普通人的生活场景中,随着腾讯、阶跃星辰等公司纷纷加入“龙虾战局”,推出相应的部署方案,AI Agent 加速从前沿技术转变为真正能为服务于普通用户、在实际生活场景中创造价值的 AI 工具。

 

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

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

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


🕹️ 三种玩法:

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

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

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

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

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

http://music.rossroma.com/

实时数据平台不是技术的简单堆砌,而是数据从产生到消费的全链路价值优化体系,每一步延迟的降低都在加速商业决策的脉搏

在电商案例复盘中,我们深入探讨了从单体到微服务的架构演进路径,自然引出一个关键问题:在分布式架构下,如何保证数据能实时流动并支撑业务决策?实时数据平台正是解决这一挑战的核心中枢系统。本文将全面解析实时数据平台从采集到消费的完整价值链,揭示各环节协同效应,并提供科学的ROI评估框架。

1 实时数据平台的战略价值:从成本中心到价值引擎的转变

1.1 实时数据能力的业务紧迫性

在瞬息万变的商业环境中,数据延迟已成为企业决策的致命瓶颈。当竞争对手已经基于实时销售数据调整营销策略时,许多企业仍依赖T+1的日报表体系,这种决策时间差正无声地侵蚀企业竞争力。

实时数据带来的范式转变体现在三个核心维度:

  • 决策速度:从"事后分析"转变为事前预测事中干预
    -用户体验:从"静态交互"升级为动态个性化**互动
  • 运营效率:从"批量处理"优化为即时响应机制

研究表明,数据流动量每增加10%,可带动GDP增长0.2%。在商业场景中,这一提升更为显著:某头部电商通过实时数据平台将营销决策延迟从小时级降至秒级,促销ROI提升25% 以上。

1.2 实时数据平台的定义与演进

传统数据平台主要面向批处理离线分析,而现代实时数据平台的核心特征是流式处理低延迟响应。这一转变不仅是技术架构的升级,更是业务模式的革新。

实时数据平台的演进阶段

  • 第一阶段(2010-2015):基于ETL的离线处理,延迟在小时级以上
  • 第二阶段(2015-2020):Lambda架构尝试批流一体,延迟进入分钟级
  • 第三阶段(2020至今):Kappa架构成熟,全面流式处理,延迟降至秒级甚至毫秒级

当前领先企业的实时数据平台已能实现端到端秒级延迟,支撑从风险控制到个性化推荐等对时效性要求极高的业务场景。

2 数据采集层:实时价值链的起点

2.1 多源异构数据的实时接入挑战

数据采集是实时价值链的源头,决定了后续所有环节的数据质量和时效性。传统批处理采集方式(如每日定时调度)已无法满足实时需求,流式采集成为必然选择。

实时数据采集的技术架构

数据源 → 采集代理 → 消息队列 → 数据解析 → 格式统一

主要数据源类型及采集策略

  • 业务数据库变更:通过CDC(Change Data Capture)技术实时捕获数据库变更日志
  • 应用程序日志:通过Agent实时收集和传输应用产生的日志数据
  • IoT设备数据:通过专用协议接收高频传感器数据
  • 外部API数据:定时轮询或Webhook方式获取第三方数据

某金融平台采用CDC技术实时捕获数据库变更,将传统ETL的小时级延迟降至秒级,显著提升了风控系统的响应速度。

2.2 采集层的关键性能指标与优化策略

吞吐量延迟可靠性是评估采集层性能的三大核心指标。优秀的采集系统应在高吞吐量下仍保持低延迟和高度可靠性。

采集层优化策略

  • 分布式架构:采用多节点并行采集,提高吞吐能力
  • 智能背压机制:当下游处理能力不足时,自动调节采集速度
  • 断点续传:故障恢复后能从断点继续采集,避免数据丢失
  • 数据过滤:在采集端进行初步过滤,减少不必要的数据传输

某短视频平台通过优化采集层架构,成功应对了千万级峰值QPS的挑战,保证了用户行为数据的完整采集秒级延迟

3 数据加工层:实时计算的核心引擎

3.1 流式处理模式与技术选型

数据加工层是实时平台的计算核心,负责对持续不断的数据流进行清洗、转换、聚合等操作。与批处理不同,流处理面对的是无界数据流,需要特殊的处理模型。

主流流处理框架对比

框架处理模型状态管理恰好一次语义适用场景
Apache Flink原生流处理强大支持复杂事件处理、有状态计算
Apache Spark微批处理中等支持准实时分析、ETL
Apache Storm原生流处理不支持简单实时处理、低延迟需求

某电商平台采用Flink作为实时计算引擎,实现了复杂事件处理(如用户行为序列分析)和实时指标聚合(如GMV实时计算),将数据处理延迟稳定在500毫秒以内。

3.2 流处理的核心挑战与解决方案

乱序数据处理是流处理的主要挑战之一。由于网络延迟等原因,数据可能不按产生顺序到达处理系统。水位线(Watermark)机制是解决这一问题的关键技术,它定义了事件时间的进展,帮助系统判断何时可以触发窗口计算。

状态管理是另一个关键挑战。流处理中的状态指的是算子需要维护的中间结果,如窗口聚合的中间值。Flink通过分布式状态检查点机制实现了高效且可靠的状态管理。

窗口处理优化策略

  • 滚动窗口:固定大小、不重叠的窗口,适合定期统计
  • 滑动窗口:固定大小、有重叠的窗口,适合平滑计算
  • 会话窗口:基于活动间隔的动态窗口,适合用户行为分析

某社交平台通过优化窗口策略,将会话分析的准确性提升了30%,同时保持了秒级的处理延迟。

4 数据存储层:实时数据的持久化与服务化

4.1 实时数据存储的多元需求

与传统批处理不同,实时数据平台对存储层有更复杂的要求:低延迟读写高并发访问强一致性需要平衡考虑。

实时数据存储的层次化架构

原始数据层 → 明细数据层 → 汇总数据层 → 应用数据层

存储技术选型矩阵

  • 原始数据:Kafka、Pulsar等消息队列,提供高吞吐持久化
  • 明细数据:HBase、Cassandra等NoSQL数据库,支持随机读写
  • 汇总数据:Redis、Druid等内存或列式存储,优化聚合查询
  • 应用数据:MySQL、PostgreSQL等关系数据库,服务业务查询

某实时风控系统采用多级存储策略:原始数据存入Kafka保留7天,明细数据存入HBase支持明细查询,风险评分结果存入Redis供实时API查询,实现了容量性能成本的最佳平衡。

4.2 存储层的性能优化与成本控制

数据生命周期管理是优化存储成本和性能的关键。根据数据访问频率自动调整存储策略:热数据保存在高性能存储,温数据转入标准存储,冷数据归档到低成本存储。

存储优化策略

  • 数据分区:按时间或业务维度分区,提高查询效率
  • 索引优化:为常用查询条件建立合适索引
  • 数据压缩:选择合适的压缩算法平衡CPU和I/O
  • 缓存策略:多层缓存设计,提高热点数据访问速度

某IoT平台通过智能分层存储方案,在存储成本仅增加20% 的情况下,支撑了10倍的数据增长,且查询延迟保持稳定。

5 数据查询与服务层:实时价值的输出界面

5.1 多模式查询引擎与API服务

实时数据的价值最终通过查询和服务层交付给业务应用。这一层需要支持多种查询模式并提供低延迟数据服务

实时查询服务架构

查询接口 → 查询引擎 → 优化器 → 执行引擎 → 存储层

主要查询模式及适用引擎

  • 点查询:通过主键直接查找,适合Redis、Key-Value存储
  • OLAP查询:多维度分析查询,适合Druid、ClickHouse等OLAP引擎
  • 全文检索:文本内容搜索,适合Elasticsearch等搜索引擎
  • 图查询:关系网络分析,适合Neo4j、Nebula等图数据库

某实时监控系统通过多引擎协同策略:将实时汇总数据存入Druid支持OLAP分析,将告警规则匹配结果存入Redis支持实时查询,实现了亚秒级 响应时间,支撑业务人员自主数据分析。

5.2 查询性能优化与资源隔离

并发控制资源隔离是保证查询服务稳定性的关键技术。随着用户数量增加,避免查询间相互干扰变得尤为重要。

查询优化策略

  • 查询重写:自动优化低效查询语句
  • 物化视图:预计算常见查询结果
  • 结果缓存:缓存频繁查询的结果
  • 资源队列:按业务优先级分配计算资源

某大型电商通过实施资源隔离策略,将关键业务查询的稳定性从95% 提升到99.9%,即使在促销高峰期也能保证核心业务的实时数据可访问性。

6 数据消费层:实时价值的业务体现

6.1 实时数据的主要应用场景

数据消费层是实时数据价值的最终体现,也是评估ROI的直接依据。不同业务场景对实时数据的需求差异显著。

典型实时数据应用场景

  • 实时监控告警:业务指标异常实时检测与通知
  • 实时个性化:基于用户实时行为提供个性化内容
  • 实时风控:欺诈行为实时识别与拦截
  • 实时运维:系统性能实时监控与自动扩缩容

某银行通过实时风控系统,将欺诈交易识别时间从分钟级缩短到毫秒级,每年避免损失数亿元

6.2 消费层体验优化与价值度量

用户体验优化是提升数据消费效果的关键。实时数据产品需要平衡信息密度可理解性,让用户能快速获取洞察而非淹没在数据海洋中。

消费层优化策略

  • 可视化优化:选择合适的图表类型展示实时数据趋势
  • 交互设计:提供下钻、筛选、对比等交互分析能力
  • 告警智能:基于机器学习优化告警阈值,减少误报
  • 移动适配:支持多端访问,随时随地获取实时洞察

某零售企业通过优化实时销售看板的可视化设计,将管理者识别异常的时间缩短了50%,决策效率显著提升。

7 协同效应:五层价值链的整体优化

7.1 端到端延迟的瓶颈分析与优化

实时数据平台的价值不仅取决于单点性能,更在于端到端的协同效率。根据木桶理论,整体性能由最慢的环节决定。

端到端延迟构成分析

采集延迟 → 传输延迟 → 处理延迟 → 存储延迟 → 查询延迟

协同优化策略

  • 流水线并行:避免不必要的同步等待,提高整体吞吐量
  • 数据剪枝:尽早过滤不必要数据,减少后续处理压力
  • 压缩传输:平衡网络带宽和CPU开销,优化传输效率
  • 缓存预热:预测性加载热点数据,减少查询延迟

某互联网公司通过全链路优化,在单环节性能提升有限的情况下,整体延迟降低了40%,体现了协同优化的巨大价值。

7.2 数据一致性的协同保障

在分布式实时处理环境中,数据一致性是重大挑战。需要各环节协同实现从最终一致性强一致性的恰当平衡。

一致性保障策略

  • 幂等处理:确保重复数据不会导致重复计算
  • 事务机制:关键操作保证原子性
  • 版本控制:并发修改时解决冲突
  • 数据稽核:定期比对一致性,发现并修复差异

某交易平台通过引入分布式事务机制,将账务不一致率从0.1% 降至0.001% 以下,大幅提升了用户信任度。

8 ROI评估框架:实时数据平台的投资回报分析

8.1 实时数据平台的成本结构分析

构建实时数据平台需要全面评估直接成本间接成本,避免低估总拥有成本(TCO)。

实时数据平台成本构成

  • 基础设施成本:服务器、网络、存储等硬件资源
  • 软件许可成本:商业软件许可或开源软件维护成本
  • 人力成本:开发、运维、管理团队投入
  • 机会成本:因资源投入实时平台而放弃的其他投资机会

某中型企业实时平台三年TCO分析显示,人力成本占比45%,基础设施成本占比30%,软件和维护成本占比25%。这一分析帮助企业优化了投资分配。

8.2 实时数据平台的价值度量体系

实时数据平台的价值可分为有形价值无形价值,需建立全面的度量体系。

有形价值度量指标

  • 收入提升:通过实时个性化推荐增加的交易额
  • 成本节约:通过实时运维减少的服务器资源
  • 风险降低:通过实时风控避免的损失金额
  • 效率提升:通过实时决策减少的人工处理时间

无形价值评估维度

  • 客户体验:实时服务带来的满意度提升
  • 品牌价值:技术创新带来的品牌形象提升
  • 组织能力:数据驱动文化的形成与强化

某电商平台通过实时数据平台,一年内实现ROI 220%,其中风险控制运营效率提升是主要价值来源。

8.3 投资决策与优先级评估框架

不是所有业务场景都需要实时数据能力。科学的投资决策需要基于业务价值实施难度两个维度进行优先级评估。

实时化优先级评估矩阵

高价值/低难度 → 优先实施(如实时监控告警)
高价值/高难度 → 战略投资(如实时风控)
低价值/低难度 → 酌情实施(如实时报表)
低价值/高难度 → 暂缓实施(如边缘场景)

某制造企业通过这一框架,优先实施了设备预测性维护场景,在一年内避免了数百万的非计划停机损失,证明了投资决策的科学性。

总结

实时数据平台的建设是企业数字化转型的关键里程碑,它使企业从"事后分析"走向实时智能决策。成功的实时数据平台不是单一技术的突破,而是全链路协同的结果。

实时数据平台建设的核心原则

  1. 业务驱动:从真实业务场景出发,避免技术驱动的过度设计
  2. 迭代演进:采用小步快跑策略,分阶段验证价值
  3. 协同优化:关注端到端性能,而非单点优化
  4. 成本可控:平衡性能需求与投资回报,确保可持续性

未来发展趋势

  • AI增强:机器学习进一步优化实时数据处理效率
  • 云原生:容器化、微服务架构提升弹性与可维护性
  • 边缘计算:物联网场景推动实时计算向边缘延伸
  • 数据编织:实现更高级别的数据自发现与自集成

实时数据平台正从"竞争优势"变为"必备基础",企业应科学规划、稳步推进,让实时数据能力成为业务增长的新引擎


📚 下篇预告
《压测与成本优化实录——服务端、数据库与缓存的协同优化与成本敏感点》—— 我们将深入探讨:

  • 🏗️ 全链路压测:从网关到数据库的完整压力测试方法论与实战案例
  • 💰 成本洞察:资源利用率监控与成本分摊模型,识别隐藏浪费点
  • 🔧 性能调优:JVM、数据库连接池、缓存策略的配置优化实战
  • 📊 容量规划:基于压测结果的科学容量预测与弹性伸缩策略
  • 🚨 故障预防:通过压测发现系统瓶颈,避免线上故障的最佳实践

点击关注,掌握高并发系统性能优化与成本控制的平衡艺术!

今日行动建议

  1. 评估业务实时性需求,明确哪些场景真正需要实时数据能力
  2. 盘点现有数据架构,识别实时化转型的关键瓶颈与挑战
  3. 制定分阶段实施路线,选择高价值场景作为实时化试点
  4. 建立ROI评估体系,实时追踪实时数据平台的投资回报
  5. 培养实时数据处理人才,构建持续优化的组织能力

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

转录因子是细胞通路的核心调控蛋白,参与细胞发育、分化等生理过程。其中,转录因子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 专属私人助手下达第一个任务吧!

GTK自带'Ctrl+Shift+u'为Unicode输入快捷键。
这个在X11中可以通过ibus-setup中,或者通过gsettings指令来设置快捷键为空。

目前在wayland session中,单单这样设置不行。

以VS Code 1.111为例子

#打开ibus清空或更换unicode快捷键
ibus-setup

#可以将这个设置为环境变量,放在 `~/.bashrc`或者其他启动文件下
export GTK_IM_MODULE=ibus

code --ozone-platform=x11

理论上对大多数基于Electron开发的程序有效,Electron v38开始好像只支持wayland,未测试

可以修改/usr/share/applications/code.desktop以方便通过桌面环境启动。

测试环境:Fedora 43 Workstation(Gnome 49)/ Debian 13.3.0 Gnome (Gnome 48)