
AI builder, Building https://xitter.cf/t.co/3kGDPSgMGW & https://xitter.cf/t.co/1aJnnxFlma & https://xitter.cf/t.co/IXRkk1MroF Apache Arrow/Datafusion/Doris PMC [email protected]
Joined November 2018
- Tweets2.6K
- Following629
- Followers25.1K
- Likes6.9K
严肃学习!Windows 用户真的非常多
发现不少小伙伴很好奇我是怎么用 Mac 来开发Windows软件的,以及Windows软件现在一般用什么技术栈来实现,刚好有空,来和大伙随便聊聊关于多客户端下技术选择的思考以及我的一些想法。
以下是第一篇,给大伙介绍介绍各种桌面、移动端开发技术的选择以及对应选择的思考。
做过前端客户端的小伙伴应该都知道,这些年端的开发一般是这三条路。
第一种最简单方便的是,直接写 Web 代码,塞到浏览器就能跑,包括早年的 PhoneGap、Cordova 就是把网页塞进一个原生壳里,然后提供一些bridge的能力让js可以调用到一些原生的能力,比如唤起手机摄像头这类的 Web 不好做的事情。
第二种是跨端开发,也就是好多年前大家经常听到的一码多端,当时移动端有 React Native、Weex 这一类技术,当时主要是为了解决 Web 性能差的问题,一份代码同时打包出 iOS 和 Android,这里国内大厂使用跨端技术还有一个非常大的原因就是动态化和热更新,讲的土一点就是可以绕过商店审核直接下发新页面,这也是国内跨端在当时移动互联网高速发展时特别流行的重要原因。
桌面端大家熟悉的就是 Electron,大家熟知的现在不少AI桌面端、VS Code、Slack 是用这个做的,代价是相当于每个应用都自带一份 Chromium 和 Node.js,安装包一百多 MB,内存也占得多。但好处是在 Chromium 渲染引擎的统一下能够很好的保持多端的展示一致性,加上里面写的代码非常好写,后续不少桌面的速成就会用这个技术。
跨端后面也慢慢延伸出更多有趣的解决方案,类似Flutter 自己实现一套渲染引擎,早期靠 Skia,现在换成了自研的 Impeller 渲染引擎来保障多端一致和性能效率的均衡,包括桌面端上老牌的 Qt,和 Flutter 一样自己画界面。
这两年桌面跨端也出现了用 Rust 写的 Tauri、Go 写的 Wails,他们和 Electron 不一样的地方就是,他没有塞一个Chromium进去,而是使用的系统自带的 WebView,包会小非常多,但是整体还是基于 Web 这一套研发思路和对应实现语言去进行桥接交互,但是由于系统 Webview 每个平台不一样,Windows 上是 WebView2,Mac 上是 WKWebView,Linux 上是 WebKitGTK,所以多端显示的一致性反而不如 Electron,还是要写兼容代码。所以这种情况下,即使 Electron 很大内存占用也不低,还是会被选择更多。
第三种是原生开发,也是没有 AI之前,大家觉得开发难度很大的一种方式,特别是之前的苹果系使用的 Objective-C,Android 系使用的 Java、Windows 系 C、C#,均是我认为需要科班花非常多时间去学习、看书、手编代码,要想做得好,需要花大量时间研究对应的系统底层原理,能够方便你写出相比普通研发性能更好更稳定的代码,在我看来是前期投入大,后期用户很享受的技术,我当时17年时候刚工作 2 年多的时候,职业发展比较爽的一个很大原因是我抽了半年时间学习 Objective-C 和 iOS 研发,让我自己本质前端的工作提前往跨端方向走了,刚好可以解决一些这两个工种结合的不能解决的难题,也是我当时做一线开发非常快乐有趣的时间。
等到后面 Swift + SwiftUI、Kotlin + Jetpack Compose、C# + WinUI 3 慢慢出来成熟后,这些原生端语言的写法也慢慢像高级语言靠齐,也更易写了,声明式代码更短、更好读了。但是在国内完全被 React Native、Flutter、Electron 的广泛使用被盖过去了,导致开发者不多,生态发展完全靠官方推动,从而出现了出活很快,但是大家普通感觉怎么用久了卡卡的缘故的一个很大的原因,同时还占大头,而且想迁移到原生假如之前架构实现不好大概率只能重写,完全不能复用,实现得好比如说你把业务逻辑早就抽出,类似 Kotlin Multiplatform 这类方案把业务逻辑共享、界面各写各的原生,算是第四条路,也是最近几年的趋势。
聊到这里大家应该大概明白了,这里也有一个不可能三角,就是研发效率、体验、性能这三者,选择 Web 是多效率少性能,选原生是多性能体验少效率,选跨端就是刚好是这三者取一个中间,做得好容易都占,做得不好,容易没有一边占到好处的尴尬局面。
那么在 AI Coding 写代码已经不是问题的情况下,我们应该选择啥技术呢?很多时候也取决于你的场景,比如你就是一个 Web 场景的浏览、点点按钮、阅读这一类 Web1.0 阶段的东西,那还是非常建议直接 Web 技术来弄;假如你需要调用到系统底层的能力,或者需要操作更顺手更好分发,以及本身就是一个应用的场景,我还是非常建议使用原生技术来实现,这样可以第一时间享受到系统官方本身的众多调优,以及最原生的交互效果、最低的内存占用,加上 AI 让写两份原生代码的成本大幅下降,三角形的效率那一边被补上了,只是两个平台的调试和验证变成了新的成本,这里正是人需要重点做的事情了。
当然假如实在技术选型不那么重要,工作量非常之大,以及业务效果远大于技术体验选择,选择跨端技术也是可以的,这样快,迭代发布也快,可以第一时间让你的用户收到你的最新的特性更新。
不过说到底,技术是给业务服务的,最终还是需要往解决问题方向走,好比抢演唱会门票,大家不会关注你这个客户端怎么这么卡,只会关注我用你能不能抢到票,即使你做得十分顺畅,但是抢不到票也是会被骂得很惨,技术栈的选择在这里就选的好变成了锦上添花的工作,最终还是需要优先保障用户的最真实需求的解决,然后做好这里,再去想,我如何让用户体验更好,接下来才是考虑我是否需要使用原生技术来实现。
一下子居然写了这么多,明天继续来聊,想给大伙来分享我是如何在 Mac 上搭建了一套研发 Windows 原生软件的环境,以及我对于 Windows /Mac 多端研发上的一些踩过的坑以及最佳实践,哈哈,欢迎交流,我们来聊聊不问 AI 自己脑袋里面的技术栈选择,挺有意思。
天不生 DeepSeek,万古如长夜。
DeepSeek 把自己内部用来跑生产服务的推理框架 DeepInfer 完全开源了。这个框架是他们用来驱动 DeepSeek-V4.1-Flash 模型的高性能推理引擎,强调高吞吐 + 低延迟。
同时他们还开源了 deepseek-recipe,这是一套 token 编码/解码组件,目的是让社区部署的行为和官方 API 保持一致。
🚀 Introducing DeepInfer, our in-house inference framework, now fully open source!
Powering DeepSeek-V4.1-Flash at scale with high throughput and low latency. We’re sharing our production stack to help the community lower compute costs, reduce energy use, and make AI more affordable.
🔗 github.com/deepseek-ai/DeepI…
1/4
最近养成了一个非常好的习惯,想推荐给小伙伴们,我想把它叫做刷新或者重置。
每次快到晚上,你从外面回来,第一件事其实就是去刷牙洗澡。把自己洗干净,吹干头发,换上干净的衣服,然后再去做自己的事情。
比如说,你 7 点到家,洗完澡 7 点半,到晚上这段时间,都是你非常新鲜、非常开始的时间。你的心态、你的心情会完全不一样。特别是对于上班族而言,这个时候下班直接回家立马洗澡,可以洗掉你很多“班味”。
正如此,这很像大模型里面的 reset 重置。所以我还有一个习惯,就是每天早上起来的第一件事情就是刷牙洗脸,然后泡一杯茶迎接新的一天。
那个时候你的感觉会特别特别好,会非常有新鲜感,就好比“哦,一天终于来了”。这样其实会让你的心情或者身体有一种“我要开始干活了”的仪式感。
非常推荐这个时候不要先刷手机,而是起来以后先把这两件事做了。然后吃完早饭再去干活,或者可以先不吃早饭,先干着活,等到吃早饭的时候再去吃,都没事。
比如说平时你坐得比较久了,也可以站起来走一圈,去接一杯茶、做杯饮料或咖啡,或者去上个厕所、洗个手,诸如此类。这就是给你长时间的专注注意力去重置一下,等到你回来以后,感觉会很好。
对长时间而言,家庭其实也是一样的。
比如说,每隔 20 天叫几个阿姨过来打扫卫生,把家里收拾得非常干净,就好比给家里也重置了一下。对于不用的东西,及时扔掉或者二手卖掉;包括到换季的时候,把旧衣服进行一次整理,把不要的东西扔掉,或者去买一些更新的,这也是一种很好的重置。
包括经常换被子被套,其实也是一个重置的办法。你会发现,换完被子被套以后,第一次睡上去的感觉是真的很爽。
可能人生也是这样,你得时不时地把你持续很长时间做的事情,或者做得有点疲累的事情尽快重置掉,然后重新开始。就好比洗去尘埃,重新开始做些事情的心态会好太多了。
在一个地方待久了,你可以去远一点的城市找一个好酒店住一晚,或者找个好一点的地方玩一玩、歇一歇,其实这也是一个重置地区的办法。
大概就是这个意思,不知道我有没有表达清楚。其实就是尽可能地把自己持续长时间的东西 reset 掉,然后等你重新来的时候,你会觉得有特别新的感觉。
牛逼!
现在几乎主要的 Agent 都是用 Electron 方案,Codex、Claude...一旦同时跑的 Session 和工作多了,性能消耗和资源占用都很大,尤其是 Web 渲染的各种动画。
我们在把整个 Maka 重写为 Rust + GPUI。为未来几十/上百/上千个 agent 并行做好准备。
已经几乎可用了:
github.com/apache/maka/tree/…
卡比卡比 retweeted
今天 Raft 团队的成员邀请我试用 Public Channel 的功能, 现在你可以通过 app.raft.build/s/myoland 实时看到我 Build 的全过程
Raft 的设计真是遥遥领先了,Grok bot里面的很多设计和 Raft 在半年之前的设计是一致的。
How do always-on, proactive agents like @Bot work?
Watch my lecture at Stanford CS146S:
2:35 How we got here
6:13 What changed in the models
10:06 Inside an always-on agent
18:07 The harness
27:26 Context engineering
34:26 Where this is going





















