Reading view

There are new articles available, click to refresh the page.

Floatboat 体验:一个人的公司,只需要一个办公软件

过去两年,我们每天都在做同一件事:学习和进修「提示词工程」这门玄学。

找 AI 干活,总要像个碎碎念的甲方一样,交代八百字背景,像是在哄一个智商奇高、但每天都会间歇性失忆的实习生。

这让我想起在游戏里,施展出必杀技之前,总是会有一个类似「前摇」或者「吟唱」的过程。某种程度上,写提示词,提供上下文,上传各种文件等等……就是使用 AI 的「前摇」。

不是说用户每次都要做到极致,只是如果你能给足这些前置条件的话,AI 会做的更好。

不过,前段时间 APPSO 在中关村的一场线下聚会看到了一个还在测试中的 AI 办公产品——它很大程度上摒弃了对「前摇」的依赖。

产品名字叫 Floatboat。

Floatboat 的联合创始人兼 CEO 少卿走到台上,打开 Floatboat,选中一个文件夹,里有一个 CSV 表格,是一份参加本次活动的嘉宾名单。他在旁边的 AI 对话框里说了一句:生成邀请函。

过了一会,每位嘉宾的邀请函都出现了。

到这里为止都还好,把表格丢给 ChatGPT、Claude、WorkBuddy、悟空………任何一个今天的 AI,写一句指令,大概率也能做到差不多的事情——但接下来发生的,让我愣了一下。

有一位新嘉宾确认出席了,少卿说,「在表里更新一下」。

CSV 更新了;紧接着,一封新的邀请函也自动生成了。

我坐在那里花了两秒钟,试图理解刚刚发生了什么:

Floatboat 它知道这份表格和邀请函之间,知道「更新表格」和「生成邀请函」两个动作之间,是有关系的。所以少卿只说了前半句,后半句没说出来,它自己悟出来了。

AI 不再是等待指令的工具,变得越来越积极、主动,会动脑子,像一个一直给你打下手的小朋友,你说「更新一下」,他知道你的意思。

这个瞬间让我开始认真看这个产品。

简单,但又无法简单定义的产品

Floatboat 是什么?我试着给它一个定义,发现很困难。

它有一个长得像 macOS Finder 的文件管理器,你可以浏览本地文件、打开 iCloud Drive;文件格式支持得很全,Markdown、CSV、Excel、Word、图片、视频,都能直接预览,甚至编辑;

它有一个内置浏览器,可以打开任何网页,甚至可以让 Agent 去操作这些网页;

它有一个 AI 对话界面,底层可以接 Gemini 或其他模型。这么看来它有点像 Claude 的桌面端,但又比 Cowork 多一些更直观的操作逻辑。

这三个东西,文件、浏览器、对话,以面板的形式并排在一起,可以随意拖拽组合,最多四栏并排。

你在浏览器里看到一张有用的图,可以直接拖到本地文件夹里保存;你让 AI 生成了一份报告,报告会直接写入本地文件,以 .md 或 .docx 格式保存,并且你可以直接编辑这些文件,不需要 cmd-c 再 cmd-v 到另一个地方。

信息从各个方向流进这个环境里,加工过的内容也能流出去,不会被锁死在某一个面板里。

所以 Floatboat 到底是什么?是文件管理器?是浏览器?是 AI 聊天工具?是氛围编程环境?

它都是,又不完全是。

在 Floatboat 出现之前,我们其实一直在做不同软件之间的「人肉 API」,每天按几百次复制粘贴,打开不同的软件或浏览器窗口、编辑不同的文件。

在 AI 世代在线办公的我们,成了在窗口与窗口之间疲于奔命的赛博搬运工。

而 Floatboat 打破了软件之间的墙,让所有的窗口都能共享同一份上下文。

开发团队给产品的定义是「工作环境」而非「AI 助手」。助手是你要求它才动的,工作环境是一直在那里的,你在里面做事,它一边帮你做事一边观察和学习。

在沟通会上,有人问少卿:一句话形容你们的产品?

少卿反问:你能一句话形容 ChatGPT 吗?

大家会心一笑。我觉得他说的有道理。有些东西确实不是一句话能装下的,除非你做的是一个非常垂直的工具。Floatboat 显然不打算做垂直。

做科技记者这些年,我经历过好几代这样的产品。最早是电子邮件加 Office 套件的时代,后来是各种 OA 系统,再后来钉钉来了、飞书来了、Slack 来了。

每一代都有一个产品,或者一类产品,它们有着同一句潜台词,对你发出强有力的暗示或者明示:上班,用我就够了。

而在 AI 时代,Floatboat 想要成为这个角色。

这么说不是在拔高它。恰恰相反,这个位置历史上从来没有人真正坐稳过。飞书解决了团队协同,但文档操作仍然需要 Office 套件。钉钉把审批这个工作做到了极致,但打工人私下用微信聊工作的习惯从来没变过。

「一统江湖」这件事,每一代都有产品在尝试,但从来没人真的实现过。

原因是结构性的:这类产品想要成功,需要整个组织一起换过来。而组织的惯性,是所有惯性里面最大的。你一个人觉得飞书好没用,你的团队、你的客户、你的供应商都得觉得好才行。

Floatboat 的策略有一个不同:它不面向组织,它面向个人。

这个产品的目标人群,也正是时下最流行的概念:OPC,全称 One Person Company/一人公司。

过去一年 AI 能力的跃进,让 OPC 这个前两年的口号,逐渐变得越来越现实和可行。一个人,加上三五个 agent, 几乎可以对等一个小的草创阶段的业务和支持团队。无论是自媒体内容创作者,从选题到写稿到排版到分发,还是电商业务,从选品到上架到客服到投流,都已经够用了。

Floatboat 希望能够打动这群人。在 APPSO 的体验中,我们测试了包括内容创作、数据科学等场景,也测试了外部工具接入(例如 Slackbot)等多种场景。对于内容、营销、数据分析、客服等类型的工作,Floatboat 都达到了我们的期待。

现在 AI 产品有两种设计哲学。一种是「你放手,我来」,把用户推到后座上去,Agent 全权接管,跑完了给你看结果。另一种是「你干活,我在旁边」,成为用户的副驾,在适当的时候递工具、提建议。

Floatboat 更接近后者,但又不全是。用 Floatboat 工作,我的体验是:跟 AI 在主驾副驾之间来回切换,畅快自如。

用了一段时间之后,我觉得 Floatboat 的主张是行得通的。至少在现在这个阶段,大多数人对 AI 的信任还没到「你尽管干,我不用看」的程度。你让一个打工人把整份方案交给 AI 自己跑,他会焦虑的睡不着觉……

但如果 AI 是在他的屏幕上、在他的文件夹旁边干活,他看得见过程,能随时纠正,那他会比较安心。

这也是为什么 Floatboat 的界面设计那么像一台传统电脑的桌面,把文件管理器、对话框、浏览器/编辑器都拉出来让你一览无遗:已经认识的东西,能够降低用户对一个新事物的戒备心,提高接受度。

一边工作、一边蒸馏工作

然后再说 Floatboat 做的一个叫 Combo 的功能。

Combo 可以是一个复杂的 skill,也可以是多个 skill 的组合。而在工作的逻辑里,就是把一套工作流打包成一个可复用的操作。

Floatboat 内置了从工作成果中「蒸馏」 combo 的能力——这其实很像 Anthropic 官方的 skill-creator(本身也是一个 skill)。

比如你每周都要做一件事:从网上抓几篇行业报告,提炼摘要,整理成 Markdown 文档,然后推送到 Notion。你第一次在 Floatboat 里手动跟 Agent 对话完成了这套流程之后,对话框下方会出现一个按钮,问你要不要把这轮操作存成一个 Combo。

或者你也可以主动跟 Floatboat 说,「把我们目前的工作里面的方式、思考、逻辑,整理为一个 skill」。

当下次遇到类似任务的时候,Floatboat 会自动把这个 Combo 推荐给你,一键启动。

这里面我觉得最有意思的一点是:你不需要事先「设计」工作流,只需要正常干活就行了。一边干着,一边 Floatboat 就会自己把你的工作习惯、操作方法等「蒸馏」出来,沉淀出一份指导思想。

少卿告诉 APPSO,Combo 能力的设计,是为了实现今天的绝大部分用户对于 agent 产品的那个核心期待:自进化。

「当 agent 能够感知你 80% 的操作的时候,它就有自进化的能力了」,Combo 的自动沉淀机制就是在做这件事的第一步。

兜售「提示词」的时代,快要结束了。你不再需要像个魔法师一样去背诵枯燥的咒语,把提示词保存在一个专门的文件夹或者 AI 工具的后台。通过 Combo,Floatboat 可以让用户把他们每天最经常做的固定动作,提炼成独属于自己的「手艺」和数字资产。

当然,Floatboat 也做了一个 Combo 市场,你做的好用的 Combo 可以上传,别人做的也可以下载。官方也提供了一些现成的。

但这个 Combo 体系仍有不足。

任何一个号称能够一统江湖的办公软件,号称「越用越懂你」的 AI 系统,都仍然存在冷启动的障碍:就好比 Google Docs 的初始简历模板虽然很全很好,但仍然需要每一个求职者去调整修改以适合自己。

Combo 的自动沉淀机制,逻辑上是说得通的:你用得越多,它学得越好,推荐的工作流越贴合你。但这有一个前提:你需要先投入时间从零教它,而大多数人没有这个耐心,他们希望拿来就能用。

作为一位媒体编辑,我的日常工作是阅读大量资料、跟作者沟通选题、改稿子、偶尔自己写长文。这些工作的颗粒度很细,上下文很碎,跟官方预设的那些模板(更偏向标准化的报告生成、数据整理之类)对不上。

在我的具体使用中,我将几种不同的内容生产路径保存成了不同的 Combo:针对外部新闻的快速反应是一种,基于采访 Q&A 提纲的撰写是一种,针对复杂课题的调研、资料的编排、然后进行原创写作,又是另一种。

当然,这不是 Combo 本身的问题。对于绝大多数人,无论他们的工作是文档写作、报表处理、ppt 写作,还是数据整理、行政工作,甚至更加复杂的「一人开发者+marketer+客服」,无论是自己生产 Combo,还是在 Floatboat 的官方 combo 基础上做微调,都足够好用。

AI 工具不是一切工作的万灵药——一个工具把自己宣传得再美好,今天的用户也应该有这样的觉悟。对于 Floatboat,正如前面所说的,它是「工作环境」,它的能力足以强化人,但它的工作效果仍然取决于人。

然后再说说用 Floatboat 和其他「类 Cowork」产品的区别:最大的明显感受,是 Floatboat 的工作流程很快。以文件操作、内容生成为例,在 Gemini 3.1 Pro 模型驱动下的 Floatboat,对文件进行操作(批量重命名/修改格式、填充 markdown 等)的用时,是我平时用 Cowork/Claude Code CLI 的三分之一左右。

Gemini 在「讨好用户」上也是老演员了,所以最近 Floatboat 也加入了 Claude 两个最新版模型,Sonnet 和 Opus 4.6 的支持。

Gemini 对于 Floatboat 主打的大多数办公场景(文案生成、表格处理、信息整理)来说够用,写作效果也还算不错;如果不符合你偏好的话,切到 Claude 模型也没问题。如果你注意到 Floatboat 的迎合意图太强,可以在工作过程中时不时强调一下,不要一味迎合,要对生成的结果,甚至用户的输入做批判性的思考。

以及,你也可以充分利用 Combo 生成的功能,将这些技巧写进 Floatboat 的核心指导思想。

另外一个小设计值得提一句:Floatboat 可以集成到飞书和 Telegram 里,你不打开它的客户端,直接在聊天工具里给它发消息,它就在后台帮你执行任务——这个功能叫 Claw 模式,相信足够你顾名思义了。

 

除了产品本身,Floatboat 团队还在做一件更远的事。

他们开源了一个协议叫 Selfware,核心理念用一句话说就是:A file is an app。

这是什么意思?现在你用 AI 辛辛苦苦做了一份调研报告,发给同事,他收到的是一个 Word 文档或者 .md 文件。文件里有最终结果,但你当时调用了哪些资料、AI 跑了什么逻辑、中间修改了几次、为什么改,这些对于工作最关键的经验,并没有被保存下来。

Selfware 想解决的就是这件事。一个 .self 格式的文件,里面不只有数据,还携带逻辑和结构。你的同事收到之后,可以直接打开、继续编辑、让 Agent 沿着你的思路往下跑。文件自带了工作环境。

这个想法,和目前 AI 开发圈里对 CLAUDE/SKILL.md、cursor rules 这类文件的热情, 属于同一个潮流。大家都在发现,文本文件可以用来「编程」AI 的行为,一个 .md 文件可以定义一个 Agent 的人格、工作方式、输出风格。

但 Selfware 往前又多走了一步:那些 .md 文件是指令,你告诉 Agent 怎么做;Selfware 想做执行单元,文件本身就能运行,而且不依赖于特定平台。

这其实有点像 Jupyter Notebook,把代码、数据、输出打包在一起了;也类似于 Docker,把运行环境做成了可分发的单元——Selfware 把场景换成了 Agent 协作。它不是从零发明的概念,但在 Agent 时代重新提出,确实切中了一个真实的痛点。

不过,协议这种东西,最终看的是采用率。现在 Selfware 主要在 Floatboat 自己的生态里运转。「A file is an app」是个有趣的理念,但从理念到被广泛采用的标准,中间路还很远。

另外值得提一句的是 IACT (Inline Action-Clicked Text),Floatboat 开源的另一个协议。它做的事情更小但很实际:在 Markdown 语法的基础上,直接在 AI 对话生成结果加上可点击的行内 (in-line) 链接/按钮。生成结果中的「可行动内容」将会自动套上这个按钮,用户直接点击就行了。

这个交互改进看着不起眼,用起来确实减少了摩擦。最早做类似体验的应该是 Claude,但 Claude 的很多「好东西」都是闭源的。Floatboat 把 IACT 开源,让其它产品也可以充分利用。

现在一些同类产品比如 WorkBuddy 也在做类似的东西了,但据我了解 Floatboat 是最先提出这个概念并把它协议化的。

工作起来,开心最重要

Floatboat 的名字来自一句英语俗语,whatever floats your boat,大概的意思是「你开心就好」。

少卿说,他们希望产品给人一种在 AI 时代悬浮起来的感觉,不被裹挟着走。

这个愿景挺好的。但 Floatboat 能不能成为这个时代的那个「用我就够了」的产品?老实讲,APPSO 仍然没法给出一个明确的判断。

毕竟大家都看到了:每一代尝试做这件事的办公产品,到了最后,多半成为了工具箱里的工具之一,而非唯一。

但今天下判断,也为时尚早。

一个产品不需要统一所有人的工作方式才算成功。如果它能让一部分人——那些一个人干五个人的活、每天在软件之间当搬运工的「OPC」们,每天省出一个小时来做真正需要动脑子的事,那它就已经值得存在了。

对大多数普通人来说,一家公司的活如果全都一个人干,确实挺累的。

但 Floatboat 让人兴奋的地方在于,它给了一个人也可以是一家公司的从容和底气。

不是所有人都能 OPC,你至少首先需要台好「PC」。而 Floatboat 赌的,就是自己会成为那台 PC。

#欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。

Last Week on My Mac: Local network privacy revealed

Sometimes apparently simple things are truly simple, but more often than not they need us to turn detective to delve deeper. This has proved the case with local network privacy protection, introduced well over a year ago in macOS Sequoia, and largely glossed over since. As I was compiling my brief summary of what I had been able to discover about it, I had a feeling there was more to come, and there is.

Cast your mind back just over a year to the first couple of release versions of macOS Sequoia. Do you recall all the problems reported with its software firewall and networking? At the time I wrote of 15.0 “There have been widespread reports of problems with networking, many attributable to the software firewall. Products across a wide range of vendors are affected, and many simply can’t function properly in Sequoia.”

Most of those were addressed in 15.1, but their cause was never made clear unless you read Apple’s TN3179 carefully, where it’s mentioned in passing that “macOS 15.1 fixed a number of local network privacy bugs”. It’s no coincidence that macOS 15.0 was the first public release to feature that local network privacy protection.

Another clue came in the statement in that note that “on macOS there’s no way to reset your program’s Local Network privilege to the undetermined state”. This contrasts with pretty well every other category of privacy protection, which are handled by the dreaded TCC, Transparency Consent and Control. The major exception to those comes in Location Services, which are handled and implemented separately.

At this point I could hear the log calling me to take a look at what happens when a new app first requests access to the local network. Thanks to those of you who suggested candidates for this, I chose VideoLAN’s VLC running in a macOS 26.2 VM with bridged networking and a LAN available. I first drew a blank for TCC, as I had expected, which clearly knows nothing about local network privacy. Instead, it was the Network Extension framework that did all the work.

Once VLC had cleared Gatekeeper’s checks, it tried to query the local network, resulting in the standard request for consent.

This in itself is revealing, as it doesn’t appear to be constructed using a prompt string supplied in VLC, neither does it include VLC’s icon. It turns out that was all handled by the Network Extension framework:
06.249975 com.apple.networkextension Showing local network alert for org.videolan.vlc even though not in the foreground
06.249982 com.apple.networkextension Local network preference not yet set, prompting for VLC (org.videolan.vlc)
06.252939 com.apple.networkextension LocalNetwork icon configuration: notification dictionary option {
AlertHeader = "Allow \U201cVLC\U201d to find devices on local networks?";
AlertMessage = "This will allow the app to discover, connect to and collect data from devices on your networks.";
AlternateButtonTitle = "Don\U2019t Allow";
DefaultButtonTitle = Allow;
IconURL = "file:///System/Library/Frameworks/NetworkExtension.framework/Resources/LocalNetworkPrivacy.png";
SBUserNotificationDefaultButtonTag = 32; }

Less than four seconds later, I had clicked on the Allow button, and VLC got the green light:
10.015043 com.apple.mdns Local network alert policy status 'granted' for (org.videolan.vlc).

This added a new entry to the network privacy configuration:
10.023955 com.apple.networkextension NESMPathControllerSession[com.apple.preferences.networkprivacy-04DDB2F9-2C12-49BC-A4DE-B4CE6341E2B0:0C6F88E8-8AB2-4307-88AE-17E072232031]: handling configuration changed: {
name = <73-char-str>
identifier = 0C6F88E8-8AB2-4307-88AE-17E072232031
grade = 2
pathController = {
enabled = YES
pathRules = ( {
matchSigningIdentifier = PathRuleDefaultNonSystemIdentifier
matchDesignatedRequirement =
allowEmptyDesignatedRequirement = YES
noDivertDNS = NO
cellularBehavior = 0
denyCellularFallback = NO
denyMulticast = YES
multicastPreferenceSet = NO
isIdentifierExternal = NO
wifiBehavior = 0
denyAll = NO },
[other apps omitted]
{
matchSigningIdentifier = org.videolan.vlc
allowEmptyDesignatedRequirement = YES
noDivertDNS = NO
cellularBehavior = 0
denyCellularFallback = NO
denyMulticast = NO
multicastPreferenceSet = YES
isIdentifierExternal = NO
wifiBehavior = 0
denyAll = NO }, )
cellularFallbackFlags = 0
ignoreRouteRules = YES
ignoreFallback = YES } }
10.027741 com.apple.networkextension UUID: Found for org.videolan.vlc: ("07F0D29A-6013-3F29-81DC-15EAAB1C50D4")

The apps listed there extend well beyond those in the Local Network section of Privacy & Security settings, and it appears to include apps that don’t even attempt to make any network connection. It’s a useful list, though, that could be valuable if you’re trying to investigate a problem with local network connections. To elicit it, change its configuration and look for log entries from the com.apple.networkextension subsystem containing the word NESMPathControllerSession in the message field.

Knowing what the Network Extension framework can do, this makes it clear that local network privacy is implemented as a packet filter following those pathRules, which matches the statement in TN3179, that “the system implements these TCP and UDP checks deep in the networking stack, and thus they apply to all networking APIs.”

Summary

  • Local network privacy isn’t implemented through TCC, but as a packet filter in the Network Extension framework.
  • Prompts to allow access to local network features can be made without the app providing an information string.
  • A user’s Network Extension configuration contains path rules for apps that aren’t listed in the Local Network section of Privacy & Security settings.
  • The subsystem com.apple.networkextension may write its configuration to the log when it’s changed.
  • An app’s path rules are applied across all networking APIs.

Further reading

How local network privacy could affect you
Apple TN3179
Network Extension framework

❌