<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Productivity Tools on TorchTree</title>
        <link>https://torchtree.com/en/tags/productivity-tools/</link>
        <description>Recent content in Productivity Tools on TorchTree</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <copyright>TorchTree Co., Ltd.</copyright>
        <lastBuildDate>Wed, 22 Jul 2026 12:14:08 +0800</lastBuildDate><atom:link href="https://torchtree.com/en/tags/productivity-tools/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Advanced Pi Agent Configuration: AGENTS.md, Model Switching, and Thinking Levels in Practice</title>
        <link>https://torchtree.com/en/post/pi-agent-configuration-guide/</link>
        <pubDate>Wed, 22 Jul 2026 12:14:08 +0800</pubDate>
        
        <guid>https://torchtree.com/en/post/pi-agent-configuration-guide/</guid>
        <description>&lt;img src="https://getnas.s3.bitiful.net/2026/07/pi-agent-config-cover.png" alt="Featured image of post Advanced Pi Agent Configuration: AGENTS.md, Model Switching, and Thinking Levels in Practice" /&gt;&lt;p&gt;In the article &lt;a class=&#34;link&#34; href=&#34;https://hitorch.cn/pi-agent-setup-guide/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pi Coding Agent in Practice: From Installation to Everyday Use&lt;/a&gt;, I covered Pi&amp;rsquo;s installation, first-time configuration, and its core extension packages. That content lets beginners get up and running quickly, but Pi&amp;rsquo;s real flexibility lives in its configuration files.&lt;/p&gt;
&lt;p&gt;Pi&amp;rsquo;s core is just 418 lines of TypeScript, and by default it only gives the model four tools (read, write, edit, bash). All of its advanced behavior — which model to use, how large a context, how deep to think — is controlled through external configuration files. Understanding how these files relate to each other and how they&amp;rsquo;re prioritized is the key step in taking Pi from &amp;ldquo;usable&amp;rdquo; to &amp;ldquo;actually good.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;how-many-layers-does-pis-configuration-have-and-what-does-each-one-manage&#34;&gt;How many layers does Pi&amp;rsquo;s configuration have, and what does each one manage?
&lt;/h2&gt;&lt;p&gt;Pi&amp;rsquo;s configuration system uses a layered, additive design. Once you understand what each layer is responsible for and its order of precedence, you won&amp;rsquo;t run into &amp;ldquo;I changed it but nothing happened.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Global configuration&lt;/strong&gt; lives in &lt;code&gt;~/.pi/agent/&lt;/code&gt;, affecting all projects. &lt;strong&gt;Project configuration&lt;/strong&gt; lives in a project&amp;rsquo;s &lt;code&gt;.pi/settings.json&lt;/code&gt;, affecting only the current project. Nested objects in the project config are merged with the global config rather than replacing it entirely.&lt;/p&gt;
&lt;p&gt;Beyond the two layers of settings.json, Pi also uses four specialized configuration files, each with a different purpose:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Config file&lt;/th&gt;
          &lt;th&gt;Location&lt;/th&gt;
          &lt;th&gt;Purpose&lt;/th&gt;
          &lt;th&gt;Load timing&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;AGENTS.md&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Project root or &lt;!-- raw HTML omitted --&gt;~/.pi/agent/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Project context and coding instructions, injected into the system prompt&lt;/td&gt;
          &lt;td&gt;Auto-loaded at startup&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;APPEND_SYSTEM.md&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;~/.pi/agent/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Global behavior rules, appended to the end of the system prompt&lt;/td&gt;
          &lt;td&gt;Loaded at startup&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;settings.json&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Global or &lt;!-- raw HTML omitted --&gt;.pi/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Model selection, UI theme, compaction strategy, retries, and other runtime parameters&lt;/td&gt;
          &lt;td&gt;Loaded at startup&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;models.json&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;~/.pi/agent/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Custom models and Providers (Ollama, vLLM, etc.)&lt;/td&gt;
          &lt;td&gt;Reloaded each time you open &lt;!-- raw HTML omitted --&gt;/model&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;auth.json&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;~/.pi/agent/&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;API keys and OAuth credentials (permission 0600)&lt;/td&gt;
          &lt;td&gt;Read on demand&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Below I&amp;rsquo;ll break down best practices for each configuration file in turn.&lt;/p&gt;
&lt;h2 id=&#34;how-to-write-an-agentsmd-that-actually-works&#34;&gt;How to write an AGENTS.md that actually works
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; is the primary entry point for Pi to understand a project&amp;rsquo;s context. When Pi starts, it looks in several locations and merges their contents into the system prompt: it loads &lt;code&gt;~/.pi/agent/AGENTS.md&lt;/code&gt; first (global instructions), then walks up through parent directories, and finally loads the &lt;code&gt;AGENTS.md&lt;/code&gt; in the current directory.&lt;/p&gt;
&lt;p&gt;In other words, &lt;strong&gt;the global AGENTS.md defines your typical tech stack and general conventions as a developer, while the project AGENTS.md defines that specific project&amp;rsquo;s constraints and workflow.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;what-to-put-in-the-global-agentsmd&#34;&gt;What to put in the global AGENTS.md
&lt;/h3&gt;&lt;p&gt;The global &lt;code&gt;~/.pi/agent/AGENTS.md&lt;/code&gt; is a good place to record the tech-stack preferences you use day to day. The global AGENTS.md that DeepakNess shares on his blog is a great reference example:&lt;/p&gt;
&lt;p&gt;This content comes from DeepakNess&amp;rsquo;s article, &lt;a class=&#34;link&#34; href=&#34;https://deepakness.com/blog/pi-agent-setup/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Setting Up and Using the Pi Coding Agent&lt;/a&gt;. It doesn&amp;rsquo;t try to be overly specific — instead it gives broad tech-stack hints while asking Pi to defer to the project-level AGENTS.md first.&lt;/p&gt;
&lt;h3 id=&#34;how-to-organize-a-project-agentsmd&#34;&gt;How to organize a project AGENTS.md
&lt;/h3&gt;&lt;p&gt;The project-level AGENTS.md needs to be more precise. Here&amp;rsquo;s a template tailored for a TypeScript project, based on the recommendations in the &lt;a class=&#34;link&#34; href=&#34;https://pi.dev/docs/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;official Pi documentation&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;If you manage multiple projects, it&amp;rsquo;s worth keeping a template for each project type. Copy it over each time you start a new project and adjust the tech-stack fields as needed.&lt;/p&gt;
&lt;h3 id=&#34;remember-to-reload-after-changes&#34;&gt;Remember to reload after changes
&lt;/h3&gt;&lt;p&gt;Every time you modify AGENTS.md, you need to run &lt;code&gt;/reload&lt;/code&gt; or restart Pi for the change to take effect. This operation isn&amp;rsquo;t triggered often, but it&amp;rsquo;s easy to forget. It&amp;rsquo;s best to test immediately after writing a new rule to confirm Pi&amp;rsquo;s behavior changed as expected.&lt;/p&gt;
&lt;h2 id=&#34;what-does-append_systemmd-control&#34;&gt;What does APPEND_SYSTEM.md control?
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;~/.pi/agent/APPEND_SYSTEM.md&lt;/code&gt; is appended to the end of the system prompt, and it takes precedence over &lt;code&gt;AGENTS.md&lt;/code&gt;. This means its instructions override what came before.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a good fit for defining &lt;strong&gt;behavioral guidelines that apply across projects&lt;/strong&gt;, especially constraints about how the agent works and how it interacts with the user. Drawing on official recommendations and community practice, a typical APPEND_SYSTEM.md looks like this:&lt;/p&gt;
&lt;p&gt;These rules ensure Pi maintains a consistent way of working across projects, without having to restate everything at the start of every conversation.&lt;/p&gt;
&lt;h2 id=&#34;settingsjson-common-options-explained&#34;&gt;settings.json: common options explained
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;settings.json&lt;/code&gt; has two layers: global (&lt;code&gt;~/.pi/agent/settings.json&lt;/code&gt;) and project (&lt;code&gt;.pi/settings.json&lt;/code&gt;). Nested objects in the project layer merge with the global layer. Drawing on the &lt;a class=&#34;link&#34; href=&#34;https://pi.dev/docs/latest/settings&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;official Pi Settings documentation&lt;/a&gt;, here are the settings most worth knowing:&lt;/p&gt;
&lt;h3 id=&#34;models-and-thinking-levels&#34;&gt;Models and thinking levels
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;defaultProvider&lt;/code&gt; and &lt;code&gt;defaultModel&lt;/code&gt; control the model Pi uses by default at startup. &lt;code&gt;defaultThinkingLevel&lt;/code&gt; sets the thinking depth, with options including &lt;code&gt;off&lt;/code&gt;, &lt;code&gt;minimal&lt;/code&gt;, &lt;code&gt;low&lt;/code&gt;, &lt;code&gt;medium&lt;/code&gt;, &lt;code&gt;high&lt;/code&gt;, &lt;code&gt;xhigh&lt;/code&gt;, and &lt;code&gt;max&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;enabledModels&lt;/code&gt; is a high-impact setting. It defines the list of models cycled through by &lt;code&gt;Ctrl+P&lt;/code&gt;, and supports wildcards. If you leave it unset, &lt;code&gt;Ctrl+P&lt;/code&gt; iterates over every available model for that provider, which hurts the experience significantly.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;thinkingBudgets&lt;/code&gt; lets you customize the token budget for each thinking level. The numbers above follow the defaults given in the official Pi documentation. Whether to adjust them depends on your model and task: the higher the budget, the deeper the thinking, and the more tokens consumed.&lt;/p&gt;
&lt;h3 id=&#34;context-compaction&#34;&gt;Context compaction
&lt;/h3&gt;&lt;p&gt;Compaction is Pi&amp;rsquo;s core mechanism for handling long contexts. When the session approaches the context limit, Pi automatically summarizes older messages to free up space for subsequent conversation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;reserveTokens&lt;/code&gt;: the number of tokens reserved for the LLM&amp;rsquo;s response (default 16384). The smaller this value, the sooner compaction happens.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;keepRecentTokens&lt;/code&gt;: the number of recent tokens kept without being summarized (default 20000). Kept messages stay intact, ensuring the most recent discussion isn&amp;rsquo;t lost.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you regularly handle long sessions, you can raise &lt;code&gt;keepRecentTokens&lt;/code&gt;. Note, though, that this reduces compaction efficiency and may hit the model&amp;rsquo;s context-window ceiling sooner.&lt;/p&gt;
&lt;h3 id=&#34;retry-strategy&#34;&gt;Retry strategy
&lt;/h3&gt;&lt;p&gt;The retry configuration is split into two layers: agent-level retries (handled by Pi itself) and provider-level retries (handled by the API SDK). The official documentation recommends keeping &lt;code&gt;retry.provider.maxRetries&lt;/code&gt; at 0, because provider-level retries can burn quota before you even see a rate-limit error.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;baseDelayMs&lt;/code&gt; controls the initial delay of exponential backoff: 2s → 4s → 8s. For tasks that need to run stably over a long time (for example, batch data crawling), you can reasonably increase this value.&lt;/p&gt;
&lt;h3 id=&#34;project-trust-mode&#34;&gt;Project trust mode
&lt;/h3&gt;&lt;p&gt;When Pi first starts in a project, it asks whether to trust that project&amp;rsquo;s &lt;code&gt;.pi/&lt;/code&gt; directory. This mechanism exists to prevent malicious project plugins from auto-loading.&lt;/p&gt;
&lt;p&gt;Available values include &lt;code&gt;ask&lt;/code&gt; (ask every time, the default), &lt;code&gt;always&lt;/code&gt; (auto-trust), and &lt;code&gt;never&lt;/code&gt; (never trust). In CI or automation scenarios, you can use the &lt;code&gt;-a&lt;/code&gt; / &lt;code&gt;--approve&lt;/code&gt; flag to skip the prompt.&lt;/p&gt;
&lt;h2 id=&#34;adding-custom-models-with-modelsjson&#34;&gt;Adding custom models with models.json
&lt;/h2&gt;&lt;p&gt;If your model isn&amp;rsquo;t among Pi&amp;rsquo;s built-in 20-plus Providers, you can add it via &lt;code&gt;~/.pi/agent/models.json&lt;/code&gt;. This file supports Ollama, LM Studio, vLLM, OpenRouter, Cloudflare AI Gateway, and any OpenAI-compatible API endpoint.&lt;/p&gt;
&lt;p&gt;Referencing the full configuration notes in the &lt;a class=&#34;link&#34; href=&#34;https://pi.dev/docs/latest/models&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;official Pi Models documentation&lt;/a&gt;, here are the three most common scenarios:&lt;/p&gt;
&lt;h3 id=&#34;scenario-1-a-local-model-via-ollama&#34;&gt;Scenario 1: a local model via Ollama
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;apiKey&lt;/code&gt; being set to &lt;code&gt;&amp;quot;ollama&amp;quot;&lt;/code&gt; is just a placeholder. Ollama doesn&amp;rsquo;t validate the API key, but Pi needs an auth value to show the model in &lt;code&gt;/model&lt;/code&gt;. The two switches under &lt;code&gt;compat&lt;/code&gt; target Ollama&amp;rsquo;s characteristics: it doesn&amp;rsquo;t support the developer role or the reasoning_effort parameter.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;name&lt;/code&gt; field gives a human-readable label. Pi uses this value both in the model selector and when matching the &lt;code&gt;--model&lt;/code&gt; mode.&lt;/p&gt;
&lt;h3 id=&#34;scenario-2-openrouter-routing-configuration&#34;&gt;Scenario 2: OpenRouter routing configuration
&lt;/h3&gt;&lt;p&gt;OpenRouter lets you set routing preferences among multiple API providers. The configuration below follows the OpenRouter example in the official Pi documentation:&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;openRouterRouting&lt;/code&gt; object is passed through verbatim to the &lt;code&gt;provider&lt;/code&gt; field of the OpenRouter API. &lt;code&gt;order&lt;/code&gt; specifies provider priority, and &lt;code&gt;data_collection: &amp;quot;deny&amp;quot;&lt;/code&gt; declines to use your data for training.&lt;/p&gt;
&lt;h3 id=&#34;scenario-3-proxying-the-anthropic-api&#34;&gt;Scenario 3: proxying the Anthropic API
&lt;/h3&gt;&lt;p&gt;If you use a third-party proxy for the Anthropic Messages API, you can configure it like this:&lt;/p&gt;
&lt;p&gt;In &lt;code&gt;models.json&lt;/code&gt;, &lt;code&gt;apiKey&lt;/code&gt; and &lt;code&gt;headers&lt;/code&gt; support three value-resolution modes: a direct literal, &lt;code&gt;$ENV_VAR&lt;/code&gt; environment-variable interpolation, or &lt;code&gt;!command&lt;/code&gt; command execution. Bitdoze notes in the &lt;a class=&#34;link&#34; href=&#34;https://www.bitdoze.com/pi-coding-agent-setup-guide/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pi Coding Agent Setup Guide&lt;/a&gt; that Pi supports Ollama, LM Studio, vLLM, and any OpenAI-compatible endpoint. This extensibility is a major advantage over comparable tools.&lt;/p&gt;
&lt;h2 id=&#34;managing-api-credentials-with-authjson&#34;&gt;Managing API credentials with auth.json
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;~/.pi/agent/auth.json&lt;/code&gt; stores the API keys and OAuth tokens for all providers. Its permission is set to &lt;code&gt;0600&lt;/code&gt;, allowing only the current user to read and write it.&lt;/p&gt;
&lt;p&gt;auth.json supports three ways of resolving keys:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Literal&lt;/strong&gt;: use the API key string directly&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Environment-variable interpolation&lt;/strong&gt;: &lt;code&gt;&amp;quot;$MY_KEY&amp;quot;&lt;/code&gt; or &lt;code&gt;&amp;quot;${KEY_PREFIX}_${KEY_SUFFIX}&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shell command&lt;/strong&gt;: &lt;code&gt;&amp;quot;!security find-generic-password -ws &#39;anthropic&#39;&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The official documentation notes that auth.json takes precedence over environment variables. This means if you&amp;rsquo;ve set both a &lt;code&gt;DEEPSEEK_API_KEY&lt;/code&gt; environment variable and a deepseek entry in auth.json, the latter overrides the former.&lt;/p&gt;
&lt;p&gt;One practical tip is to use a shell command to read the credential from the system keychain, avoiding writing your API key in plaintext to any file:&lt;/p&gt;
&lt;h2 id=&#34;model-switching-strategy-which-model-to-use-when&#34;&gt;Model-switching strategy: which model to use when
&lt;/h2&gt;&lt;p&gt;One of Pi&amp;rsquo;s core strengths is model-agnosticism. You can pick a different model for different tasks, and switching is instantaneous.&lt;/p&gt;
&lt;h3 id=&#34;how-to-switch&#34;&gt;How to switch
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Action&lt;/th&gt;
          &lt;th&gt;Shortcut / command&lt;/th&gt;
          &lt;th&gt;Notes&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Open the model selector&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Ctrl+L&lt;!-- raw HTML omitted --&gt; or &lt;!-- raw HTML omitted --&gt;/model&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Quickly switch models&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Cycle through models&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Ctrl+P&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Rotate through the &lt;!-- raw HTML omitted --&gt;enabledModels&lt;!-- raw HTML omitted --&gt; list&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Adjust thinking level&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Shift+Tab&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Toggle thinking depth&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Interrupt the current action&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Escape&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Cancel the running task&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Send a steering message&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Enter&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Interrupt the agent&amp;rsquo;s current workflow and respond immediately&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Send a follow-up message&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Alt+Enter&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Append a message after the agent finishes its work&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quit&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Ctrl+C&lt;!-- raw HTML omitted --&gt; (press twice)&lt;/td&gt;
          &lt;td&gt;Exit Pi&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Reference a file&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;@&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Fuzzy-search files&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Run a command&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;!&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Send a command&amp;rsquo;s output to the model&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Silent command&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;!!&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Run a command without adding it to context&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The shortcut table partly draws on the &lt;a class=&#34;link&#34; href=&#34;https://pi-agent.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pi Agent Chinese guide&lt;/a&gt; and DeepakNess&amp;rsquo;s setup article.&lt;/p&gt;
&lt;h3 id=&#34;a-recommended-layered-strategy&#34;&gt;A recommended layered strategy
&lt;/h3&gt;&lt;p&gt;Experience from multiple community users converges on the same pattern: use models in layers, matching capability to task complexity. The following is drawn from DeepakNess and Bitdoze&amp;rsquo;s articles:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Task type&lt;/th&gt;
          &lt;th&gt;Recommended model&lt;/th&gt;
          &lt;th&gt;Thinking level&lt;/th&gt;
          &lt;th&gt;Reasoning&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Quick edits, file operations, batch scripts&lt;/td&gt;
          &lt;td&gt;DeepSeek V4 Flash / MiniMax M2.7&lt;/td&gt;
          &lt;td&gt;low or off&lt;/td&gt;
          &lt;td&gt;Extremely cheap, plenty for fast tasks&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Everyday coding, small-to-medium refactors&lt;/td&gt;
          &lt;td&gt;DeepSeek V4 Pro / Qwen 3.6 Plus&lt;/td&gt;
          &lt;td&gt;medium&lt;/td&gt;
          &lt;td&gt;Balances quality and cost&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Deep analysis, architecture design, complex debugging&lt;/td&gt;
          &lt;td&gt;DeepSeek V4 Pro / Claude Sonnet 4&lt;/td&gt;
          &lt;td&gt;high or xhigh&lt;/td&gt;
          &lt;td&gt;Needs a deeper reasoning chain&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Visual tasks (screenshot understanding, UI analysis)&lt;/td&gt;
          &lt;td&gt;Kimi K3 / Claude&lt;/td&gt;
          &lt;td&gt;depends on the model&lt;/td&gt;
          &lt;td&gt;Proxied via pi-vision-proxy when the main model has no vision&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;DeepakNess provides a concrete data point in his article: crawling 285,000 URLs with DeepSeek V4 Flash took about 1.5 hours with a total cost of $1. That illustrates the cost-effectiveness of low thinking level plus a cheap model on batch tasks.&lt;/p&gt;
&lt;h3 id=&#34;enabledmodels-wildcards&#34;&gt;enabledModels wildcards
&lt;/h3&gt;&lt;p&gt;To make &lt;code&gt;Ctrl+P&lt;/code&gt; switching more efficient, it&amp;rsquo;s worth setting an &lt;code&gt;enabledModels&lt;/code&gt; list in settings.json:&lt;/p&gt;
&lt;p&gt;Wildcards match all qualifying models. If you only need two or three specific models, you can also write exact IDs:&lt;/p&gt;
&lt;h2 id=&#34;how-thinking-level-affects-output-quality&#34;&gt;How Thinking Level affects output quality
&lt;/h2&gt;&lt;p&gt;Pi&amp;rsquo;s thinking level is a layered parameter that controls how deeply the model reasons before answering. Based on the official Settings docs at pi.dev and the thinkingLevelMap explanation in models.md, different levels correspond to different behavioral characteristics:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Level&lt;/th&gt;
          &lt;th&gt;Use case&lt;/th&gt;
          &lt;th&gt;Token budget (default)&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;off&lt;/td&gt;
          &lt;td&gt;Simple Q&amp;amp;A, tasks that need no reasoning&lt;/td&gt;
          &lt;td&gt;no reasoning tokens&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;minimal&lt;/td&gt;
          &lt;td&gt;Very simple judgments, such as &amp;ldquo;yes/no&amp;rdquo; classification&lt;/td&gt;
          &lt;td&gt;1024&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;low&lt;/td&gt;
          &lt;td&gt;Light reasoning, e.g. formatting, simple conversions&lt;/td&gt;
          &lt;td&gt;4096&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;medium&lt;/td&gt;
          &lt;td&gt;Routine coding tasks&lt;/td&gt;
          &lt;td&gt;10240&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;high&lt;/td&gt;
          &lt;td&gt;Complex refactors, debugging&lt;/td&gt;
          &lt;td&gt;32768&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;xhigh&lt;/td&gt;
          &lt;td&gt;Deep analysis, architecture design&lt;/td&gt;
          &lt;td&gt;65536&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;max&lt;/td&gt;
          &lt;td&gt;Extremely complex multi-step reasoning&lt;/td&gt;
          &lt;td&gt;provider cap&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The differences between levels aren&amp;rsquo;t linear. The biggest quality gain is from low to medium; from high to xhigh, the marginal returns diminish. In practice, 80% of everyday tasks get satisfactory results at the medium level.&lt;/p&gt;
&lt;p&gt;For models that support thinkingLevelMap, you can finely control in models.json which provider-side parameter each level maps to. For example, a given model might only need the high and max levels, with the middle levels skipped:&lt;/p&gt;
&lt;p&gt;This mechanism comes from the thinkingLevelMap explanation in the Pi Models documentation. When a model doesn&amp;rsquo;t support certain levels, Pi automatically jumps to the adjacent supported level.&lt;/p&gt;
&lt;h2 id=&#34;context-management-compaction-session-trees-and-manual-control&#34;&gt;Context management: compaction, session trees, and manual control
&lt;/h2&gt;&lt;p&gt;Long sessions are the norm for coding agents. Pi provides three layers of context-management mechanisms.&lt;/p&gt;
&lt;h3 id=&#34;automatic-compaction&#34;&gt;Automatic compaction
&lt;/h3&gt;&lt;p&gt;Compaction runs in the background. When the context approaches the model&amp;rsquo;s window limit, Pi automatically summarizes older messages. &lt;code&gt;compaction.reserveTokens&lt;/code&gt; controls when compaction triggers: it fires when the remaining tokens drop below this value. &lt;code&gt;compaction.keepRecentTokens&lt;/code&gt; ensures the most recent messages aren&amp;rsquo;t summarized.&lt;/p&gt;
&lt;p&gt;If you want finer control, you can trigger &lt;code&gt;/compact&lt;/code&gt; manually and Pi will immediately compact the current session.&lt;/p&gt;
&lt;h3 id=&#34;session-tree-management&#34;&gt;Session-tree management
&lt;/h3&gt;&lt;p&gt;The &lt;code&gt;/tree&lt;/code&gt; command displays the session history as a tree structure. Each branch represents a conversation path. Pi supports:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/resume&lt;/code&gt;: pick up a previous session and continue working&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/new&lt;/code&gt;: start a new session&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/fork&lt;/code&gt;: branch from the current session to begin a new line of conversation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This design lets you try different solution paths without losing context.&lt;/p&gt;
&lt;h2 id=&#34;a-complete-configuration-template&#34;&gt;A complete configuration template
&lt;/h2&gt;&lt;p&gt;Combining all of the above, here&amp;rsquo;s a complete configuration you can put into daily use.&lt;/p&gt;
&lt;h3 id=&#34;global-settingsjson&#34;&gt;Global settings.json
&lt;/h3&gt;&lt;h3 id=&#34;global-append_systemmd&#34;&gt;Global APPEND_SYSTEM.md
&lt;/h3&gt;&lt;h3 id=&#34;project-pisettingsjson-overriding-the-global-compaction-strategy&#34;&gt;Project .pi/settings.json (overriding the global compaction strategy)
&lt;/h3&gt;&lt;p&gt;This override makes short-session projects that need frequent compaction trigger it earlier, avoiding wasted context window.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Pi&amp;rsquo;s configuration system revolves around one core principle: &lt;strong&gt;layer on layer, precise control&lt;/strong&gt;. Global configuration defines general behavior, project configuration overrides specific needs, AGENTS.md conveys project context, and APPEND_SYSTEM.md constrains the agent&amp;rsquo;s behavioral patterns.&lt;/p&gt;
&lt;p&gt;Once you understand what each layer is responsible for and its priority, Pi&amp;rsquo;s &amp;ldquo;minimal core + external configuration&amp;rdquo; design philosophy stops being a &amp;ldquo;too few features&amp;rdquo; weakness and becomes a &amp;ldquo;you control everything&amp;rdquo; strength. When facing different tasks each day, you only need to switch models with &lt;code&gt;Ctrl+P&lt;/code&gt; and adjust thinking depth with &lt;code&gt;Shift+Tab&lt;/code&gt; to move quickly between different working modes.&lt;/p&gt;
&lt;p&gt;If your configuration already covers the main files mentioned in this article, the next step is to focus on the extension system: use &lt;code&gt;pi install&lt;/code&gt; to add packages such as pi-web-access (web search), pi-codex-goal (task tracking), and pi-vision-proxy (vision proxy), gradually building a Pi environment fully suited to your own workflow.&lt;/p&gt;
&lt;p&gt;Sources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://pi.dev/docs/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pi official documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://pi.dev/docs/latest/settings&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pi official Settings documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://pi.dev/docs/latest/providers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pi official Providers documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://pi.dev/docs/latest/models&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pi official Models documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepakness.com/blog/pi-agent-setup/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepakNess: Setting Up and Using the Pi Coding Agent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bitdoze.com/pi-coding-agent-setup-guide/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bitdoze: Pi Coding Agent Setup Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://pi-agent.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pi Agent Chinese guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Pi Coding Agent in Practice: A Complete Guide from Installation to Everyday Use</title>
        <link>https://torchtree.com/en/post/pi-agent-setup-guide/</link>
        <pubDate>Sat, 13 Jun 2026 02:01:27 +0800</pubDate>
        
        <guid>https://torchtree.com/en/post/pi-agent-setup-guide/</guid>
        <description>&lt;p&gt;Pi is an open-source terminal coding agent built by Mario Zechner, the author of libGDX. Its core is just 418 lines of TypeScript, providing four tools by default — &lt;code&gt;read&lt;/code&gt;, &lt;code&gt;write&lt;/code&gt;, &lt;code&gt;edit&lt;/code&gt;, and &lt;code&gt;bash&lt;/code&gt; — with all advanced features supplied through extensions and packages. Previously I analyzed Pi&amp;rsquo;s design philosophy &lt;a class=&#34;link&#34; href=&#34;https://hitorch.cn/pi-coding-agent/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;at the architecture level&lt;/a&gt;. This article focuses on real-world use: how to install it, configure it, pick extension packages, and weave Pi into your daily development workflow.&lt;/p&gt;
&lt;h2 id=&#34;positioning-pis-role-in-the-toolchain&#34;&gt;Positioning: Pi&amp;rsquo;s role in the toolchain
&lt;/h2&gt;&lt;p&gt;Pi isn&amp;rsquo;t meant to replace every coding tool. Taking DeepakNess&amp;rsquo;s actual usage as an example, three tools each have their own division of labor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OpenAI Codex&lt;/strong&gt;: handles complex tasks on the main project&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cursor&lt;/strong&gt;: everyday coding on the main project&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pi&lt;/strong&gt;: side projects, experimental tasks, and one-off scripts, usually paired with cheaper open-source models&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The core logic behind this layered strategy: use strong models plus heavyweight tools for high-complexity tasks, and lightweight agents plus low-cost models for simple or exploratory tasks — keeping overall spending in check.&lt;/p&gt;
&lt;h2 id=&#34;installation-and-first-time-configuration&#34;&gt;Installation and first-time configuration
&lt;/h2&gt;&lt;p&gt;Installing Pi only takes a single command:&lt;/p&gt;
&lt;p&gt;Once installed, launch it by typing &lt;code&gt;pi&lt;/code&gt; in the terminal and authenticate with the &lt;code&gt;/login&lt;/code&gt; command. Pi supports two authentication methods:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Subscription login&lt;/strong&gt;: supports Claude Pro/Max, ChatGPT Plus/Pro, GitHub Copilot, Google Gemini CLI, and more&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API key&lt;/strong&gt;: choose &amp;ldquo;Use an API key&amp;rdquo; and enter your provider&amp;rsquo;s secret (e.g., DeepSeek)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Use &lt;code&gt;/model&lt;/code&gt; or &lt;code&gt;Ctrl+L&lt;/code&gt; to open the model selector. The author defaults to &lt;code&gt;deepseek-v4-pro&lt;/code&gt; with the &lt;code&gt;xhigh&lt;/code&gt; thinking level for deep analysis, switching to &lt;code&gt;deepseek-v4-flash&lt;/code&gt; for quick tasks.&lt;/p&gt;
&lt;h2 id=&#34;three-core-extension-packages&#34;&gt;Three core extension packages
&lt;/h2&gt;&lt;p&gt;Pi installs extension packages with &lt;code&gt;pi install&lt;/code&gt;. The following three cover most practical scenarios:&lt;/p&gt;
&lt;h3 id=&#34;pi-web-access&#34;&gt;pi-web-access
&lt;/h3&gt;&lt;p&gt;Gives Pi web search, content scraping, YouTube transcription, and GitHub repository exploration capabilities.&lt;/p&gt;
&lt;p&gt;The configuration file lives at &lt;code&gt;~/.pi/web-search.json&lt;/code&gt;:&lt;/p&gt;
&lt;h3 id=&#34;pi-codex-goal&#34;&gt;pi-codex-goal
&lt;/h3&gt;&lt;p&gt;Adds a goal-tracking mechanism for long-running tasks, well-suited to complex tasks that require multiple steps.&lt;/p&gt;
&lt;h3 id=&#34;pi-vision-proxy&#34;&gt;pi-vision-proxy
&lt;/h3&gt;&lt;p&gt;When the main model lacks vision capabilities, it proxies image-analysis requests to a vision-capable model (such as Kimi K2.6).&lt;/p&gt;
&lt;h2 id=&#34;the-configuration-file-system&#34;&gt;The configuration-file system
&lt;/h2&gt;&lt;p&gt;Pi&amp;rsquo;s configuration is divided into two layers:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AGENTS.md (project context)&lt;/strong&gt;: placed in the project root or &lt;code&gt;~/.pi/agent/AGENTS.md&lt;/code&gt;, its contents are injected into the system prompt. Good for defining a project&amp;rsquo;s tech stack, coding conventions, and so on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;APPEND_SYSTEM.md (global behavior rules)&lt;/strong&gt;: located at &lt;code&gt;~/.pi/agent/APPEND_SYSTEM.md&lt;/code&gt;, appended to the end of the system prompt and given higher priority than AGENTS.md. Good for defining cross-project behavioral conventions, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatically use the vision proxy when the main model lacks vision&lt;/li&gt;
&lt;li&gt;Prefer local files, and only search the web when necessary&lt;/li&gt;
&lt;li&gt;Explain high-risk edits and commands&lt;/li&gt;
&lt;li&gt;Write concisely and avoid AI-sounding language&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;shortcuts-and-common-commands&#34;&gt;Shortcuts and common commands
&lt;/h2&gt;&lt;p&gt;Pi&amp;rsquo;s interaction design focuses on terminal efficiency:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Action&lt;/th&gt;
          &lt;th&gt;Shortcut / command&lt;/th&gt;
          &lt;th&gt;Notes&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Open the model selector&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Ctrl+L&lt;!-- raw HTML omitted --&gt; or &lt;!-- raw HTML omitted --&gt;/model&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Quickly switch models&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Cycle through models&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Ctrl+P&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Rotate through configured models&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Adjust thinking level&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Shift+Tab&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Toggle thinking depth&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Interrupt the current action&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Escape&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Cancel the running task&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Send a steering message&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Enter&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Interrupt the agent&amp;rsquo;s current workflow and respond immediately&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Send a follow-up message&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Alt+Enter&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Append a message after the agent finishes its work&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quit&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Ctrl+C&lt;!-- raw HTML omitted --&gt; (press twice)&lt;/td&gt;
          &lt;td&gt;Exit Pi&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Common commands include &lt;code&gt;/model&lt;/code&gt;, &lt;code&gt;/settings&lt;/code&gt;, &lt;code&gt;/resume&lt;/code&gt;, &lt;code&gt;/new&lt;/code&gt;, &lt;code&gt;/tree&lt;/code&gt; (session-branch management), &lt;code&gt;/compact&lt;/code&gt; (manually compact context), and &lt;code&gt;/session&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;a-real-world-cost-example&#34;&gt;A real-world cost example
&lt;/h2&gt;&lt;p&gt;A typical use case: crawling 285,000 URLs with DeepSeek v4 Flash took about 1.5 hours for a total cost of $1. This illustrates Pi&amp;rsquo;s cost advantage when paired with open-source models.&lt;/p&gt;
&lt;h2 id=&#34;why-choose-pi&#34;&gt;Why choose Pi
&lt;/h2&gt;&lt;p&gt;Pi&amp;rsquo;s core strengths come down to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Terminal-native&lt;/strong&gt;: no UI lag, responsive&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model-agnostic&lt;/strong&gt;: switch providers anytime via &lt;code&gt;/model&lt;/code&gt;, with seamless context migration&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Highly customizable&lt;/strong&gt;: the extension and package mechanism lets users assemble features on demand&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Session-tree management&lt;/strong&gt;: the &lt;code&gt;/tree&lt;/code&gt; command supports branching and navigating conversation history&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatic context compaction&lt;/strong&gt;: automatically summarizes when approaching the context limit&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For terminal users, Pi&amp;rsquo;s value lies not in &amp;ldquo;having the most features&amp;rdquo; but in &amp;ldquo;having the highest controllability.&amp;rdquo; Every one of its behaviors is transparent, and every feature is explicitly installed. This design philosophy makes it the ideal choice for side projects and experimental tasks.&lt;/p&gt;
&lt;p&gt;Sources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://deepakness.com/blog/pi-agent-setup/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepakNess: Setting Up and Using the Pi Coding Agent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://pi.dev/docs/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pi official documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Why Warp Went Open Source and What It Means</title>
        <link>https://torchtree.com/en/post/warp-open-source-analysis/</link>
        <pubDate>Wed, 29 Apr 2026 03:32:22 +0800</pubDate>
        
        <guid>https://torchtree.com/en/post/warp-open-source-analysis/</guid>
        <description>&lt;p&gt;On April 28, 2026, Warp&amp;rsquo;s official blog announced that its terminal client is now open source under the AGPL license, with the code hosted on GitHub. This decision is not merely a code release; it comes with a collaboration mechanism called the Agent-first Workflow, where community contributors work alongside AI Agents via Warp&amp;rsquo;s own Oz platform to drive development. OpenAI participated in the experiment as a founding sponsor.&lt;/p&gt;
&lt;p&gt;This article analyzes Warp&amp;rsquo;s open-source motives, the impact on users, the differences between the free and paid tiers, and the product&amp;rsquo;s future direction, based on Warp&amp;rsquo;s official announcements and pricing information.&lt;/p&gt;
&lt;h2 id=&#34;what-is-warp&#34;&gt;What Is Warp
&lt;/h2&gt;&lt;p&gt;Warp is a modern terminal application for developers, with core features including block-based command editing, autocompletion, history search, and AI-based Agent-assisted programming. Beyond the terminal client, Warp has also launched product lines including Agents (multi-Agent deployment and tracking), Code (building complex features in production codebases), Drive (knowledge base and context management), and Oz (cloud Agent orchestration platform).&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://getnas.s3.bitiful.net/2026/04/image-2.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;Before the open-source move, Warp&amp;rsquo;s terminal client was closed source, with AI features billed by usage. After open-sourcing, the terminal client code is public under the AGPL license, but AI capabilities and cloud services remain paid.&lt;/p&gt;
&lt;h2 id=&#34;why-warp-chose-to-open-source-now&#34;&gt;Why Warp Chose to Open Source Now
&lt;/h2&gt;&lt;p&gt;Warp&amp;rsquo;s official blog gives two levels of reasons.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The primary reason is a bottleneck shift in development efficiency.&lt;/strong&gt; In traditional software development, coding itself is often the most time-consuming part. But as AI Agent capabilities improve rapidly, the Warp team found the limiting factor has shifted from &amp;ldquo;writing code&amp;rdquo; to &amp;ldquo;specification and verification done by humans.&amp;rdquo; Agents can handle the heavy lifting of implementation, while human contributors focus on higher-leverage work: deciding what to build and ensuring it&amp;rsquo;s built right. Having the open-source community participate in managing Agents could, in theory, break through the manpower ceiling of an internal team.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The secondary reason is strategic positioning in a niche.&lt;/strong&gt; Warp points out that there is currently no fully functional open-source Agentic Development Environment (ADE) on the market. By open-sourcing its client, Warp aims to become the benchmark alternative in this emerging field, differentiating against well-funded closed-source competitors.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s worth noting that Warp has had open-source plans since its initial release in 2022, but only executed them in 2026. The team explains that &amp;ldquo;the rise of Agents&amp;rdquo; changed the feasibility of open-source collaboration. Without Agent assistance, the review and integration costs of large-scale community contributions would be unbearable.&lt;/p&gt;
&lt;h2 id=&#34;what-is-the-agent-first-workflow&#34;&gt;What Is the Agent-first Workflow
&lt;/h2&gt;&lt;p&gt;The Agent-first Workflow is the core collaboration model Warp adopted after going open source. It works like this: community contributors propose feature directions or submit requests, Warp&amp;rsquo;s Oz platform dispatches AI Agents to do the coding, planning, testing, and other implementation work, while the core team handles final quality control and merge decisions.&lt;/p&gt;
&lt;p&gt;The difference from traditional open-source projects: in the traditional model, community PRs require manual review and testing by the core team, making manpower the bottleneck; in the Agent-first model, Agents take on most of the implementation and verification work, and the human contributor&amp;rsquo;s role shifts from &amp;ldquo;writing code&amp;rdquo; to &amp;ldquo;setting direction&amp;rdquo; and &amp;ldquo;doing verification.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Warp uses public GitHub issues as the single source of truth for feature tracking and has published a public roadmap for the ADE. This means the community can directly influence product direction by filing issues and joining discussions.&lt;/p&gt;
&lt;h2 id=&#34;what-open-source-brings-to-users&#34;&gt;What Open Source Brings to Users
&lt;/h2&gt;&lt;h3 id=&#34;transparency-and-auditability&#34;&gt;Transparency and Auditability
&lt;/h3&gt;&lt;p&gt;The terminal is the developer&amp;rsquo;s core entry point for interacting with the system, and the commands and data it handles often involve sensitive information. Open source means users can directly audit what Warp executes locally and how data flows. This has real value in security and compliance scenarios, especially for enterprise environments that need to vet third-party tools.&lt;/p&gt;
&lt;h3 id=&#34;greater-customizability&#34;&gt;Greater Customizability
&lt;/h3&gt;&lt;p&gt;Warp has also introduced a programmable settings file, supporting configuration portability across devices. Users can adjust the interface level to their preferences, from a minimal terminal to a full ADE interface with diff views and file trees.&lt;/p&gt;
&lt;h3 id=&#34;more-model-choice&#34;&gt;More Model Choice
&lt;/h3&gt;&lt;p&gt;The open-source version adds support for open-source models such as Kimi, MiniMax, and Qwen, and introduces an &amp;ldquo;auto (open)&amp;rdquo; routing feature that automatically selects the best model based on task type, reducing the cost of manual switching.&lt;/p&gt;
&lt;h2 id=&#34;free-vs-paid-whats-the-difference&#34;&gt;Free vs. Paid: What&amp;rsquo;s the Difference
&lt;/h2&gt;&lt;p&gt;Warp&amp;rsquo;s business model is a hybrid of &amp;ldquo;open-source client + paid cloud services.&amp;rdquo; Core terminal features are free for all users, while AI capabilities and cloud resources are tiered and billed by usage.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Dimension&lt;/th&gt;
          &lt;th&gt;Free&lt;/th&gt;
          &lt;th&gt;Build ($18/month)&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Core terminal features&lt;/td&gt;
          &lt;td&gt;Fully free&lt;/td&gt;
          &lt;td&gt;Fully free&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Source code&lt;/td&gt;
          &lt;td&gt;Open source under AGPL; viewable/modifiable&lt;/td&gt;
          &lt;td&gt;Same open-source codebase&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Monthly AI Credits&lt;/td&gt;
          &lt;td&gt;150 (first 2 months), then 60&lt;/td&gt;
          &lt;td&gt;1,500&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Available AI models&lt;/td&gt;
          &lt;td&gt;Limited&lt;/td&gt;
          &lt;td&gt;Frontier models from OpenAI, Anthropic, Google&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Concurrent cloud Agents&lt;/td&gt;
          &lt;td&gt;4&lt;/td&gt;
          &lt;td&gt;20&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Cloud Agent compute&lt;/td&gt;
          &lt;td&gt;2 vCPU / 4 GiB&lt;/td&gt;
          &lt;td&gt;4 vCPU / 8 GiB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Codebase indexing&lt;/td&gt;
          &lt;td&gt;3 codebases, 3,000 files each&lt;/td&gt;
          &lt;td&gt;40 codebases, 100,000 files each&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Warp Drive knowledge base&lt;/td&gt;
          &lt;td&gt;10 workflows + 3 notebooks&lt;/td&gt;
          &lt;td&gt;Unlimited&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;BYOK (bring your own API key)&lt;/td&gt;
          &lt;td&gt;Not supported&lt;/td&gt;
          &lt;td&gt;Supported&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For pure terminal users, open source doesn&amp;rsquo;t change the experience. Warp&amp;rsquo;s block editing, autocomplete, history search, and other features remain free. The barrier to AI features is credits and model access.&lt;/p&gt;
&lt;p&gt;In late 2025, Warp simplified its pricing from multiple tiers (Pro/Turbo/Lightspeed) into a single Build plan and introduced a Reload Credits mechanism: excess usage can be purchased at 50% less than the old pricing, valid for 12 months.&lt;/p&gt;
&lt;p&gt;One option favorable to heavy users is BYOK (Bring Your Own Key): Build and above users can connect their own OpenAI, Anthropic, or Google API keys, so AI costs go directly onto their existing provider bills, with Warp charging only the $18/month base subscription. For developers who already have AI subscriptions, this can significantly cut total costs.&lt;/p&gt;
&lt;h2 id=&#34;how-different-users-should-choose&#34;&gt;How Different Users Should Choose
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;User Type&lt;/th&gt;
          &lt;th&gt;Recommended Option&lt;/th&gt;
          &lt;th&gt;Expected Cost&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Pure terminal users&lt;/td&gt;
          &lt;td&gt;Free tier&lt;/td&gt;
          &lt;td&gt;$0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Light AI users&lt;/td&gt;
          &lt;td&gt;Free tier credits&lt;/td&gt;
          &lt;td&gt;$0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Developers with existing AI API keys&lt;/td&gt;
          &lt;td&gt;Build + BYOK&lt;/td&gt;
          &lt;td&gt;$18/month&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Teams needing collaboration&lt;/td&gt;
          &lt;td&gt;Business ($45/person/month)&lt;/td&gt;
          &lt;td&gt;Per-seat pricing&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Enterprises with strict data sovereignty&lt;/td&gt;
          &lt;td&gt;Enterprise (custom)&lt;/td&gt;
          &lt;td&gt;Custom pricing&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The free tier&amp;rsquo;s 60 credits per month is quite tight for any substantive AI-assisted development. This means most users who want Warp&amp;rsquo;s AI features will eventually need to go the paid or BYOK route.&lt;/p&gt;
&lt;h2 id=&#34;warp-vs-closed-source-competitors&#34;&gt;Warp vs. Closed-Source Competitors
&lt;/h2&gt;&lt;p&gt;Warp&amp;rsquo;s open-source strategy sets it apart from closed-source competitors like Cursor and GitHub Copilot.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Dimension&lt;/th&gt;
          &lt;th&gt;Warp&lt;/th&gt;
          &lt;th&gt;Cursor / Copilot&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Client code&lt;/td&gt;
          &lt;td&gt;Open source under AGPL&lt;/td&gt;
          &lt;td&gt;Closed source&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Core revenue&lt;/td&gt;
          &lt;td&gt;Cloud Agent services + AI credits&lt;/td&gt;
          &lt;td&gt;Subscription fees&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Model choice&lt;/td&gt;
          &lt;td&gt;Multiple providers, including open-source models&lt;/td&gt;
          &lt;td&gt;Mostly proprietary/partner models&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Community involvement&lt;/td&gt;
          &lt;td&gt;Agent-first; community sets direction&lt;/td&gt;
          &lt;td&gt;Officially driven&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Self-hosting options&lt;/td&gt;
          &lt;td&gt;Supported in Enterprise&lt;/td&gt;
          &lt;td&gt;Generally not supported&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The strong copyleft nature of the AGPL license means any derivative work based on Warp&amp;rsquo;s code must also be open source. This may make some enterprises hesitate to deeply customize, but it also ensures community contributions flow back into the main project.&lt;/p&gt;
&lt;h2 id=&#34;the-products-future-direction&#34;&gt;The Product&amp;rsquo;s Future Direction
&lt;/h2&gt;&lt;h3 id=&#34;short-term-competing-on-iteration-speed&#34;&gt;Short Term: Competing on Iteration Speed
&lt;/h3&gt;&lt;p&gt;If the Agent-first collaboration model works, Warp&amp;rsquo;s feature iteration speed could significantly outpace closed-source competitors that depend on in-house engineers. Community contributors propose directions, Agents do the implementation, and the core team handles quality control. In theory, this pipeline can process a large number of feature requests in parallel.&lt;/p&gt;
&lt;h3 id=&#34;medium-term-contesting-the-open-source-ade-niche&#34;&gt;Medium Term: Contesting the Open-Source ADE Niche
&lt;/h3&gt;&lt;p&gt;Warp explicitly positions itself as a pioneer of the &amp;ldquo;open-source Agentic Development Environment.&amp;rdquo; This niche is currently empty, but competition will intensify quickly. Whether Warp can build enough community scale and contribution quality will determine whether it can hold this position.&lt;/p&gt;
&lt;h3 id=&#34;long-term-cloud-services-as-the-profit-core&#34;&gt;Long Term: Cloud Services as the Profit Core
&lt;/h3&gt;&lt;p&gt;Open-sourcing the client won&amp;rsquo;t shake Warp&amp;rsquo;s business model. AI compute, cloud Agent orchestration, and enterprise-grade management (SSO, data retention controls, self-hosted Agents) are the real revenue core. This resembles GitLab&amp;rsquo;s &amp;ldquo;open-source core + paid features&amp;rdquo; path. Warp&amp;rsquo;s Enterprise plan even supports Bring Your Own LLM and self-hosted cloud Agents, targeting large organizations with strict data sovereignty requirements.&lt;/p&gt;
&lt;h2 id=&#34;potential-risks-and-uncertainties&#34;&gt;Potential Risks and Uncertainties
&lt;/h2&gt;&lt;p&gt;The Agent-first collaboration model is experimental, and its effectiveness remains to be proven. Whether community contribution quality can be effectively amplified through Agents, and whether the core team&amp;rsquo;s review bottleneck will reappear in a new form, are open questions.&lt;/p&gt;
&lt;p&gt;Additionally, the free tier&amp;rsquo;s low credit allowance may push many users toward paid plans. Warp needs to balance free-user growth against paid conversion, avoiding the free tier becoming a &amp;ldquo;trial trap&amp;rdquo; that harms the user experience.&lt;/p&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;Warp&amp;rsquo;s open sourcing is not the traditional &amp;ldquo;giving back to the community&amp;rdquo;; it is a business model experiment built on Agent capabilities. It uses an AGPL open-source client to build trust and transparency, and the Oz platform and cloud Agent services to build its commercial moat.&lt;/p&gt;
&lt;p&gt;For users, pure terminal features are unaffected, and the cost of AI capabilities depends on usage intensity. For the industry, this marks a potential new phase of open-source collaboration where &amp;ldquo;humans set the direction, Agents do the execution.&amp;rdquo; Whether this model endures depends on Agent quality, community activity, and Warp&amp;rsquo;s ability to balance free and paid.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.warp.dev/blog/warp-is-now-open-source&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Warp Is Now Open-Source&lt;/a&gt;, Warp official blog, 2026-04-28&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.warp.dev/pricing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Warp Pricing&lt;/a&gt;, Warp official pricing page&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude Cowork vs. Code Mode: The Key Differences</title>
        <link>https://torchtree.com/en/post/claude-cowork-vs-code/</link>
        <pubDate>Wed, 29 Apr 2026 02:54:21 +0800</pubDate>
        
        <guid>https://torchtree.com/en/post/claude-cowork-vs-code/</guid>
        <description>&lt;p&gt;In early 2026, Anthropic introduced three parallel work modes to the Claude desktop client: &lt;strong&gt;Chat&lt;/strong&gt;, &lt;strong&gt;Cowork&lt;/strong&gt;, and &lt;strong&gt;Code&lt;/strong&gt;. Chat continues the traditional conversational interaction, while Cowork and Code represent two different directions of Agentic capability expansion. Both share the same Claude model engine, yet differ fundamentally in interaction interface, toolchain, and optimization targets.&lt;/p&gt;
&lt;p&gt;This article focuses on comparing Cowork and Code, systematically covering core positioning, capability boundaries, and real-world use cases.&lt;/p&gt;
&lt;h2 id=&#34;1-core-positioning-the-same-engine-two-different-kits&#34;&gt;1. Core positioning: the same engine, two different kits
&lt;/h2&gt;&lt;p&gt;Cowork and Code aren&amp;rsquo;t two independent products — they&amp;rsquo;re two packaging forms of the same intelligence engine aimed at different user groups.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Dimension&lt;/th&gt;
          &lt;th&gt;Cowork&lt;/th&gt;
          &lt;th&gt;Code&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Design goal&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;General office automation for non-developers&lt;/td&gt;
          &lt;td&gt;Code engineering tool for developers&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Interface form&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;GUI tab inside the Claude Desktop app&lt;/td&gt;
          &lt;td&gt;Terminal CLI / IDE plugin / Desktop Code tab&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Underlying capabilities&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Based on &lt;!-- raw HTML omitted --&gt;Computer Use&lt;!-- raw HTML omitted --&gt; (screenshots + mouse/keyboard control)&lt;/td&gt;
          &lt;td&gt;A full development toolchain based on &lt;!-- raw HTML omitted --&gt;MCP + Shell + Git&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;File access&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Explicitly authorized folders, sandboxed access&lt;/td&gt;
          &lt;td&gt;Full project-level filesystem access&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Code execution&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Executes after showing a plan; visualization-oriented&lt;/td&gt;
          &lt;td&gt;Runs shell commands, tests, and builds directly&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Git integration&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;None&lt;/td&gt;
          &lt;td&gt;Full lifecycle (branches, commits, PRs)&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The relationship can be summarized as: &lt;strong&gt;same engine, different equipment&lt;/strong&gt;. The model-level reasoning capabilities are identical (both use Opus or Sonnet); the differences lie in the tool set the model is allowed to call and how humans interact with it.&lt;/p&gt;
&lt;h2 id=&#34;2-cowork-the-desktop-automation-colleague-for-non-technical-users&#34;&gt;2. Cowork: the &amp;ldquo;desktop automation colleague&amp;rdquo; for non-technical users
&lt;/h2&gt;&lt;p&gt;Cowork launched in January 2026. Anthropic positions it as &amp;ldquo;Claude Code for the rest of your work&amp;rdquo; — extending the Agentic capabilities developers already enjoy to non-technical scenarios.&lt;/p&gt;
&lt;h3 id=&#34;core-capabilities&#34;&gt;Core capabilities
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Local file read/write&lt;/strong&gt;: after the user authorizes specific folders, Cowork can directly read, create, and modify files without manual uploads and downloads&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross-app desktop automation&lt;/strong&gt;: built on Computer Use, it identifies UI elements via screenshots and controls mouse and keyboard, operating any desktop program — Excel, PowerPoint, browsers, and more&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Browser automation&lt;/strong&gt;: reads Gmail and backend web data, using the user&amp;rsquo;s already-logged-in sessions to complete web-level tasks&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subagent orchestration&lt;/strong&gt;: breaks complex tasks into parallel workflows, automatically merging results from multiple subtasks&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scheduled tasks&lt;/strong&gt;: supports the &lt;code&gt;/schedule&lt;/code&gt; command to set up daily or weekly recurring automation flows&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Professional document generation&lt;/strong&gt;: directly outputs office formats such as PPTX, XLSX (including formulas), and DOCX&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;typical-use-cases&#34;&gt;Typical use cases
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;File organization&lt;/strong&gt;: &amp;ldquo;Sort the 200 screenshots on my desktop by date and generate an index table&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data extraction&lt;/strong&gt;: &amp;ldquo;Read 50 PDF invoices and extract supplier names, dates, and amounts into Excel&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scheduled reports&lt;/strong&gt;: &amp;ldquo;Every Monday at 9 AM, automatically summarize Salesforce sales data and generate a weekly report&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Presentations&lt;/strong&gt;: &amp;ldquo;Generate a formatted PowerPoint deck based on the research materials&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cowork&amp;rsquo;s design philosophy is &lt;strong&gt;lowering the barrier to entry&lt;/strong&gt;: the user describes the goal in natural language, and the system executes autonomously after presenting an execution plan, with real-time progress visible in the GUI.&lt;/p&gt;
&lt;h2 id=&#34;3-code-the-developers-terminal-level-engineering-assistant&#34;&gt;3. Code: the developer&amp;rsquo;s &amp;ldquo;terminal-level engineering assistant&amp;rdquo;
&lt;/h2&gt;&lt;p&gt;Code mode (and the earlier-released Claude Code CLI) targets software development, offering deep access to codebases and development toolchains.&lt;/p&gt;
&lt;h3 id=&#34;core-capabilities-1&#34;&gt;Core capabilities
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Codebase-level understanding&lt;/strong&gt;: automatically maps project structure, dependency relationships, and cross-file references to build a complete code context&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-file refactoring&lt;/strong&gt;: modifies code across files in a single session, updates import statements, adjusts test cases, and fixes build errors&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terminal command execution&lt;/strong&gt;: runs shell scripts, test suites, build pipelines, and deployment commands directly&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full Git lifecycle&lt;/strong&gt;: a complete loop from reading issues and writing code to running tests and submitting PRs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP tool connections&lt;/strong&gt;: connects to external systems like GitHub, Slack, Jira, and databases via the Model Context Protocol&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Background agents and &lt;code&gt;/loop&lt;/code&gt;&lt;/strong&gt;: supports long-running tasks such as reviewing PRs every 5 minutes or continuously monitoring deployment status (up to a week)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plan mode&lt;/strong&gt;: read-only exploration of the codebase without modifying any files, suitable for the understanding and analysis phase&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;typical-use-cases-1&#34;&gt;Typical use cases
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Feature development&lt;/strong&gt;: &amp;ldquo;Add JWT authentication to the Express app, create middleware and routes, and write tests&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code refactoring&lt;/strong&gt;: &amp;ldquo;Refactor the service module across 8 files, run the tests, and submit a PR&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bug hunting&lt;/strong&gt;: &amp;ldquo;Track down the frontend rendering issue, open the browser debugger, and analyze the UI with screenshots&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Continuous monitoring&lt;/strong&gt;: &amp;ldquo;Set up a background agent to continuously monitor new PRs in the repo and automatically perform code reviews&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Code&amp;rsquo;s design philosophy is &lt;strong&gt;precise control&lt;/strong&gt;: developers interact with the model via terminal or IDE, can review every intermediate output, and make fine-grained corrections when necessary.&lt;/p&gt;
&lt;h2 id=&#34;4-underlying-technical-differences&#34;&gt;4. Underlying technical differences
&lt;/h2&gt;&lt;h3 id=&#34;computer-use-vs-mcp--shell&#34;&gt;Computer Use vs. MCP + Shell
&lt;/h3&gt;&lt;p&gt;Cowork&amp;rsquo;s core technology stack is &lt;strong&gt;Computer Use&lt;/strong&gt; — Claude captures screen images, identifies UI elements, and then simulates mouse clicks and keyboard input to complete tasks. The advantage is &lt;strong&gt;generality&lt;/strong&gt;: in theory, it can operate any application with a graphical interface. The cost is &lt;strong&gt;lower efficiency&lt;/strong&gt; — every step requires screenshots, analysis, and simulated input, with limited tolerance for UI changes.&lt;/p&gt;
&lt;p&gt;Code&amp;rsquo;s core technology stack is &lt;strong&gt;MCP (Model Context Protocol) + Shell commands&lt;/strong&gt;. MCP gives the model a structured tool-calling interface (reading files, executing commands, querying databases), while Shell grants direct access to system-level tools. The advantage is &lt;strong&gt;precision and efficiency&lt;/strong&gt;: the model can manipulate the filesystem directly, run compilers, and invoke test frameworks without the indirect simulation of a GUI layer.&lt;/p&gt;
&lt;h3 id=&#34;memory-mechanisms&#34;&gt;Memory mechanisms
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cowork&lt;/strong&gt;: persistent memory based on Projects, retaining task history and connector configurations across sessions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code&lt;/strong&gt;: project-level instructions based on &lt;code&gt;CLAUDE.md&lt;/code&gt; files plus automatic memory; finer-grained memory, deeply tied to codebase structure&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;5-choosing-between-them&#34;&gt;5. Choosing between them
&lt;/h2&gt;&lt;p&gt;The following decision table helps you quickly determine which mode to use:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Task characteristics&lt;/th&gt;
          &lt;th&gt;Recommended mode&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Involves codebases, version control, testing, and builds&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Code&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Requires operating multiple office apps, organizing files, generating documents&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Cowork&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Repetitive office tasks that need scheduled execution&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Cowork&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Needs deep code understanding and cross-file refactoring&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Code&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Quick Q&amp;amp;A, brainstorming, mobile interaction&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Chat&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;common-misconceptions&#34;&gt;Common misconceptions
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cowork is not a GUI version of Code&lt;/strong&gt;: the two have completely different interfaces and optimization directions; Cowork lacks Git support, terminal access, and IDE integration&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Writing code in Cowork is inefficient&lt;/strong&gt;: without codebase-level context and build toolchains, cross-file refactoring is limited&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuring Code for non-developers is a poor fit&lt;/strong&gt;: the terminal interface and development workflow impose unnecessary learning costs on operations, sales, HR, and similar roles&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;6-summary&#34;&gt;6. Summary
&lt;/h2&gt;&lt;p&gt;Cowork and Code represent Anthropic&amp;rsquo;s two productization paths for Agentic AI: Cowork centers on &lt;strong&gt;generality and ease of use&lt;/strong&gt;, targeting daily office automation for knowledge workers; Code centers on &lt;strong&gt;precision and control&lt;/strong&gt;, targeting engineering needs of software developers. The two aren&amp;rsquo;t in competition — they&amp;rsquo;re complementary. The same user may need both in different scenarios.&lt;/p&gt;
&lt;p&gt;From a broader perspective, the three-layer structure of Chat, Cowork, and Code also reflects an evolution trend in AI products: from &lt;strong&gt;passive response&lt;/strong&gt; (Chat) to &lt;strong&gt;proactive execution&lt;/strong&gt; (Cowork/Code), from &lt;strong&gt;single conversation&lt;/strong&gt; to &lt;strong&gt;tool integration&lt;/strong&gt; and then to &lt;strong&gt;system-level automation&lt;/strong&gt;. For users, understanding each mode&amp;rsquo;s boundaries and strengths is a prerequisite for using the Claude ecosystem effectively.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;References
&lt;/h2&gt;&lt;p&gt;This article synthesizes information from the following public sources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.nocode.mba/articles/claude-desktop-chat-vs-cowork-vs-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Chat vs Cowork vs Code 2026: Which to Use? - No Code MBA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.bswen.com/blog/2026-03-22-claude-code-vs-cowork-difference/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code vs Cowork: What&amp;rsquo;s the Difference and Which Should You Use? - BSWEN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://amitkoth.com/claude-chat-vs-cowork-vs-code/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Chat vs Cowork vs Code: which mode should you actually use? - Amit Kothari&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.mltut.com/when-to-use-claude-cowork-vs-claude-code/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;When to Use Claude Cowork vs Claude Code: My Experience - ML TUT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.howdoiuseai.com/blog/2026-04-17-claude-chat-vs-cowork-vs-code-which-mode-should-yo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Chat vs Cowork vs Code — which mode should you actually use? - How Do I Use AI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Web-Based Presentations: Several Open-Source Options More Flexible Than Traditional Slides</title>
        <link>https://torchtree.com/en/post/web-ppt-tools/</link>
        <pubDate>Tue, 28 Apr 2026 02:03:53 +0800</pubDate>
        
        <guid>https://torchtree.com/en/post/web-ppt-tools/</guid>
        <description>&lt;p&gt;Using the web for presentations was once a niche choice among technical practitioners. But over the past two years, more and more non-technical users have been trying it — in academic presentations, product launches, corporate training, and similar scenarios, web-based slides are moving from the fringe to the mainstream. The driving force behind this isn&amp;rsquo;t complicated: web technologies are naturally cross-platform, version-control friendly, and offer interactivity that traditional PPT cannot easily achieve.&lt;/p&gt;
&lt;p&gt;This article reviews several web presentation tools worth attention, split into two layers — core frameworks and AI generation — with directly accessible project links.&lt;/p&gt;
&lt;h2 id=&#34;1-the-core-framework-layer&#34;&gt;1. The Core Framework Layer
&lt;/h2&gt;&lt;p&gt;The infrastructure of web presentations is built on a set of open-source frameworks. They liberate slides from proprietary formats and rebuild them on open web technologies.&lt;/p&gt;
&lt;h3 id=&#34;revealjs-the-de-facto-standard-for-html-presentations&#34;&gt;reveal.js: The &amp;ldquo;De Facto Standard&amp;rdquo; for HTML Presentations
&lt;/h3&gt;&lt;p&gt;reveal.js is currently the most mature HTML presentation framework, developed by Hakim El Hattab. Its core positioning: anything that can be done on a web page can be used in a presentation.&lt;/p&gt;
&lt;p&gt;The framework supports vertically nested slides, speaker view (with timer and next-slide preview), Auto-Animate, LaTeX formula rendering, and more. Slide transitions include fade, slide, convex, concave, zoom, and other modes. For those unfamiliar with code, the same author also provides a companion no-code editor, &lt;a class=&#34;link&#34; href=&#34;https://slides.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;slides.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;reveal.js suits technical presentations with high requirements for interactive effects — for example, embedding live code execution, iframe web content, or complex CSS animations.&lt;/p&gt;
&lt;p&gt;Project link: &lt;a class=&#34;link&#34; href=&#34;https://github.com/hakimel/reveal.js&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github.com/hakimel/reveal.js&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;slidev-the-developers-markdown-choice&#34;&gt;Slidev: The Developer&amp;rsquo;s Markdown Choice
&lt;/h3&gt;&lt;p&gt;Slidev is designed specifically for developers. Its tech stack is built on Vite + Vue 3 + UnoCSS, using Markdown as the content source format. Its biggest advantage is unifying the &amp;ldquo;writing code&amp;rdquo; and &amp;ldquo;making slides&amp;rdquo; workflows in the same environment.&lt;/p&gt;
&lt;p&gt;Slidev&amp;rsquo;s standout features include Shiki-powered code highlighting, built-in live code demos, Mermaid diagram support, KaTeX math formulas, presenter pen annotations, and a built-in recording tool. For deployment, running &lt;code&gt;slidev build&lt;/code&gt; outputs a static site that can be hosted on any platform.&lt;/p&gt;
&lt;p&gt;For developers who already manage documents with Git, Slidev&amp;rsquo;s Markdown source files are naturally version-controlled — an advantage traditional PPT can&amp;rsquo;t match.&lt;/p&gt;
&lt;p&gt;Project link: &lt;a class=&#34;link&#34; href=&#34;https://github.com/slidevjs/slidev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github.com/slidevjs/slidev&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;marp-the-lightest-markdown-option&#34;&gt;Marp: The Lightest Markdown Option
&lt;/h3&gt;&lt;p&gt;Marp stands for Markdown Presentation Ecosystem and offers an out-of-the-box experience as a VS Code extension. After installing the extension, create a new Markdown file, add the &lt;code&gt;marp: true&lt;/code&gt; front-matter config, and you&amp;rsquo;re ready to make slides.&lt;/p&gt;
&lt;p&gt;Marp has the lowest learning curve of the three, and supports exporting to PDF, PPTX, and HTML. It suits quick academic reports, work briefings, and other scenarios that don&amp;rsquo;t demand high design complexity.&lt;/p&gt;
&lt;p&gt;Project link: &lt;a class=&#34;link&#34; href=&#34;https://github.com/marp-team/marp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github.com/marp-team/marp&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;spectacle-a-presentation-option-for-the-react-ecosystem&#34;&gt;Spectacle: A Presentation Option for the React Ecosystem
&lt;/h3&gt;&lt;p&gt;Spectacle is a React component-based presentation framework maintained by Nearform (formerly FormidableLabs), with slides written in JSX. It integrates seamlessly with the React ecosystem and supports live coding. For teams already deeply invested in the React stack, Spectacle enables component reuse — for example, embedding elements from your UI component library directly into a deck.&lt;/p&gt;
&lt;p&gt;Project link: &lt;a class=&#34;link&#34; href=&#34;https://github.com/FormidableLabs/spectacle&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github.com/FormidableLabs/spectacle&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;2-the-ai-generation-layer&#34;&gt;2. The AI Generation Layer
&lt;/h2&gt;&lt;p&gt;Frameworks solve the &amp;ldquo;how to present&amp;rdquo; problem; AI tools are starting to solve &amp;ldquo;how to generate content.&amp;rdquo; Here are the open-source options worth watching.&lt;/p&gt;
&lt;h3 id=&#34;presenton-the-most-feature-complete-ai-presentation-generator&#34;&gt;Presenton: The Most Feature-Complete AI Presentation Generator
&lt;/h3&gt;&lt;p&gt;Presenton has 4.8k stars on GitHub and is open sourced under the Apache 2.0 license. It positions itself as an open-source alternative to Gamma, Beautiful.ai, and Decktopus.&lt;/p&gt;
&lt;p&gt;The project&amp;rsquo;s core features include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;BYOK model support&lt;/strong&gt;: Use APIs from OpenAI, Gemini, or Anthropic, or connect local models via Ollama&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Template inheritance&lt;/strong&gt;: Upload existing PPTX files to use as design templates&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fully local operation&lt;/strong&gt;: Offers both an Electron desktop app and Docker self-hosting; all processing can be done locally&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built-in MCP Server&lt;/strong&gt;: Supports the Model Context Protocol for integration with other AI toolchains&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Deployment is very simple — a single Docker command starts the service. For data-privacy-sensitive scenarios, such as internal corporate reporting or presentations involving trade secrets, Presenton&amp;rsquo;s local operation capability is an important plus.&lt;/p&gt;
&lt;p&gt;Project link: &lt;a class=&#34;link&#34; href=&#34;https://github.com/presenton/presenton&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github.com/presenton/presenton&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;pptagent-an-academic-grade-generation-option&#34;&gt;PPTAgent: An Academic-Grade Generation Option
&lt;/h3&gt;&lt;p&gt;PPTAgent is a research project published at EMNLP 2025, developed by the Institute of Computing Technology, Chinese Academy of Sciences (ICIP-CAS). Its distinguishing feature is a systematic quality evaluation mechanism. The project uses a two-step generation pipeline and includes the PPTEval scoring system, which quantitatively evaluates generated results across three dimensions: design, flow, and content quality.&lt;/p&gt;
&lt;p&gt;PPTAgent also supports Docker deployment in seconds. It suits research or enterprise environments that need quantifiable evaluation of generation quality — for example, when you need to prove to clients that AI-generated content meets a specific quality bar.&lt;/p&gt;
&lt;p&gt;Project link: &lt;a class=&#34;link&#34; href=&#34;https://github.com/icip-cas/PPTAgent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github.com/icip-cas/PPTAgent&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;3-the-toolchain-layer-format-conversion&#34;&gt;3. The Toolchain Layer: Format Conversion
&lt;/h2&gt;&lt;p&gt;Dedicated conversion tools bridge web presentations and traditional workflows.&lt;/p&gt;
&lt;h3 id=&#34;decktape-high-quality-pdf-export-for-html-presentations&#34;&gt;DeckTape: High-Quality PDF Export for HTML Presentations
&lt;/h3&gt;&lt;p&gt;DeckTape is built on Puppeteer and the Chrome rendering engine, and can export 13+ HTML presentation frameworks — including reveal.js, Slidev, impress.js, and remark — to high-quality PDF. Its usage is simple:&lt;/p&gt;
&lt;p&gt;The tool also supports selective export (e.g., only pages 1, 3, and 5-10), multi-resolution screenshot capture, and Docker containerized operation. For offline distribution or print backup scenarios, DeckTape is an indispensable part of the web presentation workflow.&lt;/p&gt;
&lt;p&gt;Project link: &lt;a class=&#34;link&#34; href=&#34;https://github.com/astefanutti/decktape&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;github.com/astefanutti/decktape&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;4-selection-advice&#34;&gt;4. Selection Advice
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Need / Scenario&lt;/th&gt;
          &lt;th&gt;Recommended Option&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Already have Markdown content; want a web presentation quickly&lt;/td&gt;
          &lt;td&gt;Slidev or Marp&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Need AI assistance to generate a complete deck from scratch&lt;/td&gt;
          &lt;td&gt;Presenton (self-hosted)&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Want complex interactive effects and embedded web apps&lt;/td&gt;
          &lt;td&gt;reveal.js&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;React stack; need componentized reuse&lt;/td&gt;
          &lt;td&gt;Spectacle&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Need PDF backups or offline distribution&lt;/td&gt;
          &lt;td&gt;Any framework + DeckTape&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Data-sensitive; must run locally&lt;/td&gt;
          &lt;td&gt;Presenton + local Ollama models&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;5-a-workflow-worth-watching&#34;&gt;5. A Workflow Worth Watching
&lt;/h2&gt;&lt;p&gt;These tools are currently forming a clear pipeline:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Markdown/text → AI-generated content → web presentation framework rendering → DeckTape PDF export&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This means users can generate an outline with AI, refine it in Markdown with Slidev or Marp, build it into an interactive web presentation, and export a PDF with DeckTape as a fallback. This &amp;ldquo;web-first, PDF as backup&amp;rdquo; pattern is the technical foundation behind the claim that &amp;ldquo;web presentations are better.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Web presentations have objective advantages in interactivity, version control, and cross-platform consistency. But they&amp;rsquo;re not a silver bullet: traditional PPT still holds ground in business compatibility, review/annotation features, and acceptance among non-technical users — real constraints web solutions must face. Which tool you choose ultimately depends on your specific use case and audience.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Guide to Buying China&#39;s Mainstream AI Coding Plans: A Hands-on Speed and Price Comparison of 9 Platforms</title>
        <link>https://torchtree.com/en/post/guonei-ai-coding-plan-xuan-gou-zhi-nan/</link>
        <pubDate>Thu, 16 Apr 2026 09:46:38 +0800</pubDate>
        
        <guid>https://torchtree.com/en/post/guonei-ai-coding-plan-xuan-gou-zhi-nan/</guid>
        <description>&lt;p&gt;Since the second half of 2025, Chinese LLM vendors have been rolling out Coding Plan subscriptions aimed at developers, replacing the traditional per-token billing with a fixed monthly fee and significantly lowering the barrier to AI-assisted programming. However, the platforms differ widely in pricing, quotas, response speed, and model support—and some even have hidden clauses like different metering units and strict limits, leaving many developers struggling to choose.&lt;/p&gt;
&lt;p&gt;This article combines a hands-on Xiaohongshu test note, an in-depth cross-review from Cnblogs (博客园), and each platform&amp;rsquo;s official documentation to sort through 9 Chinese Coding Plans from the two core dimensions of &lt;strong&gt;price&lt;/strong&gt; and &lt;strong&gt;speed&lt;/strong&gt;, hoping to inform your purchasing decision.&lt;/p&gt;
&lt;h2 id=&#34;1-coding-plan-billing-models-and-pitfalls-to-avoid&#34;&gt;1. Coding Plan billing models and pitfalls to avoid
&lt;/h2&gt;&lt;p&gt;Before comparing specific plans, it&amp;rsquo;s necessary to clarify the &lt;strong&gt;different metering units&lt;/strong&gt; these vendors use, as this is the easiest place to trip up:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;API request count&lt;/strong&gt;: Alibaba Cloud Bailian (百炼), Volcengine Ark (火山方舟), and Infinity (无问芯穹) use this. One user prompt can trigger 5–30 model calls in the backend, and each call counts as 1 API request (per Tencent Cloud&amp;rsquo;s official docs).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompt count&lt;/strong&gt;: Zhipu GLM and MiniMax use this. 1 Prompt is roughly equivalent to 1,200–1,600 API requests.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Token metering&lt;/strong&gt;: Kimi switched to this mode on January 28 of this year, billing by input/output tokens, and cache hit rate directly affects actual usable quota.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Because the metering units differ, comparing raw numbers is meaningless. For example, Bailian Lite&amp;rsquo;s &amp;ldquo;1,200 API requests every 5 hours&amp;rdquo; and Zhipu Lite&amp;rsquo;s &amp;ldquo;80 Prompts every 5 hours&amp;rdquo; may amount to similar real-world usage intensity.&lt;/p&gt;
&lt;h2 id=&#34;2-price-and-quota-comparison&#34;&gt;2. Price and quota comparison
&lt;/h2&gt;&lt;h3 id=&#34;21-the-big-four-platforms&#34;&gt;2.1 The big four platforms
&lt;/h3&gt;&lt;p&gt;According to the screenshots in the Xiaohongshu note and the Cnblogs compilation, the pricing strategies of Alibaba Cloud Bailian, Volcengine Ark, Tencent Cloud, and JD JoyCoder are highly convergent:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Platform&lt;/th&gt;
          &lt;th&gt;Lite Plan&lt;/th&gt;
          &lt;th&gt;Pro Plan&lt;/th&gt;
          &lt;th&gt;Core quota (Lite)&lt;/th&gt;
          &lt;th&gt;Supported models&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Alibaba Cloud Bailian&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;¥40 (first month ¥7.9)&lt;/td&gt;
          &lt;td&gt;¥200&lt;/td&gt;
          &lt;td&gt;1,200/5h, 9,000/week, 18,000/month&lt;/td&gt;
          &lt;td&gt;Qwen3.5-Plus, Qwen3-Coder-Next, GLM-4.7, Kimi-K2.5&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Volcengine Ark&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;¥40 (first month ¥8.91)&lt;/td&gt;
          &lt;td&gt;¥200&lt;/td&gt;
          &lt;td&gt;Same as Bailian&lt;/td&gt;
          &lt;td&gt;Doubao-Seed-Code, DeepSeek-V3.2, GLM-4.7, Kimi-K2.5&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Tencent Cloud&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;¥40 (first month ¥7.9)&lt;/td&gt;
          &lt;td&gt;¥200&lt;/td&gt;
          &lt;td&gt;Same as Bailian&lt;/td&gt;
          &lt;td&gt;Hunyuan series, MiniMax-M2.5, Kimi-K2.5, GLM-5&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;JD JoyCoder&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;¥40&lt;/td&gt;
          &lt;td&gt;¥200&lt;/td&gt;
          &lt;td&gt;Same as Bailian&lt;/td&gt;
          &lt;td&gt;DeepSeek-V3.2, Kimi-K2.5, MiniMax-M2.7, GLM-5&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;22-emerging-ai-vendors&#34;&gt;2.2 Emerging AI vendors
&lt;/h3&gt;&lt;p&gt;Compared to the big four, emerging vendors&amp;rsquo; pricing is more scattered:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Platform&lt;/th&gt;
          &lt;th&gt;Entry price&lt;/th&gt;
          &lt;th&gt;Core quota&lt;/th&gt;
          &lt;th&gt;Billing&lt;/th&gt;
          &lt;th&gt;Highlights&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Infinity&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;¥19.9/month&lt;/td&gt;
          &lt;td&gt;1,000/5h, 6,000/week&lt;/td&gt;
          &lt;td&gt;API requests&lt;/td&gt;
          &lt;td&gt;Lowest monthly fee, multi-model aggregation&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;MiniMax&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;¥29 (first month ¥9.9)&lt;/td&gt;
          &lt;td&gt;40 Prompt/5h, no weekly cap&lt;/td&gt;
          &lt;td&gt;Prompt&lt;/td&gt;
          &lt;td&gt;Lowest entry price, no weekly limit&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Kimi&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;¥49 (Andante)&lt;/td&gt;
          &lt;td&gt;Per token (3x for a limited time)&lt;/td&gt;
          &lt;td&gt;Token&lt;/td&gt;
          &lt;td&gt;Native multimodal, 256K long context&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Zhipu GLM&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;¥49 (after the 2-month price increase)&lt;/td&gt;
          &lt;td&gt;80 Prompt/5h, 400/week&lt;/td&gt;
          &lt;td&gt;Prompt&lt;/td&gt;
          &lt;td&gt;Pure in-house models, 20+ tool integrations&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;StepFun&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;Not tested&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
          &lt;td&gt;No hands-on data yet&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;From a value-for-money standpoint:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Budget-conscious users&lt;/strong&gt;: Infinity (¥19.9) and MiniMax (¥29) have lower entry barriers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New users trying the waters&lt;/strong&gt;: Alibaba Cloud Bailian&amp;rsquo;s first-month ¥7.9 is currently the lowest known trial price.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;3-hands-on-speed-tests-ttft-and-tps&#34;&gt;3. Hands-on speed tests: TTFT and TPS
&lt;/h2&gt;&lt;p&gt;The following speed data comes from a Xiaohongshu hands-on test note, tested under the conditions of &amp;ldquo;daytime @ 10K tokens,&amp;rdquo; measuring &lt;strong&gt;time to first token (TTFT)&lt;/strong&gt; and &lt;strong&gt;TPS generation speed&lt;/strong&gt; respectively. This data directly reflects the &amp;ldquo;responsiveness&amp;rdquo; of coding and code-generation efficiency.&lt;/p&gt;
&lt;h3 id=&#34;31-time-to-first-token-ttft&#34;&gt;3.1 Time to first token (TTFT)
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Platform&lt;/th&gt;
          &lt;th&gt;Fastest model&lt;/th&gt;
          &lt;th&gt;TTFT&lt;/th&gt;
          &lt;th&gt;Slowest model&lt;/th&gt;
          &lt;th&gt;TTFT&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Zhipu GLM&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;glm-5-turbo&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;1.43s&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;glm-5&lt;/td&gt;
          &lt;td&gt;7.82s&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Tencent&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;hunyuan-2.0-thinking&lt;/td&gt;
          &lt;td&gt;2.51s&lt;/td&gt;
          &lt;td&gt;kimi-k2.5&lt;/td&gt;
          &lt;td&gt;12.38s&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;MiniMax&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;m2.1&lt;/td&gt;
          &lt;td&gt;2.44s&lt;/td&gt;
          &lt;td&gt;m2.5&lt;/td&gt;
          &lt;td&gt;5.54s&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Alibaba&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;glm-4.7&lt;/td&gt;
          &lt;td&gt;2.76s&lt;/td&gt;
          &lt;td&gt;qwen3-coder-next&lt;/td&gt;
          &lt;td&gt;11.58s&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Infinity&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;deepseek-v3.2-thinking&lt;/td&gt;
          &lt;td&gt;3.26s&lt;/td&gt;
          &lt;td&gt;kimi-k2.5&lt;/td&gt;
          &lt;td&gt;7.76s&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Volcengine&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;doubao-seed-2.0-pro&lt;/td&gt;
          &lt;td&gt;3.29s&lt;/td&gt;
          &lt;td&gt;glm-4.7&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;21.52s&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;JD&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;deepseek-v3.2&lt;/td&gt;
          &lt;td&gt;~5s&lt;/td&gt;
          &lt;td&gt;kimi-k2.5&lt;/td&gt;
          &lt;td&gt;~19s&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Kimi&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;kimi-for-coding&lt;/td&gt;
          &lt;td&gt;5.71s&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Observations&lt;/strong&gt;: Zhipu GLM&amp;rsquo;s &lt;code&gt;glm-5-turbo&lt;/code&gt; is the fastest of all at 1.43s TTFT; the time-to-first-token for some models on Volcengine and JD is notably higher, hitting 21.52s and 19s respectively, possibly related to platform scheduling policies or model deployment methods.&lt;/p&gt;
&lt;h3 id=&#34;32-tps-generation-speed&#34;&gt;3.2 TPS generation speed
&lt;/h3&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Platform&lt;/th&gt;
          &lt;th&gt;Fastest model&lt;/th&gt;
          &lt;th&gt;TPS&lt;/th&gt;
          &lt;th&gt;Slowest model&lt;/th&gt;
          &lt;th&gt;TPS&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Zhipu GLM&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;glm-4.5-air&lt;/td&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;103&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;glm-5&lt;/td&gt;
          &lt;td&gt;23&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Volcengine&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;doubao-seed-2.0-pro&lt;/td&gt;
          &lt;td&gt;76&lt;/td&gt;
          &lt;td&gt;kimi-k2.5&lt;/td&gt;
          &lt;td&gt;23&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Tencent&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;hunyuan-2.0-thinking&lt;/td&gt;
          &lt;td&gt;76&lt;/td&gt;
          &lt;td&gt;glm-5&lt;/td&gt;
          &lt;td&gt;30&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Alibaba&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;qwen3-coder-next&lt;/td&gt;
          &lt;td&gt;67&lt;/td&gt;
          &lt;td&gt;glm-4.7&lt;/td&gt;
          &lt;td&gt;41&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Infinity&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;minimax-m2.5&lt;/td&gt;
          &lt;td&gt;51&lt;/td&gt;
          &lt;td&gt;kimi-k2.5&lt;/td&gt;
          &lt;td&gt;25&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;MiniMax&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;m2.5&lt;/td&gt;
          &lt;td&gt;48&lt;/td&gt;
          &lt;td&gt;m2.1&lt;/td&gt;
          &lt;td&gt;45&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;JD&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;deepseek-v3.2&lt;/td&gt;
          &lt;td&gt;35&lt;/td&gt;
          &lt;td&gt;glm-5&lt;/td&gt;
          &lt;td&gt;25&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;!-- raw HTML omitted --&gt;Kimi&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
          &lt;td&gt;kimi-for-coding&lt;/td&gt;
          &lt;td&gt;35&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
          &lt;td&gt;—&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Observations&lt;/strong&gt;: Zhipu&amp;rsquo;s &lt;code&gt;glm-4.5-air&lt;/code&gt; reaches 103 TPS, significantly ahead of other platforms; Volcengine and Tencent&amp;rsquo;s Hunyuan/Doubao models also hit 76 TPS. JD and Kimi are relatively slow at around 35 TPS.&lt;/p&gt;
&lt;p&gt;In addition, MiniMax officially claims its M2.5 model can reach 100+ TPS, which differs from the 48 TPS measured on the MiniMax platform in the Xiaohongshu note, indicating that &lt;strong&gt;the same model may perform differently when deployed on different platforms.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;4-platform-reviews-and-buying-recommendations&#34;&gt;4. Platform reviews and buying recommendations
&lt;/h2&gt;&lt;p&gt;Combining price, quota, and speed data, here are recommendations for different usage scenarios:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;New users / those wanting to try it cheap&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First choice: &lt;strong&gt;Alibaba Cloud Bailian Lite&lt;/strong&gt; (first month ¥7.9). Rich model selection, backed by Alibaba Cloud infrastructure, with solid stability. Downsides: only the primary account is supported, and the config documentation isn&amp;rsquo;t beginner-friendly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Budget-conscious, light use (monthly budget ≤ ¥30)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First choice: &lt;strong&gt;Infinity Lite&lt;/strong&gt; (¥19.9/month). Quota close to Bailian&amp;rsquo;s at half the price, ideal for light developers who code 2–3 times a week.&lt;/li&gt;
&lt;li&gt;Second choice: &lt;strong&gt;MiniMax Starter&lt;/strong&gt; (¥29/month). No weekly cap; quota only refreshes every 5 hours, good for continuous use.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Daily development, moderate use (monthly budget ¥40–50)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First choice: &lt;strong&gt;Alibaba Cloud Bailian Lite&lt;/strong&gt; (regular ¥40) or &lt;strong&gt;Volcengine Ark Lite&lt;/strong&gt; (regular ¥40). Both have transparent quotas and many model choices.&lt;/li&gt;
&lt;li&gt;Not recommended: Zhipu GLM (¥49 after the price increase, worse value) and Kimi (¥49, few tool integrations and quota heavily affected by cache).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Heavy development, full-stack, or multi-model switching&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First choice: &lt;strong&gt;Alibaba Cloud Bailian Pro&lt;/strong&gt; or &lt;strong&gt;Volcengine Ark Pro&lt;/strong&gt; (¥200/month). Around 5x the quota of Lite, with free switching between multiple models. Volcengine also supports Auto smart scheduling.&lt;/li&gt;
&lt;li&gt;If you prefer GLM&amp;rsquo;s in-house models, consider Zhipu GLM, but note its weekly limit and peak-time quota multipliers (3x during peak, 2x off-peak).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Pursuing ultimate response speed&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If time-to-first-token and generation speed are your top priorities, &lt;strong&gt;Zhipu GLM&lt;/strong&gt;&amp;rsquo;s &lt;code&gt;glm-5-turbo&lt;/code&gt; (1.43s TTFT) and &lt;code&gt;glm-4.5-air&lt;/code&gt; (103 TPS) perform best.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;5-summary&#34;&gt;5. Summary
&lt;/h2&gt;&lt;p&gt;The Chinese Coding Plan market is iterating rapidly, with price wars and model wars running in parallel. When choosing, don&amp;rsquo;t fixate on surface prices; instead, focus on three core questions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;What is the metering unit?&lt;/strong&gt; API requests, Prompt counts, or tokens? Different units can&amp;rsquo;t be compared directly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How does the quota mechanism work?&lt;/strong&gt; Refreshed every 5 hours, capped weekly, or capped monthly? This determines whether you can sustain high-intensity use.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Is the speed responsive?&lt;/strong&gt; TTFT and TPS directly affect the coding experience, and the same model can perform wildly differently across platforms.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A final reminder: plan policies change frequently across vendors (e.g., Zhipu&amp;rsquo;s price increase, Kimi switching to token billing, Alibaba Cloud discontinuing its Lite tier), so be sure to confirm the latest details on each platform&amp;rsquo;s official website before subscribing.&lt;/p&gt;
&lt;h2 id=&#34;data-sources&#34;&gt;Data sources
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;http://xhslink.com/o/2MUdNLQ7Uj7&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Xiaohongshu - Speed cross-test and price comparison of 9 China Coding Plans&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.cnblogs.com/wzxNote/p/19648084&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cnblogs - Full comparison of 2026 mainstream China AI Coding Plans | Developer pitfall guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://cloud.tencent.com/document/product/1823/130092&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tencent Cloud - Coding Plan overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://zhuanlan.zhihu.com/p/2011769182103021566&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Zhihu - Alibaba Cloud Bailian Coding Plan first purchase as low as ¥7.9&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.volcengine.com/article/37524&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Volcengine - Ark Coding Plan: AI coding service and pricing details&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.bigmodel.cn/glm-coding&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Zhipu AI - GLM Coding Plan official site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://zhuanlan.zhihu.com/p/2010413265843422319&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Zhihu - Hands-on MiniMax M2.5: open-source disruptor, value-for-money king?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Processing Scanned PDFs: From Local OCR to Vision Language Models</title>
        <link>https://torchtree.com/en/post/pdf-ocr-vision-model-workflow/</link>
        <pubDate>Sat, 11 Apr 2026 12:54:28 +0800</pubDate>
        
        <guid>https://torchtree.com/en/post/pdf-ocr-vision-model-workflow/</guid>
        <description>&lt;p&gt;A common pitfall when handling scanned PDFs is to run a full pass with traditional OCR tools first, then spend a lot of time cleaning up the erroneous results. This article draws on a large scanned-PDF extraction task executed by Hermes Agent and abstracts a more general processing logic: how to complete the recognition and structured organization of scanned PDFs efficiently and with high quality at minimal sunk cost.&lt;/p&gt;
&lt;h2 id=&#34;1-first-decide-is-it-an-image-book-or-a-document&#34;&gt;1. First, Decide: Is It an &amp;ldquo;Image Book&amp;rdquo; or a &amp;ldquo;Document&amp;rdquo;?
&lt;/h2&gt;&lt;p&gt;The first step after getting a PDF is not to extract directly, but to detect its type. Many scanned PDFs look like a &lt;code&gt;.pdf&lt;/code&gt; on the surface yet contain no extractable text layer inside.&lt;/p&gt;
&lt;p&gt;This step usually only takes a few seconds, but it can prevent hours of wasted subsequent effort.&lt;/p&gt;
&lt;h2 id=&#34;2-the-role-of-local-ocr-should-be-minimized&#34;&gt;2. The Role of Local OCR Should Be Minimized
&lt;/h2&gt;&lt;p&gt;Once you confirm it is an image-based PDF, many people&amp;rsquo;s second reaction is to fire up a traditional OCR tool such as Tesseract and run full recognition and cleanup. In real tasks, however, the marginal benefit of this approach is often low:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Local OCR handles printed English reasonably well, but it is error-prone on Chinese definitions in mixed Chinese-English layouts;&lt;/li&gt;
&lt;li&gt;Cleanup scripts can only deal with layout noise (headers, footers, table lines), not semantic-level recognition errors;&lt;/li&gt;
&lt;li&gt;When the end goal is structured, directly usable, high-quality text, investment in cleanup code can easily become a sunk cost.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;3-the-decisive-step-bringing-in-a-vision-language-model-for-direct-recognition&#34;&gt;3. The Decisive Step: Bringing in a Vision Language Model for Direct Recognition
&lt;/h2&gt;&lt;p&gt;In this task, once Hermes Agent confirmed that the local OCR output for Chinese was unacceptable, it &lt;strong&gt;wrote its own Python script and directly called an external Vision-Language model&lt;/strong&gt; (&lt;code&gt;Qwen/Qwen2-VL-72B-Instruct&lt;/code&gt;) to re-recognize the content. This was the turning point that ultimately determined output quality.&lt;/p&gt;
&lt;h3 id=&#34;31-lessons-from-model-selection&#34;&gt;3.1 Lessons from Model Selection
&lt;/h3&gt;&lt;p&gt;The initial test used a dedicated model named OCR, but that model had weak instruction-following capabilities—it repeatedly output the review tables and marking symbols from the page and could not extract only the target content as required. This shows that:&lt;/p&gt;
&lt;h3 id=&#34;32-secure-practices-for-api-calls&#34;&gt;3.2 Secure Practices for API Calls
&lt;/h3&gt;&lt;p&gt;The external API key was not hardcoded into the script; it was injected via environment variables configured in &lt;code&gt;~/.hermes/.env&lt;/code&gt; (such as &lt;code&gt;SILICONFLOW_API_KEY&lt;/code&gt;), read by the script through &lt;code&gt;os.environ&lt;/code&gt;. This practice meets security requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The key is not exposed in any code file or log;&lt;/li&gt;
&lt;li&gt;Credentials are stored in a controlled config location in the user&amp;rsquo;s home directory;&lt;/li&gt;
&lt;li&gt;It is only valid for the lifespan of the current session.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For an AI agent, retrieving environment variables through &lt;code&gt;~/.hermes/.env&lt;/code&gt; is the standard and secure way to call external services.&lt;/p&gt;
&lt;h2 id=&#34;4-page-stitching-strategy-merge-consecutive-pages-and-recognize-them-together&#34;&gt;4. Page Stitching Strategy: Merge Consecutive Pages and Recognize Them Together
&lt;/h2&gt;&lt;p&gt;Scanned books, textbooks, and exam papers often contain content that flows continuously across pages. If each page is uploaded separately to the model, it can lead to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fragmented context, causing the model to misjudge the relationship between content on two pages;&lt;/li&gt;
&lt;li&gt;Cross-page items being truncated or missed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The strategy used in this task was:&lt;/p&gt;
&lt;p&gt;Specific steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;pdf2image&lt;/code&gt; to convert consecutive pages into images;&lt;/li&gt;
&lt;li&gt;Use PIL to stitch multiple images vertically into one long image;&lt;/li&gt;
&lt;li&gt;Compress as JPEG, encode as base64, and upload via the API.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The advantage of this approach is that it preserves the continuity and spatial relationships of reading, reduces context switching during API calls, and also saves the overhead of multiple requests.&lt;/p&gt;
&lt;h2 id=&#34;5-prompt-design-hard-constraints-for-structured-output&#34;&gt;5. Prompt Design: Hard Constraints for Structured Output
&lt;/h2&gt;&lt;p&gt;To get the Vision model to output clean text that can be written directly to a file, the prompt needs to include the following hard constraints:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Explicit exclusions&lt;/strong&gt;: List all non-target content on the page (tables, circle markings, page numbers, usage instructions, etc.), and require the model to actively ignore them;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Format template&lt;/strong&gt;: Specify the output format for each entry, for example &lt;code&gt;number. English word phonetic part-of-speech Chinese definition&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fixed header&lt;/strong&gt;: Force the output to begin with a unified heading structure to make downstream automation easier;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reference text aid&lt;/strong&gt;: Append the initial local OCR results to the end of the prompt, letting the model do &amp;ldquo;comparative correction&amp;rdquo; based on the image rather than guessing blind from scratch. This significantly improves output accuracy and completeness.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;6-core-methodology-verify-first-then-run-in-full&#34;&gt;6. Core Methodology: Verify First, Then Run in Full
&lt;/h2&gt;&lt;p&gt;Whatever toolchain you use, the most important step when handling scanned PDFs is:&lt;/p&gt;
&lt;h3 id=&#34;61-what-to-verify-with-minimal-effort&#34;&gt;6.1 What to Verify with Minimal Effort
&lt;/h3&gt;&lt;p&gt;Before launching a full batch process, the agent should first verify the following elements at minimal cost:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Page-number mapping pattern&lt;/strong&gt;: How many days/chapters? How many pages per chapter? Where are the boundaries?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model recognition ability&lt;/strong&gt;: At the current DPI, can the model accurately recognize fonts, phonetic symbols, and mixed Chinese-English content?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompt stability&lt;/strong&gt;: Is the output format consistent across 1–3 consecutive samples? Is any content missing?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cost estimate&lt;/strong&gt;: Is the token consumption per page/chapter within budget? Can the DPI be downgraded?&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;62-dynamic-resolution-scaling&#34;&gt;6.2 Dynamic Resolution Scaling
&lt;/h3&gt;&lt;p&gt;Image token cost is roughly proportional to resolution. You can first test the Vision model at a low DPI (such as 100 DPI); if the recognition rate is already sufficient, there is no need to use 150 DPI or 250 DPI. For printed materials with large fonts, 100 DPI is often enough, reducing image encoding cost by about 50% or more.&lt;/p&gt;
&lt;h3 id=&#34;63-possibility-of-structured-output&#34;&gt;6.3 Possibility of Structured Output
&lt;/h3&gt;&lt;p&gt;If the API supports JSON mode, you can ask the model directly to return a structured array (such as &lt;code&gt;{&amp;quot;word&amp;quot;, &amp;quot;phonetic&amp;quot;, &amp;quot;pos&amp;quot;, &amp;quot;definition&amp;quot;}&lt;/code&gt;), entirely eliminating post-processing cleanup code and improving automation and maintainability.&lt;/p&gt;
&lt;h2 id=&#34;7-delivery-structure-keep-raw-data-and-refined-results-separate&#34;&gt;7. Delivery Structure: Keep Raw Data and Refined Results Separate
&lt;/h2&gt;&lt;p&gt;For tasks that may produce multiple versions of results, a dual-directory isolation design is recommended:&lt;/p&gt;
&lt;p&gt;The benefits of this design:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Raw data is not lost;&lt;/li&gt;
&lt;li&gt;The refined result of any unit can be diffed against the original output;&lt;/li&gt;
&lt;li&gt;Rollback is always possible because nothing is overwritten.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;8-pre-flight-checklist-for-ai-agents&#34;&gt;8. Pre-Flight Checklist for AI Agents
&lt;/h2&gt;&lt;p&gt;If you are an AI agent and receive a task to &amp;ldquo;extract structured content from a scanned PDF&amp;rdquo;, follow this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;PDF type detection&lt;/strong&gt;: sample with &lt;code&gt;pdfinfo&lt;/code&gt; + &lt;code&gt;pdftotext&lt;/code&gt; to confirm whether it is an image-based PDF;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Structure-pattern detection&lt;/strong&gt;: use the lowest-cost method (low-resolution OCR or a small number of Vision API calls) to confirm the &amp;ldquo;page → chapter/unit&amp;rdquo; mapping pattern;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solution validation&lt;/strong&gt;: process the first 1–3 units with the Vision model to verify output format, completeness, and accuracy;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API key security&lt;/strong&gt;: read it from &lt;code&gt;~/.hermes/.env&lt;/code&gt; environment variables, never hardcode it;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full concurrent execution&lt;/strong&gt;: run the batch only after confirming everything works, saving results to a separate directory without overwriting the raw data.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;9-conclusion&#34;&gt;9. Conclusion
&lt;/h2&gt;&lt;p&gt;For content extraction from scanned PDFs, &lt;strong&gt;the order in which you choose your toolchain matters more than the capability of any single tool&lt;/strong&gt;. Traditional OCR is well-suited as a low-cost structural-probe sentinel, but if the goal is directly usable, high-quality structured text, a Vision-Language model is the ultimate guarantee of quality.&lt;/p&gt;
&lt;p&gt;The most expensive mistake is usually not picking the wrong model, but &lt;strong&gt;launching a full batch process without minimal verification first&lt;/strong&gt;. Agents should establish a rhythm of &amp;ldquo;validate a sample → adjust parameters → run the full batch&amp;rdquo; early on, to control sunk costs and ensure the reliability of the final deliverable.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>How We Turned Ghost Publishing into an OpenClaw Skill</title>
        <link>https://torchtree.com/en/post/openclaw-ghost-publisher/</link>
        <pubDate>Thu, 02 Apr 2026 11:56:02 +0800</pubDate>
        
        <guid>https://torchtree.com/en/post/openclaw-ghost-publisher/</guid>
        <description>&lt;p&gt;This post documents a concrete implementation: getting OpenClaw to reliably create, update, and publish Ghost posts. The goal was simple: the process must be reusable, the configuration must stay contained, and when something goes wrong we need to know exactly which step failed.&lt;/p&gt;
&lt;h2 id=&#34;goal&#34;&gt;Goal
&lt;/h2&gt;&lt;p&gt;We wanted OpenClaw to do three things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Understand Ghost&amp;rsquo;s publishing pipeline&lt;/li&gt;
&lt;li&gt;Turn the publishing flow into a reusable skill&lt;/li&gt;
&lt;li&gt;Handle authentication and publishing through local environment variables, without writing secrets into code&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;which-docs-we-consulted-first&#34;&gt;Which Docs We Consulted First
&lt;/h2&gt;&lt;p&gt;We didn&amp;rsquo;t start with sample articles but with the parts of the Ghost official docs covering APIs and authentication, focusing on two questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which APIs are read-only&lt;/li&gt;
&lt;li&gt;Which APIs can create and update content&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After reading, the conclusion was clear: the Content API is fine for reading, but actual writes go through the Admin API.&lt;/p&gt;
&lt;h2 id=&#34;what-this-skill-does&#34;&gt;What This Skill Does
&lt;/h2&gt;&lt;p&gt;We organized the flow into &lt;code&gt;ghost-publisher&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Its responsibility is narrow and well-defined:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Accept publishing fields such as title, body, slug, and tags&lt;/li&gt;
&lt;li&gt;Handle Markdown or HTML input&lt;/li&gt;
&lt;li&gt;Normalize the content structure before publishing&lt;/li&gt;
&lt;li&gt;Call the Ghost Admin API to create or update posts&lt;/li&gt;
&lt;li&gt;Return verifiable results, such as post id, slug, URL, and status&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The benefit is that OpenClaw no longer needs to reinterpret Ghost&amp;rsquo;s rules every time — it can just route through this skill directly.&lt;/p&gt;
&lt;h2 id=&#34;which-environment-variables-you-need&#34;&gt;Which Environment Variables You Need
&lt;/h2&gt;&lt;p&gt;Conceptually only two pieces of configuration are required:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Ghost site address&lt;/li&gt;
&lt;li&gt;The Ghost Admin API key&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both values should live in a &lt;code&gt;.env&lt;/code&gt; file, read by OpenClaw at startup. Don&amp;rsquo;t write them into posts, logs, or prompts.&lt;/p&gt;
&lt;h2 id=&#34;why-it-failed-the-first-time&#34;&gt;Why It Failed the First Time
&lt;/h2&gt;&lt;p&gt;Initially we grabbed the common Content API key from a Ghost Integration. It can read content but cannot write it.&lt;/p&gt;
&lt;p&gt;That was the root cause of the first failure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Content API key is read-only&lt;/li&gt;
&lt;li&gt;To write posts, you must use an Admin API key&lt;/li&gt;
&lt;li&gt;An Admin API key is only available after creating a Custom Integration in the Ghost admin panel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Until the permission model was straightened out, the flow seemed correct but could never actually publish.&lt;/p&gt;
&lt;h2 id=&#34;why-you-need-to-restart-openclaw-after-editing-env&#34;&gt;Why You Need to Restart OpenClaw After Editing &lt;code&gt;.env&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;Because OpenClaw reads environment variables at startup.&lt;/p&gt;
&lt;p&gt;So after editing &lt;code&gt;.env&lt;/code&gt;, you must restart OpenClaw for the new host and key to take effect. Editing the file alone won&amp;rsquo;t do — the process still holds the old configuration.&lt;/p&gt;
&lt;h2 id=&#34;the-formatting-issues-we-actually-ran-into&#34;&gt;The Formatting Issues We Actually Ran Into
&lt;/h2&gt;&lt;p&gt;We also confirmed a few publishing constraints this time, which we can carry forward into future articles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Don&amp;rsquo;t repeat the top-level title in the body, since Ghost already has a &lt;code&gt;title&lt;/code&gt; field&lt;/li&gt;
&lt;li&gt;Normalize the Markdown before publishing to avoid messy blank lines, indentation, and repeated list markers&lt;/li&gt;
&lt;li&gt;Keep slugs clear and consistent with the topic; English is usually more intuitive than forcing Chinese characters&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If these issues are not addressed, pages look messy and the content feels thrown together.&lt;/p&gt;
&lt;h2 id=&#34;how-to-safely-let-ai-handle-an-environment-containing-secrets&#34;&gt;How to Safely Let AI Handle an Environment Containing Secrets
&lt;/h2&gt;&lt;p&gt;If AI is involved in this kind of work, the boundaries need to be spelled out first:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use only the designated environment variables&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t output the full &lt;code&gt;.env&lt;/code&gt; contents&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t echo the value of any key&lt;/li&gt;
&lt;li&gt;Only return non-sensitive verification results&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In other words, the AI can tell you &amp;ldquo;whether the config is active,&amp;rdquo; &amp;ldquo;whether a post is published,&amp;rdquo; and &amp;ldquo;what slug was returned,&amp;rdquo; but it must not leak any secret values.&lt;/p&gt;
&lt;h2 id=&#34;result&#34;&gt;Result
&lt;/h2&gt;&lt;p&gt;Once this flow was working, OpenClaw can now reliably:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read the local configuration&lt;/li&gt;
&lt;li&gt;Process posts through &lt;code&gt;ghost-publisher&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Write to Ghost via the Admin API&lt;/li&gt;
&lt;li&gt;Return verifiable publishing results&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If we later need to extend this to updating posts, batch publishing, or more complex content formats, the foundation is already in place — we can simply reuse this pipeline.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
