<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>meiki的胡思乱想</title><description>深度探讨AI、SEO、GEO、Web3等前沿技术。分享编程知识、技术见解与生活随笔。</description><link>https://meiki.dev/</link><item><title>给 VPS 配一套 push tag 自动部署:self-hosted runner 踩坑实录</title><link>https://meiki.dev/blog/self-hosted-runner-tag-deploy/</link><guid isPermaLink="true">https://meiki.dev/blog/self-hosted-runner-tag-deploy/</guid><description>在自己的 VPS 上用 GitHub self-hosted runner 做 push tag 自动部署。记录三个真正卡住的点:构建到底在哪台机器跑、跑 runner 的用户必须等于跑 app 的用户、pnpm 新版本把未声明的 build 脚本变成硬错误。</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>claude --worktree 里 skill 不见了:一个 symlink 拷不动的坑</title><link>https://meiki.dev/blog/worktree-skills-symlink/</link><guid isPermaLink="true">https://meiki.dev/blog/worktree-skills-symlink/</guid><description>用 claude --worktree 开会话后,.claude/skills 里的项目 skill 全失效了。根因:它们是指回 .agents/skills 的 symlink,而 worktree 的 .worktreeinclude 拷贝跳过了 symlink。记录排查到用 --copy 物化成真实文件的根治。</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>让 Claude 在 GitHub Issue 里自己开 PR</title><link>https://meiki.dev/blog/blog-claude-github-action-auto-pr/</link><guid isPermaLink="true">https://meiki.dev/blog/blog-claude-github-action-auto-pr/</guid><description>在 GitHub issue 里 @claude 就让它自动建分支、改代码、开 PR。记录用 anthropics/claude-code-action 搭这套流程踩的两个权限坑：workflow 默认只读、GitHub 默认禁止 GITHUB_TOKEN 开 PR，以及解法和跑通条件 checklist。</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>标签页太多拖累 SEO？别急着用 robots.txt 屏蔽</title><link>https://meiki.dev/blog/robots-txt-vs-noindex-tag-pages/</link><guid isPermaLink="true">https://meiki.dev/blog/robots-txt-vs-noindex-tag-pages/</guid><description>给这个 Astro 博客的标签页、分类页做 SEO 收尾：35 篇文章却有 69 个标签，将近一半只挂着一篇，是典型的薄内容。本来第一反应是 robots.txt 里 Disallow 掉，结果发现这是个常见误区——Disallow 只挡爬取不挡收录，真正想让薄页面退出索引，得用 meta robots 的 noindex, follow，并且 robots.txt 还得保持全开。附 Astro 里的具体改法。</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>如何给你的博客加上 llms.txt</title><link>https://meiki.dev/blog/add-llms-txt-to-your-blog/</link><guid isPermaLink="true">https://meiki.dev/blog/add-llms-txt-to-your-blog/</guid><description>给这个 Astro 博客接入 llms.txt 和 llms-full.txt 的完整过程：用 content collection 在构建时生成索引文件，以及中文站在 Cloudflare 上一定会踩的 charset 乱码坑。</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>skills-lock.json：给 Agent Skills 上一把锁</title><link>https://meiki.dev/blog/skills-lock/</link><guid isPermaLink="true">https://meiki.dev/blog/skills-lock/</guid><description>上一篇我把博客那套加工具的规矩做成了一个 Skill。这回换个角度：当我装的 skill 从「自己写的一个」变成「从别人仓库拉来的一堆」，怎么保证队友、CI、还有未来的我，装到的是同一批、同一个版本？答案是 skills-lock.json——Agent Skills 版的 package-lock.json。这篇按 WHW 捋一遍：它是什么、怎么工作怎么用、以及为什么一旦 skill 成了依赖，就该有把锁。老规矩，官方说的和我自己机器上看到的分开讲。</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>从一份 CPU profile 定位到 Turbopack 持久缓存把 CPU 打满</title><link>https://meiki.dev/blog/turbopack-dev-cpu-bugs/</link><guid isPermaLink="true">https://meiki.dev/blog/turbopack-dev-cpu-bugs/</guid><description>本地 next dev 启动后风扇狂转、CPU 长期高占用，但页面其实正常。本文记录完整的排查路径：用 macOS 自带的 sample 抓一份 CPU profile，先从「在睡觉的线程」里分出真正烧 CPU 的，再靠 Sort by top of stack 聚合表反推出「密集文件 I/O + 锁竞争」，层层下钻到 .next/dev/cache/turbopack 里 GB 级的 LSM SST 文件，最终定位到 Next.js 16 默认开启的 Turbopack 持久缓存在后台空转做 compaction。附止血与复发处理。</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>A2A 协议：智能体之间怎么对话，以及它到底解决了什么</title><link>https://meiki.dev/blog/a2a-protocol/</link><guid isPermaLink="true">https://meiki.dev/blog/a2a-protocol/</guid><description>A2A（Agent2Agent）是 Google 去年放出、今年 3 月刚发布 1.0、现在挂在 Linux Foundation 名下的智能体互联协议。我平时泡在 MCP 那一套生态里，这篇把 A2A 的几个核心概念——Agent Card、Task、Message、Artifact——从头捋一遍，讲清它和 MCP 的分工，最后以一个独立开发者的角度说说：它现在值不值得碰。</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>用了大半年 Claude Code，我才搞懂：关键往往不在模型，而在 harness</title><link>https://meiki.dev/blog/agent-harness/</link><guid isPermaLink="true">https://meiki.dev/blog/agent-harness/</guid><description>聊 AI coding 的时候，大家总在比模型——Opus 还是 GPT，谁分高。但我自己每天用下来，真正决定一个 agent 好不好使的，常常是模型外面那层叫 harness 的东西：那个跑工具、管上下文、卡权限的循环。这篇把我理解的 harness 拆开讲讲，它是什么、由哪几块拼成、为什么同一个模型套不同的壳能差出十万八千里。</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>我把那些反复粘贴的指令，做成了一个 Skill</title><link>https://meiki.dev/blog/agent-skills/</link><guid isPermaLink="true">https://meiki.dev/blog/agent-skills/</guid><description>我的博客挂着一个小工具区，每加一个工具都有一套自己的规矩：文件放哪、逻辑写在哪、写完要去哪登记。以前每加一个都得重新跟 Claude 交代一遍。这次我把它们收进一个 Skill，顺手把 Agent Skills 这套东西从机制到取舍捋了一遍——它到底是什么、progressive disclosure 解决了什么、和 CLAUDE.md / MCP / 子代理差在哪一层，以及我保留的几点判断。</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>MCP 是怎样工作的？把模型上下文协议拆开看一遍</title><link>https://meiki.dev/blog/mcp-deep-dive/</link><guid isPermaLink="true">https://meiki.dev/blog/mcp-deep-dive/</guid><description>MCP 被叫做「AI 应用的 USB-C」，但这个比喻没说清它到底是什么。这篇从「为什么需要它」讲起，拆开它底下的 JSON-RPC 消息、Host/Client/Server 三层架构、初始化握手，以及 Tools/Resources/Prompts 三类原语分别由谁来控制——最后附我自己接 MCP 服务器时保留的几点判断。</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>我让 12 个 Claude 子代理在半小时里搭完一个 MVP</title><link>https://meiki.dev/blog/claude-code-dynamic-workflows/</link><guid isPermaLink="true">https://meiki.dev/blog/claude-code-dynamic-workflows/</guid><description>上次写 Opus 4.8 时，我说dynamic workflows对我这种小项目用处不大。这次换了个场景重新试：从零搭一个全新的 MVP，5 个阶段、12 个子代理、约 31 分钟，第一遍 verify 就过了。记录一下它什么场景下有用，以及我保留的几点判断。</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>Claude Opus 4.8 用了两天：一个独立开发者的真实使用记录</title><link>https://meiki.dev/blog/claude-opus-4-8-first-impressions/</link><guid isPermaLink="true">https://meiki.dev/blog/claude-opus-4-8-first-impressions/</guid><description>Opus 4.8 在 5 月 28 日发布。作为一个每天用 Claude Code 给自己的 App 和博客写代码的独立开发者，我把它接进日常开发用了两天，聊聊新出的并行子代理、effort 控制、代码自查能力到底好不好用，以及值不值得升级。</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>给我的博客加上视频嵌入</title><link>https://meiki.dev/blog/embed-youtube-bilibili-in-astro/</link><guid isPermaLink="true">https://meiki.dev/blog/embed-youtube-bilibili-in-astro/</guid><description>记录我给博客加上 YouTube 和 Bilibili 视频嵌入的过程：写一个 remark 插件，让我以后写文章只需要单独一行粘 URL，构建时自动变成响应式播放器。</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>我上架了我的第一个 iOS 应用</title><link>https://meiki.dev/blog/first-ios-app-release/</link><guid isPermaLink="true">https://meiki.dev/blog/first-ios-app-release/</guid><description>记录我上架第一个 iOS 应用的经历，包括开发过程、上架流程和一些心得体会。</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>给博客加上动态 OG 图片</title><link>https://meiki.dev/blog/cloudflare-page-dynamic-og-image/</link><guid isPermaLink="true">https://meiki.dev/blog/cloudflare-page-dynamic-og-image/</guid><description>记录给这个 Astro 博客接入动态 OG 图片生成的过程，以及在 Cloudflare Workers 环境下踩的那些坑。</description><pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>用 Cloudflare 免费搭一个个人博客</title><link>https://meiki.dev/blog/free-personal-blog-with-cloudflare/</link><guid isPermaLink="true">https://meiki.dev/blog/free-personal-blog-with-cloudflare/</guid><description>记录从零开始用 Astro + Cloudflare Workers 搭建个人博客的过程，以及选择这个方案背后的考量。</description><pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>Docker 日常使用的几个配置与踩坑：时区、capabilities 与 OrbStack 迁移</title><link>https://meiki.dev/blog/docker-config-pitfalls/</link><guid isPermaLink="true">https://meiki.dev/blog/docker-config-pitfalls/</guid><description>整理我在实际用 Docker 时遇到的三类问题：容器时区和宿主机不一致、用 --cap-add 精细控制容器权限而不是无脑 --privileged，以及从 Docker Desktop 换到 OrbStack 后的 malware 警告清理。</description><pubDate>Wed, 05 Mar 2025 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>Go 构建约束（build constraints）的用法</title><link>https://meiki.dev/blog/go-build-constraints/</link><guid isPermaLink="true">https://meiki.dev/blog/go-build-constraints/</guid><description>记录 Go 构建约束的两种方式：文件名后缀和 build tag，新旧语法的区别，以及几个一不小心就踩到的坑——比如把 darwin 写成 macos。</description><pubDate>Wed, 05 Mar 2025 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>用 mDNS 给局域网设备配主机名：原理、配置与发行版差异</title><link>https://meiki.dev/blog/mdns-lan-hostname/</link><guid isPermaLink="true">https://meiki.dev/blog/mdns-lan-hostname/</guid><description>在 PVE 上跑多台虚拟机，DHCP 地址一变就要重新查 IP，太烦。用 mDNS 配好主机名后直接用 hostname.local 访问，一劳永逸。本文讲清 mDNS 原理、完整配置步骤，以及 Debian 12 和 Ubuntu 24 默认状态的差异。</description><pubDate>Wed, 05 Mar 2025 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>把旧笔记本装成 Proxmox VE 家庭服务器：盒盖不休眠、自动熄屏与挂载数据盘</title><link>https://meiki.dev/blog/old-laptop-to-pve-server/</link><guid isPermaLink="true">https://meiki.dev/blog/old-laptop-to-pve-server/</guid><description>用旧笔记本当 PVE 家庭服务器时绕不开的几个配置：关掉合盖自动休眠、让屏幕超时自动熄屏省电，以及把一块 NTFS 数据盘配置成开机自动挂载。</description><pubDate>Wed, 05 Mar 2025 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>在 Rust 里调用 silk-v3 解码器解码微信语音</title><link>https://meiki.dev/blog/rust-silk-v3-decoder/</link><guid isPermaLink="true">https://meiki.dev/blog/rust-silk-v3-decoder/</guid><description>记录把 silk-v3-decoder 编译成静态库，再通过 Rust FFI 调用的完整过程。</description><pubDate>Wed, 05 Mar 2025 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>ZeroTier 自建 Moon 节点加速内网穿透</title><link>https://meiki.dev/blog/zerotier-moon/</link><guid isPermaLink="true">https://meiki.dev/blog/zerotier-moon/</guid><description>记录在 VPS 上搭建 ZeroTier Moon 节点的完整步骤，先讲清 Planet/Moon 的原理，再解决国内直连官方根节点延迟高的问题，附客户端连接与排坑。</description><pubDate>Wed, 05 Mar 2025 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>OpenWrt 折腾记：passwall2 安装 + OpenClash 排坑 + OpenVPN 分流</title><link>https://meiki.dev/blog/openwrt-passwall2-openclash/</link><guid isPermaLink="true">https://meiki.dev/blog/openwrt-passwall2-openclash/</guid><description>记录在 iStoreOS 上安装 passwall2、解决 OpenClash + SmartDNS DNS 污染问题、以及 OpenVPN + OpenClash 同时跑时的分流配置。</description><pubDate>Mon, 03 Mar 2025 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>用 Monaco Editor 搭一个带 Python 智能提示的在线编辑器</title><link>https://meiki.dev/blog/monaco-python-lsp/</link><guid isPermaLink="true">https://meiki.dev/blog/monaco-python-lsp/</guid><description>从零搭建 pyright LSP 服务端，再接上 Monaco Editor，实现浏览器里的 Python 代码补全和类型检查。附踩坑记录。</description><pubDate>Wed, 19 Feb 2025 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>Node.js 工程化的三个常见问题：Corepack 报错、版本号符号与 ESM 下运行 TypeScript</title><link>https://meiki.dev/blog/nodejs-toolchain-notes/</link><guid isPermaLink="true">https://meiki.dev/blog/nodejs-toolchain-notes/</guid><description>整理三个用 Node.js 时经常碰到、查一次又容易忘的问题：corepack enable pnpm 后报 keyid 错误怎么修、package.json 里 ^ 和 ~ 到底差在哪、以及在原生 ESM 项目里直接运行 .ts 文件的几种方式。</description><pubDate>Wed, 19 Feb 2025 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>Tauri 2.0 实用功能：文件选择框和本地音频播放</title><link>https://meiki.dev/blog/tauri2-file-dialog-audio/</link><guid isPermaLink="true">https://meiki.dev/blog/tauri2-file-dialog-audio/</guid><description>记录在 Tauri 2.0 中使用 dialog 插件打开文件选择框，以及用 convertFileSrc 播放本地 mp3 文件的方法。</description><pubDate>Fri, 01 Nov 2024 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>写一个最简单的 Linux 内核模块：从代码到加载卸载</title><link>https://meiki.dev/blog/linux-kernel-module/</link><guid isPermaLink="true">https://meiki.dev/blog/linux-kernel-module/</guid><description>内核模块是什么、为什么需要它，以及编写、编译、加载、卸载一个 Hello World 内核模块的完整步骤，逐行解释代码、Makefile 和相关命令。</description><pubDate>Sat, 25 Mar 2023 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>LuaJIT 介绍</title><link>https://meiki.dev/blog/luajit-intro/</link><guid isPermaLink="true">https://meiki.dev/blog/luajit-intro/</guid><description>介绍 JIT 编译原理、LuaJIT 的工作方式、NYI 问题，以及有无 JIT 的性能对比测试。</description><pubDate>Mon, 02 Jan 2023 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>Understand Rust Ownership</title><link>https://meiki.dev/blog/rust-ownership/</link><guid isPermaLink="true">https://meiki.dev/blog/rust-ownership/</guid><description>介绍 Rust 所有权机制的核心概念：作用域、move、clone、copy，以及引用和借用规则。</description><pubDate>Fri, 30 Dec 2022 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>一段 C 代码是怎么变成可执行文件的：预处理、编译、汇编、链接</title><link>https://meiki.dev/blog/program-exec-process/</link><guid isPermaLink="true">https://meiki.dev/blog/program-exec-process/</guid><description>以一个 hello world 程序为例，拆解 C 代码从源文件到可执行二进制经历的四个阶段——预处理、编译、汇编、链接，每一步都用 gcc 命令单独跑出来看中间产物。</description><pubDate>Wed, 28 Dec 2022 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>高性能网关基石——OpenResty</title><link>https://meiki.dev/blog/openresty-intro/</link><guid isPermaLink="true">https://meiki.dev/blog/openresty-intro/</guid><description>介绍 OpenResty 的处理阶段、各阶段对应的 Lua 指令，以及一个完整的 demo 验证执行顺序。</description><pubDate>Tue, 27 Dec 2022 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>用 manim 写一个排序算法动画</title><link>https://meiki.dev/blog/manim-bubble-sort/</link><guid isPermaLink="true">https://meiki.dev/blog/manim-bubble-sort/</guid><description>用 manim 实现冒泡排序的可视化动画，记录元素初始化、交换动画的实现过程。</description><pubDate>Thu, 11 Aug 2022 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>解密安卓微信聊天信息存储</title><link>https://meiki.dev/blog/android-wechat-decrypt/</link><guid isPermaLink="true">https://meiki.dev/blog/android-wechat-decrypt/</guid><description>记录如何从 Root 的安卓手机里提取微信数据库，解密 EnMicroMsg.db，解析聊天记录、图片、语音等媒体文件的存储结构。</description><pubDate>Mon, 20 Jun 2022 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>Redis 是怎样通讯的？</title><link>https://meiki.dev/blog/redis-protocol/</link><guid isPermaLink="true">https://meiki.dev/blog/redis-protocol/</guid><description>介绍 Redis 的 RESP 协议，包括五种数据类型的格式、发送命令的方式、Pipeline 机制，以及用 Go 手写 Redis 客户端。</description><pubDate>Tue, 29 Mar 2022 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>MySQL 是怎样通讯的？</title><link>https://meiki.dev/blog/mysql-protocol/</link><guid isPermaLink="true">https://meiki.dev/blog/mysql-protocol/</guid><description>深入介绍 MySQL 客户端-服务端通信协议，包括握手包、能力标志、HandshakeResponse、响应包格式、结果集解析，以及用 Go 手写 MySQL 客户端的完整实现。</description><pubDate>Sun, 27 Mar 2022 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>使用 GitHub Actions 编译树莓派内核</title><link>https://meiki.dev/blog/github-actions-pi-kernel/</link><guid isPermaLink="true">https://meiki.dev/blog/github-actions-pi-kernel/</guid><description>记录如何用 GitHub Actions 自动化交叉编译树莓派内核，并将编译结果上传到 Release。</description><pubDate>Tue, 26 Jan 2021 00:00:00 GMT</pubDate><author>meiki</author></item><item><title>OAuth2.0 与 JWT：授权类型与令牌结构详解</title><link>https://meiki.dev/blog/oauth-jwt/</link><guid isPermaLink="true">https://meiki.dev/blog/oauth-jwt/</guid><description>从「为什么需要 OAuth」讲起，逐一说明 OAuth2.0 的四种主要授权类型各自适用什么场景，以及 JWT 令牌的三段结构、签名验证原理和使用时的注意事项。</description><pubDate>Tue, 12 May 2020 00:00:00 GMT</pubDate><author>meiki</author></item></channel></rss>