VibeCoding 是 2025 年 Karpathy 提出的说法:不逐行抠代码,用自然语言和 AI 对话,把想法直接变成能跑的东西。过去一年多我用这个方式做了一串小项目,它们现在都归在 VibeCoding 分类下,这篇是目录页,会随新项目持续更新。
-
video-tagger:视频攒多了看不过来,让AI自动分类再出报告
我的下载文件夹里躺着几百个视频。有刷到的教程、有想反复看的访谈、有觉得文案写得好的带货口播,下载那一刻都觉得有用,之后再没点开过。偶尔想找「上次那个讲分布式事务的视频」,对着
video_1727xxxx.mp4这样的文件名完全无从下手。真看完的也没好到哪去,两星期后别人问起讲了什么,只记得「讲得还行」。这是两个问题:库乱了,没人分类;看过了,没记住。市面上的工具各管一段:钉钉 AI 听记管录音转写,抖音的 @豆包 管站内视频问答,但我的视频来源杂,分类体系我想自己定,结果也得留在我自己手里。于是写了 video-tagger:导入本地视频或抖音链接,自动识别内容类型打标签;值得分析的视频再进入第二阶段,转写加关键帧喂给多模态模型,按模板生成结构化报告。
-
agent-sync:把没聊完的Agent会话装进Git,换台电脑接着聊
下午在办公室的 Windows 上,一个会话聊到关键处:背景交代完了,报错日志贴过了,方案刚改到第三版。到家打开 Mac 想接着聊,会话列表里什么都没有。要么凭记忆把上下文重新喂一遍,要么把活儿留到明天。会话就是上下文本身,它留在另一台机器上,前面花的功夫等于白费。
这种事多来几次之后,我写了 agent-sync:一个在两台电脑之间搬运编码 Agent 会话的命令行工具。会话导出成加密文件,放进项目目录下的
.agent_sync/,跟着 git push 走;另一台机器 pull 下来,一条命令导回本机,接着聊。 -
utools-service-manager:把Windows服务管理塞进uTools,再交给AI Agent
Windows 上自建服务跑多了,
services.msc就成了那个要用时才想起、打开又嫌烦的工具:想重启个 nginx,先 Win+R,再在三百多个服务里滚到 N 区,点开属性,确认,重启。我做了一个 uTools 插件 utools-service-manager 来省掉这套动作:把 Redis、Consul、nginx 这类常用服务加进白名单,uTools 里敲svc就能看实时状态、启停、改启动类型。更进一步,通过 uTools 内置的 MCP,Claude Code 这些 AI Agent 也能直接对它说「重启一下 nginx」「把 Redis 设为禁用」——一句话的事。项目已开源:GitHub - canyuda/utools-service-manager,MIT 协议,需要 uTools 5+ 和 Windows。现已上架 uTools 插件市场(搜索「Windows服务」安装)——过程不算顺利,四个版本先后被审核拒绝,第五版才通过,完整记录见文末。
-
agent-guard:给完全访问的AI编程Agent上一道安全闸
把 AI 编程工具切到完全访问模式是很上瘾的事:改文件、跑命令、装依赖一路畅通,不用隔几分钟点一次「允许」。但模式全开之后,中间没有任何东西拦着。agent 在重构时决定「顺手清一下再重装」,在排查问题时试出一条杀伤半径超出预期的命令,都可能直接落地。
rm -rf、git push --force、把.env内容打出来——这些场景不需要 agent「作恶」,只需要它聪明得过头一次。我给这件事做了个专门的工具 agent-guard:挂在宿主工具(ZCode / Claude Code / Cursor)的 PreToolUse hook 上,拦截所有 Bash、Write、Edit 和 MCP 工具调用,用一次快速的结构化判断给操作定级,只读的直接放,高危的强制人工确认,哪怕你开着完全访问模式它也拦得住。
项目已开源:GitHub - canyuda/agent-guard,
npm install -g @canyuda/agent-guard即装即用,零依赖,Node 20 以上就行。 -
言之有物:做一个当场揪出口头禅的表达训练应用
你有没有录过自己即兴发言?不录不知道,一回放,「嗯」「然后」「就是说」「可能差不多」密密麻麻。这些问题词说话时完全无感,旁人听得清清楚楚,偏偏自己最后一个知道。
我做了个桌面应用来治这个毛病,叫言之有物(Weighty Words)。对着麦克风说一段话,语音实时转成大字字幕,填充词、犹豫词、笼统词当场标红标黄,说完再生成一份结构化分析报告。整个链路是:实时语音识别 → 本地词库分析 → AI 反馈。
项目已开源:GitHub - canyuda/weighty-words,macOS(dmg)和 Windows(exe)安装包都在 Releases 里。
-
7月面试复盘:一份上海offer的最终答案
最近集中找工作的一个月。七月我密集面了 15 场,进了两次二面,都没过。到了月底、八月初,我拿到一份 base 上海的 offer,定在 8 月 18 号入职。按理该松口气,但我拿着这份 offer,越想越觉得不太对。这篇就记一下这一个月面试的复盘,以及拿到 offer 之后我一直在算的那笔账。
-
用 Claude Code 把找工作当个项目来做
最近在集中找工作。投了几家之后我意识到一件事:找工作其实特别像一个项目。它有明确的目标,拿到一份合适的 offer;有一堆并行推进的任务,同时跟好几家公司;还有大量能反复用的资产,简历、项目经历、面试话术。可大多数人处理它的方式是散装的,想到哪做到哪,每投一家都从头来一遍。
我是个 Java 后端,干这行有些年头了。某天我想,既然它这么像一个项目,为什么不真把它当个项目来管?我用 Claude Code 建了个求职仓库,把该沉淀的资产、该固化的流程、该跟踪的进度都放进去,又写了几个 skill 把最重复的环节自动化掉。这篇记一下这个“求职项目”是怎么搭起来的。