<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>工作流 on KnightLi的博客</title>
        <link>https://knightli.com/tags/%E5%B7%A5%E4%BD%9C%E6%B5%81/</link>
        <description>Recent content in 工作流 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sat, 06 Jun 2026 22:26:00 +0800</lastBuildDate><atom:link href="https://knightli.com/tags/%E5%B7%A5%E4%BD%9C%E6%B5%81/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Personal AI Infrastructure：个人 AI 基础设施应该怎么搭</title>
        <link>https://knightli.com/2026/06/06/personal-ai-infrastructure-guide/</link>
        <pubDate>Sat, 06 Jun 2026 22:26:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/06/06/personal-ai-infrastructure-guide/</guid>
        <description>&lt;p&gt;&lt;code&gt;danielmiessler/Personal_AI_Infrastructure&lt;/code&gt; 是一个围绕个人 AI 基础设施的项目。它的描述很短：Agentic AI Infrastructure for magnifying HUMAN capabilities。重点不是做一个单点工具，而是把 AI、自动化、知识、流程和个人生产力放在同一个系统里考虑。&lt;/p&gt;
&lt;p&gt;这类项目适合想认真打造个人 AI 工作台的人，而不是只偶尔用 ChatGPT 回答问题的人。&lt;/p&gt;
&lt;h2 id=&#34;为什么需要个人-ai-基础设施&#34;&gt;为什么需要个人 AI 基础设施
&lt;/h2&gt;&lt;p&gt;很多人使用 AI 的方式仍然很零散：&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;一个 Agent 改代码；&lt;/li&gt;
&lt;li&gt;一堆 prompt 散落各处。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;问题是，这些工具之间没有形成系统。资料、偏好、任务、自动化和输出结果互不相通，AI 很难真正长期放大你的能力。&lt;/p&gt;
&lt;p&gt;个人 AI 基础设施要解决的，就是把这些碎片连成一套可持续工作流。&lt;/p&gt;
&lt;h2 id=&#34;适合搭哪些模块&#34;&gt;适合搭哪些模块
&lt;/h2&gt;&lt;p&gt;一个实用的个人 AI 基础设施，通常至少包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;知识入口：网页、PDF、笔记、邮件、聊天记录；&lt;/li&gt;
&lt;li&gt;记忆层：长期偏好、项目背景、常用规则；&lt;/li&gt;
&lt;li&gt;Agent 层：写作、研究、编程、整理、自动化；&lt;/li&gt;
&lt;li&gt;工具层：搜索、文件处理、浏览器、终端、API；&lt;/li&gt;
&lt;li&gt;输出层：文章、报告、代码、任务清单、复盘；&lt;/li&gt;
&lt;li&gt;安全层：密钥管理、权限隔离、日志和备份。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个项目更像一个思路集合：提醒你不要只追一个新模型，而要把 AI 嵌进自己的工作系统里。&lt;/p&gt;
&lt;h2 id=&#34;适合谁看&#34;&gt;适合谁看
&lt;/h2&gt;&lt;p&gt;它适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重度 AI 用户；&lt;/li&gt;
&lt;li&gt;做研究、写作、编程、咨询、运营的人；&lt;/li&gt;
&lt;li&gt;想搭个人知识库和 Agent 工作流的人；&lt;/li&gt;
&lt;li&gt;喜欢把重复任务自动化的人；&lt;/li&gt;
&lt;li&gt;想把 AI 从“聊天工具”升级成“个人操作系统”的人。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是偶尔问问题，没必要一上来搭全套。先把一个高频流程自动化，比收藏十个框架更有用。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;Personal AI Infrastructure 的价值在于，它把 AI 使用从“单次对话”拉到“长期系统”层面。真正的效率提升，往往不来自某个神奇 prompt，而是来自输入、记忆、工具、流程和输出的持续打通。&lt;/p&gt;
&lt;p&gt;如果你已经觉得 AI 工具太多、上下文太散、流程难复用，这类项目很值得参考。&lt;/p&gt;
&lt;h2 id=&#34;参考来源&#34;&gt;参考来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/danielmiessler/Personal_AI_Infrastructure&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;danielmiessler/Personal_AI_Infrastructure - GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>subagent 会多花多少 token？多 agent 成本与使用策略</title>
        <link>https://knightli.com/2026/05/31/subagent-multi-agent-token-cost/</link>
        <pubDate>Sun, 31 May 2026 14:17:42 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/31/subagent-multi-agent-token-cost/</guid>
        <description>&lt;p&gt;使用 subagent 或多 agent 工作流，通常都会增加 token 用量。区别不在于“会不会增加”，而在于增加多少、换来的并行效率和稳定性是否值得。&lt;/p&gt;
&lt;p&gt;如果任务很小，直接让主 agent 完成通常更省。只有当任务可以清楚拆分，或者需要独立复查时，subagent 才更容易体现价值。&lt;/p&gt;
&lt;h2 id=&#34;subagent-不是更便宜的并行线程&#34;&gt;subagent 不是更便宜的并行线程
&lt;/h2&gt;&lt;p&gt;很多人第一次看到 subagent，会下意识把它理解成“并行线程”：主 agent 做一部分，subagent 做另一部分，速度变快，所以应该更划算。&lt;/p&gt;
&lt;p&gt;实际不是这样。subagent 本质上也是一个独立的模型调用。它需要读任务说明、理解上下文、读取文件、分析问题，再输出结果。也就是说，它不是主 agent 的免费副本，而是额外启动了一条推理链路。&lt;/p&gt;
&lt;p&gt;所以使用 subagent 的核心判断不是“能不能并行”，而是“并行带来的时间节省、质量提升，是否值得额外 token 成本”。&lt;/p&gt;
&lt;h2 id=&#34;为什么会增加-token&#34;&gt;为什么会增加 token
&lt;/h2&gt;&lt;p&gt;一次 subagent 调用通常会额外消耗这些 token：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主 agent 写给 subagent 的任务说明；&lt;/li&gt;
&lt;li&gt;传递给 subagent 的上下文；&lt;/li&gt;
&lt;li&gt;subagent 自己读取文件和分析问题；&lt;/li&gt;
&lt;li&gt;subagent 生成结果或修改说明；&lt;/li&gt;
&lt;li&gt;主 agent 回收结果后的复查、整合和验证。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果多个 agent 读取同一批大文件，重复消耗会更明显。尤其是代码库分析、长文档翻译、批量内容整理这类任务，如果拆分不好，token 会花在重复理解上下文上。&lt;/p&gt;
&lt;h2 id=&#34;重复读取上下文是最大的-token-浪费&#34;&gt;重复读取上下文是最大的 token 浪费
&lt;/h2&gt;&lt;p&gt;subagent 真正浪费 token 的地方，往往不是“多开了一个 agent”，而是多个 agent 反复读同一批材料。&lt;/p&gt;
&lt;p&gt;比如一个任务要处理 6 篇文章，如果 4 个 agent 都先读完整站点结构、完整技能文档、完整文章列表，再各自处理一点点内容，那么并行会很贵。更好的做法是先由主 agent 确定边界，再让每个 subagent 只读自己负责的文章目录。&lt;/p&gt;
&lt;p&gt;更省 token 的拆法通常是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每个 agent 只负责一个明确目录；&lt;/li&gt;
&lt;li&gt;给 subagent 的上下文越短越好；&lt;/li&gt;
&lt;li&gt;不让多个 agent 重复做同一类探索；&lt;/li&gt;
&lt;li&gt;主 agent 最后统一复查，而不是让每个 agent 都做全量复查；&lt;/li&gt;
&lt;li&gt;能用脚本统一检查的部分，不交给多个 agent 反复检查。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，subagent 的成本控制重点是边界，而不是数量。&lt;/p&gt;
&lt;h2 id=&#34;大概会增加多少&#34;&gt;大概会增加多少
&lt;/h2&gt;&lt;p&gt;下面是一个粗略估算，实际消耗取决于上下文长度、文件大小、任务复杂度和 agent 数量。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;场景&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;token 增加&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;单个 subagent 处理一个小任务&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;约 &lt;code&gt;1.2x - 2x&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2-4 个 agent 并行处理可拆分任务&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;约 &lt;code&gt;2x - 5x&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;多个 agent 各自读取大量文件、做长分析&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;可能 &lt;code&gt;5x+&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;主 agent 和 subagent 重复读同一批大文件&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;浪费最明显&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这不是精确计费公式，只是经验范围。真正的消耗还要看每个 agent 是否需要读完整文件、是否需要长推理、是否会反复等待和补充上下文。&lt;/p&gt;
&lt;h2 id=&#34;如何给-subagent-写更省-token-的任务说明&#34;&gt;如何给 subagent 写更省 token 的任务说明
&lt;/h2&gt;&lt;p&gt;任务说明越宽泛，subagent 越容易自己去探索上下文，token 消耗也越高。更省的写法是把边界写清楚。&lt;/p&gt;
&lt;p&gt;一个好的 subagent 任务说明应该包含：&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;code&gt;date&lt;/code&gt;、&lt;code&gt;slug&lt;/code&gt;、&lt;code&gt;aliases&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;输出时只汇报什么结果；&lt;/li&gt;
&lt;li&gt;不需要做哪些事情，比如不要跑完整构建、不要改无关文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如，处理翻译时，不要只写“把文章翻译成多语言”。更省 token 的写法是：“只处理 &lt;code&gt;content/post/2026/05/240&lt;/code&gt;，读取 &lt;code&gt;index.zh-cn.md&lt;/code&gt;，只创建缺失的 &lt;code&gt;index.en.md&lt;/code&gt;、&lt;code&gt;index.zh-tw.md&lt;/code&gt;、&lt;code&gt;index.ja.md&lt;/code&gt;、&lt;code&gt;index.es.md&lt;/code&gt;，已存在则跳过，保留 &lt;code&gt;date&lt;/code&gt; 和 &lt;code&gt;slug&lt;/code&gt;。”&lt;/p&gt;
&lt;p&gt;这种说明更长一点，但能减少 subagent 自行猜测和重复探索，整体通常更省。&lt;/p&gt;
&lt;h2 id=&#34;按文件目录拆分比按语言步骤拆分更省&#34;&gt;按文件/目录拆分，比按语言/步骤拆分更省
&lt;/h2&gt;&lt;p&gt;如果是批量文章翻译，按“文章目录”拆通常比按“语言”拆更好。&lt;/p&gt;
&lt;p&gt;比如要翻译 6 篇文章，每篇都要生成英文、繁体、日文、西语。更推荐让一个 agent 负责一篇文章目录内的所有语言，而不是让一个 agent 负责所有英文、另一个负责所有日文。&lt;/p&gt;
&lt;p&gt;原因很简单：一篇文章的 front matter、代码块、链接、表格和语义上下文只需要读一次。如果按语言拆，多个 agent 会重复读取同一篇源文，token 会被放大。&lt;/p&gt;
&lt;p&gt;同样的逻辑也适用于代码任务。优先按模块、目录、组件拆分，而不是按“先分析、再实现、再测试”这种步骤拆分。步骤拆分很容易让每个 agent 都重新读一遍上下文。&lt;/p&gt;
&lt;h2 id=&#34;什么情况下值得用&#34;&gt;什么情况下值得用
&lt;/h2&gt;&lt;p&gt;subagent 的价值主要在两点：并行和独立视角。&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;一个 agent 写实现，另一个 agent 做风险复查；&lt;/li&gt;
&lt;li&gt;高风险修改需要第二视角检查。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类任务里，token 会增加，但总耗时可能明显下降，而且每个 agent 只盯一块内容，注意力更集中。&lt;/p&gt;
&lt;h2 id=&#34;什么时候值得用一个-agent-做复查&#34;&gt;什么时候值得用一个 agent 做复查
&lt;/h2&gt;&lt;p&gt;复查型 agent 不一定总值得用。它适合风险高、影响面大、主 agent 容易遗漏细节的任务。&lt;/p&gt;
&lt;p&gt;比较值得加复查 agent 的情况包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;修改涉及登录、支付、权限、数据删除；&lt;/li&gt;
&lt;li&gt;多语言内容会影响分类、URL、站内链接；&lt;/li&gt;
&lt;li&gt;大范围重构后需要独立找回归风险；&lt;/li&gt;
&lt;li&gt;用户明确要求 code review 或风险审查；&lt;/li&gt;
&lt;li&gt;主 agent 已经做了实现，但需要第二视角看边界条件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不值得加复查 agent 的情况也很明确：单文件小改、标题微调、简单 front matter 修正、只跑一个命令。这些任务主 agent 自查就够了。&lt;/p&gt;
&lt;h2 id=&#34;什么情况下不值得用&#34;&gt;什么情况下不值得用
&lt;/h2&gt;&lt;p&gt;不适合使用 subagent 的场景很常见：&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;subagent 必须反复等待主 agent 提供上下文。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类任务用 subagent 往往只是增加开销。主 agent 直接处理更快，也更省 token。&lt;/p&gt;
&lt;h2 id=&#34;我的默认策略省-token-优先风险任务才加复查&#34;&gt;我的默认策略：省 token 优先，风险任务才加复查
&lt;/h2&gt;&lt;p&gt;如果目标是尽量节省 token，可以采用下面这套策略：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小任务：不用 subagent。&lt;/li&gt;
&lt;li&gt;中等任务：不用 subagent。&lt;/li&gt;
&lt;li&gt;大批量任务：默认也不用 subagent，除非用户明确要并行提速。&lt;/li&gt;
&lt;li&gt;高风险任务：可以多用一个 agent 做复查，用 token 换稳定性。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这套策略更偏保守。它牺牲了一部分并行速度，但能减少重复读取上下文和重复推理带来的 token 消耗。&lt;/p&gt;
&lt;p&gt;如果任务很大但不高风险，我也会优先考虑脚本、批量检查和本地结构化处理。只有当拆分非常清楚，或者用户明确希望并行提速时，才更适合引入多个 agent。&lt;/p&gt;
&lt;h2 id=&#34;更均衡的策略&#34;&gt;更均衡的策略
&lt;/h2&gt;&lt;p&gt;如果既想控制成本，又不想完全放弃并行，可以采用折中方案：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;默认主 agent 直接做；&lt;/li&gt;
&lt;li&gt;只有任务能按文件或目录明确拆分时才考虑 subagent；&lt;/li&gt;
&lt;li&gt;subagent 只读取自己负责的文件；&lt;/li&gt;
&lt;li&gt;不让多个 agent 同时读同一批大文件；&lt;/li&gt;
&lt;li&gt;主 agent 最后统一复查关键字段、测试结果和 Git diff；&lt;/li&gt;
&lt;li&gt;高风险任务才增加一个独立复查 agent。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这能避免“为了并行而并行”。subagent 应该服务于明确的效率或质量目标，而不是成为默认动作。&lt;/p&gt;
&lt;h2 id=&#34;小结&#34;&gt;小结
&lt;/h2&gt;&lt;p&gt;subagent 和多 agent 一定会增加 token 用量。单个 subagent 可能只是增加一点，多个 agent 并行时则可能成倍增加。&lt;/p&gt;
&lt;p&gt;是否值得用，取决于任务本身：如果任务能清楚拆分，或者风险高到需要独立复查，额外 token 可能是值得的；如果只是单文件小改、简单问答或常规检查，直接由主 agent 完成更省。&lt;/p&gt;
&lt;p&gt;一句话总结：&lt;strong&gt;小任务省 token，大任务看拆分，高风险才用额外 agent 换稳定性。&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>browser-harness 的 domain skills 机制：让 AI Agent 不再重复踩网页自动化的坑</title>
        <link>https://knightli.com/2026/05/24/browser-harness-domain-skills-summary/</link>
        <pubDate>Sun, 24 May 2026 23:43:35 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/24/browser-harness-domain-skills-summary/</guid>
        <description>&lt;p&gt;&lt;code&gt;browser-use/browser-harness&lt;/code&gt; 最有意思的地方，不只是让 AI Agent 能控制真实 Chrome，而是它把网页操作中的经验变成了可以复用的 &lt;code&gt;domain skills&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这件事很关键。浏览器自动化真正困难的地方，往往不是“能不能点击按钮”，而是每个网站都有自己的细节：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些页面必须登录。&lt;/li&gt;
&lt;li&gt;哪些数据可以直接走 API。&lt;/li&gt;
&lt;li&gt;哪些按钮用普通 DOM 点击无效。&lt;/li&gt;
&lt;li&gt;哪些 iframe、shadow DOM、弹窗会挡住流程。&lt;/li&gt;
&lt;li&gt;哪些选择器稳定，哪些只是临时 class。&lt;/li&gt;
&lt;li&gt;哪些操作涉及账号、支付或不可逆变更，必须让人确认。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这些经验只留在一次任务日志里，Agent 下次还会重新踩坑。&lt;code&gt;domain skills&lt;/code&gt; 的作用，就是把这些经验沉淀下来，让 Agent 不必每次都像第一次打开网站。&lt;/p&gt;
&lt;h2 id=&#34;domain-skills-是什么&#34;&gt;domain skills 是什么
&lt;/h2&gt;&lt;p&gt;可以把 &lt;code&gt;domain skills&lt;/code&gt; 理解成“给 Agent 看的站点操作手册”。&lt;/p&gt;
&lt;p&gt;它不是普通的用户文档，也不是一次性脚本。它更像一组经过实测的站点级知识：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这个站点适不适合用浏览器。&lt;/li&gt;
&lt;li&gt;如果有 API，应该优先用哪个 API。&lt;/li&gt;
&lt;li&gt;如果必须操作网页，应该从哪个 URL 进入。&lt;/li&gt;
&lt;li&gt;哪些 DOM 结构、aria-label、按钮行为经过验证。&lt;/li&gt;
&lt;li&gt;哪些常见写法会失败。&lt;/li&gt;
&lt;li&gt;哪些场景要停止并请求人类介入。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类内容既能被人类审查，也能被 Agent 在任务中读取。它把“临场摸索”变成“可维护经验”。&lt;/p&gt;
&lt;h2 id=&#34;它不是让-agent-盲目点击&#34;&gt;它不是让 Agent 盲目点击
&lt;/h2&gt;&lt;p&gt;一个好的浏览器 Agent，不应该把所有问题都变成打开网页、看截图、点按钮。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 里很重要的一类经验，恰恰是在告诉 Agent：什么时候不要用浏览器。&lt;/p&gt;
&lt;p&gt;比如 ArXiv 这类站点，论文搜索、元数据和摘要可以通过 Atom API 或 HTML meta 标签直接拿到。用 HTTP 请求通常比打开浏览器更快、更稳，也更容易解析。&lt;/p&gt;
&lt;p&gt;GitHub 也是类似思路。仓库、用户、release 数据优先用 REST API；文件内容优先读 &lt;code&gt;raw.githubusercontent.com&lt;/code&gt;；只有 GitHub Trending 这类没有等价 API 的页面，才需要进入浏览器。&lt;/p&gt;
&lt;p&gt;这说明 browser-harness 的思路不是“浏览器万能”，而是把浏览器放在正确位置：当 API、HTTP、静态页面无法解决问题时，再让 Agent 操作真实页面。&lt;/p&gt;
&lt;h2 id=&#34;它记录的是站点级知识&#34;&gt;它记录的是站点级知识
&lt;/h2&gt;&lt;p&gt;传统自动化脚本通常围绕一次任务写，比如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;打开页面 -&amp;gt; 输入关键词 -&amp;gt; 点击按钮 -&amp;gt; 下载文件
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这种脚本可以完成任务，但经验很容易散落在代码里。站点一改版，脚本失效；换一个任务，很多经验也没法复用。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 的粒度更接近站点级知识库。它关心的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Amazon 搜索结果里哪个容器选择器稳定。&lt;/li&gt;
&lt;li&gt;GitHub 哪些数据应该走 REST API。&lt;/li&gt;
&lt;li&gt;LinkedIn 邀请管理页的按钮 aria-label 有什么差异。&lt;/li&gt;
&lt;li&gt;Shopify Admin 里哪些页面是嵌入式 app。&lt;/li&gt;
&lt;li&gt;Shopify Polaris 输入框为什么不能只用普通 JS 设置 value。&lt;/li&gt;
&lt;li&gt;Browser Use Cloud 的浏览器实例如何创建、列出和清理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些经验不是一次任务的步骤，而是以后很多任务都会用到的判断依据。&lt;/p&gt;
&lt;h2 id=&#34;例子amazon-商品搜索&#34;&gt;例子：Amazon 商品搜索
&lt;/h2&gt;&lt;p&gt;Amazon 商品搜索的经验，重点不只是“怎么搜索商品”，而是哪些路径更稳定。&lt;/p&gt;
&lt;p&gt;比较可靠的做法是直接使用搜索 URL，而不是每次都打开首页再模拟输入。搜索结果可以从 &lt;code&gt;[data-component-type=&amp;quot;s-search-result&amp;quot;]&lt;/code&gt; 这样的容器中提取。字段提取也有细节：标题、价格、评分、评论数、是否赞助，都有各自更稳的 DOM 来源。&lt;/p&gt;
&lt;p&gt;这种经验对 Agent 很有价值。没有它时，Agent 可能会从截图里猜按钮、反复尝试选择器；有了它之后，Agent 可以直接进入更稳定的数据提取路径。&lt;/p&gt;
&lt;p&gt;更重要的是，这类 skill 还会记录陷阱。例如某些看似可用的选择器，在赞助结果或交叉推荐区域里会误读。这种坑只有实测过才知道。&lt;/p&gt;
&lt;h2 id=&#34;例子linkedin-邀请管理&#34;&gt;例子：LinkedIn 邀请管理
&lt;/h2&gt;&lt;p&gt;LinkedIn 这类站点更接近真实账号工作流，风险也更高。&lt;/p&gt;
&lt;p&gt;在邀请管理页里，Accept 和 Ignore 按钮的 &lt;code&gt;aria-label&lt;/code&gt; 格式不同，不能简单地从一个推导另一个。有些邀请卡片里的 Accept 控件甚至不是 &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt;，而是 &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt;，普通 CDP 点击不一定能触发接受动作。&lt;/p&gt;
&lt;p&gt;这种细节说明，真实网页自动化不是“定位到元素就结束”。按钮标签、事件绑定、软导航、组件实现方式，都会影响操作是否真的生效。&lt;/p&gt;
&lt;p&gt;对 Agent 来说，这类经验还有一个安全含义：涉及社交账号、邀请、消息、发帖的操作，不应该完全托管。skill 可以记录路径和陷阱，但批量接受邀请、对外发送内容、修改账号资料这类动作，最好保留人工确认。&lt;/p&gt;
&lt;h2 id=&#34;例子shopify-admin&#34;&gt;例子：Shopify Admin
&lt;/h2&gt;&lt;p&gt;Shopify Admin 的经验说明了另一个问题：后台系统往往不是一个页面，而是一堆嵌入式应用和复杂组件的组合。&lt;/p&gt;
&lt;p&gt;很多 Shopify app 会运行在 iframe 里。Polaris React 输入框、Web Components、嵌入式 app 的交互方式也不同。某些输入框不能只用 &lt;code&gt;element.value = ...&lt;/code&gt;，需要使用更接近真实键盘输入的 CDP keystrokes。&lt;/p&gt;
&lt;p&gt;这类 skill 的价值在于，它让 Agent 先判断当前页面属于哪类 UI，再选择合适的操作方式。&lt;/p&gt;
&lt;p&gt;同时，Shopify 的经验也强调“能不用浏览器就不用浏览器”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;只读商品和库存数据，优先用 Storefront API。&lt;/li&gt;
&lt;li&gt;有 Admin API token 时，优先用 Admin API。&lt;/li&gt;
&lt;li&gt;编辑主题代码时，优先用 Shopify CLI。&lt;/li&gt;
&lt;li&gt;只有没有 API、一次性设置、探索后台时，才适合让浏览器介入。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这才是成熟的 Agent 工具选择逻辑。&lt;/p&gt;
&lt;h2 id=&#34;例子browser-use-cloud&#34;&gt;例子：Browser Use Cloud
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 不只服务网页点击，也可以记录围绕浏览器运行时的 API 经验。&lt;/p&gt;
&lt;p&gt;Browser Use Cloud 的经验里，会记录如何通过 REST API 创建 cloud browser、列出正在运行的浏览器、清理 zombie browser、获取 liveUrl 和 cdpUrl 等信息。&lt;/p&gt;
&lt;p&gt;这说明 skill 的边界并不局限于“某个网页按钮怎么点”。只要某类任务会反复出现，而且有稳定做法，就可以沉淀成 skill：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API 调用方式。&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;
&lt;/ul&gt;
&lt;p&gt;对 Agent 来说，这些都是可复用能力。&lt;/p&gt;
&lt;h2 id=&#34;为什么这比临场推理更可靠&#34;&gt;为什么这比临场推理更可靠
&lt;/h2&gt;&lt;p&gt;很多人期待大模型每次都能“自己看懂网页”。但真实任务里，只靠临场推理并不稳定。&lt;/p&gt;
&lt;p&gt;原因很简单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;网页 UI 经常变化。&lt;/li&gt;
&lt;li&gt;同一按钮可能有多种实现。&lt;/li&gt;
&lt;li&gt;看得见不代表点得动。&lt;/li&gt;
&lt;li&gt;能点击不代表操作真的生效。&lt;/li&gt;
&lt;li&gt;有些任务本来就应该用 API，而不是浏览器。&lt;/li&gt;
&lt;li&gt;有些操作需要人类确认，不能让模型自己决定。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 把这些经验写成文件后，有几个好处：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;人类可以 review。&lt;/li&gt;
&lt;li&gt;错误经验可以修正。&lt;/li&gt;
&lt;li&gt;同一站点的经验可以持续积累。&lt;/li&gt;
&lt;li&gt;新 Agent 可以直接继承旧经验。&lt;/li&gt;
&lt;li&gt;临时任务发现可以变成长期知识。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这比把一切都塞进 prompt 或聊天上下文更稳。&lt;/p&gt;
&lt;h2 id=&#34;团队可以怎么用&#34;&gt;团队可以怎么用
&lt;/h2&gt;&lt;p&gt;如果把 browser-harness 用在团队里，&lt;code&gt;domain skills&lt;/code&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;哪些页面有 API 替代方案。&lt;/li&gt;
&lt;li&gt;哪些选择器经过实测可靠。&lt;/li&gt;
&lt;li&gt;哪些任务不允许 Agent 自动执行。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类知识不必一开始就很完整。更实际的做法是从低风险、高频、可回滚的流程开始：先让 Agent 做只读、下载、整理、检查类任务。等流程稳定后，再把经验整理成 skill。&lt;/p&gt;
&lt;p&gt;对团队管理者来说，skill 文件还有一个好处：它让自动化边界变得可见。你可以审查 Agent 知道什么、能做什么、应该停在哪里。&lt;/p&gt;
&lt;h2 id=&#34;需要注意的边界&#34;&gt;需要注意的边界
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 能提高 Agent 成功率，但它不应该让高风险操作完全自动化。&lt;/p&gt;
&lt;p&gt;几个边界要守住：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不记录密码、Cookie、token、客户数据和内部敏感 URL。&lt;/li&gt;
&lt;li&gt;支付、删除、批量提交、账号变更、对外发布内容，要保留人工确认。&lt;/li&gt;
&lt;li&gt;skill 要写明验证日期和适用范围。&lt;/li&gt;
&lt;li&gt;站点改版后，要允许 skill 失效并重新验证。&lt;/li&gt;
&lt;li&gt;不要把绕过风控、规避平台限制当成目标。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;换句话说，domain skill 是让 Agent 更稳，不是让 Agent 无限制地做事。&lt;/p&gt;
&lt;h2 id=&#34;简单结论&#34;&gt;简单结论
&lt;/h2&gt;&lt;p&gt;browser-harness 的 &lt;code&gt;domain skills&lt;/code&gt; 机制说明了一件事：AI Agent 的浏览器自动化，不能只靠模型临场发挥。&lt;/p&gt;
&lt;p&gt;一个可用的浏览器 Agent，至少需要三层能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;底层控制能力：截图、点击、输入、下载、CDP、HTTP。&lt;/li&gt;
&lt;li&gt;站点级知识：API 优先级、稳定选择器、组件陷阱、登录边界。&lt;/li&gt;
&lt;li&gt;人类安全规则：凭据不交给模型，高风险操作要确认，敏感信息不写进 skill。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;domain skills&lt;/code&gt; 补的是第二层。它让 Agent 带着验证过的经验进入网页任务，而不是每次都重新摸索。&lt;/p&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;browser-harness domain skills：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/tree/main/agent-workspace/domain-skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/tree/main/agent-workspace/domain-skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Amazon product-search skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/amazon/product-search.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/amazon/product-search.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ArXiv scraping skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/arxiv/scraping.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/arxiv/scraping.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub scraping skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/github/scraping.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/github/scraping.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;LinkedIn invitation-manager skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/linkedin/invitation-manager.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/linkedin/invitation-manager.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Shopify admin skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/shopify-admin/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/shopify-admin/README.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Browser Use Cloud skill：&lt;a class=&#34;link&#34; href=&#34;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/browser-use-cloud/cloud.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/browser-use/browser-harness/blob/main/agent-workspace/domain-skills/browser-use-cloud/cloud.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Claude-Mem：给 Claude Code 加上跨会话长期记忆</title>
        <link>https://knightli.com/2026/05/01/claude-mem-persistent-memory-for-claude-code/</link>
        <pubDate>Fri, 01 May 2026 03:01:02 +0800</pubDate>
        
        <guid>https://knightli.com/2026/05/01/claude-mem-persistent-memory-for-claude-code/</guid>
        <description>&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 是一个给 &lt;code&gt;Claude Code&lt;/code&gt; 使用的持久化记忆系统。&lt;/p&gt;
&lt;p&gt;它想解决的问题很具体：AI 编程助手每次开新会话时，往往会忘记之前讨论过的架构决策、踩过的坑、项目偏好和实现背景。&lt;br&gt;
如果一个项目做得久，每次都重新解释上下文，非常浪费时间。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 的思路是：把 Claude Code 的会话内容压缩成记忆，存进本地数据库和向量库，之后再通过搜索工具找回来。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;Claude Code 很适合处理代码任务，但会话上下文毕竟有限。&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;code&gt;Claude-Mem&lt;/code&gt; 就是围绕这些问题设计的。&lt;/p&gt;
&lt;p&gt;它不是简单保存聊天记录，而是把会话压缩成更容易检索的记忆片段。这样后续需要时，可以通过语义搜索把相关上下文找回来。&lt;/p&gt;
&lt;h2 id=&#34;工作方式&#34;&gt;工作方式
&lt;/h2&gt;&lt;p&gt;从 README 的设计看，&lt;code&gt;Claude-Mem&lt;/code&gt; 主要由几部分组成。&lt;/p&gt;
&lt;p&gt;第一部分是 hooks。&lt;/p&gt;
&lt;p&gt;它会接入 Claude Code 的会话流程，在合适的时机捕获会话数据。&lt;/p&gt;
&lt;p&gt;第二部分是后台 worker。&lt;/p&gt;
&lt;p&gt;worker 负责把原始会话内容处理成更短、更可检索的记忆。&lt;/p&gt;
&lt;p&gt;第三部分是本地存储。&lt;/p&gt;
&lt;p&gt;项目使用 &lt;code&gt;SQLite&lt;/code&gt; 保存结构化元数据，用 &lt;code&gt;Chroma&lt;/code&gt; 保存向量索引。这样既能保留会话记录的基本信息，也能支持语义检索。&lt;/p&gt;
&lt;p&gt;第四部分是 &lt;code&gt;mem-search&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这是给 Claude Code 使用的查询入口。需要找回旧上下文时，可以通过它搜索相关记忆。&lt;/p&gt;
&lt;p&gt;整体流程可以理解为：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Claude Code 会话产生内容&lt;/li&gt;
&lt;li&gt;hooks 捕获会话数据&lt;/li&gt;
&lt;li&gt;worker 异步压缩和整理&lt;/li&gt;
&lt;li&gt;记忆写入 SQLite 与 Chroma&lt;/li&gt;
&lt;li&gt;后续通过 &lt;code&gt;mem-search&lt;/code&gt; 检索&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;适合什么场景&#34;&gt;适合什么场景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&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;经常让 Claude Code 修 Bug、写功能、整理文档&lt;/li&gt;
&lt;li&gt;希望 AI 能记住“之前为什么这么改”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是临时让 Claude Code 改一行代码，长期记忆意义不大。&lt;br&gt;
但如果你把 Claude Code 当作长期协作者，它就会变得有用。&lt;/p&gt;
&lt;h2 id=&#34;安装和启动&#34;&gt;安装和启动
&lt;/h2&gt;&lt;p&gt;README 中给出的安装方式很直接：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g claude-mem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启动时可以使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看状态：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果需要停止：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem stop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这些命令背后的目标，是把记忆系统作为一个长期运行的本地服务接到 Claude Code 工作流里。&lt;/p&gt;
&lt;h2 id=&#34;mem-search-怎么用&#34;&gt;&lt;code&gt;mem-search&lt;/code&gt; 怎么用
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;mem-search&lt;/code&gt; 是找回记忆的关键入口。&lt;/p&gt;
&lt;p&gt;它的用途不是替代普通搜索，而是让 Claude Code 能按语义查询过去会话中的内容。&lt;/p&gt;
&lt;p&gt;比如你可以让 Claude Code 查询：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;某个模块之前为什么这样设计&lt;/li&gt;
&lt;li&gt;某个 Bug 当时怎么排查&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;br&gt;
如果记忆压缩和向量索引做得好，即使你不记得原话，也能找回相近语义的内容。&lt;/p&gt;
&lt;h2 id=&#34;和普通项目文档有什么区别&#34;&gt;和普通项目文档有什么区别
&lt;/h2&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;API 约定&lt;/li&gt;
&lt;li&gt;数据库结构&lt;/li&gt;
&lt;li&gt;开发规范&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&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;br&gt;
比较好的方式是：稳定知识写进项目文档，过程性上下文交给记忆系统辅助检索。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意什么&#34;&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;AI 搜到的旧上下文只能作为参考。最终判断仍然要看当前代码、测试结果和最新需求。&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;h2 id=&#34;为什么这类工具值得关注&#34;&gt;为什么这类工具值得关注
&lt;/h2&gt;&lt;p&gt;AI 编程工具正在从“单次问答”走向“长期协作”。&lt;/p&gt;
&lt;p&gt;单次问答里，模型只要回答当前问题就够了。&lt;br&gt;
长期协作里，它需要知道项目历史、之前的决策、团队偏好和已经踩过的坑。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 这类工具的意义就在这里：它把“记住上下文”从临时聊天能力，变成一个可以安装、运行、检索的本地系统。&lt;/p&gt;
&lt;p&gt;对真实工程项目来说，这比单纯让模型上下文窗口变长更实用。&lt;br&gt;
因为很多信息不是一次性塞进上下文就好，而是需要在合适的时候被找回来。&lt;/p&gt;
&lt;h2 id=&#34;适合谁尝试&#34;&gt;适合谁尝试
&lt;/h2&gt;&lt;p&gt;如果你符合下面几种情况，可以考虑试试：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高频使用 Claude Code&lt;/li&gt;
&lt;li&gt;经常跨天处理同一个项目&lt;/li&gt;
&lt;li&gt;项目上下文比较复杂&lt;/li&gt;
&lt;li&gt;经常需要向 AI 重复解释背景&lt;/li&gt;
&lt;li&gt;想把会话里的经验沉淀下来&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是偶尔使用 Claude Code，或者项目很小，暂时不一定需要这类系统。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/thedotmack/claude-mem&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;thedotmack/claude-mem&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 的重点不是“保存聊天记录”，而是让 Claude Code 能在后续任务里找回有用上下文。&lt;/p&gt;
&lt;p&gt;当 AI 编程从一次性任务变成长期项目协作，记忆系统会越来越重要。&lt;br&gt;
它不能替代文档和测试，但可以减少重复解释，让 AI 更像一个了解项目历史的助手。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex 开始控制电脑，对以后意味着什么？</title>
        <link>https://knightli.com/2026/04/29/codex-computer-use-update/</link>
        <pubDate>Wed, 29 Apr 2026 11:28:25 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/29/codex-computer-use-update/</guid>
        <description>&lt;p&gt;Codex 这次最值得关注的变化，不是又多了一个普通按钮，而是它开始往“控制电脑”这个方向走。&lt;/p&gt;
&lt;p&gt;以前我们使用 AI，更多是在聊天框里提问、复制、粘贴、再手动操作软件。&lt;br&gt;
现在这个边界开始往外扩：AI 不只是回答你，而是可以根据你的目标去操作桌面应用。&lt;/p&gt;
&lt;p&gt;这件事短期看是一个新功能，长期看可能会改变很多人使用电脑的方式。&lt;/p&gt;
&lt;h2 id=&#34;这个功能是什么&#34;&gt;这个功能是什么
&lt;/h2&gt;&lt;p&gt;简单说，Codex 的电脑使用能力，就是让它能接触并操作桌面环境。&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;可以打开浏览器、AI 工具、本地文件或其他软件&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;p&gt;这就是 Agent 和普通聊天机器人的关键区别：&lt;br&gt;
聊天机器人主要给答案，Agent 更接近“拿到目标后去执行”。&lt;/p&gt;
&lt;h2 id=&#34;为什么这件事重要&#34;&gt;为什么这件事重要
&lt;/h2&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;交给另一个 AI 工具处理&lt;/li&gt;
&lt;li&gt;保存文件&lt;/li&gt;
&lt;li&gt;再打开本地目录检查结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果要自动化这件事，传统做法可能是写浏览器脚本、调用 API、写本地程序，甚至还要处理各种软件窗口。&lt;/p&gt;
&lt;p&gt;但很多普通用户不会写这些东西。&lt;br&gt;
就算会写，也未必值得为一个临时任务专门写脚本。&lt;/p&gt;
&lt;p&gt;电脑使用能力的意义就在这里：它把“脚本能力”往自然语言方向推了一步。&lt;/p&gt;
&lt;p&gt;你不一定要告诉它每一步怎么点。&lt;br&gt;
你可以告诉它你要什么结果，让它自己去尝试完成。&lt;/p&gt;
&lt;h2 id=&#34;它能改变哪些工作流&#34;&gt;它能改变哪些工作流
&lt;/h2&gt;&lt;p&gt;我觉得最先被改变的，不会是特别严肃、特别高风险的工作，而是那些“烦、杂、重复、但又不值得专门写程序”的流程。&lt;/p&gt;
&lt;h3 id=&#34;1-跨软件搬运&#34;&gt;1. 跨软件搬运
&lt;/h3&gt;&lt;p&gt;最典型的就是在多个软件之间搬信息。&lt;/p&gt;
&lt;p&gt;以前你可能要在浏览器、文档、聊天窗口、本地文件夹之间来回切。&lt;br&gt;
以后可以把这类任务交给 Agent：&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;/ul&gt;
&lt;p&gt;这类工作不难，但很耗注意力。&lt;br&gt;
Agent 的价值就是把这些碎操作吃掉。&lt;/p&gt;
&lt;h3 id=&#34;2-多个-ai-工具协同&#34;&gt;2. 多个 AI 工具协同
&lt;/h3&gt;&lt;p&gt;现在很多人的真实工作流已经不是只用一个 AI。&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;/ul&gt;
&lt;p&gt;以前这些工具之间靠人肉复制粘贴。&lt;br&gt;
以后 Agent 可以成为中间层：它负责打开工具、传递上下文、等待输出、整理结果。&lt;/p&gt;
&lt;p&gt;这会让“多个 AI 协同”从手工流程变成半自动流程。&lt;/p&gt;
&lt;h3 id=&#34;3-办公软件自动化&#34;&gt;3. 办公软件自动化
&lt;/h3&gt;&lt;p&gt;表格、PPT、文档、邮件，这些软件都有一个共同特点：功能很强，但很多操作很碎。&lt;/p&gt;
&lt;p&gt;如果 Agent 能稳定控制这些软件，以后的办公自动化门槛会明显下降。&lt;/p&gt;
&lt;p&gt;你不用记菜单在哪里，也不用学复杂快捷键。&lt;br&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;/ul&gt;
&lt;p&gt;真正麻烦的按钮操作，会逐渐被隐藏到自然语言后面。&lt;/p&gt;
&lt;h2 id=&#34;对普通用户意味着什么&#34;&gt;对普通用户意味着什么
&lt;/h2&gt;&lt;p&gt;对普通用户来说，这类功能的影响可能比“模型又聪明了一点”更直接。&lt;/p&gt;
&lt;p&gt;因为它降低的不是知识门槛，而是操作门槛。&lt;/p&gt;
&lt;p&gt;很多人不是不会表达需求，而是不知道软件里该点哪里、怎么组合功能。&lt;br&gt;
Agent 如果能接管这部分，人使用电脑的方式就会变成：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我描述目标
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Agent 操作软件
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;我检查结果
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这比单纯聊天更接近真实生产力。&lt;/p&gt;
&lt;h2 id=&#34;对软件形态的影响&#34;&gt;对软件形态的影响
&lt;/h2&gt;&lt;p&gt;如果这类 Agent 能力继续成熟，软件本身也会被反向影响。&lt;/p&gt;
&lt;p&gt;过去软件设计主要服务人类点击。&lt;br&gt;
以后软件可能还要服务 Agent 操作。&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;软件可能会提供更适合 Agent 调用的接口&lt;/li&gt;
&lt;li&gt;用户会更在意“能不能被 AI 顺利操作”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;长期看，应用之间的边界可能会变薄。&lt;br&gt;
用户关心的不再是“我打开哪个软件”，而是“我要完成什么任务”。&lt;/p&gt;
&lt;h2 id=&#34;现在还不能过度乐观&#34;&gt;现在还不能过度乐观
&lt;/h2&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;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;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;Codex 这次更新真正重要的地方，是它把 AI 从“回答问题”推向了“操作环境”。&lt;/p&gt;
&lt;p&gt;短期看，它是一个电脑使用功能。&lt;br&gt;
长期看，它可能是个人电脑交互方式的一次转向。&lt;/p&gt;
&lt;p&gt;以后我们使用电脑，可能会越来越少地记按钮、找菜单、切窗口。&lt;br&gt;
更多时候，我们只需要说清楚目标，然后让 Agent 去执行，再由人做最后判断。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Codex 里的 ~/.codex/skills 和 项目/.codex/skills 有什么区别</title>
        <link>https://knightli.com/2026/04/29/difference-between-global-and-project-codex-skills/</link>
        <pubDate>Wed, 29 Apr 2026 11:08:00 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/29/difference-between-global-and-project-codex-skills/</guid>
        <description>&lt;p&gt;很多人整理 Codex skills 时，最容易卡住的问题就两个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; 和 &lt;code&gt;项目/.codex/skills&lt;/code&gt; 有什么区别&lt;/li&gt;
&lt;li&gt;为什么 skill 明明在目录里，当前会话里却不一定显示&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这篇就直接说结论。&lt;/p&gt;
&lt;h2 id=&#34;两者的区别&#34;&gt;两者的区别
&lt;/h2&gt;&lt;p&gt;先记最短版本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; 是你的全局技能库&lt;/li&gt;
&lt;li&gt;&lt;code&gt;项目/.codex/skills&lt;/code&gt; 是这个仓库的本地技能库&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;codexskills&#34;&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;适合放：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你自己跨项目反复会用的 skill&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;ul&gt;
&lt;li&gt;&lt;code&gt;post-rewrite&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;post-translate&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;git-commit-push&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hugo-rsync-deploy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bilibili-speech-transcriber&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类 skill 的特点就是：&lt;strong&gt;离开当前项目也还能用。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;项目codexskills&#34;&gt;&lt;code&gt;项目/.codex/skills&lt;/code&gt;
&lt;/h3&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;需要让团队一起共享的 skill&lt;/li&gt;
&lt;/ul&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;/ul&gt;
&lt;p&gt;这类 skill 的特点是：&lt;strong&gt;离开这个仓库就没意义。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;什么时候放全局什么时候放项目里&#34;&gt;什么时候放全局，什么时候放项目里
&lt;/h2&gt;&lt;p&gt;直接这样判断就够了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;跟你个人习惯有关，放 &lt;code&gt;~/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;跟仓库规则有关，放 &lt;code&gt;项目/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;能跨项目复用，优先放全局&lt;/li&gt;
&lt;li&gt;要多人共享、跟仓库一起演进，优先放项目里&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;当前这个仓库是什么情况&#34;&gt;当前这个仓库是什么情况
&lt;/h2&gt;&lt;p&gt;按我现在看到的实际状态：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你的本机里有 &lt;code&gt;~/.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;当前仓库里没有 &lt;code&gt;.codex/skills&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以你现在主要依赖的是全局 skills。&lt;br&gt;
也就是说，像 &lt;code&gt;post-rewrite&lt;/code&gt;、&lt;code&gt;post-translate&lt;/code&gt;、&lt;code&gt;git-commit-push&lt;/code&gt; 这些流程，现在更多是你个人工作流的一部分，不是这个仓库显式自带的一部分。&lt;/p&gt;
&lt;h2 id=&#34;为什么磁盘里有当前会话里却不一定显示&#34;&gt;为什么磁盘里有，当前会话里却不一定显示
&lt;/h2&gt;&lt;p&gt;这里要分清两件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;磁盘存在&lt;/strong&gt;：说明 skill 文件在本地目录里&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;会话暴露&lt;/strong&gt;：说明当前会话把它注册进了可用 skill 列表&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这两者不是一回事。&lt;/p&gt;
&lt;p&gt;所以会出现这种情况：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; 里已经有 skill&lt;/li&gt;
&lt;li&gt;但 &lt;code&gt;/&lt;/code&gt; 后面的列表里没有显示&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这通常不代表 skill 坏了，更常见的原因是：&lt;strong&gt;当前会话没有把它重新索引进去。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;怎样让-skill-被当前会话暴露&#34;&gt;怎样让 skill 被当前会话暴露
&lt;/h2&gt;&lt;p&gt;最实用的步骤就这几条：&lt;/p&gt;
&lt;h3 id=&#34;1-目录放对&#34;&gt;1. 目录放对
&lt;/h3&gt;&lt;p&gt;全局：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;~/.codex/skills/&amp;lt;skill-name&amp;gt;/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;项目级：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;项目/.codex/skills/&amp;lt;skill-name&amp;gt;/SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-skillmd-头部可识别&#34;&gt;2. &lt;code&gt;SKILL.md&lt;/code&gt; 头部可识别
&lt;/h3&gt;&lt;p&gt;最少要有：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: your-skill-name
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: 这个 skill 是干什么的
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;3-新建或修改后开新会话&#34;&gt;3. 新建或修改后，开新会话
&lt;/h3&gt;&lt;p&gt;很多时候 skill 没显示，不是文件有问题，而是当前会话启动时就已经把可用 skill 列表定下来了。&lt;br&gt;
所以你中途新建 skill，磁盘里虽然已经有了，这次会话也未必会重新认。&lt;/p&gt;
&lt;p&gt;最稳的做法就是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;放好 skill&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;code&gt;/&lt;/code&gt; 里有没有出现&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;4-项目-skill-最好提前放好&#34;&gt;4. 项目 skill 最好提前放好
&lt;/h3&gt;&lt;p&gt;如果你想让 &lt;code&gt;项目/.codex/skills&lt;/code&gt; 更稳定地被识别，最好在进入仓库、启动会话之前，就把这些 skill 放进项目里。&lt;/p&gt;
&lt;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;最短结论就是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;~/.codex/skills&lt;/code&gt; 是你的个人技能库&lt;/li&gt;
&lt;li&gt;&lt;code&gt;项目/.codex/skills&lt;/code&gt; 是仓库的本地规则库&lt;/li&gt;
&lt;li&gt;skill 在目录里，不等于当前会话一定会显示&lt;/li&gt;
&lt;li&gt;想让它显示，最常见的办法就是放对目录、写好 &lt;code&gt;SKILL.md&lt;/code&gt;，然后开新会话&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>使用 Agent Skills 取代 VS Code 中 Copilot 的“生成提交消息”的功能</title>
        <link>https://knightli.com/2026/04/06/replace-vscode-generate-commit-message-after-copilot-quota/</link>
        <pubDate>Mon, 06 Apr 2026 13:09:49 +0800</pubDate>
        
        <guid>https://knightli.com/2026/04/06/replace-vscode-generate-commit-message-after-copilot-quota/</guid>
        <description>&lt;p&gt;VS Code 的 GitHub Copilot “生成提交消息” 是一个非常实用的功能。配额用尽以后重置周期会非常长。
本文是使用本地 Agent Skills，取代这个功能的一个尝试。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://knightli.com/2026/04/06/replace-vscode-generate-commit-message-after-copilot-quota/1.png&#34;
	width=&#34;645&#34;
	height=&#34;194&#34;
	srcset=&#34;https://knightli.com/2026/04/06/replace-vscode-generate-commit-message-after-copilot-quota/1_hu_6b81e604b29d8606.png 480w, https://knightli.com/2026/04/06/replace-vscode-generate-commit-message-after-copilot-quota/1_hu_5f11e2ea13cbceb8.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;生成提交消息&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;332&#34;
		data-flex-basis=&#34;797px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;问题与目标&#34;&gt;问题与目标
&lt;/h2&gt;&lt;p&gt;本文目标是提供一套可直接落地的替代方案：使用 &lt;code&gt;git-commit-push-zh&lt;/code&gt; skill agents 完成标准化提交与推送。&lt;/p&gt;
&lt;h2 id=&#34;替代方案git-commit-push-zh&#34;&gt;替代方案：&lt;code&gt;git-commit-push-zh&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;该 skill 将“当前改动”收敛为固定流程：&lt;/p&gt;
&lt;ol&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;执行 commit。&lt;/li&gt;
&lt;li&gt;推送到远端分支。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;对应命令如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git status --short
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git branch --show-current
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git add -A
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git commit -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;中文提交信息&amp;gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git push origin &amp;lt;当前分支&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;提交信息建议规范&#34;&gt;提交信息建议规范
&lt;/h2&gt;&lt;p&gt;建议统一格式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;类型&amp;gt;(&amp;lt;范围&amp;gt;): &amp;lt;中文摘要&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;类型示例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;feat&lt;/code&gt;：新增功能&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fix&lt;/code&gt;：修复问题&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docs&lt;/code&gt;：文档更新&lt;/li&gt;
&lt;li&gt;&lt;code&gt;refactor&lt;/code&gt;：代码重构&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chore&lt;/code&gt;：维护性改动&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;示例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;feat(site): 新增全站 head 广告脚本注入&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fix(i18n): 修正 relref 相关文章链接路径&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chore(content): 合并 AI 工作流分类到 AI工具&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;常见失败场景&#34;&gt;常见失败场景
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nothing to commit&lt;/code&gt;：当前无可提交改动，停止推送即可。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;push&lt;/code&gt; 失败：优先检查权限、远端分支状态、冲突。&lt;/li&gt;
&lt;li&gt;SSH/权限异常：确认凭据与权限后再重试。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;附录原始-skillmd&#34;&gt;附录：原始 &lt;code&gt;SKILL.md&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;以下内容为 &lt;code&gt;git-commit-push-zh&lt;/code&gt; 的原始文档，原样保留，便于后续复用与维护。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-md&#34; data-lang=&#34;md&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: git-commit-push-zh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: 在当前 Git 仓库中将“当前更改”完成一次标准提交流程：检查状态、暂存变更、生成中文提交信息、执行 commit 并 push 到当前分支对应远端。用户提出“提交代码”“提交当前更改”“生成中文提交信息并推送”“git commit push 中文说明”等请求时使用。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# 中文提交并推送
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;使用此技能将当前仓库改动一次性提交并推送到远端。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 工作流程
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 查看变更状态：&lt;span class=&#34;sb&#34;&gt;`git status --short`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 确认当前分支：&lt;span class=&#34;sb&#34;&gt;`git branch --show-current`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 暂存当前变更：&lt;span class=&#34;sb&#34;&gt;`git add -A`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;4.&lt;/span&gt; 生成中文提交信息（简洁、可检索）。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;5.&lt;/span&gt; 执行提交：&lt;span class=&#34;sb&#34;&gt;`git commit -m &amp;#34;&amp;lt;中文提交信息&amp;gt;&amp;#34;`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;6.&lt;/span&gt; 执行推送：&lt;span class=&#34;sb&#34;&gt;`git push origin &amp;lt;当前分支&amp;gt;`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 提交信息规范（中文）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 建议格式：&lt;span class=&#34;sb&#34;&gt;`&amp;lt;类型&amp;gt;(&amp;lt;范围&amp;gt;): &amp;lt;中文摘要&amp;gt;`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 类型示例：&lt;span class=&#34;sb&#34;&gt;`feat`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`fix`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`chore`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`docs`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`refactor`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 摘要要求：准确描述本次改动，不写空话。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;4.&lt;/span&gt; 若仅少量变更，也保持可读性与可检索性。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;示例：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`feat(site): 新增全站 head 广告脚本注入`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`fix(i18n): 修正 relref 相关文章链接路径`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`chore(content): 合并 AI 工作流分类到 AI工具`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 错误处理
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 若无可提交变更（nothing to commit），明确告知并停止 push。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 若 push 失败，先回报关键错误（权限、远端不存在、冲突等）。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 常见 SSH/权限问题可在用户确认后重试高权限环境。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 输出约定
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 汇报提交哈希、分支名、提交信息。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 汇报 push 结果（成功或失败原因）。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 仅在确有失败时提供下一步最小操作建议。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        
    </channel>
</rss>
