8 月,我在联创光电上亏了不少。

我先不讲为什么买,也不装作事后什么都懂。亏损发生以后,我真正想解决的不是“下一只股票买什么”,而是能不能把当时的判断、公开资料和后来的结果留在一起,认真复盘一次。

于是我打开微信,给 Codex 发了一条消息:

/chat 股票 MCP 安装

这不是微信里的普通 AI 问答。消息发出去以后,真正开始工作的,是我电脑上的 Codex。

结论
我没有做一个自动炒股机器人。我做的是一个 Codex 的微信工作台:手机负责发起、调整和审批,电脑负责读取资料、执行任务和交付结果。但最重要的一点是,真正决定这个 Agent 能做什么、最后交出什么结果的,仍然是模型。

我在微信里新建“股票 MCP 安装”会话

我在微信里新建“股票 MCP 安装”会话

*本文微信界面均为本人真实操作截图;本机路径和一次性授权令牌已做脱敏。*

上一篇的工作台,还留在电脑上

前一篇《所有人的 Codex 都一样,为什么我的一打开就是工作台?》里,我讲了怎样把 Codex 从一个空白聊天框变成个人工作台。

那套工作台有五层:工作上下文、信息入口、执行规则、任务空间和工作节奏。

它能记住一个项目要解决什么问题,知道文件在哪里,按照约定的流程推进,也知道哪些动作必须停下来等我确认。

但文章写完以后,我发现还有一个很现实的问题:工作台搭在电脑上,人却不可能一直坐在电脑前。

出门、吃饭、开会,甚至只是躺在沙发上想起一件事,我都希望先把任务交出去。Codex 可以在电脑上继续读项目、查资料、跑命令,我只需要在手机上看进度、补充要求,以及处理真正需要我决定的事情。

这就是 toms-rover 出现的原因。

上一篇解决的是“怎样让 Codex 进入我的工作现场”。这一篇解决的是“我离开电脑以后,怎样继续使用这套工作台”。

我做的不是微信机器人

toms-rover 是一个运行在个人 Mac 上的 Rust 网关。

它一边连接微信,一边驱动本机的 Codex。收到微信消息以后,它会找到对应的 Codex 会话,在指定项目里启动任务,再把进度、授权请求和最终回答送回微信。

链路大致是这样:

我在微信里发消息
     ↓
toms-rover
     ↓
Codex

Codex 微信工作台:手机控制,电脑执行

Codex 微信工作台:手机控制,电脑执行

*微信是入口,toms-rover 是通道,Codex 模型才是 Agent 能力与产出的核心。*

这条链路是直接的:微信消息经过我自己的 toms-rover,就交给 Codex。中间不用 OpenClaw,也不用 Hermes 来中转。

腾讯开源的 OpenClaw 微信插件公开了后端 API 协议和实现,我在 Rust 里直接实现了消息收发、扫码登录和长轮询,再把后端接到 Codex。OpenClaw 和 Hermes 都不在实际运行链路里。

OpenAI 其实也有官方的 Codex Remote,支持从 ChatGPT 手机端启动、引导、审批和验收连接电脑上的任务。但我在国内的实际环境里没有装成功,也没有跑通。官方文档只说明它的可用性取决于功能开放进度和工作区设置,所以这里我只记录自己的实测,不把它扩大成地区结论。

toms-rover 走的是另一条路:把入口换成我每天都在使用的微信,再加入自己的会话和权限规则。

工作台的关键,是可以继续同一个任务

如果微信里每发一句话,都变成一次全新的问答,那还称不上工作台。

我希望它至少能做到五件事。

第一,保留会话。股票研究、公众号写作、产品开发可以是三条独立任务,各自保留上下文。

第二,绑定项目。聊天任务可以只读,项目任务只能在指定目录里工作,不能因为人在手机上就把整个电脑都交出去。

第三,选择执行方式。不同会话可以选择模型、推理档位和速度,不需要所有任务都用同一套配置。

第四,交还结果。Codex 不只是发一段答案,也可以在项目里生成文件,再由微信工作台把文件送回来。

第五,控制授权方式。每条会话可以独立选择:遇到风险操作时回来问我,交给 Codex 的风险审查器判断,或者全部不放行。

在微信里查看会话并选择 Codex 模型

在微信里查看会话并选择 Codex 模型

所以我更愿意把它叫作“Codex 的微信工作台”,而不是“微信版聊天机器人”。

聊天机器人回答当前这句话。工作台知道这句话属于哪个项目,接着哪一段历史,能用哪些工具,最后应该把结果放到哪里。

最重要的一点:模型决定 Agent 的能力和产出

现在谈 Agent,大家很容易先谈框架、记忆、MCP、工具调用和各种入口。

这些当然重要。但做完 toms-rover 以后,我越来越确定一件事:模型决定了 Agent 的能力上限,也直接决定了最后的产出质量。

同样一个微信入口,同样一套工具和权限,同样一份项目资料,换一个模型,任务拆解、工具选择、错误恢复、证据核对和最终表达都可能完全不同。

如果模型本身不会判断,再多的工作流也只是把错误执行得更顺;如果模型缺少复杂任务能力,接入几十个工具也不会自然变成一个可靠的 Agent。

所以 /model 对我来说不是一个装饰性功能,也不只是速度和成本的选择。它是在给这套工作台选择真正负责思考、判断和执行的大脑。

微信、toms-rover、MCP、项目规则和权限控制,解决的是“能力怎样进入真实工作”。模型解决的是“这个 Agent 到底有没有能力完成工作”。

结论
模型决定 Agent 的能力和产出;工作台决定这种能力怎样可控地落到具体任务上。

当然,强模型也不等于结论一定正确。尤其是股票研究,模型越会表达,越需要检查它有没有真实数据、可靠来源和相反证据。模型决定能力上限,证据和人的判断决定这份产出能不能被相信。

我用联创光电跑了一次真实场景

这次我没有拿一个虚构项目做演示。

我直接在微信里新建“股票 MCP 安装”会话,告诉 Codex,我要研究的是 A 股,数据想从 TuShare 入手。

Codex 先给出两条可能的接入路径。我又把模型切到自己需要的档位,然后进入一个独立项目会话继续处理。

接下来出现了我最想验证的情况:任务需要访问网络。

默认情况下,这个项目会话不会随意联网。Codex 尝试获取 TuShare 页面时失败了,随后把需要执行的命令、所在项目和授权选项发回微信。

我可以选择:

  • 允许这一次;
  • 本次会话允许同类操作;
  • 拒绝,但让 Codex 继续处理;
  • 拒绝并停止本轮任务。

我先批准一次。后续确认这是同一条调查线后,再批准本次会话继续。

Codex 在微信里请求联网授权

Codex 在微信里请求联网授权

这个过程看起来比“全自动”麻烦一点,但我反而认为这是 toms-rover 最重要的部分。

人在电脑前,弹出一个权限提示很容易处理。人在外面,如果授权请求只停在桌面上,任务就会一直卡住;如果为了省事把权限全部放开,手机远程控制本机的风险又会迅速放大。

所以真正有用的移动工作台,不只是能发命令,还必须把需要人承担责任的决定送回来。

这两天,我又把风险审查器接进来了。

现在,每条会话都可以通过 /auto 选择三种授权策略:

  • 问我:继续把授权请求发回微信;
  • 交给风险审查器:由 Codex 的风险审查器判断常规操作,不再逐条打断我;
  • 全部不放行:需要额外授权的操作一律拒绝。

风险审查器接入 Codex 微信工作台

风险审查器接入 Codex 微信工作台

这不是把安全边界撤掉。开启风险审查以后,项目仍然只能在自己的目录里工作;联网仍然要通过 /net 单独开启;风险审查器只是在既定边界里承担一部分重复判断。

而且,风险审查器本身也再次证明了前面的观点:模型能力决定 Agent 的判断能力。 如果模型不能理解命令的真实影响,“自动审查”只会变成另一个形式的自动审批。模型负责判断,沙箱、联网开关和拒绝策略负责兜底。

这次股票调查,最后交付了什么

获得授权后,Codex 开始继续调查联创光电。

它给出的计划不是只看当天涨跌,而是先确认证券身份和最新交易日,再检查复权收益、回撤、量价、估值分位以及相对大盘的强弱。

联创光电调查任务已从微信启动

联创光电调查任务已从微信启动

后来,这条任务继续跑了下去。界面显示,4 个专题 Agent 和 1 个独立审核 Agent 都已完成,并生成了一份《联创光电综合风险与行情报告》。我在微信里说“把报告发给我”,文件随后回到了聊天窗口。

联创光电研究报告已通过微信交付

联创光电研究报告已通过微信交付

但我仍要把边界写清楚:截图可以证明一轮研究已经完成、文件已经交付,不能证明报告里的每一项判断天然正确。涉及监管立案、资金往来、股权质押、财务风险等高风险事实,仍然必须回到公司公告、交易所和监管文件逐条核验,更不能直接变成买卖指令。

对我来说,这次验证最有价值的结果不是 Codex 告诉我股票会涨还是会跌,而是一个足够强的模型可以接住这个具体问题,在工作台里留下研究过程;遇到权限边界时,它停下来问我;任务完成后,它把报告文件交回来;我还可以继续追问依据,而不是只记住一句结论。

AI 可以研究股票,但不能替我承担亏损

经历亏损以后,人很容易再找一个更聪明的工具,想把亏掉的钱赚回来。AI 尤其容易放大这种期待:它能把数据、公告和观点组织得很完整,但表达完整,不等于预测准确。

我更愿意让 Codex 做这些事:

  • 整理公开公告和数据来源;
  • 检查我当初的买入理由是否有事实支撑;
  • 计算持有期间的收益、回撤和相对表现;
  • 把交易前的判断与交易后的结果放在一起;
  • 明确列出缺失数据、相反证据和仍未确认的假设。

我不会让它做这些事:

  • 连接券商账户自动下单;
  • 根据一段生成内容决定仓位;
  • 把历史拟合当成未来保证;
  • 用“AI 算过了”替代自己的责任。

注意
联创光电只是在这篇文章中出现的个人亏损与复盘案例,不构成任何投资建议。AI 可以帮助整理证据,但不能替任何人承担投资损失。

现在,这些指令已经可以日常使用

到这一轮,会话、运行方式、文件和其他控制已经收拢成一张指令表。

toms-rover 可用指令

toms-rover 可用指令

对我来说,最重要的仍然是三个命令:/model 决定让哪个模型负责这条任务,/net 决定它能不能联网,/auto 决定越过常规边界时由谁做判断。

直接发送普通文字,就是给 Codex 派活。其他指令不是为了把微信变成命令行,而是让我能在手机上看得见、管得住这条任务。

微信工作台也有明显限制

现在的微信通道仍然很朴素:以纯文本为主,不能像钉钉 AI 卡片那样持续改写同一张卡片;人工审批仍依靠 /approve 这样的文本指令;长任务中间也可能安静一段时间。

它不是把整个 Mac 暴露给微信。每个项目会话只能写自己的目录,聊天会话保持只读;联网默认关闭;用户必须进入白名单;超出策略或等待超时的操作仍会拒绝。

这些限制有时会让任务慢一点,但对于一个可以远程操作本机项目的入口,我宁愿它先保守。

风险审查和文件回传已经跑通,其他指令也比最初更短、更明确。它现在进入了“怎样更好用”的收尾;再打磨两天交互和提示,我估计就能接近自己心里那个完整版本。

结论
移动工作台的价值不是让我什么都能远程执行,而是让我在离开电脑以后,仍能在明确边界内继续一条真实任务。

最后

这次因为联创光电的亏损,我先做了另一件事:给工作台增加一个自己每天都能打开的入口。

现在,一条微信可以新建或恢复 Codex 会话,可以选择模型,可以让电脑开始查资料、读项目和生成结果,也可以在真正越过边界之前回来问我,或者在沙箱范围内交给风险审查器判断。

但入口变成微信以后,最核心的东西没有变:Agent 最终能走多远、交出什么质量的结果,首先取决于背后的模型。toms-rover 没有创造一种新的智能,它只是让 Codex 的模型能力在我离开电脑以后仍然可以被调用、被约束,也被我继续接手。

它没有帮我把亏损赚回来。

但它让我开始把一次模糊的懊恼,变成一条有记录、有证据、有权限边界的复盘任务。

这可能才是“做一个 Codex 微信工作台”对我最实际的意义。