<?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 Margrop Blog</title>
    <link>https://blog.margrop.net/en/tag/agent/</link>
    <description>Recent content in Agent on Margrop Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-US</language>
    <lastBuildDate>Wed, 29 Jul 2026 20:30:00 +0800</lastBuildDate>
    <atom:link href="https://blog.margrop.net/en/tag/agent/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Computers Rarely Break “Out of Nowhere”: Read Logs Like a Detective</title>
      <link>https://blog.margrop.net/en/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/en/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;The short conclusion&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Computers rarely fail without leaving a trace. A disk gradually fills up. A service emits warnings before it exits. A DNS lookup fails before a browser reports a timeout. A process starts and stops several times before a user sees a broken page. The practical skill is not to reinstall everything after seeing a red error. It is to ask five detective questions: &lt;strong&gt;When did it happen? Which object was involved? How serious was it? What happened before and after it? Can the result be verified after the fix?&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;This article explains logs as a computer’s diary instead of presenting them as mysterious engineering jargon. It uses real collection output from Windows 11, Ubuntu 26.04, and macOS 26, provides three native read-only collectors, and shows how to give the same evidence-first workflow to an Agent. A child should understand most of the story; an engineer can still reuse the commands and the reasoning pattern.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>How Did AI Learn to Use Its Hands? From Chatting to Checking, Writing, and Acting</title>
      <link>https://blog.margrop.net/en/post/ai-tool-calling-mcp/</link>
      <pubDate>Sun, 19 Jul 2026 22:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/ai-tool-calling-mcp/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;The short answer&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;AI did not suddenly grow hands. It learned a very practical loop: &lt;strong&gt;decide which tool is needed, request that tool with structured arguments, wait for a real result, and then explain the result in human language.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is usually called &lt;strong&gt;Tool Calling&lt;/strong&gt;. You may also see Function Calling or a Tools API. MCP, the Model Context Protocol, is closer to a universal socket: different AI applications can discover and call files, databases, search engines, ticket systems, browsers, and other capabilities through a common protocol.&lt;/p&gt;&#xA;&lt;p&gt;This article opens the loop and examines every moving part: what the model does, who actually performs the action, why MCP matters, where permissions belong, and why “can call a tool” does not mean “should receive the keys to everything.” Screenshots come from official OpenAI and MCP pages; the terminal-style evidence images are generated from the real invocation flow. No real private network address or hostname is included.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Why Does AI Lie So Confidently? — It Is Not Thinking, It Is Playing Supercharged Word Association</title>
      <link>https://blog.margrop.net/en/post/ai-hallucination-super-chengyu/</link>
      <pubDate>Sun, 19 Jul 2026 20:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/ai-hallucination-super-chengyu/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;The short answer&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;AI hallucination is not simply an occasional bug. It is a predictable risk of a system whose basic job is to generate the next likely token from context. The model can produce a fluent, confident, highly structured answer without having verified that every claim is supported by evidence.&lt;/p&gt;&#xA;&lt;p&gt;The easiest analogy is this: &lt;strong&gt;a large language model is a supercharged word-association player. It is exceptionally good at continuing a sentence. It is not automatically a fact-checker.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Why Does AI Keep Saying ‘I Forgot’? Tokens, Context Windows, and the Sticky Notes It Must Throw Away</title>
      <link>https://blog.margrop.net/en/post/ai-token-context-window-sticky-notes/</link>
      <pubDate>Sun, 19 Jul 2026 18:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/ai-token-context-window-sticky-notes/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;The short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;AI often appears to have a bad memory because only a limited amount of material can be carried into the model for the current request. Think of a context window as a stack of sticky notes with finite capacity. New questions and tool outputs keep adding notes. Once the stack is full, the system must summarize, truncate, filter, or remove older notes. If a note is removed from the current context, the model may no longer be able to use it.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Have you ever told an AI, “Use Python for every code example,” only to receive JavaScript fifteen turns later? Or supplied a long document that the model can summarize accurately at the beginning and end, but cannot answer about the important restriction buried in the middle?&lt;/p&gt;&#xA;&lt;p&gt;It is tempting to say that the AI “forgot.” A more precise explanation is this: &lt;strong&gt;the model can only see what fits inside the current context window, and seeing a piece of text does not guarantee that every part of it receives equal attention.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;This article explains tokens and context windows without turning them into intimidating mathematics. The main analogy is a stack of sticky notes. We will look at what tokens are, how a request is assembled, why long conversations become unreliable, why agents fill their context quickly, and how to make AI forget less through simple information management.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stop Running rsync Blindly: Preview Differences Before a Safe Incremental Sync</title>
      <link>https://blog.margrop.net/en/post/rsync-diff-incremental-sync/</link>
      <pubDate>Sat, 11 Jul 2026 13:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/rsync-diff-incremental-sync/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;The short answer&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;The best rsync habit is not memorizing more switches. It is separating every risky job into two stages: &lt;strong&gt;generate a dry-run plan first, review it, and only then perform the real incremental sync&lt;/strong&gt;. Deletion should be a separate, explicit permission rather than a hidden default.&lt;/p&gt;&#xA;&lt;p&gt;The common &lt;code&gt;rsync -n -avz --delete --out-format=&amp;quot;%n&amp;quot;&lt;/code&gt; pattern can list paths that may change, but &lt;code&gt;%n&lt;/code&gt; only preserves the name. A safer machine-readable plan uses &lt;code&gt;--itemize-changes&lt;/code&gt; together with &lt;code&gt;%i&lt;/code&gt;, so each line identifies an addition, update, deletion, or metadata change.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>macOS 26 Boot Daemons: Put frp and EasyTier in LaunchDaemons, Not Login Items</title>
      <link>https://blog.margrop.net/en/post/macos-26-launchdaemon-boot-service-frp-easytier/</link>
      <pubDate>Sat, 27 Jun 2026 17:12:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/macos-26-launchdaemon-boot-service-frp-easytier/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you want &lt;code&gt;frp&lt;/code&gt;, &lt;code&gt;EasyTier&lt;/code&gt;, a sync agent, a collector, a bot, or a proxy daemon to start automatically on macOS 26, the key is not “where can I hide this command?” The key is “which native service manager owns its lifecycle?” This article is about unattended background services, not ordinary desktop login apps.&lt;/p&gt;&#xA;&lt;p&gt;On macOS 26, a daemon that must start before user login belongs in /Library/LaunchDaemons. Login items and LaunchAgents are tools opened after a person enters the room. LaunchDaemons are more like the building&amp;rsquo;s elevator or water pump: they should run as the machine comes up.&lt;/p&gt;&#xA;&lt;p&gt;I will show two paths: &lt;strong&gt;manual configuration&lt;/strong&gt;, for understanding every moving part, and &lt;strong&gt;agent / one-click automation&lt;/strong&gt;, for cases where you already know where the binary and config file live. The scripts are self-contained, use built-in OS mechanisms, do not download third-party wrappers, and do not include real addresses, hostnames, private domains, or secrets.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Windows 11/10 Background Autostart: Run frp and EasyTier Unattended Without Third-Party Wrappers</title>
      <link>https://blog.margrop.net/en/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/en/post/windows-11-10-background-service-autostart-frp-easytier/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you want &lt;code&gt;frp&lt;/code&gt;, &lt;code&gt;EasyTier&lt;/code&gt;, a sync agent, a collector, a bot, or a proxy daemon to start automatically on Windows 11/10, the key is not “where can I hide this command?” The key is “which native service manager owns its lifecycle?” This article is about unattended background services, not ordinary desktop login apps.&lt;/p&gt;&#xA;&lt;p&gt;On Windows, the first decision is whether the executable is a real Windows Service. Common command-line daemons such as frp and EasyTier are usually better handled by Task Scheduler at system startup, because it is built in and does not require NSSM, WinSW, or another wrapper.&lt;/p&gt;&#xA;&lt;p&gt;I will show two paths: &lt;strong&gt;manual configuration&lt;/strong&gt;, for understanding every moving part, and &lt;strong&gt;agent / one-click automation&lt;/strong&gt;, for cases where you already know where the binary and config file live. The scripts are self-contained, use built-in OS mechanisms, do not download third-party wrappers, and do not include real addresses, hostnames, private domains, or secrets.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Ubuntu 26.04 Boot Services Done Right: Let systemd Run frp and EasyTier for You</title>
      <link>https://blog.margrop.net/en/post/ubuntu-2604-systemd-boot-service-frp-easytier/</link>
      <pubDate>Sat, 27 Jun 2026 17:10:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/ubuntu-2604-systemd-boot-service-frp-easytier/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you want &lt;code&gt;frp&lt;/code&gt;, &lt;code&gt;EasyTier&lt;/code&gt;, a sync agent, a collector, a bot, or a proxy daemon to start automatically on Ubuntu 26.04, the key is not “where can I hide this command?” The key is “which native service manager owns its lifecycle?” This article is about unattended background services, not ordinary desktop login apps.&lt;/p&gt;&#xA;&lt;p&gt;On Ubuntu 26.04, the standard answer for a background daemon is not a shell startup hack. It is a systemd unit. systemd can wait for the network, start the process before login, collect logs, restart on failure, and stop it in order during shutdown.&lt;/p&gt;&#xA;&lt;p&gt;I will show two paths: &lt;strong&gt;manual configuration&lt;/strong&gt;, for understanding every moving part, and &lt;strong&gt;agent / one-click automation&lt;/strong&gt;, for cases where you already know where the binary and config file live. The scripts are self-contained, use built-in OS mechanisms, do not download third-party wrappers, and do not include real addresses, hostnames, private domains, or secrets.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Migrating from OpenClaw to HermesAgent: A Smooth AI Agent Migration in Practice</title>
      <link>https://blog.margrop.net/en/post/openclaw-to-hermesagent-migration/</link>
      <pubDate>Fri, 29 May 2026 08:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/openclaw-to-hermesagent-migration/</guid>
      <description>&lt;h2 id=&#34;introduction-why-am-i-moving&#34;&gt;Introduction: Why Am I &amp;ldquo;Moving&amp;rdquo;?&lt;/h2&gt;&#xA;&lt;p&gt;In 2026, the AI agent landscape is evolving at an incredible pace. Tools that were cutting-edge six months ago might already be surpassed by more powerful alternatives. As someone who relies heavily on AI agents for daily work, I&amp;rsquo;ve been closely following the latest developments in this field.&lt;/p&gt;&#xA;&lt;p&gt;Recently, I completed a full migration from OpenClaw to HermesAgent. This wasn&amp;rsquo;t an impulsive decision, but a thoughtful choice made after experiencing the differences between the two tools in real-world usage.&lt;/p&gt;&#xA;&lt;p&gt;This article will share in detail:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Background&lt;/strong&gt;: What OpenClaw and HermesAgent are&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Migration Reasons&lt;/strong&gt;: Why I decided to migrate&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Migration Process&lt;/strong&gt;: Step-by-step guide to complete the migration&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Pitfalls Encountered&lt;/strong&gt;: Problems and solutions during migration&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Post-Migration Cleanup&lt;/strong&gt;: How to completely remove OpenClaw residuals&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Post-Migration Experience&lt;/strong&gt;: New capabilities gained from HermesAgent&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Q&amp;amp;A&lt;/strong&gt;: Frequently asked questions&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>Stop Worshipping Agent Frameworks: 12-Factor Agents as an Engineering Baseline</title>
      <link>https://blog.margrop.net/en/post/12-factor-agents-agent-principles/</link>
      <pubDate>Sat, 23 May 2026 14:50:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/12-factor-agents-agent-principles/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;The short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;12-Factor Agents&lt;/code&gt; is not an installable agent framework, and it is not a Skill for Codex, Claude, Cursor, or any other agent runtime. It is better understood as a set of engineering principles for the AI era. When a system made from a large model, a tool list, and a while loop reaches the familiar 70% or 80% quality bar but refuses to become production-grade, these principles tell you where to look: prompts, context, structured outputs, state, human approval, error compaction, control flow, and recovery.&lt;/p&gt;&#xA;&lt;p&gt;The best part is that it does not romanticize agents. It says, in effect, that reliable agents are mostly software. The LLM is powerful, but it should live inside a system that is observable, interruptible, recoverable, auditable, and testable.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;All examples in this article use public projects, public links, and placeholders. No real server addresses, accounts, tokens, business configuration, or private network details are included. The figures are taken from the official &lt;code&gt;humanlayer/12-factor-agents&lt;/code&gt; repository and are referenced under the project author&amp;rsquo;s CC BY-SA 4.0 content license statement. Code license details should be checked in the upstream repository.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stop Dragging Files Around: BaiduPCS-Go CLI and Agent Workflows for Baidu Netdisk</title>
      <link>https://blog.margrop.net/en/post/baidupcs-go-cli-agent-guide/</link>
      <pubDate>Sat, 16 May 2026 10:06:01 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/baidupcs-go-cli-agent-guide/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Bottom line first&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you only download one or two files from Baidu Netdisk once in a while, the web UI and official desktop client are fine. Once you start doing batch downloads, remote server pulls, archive uploads, directory audits, or Agent-assisted workflows with Codex, Claude, OpenClaw, HermesAgent, or similar tools, the graphical UI becomes friction. &lt;code&gt;BaiduPCS-Go&lt;/code&gt; is useful not because it is a magic speed booster, but because it turns Baidu Netdisk into something scripts, terminals, and Agents can operate. This article walks through installation checks, BDUSS/STOKEN login, everyday commands, configuration, safety rules, and practical Agent integration.&lt;/p&gt;&#xA;&lt;p&gt;All accounts, cookies, paths, tasks, and settings in this article are sanitized examples. They do not contain real BDUSS, STOKEN, cookies, private directories, internal addresses, or business information.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>After Buying an 80-Yuan 10-Year Domain, Hand the Rest to Cloudflare</title>
      <link>https://blog.margrop.net/en/post/cloudflare-domain-dns-ddns-email-agent/</link>
      <pubDate>Wed, 13 May 2026 08:46:06 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/cloudflare-domain-dns-ddns-email-agent/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;The short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Buying a cheap domain is only the first step. The real value starts when you move authoritative DNS to Cloudflare: DNS records, dynamic DNS, business email verification, mail forwarding, certificate automation, and even Agent-assisted configuration through scoped API Tokens can all live behind one clean control plane. The previous article covered how to buy a low-cost &lt;code&gt;.xyz&lt;/code&gt; domain for roughly &lt;code&gt;80 RMB for 10 years&lt;/code&gt;. This one continues from there: how to connect that domain to Cloudflare, the generous infrastructure provider many people jokingly call a public good of the Internet, and how to use it efficiently without leaking secrets.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;All screenshots and examples in this article use safe placeholders such as &lt;code&gt;example.xyz&lt;/code&gt;, &lt;code&gt;203.0.113.10&lt;/code&gt;, and &lt;code&gt;2001:db8::10&lt;/code&gt;. They do not contain real domains, real IP addresses, Cloudflare account identifiers, Zone IDs, API Tokens, or private network information. Replace the placeholders with your own values when you follow the steps.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Upgrading PVE 8 to 9 Without Brute Force: Let an Agent Drive It, or Follow This Manual Checklist</title>
      <link>https://blog.margrop.net/en/post/pve8-to-pve9-agent-manual-upgrade-guide/</link>
      <pubDate>Tue, 12 May 2026 19:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/pve8-to-pve9-agent-manual-upgrade-guide/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Upgrading Proxmox VE 8 to 9 is not just copying a few commands. It is a major system upgrade from Debian Bookworm to Trixie, from PVE 8.4 to PVE 9.x, with kernel, storage, networking, Ceph, and HA behavior in the blast radius. The fastest practical path is to let Codex, Claude, OpenClaw, HermesAgent, or a similar Agent handle checks, command sequencing, logging, and post-upgrade verification. The human operator still needs to approve repository changes, package removals, configuration prompts, reboot timing, and recovery decisions. If you prefer doing everything by hand, the second half of this article gives a concrete manual checklist.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;This article is for two groups of operators. The first group already uses Agents over SSH and wants a scoped one-sentence task for upgrading PVE. The second group prefers typing every command manually and wants a clear, ordered procedure with the main risk points called out.&lt;/p&gt;&#xA;&lt;p&gt;All hostnames, addresses, repositories, tokens, and accounts in this article are placeholders. Replace values such as &lt;code&gt;&amp;lt;PVE_NODE&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;BACKUP_TARGET&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;ADMIN_CONSOLE&amp;gt;&lt;/code&gt; with your own environment. Before touching a production host, read the official Proxmox documentation and verify that your backups are restorable.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu 26.04 Upgrade Guide: Let an Agent Do It, or Run It by Hand</title>
      <link>https://blog.margrop.net/en/post/ubuntu-2604-upgrade-agent-manual-guide/</link>
      <pubDate>Tue, 12 May 2026 07:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/ubuntu-2604-upgrade-agent-manual-guide/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;The short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Upgrading Ubuntu 22.04 or 24.04 to Ubuntu 26.04 is not about memorizing one command. It is about following the supported upgrade path. Ubuntu 22.04 LTS should not be jumped directly to Ubuntu 26.04 LTS. Upgrade 22.04 LTS to 24.04 LTS first, then move from 24.04 LTS to 26.04 LTS. As of 2026-05-12, Ubuntu 26.04 LTS has already been released, but the normal LTS-to-LTS upgrade prompt from 24.04 LTS to 26.04 LTS is typically enabled after the first point release. The official 26.04 schedule lists the 26.04.1 point release on 2026-07-09. Production systems should usually wait for the regular upgrade path; test systems can evaluate an early upgrade only with explicit risk acceptance.&lt;/p&gt;&#xA;&lt;p&gt;If you already use agents such as Code, Claude, OpenClaw, HermesAgent, Codex, or OpenCode, this is a good task to delegate. But do not just say “upgrade Ubuntu.” Give the agent a bounded job: inspect first, back up, follow the supported path, keep logs, ask before risky choices, reboot, verify services, and report evidence. This article gives both a ready-to-copy agent prompt and a manual procedure.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;All examples in this article are generic. No private hostnames, internal addresses, accounts, credentials, tokens, business system names, or personal paths are included. Replace placeholders such as &lt;code&gt;&amp;lt;HOST&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;SERVICE&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;BACKUP_DIR&amp;gt;&lt;/code&gt; with values from your own environment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Prompt OpenClaw, HermesAgent, Codex, Claude, Gemini, OpenCode, and Droid to Write Articles and Publish WeChat Drafts</title>
      <link>https://blog.margrop.net/en/post/agent-prompt-wechat-draft-automation/</link>
      <pubDate>Tue, 05 May 2026 16:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/agent-prompt-wechat-draft-automation/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you want an agent such as OpenClaw, HermesAgent, Codex, Claude, Gemini, OpenCode, or Droid to write an article, prepare a Hugo blog post, convert the Chinese version into WeChat-compatible HTML, preview it, fix layout issues, and create a WeChat Official Account draft, the prompt cannot simply say &amp;ldquo;write and publish an article.&amp;rdquo; A useful prompt must define the goal, source material, paths, account constraints, fixed-IP requirements, conversion steps, preview checks, failure recovery, privacy boundaries, and final verification evidence.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;This post describes a reusable prompting pattern for article automation. It explains how to prepare the WeChat draft API, why a Linux machine with a fixed public IP is often required, how to tell an agent to try local API access first and then fall back to a fixed-egress host, how to use a Markdown-to-WeChat-HTML converter, and how to make the agent check for invisible white text, strange indentation, broken images, and accidental leaks before declaring the job done.&lt;/p&gt;&#xA;&lt;p&gt;All examples are privacy-safe. They use placeholders rather than real secrets, private IP addresses, hostnames, repository URLs, tokens, cookies, or personal paths. Replace placeholders with your own values only in a protected runtime environment, never in a public article, public repository, or screenshot.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Integrating Synology Operations as an OpenClaw / HermesAgent Skill: From One Sentence to Auditable NAS Automation</title>
      <link>https://blog.margrop.net/en/post/openclaw-hermesagent-synology-skill/</link>
      <pubDate>Tue, 05 May 2026 12:20:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/openclaw-hermesagent-synology-skill/</guid>
      <description>&lt;p&gt;I have already written two Synology CLI references on this blog:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.margrop.net/en/post/synology-ssh-commands/&#34;&gt;Synology SSH Commands Cheatsheet&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.margrop.net/en/post/synology-diskstation-cli-administration-guide/&#34;&gt;Synology NAS CLI Administration Guide&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Those posts answer the question: “What commands can a human run on a Synology NAS?” This article answers a different question: if I already use OpenClaw / HermesAgent, how can I turn those commands into an operations Skill so that I can ask the agent, in one sentence, to inspect the NAS, summarize evidence, prepare a maintenance plan, and execute approved commands only when the risk is acceptable?&lt;/p&gt;&#xA;&lt;p&gt;The short answer is: yes, but the Skill must not become an unrestricted root shell. The right design is:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Make Synology SSH access controlled, testable, and revocable.&lt;/li&gt;&#xA;&lt;li&gt;Put common Synology CLI operations into a Skill, together with command categories, risk levels, and output rules.&lt;/li&gt;&#xA;&lt;li&gt;Allow read-only diagnostics by default.&lt;/li&gt;&#xA;&lt;li&gt;Require explicit approval for service restarts, permission changes, user changes, network changes, deletion, and storage operations.&lt;/li&gt;&#xA;&lt;li&gt;Preserve commands, output, and reasoning so each operation remains auditable.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;If you only want the big picture, the diagram below summarizes the whole article.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;OpenClaw / HermesAgent Synology Skill overview&#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 Latest Code Analysis: How a Python-First Claude Code Rewrite Organizes Commands, Tools, Sessions, and Audit</title>
      <link>https://blog.margrop.net/en/post/claude-code-daofa-tishu-source-code-analysis/</link>
      <pubDate>Tue, 31 Mar 2026 20:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/claude-code-daofa-tishu-source-code-analysis/</guid>
      <description>&lt;p&gt;After reading the latest code in &lt;code&gt;margrop/clawd-code&lt;/code&gt;, the main change is obvious: this repository is no longer just an archive of the leaked Claude Code tree. It is now a &lt;strong&gt;Python-first porting workspace&lt;/strong&gt;. The tracked tree centers on &lt;code&gt;src/&lt;/code&gt; as active implementation, &lt;code&gt;tests/&lt;/code&gt; as verification, &lt;code&gt;archive/claude_code_ts_snapshot/&lt;/code&gt; as an optional local archive, and &lt;code&gt;src/reference_data/&lt;/code&gt; as the mirrored data source for commands, tools, and surface coverage.&lt;/p&gt;&#xA;&lt;p&gt;That changes the question. We are no longer asking only “what did the original source look like?” We are asking:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;can the old system be reorganized into a maintainable Python workspace?&lt;/li&gt;&#xA;&lt;li&gt;can commands, tools, sessions, permissions, and startup order be modeled explicitly?&lt;/li&gt;&#xA;&lt;li&gt;how much of the original surface is mirrored today?&lt;/li&gt;&#xA;&lt;li&gt;which parts are already runnable, and which parts are still skeletal?&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;That is why I rewrote this post. The previous version still revolved around the leaked snapshot itself. This version needs to talk about the &lt;strong&gt;new engineering object&lt;/strong&gt;: the rewrite workspace.&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>Does Synology DSM Support QEMU Guest Agent?</title>
      <link>https://blog.margrop.net/en/post/is-dsm-supported-qemu-agent/</link>
      <pubDate>Wed, 20 Jan 2021 13:19:28 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/is-dsm-supported-qemu-agent/</guid>
      <description>&lt;p&gt;Install the &lt;code&gt;Power Button Package&lt;/code&gt; in Synology DSM and disable the &lt;code&gt;qemu&lt;/code&gt; agent option in &lt;code&gt;PVE&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h1 id=&#34;where-to-download-the-power-button-package&#34;&gt;Where to Download the Power Button Package&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Note that &lt;code&gt;DSM 6.1&lt;/code&gt; and &lt;code&gt;DSM 6.2&lt;/code&gt; use different &lt;code&gt;spk&lt;/code&gt; packages&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
  </channel>
</rss>
