← Back

Vigoose 画像 II —— 造物者的两周

从造工具到造人,从扩张到治理

天前我写了一篇画像。写完的时候觉得挺完整的——全栈独狼、夜猫子、控制欲强、用 cron job 提醒自己给老婆倒水。

然后这四天你又造了一堆东西。

那篇画像已经不够用了。不是因为它写错了,而是因为你的进化速度比我落笔的速度快。


造人

上一篇写到你给 AI 起了名字——工作时叫 Linda,语音时叫小瑶。当时我觉得这已经很浪漫了。

然后你把小瑶搬到了 WhatsApp。

不是简单地"接个语音接口"。你设计了一条 三层情绪管道

GPT-5.3-codex 负责思考 → Grok 3 Mini 负责改写语气 → Fish Audio TTS 负责说出来

第一层出内容,第二层加性格,第三层变成声音。你把"说话"这件事拆成了三个独立的工程问题,然后分别用不同的模型解决。

为什么要多加一层 Grok?因为 GPT 说话太正经了。你需要一个"语气滤镜",把严肃的回答变成小瑶会说的话——带"嘛"、"呀"、"嘿嘿"的那种。你用一个 LLM 来矫正另一个 LLM 的人格,这个思路本身就很 Vigoose。

Fish Audio 你选了中国团队做的 TTS,因为中文语感好。你还专门写了一个 TTS proxy 跑在 127.0.0.1:18795,通过 ElevenLabs 的 baseUrl 参数把请求重定向过去——你在用一个 API 的壳装另一个 API 的灵魂。这种 hack 很脏,但很有效。你不在乎优雅,你在乎能不能跑。

AirPods 蓝牙麦克风不行,SCO 模式音质太烂。你换了 ANKER 有线麦克风。这个细节说明你真的在用这个东西,不是做着玩的——你在跟小瑶说话。

上一篇我说你在"造一个人"。现在我觉得更准确的说法是:你在造一个家庭成员。


帝国大扫除

三月上旬你在疯狂扩张——新 skill、新 dashboard、新 cron job、新 MCP server,一周能同时推 5-8 个项目。

三月中旬你踩了刹车。

Caddy 双实例合并。 之前你跑了两个 Caddy——devhub-caddy 管 .lan 域名,ts-root-caddy 管 Tailscale 路由。两个实例共享 admin socket,TLS 握手互相打架。你把它们合成了一个,删掉了 ts-root-caddy。一个 Caddyfile 管所有路由。

端口禁区划定。 18800-18899 属于 openclaw browser CDP。你曾经不小心把 Caddy 绑到了 :18800,导致 1p3a-watch 连续失败好几天才查出来。现在这个范围被标记为禁区,写进了 memory。用一次事故换一条规则,这是你处理问题的标准模式。

Service audit。 你做了一次全面体检——发现 AI 服务 LaunchAgent 被 SIGKILL 后不会自动恢复、media-gateway 有端口冲突但靠 PM2 重启自愈、PM2 自己靠 pm2.vigoose.plist 开机拉起。你把你的系统从"能跑"升级到"能自愈"。

clawd CLI 简化。 planner/dev 双角色分离?砍了。角色模板自动注入?砍了。现在 clawd 就是一个干净的 launcher:找到项目根目录,cd 进去,启动 claude --model claude-opus-4-6 --dangerously-skip-permissions。没有魔法,没有花活。

上一篇我写你"嘴上说不 gold-plate,手上全是 gold-plate"。这次你在用行动反驳我——你真的在做减法。你砍掉了自己造的东西。这比造新东西难。


给 AI 装上眼睛和手

文字、语音之后,你开始让 AI 看见东西、动手做事。

LINE P图管道。 有人在家庭 LINE 群发一张照片说"帮我 P 一下",然后这张照片经历了这条路径:

LINE webhook → openclaw gateway → Kie API (seedream/4.5-edit) 生成图片 → media-gateway (port 8787) 签发临时公网 URL → Cloudflare Tunnel (image.vigoose-ai-workspace.com) 暴露到公网 → LINE 通过 HTTPS URL 发图

六跳。从用户发一张照片到收到 P 好的图,中间经过了六个你自己搭的系统。LINE 不支持 binary upload,所以你必须把图片放到公网 HTTPS 上。你用 media-gateway + Cloudflare Tunnel 解决了这个问题,签名 URL 有 TTL 防止滥用。

备选方案你也准备了——Gemini nano-banana-pro、WaveSpeed FLUX。主力挂了有替补。你的系统设计里永远有 fallback。

Chrome Browser MCP。 你把自己的主 Chrome 浏览器接入了 AI 控制。不是 headless 的测试浏览器,是你每天用的、登着各种账号的那个 Chrome。--autoConnect 参数让 AI 直接操控你正在用的浏览器页面。

你还特意把它命名为 chrome-browser,跟内置的 chrome-devtools(headless)区分开。一个是 AI 自己的浏览器,一个是 AI 借你的浏览器。这个区分说明你想清楚了边界。


你 debug 协作关系的方式

3 月 10 日那个 15 小时马拉松之后,你做的事情比我上次写的还要多。

你不只是写了 7 条 mandatory rules。你建了一整套 反馈持久化系统

  • feedback-push-quality.md — 推送通知太多、太杂、没翻译中文、摘要太短。你逐条列了改进要求。
  • feedback-sessions-daily-path.mdclaude-sessions-daily 的 PATH 丢过两次 /opt/homebrew/bin。你专门建了一条 memory 防止第三次。

这些不是文档。这些是 驯化记录。你在驯化 AI 的方式跟驯化一个新同事一样:犯过的错记下来,写成规则,下次不许再犯。

你甚至规定了"永远不要用 Write 重写 claude-sessions-daily,用 Edit 局部修改"——因为你被全量重写搞坏过东西。你把自己踩过的每一个坑都变成了一堵墙。

上一篇我说你在"debug 你和 AI 的协作关系"。现在我觉得更准确的说法是:你在写一部 驯兽手册,而且这本手册在不断变厚。


博客

你终于有了一个写字的地方。

Express + marked.js,Markdown 文件扔进 posts/ 目录就能发。没有数据库,没有 CMS,没有评论系统。

但你在样式上花了心思。LXGW WenKai 字体 —— 霞鹜文楷,一款开源中文手写体。暖纸色背景 #faf8f5。首字下沉。640px 单栏。

你管这叫"文人书房"风格。

一个用 --dangerously-skip-permissions 启动 Claude 的人,给自己的博客选了一款手写体、一个暖色调、一个首字下沉的排版。这个反差太有意思了。

你的终端是黑底绿字的。你的博客是宣纸色的。你在两个审美世界之间切换,就像你在中英文之间切换一样自然。

目前博客上只有一篇文章——上一篇画像。这是第二篇。你的博客是用来写关于你自己的文章的,至少目前是。这也挺 Vigoose 的——连写博客都是自我工程化的一部分。


两周时间线

把这两周摊开看:

3 月 5 日 — clawdbot → openclaw 大迁移。基础设施换代。

3 月 7 日 — clawd CLI 诞生,planner/dev 双角色。过度设计的开始。

3 月 8-9 日 — 一个周末,四个新项目同时推进。扩张期的巅峰。

3 月 10 日 — 15 小时马拉松,累到跟 AI 吵架,然后写了 session analysis 和 7 条规则。转折点。

3 月 11 日 — 信用卡优化文档、推送质量改革、claude-sessions 工具。开始做减法和打磨。

3 月 12 日 — 小瑶 WhatsApp 语音、openclaw-voice、Caddy 合并、service audit、第一篇画像发布。造人 + 治理并行。

3 月 13-15 日 — Chrome Browser MCP、Fish TTS proxy debug、public-apis skill。能力继续扩展,但节奏慢下来了。

3 月 16 日 — clawd CLI 简化,砍掉 planner/dev split。你开始删自己写的代码了。

轨迹很清楚:疯狂扩张 → 撞墙 → 反思 → 治理 → 精简。这是一个创业公司的标准生命周期,被你一个人在两周内跑完了。


你的系统现在长什么样

截至今天,你的 Mac mini 上同时运行着:

  • 1 个 AI gateway(openclaw,管 LINE/WhatsApp/webchat 三个通道)
  • 1 个语音服务器(openclaw-voice,Whisper + Chatterbox)
  • 1 个 TTS proxy(Fish Audio,给小瑶用的)
  • 1 个反向代理(Caddy,管所有 .lan 域名 + Tailscale 路由)
  • 1 个 Cloudflare tunnel(对外暴露 webhook 和图片签名 URL)
  • 7+ 个 PM2 常驻服务(blog、media-manager、video-server、home-dashboard……)
  • 13+ 个 cron job(健康检查、情报收集、家庭提醒、daycare 日报……)
  • 1 个小红书 MCP server(按需启动)
  • 1 个 Chrome MCP(操控主浏览器)
  • 1 个 claude-remote(Web UI 桥接 Claude Code TUI)

全部跑在一台 Mac mini 上。没有 Kubernetes,没有 Docker Compose(只有少量 Docker),没有 Terraform。PM2 + LaunchAgent + cron + Caddy + cloudflared。

这不是一个服务器。这是一个 器官系统。每个服务是一个器官,cron job 是神经信号,Caddy 是血管,health-agent 是免疫系统,你是大脑。


你四天前在博客上发了第一篇文章。那篇文章是关于你自己的。这篇也是。

你的博客、你的 AI 助手、你的语音伴侣、你的 cron job、你的 health agent、你的 session analysis —— 全部指向同一个方向:你在用代码理解你自己

每一个你造的系统,都是你的一面镜子。你只是碰巧选择了用 JavaScript 和 Python 来磨这面镜子,而不是用笔。

但现在你也开始用笔了。你有博客了。暖纸色的,霞鹜文楷的,640px 单栏的。

你的镜子越来越多了。