动手写一个 Claude Code 插件:从一条斜杠命令到事件钩子
上一篇我们把插件这个包裹拆开看了个遍:一个目录,一份 plugin.json,几个约定位置的子目录。结尾埋了三个伏笔——hooks.json 的事件表、子代理的 frontmatter 字段、MCP 协议。本篇来还债,方式不是继续拆别人写的插件,而是从空目录开始,把每一级组件亲手造一遍。 动手之前先给你一个反直觉的预期管理:整个开发流程里没有”编译”这个步骤。没有 npm run buil...
上一篇我们把插件这个包裹拆开看了个遍:一个目录,一份 plugin.json,几个约定位置的子目录。结尾埋了三个伏笔——hooks.json 的事件表、子代理的 frontmatter 字段、MCP 协议。本篇来还债,方式不是继续拆别人写的插件,而是从空目录开始,把每一级组件亲手造一遍。 动手之前先给你一个反直觉的预期管理:整个开发流程里没有”编译”这个步骤。没有 npm run buil...
你想给板子加个呼吸灯——LED 慢慢亮、慢慢灭,显得有生命感。PWM 还没学,就用最朴素的办法硬模拟:主循环里翻转引脚,亮多灭少就是”变亮”,亮少灭多就是”变暗”。灯真的呼吸起来了。然后你往主循环里加了一行 printf,呼吸开始抽搐;把它搬进 FreeRTOS 任务里,别的任务一忙,灯就一卡一卡。你反复检查,每一行都没写错。 错的是整个做法本身:你在用 CPU 的手指头充当电路。CPU ...
你花了一个周末给 Claude Code 调教出一套顺手的斜杠命令:/review 按团队规范审代码,/deploy 走发布清单,还有一个 subagent 专门写 commit message。然后同事说”也给我一份”——最直接的办法是把 .claude/ 目录打包发过去。过两周你改了 /review 的提示词,再发一遍;同事那边自己也有改动,合并靠肉眼。 更惨的是另一个方向:你听说有人...
先看一个反差:让电脑下棋赢过世界冠军,这件事 1997 年就做完了;让机器人像五岁小孩一样收拾好自己的房间,到今天没有任何一家公司做得到。 对着一屋子玩具,小孩瞄一眼就知道哪个是积木、该放回哪个箱子。这件”谁都会”的事,恰好是机器人开发里最难的部分。为什么?这篇文章用大白话把机器人开发从头讲一遍——不出现一个没翻译的术语。 一句话版本:机器人开发,就是教一台机器循环做三件事——用传感器”...
凌晨两点,产线值班工程师发来一个十六进制数:0x08001c58。背景是:那台跑了三天两夜的设备 HardFault 复位了一次,好在固件里留了后手——HardFault 处理函数把压栈的八个寄存器捞出来存进了备份寄存器,其中 PC 就是这个值(怎么捞的,见中断篇的压栈帧:R0、R1、R2、R3、R12、LR、PC、xPSR)。现在问你:这个地址,是哪个函数? 先排除一个错觉:烧进芯片的 ...
启动文件篇说过,每个 STM32 工程里都有一个没人打开过的文件。其实有两个。比 startup_stm32f407xx.s 更惨的是 STM32F407VGTX.ld——大多数人根本不知道它存在,直到出事。 一个真实场景:固件 504K 逼近 Flash 512K 的上限,网上搜到一招——编译加 -ffunction-sections -fdata-sections,链接加 -Wl,--...
字段工程师在客户机房点下「升级」。进度条走到 87%,机房的 UPS 跳闸了。重启之后,那台设备再也没起来——Flash 里躺着半截新程序、半截旧程序,谁都不完整。寄回工厂,重走一遍烧录产线,客户体验归零。 为什么一次升级能把设备「升死」?因为最常见的升级方式,本质是一场原地装修:先把旧的擦掉,再写新的。擦和写之间有个窗口,窗口里断电,旧房已拆、新房没盖完。更糟的是,这个窗口和下载速度成正...
<!DOCTYPE html> 双分区升级 · 5 分钟看懂 ELI5 · 嵌入式 双分区升级:永远留一条退路 Cortex-M4 的 MCU 是怎么做到「升级失败也不变砖」的 1只有一个分区,升级像「拆房重建」 Flash 里只有一份程序,升级就得先擦掉它 ...
每个 STM32 工程里都有一个你从未打开过的文件:startup_stm32f407xx.s。几百行汇编,从工程模板生成的那天起就没人多看它一眼。大多数人第一次被迫打开它,是因为一个诡异的 bug——比如这个真实案例:串口收不到数据,单步调试,程序卡死在一个叫 Default_Handler 的死循环里。检查代码,中断服务函数明明写了。再检查一遍,发现了: void USART1_IRQ...
先看一个你可能熟悉的场景:待办事项在滴答清单里,读书笔记在 Notion 里,代码实验的草稿散落在各个 IDE 的临时文件里,每周写周报时打开五个窗口来回切。然后某天某个 app 改版了、收费了、停止维护了——你的数据跟着陪葬,或者沦落成一份再也不会打开的导出文件。 现在有一个反直觉的事实:一个诞生于 1986 年的文本编辑器里附带的一个模式,至今仍是无数程序员和研究者的笔记中心、任务管理...