<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Agent on 魔都水滴</title>
    <link>https://blog.margrop.net/tag/agent/</link>
    <description>Recent content in Agent on 魔都水滴</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-CN</language>
    <lastBuildDate>Wed, 29 Jul 2026 20:30:00 +0800</lastBuildDate>
    <atom:link href="https://blog.margrop.net/tag/agent/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>电脑从不“突然坏掉”：看懂日志，十分钟学会像侦探一样排障</title>
      <link>https://blog.margrop.net/post/%E7%9C%8B%E6%97%A5%E5%BF%97-log-reading-art/</link>
      <pubDate>Wed, 29 Jul 2026 20:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/%E7%9C%8B%E6%97%A5%E5%BF%97-log-reading-art/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;电脑很少会“毫无征兆地坏掉”。大多数时候，它早就把线索写进了日志：某个磁盘逐渐变满、某个服务先出现警告、某次 DNS 查询失败、某个进程反复启动又退出。真正的排障，不是看到红色报错就马上重装系统，而是像侦探一样回答五个问题：&lt;strong&gt;什么时候发生？谁发生了？严重程度怎样？前后还发生了什么？修好后能不能验证？&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;这篇文章不把日志讲成只有工程师才懂的黑话，而是把它比作电脑每天写的日记。你会看到 Windows 11、Ubuntu 26.04 和 macOS 26 的真实采集输出，拿到三套不依赖第三方服务的只读脚本，还能把同一套思路交给 Agent 自动执行。即使你是小学生，也应该能看懂其中大部分；如果你是开发者或运维人员，则可以直接把方法带回生产环境。&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>AI 怎么学会“用手”的？从只会聊天到会查、会写、会操作</title>
      <link>https://blog.margrop.net/post/ai-tool-calling-mcp/</link>
      <pubDate>Sun, 19 Jul 2026 22:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/ai-tool-calling-mcp/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;AI 并不是突然长出了手。它只是学会了一个非常关键的动作：&lt;strong&gt;先判断自己需要什么工具，再用结构化参数请求工具，等工具返回真实结果，最后把结果翻译成人话。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;这套机制通常叫 &lt;strong&gt;Tool Calling（工具调用）&lt;/strong&gt;；在不同平台上也会看到 Function Calling、Tools API 等名字。MCP（Model Context Protocol，模型上下文协议）则像一套“统一插座”，让不同的 AI 应用可以用相似的方式发现和调用文件、数据库、搜索、工单、浏览器等能力。&lt;/p&gt;&#xA;&lt;p&gt;本文不把 AI 神化成“会自己做事的数字员工”，而是把一次调用拆开给你看：模型到底做了什么、真正执行动作的是谁、为什么 MCP 会火、权限应该放在哪里，以及为什么“能调用工具”不等于“可以随便给它钥匙”。文中截图来自 OpenAI 与 MCP 官方页面，命令输出图为本文根据真实调用流程制作的示意证据；文章不包含任何真实内网地址或主机名。&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>AI 为什么会一本正经地胡说八道？——你以为它在思考，其实它在玩‘超级成语接龙’</title>
      <link>https://blog.margrop.net/post/ai-hallucination-super-chengyu/</link>
      <pubDate>Sun, 19 Jul 2026 20:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/ai-hallucination-super-chengyu/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;AI 幻觉不是“模型偶尔抽风”，也不只是某个版本的 Bug。只要模型的核心任务仍然是：根据上下文预测下一段最可能出现的文字，那么它就可能生成一段听起来非常完整、语气非常肯定、实际上没有证据支撑的内容。&lt;/p&gt;&#xA;&lt;p&gt;最容易记住的比喻是：&lt;strong&gt;大语言模型像一个读过很多书、特别会接话的“超级成语接龙选手”。它擅长把句子接得顺，却不天然保证每句话都是真的。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>AI 为什么总说‘我忘了’？Token、上下文窗口与那叠写满就必须丢掉的便利贴</title>
      <link>https://blog.margrop.net/post/ai-token-context-window-sticky-notes/</link>
      <pubDate>Sun, 19 Jul 2026 18:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/ai-token-context-window-sticky-notes/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;AI 的“记忆力差”，很多时候不是它完全没有记住，而是当前对话能带进模型的内容有限。可以把上下文窗口想成一叠有限容量的便利贴：新的问题和工具输出不断贴上去，便利贴写满以后，系统就必须压缩、截断，或者把最旧的一部分移走。被移走的内容，模型在当前请求里就很可能再也看不到。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;你有没有遇到过这种场景：刚刚和 AI 约定“所有代码都用 Python”，聊了十几轮以后，它突然给出一段 JavaScript；你明明把项目背景写得很完整，AI 却又问了一遍“你使用的是什么系统”；或者你上传了一篇长文档，AI 能准确复述开头，却对中间那条最重要的限制条件一无所知。&lt;/p&gt;&#xA;&lt;p&gt;这看起来像“AI 记性不好”，但更准确的说法是：&lt;strong&gt;AI 每次回答时，能看到的内容受到上下文窗口限制；而能看到，也不代表它会同等重视每一段内容。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;本文不把 Token 讲成吓人的数学名词，而是把它讲成一套便利贴管理规则。你会看到 Token 是什么、上下文窗口如何装载、为什么长对话会遗忘、Agent 为什么更容易把窗口塞满，以及普通用户如何用简单的整理方法让 AI 少忘事。&lt;/p&gt;</description>
    </item>
    <item>
      <title>别再盲目执行 rsync！我用 Dry Run 揪出差异文件，再安全完成增量同步</title>
      <link>https://blog.margrop.net/post/rsync-diff-incremental-sync/</link>
      <pubDate>Sat, 11 Jul 2026 13:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/rsync-diff-incremental-sync/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;rsync&lt;/code&gt; 最值得养成的习惯，不是背更多参数，而是把同步拆成两步：&lt;strong&gt;先用 &lt;code&gt;--dry-run&lt;/code&gt; 生成差异计划，确认无误后再执行正式同步&lt;/strong&gt;。如果还会删除目标端文件，则必须把删除能力单独授权，不能让 &lt;code&gt;--delete&lt;/code&gt; 悄悄成为默认动作。&lt;/p&gt;&#xA;&lt;p&gt;文首那段 &lt;code&gt;rsync -n -avz --delete --out-format=&amp;quot;%n&amp;quot;&lt;/code&gt; 确实能看到一部分将变化的路径，但它只输出文件名，后续再靠 &lt;code&gt;grep&lt;/code&gt; 猜“哪些是文件、哪些是删除”并不稳。更可靠的做法是使用 &lt;code&gt;--itemize-changes&lt;/code&gt;，并把 &lt;code&gt;%i&lt;/code&gt; 与 &lt;code&gt;%n&lt;/code&gt; 一起输出，让每一行自己说明是新增、更新、删除还是目录属性变化。&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>macOS 26 后台守护进程开机自启：frp / EasyTier 应该放进 LaunchDaemon，而不是登录项</title>
      <link>https://blog.margrop.net/post/macos-26-launchdaemon-boot-service-frp-easytier/</link>
      <pubDate>Sat, 27 Jun 2026 17:12:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/macos-26-launchdaemon-boot-service-frp-easytier/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;如果你要让 &lt;code&gt;frp&lt;/code&gt;、&lt;code&gt;EasyTier&lt;/code&gt;、同步器、采集器、机器人、代理程序这类后台服务在 macOS 26 上开机自动运行，核心不是“把命令藏在哪里”，而是“让系统的服务管理器负责它”。这篇文章只讨论后台常驻服务，不讨论普通桌面 App 的登录启动。&lt;/p&gt;&#xA;&lt;p&gt;macOS 26 上如果希望后台服务在用户登录前就启动，应该用 /Library/LaunchDaemons。登录项和 LaunchAgent 更像“人进门后打开的工具”，而 LaunchDaemon 才像“楼里的电梯和水泵”，机器起来就要工作。&lt;/p&gt;&#xA;&lt;p&gt;我会给出两条路：&lt;strong&gt;人工配置&lt;/strong&gt;，适合你想理解每一步；&lt;strong&gt;Agent/一键脚本自动配置&lt;/strong&gt;，适合你已经知道二进制和配置文件放在哪里，希望复制一段脚本直接落地。脚本不依赖第三方服务，不下载外部 wrapper，也不会写入任何真实 IP、真实主机名或私有域名。&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Windows 11/10 后台服务开机自启：把 frp、EasyTier 变成真正无人值守的后台任务</title>
      <link>https://blog.margrop.net/post/windows-11-10-background-service-autostart-frp-easytier/</link>
      <pubDate>Sat, 27 Jun 2026 17:11:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/windows-11-10-background-service-autostart-frp-easytier/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;如果你要让 &lt;code&gt;frp&lt;/code&gt;、&lt;code&gt;EasyTier&lt;/code&gt;、同步器、采集器、机器人、代理程序这类后台服务在 Windows 11/10 上开机自动运行，核心不是“把命令藏在哪里”，而是“让系统的服务管理器负责它”。这篇文章只讨论后台常驻服务，不讨论普通桌面 App 的登录启动。&lt;/p&gt;&#xA;&lt;p&gt;Windows 的关键判断是：程序是不是原生 Windows Service。frp、EasyTier 这类常见命令行守护进程通常更适合用计划任务在系统启动时运行，因为计划任务是系统内置能力，不需要 NSSM、WinSW 之类第三方 wrapper。&lt;/p&gt;&#xA;&lt;p&gt;我会给出两条路：&lt;strong&gt;人工配置&lt;/strong&gt;，适合你想理解每一步；&lt;strong&gt;Agent/一键脚本自动配置&lt;/strong&gt;，适合你已经知道二进制和配置文件放在哪里，希望复制一段脚本直接落地。脚本不依赖第三方服务，不下载外部 wrapper，也不会写入任何真实 IP、真实主机名或私有域名。&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Ubuntu 26.04 后台服务开机自启：把 frp / EasyTier 交给 systemd，别再手敲命令了</title>
      <link>https://blog.margrop.net/post/ubuntu-2604-systemd-boot-service-frp-easytier/</link>
      <pubDate>Sat, 27 Jun 2026 17:10:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/ubuntu-2604-systemd-boot-service-frp-easytier/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;如果你要让 &lt;code&gt;frp&lt;/code&gt;、&lt;code&gt;EasyTier&lt;/code&gt;、同步器、采集器、机器人、代理程序这类后台服务在 Ubuntu 26.04 上开机自动运行，核心不是“把命令藏在哪里”，而是“让系统的服务管理器负责它”。这篇文章只讨论后台常驻服务，不讨论普通桌面 App 的登录启动。&lt;/p&gt;&#xA;&lt;p&gt;Ubuntu 26.04 上后台服务的标准答案不是把命令塞进 shell 启动脚本，而是写成 systemd unit。systemd 能在网络就绪后启动它，能记录日志，能失败重启，也能在关机时按顺序停止。&lt;/p&gt;&#xA;&lt;p&gt;我会给出两条路：&lt;strong&gt;人工配置&lt;/strong&gt;，适合你想理解每一步；&lt;strong&gt;Agent/一键脚本自动配置&lt;/strong&gt;，适合你已经知道二进制和配置文件放在哪里，希望复制一段脚本直接落地。脚本不依赖第三方服务，不下载外部 wrapper，也不会写入任何真实 IP、真实主机名或私有域名。&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>别再迷信 Agent 框架：12-Factor Agents 才是 AI 时代的工程底线</title>
      <link>https://blog.margrop.net/post/12-factor-agents-agent-principles/</link>
      <pubDate>Sat, 23 May 2026 14:50:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/12-factor-agents-agent-principles/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;12-Factor Agents&lt;/code&gt; 不是一个让你安装后直接开箱即用的 Agent 框架，也不是某种 Codex / Claude / Cursor 里的 Skill。它更像 AI 时代写 Agent 的工程原则清单：当你发现“把大模型、工具列表和一个 while loop 拼起来”只能做到 70% 到 80% 可用，却迟迟过不了生产质量线时，这套原则会提醒你把提示词、上下文、工具调用、状态、人类审批、错误压缩和控制流重新收回到软件工程手里。&lt;/p&gt;&#xA;&lt;p&gt;我最喜欢它的一点，是它没有把 Agent 神化。相反，它反复强调：可靠的 Agent 并不是“让模型自由发挥”，而是把 LLM 放在一个可观察、可恢复、可审计、可中断、可复现的系统里。真正值得学习的不是某个框架 API，而是这背后的工程姿势。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;本文所有示例都使用公开项目、公开链接和占位符，不包含真实服务器地址、账号、Token、业务配置或任何内网信息。文中配图来自 HumanLayer 开源项目 &lt;code&gt;12-factor-agents&lt;/code&gt; 的官方仓库，内容按其 CC BY-SA 4.0 授权引用；代码授权信息以原仓库为准。&lt;/p&gt;</description>
    </item>
    <item>
      <title>百度网盘别只会拖拽：BaiduPCS-Go CLI 和 Agent 自动化实战</title>
      <link>https://blog.margrop.net/post/baidupcs-go-cli-agent-guide/</link>
      <pubDate>Sat, 16 May 2026 10:06:01 +0800</pubDate>
      <guid>https://blog.margrop.net/post/baidupcs-go-cli-agent-guide/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;如果你只是偶尔从百度网盘下载一两个文件，网页和官方客户端当然够用。但只要你开始批量下载、服务器拉取、自动备份、远程归档、目录巡检，或者希望让 Codex、Claude、OpenClaw、HermesAgent 这类 Agent 帮你处理网盘任务，图形界面很快就会变成阻碍。&lt;code&gt;BaiduPCS-Go&lt;/code&gt; 的价值不是“神奇提速”，而是把百度网盘变成一个可以被脚本、终端和 Agent 调度的文件系统入口。本文会从安装核验、BDUSS/STOKEN 登录、常用命令、配置策略、安全边界，一直讲到怎样把它交给 Agent 使用。&lt;/p&gt;&#xA;&lt;p&gt;本文所有账号、Cookie、路径、任务描述和配置均为脱敏示例，不包含任何真实 BDUSS、STOKEN、Cookie、内网地址、私人目录或业务信息。请不要把自己的登录凭据写进公开仓库、博客、截图、聊天记录或 Agent 提示词正文。&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>80元十年域名买完后，下一步就交给 Cloudflare</title>
      <link>https://blog.margrop.net/post/cloudflare-domain-dns-ddns-email-agent/</link>
      <pubDate>Wed, 13 May 2026 08:46:06 +0800</pubDate>
      <guid>https://blog.margrop.net/post/cloudflare-domain-dns-ddns-email-agent/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;便宜域名买完只是第一步。真正能把这个域名玩起来的地方，是把它接到 Cloudflare：DNS 解析、动态 DDNS、企业邮箱验证、邮件转发、证书自动化、甚至让 OpenClaw / HermesAgent 这类 Agent 通过受限 API Token 帮你维护复杂配置，都可以从这里开始。前文已经讲了如何购买最便宜的 &lt;code&gt;10 年 80 元&lt;/code&gt; 左右的 &lt;code&gt;.xyz&lt;/code&gt; 域名，本文就接着讲：买完以后，怎么把它交给 Cloudflare 这个“互联网大善人”，并且尽量少走弯路。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;本文所有截图和示例都使用 &lt;code&gt;example.xyz&lt;/code&gt;、&lt;code&gt;203.0.113.10&lt;/code&gt;、&lt;code&gt;2001:db8::10&lt;/code&gt; 这类公开文档占位符，不包含真实域名、真实 IP、Cloudflare 账号、Zone ID、API Token 或任何内网信息。你照着做时，把占位符替换成自己的域名和服务地址即可。&lt;/p&gt;</description>
    </item>
    <item>
      <title>PVE 8 升 9 别硬刚：一句话交给 Agent，或者按这份清单手工升级</title>
      <link>https://blog.margrop.net/post/pve8-to-pve9-agent-manual-upgrade-guide/</link>
      <pubDate>Tue, 12 May 2026 19:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/pve8-to-pve9-agent-manual-upgrade-guide/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Proxmox VE 8 升级到 9 的本质不是“复制几条命令”，而是一次 Debian Bookworm 到 Trixie、PVE 8.4 到 PVE 9.x、内核与存储网络组件一起变化的系统升级。最省时间的方式，是把检查、备份核对、日志记录、命令执行和升级后验证交给 Codex、Claude、OpenClaw、HermesAgent 这类 Agent；但涉及重启、仓库切换、包删除提示、配置文件覆盖提示时，仍然必须由人确认。想完全手工做也没问题，本文后半部分给出一套可以逐步执行的人工升级清单。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;这篇文章写给两类人：一类是已经习惯让 Agent 管理机器，想用一句话把 PVE 8 到 9 的升级流程交给工具跑完；另一类是更喜欢自己敲命令，希望有一份顺序清楚、风险点明确、可以照着核对的手工操作稿。&lt;/p&gt;&#xA;&lt;p&gt;文中所有主机名、地址、仓库、token、账号都使用占位符，不包含任何真实内网信息。请把 &lt;code&gt;&amp;lt;PVE_NODE&amp;gt;&lt;/code&gt;、&lt;code&gt;&amp;lt;BACKUP_TARGET&amp;gt;&lt;/code&gt;、&lt;code&gt;&amp;lt;ADMIN_CONSOLE&amp;gt;&lt;/code&gt; 这类内容替换成你自己的环境。生产环境升级前，请以 Proxmox 官方文档为准，并先确认备份可以恢复。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu 26.04 升级别乱按：Agent 一句话托管，人工路线也一次讲透</title>
      <link>https://blog.margrop.net/post/ubuntu-2604-upgrade-agent-manual-guide/</link>
      <pubDate>Tue, 12 May 2026 07:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/ubuntu-2604-upgrade-agent-manual-guide/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ubuntu 22.04 / 24.04 升级到 26.04，最重要的不是记住某一条命令，而是先搞清楚升级路径。22.04 LTS 不能直接跳到 26.04 LTS，必须先升级到 24.04 LTS，再从 24.04 LTS 进入 26.04 LTS。并且截至 2026-05-12，Ubuntu 26.04 LTS 虽然已经正式发布，但 24.04 LTS 到 26.04 LTS 的常规 LTS 升级提示通常要等 26.04.1 之后才会面向普通 LTS 用户开放；官方计划里的 26.04.1 Point Release 日期是 2026-07-09。生产机器建议等常规升级路径打开，测试机或评估机才考虑显式使用提前升级参数。&lt;/p&gt;&#xA;&lt;p&gt;如果你已经在使用 Code、Claude、OpenClaw、HermesAgent 这类 Agent，完全可以用一句话把升级任务交出去，让它先做检查、备份、升级和验证，节省大量重复操作时间。但这句话不能只写“帮我升级 Ubuntu”，而要把安全边界、升级路径、备份、业务验证和回滚要求说清楚。本文会给出可以直接复制的 Agent 提示词，也会给出完全人工执行的步骤。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;本文不会出现任何真实主机名、内网地址、账号、密钥、Token、业务系统名称或私人路径。所有命令都使用通用占位符，例如 &lt;code&gt;&amp;lt;HOST&amp;gt;&lt;/code&gt;、&lt;code&gt;&amp;lt;SERVICE&amp;gt;&lt;/code&gt;、&lt;code&gt;&amp;lt;BACKUP_DIR&amp;gt;&lt;/code&gt;。你可以把它们替换成自己的环境值。&lt;/p&gt;</description>
    </item>
    <item>
      <title>如何写提示词，让 OpenClaw、HermesAgent、Codex、Claude、Gemini、OpenCode、Droid 自动写文章并发布到微信公众号草稿箱</title>
      <link>https://blog.margrop.net/post/agent-prompt-wechat-draft-automation/</link>
      <pubDate>Tue, 05 May 2026 16:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/agent-prompt-wechat-draft-automation/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;想让 OpenClaw、HermesAgent、Codex、Claude、Gemini、OpenCode、Droid 这类 Agent 自动写文章、生成博客、转换微信公众号 HTML、检查预览效果，并最终把内容发布到微信公众号草稿箱，提示词不能只写“帮我发一篇文章”。真正有用的提示词要把目标、素材、路径、账号约束、网络白名单、检查项、失败回退、隐私边界和最终验收写清楚。Agent 才能从“写一段内容”升级成“完成一次可验证的发布流程”。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;本文整理一套可以复用的写法：如何准备微信公众号草稿箱 API，为什么固定 IP Linux 机器很重要，怎样让 Agent 先直连再走中转，如何使用 Markdown 到公众号 HTML 的转换器，如何让 Agent 检查白字白底、奇怪缩进、图片可访问性，最后如何把整条流程写进一段高质量提示词里。&lt;/p&gt;&#xA;&lt;p&gt;为了避免泄露任何私人环境信息，本文只使用占位符和抽象示例，不出现真实 AppSecret、内网地址、跳板机地址、仓库地址、主机名、token、cookie 或任何可定位到具体环境的配置。你可以把文中的占位符替换成自己的值，但不要把真实密钥写进公开文章、公开仓库或聊天截图。&lt;/p&gt;</description>
    </item>
    <item>
      <title>给 OpenClaw / HermesAgent 集成群晖操作 SKILL：从一句话到可审计的 NAS 自动化</title>
      <link>https://blog.margrop.net/post/openclaw-hermesagent-synology-skill/</link>
      <pubDate>Tue, 05 May 2026 12:20:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/openclaw-hermesagent-synology-skill/</guid>
      <description>&lt;p&gt;我之前已经整理过两篇偏“命令手册”风格的群晖文章：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.margrop.net/post/synology-ssh-commands/&#34;&gt;Synology 群晖 SSH 命令详解&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.margrop.net/post/synology-diskstation-cli-administration-guide/&#34;&gt;群晖 NAS CLI 管理指南&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;这两篇文章解决的是“人知道有哪些命令可以用”的问题。本文想解决另一个更实际的问题：如果我已经在使用 OpenClaw / HermesAgent 这类 Agent 工具，能不能把这些群晖命令沉淀成一个操作 SKILL，让我以后用一句话就能让 Agent 帮我检查 NAS、整理状态、生成操作计划，甚至在确认后执行一些维护命令？&lt;/p&gt;&#xA;&lt;p&gt;我的答案是：可以，但不应该把它做成“Agent 拿到 root 权限以后随便跑”。正确的集成方式应该是：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;让群晖 SSH 访问可控、可验证、可撤销。&lt;/li&gt;&#xA;&lt;li&gt;把常用群晖 CLI 操作写进 SKILL，让 Agent 知道可用命令、风险分级和输出格式。&lt;/li&gt;&#xA;&lt;li&gt;默认只允许只读诊断命令自动执行。&lt;/li&gt;&#xA;&lt;li&gt;对重启服务、修改权限、改用户、改网络、删除文件、存储相关操作设置确认门禁。&lt;/li&gt;&#xA;&lt;li&gt;每次执行后保留命令、输出和结论，方便回看和追责。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;如果你只想快速理解整篇文章，看下面这张图就够了。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;OpenClaw / HermesAgent 集成群晖操作 SKILL 总览&#34; src=&#34;https://blog.margrop.net/post-images/openclaw-hermesagent-synology-skill/01-overview-handdrawn.svg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Clawd Code 最新代码解析：一个 Python-first 的 Claude Code 重写工作区如何组织命令、工具、会话与审计</title>
      <link>https://blog.margrop.net/post/claude-code-daofa-tishu-source-code-analysis/</link>
      <pubDate>Tue, 31 Mar 2026 20:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/claude-code-daofa-tishu-source-code-analysis/</guid>
      <description>&lt;p&gt;我重新看了 &lt;code&gt;margrop/clawd-code&lt;/code&gt; 的最新代码之后，得出的第一印象是：这仓库已经不再是“泄露源码镜像”的延续叙事了，而是一个明确的 &lt;strong&gt;Python-first porting workspace&lt;/strong&gt;。它的 tracked tree 里，&lt;code&gt;src/&lt;/code&gt; 是活动实现，&lt;code&gt;tests/&lt;/code&gt; 是验证层，&lt;code&gt;archive/claude_code_ts_snapshot/&lt;/code&gt; 是可选的本地归档，&lt;code&gt;src/reference_data/&lt;/code&gt; 则保存了命令、工具和表面覆盖率的镜像数据。&lt;/p&gt;&#xA;&lt;p&gt;这意味着项目关注点变了。它不再只问“原始 Claude Code 是怎么写的”，而是问：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;旧系统的结构能不能被重新组织成更清晰的 Python 工程；&lt;/li&gt;&#xA;&lt;li&gt;命令、工具、会话、权限和启动顺序能不能被显式建模；&lt;/li&gt;&#xA;&lt;li&gt;当前 porting workspace 到底覆盖到了旧体系的哪些边界；&lt;/li&gt;&#xA;&lt;li&gt;哪些部分只是镜像，哪些部分还只是骨架，哪些部分已经能跑出可读的 runtime 报告。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;从这个角度看，这个仓库更像一套“重建中的工程系统”，而不是“保存原样的源码档案”。这也是我把这篇文章重新更新的原因。上一版文章仍然围绕旧快照本体，这一版必须围绕最新的 Python porting 工作区本身来写。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://blog.margrop.net/post-images/clawd-code-architecture-2026.svg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Q：群晖下有Qemu Guest Agent吗？</title>
      <link>https://blog.margrop.net/post/is-dsm-supported-qemu-agent/</link>
      <pubDate>Wed, 20 Jan 2021 13:19:28 +0800</pubDate>
      <guid>https://blog.margrop.net/post/is-dsm-supported-qemu-agent/</guid>
      <description>&lt;p&gt;A：群晖里安装&lt;code&gt;Power Button Package&lt;/code&gt;，关闭&lt;code&gt;PVE&lt;/code&gt;的&lt;code&gt;qemu&lt;/code&gt;代理选项。&lt;/p&gt;&#xA;&lt;h1 id=&#34;power-button-package在哪下载&#34;&gt;Power Button Package在哪下载&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;注意&lt;code&gt;DSM6.1&lt;/code&gt;和&lt;code&gt;DSM6.2&lt;/code&gt;使用的是不同的&lt;code&gt;spk&lt;/code&gt;包&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
  </channel>
</rss>
