<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Automation on Chen Kai Blog</title><link>https://www.chenk.top/en/tags/automation/</link><description>Recent content in Automation on Chen Kai Blog</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 02 Jun 2026 09:00:00 +0000</lastBuildDate><atom:link href="https://www.chenk.top/en/tags/automation/index.xml" rel="self" type="application/rss+xml"/><item><title>Product Thinking (4): Self-Healing Systems — Teaching Machines to Fix Themselves</title><link>https://www.chenk.top/en/product-thinking/04-self-healing/</link><pubDate>Tue, 02 Jun 2026 09:00:00 +0000</pubDate><guid>https://www.chenk.top/en/product-thinking/04-self-healing/</guid><description>&lt;h2 id="the-bug-that-fixed-itself" class="heading-anchor">The Bug That Fixed Itself&lt;a href="#the-bug-that-fixed-itself" class="heading-link" aria-label="Permalink to this section" title="Copy link to this section">#&lt;/a>
&lt;/h2>&lt;p>One morning in late May 2026, I woke up to a DingTalk notification from my research agent system:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;self_heal Rule 37 triggered: restarted research-pipeline after 3 consecutive OOM kills. Root cause: scanner thread retained full PDF buffers across iterations. Applied patch: explicit &lt;code>del&lt;/code> after extraction. Validation: 45 minutes post-patch, RSS stable at 1.2 GB (was 2.4 GB pre-patch).&amp;rdquo;&lt;/p></description></item><item><title>Claude Code Hands-On (6): The SDK, GitHub Integration, and Claude in CI</title><link>https://www.chenk.top/en/claude-code-learn/06-sdk-and-github/</link><pubDate>Thu, 23 Apr 2026 09:00:00 +0000</pubDate><guid>https://www.chenk.top/en/claude-code-learn/06-sdk-and-github/</guid><description>&lt;p>The CLI is the obvious surface. The SDK is the interesting one. The GitHub integration is where it pays off.&lt;/p>
&lt;p>&lt;figure class="article-figure">
 &lt;img src="https://blog-pic-ck.oss-cn-beijing.aliyuncs.com/posts/en/claude-code-learn/06-sdk-and-github/illustration_1.png" alt="Claude Code Hands-On (6): The SDK, GitHub Integration, and Claude in CI — Chapter overview" loading="lazy" decoding="async" class="content-image">
 
&lt;/figure>
&lt;/p>
&lt;hr>
&lt;h2 id="the-sdk-in-one-paragraph" class="heading-anchor">The SDK in one paragraph&lt;a href="#the-sdk-in-one-paragraph" class="heading-link" aria-label="Permalink to this section" title="Copy link to this section">#&lt;/a>
&lt;/h2>&lt;p>&lt;code>@anthropic-ai/claude-code&lt;/code> is the npm package. It exposes the same Claude Code engine the CLI uses, with the same tools and permissions, as a programmatic interface. You give it a prompt; you get an async iterable of conversation events. Plug it into anything — a script, a service, a CI step.&lt;/p></description></item><item><title>Claude Code Hands-On (5): Hooks, or How to Stop Worrying About Yolo Mode</title><link>https://www.chenk.top/en/claude-code-learn/05-hooks/</link><pubDate>Wed, 22 Apr 2026 09:00:00 +0000</pubDate><guid>https://www.chenk.top/en/claude-code-learn/05-hooks/</guid><description>&lt;p>If MCP is how Claude reaches out, hooks are how you reach in. They enforce the rules you care about, not just what you hope for.&lt;/p>
&lt;p>&lt;figure class="article-figure">
 &lt;img src="https://blog-pic-ck.oss-cn-beijing.aliyuncs.com/posts/en/claude-code-learn/05-hooks/illustration_1.png" alt="Claude Code Hands-On (5): Hooks, or How to Stop Worrying About Yolo Mode — Chapter overview" loading="lazy" decoding="async" class="content-image">
 
&lt;/figure>
&lt;/p>
&lt;hr>
&lt;h2 id="the-model" class="heading-anchor">The model&lt;a href="#the-model" class="heading-link" aria-label="Permalink to this section" title="Copy link to this section">#&lt;/a>
&lt;/h2>&lt;p>A hook is a shell command that Claude Code runs at specific moments. The two you&amp;rsquo;ll use most are:&lt;/p></description></item><item><title>OpenClaw QuickStart (8): Heartbeat, Cron, and Getting Pinged at 7am</title><link>https://www.chenk.top/en/openclaw-quickstart/08-cron-and-heartbeat/</link><pubDate>Wed, 15 Apr 2026 09:00:00 +0000</pubDate><guid>https://www.chenk.top/en/openclaw-quickstart/08-cron-and-heartbeat/</guid><description>&lt;p>The first time I deployed OpenClaw I sat there sending it messages. After two days I realized I had built a chatbot, not an agent. The thing that made it an agent was the moment it started messaging &lt;em>me&lt;/em> without being asked.&lt;/p>
&lt;p>This piece is about the two ways to make that happen.&lt;/p>
&lt;p>&lt;figure class="article-figure">
 &lt;img src="https://blog-pic-ck.oss-cn-beijing.aliyuncs.com/posts/en/openclaw-quickstart/08-cron-and-heartbeat/illustration_1.png" alt="OpenClaw QuickStart (8): Heartbeat, Cron, and Getting Pinged at 7am — Chapter overview" loading="lazy" decoding="async" class="content-image">
 
&lt;/figure>
&lt;/p>
&lt;hr>
&lt;h2 id="heartbeat-vs-cron--pick-one-in-your-head" class="heading-anchor">Heartbeat vs Cron — pick one in your head&lt;a href="#heartbeat-vs-cron--pick-one-in-your-head" class="heading-link" aria-label="Permalink to this section" title="Copy link to this section">#&lt;/a>
&lt;/h2>&lt;p>&lt;figure class="article-figure">
 &lt;img src="https://blog-pic-ck.oss-cn-beijing.aliyuncs.com/posts/en/openclaw-quickstart/08-cron-and-heartbeat/fig_hb_vs_cron.png" alt="Heartbeat vs Cron scheduling model comparison" loading="lazy" decoding="async" class="content-image">
 
&lt;/figure>
&lt;/p></description></item></channel></rss>