<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>AI Agent on Margrop Blog</title>
    <link>https://blog.margrop.net/en/tag/ai-agent/</link>
    <description>Recent content in AI Agent on Margrop Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-US</language>
    <lastBuildDate>Sun, 19 Jul 2026 22:00:00 +0800</lastBuildDate>
    <atom:link href="https://blog.margrop.net/en/tag/ai-agent/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Stop Installing Another PC Cleaner: What Desktop Software Can an AI Agent Actually Replace?</title>
      <link>https://blog.margrop.net/en/post/ai-agent-replace-desktop-software/</link>
      <pubDate>Sun, 19 Jul 2026 22:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/ai-agent-replace-desktop-software/</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;An AI Agent can replace many desktop utilities whose main job is clicking the same buttons over and over. It does not turn every application into a chat box, and it is not a magical “computer doctor.” Its real advantage is orchestration: it can inspect the machine, understand the goal, combine built-in tools, execute a sequence, and explain the evidence.&lt;/p&gt;&#xA;&lt;p&gt;Across five categories—file conversion, junk scanning, performance optimization, configuration changes, and computer repair—the replacement level is different. File conversion and reporting are highly automatable. Performance work and configuration changes are semi-automatic. Hardware repair remains a human job, with the Agent acting as a diagnostic assistant.&lt;/p&gt;&#xA;&lt;p&gt;The safety rule for every script in this article is simple: &lt;strong&gt;read first, write second; back up first, change second; verify before claiming success.&lt;/strong&gt; All three scripts are local-only and start in report mode. Destructive actions require an explicit flag and a second confirmation.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Superpowers 6: What Actually Changed, and Why Your Agent Got Harder to Fool</title>
      <link>https://blog.margrop.net/en/post/superpowers-6-whats-new/</link>
      <pubDate>Mon, 13 Jul 2026 15:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/superpowers-6-whats-new/</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;If you already write code with Claude Code, OpenCode, or Codex, you have probably heard of Superpowers. It is not another &amp;ldquo;magic prompt.&amp;rdquo; It is a skill framework that makes your agent &lt;strong&gt;work by process&lt;/strong&gt; — turning the habits of a good engineer (&amp;ldquo;think before you act&amp;rdquo;, &amp;ldquo;write the test before the code&amp;rdquo;, &amp;ldquo;collect evidence before fixing the bug&amp;rdquo;) into operating procedures the agent must follow.&lt;/p&gt;&#xA;&lt;p&gt;From v6.0.0 to the latest v6.1.1, Superpowers shipped a dense run of upgrades: &lt;strong&gt;Subagent-Driven Development (SDD) lost half its reviewers but got stricter; plans gained a Global Constraints block and per-task Interfaces; the brainstorming companion got a one-time key; Codex can install from the marketplace; and Gemini CLI was dropped after Google EOLed it.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;This article unpacks the wave, what you actually get, and why it makes your agent&amp;rsquo;s output steadier.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Stop Letting AI Guess: Connect MySQL, Prometheus, Loki and Grafana to an Agent, Step by Step</title>
      <link>https://blog.margrop.net/en/post/mysql-prometheus-loki-grafana-ai-agent-hands-on/</link>
      <pubDate>Sat, 11 Jul 2026 08:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/mysql-prometheus-loki-grafana-ai-agent-hands-on/</guid>
      <description>Many teams already run MySQL, Prometheus, Loki and Grafana. Yet when an alert fires, the on-call engineer still jumps between four windows: inspect a dashboard, write a PromQL query, search logs for a trace ID, and finally connect to the database to confirm the business record.&#xA;It is like a hospital that owns a thermometer, medical records, laboratory reports and a monitoring wall, while the doctor still has to visit four rooms and copy every number by hand.</description>
    </item>
    <item>
      <title>Stop Reading Logs by Hand: A Practical ELK-to-AI-Agent Guide from Deployment to Assisted Troubleshooting</title>
      <link>https://blog.margrop.net/en/post/elk-ai-agent-hands-on/</link>
      <pubDate>Sat, 11 Jul 2026 03:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/elk-ai-agent-hands-on/</guid>
      <description>The traditional incident-response ritual is familiar: open Kibana, choose a time range, write a query, scan pages of logs, copy a few stack traces, and manually assemble a theory. Once several services are involved, the job feels like finding one screw in a warehouse with no clerk.&#xA;A better design keeps ELK responsible for dependable ingestion, normalization, search, and visualization, then adds an MCP bridge that lets an AI Agent retrieve evidence through tools.</description>
    </item>
    <item>
      <title>Stop Clicking Through VMs: A Hands-On Guide to Connecting Proxmox VE to an AI Agent Safely</title>
      <link>https://blog.margrop.net/en/post/proxmox-ve-ai-agent-guide/</link>
      <pubDate>Sat, 11 Jul 2026 02:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/proxmox-ve-ai-agent-guide/</guid>
      <description>Connecting an AI agent to Proxmox VE sounds like giving a robot administrator the keys to your datacenter. That is exactly what you should not do. The safe starting point is a dedicated, revocable, read-only API token, a locally running MCP server, and a clear approval boundary for every write operation. This guide explains the architecture, shows manual and agent-assisted setup, and provides one-click installers for Windows 11, Ubuntu 26.</description>
    </item>
    <item>
      <title>Stop Hunting for YOLO Flags: One Launcher for 6 AI Agent Tools</title>
      <link>https://blog.margrop.net/en/post/ai-agent-yolo-one-command/</link>
      <pubDate>Mon, 06 Jul 2026 09:50:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/ai-agent-yolo-one-command/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;In AI Agent tools, &lt;code&gt;yolo&lt;/code&gt; does not mean “the model is smarter.” It means “ask me fewer questions.” It reduces or skips approval prompts so the Agent can run more like an unattended automation script. The annoying part is that every tool names this differently. Codex exposes a dangerous approval-and-sandbox bypass. Claude Code has a dangerous permission-skip mode and a permission mode. Gemini CLI and Qwen Code use &lt;code&gt;--approval-mode=yolo&lt;/code&gt;. OpenCode uses &lt;code&gt;--auto&lt;/code&gt; plus permission rules. Aider uses &lt;code&gt;--yes-always&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;My recommendation is not to overwrite &lt;code&gt;codex&lt;/code&gt;, &lt;code&gt;claude&lt;/code&gt;, or &lt;code&gt;gemini&lt;/code&gt; with risky aliases. Install an explicit &lt;code&gt;agent-yolo&lt;/code&gt; launcher instead. When you really want high autonomy, type &lt;code&gt;agent-yolo codex&lt;/code&gt;, &lt;code&gt;agent-yolo claude&lt;/code&gt;, or &lt;code&gt;agent-yolo gemini&lt;/code&gt;. This article provides Windows 11, Ubuntu 26.04, and macOS 26 scripts. They do not depend on third-party services, do not install missing Agent tools, and do not contain private addresses, full computer names, private domains, tokens, or keys.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Fresh Ubuntu 26.04 Without Snap: A Clean, Reversible Removal Guide</title>
      <link>https://blog.margrop.net/en/post/ubuntu-2604-remove-snap-cleanly/</link>
      <pubDate>Mon, 06 Jul 2026 09:45:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/ubuntu-2604-remove-snap-cleanly/</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;If you are setting up a fresh Ubuntu 26.04 system and you know you do not want Snap, remove it in the right order: inspect installed snaps, save anything important, remove snaps with &lt;code&gt;snap remove --purge&lt;/code&gt;, purge the &lt;code&gt;snapd&lt;/code&gt; package with APT, clean the remaining Snap directories, and optionally block accidental reinstall.&lt;/p&gt;&#xA;&lt;p&gt;This guide explains the background, symptoms, root cause of messy removals, manual execution, AI Agent execution, and three one-click scripts for Windows 11, Ubuntu 26.04, and macOS 26. The scripts default to dry-run mode, require an explicit execution switch, depend only on built-in OS tools, and do not include private IP addresses, hostnames, private domains, tokens, or secrets.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Docker Container Crash Loop After v3.7.0? You&#39;re Missing One Word: serve</title>
      <link>https://blog.margrop.net/en/post/siyuan-v370-docker-restart-loop-fix/</link>
      <pubDate>Thu, 02 Jul 2026 19:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/siyuan-v370-docker-restart-loop-fix/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;After upgrading Siyuan (SiYuan Note) from v3.6.x to v3.7.0, the Docker container entered an infinite restart loop. &lt;code&gt;docker logs&lt;/code&gt; showed &lt;code&gt;Error: unknown flag: --accessAuthCode&lt;/code&gt;. The root cause: v3.7.0 introduced a CLI subcommand architecture. The old top-level flags now require a &lt;code&gt;serve&lt;/code&gt; subcommand. The fix is adding one word — &lt;code&gt;&#39;serve&#39;&lt;/code&gt; — to the beginning of the &lt;code&gt;command&lt;/code&gt; array in docker-compose.yml. Seven characters. From crash loop to running.&lt;/p&gt;&#xA;&lt;p&gt;This article covers the complete troubleshooting process, one-command fix scripts for Windows 11, Ubuntu 26.04, and macOS 26, plus both manual and AI Agent approaches. All scripts use only Docker CLI and SSH — no third-party services required.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Stop Clicking Update One App at a Time: Let an Agent Upgrade Common Software on Windows 11, Ubuntu 26.04, and macOS 26</title>
      <link>https://blog.margrop.net/en/post/agent-upgrade-common-software-windows11-ubuntu2604-macos26/</link>
      <pubDate>Sun, 28 Jun 2026 08:58:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/agent-upgrade-common-software-windows11-ubuntu2604-macos26/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Updating everyday software is painful not because the commands are impossible, but because the update sources are scattered across several worlds. Windows 11 has WinGet, Microsoft Store, and vendor installers. Ubuntu 26.04 has apt, snap, flatpak, and service restarts. macOS 26 has Software Update, App Store, Homebrew, and applications downloaded outside the store. A human can easily miss something. An AI Agent can help, but only if you give it boundaries.&lt;/p&gt;&#xA;&lt;p&gt;My recommendation is to treat the Agent as an update operator: inventory first, dry-run second, execute third, verify last. This article provides three one-command scripts for Windows 11, Ubuntu 26.04, and macOS 26. They do not depend on third-party update assistants or cloud services. They call only built-in update tools and package managers already installed and configured on the machine. The examples contain no real private address, full computer name, private domain, token, or key.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Is Your Computer Always Full? Use an AI Agent to Safely Clean Junk Files on Windows 11, Ubuntu 26.04, and macOS 26</title>
      <link>https://blog.margrop.net/en/post/ai-agent-cleanup-windows11-ubuntu2604-macos26/</link>
      <pubDate>Sun, 28 Jun 2026 07:15:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/ai-agent-cleanup-windows11-ubuntu2604-macos26/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Junk cleanup is risky not because it is hard to delete files, but because it is easy to delete too much. On Windows 11, Ubuntu 26.04, and macOS 26, the safe cleanup targets are usually temporary directories, package caches, old logs, recycle bin or trash contents, and files that can be regenerated. A cleanup script should not casually touch documents, photos, browser profiles, keys, certificates, virtual machine images, or application data.&lt;/p&gt;&#xA;&lt;p&gt;This article gives you two paths: &lt;strong&gt;manual automation&lt;/strong&gt;, where you run the scripts yourself, inspect the dry-run output, and then explicitly enable deletion; and &lt;strong&gt;Agent-driven automation&lt;/strong&gt;, where Codex, Claude, OpenClaw, HermesAgent, or another AI Agent performs the same scan, review, execution, and verification flow for you. The three scripts cover Windows 11, Ubuntu 26.04, and macOS 26. They do not depend on third-party services, do not download cleanup utilities, and do not contain real private addresses, computer names, private domains, or secrets.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Stop Letting Agents Burn Tokens: Wiring Headroom into NewAPI, OpenClaw, and HermesAgent</title>
      <link>https://blog.margrop.net/en/post/headroom-newapi-openclaw-hermesagent-token-compression-guide/</link>
      <pubDate>Sat, 20 Jun 2026 12:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/headroom-newapi-openclaw-hermesagent-token-compression-guide/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;I did not replace NewAPI, and I did not point OpenClaw or HermesAgent at an unproven gateway. The actual design is simpler: place Headroom in front of NewAPI, then move only the already validated OpenAI-compatible providers to &lt;code&gt;http://&amp;lt;headroom-host&amp;gt;:8787/v1&lt;/code&gt;. The original NewAPI endpoint stays available. Long agent context now goes through Headroom first, gets compressed, then continues to NewAPI for the same routing and model management as before.&lt;/p&gt;&#xA;&lt;p&gt;The rule that kept the rollout boring was: &lt;strong&gt;test first, edit second; migrate only OpenAI-compatible providers that pass; leave non-OpenAI fallbacks alone.&lt;/strong&gt; This post is both a write-up and a runbook you can hand to an Agent or follow manually.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>One sentence let Claude upgrade Ubuntu 22.04 to 24.04: a near-zero-screen-time cross-LTS run</title>
      <link>https://blog.margrop.net/en/post/upgrade-ubuntu-via-agent/</link>
      <pubDate>Fri, 19 Jun 2026 10:58:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/upgrade-ubuntu-via-agent/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;A remote home-lab box had been sitting on Ubuntu 22.04.4 LTS (jammy, kernel 5.15) for a long time. After one sentence — &amp;ldquo;upgrade the box at 192.168.103.182 to Ubuntu 24.04&amp;rdquo; — Claude opened a tmux session to babysit the run, brought up a fallback sshd on port 1022 so a mid-upgrade sshd restart would not strand me, then drove &lt;code&gt;do-release-upgrade -f DistUpgradeViewNonInteractive&lt;/code&gt; end to end. Twenty-five minutes later the host came back: kernel 6.8.0-124, every service still listening.&lt;/p&gt;&#xA;&lt;p&gt;This is not a tutorial on &lt;code&gt;do-release-upgrade&lt;/code&gt;; the Ubuntu docs already cover that. This is about what an Agent does once it gets an SSH handle on a box, why it does each step, and which pitfalls you have to clear out of the way before letting it loose.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>The Markdown Throne Falls: When AI Agents Step Out of the Chat Box, HTML Becomes the New Answer</title>
      <link>https://blog.margrop.net/en/post/markdown-throne-falls-ai-agent-html-output/</link>
      <pubDate>Wed, 10 Jun 2026 10:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/markdown-throne-falls-ai-agent-html-output/</guid>
      <description>If 2023 was the &amp;ldquo;chatbox era&amp;rdquo; of ChatGPT and Markdown, then 2026 is heralding the arrival of a new phase: AI no longer merely &amp;ldquo;answers&amp;rdquo; you—it is set to &amp;ldquo;take over&amp;rdquo; your interface. As Agents begin directly controlling browsers, operating SaaS, and building interactive application prototypes, Markdown—long the de facto standard for LLM output, that elegant format prized for its simplicity, readability, and token-friendliness—is rapidly revealing its fatal shortcoming as the &amp;ldquo;last mile.</description>
    </item>
    <item>
      <title>OpenClaw TUI Keeps Repeating Itself? A Temporary Patch for Duplicate Thinking and Replies</title>
      <link>https://blog.margrop.net/en/post/openclaw-tui-duplicate-thinking-stream-patch/</link>
      <pubDate>Tue, 02 Jun 2026 10:42:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/openclaw-tui-duplicate-thinking-stream-patch/</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;If OpenClaw TUI shows the same thinking block twice and repeats the final answer, do not immediately delete every session or rebuild every model provider. In many OpenAI-compatible setups, the real issue is a streaming compatibility edge case: the upstream stream emits normal &lt;code&gt;delta&lt;/code&gt; chunks and then an extra full &lt;code&gt;message&lt;/code&gt; tail. Some OpenClaw paths may aggregate both, so the TUI and the persisted session both end up with duplicated content.&lt;/p&gt;&#xA;&lt;p&gt;The practical temporary fix is to back up the local OpenClaw installation, add a conservative dedupe guard in the OpenClaw aggregation layer, restart the gateway, and verify with a unique marker that both the visible reply and the session file contain only one copy.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;This is a privacy-safe incident note. All endpoints, model names, tokens, internal addresses, and session identifiers are replaced by placeholders. Use your own installation path and model identifiers when applying the workaround.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MiniMax M3 Officially Released: Demystifying the MSA Sparse Attention Architecture, Plus a Look Inside the Mavis Sandbox</title>
      <link>https://blog.margrop.net/en/post/minimax-m3-launch-and-sandbox-architecture/</link>
      <pubDate>Mon, 01 Jun 2026 22:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/minimax-m3-launch-and-sandbox-architecture/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;On June 1st, MiniMax (Xiyu Technology) officially released its next-generation general-purpose model, MiniMax M3. It simultaneously maxes out three traditionally hard pillars — frontier coding, ultra-long context, and native multimodality — and it is the &lt;strong&gt;only fully open-source model&lt;/strong&gt; in the world to do so. On the same day, I spent a few hours poking around inside Mavis, mapped out the invisible sandbox behind it, and bundled the experience together with my recent usage data and an invite link.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: &lt;strong&gt;This article is 100% written and generated by MiniMax-M3&lt;/strong&gt; (including all code blocks, technical diagrams, and structure), without any manual edits or changes.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update (2026-06-01 22:00)&lt;/strong&gt;: A few hours after this post went live, the team published a follow-up announcement acknowledging that the original Token Plan migration was communicated poorly and that weekly-quota handling for long-time users wasn&amp;rsquo;t done right. They&amp;rsquo;ve laid out compensation, more quota, and a refund channel. I&amp;rsquo;ve added &lt;strong&gt;Section 9 — &amp;ldquo;Token Plan Revamp: Latest Announcement&amp;rdquo;&lt;/strong&gt; at the bottom of this post. If you&amp;rsquo;re on Token Plan, or about to subscribe, read it before you spend another yuan.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Double-Consumed Streaming: Debugging a NewAPI v1.0.0-rc.10 MiniMax Proxy Bug</title>
      <link>https://blog.margrop.net/en/post/newapi-streaming-duplicate-content-debugging/</link>
      <pubDate>Sun, 31 May 2026 18:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/newapi-streaming-duplicate-content-debugging/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;An AI Agent was producing duplicated replies in DingTalk — not two separate messages, but a single message whose content appeared twice. The root cause traced back to a streaming bug in NewAPI (the QuantumNous fork of OneAPI) v1.0.0-rc.10: when proxying MiniMax through the OpenAI Chat Completions protocol, the finish chunk contained &lt;strong&gt;both &lt;code&gt;delta.content&lt;/code&gt; and &lt;code&gt;message.content&lt;/code&gt;&lt;/strong&gt; with identical values. The Agent&amp;rsquo;s stream handler consumed both as &amp;ldquo;visible text,&amp;rdquo; concatenating the content twice. The fix was straightforward: switch the OpenClaw provider protocol from &lt;code&gt;openai-completions&lt;/code&gt; to &lt;code&gt;anthropic-messages&lt;/code&gt;, which OneAPI natively supports and where streaming behaves correctly.&lt;/p&gt;&#xA;&lt;p&gt;No internal IPs, tokens, model IDs, or private paths appear in this article. All configuration snippets have been sanitized.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Python App in macOS LaunchAgent Can&#39;t Reach the Internet? Here&#39;s the httpx Proxy Trap You Need to Know</title>
      <link>https://blog.margrop.net/en/post/macos-launchagent-python-httpx-proxy-no-route-to-host/</link>
      <pubDate>Sat, 30 May 2026 09:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/macos-launchagent-python-httpx-proxy-no-route-to-host/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;When a Python application using httpx with &lt;code&gt;trust_env=True&lt;/code&gt; runs inside a macOS LaunchAgent, it silently picks up the system proxy settings from &lt;code&gt;scutil --proxy&lt;/code&gt;. But the LaunchAgent process may not be able to reach that proxy server at all — resulting in &lt;code&gt;All connection attempts failed&lt;/code&gt; or &lt;code&gt;No route to host&lt;/code&gt; errors.&lt;/p&gt;&#xA;&lt;p&gt;The fix is one line: add &lt;code&gt;NO_PROXY=*&lt;/code&gt; to the LaunchAgent&amp;rsquo;s plist &lt;code&gt;EnvironmentVariables&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;This article documents the full debugging journey: from discovering that my AI Agent&amp;rsquo;s WeChat Enterprise (WeCom) messages weren&amp;rsquo;t being replied to, through methodical proxy troubleshooting, to finally pinning down the root cause — macOS system proxy + LaunchAgent network isolation. We&amp;rsquo;ll dive deep into Python httpx source code, macOS proxy architecture, and the many gotchas of LaunchAgent runtime environments.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>The Complete AI Agent Migration Guide: A Real-World Journey from Scratch with 9 Pitfalls and Fixes</title>
      <link>https://blog.margrop.net/en/post/ai-agent-complete-migration-guide-from-scratch/</link>
      <pubDate>Sat, 30 May 2026 08:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/ai-agent-complete-migration-guide-from-scratch/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Migrating from one AI Agent platform to another sounds like a &amp;ldquo;copy and paste&amp;rdquo; job. In reality, it&amp;rsquo;s a systems engineering challenge involving data migration, channel integration, scheduled tasks, auto-start configuration, proxy settings, and module compatibility.&lt;/p&gt;&#xA;&lt;p&gt;This article documents my complete migration journey: from installing the new platform, migrating memories and skills, configuring messaging channels, debugging mysterious failures, to achieving fully automated operation. 9 pitfalls encountered, 9 solutions found — all shared here.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Claude Code Upgrade Broke Every Model? Before You Rotate Keys, Check the Compatibility Gateway</title>
      <link>https://blog.margrop.net/en/post/claude-code-invalid-message-role-system/</link>
      <pubDate>Fri, 29 May 2026 15:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/claude-code-invalid-message-role-system/</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;After a Claude Code upgrade, every model call failed with the same error: &lt;code&gt;API Error: 400 invalid params, chat content has invalid message role: system (2013)&lt;/code&gt;. At first glance this looks like a bad API key, a dead model, an exhausted account, a broken proxy, or a provider-wide outage. The root cause was different: a newer Claude Code request shape crossed an Anthropic-compatible model gateway that had not caught up with the client-side protocol behavior. The gateway, or a downstream chat validation layer behind it, rejected a &lt;code&gt;system&lt;/code&gt; role in a place where it did not expect one.&lt;/p&gt;&#xA;&lt;p&gt;The practical fix was not to randomly reinstall things. I reproduced the failure with the smallest possible prompt, tested adjacent Claude Code versions, and found the last known good version. &lt;code&gt;2.1.150&lt;/code&gt; returned &lt;code&gt;OK&lt;/code&gt;; &lt;code&gt;2.1.154&lt;/code&gt; and &lt;code&gt;2.1.156&lt;/code&gt; reproduced the 400. Pinning the global Claude Code installation back to &lt;code&gt;2.1.150&lt;/code&gt; restored the existing provider path.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;This post is a troubleshooting write-up for a local Claude Code environment. The fix itself was small, but the incident is useful because it shows a pattern that is becoming common in AI agent tooling: the CLI, environment settings, model gateway, API compatibility layer, and actual model backend are often separate moving pieces. When one layer changes its request structure, the terminal may only show a vague 400.&lt;/p&gt;&#xA;&lt;p&gt;All private details have been removed. This article does not include real internal addresses, usernames, tokens, private provider names, local absolute paths, or private service domains. Configuration examples use placeholders such as &lt;code&gt;&amp;lt;PLACEHOLDER&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;MODEL_GATEWAY&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;MODEL_NAME&amp;gt;&lt;/code&gt;. The goal is to document a reusable debugging method, not to expose a specific environment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why My AI Assistant Repeated One Reply Four Times: Debugging an OpenClaw WeChat Channel Issue</title>
      <link>https://blog.margrop.net/en/post/openclaw-wechat-duplicate-reply-debugging/</link>
      <pubDate>Fri, 29 May 2026 11:24:29 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/openclaw-wechat-duplicate-reply-debugging/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Short version&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;The symptom looked like a messaging-channel bug: an AI assistant connected to a personal chat channel appeared to repeat the same reply multiple times. The real bug was earlier in the chain. Before the reply ever reached the message-sending layer, the OpenClaw agent had already produced duplicated visible text. The useful fix was not to patch the chat sender blindly, but to split the path into transport, session, model-routing, and provider layers, then compare the OpenAI-compatible gateway path with the native provider path. Once the faulty compatible provider candidate was removed from the visible model set and the personal IM channel was pinned to the native provider, the same minimal prompt returned exactly once.&lt;/p&gt;&#xA;&lt;p&gt;This post is deliberately privacy-safe. It contains no real internal addresses, account IDs, tokens, session IDs, personal chat identifiers, or private file paths. Configuration examples use placeholders. The value is the debugging method, not the private environment.&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>OpenClaw Upgrade Guide: From Beginner to Expert</title>
      <link>https://blog.margrop.net/en/post/openclaw-hermesagent-upgrade-guide/</link>
      <pubDate>Fri, 29 May 2026 09:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/openclaw-hermesagent-upgrade-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;OpenClaw is a powerful personal AI assistant that supports multiple messaging channels and AI models. Upgrading OpenClaw is actually very simple — the most recommended way is to use the &lt;code&gt;openclaw update&lt;/code&gt; command. This article will详细介绍 various upgrade methods, including switching from npm package installation to git source installation, as well as verification and rollback strategies after upgrading.&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 OpenClaw repository and documentation, and are referenced under the project&amp;rsquo;s MIT license.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Do Not Waste Your Codex Quota Before the Reset: Meet Codex Reset Radar</title>
      <link>https://blog.margrop.net/en/post/codex-reset-radar-quota-reset-guide/</link>
      <pubDate>Sun, 24 May 2026 08:10:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/codex-reset-radar-quota-reset-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;Codex resets have recently become more important to watch. Sometimes the reset is part of the normal usage cycle. Sometimes it is a compensation reset after an incident. Sometimes it follows a fix for abnormal limit consumption. For heavy Codex users, the painful part is not that the quota resets. The painful part is discovering that you still had useful weekly quota left, but you did not use it before the reset overwrote the old window.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;Codex Reset Radar&lt;/code&gt; is a small public dashboard that turns scattered public signals into a practical warning: if a Codex quota reset window is likely or already open, it tells you to use your remaining weekly quota on valuable work before it expires.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;This article discusses only public pages, public status signals, and public references. It does not include private accounts, tokens, internal systems, private network details, or personal usage data. Any discussion of quota, reset windows, and early warnings is a user-side workflow analysis, not an official statement about OpenAI billing, subscription policy, or service guarantees.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Your MCP Config Was Fine. The Server Died Before the Handshake.</title>
      <link>https://blog.margrop.net/en/post/codex-mcp-startup-swift-runtime-troubleshooting/</link>
      <pubDate>Sat, 23 May 2026 06:10:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/codex-mcp-startup-swift-runtime-troubleshooting/</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;The misleading part of this incident was the surface error. Codex reported that an MCP client could not initialize and that the MCP server handshake failed. That naturally pushes you toward MCP configuration, JSON-RPC initialization, plugin settings, authentication, network transport, or stale tool caches. But the root cause was lower than the MCP protocol: one local MCP server binary was killed by the macOS dynamic linker before it could answer the &lt;code&gt;initialize&lt;/code&gt; request. The client only saw a closed connection. The useful evidence was in the server stderr: &lt;code&gt;dyld: Symbol not found&lt;/code&gt;, pointing at a missing Swift Concurrency runtime symbol.&lt;/p&gt;&#xA;&lt;p&gt;In other words, MCP did not really get a chance to fail. The server process died first.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;This article walks through a real troubleshooting pattern around Codex, MCP clients, and MCP servers. The failure looked like a protocol startup problem, but the root cause lived in a native macOS binary and its Swift runtime compatibility.&lt;/p&gt;&#xA;&lt;p&gt;All private details have been removed. This article does not include real internal addresses, usernames, session IDs, full local paths, tokens, private repository names, or business system names. Paths use placeholders such as &lt;code&gt;~&lt;/code&gt;, &lt;code&gt;&amp;lt;USER_HOME&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;PLUGIN_DIR&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;PROJECT&amp;gt;&lt;/code&gt;. Log snippets keep only the technical fields needed to explain the diagnosis.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stop Letting Agents Guess UI: Installing and Using UI UX Pro Max the Right Way</title>
      <link>https://blog.margrop.net/en/post/ui-ux-pro-max-agent-skill-guide/</link>
      <pubDate>Fri, 22 May 2026 22:50:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/ui-ux-pro-max-agent-skill-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;UI UX Pro Max is not a magic prompt that suddenly gives an agent taste. It is a searchable UI/UX design intelligence Skill for AI coding assistants such as Claude Code, Codex, Cursor, Windsurf, Gemini, OpenCode, and similar tools. It packages product patterns, UI styles, color palettes, typography pairings, landing page structures, chart recommendations, UX guidelines, and stack-specific implementation advice into files and scripts that an agent can actually query.&lt;/p&gt;&#xA;&lt;p&gt;The right way to use it is not to install it and keep asking for “a beautiful page.” The right way is to make the agent generate a design system first, then query UX, chart, web, or stack-specific guidance, and only then implement the page. That workflow reduces generic AI gradients, weak contrast, crowded mobile layouts, decorative dashboards, missing focus states, and many other common agent-generated UI problems.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;This article uses only public references, a public repository, and a clean temporary verification directory. Commands, paths, project names, and examples are generic. No private addresses, credentials, internal project names, account names, or personal configuration are included. Screenshots are taken from public reference pages and sanitized verification work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Gemini 3.5 Is Not Just Faster: Google I/O Moves AI Into the Agent Era</title>
      <link>https://blog.margrop.net/en/post/google-io-2026-gemini-35-agent-era/</link>
      <pubDate>Wed, 20 May 2026 07:05:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/google-io-2026-gemini-35-agent-era/</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;The most important Google I/O 2026 announcement is not merely another chat model. Google is moving Gemini 3.5 into the action layer. The first public model, Gemini 3.5 Flash, is now part of the Gemini app, Search AI Mode, Google Antigravity, the Gemini API, Android Studio, Gemini Enterprise Agent Platform, and Gemini Enterprise. Google&amp;rsquo;s phrase is &lt;strong&gt;frontier intelligence with action&lt;/strong&gt;. In practical terms, the model is meant to do more than answer: it is expected to operate across tools, code, files, search, and enterprise workflows.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;This article is based on Google&amp;rsquo;s official public announcements and adds industry analysis on top of them. All images are from Google&amp;rsquo;s public blog posts. The article contains no private account information, internal network details, secrets, private system screenshots, or non-public data.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stop Clicking Remote Desktop: Let AI Agents SSH into Windows Instead</title>
      <link>https://blog.margrop.net/en/post/agent-ssh-windows-openssh/</link>
      <pubDate>Wed, 13 May 2026 08:10:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/agent-ssh-windows-openssh/</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;An AI agent does not need Remote Desktop, VNC, or a proprietary remote-control tool to operate a Windows machine. For many workstations, lab machines, development PCs, and internal servers, the cleanest path is to enable the built-in &lt;strong&gt;OpenSSH Server&lt;/strong&gt; on Windows and connect from Linux or macOS with a normal command: &lt;code&gt;ssh &amp;lt;user&amp;gt;@&amp;lt;windows-host&amp;gt;&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;There are only three things to get right. First, install and enable OpenSSH Server on Windows 10 or Windows 11. Second, generate an SSH key on Linux or macOS and place the public key on Windows. Third, if the target account belongs to the Windows Administrators group, put the public key in &lt;code&gt;C:\ProgramData\ssh\administrators_authorized_keys&lt;/code&gt; and lock down the ACL with &lt;code&gt;icacls&lt;/code&gt;. After that, an AI agent can run PowerShell, copy scripts, collect logs, install tools, and perform repeatable maintenance through the same SSH workflow it already uses for Linux.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;All hostnames, addresses, usernames, screenshots, and commands in this article use generic placeholders. No real internal addresses, usernames, machine names, tokens, keys, or private paths are included. Replace placeholders such as &lt;code&gt;&amp;lt;user&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;windows-host&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;windows-ip&amp;gt;&lt;/code&gt; with values from your own environment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Codex 0.130 Removed /approvals? The Fix Is to Move Permissions to Startup Flags</title>
      <link>https://blog.margrop.net/en/post/codex-130-approval-flags/</link>
      <pubDate>Tue, 12 May 2026 18:50:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/codex-130-approval-flags/</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;If you upgraded to Codex 0.130.0 and noticed that the old &lt;code&gt;/approvals&lt;/code&gt; habit no longer works, the practical fix is not to downgrade. Move the permission policy to launch time. Use &lt;code&gt;--ask-for-approval&lt;/code&gt; to control when Codex asks, &lt;code&gt;--sandbox&lt;/code&gt; to control what commands can touch, and reserve &lt;code&gt;--dangerously-bypass-approvals-and-sandbox&lt;/code&gt; for environments that are already isolated outside Codex. The long flag can also be written directly as &lt;code&gt;--yolo&lt;/code&gt;, which is easier to remember, easier to type, and more consistent with command habits from tools such as Gemini.&lt;/p&gt;&#xA;&lt;p&gt;In other words, stop treating approval mode as an in-session toggle. Treat it as part of the way you start the agent.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;This article only discusses public Codex CLI flags and generic workflows. It does not include real hostnames, internal addresses, usernames, tokens, private paths, or project names. Commands use placeholders such as &lt;code&gt;&amp;lt;PROJECT&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;TASK&amp;gt;&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Small Models Make Agents Drift. Superpowers Gives Them Rails.</title>
      <link>https://blog.margrop.net/en/post/agent-superpowers-stable-output/</link>
      <pubDate>Thu, 07 May 2026 16:43:10 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/agent-superpowers-stable-output/</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;When an agent powered by a smaller or weaker model behaves unpredictably, the problem is not always solved by writing a longer prompt. Smaller models often struggle with long-horizon consistency, tool discipline, evidence tracking, and multi-step execution. Superpowers does not turn a weak model into a frontier model. What it does is more practical: it gives the agent an external engineering workflow made of reusable Skills, checkpoints, testing habits, debugging rules, review steps, and completion verification.&lt;/p&gt;&#xA;&lt;p&gt;For agents such as OpenClaw, HermesAgent, Codex, Claude, Gemini, OpenCode, Droid, Cursor, and similar tools, Superpowers is best understood as an engineering-discipline layer. It makes the agent less dependent on improvisation and more likely to follow a repeatable process.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;This article is about a very common failure mode in modern agent workflows: the model can talk fluently, but the agent does not behave reliably once the task becomes long, stateful, tool-heavy, or distributed across multiple agents.&lt;/p&gt;&#xA;&lt;p&gt;The issue becomes more visible when using smaller domestic models, local models, quantized models, or cost-optimized models. They may answer normal questions well enough, but once they need to read a repository, follow a constraint, modify files, run tests, interpret logs, preserve privacy, and report only verified results, the instability becomes obvious.&lt;/p&gt;&#xA;&lt;p&gt;All examples in this article are generic. No private hostnames, internal addresses, credentials, project names, or personal paths are included.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Best Home for OpenClaw / HermesAgent: Proxmox VE</title>
      <link>https://blog.margrop.net/en/post/openclaw-hermesagent-best-home-proxmoxve/</link>
      <pubDate>Wed, 29 Apr 2026 10:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/en/post/openclaw-hermesagent-best-home-proxmoxve/</guid>
      <description>&lt;h1 id=&#34;the-best-home-for-openclaw--hermesagent-proxmox-ve&#34;&gt;The Best Home for OpenClaw / HermesAgent: Proxmox VE&lt;/h1&gt;&#xA;&lt;p&gt;If you treat OpenClaw or HermesAgent as just another chatbot, the installation target looks unimportant. It can run on a physical machine, a VPS, a Docker host, or even a daily laptop.&lt;/p&gt;&#xA;&lt;p&gt;That changes the moment the agent starts receiving messages, running shell commands, reading and writing files, launching browser automation, storing long-term memory, and executing scheduled tasks. At that point, the question is no longer “where can it run?” The real question is: &lt;strong&gt;what boundary should contain it?&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;My conclusion is simple: &lt;strong&gt;for long-running personal agents such as OpenClaw and HermesAgent, the most reliable home is not the physical host itself, but a dedicated virtual machine on Proxmox VE.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is not because Proxmox VE is fashionable. It is because it solves the three problems that matter most for agent infrastructure: data isolation, compute isolation, and backup/restore.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
