<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Remote Agent Workflow on Armstrong Yan</title><link>https://yanqian.github.io/zh/series/remote-agent-workflow/</link><description>Recent content in Remote Agent Workflow on Armstrong Yan</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Mon, 20 Jul 2026 23:52:52 +0800</lastBuildDate><atom:link href="https://yanqian.github.io/zh/series/remote-agent-workflow/index.xml" rel="self" type="application/rss+xml"/><item><title>远程智能体工作流（五）：Codex Mobile 之后，什么依然重要</title><link>https://yanqian.github.io/zh/posts/publish/what-still-matters-after-codex-mobile/</link><pubDate>Mon, 20 Jul 2026 23:52:52 +0800</pubDate><guid>https://yanqian.github.io/zh/posts/publish/what-still-matters-after-codex-mobile/</guid><description>&lt;p&gt;这是“远程智能体工作流”系列的第五篇。&lt;/p&gt;
&lt;p&gt;最初搭建这套远程 AI 开发环境时，我想解决一个很实际的问题：&lt;/p&gt;
&lt;p&gt;离开 Mac 以后，怎样让本地 Codex 继续干活？&lt;/p&gt;
&lt;p&gt;于是有了第一层方案：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;手机 -&amp;gt; Tailscale -&amp;gt; SSH -&amp;gt; Mac -&amp;gt; tmux -&amp;gt; Codex
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;后来我发现，手机上的 SSH 不适合充当日常操作入口，于是又搭了一个 Telegram 控制面：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;手机 -&amp;gt; Telegram Bot -&amp;gt; 本地 Codex 运行时 -&amp;gt; 指定代码仓库
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;再往后，我意识到背后还有一条更根本的原则：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;放在代码仓库里，不要放在聊天里。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;代码仓库必须保存持久的项目记忆。&lt;/p&gt;
&lt;p&gt;更准确地说，它应该承载项目记忆、运行约定和反馈机制。&lt;/p&gt;
&lt;p&gt;走到这一步，一个很自然的问题随之而来：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;既然官方已经推出 Codex Mobile，自定义远程智能体工作流还有必要吗？
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;我的答案是：有。但理由变了。&lt;/p&gt;
&lt;p&gt;它的价值不再只是让人远程接入 Codex。&lt;/p&gt;
&lt;p&gt;更重要的是让 Codex 按照项目自己的方式工作。&lt;/p&gt;
&lt;h2 id="codex-mobile-解决了什么"&gt;
 Codex Mobile 解决了什么
 &lt;a class="heading-link" href="#codex-mobile-%e8%a7%a3%e5%86%b3%e4%ba%86%e4%bb%80%e4%b9%88"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;2026 年 5 月 14 日，OpenAI 宣布在 ChatGPT 移动应用中以预览形式推出 Codex。&lt;/p&gt;
&lt;p&gt;通过官方移动端，用户可以随时在手机上接入 Codex。按照 OpenAI 的介绍，你可以跨线程处理任务、检查输出、批准命令、切换模型、发起新任务，还能实时收到终端输出、差异内容、测试结果、截图和审批请求等更新。&lt;/p&gt;</description></item><item><title>远程智能体工作流（四）：在仓库中，而非聊天中</title><link>https://yanqian.github.io/zh/posts/publish/in-the-repository-not-in-the-chat/</link><pubDate>Mon, 20 Jul 2026 23:33:28 +0800</pubDate><guid>https://yanqian.github.io/zh/posts/publish/in-the-repository-not-in-the-chat/</guid><description>&lt;p&gt;这是“远程智能体工作流”系列的第四篇。&lt;/p&gt;
&lt;p&gt;我的远程 AI 开发环境，第一层解决连接问题。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;手机 -&amp;gt; Tailscale -&amp;gt; SSH -&amp;gt; Mac -&amp;gt; tmux -&amp;gt; Codex
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;有了这条链路，我可以用手机访问 Mac，也能让耗时较长的本地任务持续运行。&lt;/p&gt;
&lt;p&gt;第二层解决控制问题。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;手机 -&amp;gt; Telegram Bot -&amp;gt; 本地 Codex 运行时 -&amp;gt; 选定的仓库
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样一来，手机就成了控制入口，而不再是一台屏幕很小的终端。&lt;/p&gt;
&lt;p&gt;但这两层都没有触及更深的问题。&lt;/p&gt;
&lt;p&gt;远程访问让我能连上机器。&lt;/p&gt;
&lt;p&gt;远程控制让我能启动任务、查看进展。&lt;/p&gt;
&lt;p&gt;而长时间运行的智能体开发还需要记忆。&lt;/p&gt;
&lt;p&gt;智能体可能在我离开后继续运行，也可能从中断处恢复、换一个会话接着做，或者由我通过手机操控。既然如此，整个项目就不能只存在于一条聊天线程里。&lt;/p&gt;
&lt;p&gt;于是，我给自己定了一条规则：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;聊天用来传达指令。&lt;br&gt;
仓库用来保存记忆。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;更准确地说，仓库不只是存放代码的地方。它还承载着智能体的记忆和操作约定，并为智能体提供持续的反馈机制。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://yanqian.github.io/posts/publish/in-the-repository-not-in-the-chat/assets/in-the-repository-not-in-the-chat/01-repository-agent-harness.svg" alt="作为 Agent Harness 的仓库"&gt;&lt;/p&gt;
&lt;h2 id="为什么聊天记录不能充当项目状态"&gt;
 为什么聊天记录不能充当项目状态
 &lt;a class="heading-link" href="#%e4%b8%ba%e4%bb%80%e4%b9%88%e8%81%8a%e5%a4%a9%e8%ae%b0%e5%bd%95%e4%b8%8d%e8%83%bd%e5%85%85%e5%bd%93%e9%a1%b9%e7%9b%ae%e7%8a%b6%e6%80%81"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;聊天很适合表达意图。&lt;/p&gt;
&lt;p&gt;我可以在聊天里说明目标、提出问题、纠正方向，或者做出产品决策。&lt;/p&gt;
&lt;p&gt;但要长期保存项目状态，聊天并不可靠。&lt;/p&gt;
&lt;p&gt;聊天内容难以比较差异，也不便验证；它依附于某一条线程，后续会话中的智能体很容易误解，甚至根本看不到。想法、日志、猜测、决定和已经过时的背景信息，往往全都混在同一条信息流里。&lt;/p&gt;
&lt;p&gt;如果只是一次性的小改动，这样做未尝不可。&lt;/p&gt;
&lt;p&gt;可一旦智能体需要长时间工作，问题就会暴露出来。&lt;/p&gt;
&lt;p&gt;项目必须能稳定回答以下问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这个系统应该做什么？&lt;/li&gt;
&lt;li&gt;哪些内容已经实现？&lt;/li&gt;
&lt;li&gt;以前在哪里失败过？&lt;/li&gt;
&lt;li&gt;什么证据能证明这些行为现在仍然正常？&lt;/li&gt;
&lt;li&gt;下一个智能体在修改文件之前，应该先读什么？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些答案应该和代码放在一起。&lt;/p&gt;
&lt;h2 id="让仓库同时承担记忆与-agent-harness"&gt;
 让仓库同时承担记忆与 Agent Harness
 &lt;a class="heading-link" href="#%e8%ae%a9%e4%bb%93%e5%ba%93%e5%90%8c%e6%97%b6%e6%89%bf%e6%8b%85%e8%ae%b0%e5%bf%86%e4%b8%8e-agent-harness"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;在我的项目里，智能体需要长期保留的状态通常分散在以下文件和记录中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SPEC.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;feature_list.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;progress.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;test_plan.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;init.sh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;orchestrator.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;git 历史&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;文件具体叫什么并不重要，重要的是分清职责。&lt;/p&gt;</description></item><item><title>远程智能体工作流（三）：把 Telegram 变成本地 Codex 的控制面</title><link>https://yanqian.github.io/zh/posts/publish/turning-telegram-into-a-local-codex-control-plane/</link><pubDate>Mon, 20 Jul 2026 23:20:13 +0800</pubDate><guid>https://yanqian.github.io/zh/posts/publish/turning-telegram-into-a-local-codex-control-plane/</guid><description>&lt;p&gt;这是「远程智能体工作流」系列的第三篇。&lt;/p&gt;
&lt;p&gt;前两篇文章里，我先搭出了一条实用的远程终端链路：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;手机 -&amp;gt; Tailscale -&amp;gt; SSH -&amp;gt; Mac -&amp;gt; tmux -&amp;gt; Codex
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;有了这条链路，我就能可靠地从手机连接自己的 Mac。&lt;/p&gt;
&lt;p&gt;但新的局限很快就暴露出来：手机并不好用来操作终端。&lt;/p&gt;
&lt;p&gt;移动端 SSH 适合救急，但我不想靠它处理需要长时间运行的 AI 开发任务。我不想在狭窄的手机屏幕上敲 shell 命令、连接 tmux 会话、翻找长篇日志，再一点点拼凑出当前状态。&lt;/p&gt;
&lt;p&gt;我真正想要的，是下面这样的链路：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;手机 -&amp;gt; 任务式接口 -&amp;gt; 本地智能体运行时 -&amp;gt; 仓库状态
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;于是，我做了一个小型 Telegram Bot，把它用作本地 Codex 的控制面。&lt;/p&gt;
&lt;p&gt;关键不在于 Telegram 有多特别。&lt;/p&gt;
&lt;p&gt;真正重要的是：手机成为控制界面，而 Mac 仍然负责执行工作。&lt;/p&gt;
&lt;h2 id="为什么选-telegram"&gt;
 为什么选 Telegram
 &lt;a class="heading-link" href="#%e4%b8%ba%e4%bb%80%e4%b9%88%e9%80%89-telegram"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Telegram 很适合用来做这个实验，因为它已经具备：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;移动端通知&lt;/li&gt;
&lt;li&gt;简短的命令消息&lt;/li&gt;
&lt;li&gt;回复串&lt;/li&gt;
&lt;li&gt;内联按钮&lt;/li&gt;
&lt;li&gt;跨设备历史记录&lt;/li&gt;
&lt;li&gt;成熟的 Bot API&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更重要的是，Telegram 支持两种截然不同的部署模式。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://yanqian.github.io/posts/publish/turning-telegram-into-a-local-codex-control-plane/assets/turning-telegram-into-a-local-codex-control-plane/01-webhook-vs-polling.svg" alt="Telegram 的 webhook 与 polling 模式"&gt;&lt;/p&gt;
&lt;p&gt;第一种是 webhook 模式：&lt;/p&gt;</description></item><item><title>远程智能体工作流（二）：从远程 Shell 到智能体控制面</title><link>https://yanqian.github.io/zh/posts/publish/from-remote-shell-to-agent-control-plane/</link><pubDate>Mon, 20 Jul 2026 22:33:24 +0800</pubDate><guid>https://yanqian.github.io/zh/posts/publish/from-remote-shell-to-agent-control-plane/</guid><description>&lt;p&gt;这是“远程智能体工作流”系列的第二篇。&lt;/p&gt;
&lt;p&gt;上一篇文章里，我搭建了一套实用的远程终端工作流：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;手机 -&amp;gt; Tailscale -&amp;gt; SSH -&amp;gt; Mac -&amp;gt; tmux -&amp;gt; Codex
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这套方案解决了第一个问题：离开书桌后，怎样连回自己的 Mac；手机断开后，怎样让本地智能体继续执行耗时较长的任务。&lt;/p&gt;
&lt;p&gt;它很快就派上了用场。&lt;/p&gt;
&lt;p&gt;但在实际使用后，我又发现了第二个问题。&lt;/p&gt;
&lt;p&gt;SSH 解决了连通性，却不会自动带来一套好用的远程开发工作流。&lt;/p&gt;
&lt;p&gt;移动端 SSH 用得越多，它的边界就越清楚：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;手机不该被当成一台微型终端。&lt;br&gt;
手机应该成为本地智能体工作流的控制面。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="第一层解决的是基础设施"&gt;
 第一层解决的是基础设施
 &lt;a class="heading-link" href="#%e7%ac%ac%e4%b8%80%e5%b1%82%e8%a7%a3%e5%86%b3%e7%9a%84%e6%98%af%e5%9f%ba%e7%a1%80%e8%ae%be%e6%96%bd"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;远程终端这套配置仍然不可或缺。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://yanqian.github.io/posts/publish/from-remote-shell-to-agent-control-plane/assets/remote-mac-terminal-for-codex/01-remote-architecture.svg" alt="远程终端架构"&gt;&lt;/p&gt;
&lt;p&gt;我需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 Tailscale 连接手机与 Mac，又不把 SSH 暴露在公网上。&lt;/li&gt;
&lt;li&gt;用 SSH 安全登录。&lt;/li&gt;
&lt;li&gt;用 tmux 保证耗时较长的任务不会因连接断开而终止。&lt;/li&gt;
&lt;li&gt;用 caffeinate 防止 Mac 在智能体工作期间休眠。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样，我就有了一套可靠的基础能力：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;我可以连上机器。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;我可以启动工作。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;我可以断开连接。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;我可以稍后再连回来。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这是很实在的一步。&lt;/p&gt;
&lt;p&gt;但它只回答了基础设施层面的问题：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;我能连到这台机器吗？
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;它没有回答工作流层面的问题：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;我能顺畅地用手机推动耗时较长的 AI 开发工作吗？
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;对我来说，答案是否定的。&lt;/p&gt;
&lt;h2 id="手机并不是一台好终端"&gt;
 手机并不是一台好终端
 &lt;a class="heading-link" href="#%e6%89%8b%e6%9c%ba%e5%b9%b6%e4%b8%8d%e6%98%af%e4%b8%80%e5%8f%b0%e5%a5%bd%e7%bb%88%e7%ab%af"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;移动端 SSH 很适合应急访问。&lt;/p&gt;</description></item><item><title>远程智能体工作流（一）：用手机连接 Mac 运行 Codex</title><link>https://yanqian.github.io/zh/posts/publish/remote-mac-terminal-for-codex/</link><pubDate>Mon, 20 Jul 2026 22:15:53 +0800</pubDate><guid>https://yanqian.github.io/zh/posts/publish/remote-mac-terminal-for-codex/</guid><description>&lt;p&gt;本文是“远程代理工作流”系列的第一篇。&lt;/p&gt;
&lt;p&gt;这篇指南将介绍如何用手机操作 Mac 终端，并让 Codex、自动化脚本、本地开发代理等长时间任务持续运行。&lt;/p&gt;
&lt;p&gt;我们要搭建的不是远程桌面，而是一套可靠的远程终端工作流：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;手机 -&amp;gt; SSH -&amp;gt; Mac -&amp;gt; tmux -&amp;gt; Codex / 代理任务
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;配置完成后，Mac 就会成为一个轻量的远程执行节点。无论身在何处，你都可以用手机接入。&lt;/p&gt;
&lt;h2 id="各个工具分别做什么"&gt;
 各个工具分别做什么
 &lt;a class="heading-link" href="#%e5%90%84%e4%b8%aa%e5%b7%a5%e5%85%b7%e5%88%86%e5%88%ab%e5%81%9a%e4%bb%80%e4%b9%88"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id="ssh"&gt;
 SSH
 &lt;a class="heading-link" href="#ssh"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;SSH 是一种安全的远程登录协议，可以让你从手机进入 Mac 的终端。&lt;/p&gt;
&lt;p&gt;在这套工作流中，SSH 负责：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安全访问 Mac 的命令行。&lt;/li&gt;
&lt;li&gt;使用密码或 SSH 密钥验证身份。&lt;/li&gt;
&lt;li&gt;从手机远程执行命令。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不过，SSH 一旦断开，并不能保证任务继续运行。这正是我们还需要 tmux 的原因。&lt;/p&gt;
&lt;h3 id="tailscale"&gt;
 Tailscale
 &lt;a class="heading-link" href="#tailscale"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="链接到标题"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;链接到标题&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;Tailscale 会在你的设备之间建立私有网络。即使 Mac 和手机接入不同的网络，两台设备也能通过稳定的私有 IP 地址互相访问。&lt;/p&gt;
&lt;p&gt;在这套工作流中，Tailscale 负责：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;让你通过 4G、5G、酒店 Wi-Fi、公司 Wi-Fi 或家庭 Wi-Fi 远程访问 Mac。&lt;/li&gt;
&lt;li&gt;为 Mac 提供稳定的 &lt;code&gt;100.x.x.x&lt;/code&gt; 地址。&lt;/li&gt;
&lt;li&gt;加密设备之间的网络通信。&lt;/li&gt;
&lt;li&gt;避免将 SSH 直接暴露在公网上。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文默认使用官方 Tailscale macOS 客户端。在这种配置下，后台服务、登录状态和菜单栏状态都由该应用管理。&lt;/p&gt;</description></item></channel></rss>