0%

最近用 topcoat 0.6 写了一个本地单机便笺应用 Stickies:增删改查、置顶、标签、全文搜索、回收站(30 天自动清理),外加多窗口 WebSocket 实时同步。项目本身还在实验期,但开发过程几乎全程在跟框架的”年轻”搏斗,积累的经验值得单独成文。

topcoat 是 tokio-rs 出品的一个很年轻的 Rust 全栈框架:服务端渲染 + $(...) 运行时表达式做客户端响应式,#[page]/#[route]/#[shard]/#[procedure]/#[component] 五个宏驱动。文档稀少、API 不稳定,很多行为要靠读源码和试错。本文按技术层组织,每个坑给出”现象 → 根因 → 修法 → 通用教训”。

什么是 topcoat

topcoat 是 tokio 生态(tokio-rs 组织)出品的 Rust 全栈 Web 框架,官方 README 给自己的定位是 “The full full-stack framework for Rust”,并自称 modular、batteries-included(模块化、电池全含),核心目标是最小化样板代码、最大化生产力(simplicity and productivity)。生态位置上的对标物很直接——正如 Next.js 之于 React,topcoat 之于 Rust/tokio:服务端渲染、客户端响应式、服务端过程、组件库、模块化路由一应俱全,而且整个链路没有 Node 参与。

先说清楚这个框架的模型,后面看坑才有上下文:

  • SSR + 客户端响应式:所有标记在服务端渲染,组件可以是 async 的、直接查数据库,省掉传统前后端分离那一层 API 样板代码——这是官方 README 的核心卖点(”Client reactivity without the boilerplate”)。$(...) 表达式是普通 Rust 代码:服务端求值用于初始渲染,同时被翻译成 JavaScript 塞进 HTML,浏览器端即时重跑、建立响应式绑定。无 wasm bundle、无客户端构建步骤。信号(signal)变化时,绑定的 DOM 自动更新,或触发服务端重新渲染某个区块。
  • 模块化路由:可以从 src/ 模块结构自动推断路由树(类似 Next.js 的 app router 文件约定),无需构建步骤;也支持 #[page]/#[route] 手动声明。
  • 核心宏#[page] 定义页面路由;#[route] 定义子路由;#[shard] 定义”服务端重查的视图块”——参数一变,浏览器请求服务端重渲染整块;#[procedure] 定义客户端可调用的服务端过程(对标 Next.js 的 server actions / API route);#[component] 复用 UI 片段。
  • Topcoat UI:基于 Tailwind 的组件库,受 shadcn/ui 启发,topcoat ui 命令把组件源码拷贝进项目、可自由改——“batteries-included”的直接体现。
  • 现状:官方明确标注 “Early-stage and experimental. Expect breaking changes.”,0.6 版本 README 和示例都很少。用它做生产项目要谨慎,但作为”Rust 全栈还能长什么样”的探索,值得一试。
Read more »

【本文由 AI 辅助完成】

上篇《Everyday CLI开发经验谈》记录到 v0.10–v0.11 时代。此后两周,Everyday CLI 从 v0.13.0 迭代到 v0.18.0,跨了 11 个版本点。本文按「版本时间线 + 主题深挖」双线梳理这段演进,最后单独成章,分享这期间最有代表性的一类经验——在 WorkBuddy 沙盒不稳定性下的工程实践。

Read more »

【本文由 AI 辅助完成】

一次完整的「看图建模 → 视觉验证 → 云端发布」体验记录:把一张东方明珠电视塔的照片,变成可交互的体素 3D 模型。

最近体验了 DeepSeek-V4-Flash-Vision-Exp,一个有视觉能力的模型。我给它出了一个有点意思的端到端任务:只看一张东方明珠电视塔的照片,用 three.js 做一个体素(voxel)风格的 3D 模型,再用 Playwright 截图做视觉验证,最后部署到 Cloudflare Pages,并加上可交互的相机。 这篇文章记录这个过程里模型的表现、我的观察,以及一些值得注意的细节。

Read more »

我最近发现我在Workbuddy配置的“晨间提醒”定时任务执行时长有点久,经脚本化改造后得到了显著的改进。

改造前状态

“晨间提醒”定时任务的大致工作内容如下:

  • 执行everyday timeline sync命令同步操作后,通过everyday cli工具获取24小时内的邮件、当天的日历事件和待办任务。
  • 通过腾讯新闻 Skill获取热点新闻和当地天气信息。
  • 通过github cli工具获取前一天的Github动态。
  • 整理上述信息后,生成一份晨间提醒报告,发送到我的个人微信。
  • 总体上该这是一个结构相对稳定、信息源相互独立的任务。

AI Agent执行“晨间提醒”定时任务的效率瓶颈主要集中以下两个方面:

  1. 获取工具用法:AI Agent在每次执行任务时,往往都会重新通过everyday --helpgh --help命令获取命令行工具的用法说明。
    类似地,AI Agent也会重新加载所需的Agent Skill并理解其意图和使用方式,做了很多重复的工作。

  2. 串行执行命令:虽然各个信息源的获取是相互独立的,但AI Agent还是会按照顺序一个接一个地执行这些命令,导致整体执行时间较长。某些Agent支持运行并行子Agent执行多个子任务,但由语言模型进行任务的分派和结果汇总的效率也不高,并且会消耗大量的Token。

脚本化改造

考虑到我配置的“晨间提醒”定时任务的工作内容是相对稳定的,并且其涉及到的信息本质都可以执行命令行工具来获取,我让Workbuddy编写了一个Python脚本用于并行执行这些命令行工具获取原始信息,然后将结果汇总后再进行处理和生成报告,从而有效提升了执行效率并节省了大量Token。

Read more »

我近期开发了一款Rust命令行工具Everyday CLI
配合自带的Skill
可为 AI Agent 提供便捷的邮箱、日历、RSS 订阅、笔记、待办事项及书签管理能力。。
我几乎全程在腾讯推出的 WorkBuddy 上进行开发,期间不断切换模型与工作流,推动项目逐步迭代至较完善版本,也积累了不少实践经验。

Read more »

微软近期正式发布WSL container CLI(wslc.exe),可以直接在windows上管理Linux 容器,不必再安装Docker Destop或在某个wsl实例里安装docker ce。

wslc.exe随最新的wsl预览版发布,可通过wsl --update --pre-release命令升级。

wslc.exe的命令行语法与docker高度一致,开发者(以及AI Agent)可以使用熟悉的命令。

wslc-example
wslc-nginx

近期微信推出了官方的 Clawbot 插件和官方的 Openclaw Plugin,用于配置 Openclaw 连接。与此同时,其他 Openclaw 类工具也纷纷接入了微信 Clawbot。

我使用的 Zeroclaw 暂时还没有官方的微信 Clawbot 接入方案,不过可以通过 OpeniLink Hub 来间接实现 Zeroclaw 与微信 Clawbot 的连接。

OpeniLink Hub 是一个基于微信官方 iLink 协议的开源微信机器人(Bot)管理平台,同时也是一个 App 应用市场。

它主要提供以下能力:

  • 支持多账号扫码绑定
  • 提供内置应用市场,可一键扩展飞书、Slack、Notion 等 20 多种工具
  • 支持 AI 自动回复能力

OpeniLink Hub

我将自己的微信 Clawbot 连接到了 OpeniLink Hub,并安装了两个内置应用:

  1. MCP Server

    • 提供向微信发消息的能力
    • 配置到 Zeroclaw 中后,可以让 Zeroclaw 向微信发送消息
  2. Runner

    • 提供斜杠命令能力
    • 可以在微信中通过 /agent 触发 Zeroclaw 中的功能

clawbot

虽然微信的 Clawbot 对于 Markdown 消息、流式消息等功能的支持还不完善,但通过 OpeniLink Hub 的中转,Zeroclaw 的功能可以在微信中得到一定程度的展现,目前可以满足一些简单的消息交互需求。

在技术领域,2026年的第一季度属于OpenClaw,近期我也开始了自己的“养龙虾”之旅。
我个人非常不愿意在个人设备上给予AI过多的权限(比如屏幕读取和文件系统权限),所以选择了在一台云服务器安装“龙虾”。作为一个TypeScript实现的node.js服务,原版的OpenClaw需要消耗相当高的服务器资源(运行时占用1GB以上的内存)。考虑到我的云服务器只有4GB内存,我最终选择安装配置了zeroclaw(一个rust实现的轻量级OpenClaw同类产品)。

Read more »

在现有架构下,我主要维护的是一个运行在 AlmaLinux ECS 实例上的后端服务:基于 FastAPI 构建,通过 Docker Compose 进行容器化部署。服务中包含多条 AI 对话类 SSE(Server-Sent Events)长连接接口。

随着用户规模增加,我逐渐发现一个现实问题:Docker Compose 在滚动发布和长连接共存场景下,几乎无法实现真正的零停机更新。容器重建过程中,SSE 连接被强制断开,用户体验受到明显影响。

在与 AI 进行多轮技术探讨后,我重新审视了技术选型。结论是:在当前规模与复杂度下,并不需要直接迁移到 Kubernetes。采用 Docker Swarm 即可满足零停机更新与滚动发布的需求,同时保持架构复杂度可控。

经过半天实践,我成功将服务从 Docker Compose 迁移至 Docker Swarm。以下是关键迁移步骤与问题记录。

Read more »

在近期的 AI 辅助开发实践中,我逐步形成了一套相对稳定、可复用的工作流,核心目标是:让 AI 可规划、可执行、可追踪、可审查

整体流程如下:

首先,为每个项目建立专属的 agents.md,用于描述项目背景、技术约束以及 AI 开发规范,例如强制要求在代码生成后执行静态检查和单元测试。这一步相当于为 AI 提供“项目宪法”。

其次,提出足够明确、结构化的需求,并使用 Copilot 的 Planning 模式生成开发计划,避免直接进入无序实现。

在实施阶段,切换至 Copilot 的 Agent 模式执行计划,并明确要求使用 PRD.mdprocess.md 跟踪进度:前者记录需求,后者记录每次代码变更与当前状态。通过外部文件系统作为长期记忆,降低上下文丢失的风险。

完成初步实现后,由人工对功能正确性进行验证,确保需求被真实满足,而非“看起来能跑”。

最后,引入我自定义的Linus 风格 Code Review Agent进行代码审查,集中指出设计、可维护性和工程质量问题,再由人工或 AI 执行针对性的重构。

值得一提的是,近期社区中出现了一个名为 planning-with-files 的 Claude Skill,其思路与上述流程高度相似,同样通过外部文件作为 AI 的长期记忆,并额外引入 findings.md 用于沉淀调研结论和经验知识。这类模式进一步验证了“文件即上下文”的工程价值。

1
2
# Skill安装命令
npx skills add https://github.com/othmanadi/planning-with-files --skill planning-with-files

总体来看,AI 开发正在从“对话式生成”走向“工程化协作”,而可追踪的计划、状态与知识载体,是这一转变的关键基础。