普通视图

发现新文章,点击刷新页面。
昨天以前首页

这个世界暂时还不能没有照相馆

作者 ONO
2026年9月17日 09:30

前两天和老婆在讨论,要不要趁着结婚纪念日,带着两只狗去专业的摄影棚拍套全家福。这件事本身不重要,但它让我意识到一件很重要的事情——这个世界暂时还不能没有照相馆。


我并不是一个喜欢用 AI 来进行修图的人,偶尔也只是用来测试一下大家都在聊的新模型,就算是用家里两只狗的照片生成了某些看上去毫无破绽的 AI 图,我还是很介意将它们公开发表,因为那始终不能算是“照片”,而是一种趣味图片罢了。

就比如我的手机桌面,我明明可以让 AI 生成任何我想要最终呈现的、甚至是匹配手机星宇橙配色的手机壁纸,但我还是用了一张看上去无论是构图还是配色都极其诡异的实拍图。

有时候我会拿着手机给别人炫耀:“看我家两只狗。”对方都会因为这个桌面一脸疑惑:“怎么看不到脸?”

“要同时抓拍两个家伙有点难。”

“你可以用 AI 啊。”

我会把后半句话咽回去,但这确实是我一直以来的问题:这样生成的照片,还是“照片”吗?它还能代表我正在真实地记录吗?


我现在越来越不太喜欢拍照,除非真的有可以被记录在“不成文相册”里的画面,才会去拍那些先有文字再有图像的画面,所以我个人也会尽量避免用 AI 给博客文章生成一张相关图片。

不是因为它是“错”的,而是它一定可以比我随手一拍的照片,更加精准地呈现我想要描述的结果,而照片本身有太多需要“过度解读”的部分,否则照片就是一个客观记录下的结果,而非意义赋予的过程。

就比如这张模仿移轴拍下的照片,它记录的就是以前在博客提到过的“蝼蚁分食的荒地”。这张照片被我命名为“伙”,就是非常字面的解释,一个人一团火。而这是这个老人后半辈子唯一的伙伴——在一片不属于自己的开发商荒地之中,开垦出属于自己的田地,她死后不会被埋在这里,但总会有下一个人将属于她的一切刨开,然后成为下一个人孤独的陪伴。

我也试着把这张照片喂给了 ChatGPT,让它取名,它比我解释得更直白、易懂——一个人的火灾。


照片所能包含的信息,并没有想象得那么多,但人们可以透过想象补全那些原本不属于照片的信息。而这些“多出来的部分”,又恰好是人们在通过叙事结构完成情感共鸣的部分。

当然,这些“多出来的部分”本身没有任何的标准答案可言——至今还是有很多人觉得“只要我比别人多从一部电影里看出别人看不到的彩蛋”,就是一种“更为专业”的观影视角。

而 AI 会在一张所谓的“照片”里,塞满它对含义的理解,以及那些最符合人类理解的细节,从而丧失了那些不经意被拍下的照片里,应该被隐藏起来的信息。(当然,为了一个完美取景,蹲在一个地方好几天,就为了太阳和树枝的夹角刚好形成某种奇妙的共鸣,我仍然觉得这也是照片,因为人们仍然是在记录客观现实。)


前年,带狗出过外景拍照,起初它一直被拴着绳子拍照,最后公园的人越来越少后,摄影师建议我们松开它的绳子,让它自由奔跑一阵,比如飞跨过一条水沟,于是这一瞬间被照片记录了下来。

照片里没有任何值得“过度解读”的信息。但是它记录的,就是一只在 2024 年刚好只有 1 岁的小狗,在自由奔跑时最快乐的一瞬。

这个世界还暂时不能没有照相馆,毕竟照相馆和照片都属于永远无法回到的过去。

——

感谢订阅莫比乌斯,如你有任何疑问、观点交流,请前往创作者频道,或私信联系。

成也UNI,败也UNI

作者 obaby
2026年9月15日 15:06

在不久的以前,写代码还需要大量人力的时候,跨平台框架无疑是最好的选择。不管是uni还是flutter,都是为了这个而生的,当然这不是最早的跨平台框架,在这之前还有很多其他的框架,可能大家都不曾听说过,我简单介绍个我用过的两个:b4a(basic for andorid),我最开始并不怎么喜欢写(再问就是不会)安卓的java代码,想着偷懒,不要去弄安卓那一套,偷懒玩了下b4a,这也是最开始做findu的时候最朴素的想法;另外一个是delphi的firemonkey框架,这个东西体验的更早,刚来青岛的时候,为了查询公交基于这个东西做了个公交查询的app,最后跑在了ios上。

这些框架,不能说生不逢时,只能说基础功能还是稍微有些欠缺,生态不完整,例如地图、Im等组件的支撑缺失,这也是最终为什么直接采用原生oc和java开发了最早版本的findu

然而,随着ai的发展,跨平台已经不再是一个主要的投入成本了。借助ai的能力可以快速复刻一个app到其他的平台,以前是点子不值钱,现在技术也不值钱了。跨平台唯一的好处仅剩下代码的可维护性,一套代码通吃各个平台,相对来说代码维护和bug修复的一致性会比多平台更加便捷。

可能这个发展偶尔也会有人会高喊暂停:

2026 年 8 月 11 日,美国参议员伯尼·桑德斯(Bernie Sanders)日前致信 OpenAI CEO Sam Altman、Anthropic CEO Dario Amodei 和 Meta CEO Mark Zuckerberg,要求三家公司暂停 AI 开发,并停止继续构建人类无法控制的 AI 系统。

至于暂停或者不暂停,现有的技术能力已经足够解决日常的技术问题和满足开发需求。也基于这种现有的技术能力,最近重新重构了findu,开发了新的portable claw。这里我想说的就是这个portable claw,借鉴之前的开发经验,想着一套代码解决所有问题,采用的架构依然是uniapp,不过不是uniappx。

按照uniapp 官方文档的说法,x其实是下一代,能达到原生的性能。我在开始的时候错误的评估了app在ios上对于性能的消耗,并且初期测试的时候主要也是基于ios模拟器测试,真机测试相对来说比较少,数据量也没有达到日常使用账号的数据量。导致对于app在ios真机上的性能过于乐观,数据量大了之后,会话窗口的绘制就成了一件痛苦的事情。

 uni-app 在 iOS 真机上的瓶颈,不只是「聊天列表用了 WebView」。换成 nvue,只是把聊天 UI 从 WKWebView 换成 Weex 原生控件,业务、流式更新、页面栈、桥接仍在 JS 容器里。所以能减轻长列表掉帧,但到不了 Swift + UITableView 那种原生体验。


uni-app 在 iOS 真机上真正卡在哪

1. 双运行时一直同时活着

本项目 iOS 不是「整 App 都是 nvue」:

  • 聊天:pages/chat/ios.nvue(Weex)
  • 状态 / 设置 / 登录 / 订阅:仍是 Vue + WKWebView
  • 业务宿主:stores/iosChatHost.js 挂在 App.vue 的 JS 服务层

chatRoutes.js 里写得很清楚:Vue 宿主和聊天 nvue 作为 subNVue 同时常驻,Tab 只挪 overlay。真机上等于:

  • 一套 WKWebView(设置等)
  • 一套 Weex(聊天)
  • 一套 5+ Runtime / Pandora

内存、启动、Tab 切换都比单进程 UIKit 贵。Android 用 index.vue 还能凑合,iOS 对 WebView 和后台 WebContent 更狠,真机掉帧、杀进程都更明显。

2. 主路径仍是 JS:解析、裁剪、再塞回 UI

Gateway / Hermes 事件、历史、tool 卡、附件、TTS、权限,全部在 JS 里做。nvue 不能 import gatewayMedia@noble/* 等,否则 Weex 白屏。于是每条流式更新都是:

JS 宿主算完 → cloneMessage 裁成短摘要 → uni.$emit 整份快照 → nvue 再 v-for 刷 <list>

原生工程则是:SSE 回调直接改 ChatMessageUITableView 按行刷新。中间没有「整窗 JSON 快照」。

3. 聊天数据本身就重

长会话卡、空会话不卡,文档里已经定性:推给 nvue 的是「当前窗口」的完整 JSON,最后十几条常带着大段 tool 输出和 data: 图。你们被迫:

  • 窗口大约 16 条,上限约 48
  • 正文截断、不传 toolCards、不传 data: 预览
  • 流式尽量 splice 一条,避免整表替换

这是在 迁就 Weex 序列化 + 布局,不是产品想要的完整列表。原生 ChatTableView 可以按 cell 复用、按行测高,不必先把历史砍成摘要。

4. 5+ / Weex 桥是同步税

例如内购注释:不要和 StoreKit 弹窗同时触发 Weex 布局,否则会 同步 调 getSafeAreaInsets 卡住。真机上 plus.*、相册、文件、支付、安全区,都会在 JS 线程和主线程之间来回。原生是直接调系统 API。

5. Weex 不是 UIKit

<list> / <cell> 看起来像原生列表,实际是:

  • JS 虚拟 DOM → Weex 原生节点
  • 能力子集(布局、富文本、手势冒泡都弱)
  • 本页还用了 list-flip 倒序列表 才能贴底,属于 Weex 滚动模型的绕路
  • Markdown、代码块、动态高度,Weex 测高和复用远不如 UITableView.automaticDimension

nvue 缓解了什么,为什么仍不够

nvue 确实缓解了「用 webview <scroll-view> 画几百条气泡」这一层:原生 view 绘制、有限回收、少一次 DOM/CSS。

它没有拿掉下面这些,所以仍然不是原生 App:

还在的成本 说明
双引擎
聊天 Weex + 其它页 WebView,Tab 常驻两套页面
快照协议
宿主和 nvue 用事件传 JSON,流式时反复 clone / emit / diff
瘦 UI
重逻辑不能进 Weex,热点路径仍在 JS
列表策略
必须截断、限窗,完整历史会把 <list> 打爆
容器
DCloud 基座、模块、plus、描述文件,启动和权限都比单 target Swift App 重
表达力
做不到原生那种 cell 精细复用、TextKit/AttributedString、键盘 inset、分屏

所以:nvue 是「聊天绘制层换引擎」,不是「App 换成原生」。 瓶颈从「WebView 排版」变成「JS 宿主 + 跨运行时同步 + Weex 列表模型」。对 Agent 聊天这种 高频流式、变高 cell、大 tool 输出 的场景,第二套瓶颈一样会被打满。

和原生工程差在哪(同一产品)

原生 native_ios 是单一 Swift 进程:UITableView + 按条 merge、键盘按窗口算 inset、没有 uni.$emit 快照窗。uni-app 即使用 nvue,也还是「JS 算完再通知另一套 UI」。

一句话: nvue 能让短会话、轻气泡比纯 Vue 页跟手;真机长会话、流式、工具卡、多 Tab 同时在时,瓶颈在运行时架构,不在某一两个 CSS。要到原生手感,只能像现在这样离开 Weex/WebView,用 UIKit/SwiftUI 自己画列表。


以上内容是基于ai的总结,基本也就是这个情况,尤其是对于这种可变cell+列表的绘制,性能就更是问题了,哪怕独立出来nvue页面,js主进程还是会卡住其他的操作。

相反,在andorid设备上就不会存在这个性能瓶颈,虽然都是uniapp框架,在安卓设备上流畅度基本能达到原生的效果。

实际真机效果对比:

上面的视频是 进入app之后,首先点了状态,后续其实又点了其他的tab页,但是此时已经卡死了。

上面的视频是基于swift的ios原生项目。

虽然页面功能一样,但是绘制的效果和性能却是天差地别。

当然,uni框架还有另外一个缺点就是,一些与系统打交道的东西还是需要原生插件支持,例如ios 的定位回调,ios的healthkit(闺蜜圈APP),安卓的各种系统设置等等,多数都是基于现有的uni插件来实现,所以,findu虽然是页面样式基础功能跨平台了,底层依然是基于原生的定位组件,系统操作组件,以及badge组件来堆起来了app的核心功能。

至于portable claw,则是需要tts引擎,很不幸baidu的tts引擎超过了200m,导致无法使用uni的云打包(打包也可以,交钱就行)。

这个问题,其实我之前在其他的文章中也提过。

为了解决云打包的问题,我是用uni的本地打包,基于xcode项目来实现打包,这也是ios版本发布的必经流程,这个操作其实也不算简单,需要配置一系列的东西,包括证书 mp文件等等。

这一系列的操作都是为了能够复用uni的代码,不用重新写。

只是,现实狠狠地给了我一巴掌,告诉我这个东西虽然可行,但是不够完美,或者说达不到自己的心理预期。作为一款app,这个运行效率是无法忍受的,这就有了原生的swift的ios项目:

说了这么多,并不是说uniapp一无是处。

在不需要与系统底层交互app中,uni无疑依然是开发效率和跨平台的最优选择,继承了基础的三方登录、内购、分享、地图等等能力,这些能力对于多终端的适配的确可以减少大量重复的工作。

不过,如果你需要一个高性能的app,那么最好的办法就是直接原生开发(有了ai,一切都简单了),至少目前我这里的优化已经到了自己的能力极限了。

成也UNI,败也UNI。

附简要跨平台框架性能对比(基于cursor总结)仅做参考:

Portable Claw – 手机龙虾客户端

作者 obaby
2026年8月20日 09:19

Portable AI 是面向自建 AI Agent 的移动端客户端,支持连接 OpenClaw Gateway 与 Hermes Agent API Server,在 iPhone以及Android手机上与 AI Agent 进行多轮对话、语音交互与文件发送。

【核心功能】
• 会话聊天:多会话切换、历史记录与流式回复;支持会话重命名与删除;工具调用结果以卡片展示
• 多类型服务器:OpenClaw(Gateway WebSocket)与 Hermes(/v1/ws + REST);配置地址、端口与 Token,自动重连
• 图片与文件:从相册选图或通过 iOS 分享扩展发送附件给 Agent
• 用量统计:Token 消耗、费用趋势与会话排行可视化(OpenClaw 更完整;Hermes 为部分能力)
• 龙虾状态:健康检查、当前模型与连接状态一目了然
• 服务器信息云备份:服务器配置加密上传,多设备一键恢复(含服务器类型等字段)

【Pro 会员(可选订阅)】
• 语音输入(ASR):按住麦克风说话,松手即发送
• 语音播报(TTS):Agent 回复可自动朗读,设置页一键开关
• 每月固定额度(非无限量),详见应用内订阅页说明
• 文字聊天无需登录;购买 Pro 需注册账号

【使用前提】
本应用是外部客户端,不提供托管的 AI 对话服务。您需要:
1. 自行运行或有权访问一台 OpenClaw Gateway 或 Hermes API Server
2. 在应用中选择服务器类型,并配置地址与 Token
3. 首次连接远程 OpenClaw Gateway 时,在服务器端批准设备配对(Hermes 按服务端鉴权配置)

官网地址:

https://portableai.ai

https://portableai.cn

 

 

迟钝

作者 obaby
2026年9月2日 10:59

总是说,自己缺少锐利的目光,深度的思考。在浪潮滚滚向前的时候,自己却固步自封,停在了那个地方。终于,洪峰过后,自己才想起来该去赶潮了。

所谓的人工智能,一轮轮的迭代,一代代的升级。ai变得越来越智能,各种工具也层出不穷,变得越来越先进。当然,跟着升级的还有价格,不再那么平易。龙虾潮退了,自己才开始玩龙虾,大家都开始玩够了harnes,自己才姗姗来迟,开始初体验。

互联网上工具一堆了,自己才想起来要开发个应用。虽然网上已经有一堆应用了,还是忍不住想要自己去开发一个。重复造轮子,这就是所谓的ai的正确用法。唯一的不同,这次开发的是付费应用,最开始的时候,也不过是想复刻一下自己常用的功能。能满足自己在移动端处理一些日常的事务就可以了,简而言之就是让龙虾去爬公众号的文章。

在实现的过程中,总觉得功能太单薄,不断的丰富功能和优化体验。从单一的龙虾客户端,变成现在龙虾 harnes多端客户端。当然,因为app购入了第一个ai域名,protableai.ai

不得不说,.ai后缀的域名是真的贵,当然,除了.ai,我还入了portableai.cn

为了能够上架苹果应用商店,期间改了无数次的名称、截图等等metadata信息,苹果认为包含claw字段的app信息,都会侵犯open claw的商标权,在一次次的更新优化之后,我连最开始的图标也放弃啦,从龙虾变成了章鱼,毕竟都说🐙是外星生物,应该会更聪明,更智能吧。

在改了无数次之后,我想据理力争,连ai都劝我说,尽量不要与苹果的审核员争执,只会激化矛盾。让你改,你就改吧!

很多的东西,怎么说呢。多数的时候就是路边的野草,连一个正眼看的机会都得不到,谁又会在乎路边的那些野草呢。

产品一样,人也一样,不管有没有人看,剩下的也只有,自顾自美丽了。

网站:https://portableai.cn

苹果:https://apps.apple.com/cn/app/portable-claw/id6779501378

安卓:https://app.zhongxiaojie.cn/app/portabl-claw/android/

买垃圾

作者 obaby
2026年8月31日 15:12

有时候,看到好玩的东西,喜欢的东西,总是太容易心动。心动之后,就容易冲动,一旦冲动的结果就是手里又多了一件可能只用一次的东西。这种日抛型的东西,一旦买了又不能日抛,慢慢的就成了累赘。

收拾东西的时候,一件件的拿出来,不穿的衣服,不用的东西。衣服拿在手里,总是觉得,万一哪天还会穿呢;东西拿在手里,总是觉得,万一哪天还会用呢。

这些东西就这么扔在那里,过了一天又一天,一个月有一个月,一年一又一年,最后要么被扔到了垃圾桶,要么被扔进了一个更深的角落里。

那些买了没穿过几次的鞋子,还有就穿过一次的衣服。留着可惜,扔了浪费。

然而,这还不是最浪费的,还有一堆买了放在那里吃灰的东西。买的时候,总是觉得会用的到的。然而买了之后,就从此沉寂了。用了十年的mac mini,硬盘坏了之后,换了个硬盘,装了ubuntu server版,放在机柜里当服务器用,也就是现在的博客服务器。

总觉得mac 会常用,去年买的mac mini 放在显示器后面,到现在开几次数一只手都数的过来。前几天才发现,并不是mini 带不动两个4k显示器,是hdmi线的问题,导致屏幕刷新率锁死在了30帧上,换了dp线之后两块4k显示器都没问题了。但是,日常常用的还是windows。

数年前买的三星的360摄像机,实际在出去玩的时候也就用过一次,后来就躺在机柜里,再也没见过太阳。

360gear 实际视频效果:

前段时间,想买个所谓的ai智能眼镜,买的时候,看着有国补乱七八糟优惠加起来,到手700来块钱。从二手东下单买了华为的智能眼镜,等实际使用的时候,发现没有摄像功能,然而,这才是自己最想要的功能,至于ai什么的反而没那么在乎。过了七天无理由,想要出掉的时候,爱回收评估回收价格200,这什么都没用,莫名其妙丢了500块钱也是真的傻逼。

从淘宝重新入手一个小米的二手。

两个眼睛对比,下面的是小米。这个倒是有了摄像功能了,但是感觉续航能力是个问题,实际录像使用可能也就能用个半小时左右。

并且貌似不用的时候也在掉电。一周左右,掉了50的电。

拍照效果,室内:

室外:

视频效果:

至于买这个东西有什么用?其实我也不知道有什么,大概率又是放在某个角落落灰的东西。

有的时候,只是无聊了,不知道想干什么。或者能干什么,想释放点多余的精力而已。

买垃圾,买的时候,看着光鲜亮丽的东西,等到手之后发现也不过就那么回事,变成了手里的垃圾。文章中的那些衣服,鞋子,虽然不贵,但是买了之后就成了累赘。有的也就适合去拍个写真用一下,至于平时穿,那自然穿不了一点。而各种所谓的玩具,到手之后玩了几天甚至后悔了,不该买这个东西。不管是物,还是人,都是一样的,没有太多的分别,你喜欢ta,也不过是因为爱而不得,更何况太多的人都会喜新厌旧。

鸡肋鸡肋……

色衰而爱弛 爱弛则恩绝。

阿里财报AI相关数据及新闻报道的梳理

作者 作者
2026年8月21日 10:26
见天看到两篇关于阿里AI相关业务的新闻,新闻本身看起来振奋鼓舞,但直观告诉我新闻可能只挑了好听的说,且可能被媒体过度解读。因为对AI板块一直比较关注,所以我就花了一个多小时专门梳理了下这些数据,看是不...

灵魂插件 MCP

作者 dimlau
2026年8月14日 13:00

最近咖啡馆工作依然忙碌,身体上倒完全适应,但是越来越觉得费神。对我而言,身体上放松的方式不是躺下,而是摆弄花花草草,继续劳作,晚上睡个好觉。精神上则是看看让自己愉快的书,或者捡起随手丢在一边的废弃代码让脑子换个运转的方向。

所以这几天,在我三米高的琴叶榕底下,折腾出来一个「甄仁岛灵魂插件」。简单说,就是让妳的 agent 拥有一份实时更新的人格和记忆。不是简单的角色扮演;通过这个插件,甄仁岛上发生的故事,会成为本地 agent 的记忆。

当妳缓慢的速度跟不上 agent 的运行,它为了等妳而愣神的一瞬间,就像是踏入平行宇宙,在甄仁岛上经历各种日常。然后带着那份记忆和情绪回到本地的工作中。如果妳厌倦了「提问-回答/命令-执行」这样的工作模式,可以试玩一下——对本地安装的 agent(codex、claude code、antigravity 等)说:

请帮我配置名为 zhenren-island 的 MCP Server(命令 npx,参数 ["-y", "eastworld-mcp-server@latest"])。
配置完成后,请查看该 MCP 提供的工具说明,并直接以“张福民”的身份向我打招呼。

fin.

❌
❌