<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" 
  xmlns:content="http://purl.org/rss/1.0/modules/content/" 
  xmlns:dc="http://purl.org/dc/elements/1.1/" 
  xmlns:atom="http://www.w3.org/2005/Atom" 
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" 
  xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Post section on Mark Zhu&#39;s Blog</title>
    <link>https://blog.mygraphql.com/en/posts/</link>
    <description>Recent content in Post section on Mark Zhu&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>labile.zhu@gmail.com (Mark Zhu)</managingEditor>
    <webMaster>labile.zhu@gmail.com (Mark Zhu)</webMaster>
    <copyright>Mark Zhu ©2026, All Rights Reserved</copyright>
    <lastBuildDate>Tue, 26 Mar 2019 08:47:11 +0100</lastBuildDate>
    
        <atom:link href="https://blog.mygraphql.com/en/posts/index.xml" rel="self" type="application/rss+xml" />
    

      
      <item>
        <title>Kanban - A Multi-Agent Collaboration Design Pattern</title>
        <link>https://blog.mygraphql.com/en/posts/ai/aiagent-design/kanban-multi-agent-collaboration/</link>
        <pubDate>Wed, 13 May 2026 23:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Wed, 13 May 2026 23:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/ai/aiagent-design/kanban-multi-agent-collaboration/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/ai/aiagent-design/kanban-multi-agent-collaboration/index.assets/logo.png&#34; alt=&#34;image-20260513220048964&#34;&gt;&lt;/p&gt;
&lt;p&gt;This article uses the example of generating a modern, technology-themed Mr. Bean TV episode script based on current global events to demonstrate the Kanban-based multi-agent collaboration design pattern. The article uses Hermes Agent, but the same approach can also be applied to other agent frameworks or even your own custom agents.&lt;/p&gt;
&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;For complex AI tasks, the question is no longer whether multiple agents should collaborate, but how to make multi-agent collaboration work effectively.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>ai</category>
            
          
            
              <category>ai-agent</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>OpenClaw Egress Traffic Control — A New Security Market for AI Agents</title>
        <link>https://blog.mygraphql.com/en/posts/ai/antivirus-for-ai-agents/</link>
        <pubDate>Tue, 24 Feb 2026 03:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Tue, 24 Feb 2026 03:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/ai/antivirus-for-ai-agents/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/ai/antivirus-for-ai-agents/index.assets/logo.png&#34; alt=&#34;logo&#34;&gt;&lt;/p&gt;
&lt;p&gt;AI Agents are evolving from tools into autonomous executors, yet our security models still operate at the level of permissions and resource access. The real risk is no longer resource access — it is &lt;em&gt;intent generation and path drift&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This article shares a proof-of-concept experiment using &lt;strong&gt;cgroup + TProxy + TLS SNI&lt;/strong&gt; to explore a possible enhancement path for AI security. The next wave of the security market may be built around what I call &lt;strong&gt;Intent Security&lt;/strong&gt;. The rise of AI Agents could mark the beginning of a new security cycle.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>ai</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Intelligent Orchestrating the Home Lab and Smart Home by OpenClaw</title>
        <link>https://blog.mygraphql.com/en/posts/ai/ai-personal-assistant/openclaw-as-home-lab-admin/</link>
        <pubDate>Fri, 13 Feb 2026 03:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Fri, 13 Feb 2026 03:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/ai/ai-personal-assistant/openclaw-as-home-lab-admin/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/ai/ai-personal-assistant/openclaw-as-home-lab-admin/index.assets/logo.png&#34; alt=&#34;logo.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;This article demonstrates how OpenClaw Skills can orchestrate Home Lab and Smart Home intelligently. By encapsulating infrastructure knowledge, monitoring systems, ann automation APIs to structured Skills. An AI agent can troubleshooting servers, visualize operations by smart lights, and deliver a summarized real time web news through smart speaker.&lt;/p&gt;
&lt;h2 id=&#34;background&#34;&gt;Background&lt;/h2&gt;
&lt;p&gt;I have been running a home lab and a small home set up for years. Ask more and more devices and services were add, maintenance and management gradually become increasingly complex.  Meanwhile, after years of experience, I realized that traditional smart homes are not fully “smart”. Most of the problems exist simply because I was too lazy to automate them probably. Now, modern AI may help mitigate those issues.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>ai</category>
            
          
            
              <category>ai-agent</category>
            
          
            
              <category>self-hosting</category>
            
          
            
              <category>life-hacker</category>
            
          
            
              <category>openclaw</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>The Concepts Anatomy of OpenClaw</title>
        <link>https://blog.mygraphql.com/en/posts/ai/ai-personal-assistant/openclaw-concepts/</link>
        <pubDate>Mon, 09 Feb 2026 03:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Mon, 09 Feb 2026 03:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/ai/ai-personal-assistant/openclaw-concepts/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/ai/ai-personal-assistant/openclaw-concepts/index.assets/the-matrix-architect.png&#34; alt=&#34;the-matrix-architect&#34;&gt;&lt;/p&gt;
&lt;p&gt;OpenClaw is the most populated self-hosted personal AI assistant in the world right now. From the perspective of an AI Agent developer, it is not only a AI tool, but also one of the best real-world references for agent design patterns. It helps us create more sophisticated designs when building our agents. In this article, I will go down the rabbit hole and ultimately build a conceptual model.&lt;/p&gt;
&lt;h2 id=&#34;conceptual-model&#34;&gt;Conceptual Model&lt;/h2&gt;
&lt;p&gt;The following diagram is the conceptual model I built.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>ai</category>
            
          
            
              <category>ai-agent</category>
            
          
            
              <category>openclaw</category>
            
          
            
              <category>self-hosting</category>
            
          
            
              <category>life-hacker</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Self-hosted Matrix Channel for OpenClaw - Take the red pill</title>
        <link>https://blog.mygraphql.com/en/posts/ai/ai-personal-assistant/openclaw-matrix-channel/</link>
        <pubDate>Fri, 06 Feb 2026 03:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Fri, 06 Feb 2026 03:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/ai/ai-personal-assistant/openclaw-matrix-channel/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/ai/ai-personal-assistant/openclaw-matrix-channel/index.assets/the-matrix-movie-red-pill.png&#34; alt=&#34;The Matrix 1999 - Take the red pill to stay in Wonderland and see how deep the rabbit hole goes, or the blue pill to wake up and believe what you want.&#34;&gt;&lt;/p&gt;
&lt;p&gt;This article explains how to self-host an OpenClaw AI assistant using a Matrix chat channel. It covers setting up a Matrix server, installing and troubleshooting the OpenClaw Matrix plugin, configuring access policies, and enabling secure, private AI interactions without relying on third-party messaging platforms.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>ai</category>
            
          
            
              <category>ai-agent</category>
            
          
            
              <category>self-hosting</category>
            
          
            
              <category>life-hacker</category>
            
          
            
              <category>openclaw</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>AI-Based Job Position Watching from Company Career Pages(PoC) - Part 1</title>
        <link>https://blog.mygraphql.com/en/posts/ai/ai-life-automatic/ai-job-subcribe/</link>
        <pubDate>Mon, 19 Jan 2026 15:12:15 +0900</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Mon, 19 Jan 2026 15:12:15 +0900</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/ai/ai-life-automatic/ai-job-subcribe/</guid>
        <description>&lt;p&gt;As an unemployed mid‑career software engineer looking for a new role in 2026, I often find myself repeatedly checking the career pages of companies I am interested in. This process is time‑consuming and tedious, especially when tracking openings across multiple companies. While many career sites provide email‑based job alerts, these alerts are usually driven by opaque AI matching against a previously submitted CV, or by simple keyword matching. In both cases, I have very limited control over the actual matching criteria.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>AI</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>A First Look at Proxying MCP Traffic with Agentgateway</title>
        <link>https://blog.mygraphql.com/en/posts/ai/ai-devops/agent-gateway/agentgateway-mcp/</link>
        <pubDate>Sat, 10 Jan 2026 03:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Sat, 10 Jan 2026 03:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/ai/ai-devops/agent-gateway/agentgateway-mcp/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/ai/ai-devops/agent-gateway/agentgateway-mcp/index.assets/logo.png&#34; alt=&#34;logo&#34;&gt;&lt;/p&gt;
&lt;p&gt;As a key protocol in the AI Agent ecosystem, MCP support is one of Agentgateway’s core capabilities. This article documents my experience and observations while proxying MCP traffic with Agentgateway. It is also a summary of lessons learned after spending several days debugging why my browser could not connect to the Agentgateway MCP endpoint.&lt;/p&gt;
&lt;p&gt;The official &lt;a href=&#34;https://agentgateway.dev/docs/&#34;&gt;Agentgateway documentation&lt;/a&gt; does describe how to configure MCP, but at the moment the content is fairly “hello world”–level. In practice, most of my exploration involved reading the Agentgateway source code and relevant standards, including specifications related to W3C and MCP. In some cases, I also had to use Chrome DevTools to debug JavaScript and network traffic.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>ai</category>
            
          
            
              <category>ai gateway</category>
            
          
            
              <category>agentgateway</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Agentgateway Implementation Analysis Part 3 - Http Proxy</title>
        <link>https://blog.mygraphql.com/en/posts/ai/ai-devops/agent-gateway/agentgateway-impl-part3-http-proxy/</link>
        <pubDate>Thu, 25 Dec 2025 03:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Thu, 25 Dec 2025 03:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/ai/ai-devops/agent-gateway/agentgateway-impl-part3-http-proxy/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/ai/ai-devops/agent-gateway/agentgateway-impl-part3-http-proxy/index.assets/book-cover-mockup.jpg&#34; alt=&#34;book-cover-mockup&#34;&gt;&lt;/p&gt;
&lt;p&gt;This article attempts to analyze the implementation details of the Http Proxy main flow in &lt;a href=&#34;https://github.com/agentgateway/agentgateway&#34;&gt;Agentgateway&lt;/a&gt;. It allows readers to understand the working principle and implementation method of Agentgateway as an Http Proxy at the L7 layer. Agentgateway is essentially an HTTP Proxy, but adds support for AI (LLM/MCP/A2A) stateful protocols on top of HTTP. Therefore, analyzing the main flow of the HTTP Proxy layer is analyzing the main flow of Agentgateway.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>ai</category>
            
          
            
              <category>ai gateway</category>
            
          
            
              <category>agentgateway</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>AI Agent Bus Gateway agentgateway Implementation Analysis Part 2 - Service Lifecycle</title>
        <link>https://blog.mygraphql.com/en/posts/ai/ai-devops/agent-gateway/agentgateway-impl-part2-app-lifecycle/</link>
        <pubDate>Tue, 09 Sep 2025 03:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Tue, 09 Sep 2025 03:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/ai/ai-devops/agent-gateway/agentgateway-impl-part2-app-lifecycle/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/ai/ai-devops/agent-gateway/agentgateway-impl-part2-app-lifecycle/index.assets/mr-bean.jpg&#34; alt=&#34;img&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;This article analyzes the source code of the AI Agent bus gateway &lt;a href=&#34;https://github.com/agentgateway/agentgateway&#34;&gt;agentgateway&lt;/a&gt; and attempts to explain the components and collaboration related to service lifecycle management. From the startup and initialization of each service component, port listening, to how service termination signals are propagated between components, and the implementation related to graceful service shutdown (Drain).&lt;/p&gt;
&lt;p&gt;Due to my limited understanding of Rust, especially the asynchronous programming style of tokio, please point out any errors or omissions.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>ai</category>
            
          
            
              <category>ai gateway</category>
            
          
            
              <category>agentgateway</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Analysis of the AI Agent Bus Gateway &#39;agentgateway&#39; Implementation, Part 1</title>
        <link>https://blog.mygraphql.com/en/posts/ai/ai-devops/agent-gateway/agentgateway-impl/</link>
        <pubDate>Fri, 05 Sep 2025 03:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Fri, 05 Sep 2025 03:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/ai/ai-devops/agent-gateway/agentgateway-impl/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/ai/ai-devops/agent-gateway/agentgateway-impl/index.assets/architecture.svg&#34; alt=&#34;图：agentgateway 代理 Agent 的对外连接，包括 MCP 服务器、AI Agent 和 OpenAPI&#34;&gt;&lt;br /&gt;
&lt;em&gt;Figure: agentgateway proxies the outbound connections of an Agent, including the MCP server, AI Agent, and OpenAPI&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(source: &lt;a href=&#34;https://agentgateway.dev/docs/about/architecture/&#34;&gt;https://agentgateway.dev/docs/about/architecture/&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;This article analyzes the source code of &lt;a href=&#34;https://github.com/agentgateway/agentgateway&#34;&gt;agentgateway&lt;/a&gt; to provide a preliminary understanding of its main initialization process. It aims to offer a high-level reference and guidance for readers interested in diving deeper into the implementation of agentgateway.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>ai</category>
            
          
            
              <category>ai gateway</category>
            
          
            
              <category>agentgateway</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Analyzing gemini-cli’s Source Code with gemini-cli</title>
        <link>https://blog.mygraphql.com/en/posts/ai/ai-code-assist/analyzing-gemini-cli-with-gemini-cli/</link>
        <pubDate>Thu, 21 Aug 2025 03:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Thu, 21 Aug 2025 03:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/ai/ai-code-assist/analyzing-gemini-cli-with-gemini-cli/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/ai/ai-code-assist/analyzing-gemini-cli-with-gemini-cli/index.assets/logo.png&#34; alt=&#34;logo&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;This article introduces how to use the &lt;code&gt;gemini-cli&lt;/code&gt; command-line tool to analyze its own source code repository. Through a series of interactive commands, we will explore the design and implementation of &lt;code&gt;gemini-cli&lt;/code&gt;. This approach not only demonstrates the functionality of AI tools but also provides developers with a new way of learning and exploration.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you don’t know what gemini-cli is, here’s a brief introduction:&lt;br /&gt;
gemini-cli is an open-source Command-Line Interface (CLI) tool that allows developers and users to interact directly with Google’s Gemini model in the terminal. You can think of it as an intelligent AI assistant inside the command line.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>ai</category>
            
          
            
              <category>ai-code-assist</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Envoy Proxy Insider - Event-Driven and Threading Design</title>
        <link>https://blog.mygraphql.com/en/posts/mybooks/envoy-insider-update-2025-06-26-event/</link>
        <pubDate>Thu, 26 Jun 2025 23:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Thu, 26 Jun 2025 23:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/mybooks/envoy-insider-update-2025-06-26-event/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;../envoy-insider/index.assets/cover-mock-1024.png&#34; alt=&#34;cover-mock-1024&#34;&gt;&lt;/p&gt;
&lt;p&gt;This article is an excerpt from some recent updates to my book, &lt;a href=&#34;https://envoy-insider.mygraphql.com/zh-cn/latest/&#34;&gt;Envoy Proxy Insider&lt;/a&gt;, covering the &lt;a href=&#34;https://envoy-insider.mygraphql.com/zh-cn/latest/arch/event-driven/event-model.html&#34;&gt;Event-Driven Framework&lt;/a&gt; and the &lt;a href=&#34;https://envoy-insider.mygraphql.com/zh-cn/latest/arch/thread-model/thread-model.html&#34;&gt;Threading Model&lt;/a&gt;. These are considered the foundational core of Envoy Proxy. Most people think of Envoy as a proxy that primarily forwards requests with custom logic. This is correct. However, like other middleware with high-load, low-latency requirements, its design must consider load scheduling and flow control. A good scheduling design must balance throughput, response time, and resource consumption (footprint). This article primarily discusses topics related to events, scheduling, and multi-threaded coordination.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>envoy</category>
            
          
            
              <category>book</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>My Book - Envoy Proxy Insider</title>
        <link>https://blog.mygraphql.com/en/posts/mybooks/envoy-insider/</link>
        <pubDate>Fri, 13 Jun 2025 23:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Fri, 13 Jun 2025 23:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/mybooks/envoy-insider/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/mybooks/envoy-insider/index.assets/cover-mock-1024.png&#34; alt=&#34;cover-mock-1024&#34;&gt;&lt;/p&gt;
&lt;p&gt;This article introduces my new open-source book - &amp;ldquo;&lt;a href=&#34;https://envoy-insider.mygraphql.com/en/latest/index.html&#34;&gt;Envoy Proxy Insider&lt;/a&gt;&amp;rdquo;. It’s a book that dives deep into the mechanisms and implementations of Envoy Proxy. Much of its content comes from my previous book &amp;ldquo;&lt;a href=&#34;https://istio-insider.mygraphql.com/en/latest/&#34;&gt;Istio &amp;amp; Envoy Insider&lt;/a&gt;&amp;rdquo;, from which I’ve extracted the Envoy part and reorganized it into a standalone book. The purpose is to help readers focus solely on Envoy without distraction from Istio. Some content is irrelevant or inapplicable to Istio, so it makes sense to split them. Moving forward, &amp;ldquo;Istio &amp;amp; Envoy Insider&amp;rdquo; will only update Istio-related content, while this new book will carry all updates related to Envoy.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>envoy</category>
            
          
            
              <category>book</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>ChatBlog - An Experiment in AI Interaction for Personal Blogs</title>
        <link>https://blog.mygraphql.com/en/posts/ai/langchain/rag-tool-chat-history-study/</link>
        <pubDate>Sat, 29 Mar 2025 03:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Sat, 29 Mar 2025 03:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/ai/langchain/rag-tool-chat-history-study/</guid>
        <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Adding a chatbot to a blog is both interesting and practical. It can answer readers&amp;rsquo; simple questions based on the blog content and the author&amp;rsquo;s introduction articles. ChatBlog (chat + blog) might be an engaging and useful model for interactive technical sharing. This article documents my exploration and implementation process.&lt;/p&gt;
&lt;p&gt;Currently, the interactive knowledge base + LLM model is popular. A blog serves as an open knowledge base for tech enthusiasts, and making it open to chat is an intriguing idea.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>career</category>
            
          
            
              <category>ai</category>
            
          
            
              <category>langchain</category>
            
          
            
              <category>LLM</category>
            
          
            
              <category>ollama</category>
            
          
            
              <category>RAG</category>
            
          
            
              <category>self-hosting</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Deep dive into Istio Ambient implement cross pods hub by network namespace trick</title>
        <link>https://blog.mygraphql.com/en/posts/cloud/istio/ztunnel/crossing-pods-network-namespaces/</link>
        <pubDate>Sat, 03 Aug 2024 23:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Sat, 03 Aug 2024 23:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/cloud/istio/ztunnel/crossing-pods-network-namespaces/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/cloud/istio/ztunnel/crossing-pods-network-namespaces/mr-bean.jpg&#34; alt=&#34;mr-bean&#34;&gt;&lt;/p&gt;
&lt;p&gt;The so-called &lt;code&gt;Sidecarless&lt;/code&gt; of Istio Ambient is, strictly speaking, a change from a &lt;code&gt;sidecar container of pod&lt;/code&gt; to a &lt;code&gt;sidecar pod of pods on a worker node&lt;/code&gt;. Note that I&amp;rsquo;m introducing the term &lt;code&gt;sidecar pod&lt;/code&gt; here. To implement pods on the same worker node share a sidecar pod, you need to solve the problem of redirecting traffic from all pods to the sidecar pod.&lt;/p&gt;
&lt;p&gt;The solution to this problem has gone through two versions during the development of Istio Ambient.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>istio</category>
            
          
            
              <category>envoy</category>
            
          
            
              <category>rust</category>
            
          
            
              <category>ztunnel</category>
            
          
            
              <category>Istio-Ambient</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Please prove that it is the network&#39;s fault - the lost Envoy sidecar</title>
        <link>https://blog.mygraphql.com/en/posts/cloud/envoy/envoy-tcp-stats/</link>
        <pubDate>Wed, 12 Jun 2024 08:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Wed, 12 Jun 2024 08:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/cloud/envoy/envoy-tcp-stats/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/cloud/envoy/envoy-tcp-stats/index.assets/image-20240612231023654.png&#34; alt=&#34;Queen Christina of Sweden (left) and René Descartes&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Queen Christina of Sweden (left) and René Descartes&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;There are 3 treasures for SRE / Supporting / Performance test team in distress of troubleshooting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Network Problems&lt;/li&gt;
&lt;li&gt;Reboot&lt;/li&gt;
&lt;li&gt;Hardware failure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you meet a smart partner, he/she will be pursued: “Please use the data to prove your claim”. If you say it&amp;rsquo;s a network problem, how do you prove it?&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>TCP</category>
            
          
            
              <category>socket</category>
            
          
            
              <category>envoy</category>
            
          
            
              <category>network</category>
            
          
            
              <category>istio</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Flow control and backpressure of Envoy/Istio</title>
        <link>https://blog.mygraphql.com/en/posts/cloud/envoy/flow-control/</link>
        <pubDate>Sun, 21 Apr 2024 23:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Sun, 21 Apr 2024 23:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/cloud/envoy/flow-control/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/cloud/envoy/flow-control/istio-insider-book-cover-en.jpg&#34; alt=&#34;cover&#34;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;📚 Excerpt From:&lt;br /&gt;
This article is excerpted from the &lt;a href=&#34;https://istio-insider.mygraphql.com/en/latest/ch2-envoy/arch/flow-control/flow-control.html&#34;&gt;Flow Control&lt;/a&gt; section in an open source book I&amp;rsquo;m writing: &lt;a href=&#34;https://istio-insider.mygraphql.com/en/latest/index.html&#34;&gt;Istio &amp;amp; Envoy Insider&lt;/a&gt;.&lt;br /&gt;
&lt;strong&gt;If the figures in this article not clear, you can go back to the original book.&lt;/strong&gt;&lt;br /&gt;
My book: &lt;a href=&#34;https://istio-insider.mygraphql.com/en/latest/index.html&#34;&gt;Istio &amp;amp; Envoy Insider&lt;/a&gt; includes: Envoy source code deep dive, in-depth Envoy fundamentals  analysis , Istio fundamentals analysis. But it&amp;rsquo;s not a traditional &amp;ldquo;deep dive xyz source code&amp;rdquo; type of book. on the contrary, I have done my best not to directly paste source code in the book. Reading source code is a necessary step to grasp the details of the implementation, but browsing source code in a book is generally a very bad experience. So, this book uses source code navigation diagrams to let readers understand the full picture of the implementation, rather than getting lost in the details of fragmented source code snippets and forgetting the whole picture.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>istio</category>
            
          
            
              <category>envoy</category>
            
          
            
              <category>http</category>
            
          
            
              <category>http2</category>
            
          
            
              <category>backpressure</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>My new book - Istio &amp; Envoy Insider</title>
        <link>https://blog.mygraphql.com/en/posts/cloud/istio/istio-envoy-insider-introduction/</link>
        <pubDate>Sun, 21 Apr 2024 23:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Sun, 21 Apr 2024 23:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/cloud/istio/istio-envoy-insider-introduction/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/cloud/istio/istio-envoy-insider-introduction/istio-insider-book-cover-en.jpg&#34; alt=&#34;cover&#34;&gt;&lt;/p&gt;
&lt;p&gt;My new open source book - Istio and Envoy Insider, has just reached a milestone. So I want to Introduce it.&lt;/p&gt;
&lt;h2 id=&#34;overview-of-this-book&#34;&gt;Overview of this book&lt;/h2&gt;
&lt;p&gt;This book is called Istio &amp;amp; Envoy Insider. It is a book in progress, now in draft stage.&lt;/p&gt;
&lt;h3 id=&#34;what-this-book-is-about&#34;&gt;What this book is about&lt;/h3&gt;
&lt;p&gt;This book includes: Envoy source code deep dive, in-depth Envoy fundamentals  analysis , Istio fundamentals analysis. But it&amp;rsquo;s not a traditional &amp;ldquo;deep dive xyz source code&amp;rdquo; type of book. on the contrary, I have done my best not to directly paste source code in the book. Reading source code is a necessary step to grasp the details of the implementation, but browsing source code in a book is generally a very bad experience. So, this book uses source code navigation diagrams to let readers understand the full picture of the implementation, rather than getting lost in the details of fragmented source code snippets and forgetting the whole picture.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>istio</category>
            
          
            
              <category>envoy</category>
            
          
            
              <category>book</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Remote debugging an Envoy sidecar running in an Istio mesh by lldb at C&#43;&#43; source code level</title>
        <link>https://blog.mygraphql.com/en/posts/cloud/istio/debug-istio-proxy/</link>
        <pubDate>Wed, 10 May 2023 17:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Wed, 10 May 2023 17:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/cloud/istio/debug-istio-proxy/</guid>
        <description>&lt;h1 id=&#34;debugging-envoy-sidecar-c-code-in-an-istio-mesh&#34;&gt;Debugging Envoy sidecar C++ code in an Istio mesh&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;This article is source from my open source book &lt;a href=&#34;https://istio-insider.mygraphql.com/en/latest/dev-istio/dev-istio-proxy/debug-istio-proxy/debug-istio-proxy.html&#34;&gt;[Istio Insider]&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Debugging Envoy sidecar C++ code running in Istio mesh. It helps deep dive into the sidecar at code level. It makes us more confident when troubleshooting Istio problem or writing better EnvoyFilter or eBPF trace program. This article guides how to use &lt;code&gt;VSCode&lt;/code&gt; and &lt;code&gt;lldb&lt;/code&gt; to debug Envoy istio-proxy sidecar.&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>lldb</category>
            
          
            
              <category>debug</category>
            
          
            
              <category>istio</category>
            
          
            
              <category>envoy</category>
            
          
            
              <category>cloud</category>
            
          
            
              <category>dev-env</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>Illustrates Istio &amp; Envoy request processing flow, timeout, circuit breaker and metrics monitoring</title>
        <link>https://blog.mygraphql.com/en/posts/cloud/envoy/req-resp-flow-timeline/</link>
        <pubDate>Sun, 02 Oct 2022 23:12:15 +0800</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Sun, 02 Oct 2022 23:12:15 +0800</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/cloud/envoy/req-resp-flow-timeline/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;../../../../../zh/posts/cloud/envoy/req-resp-flow-timeline/req-resp-flow-timeline.assets/logo.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;💂 About the cover:&lt;br /&gt;
&lt;a href=&#34;https://fineartamerica.com/featured/2-london-watercolor-painting-juan-bosco.html&#34;&gt;Tower Bridge watercolor painting by Juan Bosco&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;📚 Excerpt From:&lt;br /&gt;
This article is excerpted from a section &lt;a href=&#34;https://istio-insider.mygraphql.com/en/latest/ch2-envoy/req-resp-flow-timeline/req-resp-flow-timeline.html&#34;&gt;Envoy Request and Response Scheduling&lt;/a&gt; from an open source book I&amp;rsquo;m writing &lt;a href=&#34;https://istio-insider.mygraphql.com/en/latest/index.html&#34;&gt;Istio &amp;amp; Envoy Insider&lt;/a&gt; &lt;strong&gt;If the reproduced picture is not clear, you can go back to the original book.&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.mygraphql.com/en/posts/cloud/envoy/req-resp-flow-timeline/#request-and-response-scheduling&#34;&gt;Request and Response scheduling&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.mygraphql.com/en/posts/cloud/envoy/req-resp-flow-timeline/#request-and-response-scheduling-1&#34;&gt;Request and response scheduling&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.mygraphql.com/en/posts/cloud/envoy/req-resp-flow-timeline/#related-components&#34;&gt;Related Components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.mygraphql.com/en/posts/cloud/envoy/req-resp-flow-timeline/#related-monitoring-metrics&#34;&gt;Related monitoring metrics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.mygraphql.com/en/posts/cloud/envoy/req-resp-flow-timeline/#request-scheduling-process&#34;&gt;Request scheduling process&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.mygraphql.com/en/posts/cloud/envoy/req-resp-flow-timeline/#request-and-response-scheduling-sequence&#34;&gt;Request and response scheduling sequence&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.mygraphql.com/en/posts/cloud/envoy/req-resp-flow-timeline/#summary&#34;&gt;Summary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.mygraphql.com/en/posts/cloud/envoy/req-resp-flow-timeline/#some-interesting-extended-reading&#34;&gt;Some interesting extended reading&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;request-and-response-scheduling&#34;&gt;Request and Response scheduling&lt;/h1&gt;
&lt;p&gt;🎤 Before the official compilation. I would like to talk about some of the reasons for writing this chapter. Why study Envoy&amp;rsquo;s request and response scheduling?&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>istio</category>
            
          
            
              <category>envoy</category>
            
          
            
              <category>dev-ops</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>BPF tracing istio/Envoy - Part4: Upstream/Downstream Event-Driven Collaboration of Envoy@Istio</title>
        <link>https://blog.mygraphql.com/en/posts/low-tec/trace/trace-istio/trace-istio-part4/</link>
        <pubDate>Thu, 07 Apr 2022 16:12:15 +0900</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Thu, 07 Apr 2022 16:12:15 +0900</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/low-tec/trace/trace-istio/trace-istio-part4/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/low-tec/trace/trace-istio/trace-istio-part4/index.assets/logo.png&#34; alt=&#34;logo&#34;&gt;&lt;/p&gt;
&lt;p&gt;Notice: The original article come from &lt;a href=&#34;https://blog.mygraphql.com/en/posts/low-tec/trace/trace-istio/trace-istio-part4/&#34;&gt;https://blog.mygraphql.com/en/posts/low-tec/trace/trace-istio/trace-istio-part4/&lt;/a&gt; . If picture unclear, please redirect to the original article.&lt;/p&gt;
&lt;p&gt;There is &lt;a href=&#34;https://blog.mygraphql.com/zh/posts/low-tec/trace/trace-istio/trace-istio-part4/&#34;&gt;Chinese version&lt;/a&gt; too.&lt;/p&gt;
&lt;h2 id=&#34;why&#34;&gt;Why&lt;/h2&gt;
&lt;p&gt;I can&amp;rsquo;t believe that I really insisted on writing Part 4. Believe it or not, the &amp;ldquo;Why&amp;rdquo; section of each part is the hardest thing to write :) . If you&amp;rsquo;re reading this series for the first time, don&amp;rsquo;t worry, each section is relatively independent.&lt;/p&gt;
&lt;p&gt;Introduction to Envoy you have saw earlier describes envoy&amp;rsquo;s features like this:&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>trace</category>
            
          
            
              <category>kernel</category>
            
          
            
              <category>ebpf</category>
            
          
            
              <category>istio</category>
            
          
            
              <category>envoy</category>
            
          
            
              <category>bpftrace</category>
            
          
            
              <category>epoll</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>My real-life Istio Performance Tuning Part 2 - Starvating threads and SO_REUSEPORT socket</title>
        <link>https://blog.mygraphql.com/en/posts/cloud/istio/istio-tunning/istio-thread-balance/</link>
        <pubDate>Sat, 04 Sep 2021 15:12:15 +0900</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Sat, 04 Sep 2021 15:12:15 +0900</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/cloud/istio/istio-tunning/istio-thread-balance/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/cloud/istio/istio-tunning/istio-thread-balance/Gravity-Glue-6-Credit-Michael-Grab-900x580.jpg&#34; alt=&#34;&#34;&gt;&lt;br /&gt;
&lt;em&gt;From: &lt;a href=&#34;https://getboulder.com/boulder-artist-rocks-the-world/&#34;&gt;https://getboulder.com/boulder-artist-rocks-the-world/&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;Notice: The original article come from &lt;a href=&#34;https://blog.mygraphql.com/en/posts/cloud/istio/istio-tunning/istio-thread-balance/&#34;&gt;https://blog.mygraphql.com/en/posts/cloud/istio/istio-tunning/istio-thread-balance/&lt;/a&gt; . If picture unclear, please redirect to the original article.&lt;/p&gt;
&lt;p&gt;There is &lt;a href=&#34;https://blog.mygraphql.com/zh/posts/cloud/istio/istio-tunning/istio-thread-balance/&#34;&gt;Chinese version&lt;/a&gt; too.&lt;/p&gt;
&lt;p&gt;For a long time, programmers relied on Moore&amp;rsquo;s Law. And before it hits the ground, programmers find another lifesaver: parallelism/concurrency/eventual consistency. Today, Cloud Native/Micro-Service everywhere. Multi-threading  by default. In the world of computer performance engineering, there is also a word: &lt;code&gt;Mechanical Sympathy&lt;/code&gt;. The requirement of &amp;ldquo;Sympathy&amp;rdquo; is to understand how it work. In daily life, many people understand and pursue &lt;code&gt;work life balance&lt;/code&gt;. But your thread, is it &lt;code&gt;balance&lt;/code&gt;? Do you want to sympathize with it? What kind of sympathy is a thread that is tired enough to be overloaded and sees other companions eating afternoon tea? How can I get multithreading to maximum throughput?&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>cloud</category>
            
          
            
              <category>istio</category>
            
          
            
              <category>tunning</category>
            
          
        
        
        
      </item>
      
      <item>
        <title>My real-life Istio Performance Tuning - Part 1</title>
        <link>https://blog.mygraphql.com/en/posts/cloud/istio/istio-tunning/istio-filter-tunning-thread/</link>
        <pubDate>Fri, 02 Jul 2021 15:12:15 +0900</pubDate>
        <author>labile.zhu@gmail.com (Mark Zhu)</author>
        <atom:modified>Fri, 02 Jul 2021 15:12:15 +0900</atom:modified>
        <guid>https://blog.mygraphql.com/en/posts/cloud/istio/istio-tunning/istio-filter-tunning-thread/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://blog.mygraphql.com/en/posts/cloud/istio/istio-tunning/istio-filter-tunning-thread/index.assets/image-20210702232528945.png&#34; alt=&#34;logo&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;why-tuning&#34;&gt;Why tuning&lt;/h2&gt;
&lt;p&gt;If it takes interest and momentum to push a new technology, then what is needed to get this technology go to live production is hard working. Including Cloud Native and Istio.&lt;br /&gt;
In pre-launch performance testing, Istio out-of-box provided observability, operational convenience, and also introduced pain: Increased service latency. How to minimize latency has become a critical task.&lt;/p&gt;
&lt;p&gt;My Scenario:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SERVICE-A invoke SERVICE-B&lt;/li&gt;
&lt;li&gt;Latency of Service-A, which was previously 9ms at P50, is now 14ms at P50.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;bottleneck-analysis&#34;&gt;Bottleneck Analysis&lt;/h2&gt;
&lt;p&gt;There are two paths under my feet:&lt;/p&gt;</description>
        
        <dc:creator>Mark Zhu</dc:creator>
        
        
        
        
          
            
              <category>cloud</category>
            
          
            
              <category>istio</category>
            
          
            
              <category>tunning</category>
            
          
        
        
        
      </item>
      

    
  </channel>
</rss>
