<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on CAO ZUOHUA</title><link>https://caozuohua.github.io/posts/</link><description>Recent content in Posts on CAO ZUOHUA</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 14 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://caozuohua.github.io/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>生产级智能体的核心能力：从「能跑通」到「敢上线」</title><link>https://caozuohua.github.io/posts/2026-07-14-production-grade-agent-core-capabilities/</link><pubDate>Tue, 14 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-14-production-grade-agent-core-capabilities/</guid><description>&lt;p&gt;过去两年，几乎每个技术团队都做过一个能&amp;quot;跑通&amp;quot;的智能体 demo——接几个工具，套一层 ReAct 循环，输入一句自然语言，输出一堆看起来很智能的行为。这类 demo 做起来不难，难的是下一步：把它交给真实用户，接入真实系统，让它在没有人盯着的情况下，连续跑几个月不出岔子。&lt;/p&gt;
&lt;p&gt;这中间隔着的，不是&amp;quot;模型能力&amp;quot;的鸿沟，而是&lt;strong&gt;可预测性&lt;/strong&gt;的鸿沟。一个 demo 智能体可以偶尔走神、偶尔重试、偶尔给出一个&amp;quot;看起来合理但其实跑偏&amp;quot;的答案，反正是演示，出了问题重跑一次就好。但生产系统不允许这种随机性——尤其是当智能体接触的是资金、客户数据、生产环境配置这类不可逆操作的时候。&lt;/p&gt;
&lt;p&gt;2026 年的企业级智能体实践，基本已经收敛出一套相对一致的答案：&lt;strong&gt;不是让智能体更自主，而是让它更可控&lt;/strong&gt;。这篇文章梳理一下，支撑这种&amp;quot;可控自主&amp;quot;的核心能力到底是哪几层。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;校对注：本文初稿由一篇行业综述整理而来，关键监管与技术断言（EU AI Act Article 14、NIST AI 600-1 GenAI Profile）已逐一核实；部分采用率/市场份额数据来自第三方调研，文中已标注为&amp;quot;业界观点&amp;quot;而非定论。与笔者此前的《LangGraph 是负担还是利器？》一文视角互补——那篇从&amp;quot;单角色个人助手不该上 LG&amp;quot;出发，本篇从&amp;quot;生产级必须可控&amp;quot;出发，结论殊途同归：&lt;strong&gt;自主度的边界应由业务风险等级决定，而非模型能力。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="一为什么更自主不是正确方向"&gt;一、为什么&amp;quot;更自主&amp;quot;不是正确方向&lt;/h2&gt;
&lt;p&gt;早期很多团队的直觉是：模型越强，就应该给它更大的自由度，让它自己规划、自己决定工具调用顺序、自己判断什么时候该停。这个思路在 demo 阶段很吸引人，但放到生产环境会迅速暴露问题——你没法审计一个&amp;quot;完全自由发挥&amp;quot;的决策链，也没法向合规部门解释&amp;quot;智能体为什么会这么做&amp;quot;。&lt;/p&gt;
&lt;p&gt;企业级智能体架构的核心特征，正在从&amp;quot;最大化自主性&amp;quot;转向&amp;quot;有边界的自主性&amp;quot;。行业分析普遍认为，真正规模化落地的组织会共享同一套架构模式：在自主推理能确实创造价值的地方使用智能体，在需要一致性的地方使用确定性规则，在利害关系要求问责时引入人工判断——三者结合，而不是单纯堆叠模型能力。&lt;/p&gt;
&lt;h2 id="二六层核心能力"&gt;二、六层核心能力&lt;/h2&gt;
&lt;p&gt;把各家企业级实践拆开看，基本都在做同一件事的六个侧面。&lt;/p&gt;
&lt;h3 id="1-确定性路由层把开放世界压缩成有限状态"&gt;1. 确定性路由层：把开放世界压缩成有限状态&lt;/h3&gt;
&lt;p&gt;这是最基础也最容易被忽视的一层。核心思路很简单：不让大模型自由生成&amp;quot;下一步该做什么&amp;quot;，而是先定义一个有限的动作空间（比如&amp;quot;调用工具&amp;quot;&amp;ldquo;请求澄清&amp;quot;&amp;ldquo;判断无法处理&amp;quot;&amp;ldquo;任务完成&amp;rdquo;），模型只能在这个空间里做选择，选择的结构由类型系统（比如 Pydantic）强制约束。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;action_type: tool_call | clarify | cannot_proceed | done
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这一步看起来朴素，但效果是把&amp;quot;自由文本生成&amp;quot;的不确定性，变成了&amp;quot;有限选项分类&amp;quot;的确定性——后者好测试、好回归、好追责得多。&lt;/p&gt;
&lt;h3 id="2-human-in-the-loop-中断门不可逆动作前的强制刹车"&gt;2. Human-in-the-Loop 中断门：不可逆动作前的强制刹车&lt;/h3&gt;
&lt;p&gt;在编排图里预设中断点，任何被标记为高风险或不可逆的操作，执行前必须经过人工确认。这不是&amp;quot;智能体表现不好才需要人工介入&amp;rdquo;，而是&lt;strong&gt;架构层面的默认设计&lt;/strong&gt;——资金操作、外发通信、生产配置变更这类动作，不管模型多自信，都要走审批。&lt;/p&gt;
&lt;p&gt;这一层的关键设计难点不在&amp;quot;要不要加审批&amp;rdquo;，而在&amp;quot;审批粒度怎么定&amp;quot;。粒度太粗，所有操作都要人工确认，智能体失去意义；粒度太细，风险操作可能漏网。比较成熟的做法是按风险分级（risk-tier）给每个工具打标，只有中高风险的操作才触发中断。&lt;/p&gt;
&lt;h3 id="3-审计平面让每一步决策都能被倒查"&gt;3. 审计平面：让每一步决策都能被倒查&lt;/h3&gt;
&lt;p&gt;记录每一次工具调用、每一次路由决策、每一个最终输出的来源，使得出问题之后能够对智能体的推理路径做取证式的完整重建。这一层的价值不在正常运行时体现，而在出事故的那一刻——没有完整审计链，你连&amp;quot;智能体在哪一步犯了错&amp;quot;都说不清楚，更别说改进。&lt;/p&gt;
&lt;p&gt;技术实现上，主流做法通常包括：结构化的调用日志（区分请求模型和实际使用模型，便于发现静默降级）、决策快照（人工批准时看到的是什么状态）、以及近年逐渐标准化的 OpenTelemetry GenAI 语义约定，用来统一不同框架间的追踪数据格式。&lt;/p&gt;
&lt;h3 id="4-评估回路从跑起来了到跑得对"&gt;4. 评估回路：从&amp;quot;跑起来了&amp;quot;到&amp;quot;跑得对&amp;quot;&lt;/h3&gt;
&lt;p&gt;生产级智能体需要专门针对智能体逻辑设计的自动化回归测试，依据基线评分标准衡量推理路径质量，而不只是&amp;quot;程序没报错&amp;quot;。更进一步的做法是把评估探针嵌入实际推理流程，在线上实时运行而非只在部署前测试，给出带理由的可机读判定结果——这类做法已经开始被 NIST 等机构的指导文件所参考（如 NIST AI 600-1《Generative AI Profile》已将 LLM-as-judge 等评估思路纳入风险管理的参考框架）。&lt;/p&gt;
&lt;p&gt;一个容易被低估的点是：评估不应该只测&amp;quot;最终答案对不对&amp;quot;，还要测&amp;quot;中间决策合不合理&amp;quot;——比如任务分解是否遗漏了关键维度，工具选择是否有更优解但没被采纳。这类语义层面的评估，通常需要引入另一个模型做裁判（LLM-as-judge），而不能只靠规则断言。&lt;/p&gt;
&lt;h3 id="5-模型网关一层薄薄的保险丝"&gt;5. 模型网关：一层薄薄的保险丝&lt;/h3&gt;
&lt;p&gt;一个集中化的代理层，统一管理模型路由和策略，负责限流、追踪 token 预算，并提供跨供应商的故障转移。对企业而言，这一层的价值不只是省钱和防崩，还包括权限控制——哪个智能体、哪个任务能调用哪个模型，是需要被显式管理的资产，而不是散落在各处的 API Key。&lt;/p&gt;</description></item><item><title>AI Coding 提效全链路：从代码生成到文档的实战工作流</title><link>https://caozuohua.github.io/posts/2026-07-12-ai-coding-productivity-pipeline/</link><pubDate>Sun, 12 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-12-ai-coding-productivity-pipeline/</guid><description>&lt;blockquote&gt;
&lt;p&gt;面试被问&amp;quot;你在内部有哪些 AI coding 提效工作&amp;quot;——只答&amp;quot;用了 Copilot&amp;quot;是最弱的回答。真正值钱的是：&lt;strong&gt;具体怎么用、量化结果、以及你设计的工作流&lt;/strong&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这篇文章把我的实战拆成可复制的全链路。&lt;/p&gt;
&lt;h2 id="六个场景按-roi-排序"&gt;六个场景，按 ROI 排序&lt;/h2&gt;
&lt;p&gt;不是所有编码环节都值得交给 AI。按投入产出比排：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;代码生成&lt;/strong&gt; —— 模板代码 / CRUD / 配置文件，提效 &lt;strong&gt;3-5x&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;单元测试生成&lt;/strong&gt; —— 覆盖率从 40% → 80%+，省下大量机械劳动&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code Review&lt;/strong&gt; —— 自动查常见问题（安全 / 性能 / 命名），压缩人工 review 时间&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文档生成&lt;/strong&gt; —— API 文档 / CHANGELOG / README，提效 &lt;strong&gt;5-10x&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;调试辅助&lt;/strong&gt; —— 贴报错自动给修复建议&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Onboarding&lt;/strong&gt; —— 新人用 AI 快速理解陌生代码库&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;注意排序：&lt;strong&gt;文档和单测的 ROI 往往最高&lt;/strong&gt;，因为它们最机械、最不依赖创造性，却最容易被人类拖延。&lt;/p&gt;
&lt;h2 id="三层落地个人--团队--ci"&gt;三层落地：个人 / 团队 / CI&lt;/h2&gt;
&lt;p&gt;提效不是装个插件就结束，要分层次铺开：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;个人层&lt;/strong&gt;：Cursor / Claude Code 日常编码，把重复活交给模型&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;团队层&lt;/strong&gt;：内部 AI coding 工具 + 共享 prompt 库，把个人经验变成团队资产&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CI/CD 层&lt;/strong&gt;：自动测试生成、自动 code review，每次 PR 触发&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;关键认知：&lt;strong&gt;不要让 AI 只在你本地跑&lt;/strong&gt;。把它沉到 CI，才能从&amp;quot;个人快一点&amp;quot;变成&amp;quot;团队不出低级错&amp;quot;。&lt;/p&gt;</description></item><item><title>LangGraph 是负担还是利器？个人助手的 Agent 框架选型反思</title><link>https://caozuohua.github.io/posts/2026-07-12-langgraph-over-engineering-for-personal-assistant/</link><pubDate>Sun, 12 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-12-langgraph-over-engineering-for-personal-assistant/</guid><description>&lt;blockquote&gt;
&lt;p&gt;2026-06-26，我认真评估过用 LangGraph 重构自己的个人助理。结论是：&lt;strong&gt;不适合&lt;/strong&gt;。不是 LangGraph 不好，是它解决的问题和个人助手要解决的问题不是一回事。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这篇文章不黑任何一个框架，只把&amp;quot;什么时候该上、什么时候是负担&amp;quot;的判断标准讲清楚。&lt;/p&gt;
&lt;h2 id="先客观说-langgraph-强在哪"&gt;先客观说 LangGraph 强在哪&lt;/h2&gt;
&lt;p&gt;LangGraph 的图（node + edge）抽象不是花架子，它解决的是&lt;strong&gt;可控的有状态流程&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多模型协作（一个节点用 GPT，一个节点用 Gemini，按条件路由）&lt;/li&gt;
&lt;li&gt;分支 / 循环逻辑（审批被拒 → 回到上一节点重跑）&lt;/li&gt;
&lt;li&gt;客服流程 / 审批流（需要可视化地看清楚每一步走到了哪）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类场景里，图的好处是&lt;strong&gt;状态、回溯、分支都显式可调试&lt;/strong&gt;。如果你要的是&amp;quot;把一段复杂业务流程跑得可控&amp;quot;，LangGraph 是合理选择。&lt;/p&gt;
&lt;p&gt;我自己的 QPC 里也记下了它适合的场景：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;适合 LangGraph 的场景 —— 多模型协作 / 分支循环逻辑 / 客服流程审批流&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="个人助手的核心诉求是另一套东西"&gt;个人助手的核心诉求是另一套东西&lt;/h2&gt;
&lt;p&gt;个人助理（personal assistant）每天面对的请求，结构完全不同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;记忆驱动&lt;/strong&gt;：长期记忆、工作记忆、用户偏好要持续读写&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;技能路由&lt;/strong&gt;：80% 的请求是固定模式，不需要复杂推理，命中一个 skill 比跑一个 Agent 更稳、更便宜、更快&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;平台对接&lt;/strong&gt;：要原生连上飞书 / Discord / 日历，而不是自己写一堆适配层&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;token 优化&lt;/strong&gt;：要持续压低上下文成本，不能每次都把整个状态图塞进去&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我对比过两套方案的实际覆盖：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;维度&lt;/th&gt;
					&lt;th&gt;LangGraph&lt;/th&gt;
					&lt;th&gt;我的方案（skill + memory + tool + platform）&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;持久记忆&lt;/td&gt;
					&lt;td&gt;❌ 无原生&lt;/td&gt;
					&lt;td&gt;✅ 分层记忆直接落库&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;技能路由&lt;/td&gt;
					&lt;td&gt;❌ 要自己接&lt;/td&gt;
					&lt;td&gt;✅ 原生&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;平台对接&lt;/td&gt;
					&lt;td&gt;❌ 无原生&lt;/td&gt;
					&lt;td&gt;✅ 原生飞书 / Discord&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;token 优化&lt;/td&gt;
					&lt;td&gt;❌ 不负责&lt;/td&gt;
					&lt;td&gt;✅ 工具链 + 上下文裁剪&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;图可视化调试&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;关键不是&amp;quot;谁功能多&amp;quot;，是&lt;strong&gt;个人助手的核心链路，LangGraph 一个都不原生管&lt;/strong&gt;。&lt;/p&gt;</description></item><item><title>10w、50w、100w 三档资金的配置思路</title><link>https://caozuohua.github.io/posts/2026-07-07-allocation-for-10w-50w-100w/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-allocation-for-10w-50w-100w/</guid><description>&lt;p&gt;同样是稳健理财，10 万、50 万、100 万的配置重点并不一样。&lt;/p&gt;
&lt;p&gt;资金规模越小，越要优先保证现金流和简单执行；资金规模变大后，才更值得引入多资产配置、再平衡和工具化复盘。这里讨论的是配置思路，不是产品推荐，也不构成投资建议。&lt;/p&gt;
&lt;h2 id="10w先解决安全垫"&gt;10w：先解决安全垫&lt;/h2&gt;
&lt;p&gt;10 万资金最重要的是不要把系统做复杂。&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;/ul&gt;
&lt;p&gt;这个阶段最应该训练的是记录和复盘，而不是追求组合精巧。&lt;/p&gt;
&lt;h2 id="50w开始区分用途"&gt;50w：开始区分用途&lt;/h2&gt;
&lt;p&gt;50 万资金通常已经值得做用途分层。&lt;/p&gt;
&lt;p&gt;可以把资金分成三类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 年内可能使用的钱：保持高流动性。&lt;/li&gt;
&lt;li&gt;1-3 年可能使用的钱：以低波动防守资产为主。&lt;/li&gt;
&lt;li&gt;3 年以上不用的钱：可以承担适度权益波动。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个阶段可以开始建立目标比例，例如现金、短债、二级债、红利低波或宽基的组合。但比例不是重点，重点是每类资金都有明确用途。&lt;/p&gt;
&lt;h2 id="100w配置和流程同样重要"&gt;100w：配置和流程同样重要&lt;/h2&gt;
&lt;p&gt;100 万资金的波动会更有体感。&lt;/p&gt;
&lt;p&gt;组合回撤 5%，账面就是 5 万；回撤 10%，就是 10 万。这个阶段不能只看“年化收益”，必须把最大回撤、再平衡规则和极端行情预案写清楚。&lt;/p&gt;
&lt;p&gt;已有的《100w 稳健型基金组合 · 执行手册》就是一个实战样例：先定义本金、目标年化、最大回撤和再平衡周期，再拆成具体资产类别。&lt;/p&gt;
&lt;h2 id="三档资金的差异"&gt;三档资金的差异&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;资金规模&lt;/th&gt;
					&lt;th&gt;核心目标&lt;/th&gt;
					&lt;th&gt;管理重点&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;10w&lt;/td&gt;
					&lt;td&gt;建立安全垫&lt;/td&gt;
					&lt;td&gt;流动性、记录、少折腾&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;50w&lt;/td&gt;
					&lt;td&gt;用途分层&lt;/td&gt;
					&lt;td&gt;目标比例、风险分层&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;100w&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;/p&gt;
&lt;h2 id="不同规模都需要的底层规则"&gt;不同规模都需要的底层规则&lt;/h2&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="工具化从-50w-后更有价值"&gt;工具化从 50w 后更有价值&lt;/h2&gt;
&lt;p&gt;10 万阶段，一个简单表格就够。&lt;/p&gt;
&lt;p&gt;50 万以后，可以开始记录目标比例、当前比例、偏离值和复盘备注。100 万以后，再平衡提醒、公告摘要、组合归因和月度报告就会更有价值。&lt;/p&gt;
&lt;p&gt;工具化不是为了炫技，而是为了减少漏看、少算和冲动决策。&lt;/p&gt;</description></item><item><title>1GB VPS 上跑个人助理智能体的部署清单</title><link>https://caozuohua.github.io/posts/2026-07-07-one-gb-vps-agent-deployment-checklist/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-one-gb-vps-agent-deployment-checklist/</guid><description>&lt;p&gt;1GB VPS 可以跑个人助理智能体，但前提是别把它当大服务器用。&lt;/p&gt;
&lt;p&gt;低资源环境最重要的是克制：少进程、少常驻、少浏览器、少后台任务。部署前就要想清楚哪些功能必须在线，哪些功能可以按需运行。&lt;/p&gt;
&lt;h2 id="部署前检查"&gt;部署前检查&lt;/h2&gt;
&lt;p&gt;先确认资源边界：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;内存是否约 1GB。&lt;/li&gt;
&lt;li&gt;是否有 swap。&lt;/li&gt;
&lt;li&gt;磁盘空间是否足够日志和依赖。&lt;/li&gt;
&lt;li&gt;系统是否开启自动安全更新。&lt;/li&gt;
&lt;li&gt;SSH 登录是否使用密钥。&lt;/li&gt;
&lt;li&gt;防火墙是否只开放必要端口。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果机器本身不稳，不要急着部署 Agent。&lt;/p&gt;
&lt;h2 id="功能裁剪"&gt;功能裁剪&lt;/h2&gt;
&lt;p&gt;个人助理在 1GB VPS 上应该优先保留核心链路：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;消息入口。&lt;/li&gt;
&lt;li&gt;模型网关或 API 调用。&lt;/li&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;/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;多 Agent 并发编排。&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="部署中检查"&gt;部署中检查&lt;/h2&gt;
&lt;p&gt;部署时按顺序验证：&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;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;/li&gt;
&lt;/ol&gt;
&lt;p&gt;不要等全部部署完才第一次测试。&lt;/p&gt;
&lt;h2 id="安全检查"&gt;安全检查&lt;/h2&gt;
&lt;p&gt;个人助理通常握有 API Key 和个人数据，安全边界要提前做。&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;li&gt;日志不打印完整密钥。&lt;/li&gt;
&lt;li&gt;远程命令需要人工确认。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;低资源不是降低安全要求的理由。&lt;/p&gt;
&lt;h2 id="部署后检查"&gt;部署后检查&lt;/h2&gt;
&lt;p&gt;上线后观察 24 小时：&lt;/p&gt;</description></item><item><title>QPC 四字段如何支撑个人知识管理</title><link>https://caozuohua.github.io/posts/2026-07-07-qpc-four-fields-for-personal-agent/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-qpc-four-fields-for-personal-agent/</guid><description>&lt;p&gt;个人知识库最大的问题通常不是容量，而是维护摩擦。&lt;/p&gt;
&lt;p&gt;字段越多，写入越慢；分类越复杂，越容易放弃。QPC 的价值是把知识记录压缩到足够小，让个人助理能稳定写入和检索。&lt;/p&gt;
&lt;h2 id="qpc-是什么"&gt;QPC 是什么&lt;/h2&gt;
&lt;p&gt;QPC 可以理解为四类知识：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Question：问题。&lt;/li&gt;
&lt;li&gt;Practice：实践。&lt;/li&gt;
&lt;li&gt;Concept：概念。&lt;/li&gt;
&lt;li&gt;Fact：事实。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不追求一次性建成完整知识图谱，而是先把值得重读的信息记录下来。&lt;/p&gt;
&lt;h2 id="为什么适合个人助理"&gt;为什么适合个人助理&lt;/h2&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;/p&gt;
&lt;h2 id="四字段降低摩擦"&gt;四字段降低摩擦&lt;/h2&gt;
&lt;p&gt;一个 QPC 条目可以很简单：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;字段&lt;/th&gt;
					&lt;th&gt;作用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;类型&lt;/td&gt;
					&lt;td&gt;Question、Practice、Concept、Fact&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;标题&lt;/td&gt;
					&lt;td&gt;一句话概括&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;内容&lt;/td&gt;
					&lt;td&gt;关键说明&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&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;字段少，Agent 才能稳定写。&lt;/p&gt;
&lt;h2 id="和长期记忆的关系"&gt;和长期记忆的关系&lt;/h2&gt;
&lt;p&gt;QPC 不等于全部记忆。&lt;/p&gt;
&lt;p&gt;偏好、任务状态、配置事实和知识条目可以分层存储。QPC 更适合保存可复用知识，而不是当前任务里的临时上下文。&lt;/p&gt;
&lt;h2 id="检索比分类更重要"&gt;检索比分类更重要&lt;/h2&gt;
&lt;p&gt;个人知识管理不应该把精力花在完美分类上。&lt;/p&gt;
&lt;p&gt;只要标题清楚、内容紧凑、来源明确，后续通过搜索或 Agent 检索就能找回来。QPC 的核心是降低写入成本，让知识真的留下来。&lt;/p&gt;</description></item><item><title>Skill 路由如何降低个人助理的不确定性</title><link>https://caozuohua.github.io/posts/2026-07-07-skill-routing-reduces-agent-uncertainty/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-skill-routing-reduces-agent-uncertainty/</guid><description>&lt;p&gt;个人助理的很多任务，不需要重新发明推理过程。&lt;/p&gt;
&lt;p&gt;“写博客”“记一条知识”“查服务器状态”“生成月度复盘”“整理配置”这些任务都有明确流程。如果每次都让 Agent 从零思考，很容易出现不稳定输出和错误工具调用。&lt;/p&gt;
&lt;p&gt;Skill 路由的思路是：先识别任务场景，再进入对应流程。&lt;/p&gt;
&lt;h2 id="react-的问题"&gt;ReAct 的问题&lt;/h2&gt;
&lt;p&gt;ReAct 循环适合开放探索，但个人助理的大多数任务不是开放探索。&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="skill-的价值"&gt;Skill 的价值&lt;/h2&gt;
&lt;p&gt;Skill 把任务流程显式化。&lt;/p&gt;
&lt;p&gt;一个好的 Skill 至少说明：&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;哪些动作需要人工确认。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这会显著减少不确定性。&lt;/p&gt;
&lt;h2 id="命名要贴近场景"&gt;命名要贴近场景&lt;/h2&gt;
&lt;p&gt;Skill 名称应该让人一眼知道它处理什么任务。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;hugo-blog&lt;/code&gt;：写博客、编辑文章、构建部署。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qpc&lt;/code&gt;：记录和检索个人知识。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ssh-git-vps-deploy&lt;/code&gt;：处理 VPS 上的 Git 部署。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;x-ui-and-new-api-security-posture&lt;/code&gt;：处理特定安全加固场景。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;名称越具体，路由越稳定。&lt;/p&gt;
&lt;h2 id="触发词要具体"&gt;触发词要具体&lt;/h2&gt;
&lt;p&gt;触发词不应该太宽。&lt;/p&gt;
&lt;p&gt;“工具”“处理”“帮我看看”这类词太泛，容易误触发。更好的触发词是和场景强相关的词，例如“写博客”“QPC”“部署到 VPS”“检查 x-ui 安全”。&lt;/p&gt;
&lt;p&gt;个人助理可以允许多个触发词，但每个触发词都应该指向明确任务。&lt;/p&gt;
&lt;h2 id="输入输出边界"&gt;输入输出边界&lt;/h2&gt;
&lt;p&gt;每个 Skill 应该定义输入和输出。&lt;/p&gt;
&lt;p&gt;例如博客 Skill 的输入可以是主题、标题、目标读者、已有素材；输出是文章文件、构建结果、提交状态。&lt;/p&gt;
&lt;p&gt;QPC Skill 的输入可以是一段知识或检索问题；输出是结构化记录或匹配结果。&lt;/p&gt;
&lt;p&gt;输入输出清楚，Agent 就更少临时发挥。&lt;/p&gt;
&lt;h2 id="失败时要降级"&gt;失败时要降级&lt;/h2&gt;
&lt;p&gt;Skill 还应该说明失败时怎么办。&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;/p&gt;</description></item><item><title>个人助理智能体的失败分类表</title><link>https://caozuohua.github.io/posts/2026-07-07-personal-agent-failure-taxonomy/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-personal-agent-failure-taxonomy/</guid><description>&lt;p&gt;如果不分类，Agent 失败看起来都像“模型不行”。&lt;/p&gt;
&lt;p&gt;但个人助理的失败来源很多：理解错、路由错、工具错、记忆错、权限错、环境错、恢复错。分类之后，才能知道该修模型、修 Skill，还是修工具。&lt;/p&gt;
&lt;h2 id="七类失败"&gt;七类失败&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;类型&lt;/th&gt;
					&lt;th&gt;表现&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;理解失败&lt;/td&gt;
					&lt;td&gt;误解用户目标&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;路由失败&lt;/td&gt;
					&lt;td&gt;选错 Skill 或流程&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;工具失败&lt;/td&gt;
					&lt;td&gt;参数错、超时、权限不足&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;记忆失败&lt;/td&gt;
					&lt;td&gt;忘记事实或记错偏好&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;权限失败&lt;/td&gt;
					&lt;td&gt;越权执行或该确认未确认&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;环境失败&lt;/td&gt;
					&lt;td&gt;依赖缺失、服务未启动&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&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;这张表比一句“Agent 崩了”更有排查价值。&lt;/p&gt;
&lt;h2 id="先定位再修复"&gt;先定位再修复&lt;/h2&gt;
&lt;p&gt;不要看到失败就改 prompt。&lt;/p&gt;
&lt;p&gt;如果是工具参数错，应该修 schema 或校验；如果是路由错，应该修触发词；如果是权限错，应该修确认机制；如果是环境错，应该修部署和监控。&lt;/p&gt;
&lt;p&gt;错误分类能避免把所有问题都甩给模型。&lt;/p&gt;
&lt;h2 id="日志字段"&gt;日志字段&lt;/h2&gt;
&lt;p&gt;每次失败至少记录：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户请求。&lt;/li&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;/li&gt;
&lt;li&gt;是否需要人工处理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些字段足够支持月度复盘。&lt;/p&gt;
&lt;h2 id="复盘动作"&gt;复盘动作&lt;/h2&gt;
&lt;p&gt;失败复盘可以只问三个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这类失败是否重复出现？&lt;/li&gt;
&lt;li&gt;它能否通过规则或校验提前拦住？&lt;/li&gt;
&lt;li&gt;它是否需要加入 QPC 或维护手册？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;个人助理的可靠性来自持续修小错，而不是一次性设计完美系统。&lt;/p&gt;</description></item><item><title>个人助理智能体的密钥、面板和网关安全</title><link>https://caozuohua.github.io/posts/2026-07-07-agent-secrets-panels-gateways-security/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-agent-secrets-panels-gateways-security/</guid><description>&lt;p&gt;个人助理智能体一旦接入真实工具，就会碰到安全问题。&lt;/p&gt;
&lt;p&gt;密钥、Web 面板、API 网关、反向代理、远程命令都可能成为风险点。精简个人助理不是少做安全，而是减少暴露面。&lt;/p&gt;
&lt;h2 id="密钥"&gt;密钥&lt;/h2&gt;
&lt;p&gt;密钥不应该写进仓库、文章、日志或普通聊天记录。&lt;/p&gt;
&lt;p&gt;Agent 可以检查配置项是否存在，但不应该完整打印 token。写技术文章时，也应该使用脱敏结构和真实字段名，而不是暴露真实值。&lt;/p&gt;
&lt;h2 id="面板"&gt;面板&lt;/h2&gt;
&lt;p&gt;Web 面板不应该直接裸露公网。&lt;/p&gt;
&lt;p&gt;至少要有认证、不可预测路径或访问限制。默认路径、弱密码和公开端口会让个人项目承担不必要风险。&lt;/p&gt;
&lt;h2 id="网关"&gt;网关&lt;/h2&gt;
&lt;p&gt;API 网关负责把请求转给模型或工具。&lt;/p&gt;
&lt;p&gt;网关要限制来源、记录调用、保护密钥，并避免把内部错误直接暴露给外部。能只开放一个入口，就不要暴露多个入口。&lt;/p&gt;
&lt;h2 id="日志"&gt;日志&lt;/h2&gt;
&lt;p&gt;日志需要足够排障，但不能泄露秘密。&lt;/p&gt;
&lt;p&gt;不要记录完整 Authorization header、API key、cookie、个人账户信息。可以记录脱敏摘要、请求类型和错误码。&lt;/p&gt;
&lt;h2 id="高风险动作"&gt;高风险动作&lt;/h2&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;li&gt;写入生产数据。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安全边界要默认保守。&lt;/p&gt;
&lt;h2 id="检查清单"&gt;检查清单&lt;/h2&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;是否有回滚方式？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;个人助理越强，越要把权限和安全写清楚。&lt;/p&gt;</description></item><item><title>个人助理智能体的最小可用架构</title><link>https://caozuohua.github.io/posts/2026-07-07-minimal-personal-agent-architecture/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-minimal-personal-agent-architecture/</guid><description>&lt;p&gt;个人助理智能体不需要一开始就有复杂平台。&lt;/p&gt;
&lt;p&gt;一个最小可用架构，只要能稳定完成“理解请求、选择流程、调用工具、记录结果、必要时请人确认”这条链路，就已经能解决很多实际问题。&lt;/p&gt;
&lt;h2 id="架构图"&gt;架构图&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-mermaid" data-lang="mermaid"&gt;flowchart TD
 U[&amp;#34;用户入口&amp;lt;br/&amp;gt;聊天、命令、Webhook&amp;#34;] --&amp;gt; R[&amp;#34;请求归一化&amp;#34;]
 R --&amp;gt; M[&amp;#34;模型路由&amp;lt;br/&amp;gt;选择合适模型&amp;#34;]
 M --&amp;gt; S[&amp;#34;Skill 路由&amp;lt;br/&amp;gt;匹配任务场景&amp;#34;]
 S --&amp;gt; C[&amp;#34;任务上下文&amp;lt;br/&amp;gt;短期状态&amp;#34;]
 C --&amp;gt; T[&amp;#34;工具层&amp;lt;br/&amp;gt;文件、搜索、日历、API&amp;#34;]
 C --&amp;gt; K[&amp;#34;记忆层&amp;lt;br/&amp;gt;偏好、事实、QPC&amp;#34;]
 T --&amp;gt; G{&amp;#34;高风险动作?&amp;#34;}
 G -- &amp;#34;否&amp;#34; --&amp;gt; L[&amp;#34;日志与结果记录&amp;#34;]
 G -- &amp;#34;是&amp;#34; --&amp;gt; H[&amp;#34;人工确认&amp;#34;]
 H --&amp;gt; L
 K --&amp;gt; L
 L --&amp;gt; U
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="入口只负责接收请求"&gt;入口：只负责接收请求&lt;/h2&gt;
&lt;p&gt;入口可以是聊天窗口、飞书消息、命令行或 Webhook。&lt;/p&gt;
&lt;p&gt;入口不应该承担复杂逻辑。它只需要把用户请求、用户身份、时间和上下文传给后面的处理链路。&lt;/p&gt;
&lt;p&gt;这样以后更换入口时，不需要重写核心逻辑。&lt;/p&gt;
&lt;h2 id="模型路由按任务选择模型"&gt;模型路由：按任务选择模型&lt;/h2&gt;
&lt;p&gt;不是所有任务都需要最强模型。&lt;/p&gt;
&lt;p&gt;简单分类、格式整理、固定模板生成，可以使用便宜快速的模型。复杂推理、长文写作、代码分析，才需要更强模型。&lt;/p&gt;
&lt;p&gt;模型路由的目标不是炫技，而是控制成本和延迟。&lt;/p&gt;
&lt;h2 id="skill-路由把任务交给稳定流程"&gt;Skill 路由：把任务交给稳定流程&lt;/h2&gt;
&lt;p&gt;个人助理的大多数任务有明确场景：记一条知识、查一个配置、写一篇博客、生成复盘、检查服务器。&lt;/p&gt;
&lt;p&gt;Skill 路由比无约束 ReAct 循环更适合这些任务。它先识别场景，再进入对应流程，减少“想太多”和“乱调用工具”的概率。&lt;/p&gt;
&lt;h2 id="工具层只接入少数可靠工具"&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;</description></item><item><title>个人助理智能体的权限边界和确认机制</title><link>https://caozuohua.github.io/posts/2026-07-07-personal-agent-permission-boundaries/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-personal-agent-permission-boundaries/</guid><description>&lt;p&gt;个人助理越有用，权限越敏感。&lt;/p&gt;
&lt;p&gt;它可能能读文件、写博客、调用 API、访问服务器、发送消息。如果没有权限边界，一个小错误就可能变成真实损失。&lt;/p&gt;
&lt;p&gt;权限设计的目标不是让 Agent 什么都不能做，而是让每类动作都有合适的确认级别。&lt;/p&gt;
&lt;h2 id="四类权限"&gt;四类权限&lt;/h2&gt;
&lt;p&gt;我倾向于把权限分成四类：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;等级&lt;/th&gt;
					&lt;th&gt;含义&lt;/th&gt;
					&lt;th&gt;示例&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;只读&lt;/td&gt;
					&lt;td&gt;只能查看和总结&lt;/td&gt;
					&lt;td&gt;读文件、查日志、检索知识&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;建议&lt;/td&gt;
					&lt;td&gt;可以生成方案但不执行&lt;/td&gt;
					&lt;td&gt;写计划、列风险、生成命令&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;可执行&lt;/td&gt;
					&lt;td&gt;可以做低风险动作&lt;/td&gt;
					&lt;td&gt;新建草稿、运行构建、格式检查&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;必须确认&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;/p&gt;
&lt;h2 id="文件系统"&gt;文件系统&lt;/h2&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;h2 id="远程命令"&gt;远程命令&lt;/h2&gt;
&lt;p&gt;远程命令必须保守。&lt;/p&gt;
&lt;p&gt;查看状态、读日志、检查磁盘可以是只读。重启服务、修改配置、拉取代码、执行迁移都可能影响线上状态，应该要求确认或至少先展示命令和影响。&lt;/p&gt;
&lt;p&gt;不要让 Agent 在不解释的情况下执行远程破坏性命令。&lt;/p&gt;
&lt;h2 id="密钥和配置"&gt;密钥和配置&lt;/h2&gt;
&lt;p&gt;密钥不应该进入普通对话和公开日志。&lt;/p&gt;
&lt;p&gt;Agent 可以检查“是否存在配置项”，但不应该完整打印密钥。写文章时也只能引用脱敏结构，不应该暴露真实 token。&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;h2 id="面板和网关"&gt;面板和网关&lt;/h2&gt;
&lt;p&gt;Web 面板、API 网关和反向代理是常见暴露面。&lt;/p&gt;
&lt;p&gt;个人助理可以辅助检查端口、路径和访问控制，但涉及开放公网、修改认证、变更代理规则时必须人工确认。&lt;/p&gt;
&lt;p&gt;安全配置的错误往往不是马上爆炸，而是留下长期风险。&lt;/p&gt;
&lt;h2 id="确认机制怎么写"&gt;确认机制怎么写&lt;/h2&gt;
&lt;p&gt;高风险动作前，Agent 应该给出：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;将要执行的动作：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;影响范围：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;是否可回滚：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;回滚方式：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;需要你确认的命令或选项：
&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;/h2&gt;
&lt;p&gt;个人助理长期可用的前提，是你能放心让它运行。&lt;/p&gt;
&lt;p&gt;如果一个能力无法安全地设定边界，就不要急着接入。能只读就只读，能建议就建议，真正需要执行时再让人确认。&lt;/p&gt;</description></item><item><title>个人助理需要记住什么，不需要记住什么</title><link>https://caozuohua.github.io/posts/2026-07-07-what-personal-agent-should-remember/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-what-personal-agent-should-remember/</guid><description>&lt;p&gt;个人助理的记忆系统很容易走向两个极端。&lt;/p&gt;
&lt;p&gt;一种是完全不记，每次对话都像第一次见面。另一种是什么都记，最后记忆库变成噪音堆。真正可用的个人助理，需要知道什么值得长期保存，什么应该及时丢掉。&lt;/p&gt;
&lt;h2 id="应该记住稳定偏好"&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;写博客时偏好中文标题和英文 slug。&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="应该记住稳定事实"&gt;应该记住：稳定事实&lt;/h2&gt;
&lt;p&gt;稳定事实是关于用户、项目或环境的长期信息。&lt;/p&gt;
&lt;p&gt;例如博客仓库路径、部署方式、常用服务器、默认分支、常用工具链。这些信息能减少重复沟通，提高执行效率。&lt;/p&gt;
&lt;p&gt;但事实也需要可更新。如果路径、配置或部署方式变了，旧事实必须能被覆盖。&lt;/p&gt;
&lt;h2 id="应该记住任务状态"&gt;应该记住：任务状态&lt;/h2&gt;
&lt;p&gt;任务状态回答“做到哪里了”。&lt;/p&gt;
&lt;p&gt;例如一篇文章已经写了总览、下一步要补实战篇；某个部署已经完成构建但还没推送；某个系列已经完成分类但还没补维护手册。&lt;/p&gt;
&lt;p&gt;任务状态适合有生命周期，完成后应该归档，不应该无限保留在活跃上下文里。&lt;/p&gt;
&lt;h2 id="应该记住长期知识"&gt;应该记住：长期知识&lt;/h2&gt;
&lt;p&gt;长期知识是以后可能反复检索的内容。&lt;/p&gt;
&lt;p&gt;例如踩坑记录、配置说明、命令模板、文章素材、概念卡片。QPC 的价值就在于把知识压缩成低摩擦条目：问题、实践、概念或事实。&lt;/p&gt;
&lt;p&gt;长期知识不一定要很长，关键是可检索、可重读。&lt;/p&gt;
&lt;h2 id="不应该记住临时上下文"&gt;不应该记住：临时上下文&lt;/h2&gt;
&lt;p&gt;临时上下文只服务当前任务。&lt;/p&gt;
&lt;p&gt;例如一次命令输出、一段中间草稿、临时错误信息、某次搜索结果。如果把这些都写入长期记忆，系统会越来越嘈杂。&lt;/p&gt;
&lt;p&gt;临时上下文可以进入日志，但不一定进入记忆。&lt;/p&gt;
&lt;h2 id="不应该记住未经确认的推断"&gt;不应该记住：未经确认的推断&lt;/h2&gt;
&lt;p&gt;Agent 经常会推断用户意图。&lt;/p&gt;
&lt;p&gt;这些推断不能直接写成记忆。例如“用户喜欢某种投资风格”“用户总是想自动部署”“用户偏好某个模型”。除非用户明确确认，否则只能作为当前任务假设。&lt;/p&gt;
&lt;p&gt;记忆系统最怕把猜测固化成事实。&lt;/p&gt;
&lt;h2 id="一个五层划分"&gt;一个五层划分&lt;/h2&gt;
&lt;p&gt;可以把个人助理记忆分成五层：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;层级&lt;/th&gt;
					&lt;th&gt;内容&lt;/th&gt;
					&lt;th&gt;生命周期&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;当前上下文&lt;/td&gt;
					&lt;td&gt;本轮任务细节&lt;/td&gt;
					&lt;td&gt;任务结束后丢弃&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;任务状态&lt;/td&gt;
					&lt;td&gt;待办、进度、阻塞&lt;/td&gt;
					&lt;td&gt;完成后归档&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;用户偏好&lt;/td&gt;
					&lt;td&gt;输出风格、风险边界&lt;/td&gt;
					&lt;td&gt;长期但可更新&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;稳定事实&lt;/td&gt;
					&lt;td&gt;路径、配置、项目背景&lt;/td&gt;
					&lt;td&gt;长期但需校验&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;知识库&lt;/td&gt;
					&lt;td&gt;QPC、踩坑、模板&lt;/td&gt;
					&lt;td&gt;长期积累&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="记忆写入规则"&gt;记忆写入规则&lt;/h2&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;</description></item><item><title>个人理财工具的权限边界：什么能自动化，什么必须人工确认</title><link>https://caozuohua.github.io/posts/2026-07-07-personal-finance-tool-permission-boundary/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-personal-finance-tool-permission-boundary/</guid><description>&lt;p&gt;理财工具越自动化，越要重视权限边界。&lt;/p&gt;
&lt;p&gt;读公告、整理持仓、计算比例和生成复盘，都适合自动化。但买入、卖出、赎回、转账这类动作必须人工确认。稳健理财不应该把最终责任交给工具。&lt;/p&gt;
&lt;p&gt;本文不构成投资建议。&lt;/p&gt;
&lt;h2 id="四类权限"&gt;四类权限&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;权限&lt;/th&gt;
					&lt;th&gt;示例&lt;/th&gt;
					&lt;th&gt;是否可自动化&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;只读&lt;/td&gt;
					&lt;td&gt;读取公告、持仓、净值&lt;/td&gt;
					&lt;td&gt;可以&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;计算&lt;/td&gt;
					&lt;td&gt;计算比例、偏离、回撤&lt;/td&gt;
					&lt;td&gt;可以&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;建议&lt;/td&gt;
					&lt;td&gt;生成复盘、列风险&lt;/td&gt;
					&lt;td&gt;可以，但需标注不确定性&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;执行&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;/p&gt;
&lt;h2 id="只读也要注意隐私"&gt;只读也要注意隐私&lt;/h2&gt;
&lt;p&gt;只读不是没有风险。&lt;/p&gt;
&lt;p&gt;持仓数据、账户信息和资金规模都属于敏感信息。工具可以读取必要字段，但不应该把完整账户信息写进公开文章、日志或聊天记录。&lt;/p&gt;
&lt;h2 id="建议不能伪装成结论"&gt;建议不能伪装成结论&lt;/h2&gt;
&lt;p&gt;Agent 可以说“组合权益比例高于目标 5 个百分点”，但不应该直接说“应该卖出某基金”。&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;h2 id="执行动作必须留痕"&gt;执行动作必须留痕&lt;/h2&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="自动化的底线"&gt;自动化的底线&lt;/h2&gt;
&lt;p&gt;个人理财工具的底线很简单：&lt;/p&gt;
&lt;p&gt;工具可以提高信息质量，不能替你承担后果。&lt;/p&gt;
&lt;p&gt;凡是会改变资产状态的动作，都应该由人确认。&lt;/p&gt;</description></item><item><title>个人稳健理财工具维护手册</title><link>https://caozuohua.github.io/posts/2026-07-07-personal-finance-tool-maintenance/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-personal-finance-tool-maintenance/</guid><description>&lt;p&gt;理财工具最难的不是搭起来，而是长期维护。&lt;/p&gt;
&lt;p&gt;一开始表格字段很多、自动化脚本很多、Agent 提示词很复杂，看起来很完整。三个月后，如果你不愿意更新数据，这套工具就失效了。&lt;/p&gt;
&lt;p&gt;稳健理财工具应该尽量小，稳定运行，容易复盘。&lt;/p&gt;
&lt;p&gt;本文是个人学习记录，不构成投资建议。&lt;/p&gt;
&lt;h2 id="最小字段"&gt;最小字段&lt;/h2&gt;
&lt;p&gt;一个个人组合表不需要一开始就做成数据库。&lt;/p&gt;
&lt;p&gt;最小字段可以是：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;字段&lt;/th&gt;
					&lt;th&gt;用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;名称&lt;/td&gt;
					&lt;td&gt;基金、ETF 或现金账户名称&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;类别&lt;/td&gt;
					&lt;td&gt;现金、货基、短债、二级债、权益、黄金等&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;当前金额&lt;/td&gt;
					&lt;td&gt;用于计算比例&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;当前比例&lt;/td&gt;
					&lt;td&gt;当前金额除以总资产&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;目标比例&lt;/td&gt;
					&lt;td&gt;你的配置规则&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;偏离值&lt;/td&gt;
					&lt;td&gt;当前比例减目标比例&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;处理规则&lt;/td&gt;
					&lt;td&gt;买入、卖出、不动或观察&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&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;/p&gt;
&lt;h2 id="复盘频率"&gt;复盘频率&lt;/h2&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;不要每天复盘。高频查看容易把长期系统变成短期情绪管理。&lt;/p&gt;
&lt;h2 id="数据来源"&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;/ul&gt;
&lt;p&gt;如果数据需要从太多地方手工复制，工具很快会废掉。宁可字段少，也要保证持续更新。&lt;/p&gt;
&lt;h2 id="失败场景"&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;Agent 把公告摘要错了。&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="月度维护清单"&gt;月度维护清单&lt;/h2&gt;
&lt;p&gt;每月可以只做六步：&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;生成月度复盘。&lt;/li&gt;
&lt;li&gt;记录是否需要人工确认动作。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果没有触发规则，就写“不动”。&lt;/p&gt;
&lt;h2 id="半年维护清单"&gt;半年维护清单&lt;/h2&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;li&gt;是否有基金经理变更或风格漂移。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;半年复盘比月度复盘更关注结构，不关注短期涨跌。&lt;/p&gt;</description></item><item><title>为什么个人助理智能体要精简</title><link>https://caozuohua.github.io/posts/2026-07-07-why-personal-agent-should-be-minimal/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-why-personal-agent-should-be-minimal/</guid><description>&lt;p&gt;个人助理智能体最容易犯的错误，是一开始就做成平台。&lt;/p&gt;
&lt;p&gt;聊天入口、浏览器、知识库、日历、邮件、文件系统、远程命令、多 Agent 协调、自动部署、自动下单……能力越来越多，但真正长期稳定使用的反而越来越少。&lt;/p&gt;
&lt;p&gt;对个人场景来说，精简不是功能少，而是每个功能都能解释、能维护、能失败后恢复。&lt;/p&gt;
&lt;h2 id="大而全的代价"&gt;大而全的代价&lt;/h2&gt;
&lt;p&gt;复杂系统会带来四类成本。&lt;/p&gt;
&lt;p&gt;第一是运行成本。组件越多，常驻进程越多，对 VPS、内存、磁盘和网络的要求越高。个人助理如果只是服务一个人，就不该默认按企业平台规模设计。&lt;/p&gt;
&lt;p&gt;第二是认知成本。你必须知道每个模块在哪里、怎么配置、失败时看哪个日志。否则系统一旦出错，就会变成黑盒。&lt;/p&gt;
&lt;p&gt;第三是权限成本。工具越多，暴露面越大。一个能读文件、连服务器、发消息、调 API 的 Agent，如果没有严格边界，风险会迅速放大。&lt;/p&gt;
&lt;p&gt;第四是维护成本。升级、备份、迁移、密钥轮换和故障恢复都需要人处理。个人项目最怕的不是功能不够，而是维护负债超过实际收益。&lt;/p&gt;
&lt;h2 id="精简的目标"&gt;精简的目标&lt;/h2&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;li&gt;能在失败时留下日志。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这比“什么都能做”更重要。&lt;/p&gt;
&lt;h2 id="少组件"&gt;少组件&lt;/h2&gt;
&lt;p&gt;少组件意味着每个组件都有清晰职责。&lt;/p&gt;
&lt;p&gt;入口负责接收消息，模型负责理解和生成，Skill 路由负责选择任务流程，工具层负责执行有限动作，记忆层负责保存必要状态，日志负责追踪结果。&lt;/p&gt;
&lt;p&gt;不要把所有能力都塞进一个无限循环的控制器。个人助理的大多数任务都有明确场景，用明确流程处理更稳。&lt;/p&gt;
&lt;h2 id="少权限"&gt;少权限&lt;/h2&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;/ul&gt;
&lt;h2 id="强日志"&gt;强日志&lt;/h2&gt;
&lt;p&gt;没有日志的 Agent 不可维护。&lt;/p&gt;
&lt;p&gt;至少要记录：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户请求。&lt;/li&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;/li&gt;
&lt;/ul&gt;
&lt;p&gt;日志不是为了事后甩锅，而是为了复盘系统哪里不稳。&lt;/p&gt;
&lt;h2 id="可人工接管"&gt;可人工接管&lt;/h2&gt;
&lt;p&gt;个人助理不应该假装永远知道下一步。&lt;/p&gt;
&lt;p&gt;当信息不足、工具失败、权限不够或风险过高时，它应该停下来，说明原因，并把选择权交还给人。这比硬着头皮继续执行更可靠。&lt;/p&gt;
&lt;p&gt;精简个人助理的核心不是“更笨”，而是知道什么时候不该自动化。&lt;/p&gt;</description></item><item><title>为什么智能体开发者需要自己的稳健理财系统</title><link>https://caozuohua.github.io/posts/2026-07-07-why-agent-devs-need-finance-system/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-why-agent-devs-need-finance-system/</guid><description>&lt;p&gt;这不是一篇教人“用 AI 赚钱”的文章。&lt;/p&gt;
&lt;p&gt;对智能体开发者来说，更现实的问题是：我们每天都在构建自动化系统，却常常用很随意的方式管理自己的钱。看到一只基金涨了就想买，看到市场跌了就想卖，年底回头看，真正的问题不是缺少信息，而是缺少一套稳定执行的系统。&lt;/p&gt;
&lt;p&gt;稳健理财需要的不是神奇预测，而是工程化纪律。&lt;/p&gt;
&lt;h2 id="为什么是系统而不是灵感"&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;/ul&gt;
&lt;p&gt;这和写 Agent 很像。一个没有状态、没有日志、没有权限边界的 Agent，短期看起来很聪明，长期一定不可控。个人理财也是一样：没有规则的投资，短期靠运气，长期靠情绪。&lt;/p&gt;
&lt;h2 id="工程化理财的三个层次"&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;工具回答“哪些重复工作可以交给机器”。表格可以算比例，脚本可以提醒偏离，Agent 可以整理公告和生成复盘摘要。但工具只能辅助执行规则，不能替代规则本身。&lt;/p&gt;
&lt;h2 id="ai-agent-适合做什么"&gt;AI Agent 适合做什么&lt;/h2&gt;
&lt;p&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;根据固定模板生成月度复盘。&lt;/li&gt;
&lt;li&gt;把投资决策记录进个人知识库。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些任务有明确输入、明确格式、明确边界，适合自动化。&lt;/p&gt;
&lt;h2 id="ai-agent-不适合做什么"&gt;AI Agent 不适合做什么&lt;/h2&gt;
&lt;p&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;忽略你的资金期限和风险承受能力。&lt;/li&gt;
&lt;li&gt;把历史回测包装成确定性结论。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;个人理财里的高风险动作必须由人确认。Agent 可以给建议、列证据、提醒风险，但不应该拿走最后的决策权。&lt;/p&gt;
&lt;h2 id="这个系列的边界"&gt;这个系列的边界&lt;/h2&gt;
&lt;p&gt;这个系列只记录个人学习和工具实践，不构成任何投资建议。&lt;/p&gt;
&lt;p&gt;我会尽量把每个配置样例都写清楚假设条件：资金规模、收益目标、回撤约束、流动性需求和执行周期。没有这些条件，任何“推荐配置”都是不完整的。&lt;/p&gt;
&lt;p&gt;更重要的是，这个系列关注的是如何建立稳健流程，而不是追逐最优收益。对普通个人来说，能长期执行的中等方案，往往比看起来更聪明但无法坚持的方案更有价值。&lt;/p&gt;
&lt;h2 id="最小行动清单"&gt;最小行动清单&lt;/h2&gt;
&lt;p&gt;如果从今天开始搭建自己的理财系统，我会先做五件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;写下未来 1 年、3 年、5 年可能用钱的场景。&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;/ol&gt;
&lt;p&gt;这就是工程化稳健理财的起点：不是预测下一次行情，而是减少下一次冲动。&lt;/p&gt;</description></item><item><title>什么时候该持有现金，什么时候该承担波动</title><link>https://caozuohua.github.io/posts/2026-07-07-cash-vs-risk-assets/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-cash-vs-risk-assets/</guid><description>&lt;p&gt;现金常被嫌弃收益低，风险资产常被期待收益高。&lt;/p&gt;
&lt;p&gt;但稳健理财不是在两者之间选一个，而是判断一笔钱该承担什么风险。现金负责确定性和选择权，风险资产负责长期增长。错配才是问题。&lt;/p&gt;
&lt;p&gt;本文不构成投资建议。&lt;/p&gt;
&lt;h2 id="该持有现金的情况"&gt;该持有现金的情况&lt;/h2&gt;
&lt;p&gt;以下资金更适合现金或类现金：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;未来 6-12 个月确定要用的钱。&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="该承担波动的情况"&gt;该承担波动的情况&lt;/h2&gt;
&lt;p&gt;以下资金才适合考虑风险资产：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;3 年以上不用的钱。&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="时间期限决定风险上限"&gt;时间期限决定风险上限&lt;/h2&gt;
&lt;p&gt;资金期限越短，越不适合高波动资产。&lt;/p&gt;
&lt;p&gt;不是因为风险资产不好，而是因为它的收益兑现需要时间。短期资金买入高波动资产，本质上是把生活计划交给市场。&lt;/p&gt;
&lt;h2 id="现金也是策略"&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;/ul&gt;
&lt;p&gt;稳健组合里，现金是一种风险管理工具。&lt;/p&gt;
&lt;h2 id="一个简单判断"&gt;一个简单判断&lt;/h2&gt;
&lt;p&gt;问自己三个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这笔钱最早什么时候要用？&lt;/li&gt;
&lt;li&gt;如果短期亏 10%，是否会影响计划？&lt;/li&gt;
&lt;li&gt;如果市场一年不涨，是否还能继续持有？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;只要有一个答案是否定的，就应该提高现金或低波动资产比例。&lt;/p&gt;</description></item><item><title>什么时候需要多 Agent，什么时候不需要</title><link>https://caozuohua.github.io/posts/2026-07-07-when-multi-agent-is-needed/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-when-multi-agent-is-needed/</guid><description>&lt;p&gt;多 Agent 听起来很强，但不一定适合个人助理。&lt;/p&gt;
&lt;p&gt;很多个人任务只是流程明确的单人任务：写博客、查配置、记知识、生成复盘、部署服务。把它们拆成多个 Agent，可能只会增加协调成本。&lt;/p&gt;
&lt;h2 id="不需要多-agent-的情况"&gt;不需要多 Agent 的情况&lt;/h2&gt;
&lt;p&gt;以下任务通常不需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输入输出明确。&lt;/li&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;/ul&gt;
&lt;p&gt;这类任务用清晰流程更稳。&lt;/p&gt;
&lt;h2 id="可能需要多-agent-的情况"&gt;可能需要多 Agent 的情况&lt;/h2&gt;
&lt;p&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;li&gt;失败可以隔离在某个子任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如大型代码审查、复杂资料整理、长篇专题策划，才可能值得拆分。&lt;/p&gt;
&lt;h2 id="多-agent-的成本"&gt;多 Agent 的成本&lt;/h2&gt;
&lt;p&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;li&gt;更高 token 和工具调用成本。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果没有明确收益，不要为了架构好看引入。&lt;/p&gt;
&lt;h2 id="判断清单"&gt;判断清单&lt;/h2&gt;
&lt;p&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;li&gt;失败时谁接管？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;答不清楚，就先保持单 Agent + Skill 路由。&lt;/p&gt;
&lt;p&gt;个人助理的优先级是稳定，而不是复杂。&lt;/p&gt;</description></item><item><title>从年化收益到能睡着觉的资产配置目标</title><link>https://caozuohua.github.io/posts/2026-07-07-sleep-well-asset-allocation-goal/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-sleep-well-asset-allocation-goal/</guid><description>&lt;p&gt;很多理财目标只写一句话：希望年化 5%。&lt;/p&gt;
&lt;p&gt;这个目标太薄。它没有说明中间最多能亏多少、这笔钱什么时候要用、下跌时是否还能继续持有。真正可执行的资产配置目标，应该让你在市场波动时仍然能睡着觉。&lt;/p&gt;
&lt;p&gt;本文是个人学习记录，不构成投资建议。&lt;/p&gt;
&lt;h2 id="年化收益只是一个维度"&gt;年化收益只是一个维度&lt;/h2&gt;
&lt;p&gt;年化收益描述的是长期结果，但个人承受的是过程。&lt;/p&gt;
&lt;p&gt;如果一个组合长期年化可能有 6%，但中途可能回撤 25%，对很多稳健型资金来说并不合适。反过来，一个组合年化不高，但回撤小、流动性好、执行简单，也可能更适合短中期资金。&lt;/p&gt;
&lt;p&gt;目标收益必须和风险约束一起出现。&lt;/p&gt;
&lt;h2 id="写目标时要加四个字段"&gt;写目标时要加四个字段&lt;/h2&gt;
&lt;p&gt;我会把目标写成这样：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;字段&lt;/th&gt;
					&lt;th&gt;示例&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;资金用途&lt;/td&gt;
					&lt;td&gt;未来 3 年不计划使用&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;目标收益&lt;/td&gt;
					&lt;td&gt;争取年化 4%-6%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;最大回撤&lt;/td&gt;
					&lt;td&gt;希望控制在 10% 以内&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;执行规则&lt;/td&gt;
					&lt;td&gt;半年复盘，偏离 5 个百分点再平衡&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这比“年化 5%”更接近真实决策。&lt;/p&gt;
&lt;h2 id="能睡着觉是一条硬约束"&gt;能睡着觉是一条硬约束&lt;/h2&gt;
&lt;p&gt;能睡着觉不是情绪化要求，而是执行力要求。&lt;/p&gt;
&lt;p&gt;如果一个组合让你每天看净值、频繁打开交易软件、因为新闻改计划，它就超过了你的承受范围。稳健理财追求的是长期可执行，而不是短期最优。&lt;/p&gt;
&lt;h2 id="目标要能落到动作"&gt;目标要能落到动作&lt;/h2&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;/p&gt;
&lt;h2 id="最小模板"&gt;最小模板&lt;/h2&gt;
&lt;p&gt;可以直接使用这个模板：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;这笔钱的用途：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;最早使用时间：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;目标收益区间：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;最大可接受回撤：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;现金保留比例：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;风险资产上限：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;复盘频率：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;触发调仓条件：
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;稳健配置的第一步，是把“我想赚多少”改成“我能承受什么，并愿意按什么规则执行”。&lt;/p&gt;</description></item><item><title>从幻觉到问责：个人助理的可靠性边界</title><link>https://caozuohua.github.io/posts/2026-07-07-from-hallucination-to-accountability/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-from-hallucination-to-accountability/</guid><description>&lt;p&gt;个人助理不可能永不出错。&lt;/p&gt;
&lt;p&gt;真正需要的是可靠性边界：哪些结论必须有来源，哪些动作必须确认，哪些失败必须记录，哪些责任不能交给模型。&lt;/p&gt;
&lt;h2 id="幻觉不是唯一问题"&gt;幻觉不是唯一问题&lt;/h2&gt;
&lt;p&gt;幻觉只是错误的一种。&lt;/p&gt;
&lt;p&gt;个人助理还会遇到工具失败、权限错误、记忆污染、计划失效、环境变化和多步任务中断。如果只盯着“模型会不会编”，会漏掉很多工程问题。&lt;/p&gt;
&lt;h2 id="可靠性的四个要求"&gt;可靠性的四个要求&lt;/h2&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;/p&gt;
&lt;h2 id="事实类回答要有来源"&gt;事实类回答要有来源&lt;/h2&gt;
&lt;p&gt;查资料、查配置、查日志时，Agent 应该说明依据。&lt;/p&gt;
&lt;p&gt;如果没有来源，就应该标注不确定，而不是编一个确定答案。事实类任务的底线是：不知道可以说不知道。&lt;/p&gt;
&lt;h2 id="执行动作要有确认"&gt;执行动作要有确认&lt;/h2&gt;
&lt;p&gt;会改变外部状态的动作都要更谨慎。&lt;/p&gt;
&lt;p&gt;删除文件、修改配置、推送代码、重启服务、发送公开消息、财务操作，都应该在执行前说明影响，并等待确认。&lt;/p&gt;
&lt;h2 id="错误要进入复盘"&gt;错误要进入复盘&lt;/h2&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;li&gt;是否需要改工具权限？&lt;/li&gt;
&lt;li&gt;是否需要写入 QPC？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可靠性不是一次完成，而是持续收紧边界。&lt;/p&gt;
&lt;h2 id="边界越清楚助理越可信"&gt;边界越清楚，助理越可信&lt;/h2&gt;
&lt;p&gt;个人助理的可信度，不来自它永远自信，而来自它知道什么时候停下来、什么时候引用来源、什么时候请求确认。&lt;/p&gt;
&lt;p&gt;这就是从幻觉治理走向问责机制。&lt;/p&gt;</description></item><item><title>债基、二级债、红利低波 ETF 的常见误区</title><link>https://caozuohua.github.io/posts/2026-07-07-bond-fund-dividend-low-vol-misunderstandings/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-bond-fund-dividend-low-vol-misunderstandings/</guid><description>&lt;p&gt;稳健组合里常见三类产品：债基、二级债、红利低波 ETF。&lt;/p&gt;
&lt;p&gt;它们都可能有价值，但也都容易被误解。误解的核心，是把“相对稳健”看成“没有风险”。&lt;/p&gt;
&lt;p&gt;本文是个人学习记录，不构成投资建议。&lt;/p&gt;
&lt;h2 id="误区一债基不会亏"&gt;误区一：债基不会亏&lt;/h2&gt;
&lt;p&gt;债基也会亏。&lt;/p&gt;
&lt;p&gt;利率变化、信用风险、流动性压力都会影响债基净值。短债通常波动小一些，中长债对利率更敏感，信用债还要看违约和估值压力。&lt;/p&gt;
&lt;p&gt;看债基时不能只看近一年收益，要看久期、杠杆、信用等级和最大回撤。&lt;/p&gt;
&lt;h2 id="误区二二级债只是债基增强版"&gt;误区二：二级债只是债基增强版&lt;/h2&gt;
&lt;p&gt;二级债通常可以配置股票或可转债。&lt;/p&gt;
&lt;p&gt;这意味着它可能在权益市场下跌时出现明显回撤。把二级债放在“纯防守仓”里，会低估组合风险。&lt;/p&gt;
&lt;p&gt;二级债更适合被看作收益增强工具，而不是现金替代品。&lt;/p&gt;
&lt;h2 id="误区三红利低波没有权益风险"&gt;误区三：红利低波没有权益风险&lt;/h2&gt;
&lt;p&gt;红利低波 ETF 仍然是权益资产。&lt;/p&gt;
&lt;p&gt;它可能比成长风格更稳，也可能有股息和估值支撑，但市场系统性下跌时，它也会跌。红利低波的角色是“相对防守的权益暴露”，不是债券。&lt;/p&gt;
&lt;h2 id="误区四名字比持仓重要"&gt;误区四：名字比持仓重要&lt;/h2&gt;
&lt;p&gt;产品名字经常带有“稳健”“优选”“增强”。&lt;/p&gt;
&lt;p&gt;这些词不能替代持仓分析。真正要看的是基金定期报告、资产比例、行业集中度、久期、回撤和风格变化。&lt;/p&gt;
&lt;h2 id="最小检查清单"&gt;最小检查清单&lt;/h2&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;</description></item><item><title>再平衡规则：什么时候调仓，什么时候不动</title><link>https://caozuohua.github.io/posts/2026-07-07-rebalancing-rules/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-rebalancing-rules/</guid><description>&lt;p&gt;稳健组合不是买完就不管，也不是每天都调。&lt;/p&gt;
&lt;p&gt;再平衡的目的，是让组合回到你原本愿意承担的风险结构。它不是预测市场，也不是追涨杀跌，而是执行事先写好的纪律。&lt;/p&gt;
&lt;p&gt;本文是个人学习记录，不构成投资建议。&lt;/p&gt;
&lt;h2 id="为什么需要再平衡"&gt;为什么需要再平衡&lt;/h2&gt;
&lt;p&gt;假设你的目标配置是 70% 防守资产、30% 权益资产。&lt;/p&gt;
&lt;p&gt;如果权益资产上涨很多，它在组合里的比例可能变成 40%。这时组合的风险已经高于原计划。反过来，如果权益资产下跌很多，比例可能降到 20%，你又可能错过原本计划承担的风险敞口。&lt;/p&gt;
&lt;p&gt;再平衡就是把组合从“市场推着走”拉回“规则控制下”。&lt;/p&gt;
&lt;h2 id="周期再平衡"&gt;周期再平衡&lt;/h2&gt;
&lt;p&gt;周期再平衡是按固定时间检查，例如每月、每季度或每半年。&lt;/p&gt;
&lt;p&gt;它的优点是简单，不需要每天盯盘。缺点是可能在偏离不大时产生不必要操作。&lt;/p&gt;
&lt;p&gt;对个人稳健组合来说，半年一次通常比每天关注更现实。频率太高会增加交易成本和情绪干扰。&lt;/p&gt;
&lt;h2 id="阈值再平衡"&gt;阈值再平衡&lt;/h2&gt;
&lt;p&gt;阈值再平衡是当某类资产偏离目标比例超过一定范围时才操作。&lt;/p&gt;
&lt;p&gt;例如目标比例 30%，允许上下偏离 5 个百分点。只有低于 25% 或高于 35% 时，才考虑调仓。&lt;/p&gt;
&lt;p&gt;阈值再平衡的好处是更贴近风险变化，但需要表格或工具持续计算偏离。&lt;/p&gt;
&lt;h2 id="现金流再平衡"&gt;现金流再平衡&lt;/h2&gt;
&lt;p&gt;现金流再平衡是用新增资金或赎回需求调整比例，而不是频繁卖出已有资产。&lt;/p&gt;
&lt;p&gt;例如权益资产跌了，比例低于目标，新投入资金优先买入权益资产；某类资产涨多了，新资金先补其他类别。这样可以减少交易和税费摩擦。&lt;/p&gt;
&lt;p&gt;对长期个人组合来说，现金流再平衡往往比直接卖出更温和。&lt;/p&gt;
&lt;h2 id="半年复盘流程"&gt;半年复盘流程&lt;/h2&gt;
&lt;p&gt;一个可执行的半年流程：&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;检查未来 6-12 个月是否有大额用钱计划。&lt;/li&gt;
&lt;li&gt;优先用新增资金修正偏离。&lt;/li&gt;
&lt;li&gt;只有偏离超过阈值时才卖出调仓。&lt;/li&gt;
&lt;li&gt;记录本次动作和原因。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;复盘不是写长报告，而是把关键动作留下证据。&lt;/p&gt;
&lt;h2 id="什么时候不动"&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;h2 id="再平衡记录模板"&gt;再平衡记录模板&lt;/h2&gt;
&lt;p&gt;可以用一个最小模板：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;字段&lt;/th&gt;
					&lt;th&gt;内容&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;日期&lt;/td&gt;
					&lt;td&gt;本次复盘日期&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;总资产&lt;/td&gt;
					&lt;td&gt;当前组合金额&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;最大偏离&lt;/td&gt;
					&lt;td&gt;偏离最大的资产类别&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;是否触发阈值&lt;/td&gt;
					&lt;td&gt;是或否&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;操作&lt;/td&gt;
					&lt;td&gt;买入、卖出、暂停、不动&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;原因&lt;/td&gt;
					&lt;td&gt;规则触发或现金流变化&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&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;/p&gt;</description></item><item><title>哪些能力应该内置，哪些应该交给工具</title><link>https://caozuohua.github.io/posts/2026-07-07-built-in-vs-tool-capabilities/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-built-in-vs-tool-capabilities/</guid><description>&lt;p&gt;个人助理智能体的核心不应该越来越大。&lt;/p&gt;
&lt;p&gt;很多能力看起来都值得内置：写文件、查网页、发消息、部署服务、整理知识、生成报告。但核心越大，越难测试、越难替换、越难限制权限。&lt;/p&gt;
&lt;p&gt;更稳的原则是：判断和边界内置，具体动作交给工具。&lt;/p&gt;
&lt;h2 id="应该内置的能力"&gt;应该内置的能力&lt;/h2&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;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="应该交给工具的能力"&gt;应该交给工具的能力&lt;/h2&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;li&gt;生成图片。&lt;/li&gt;
&lt;li&gt;读取知识库。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;工具可以独立替换、禁用和限制权限，不应该让核心直接承担所有细节。&lt;/p&gt;
&lt;h2 id="判断标准"&gt;判断标准&lt;/h2&gt;
&lt;p&gt;可以用三个问题判断：&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;/ol&gt;
&lt;p&gt;如果答案是是，考虑内置。否则优先做成工具或 Skill。&lt;/p&gt;
&lt;h2 id="为什么不要把工具逻辑写进核心"&gt;为什么不要把工具逻辑写进核心&lt;/h2&gt;
&lt;p&gt;工具逻辑变化很快。&lt;/p&gt;
&lt;p&gt;今天用一个 API，明天换另一个 API；今天是本地文件，明天是远程存储。如果把这些细节塞进核心，系统会越来越难维护。&lt;/p&gt;
&lt;p&gt;核心应该负责选择工具、检查权限、记录结果，而不是直接知道每个工具的全部实现。&lt;/p&gt;
&lt;h2 id="最小核心更可靠"&gt;最小核心更可靠&lt;/h2&gt;
&lt;p&gt;个人助理长期可用，靠的不是核心什么都会，而是边界稳定。&lt;/p&gt;
&lt;p&gt;一个小核心加一组可替换工具，比一个巨大控制器更容易调试、审计和恢复。&lt;/p&gt;</description></item><item><title>基金筛选清单：从收益率退后一步</title><link>https://caozuohua.github.io/posts/2026-07-07-fund-screening-checklist/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-fund-screening-checklist/</guid><description>&lt;p&gt;基金筛选最容易掉进一个坑：从排行榜开始。&lt;/p&gt;
&lt;p&gt;排行榜告诉你过去一段时间谁涨得好，但不告诉你这段收益来自什么风险，也不告诉你它是否适合你的组合。稳健理财需要从收益率退后一步，先看基金在组合里的角色。&lt;/p&gt;
&lt;p&gt;本文是个人学习记录，不构成投资建议。&lt;/p&gt;
&lt;h2 id="第一步看底层资产"&gt;第一步：看底层资产&lt;/h2&gt;
&lt;p&gt;先弄清楚基金到底买了什么。&lt;/p&gt;
&lt;p&gt;名字里写“稳健”“精选”“增强”，都不能替代底层资产分析。债基要看利率债、信用债、久期和杠杆；二级债要看权益仓位；权益基金要看行业集中度、风格和持仓换手。&lt;/p&gt;
&lt;p&gt;如果你说不清它赚的是什么钱，也就说不清它亏的时候该不该继续拿。&lt;/p&gt;
&lt;h2 id="第二步看最大回撤"&gt;第二步：看最大回撤&lt;/h2&gt;
&lt;p&gt;收益率是结果，回撤是过程。&lt;/p&gt;
&lt;p&gt;稳健组合尤其要看基金在压力环境中的表现。近一年收益好，但最大回撤远超你的承受范围，这类产品就不适合放在防守仓里。&lt;/p&gt;
&lt;p&gt;看回撤时不要只看绝对数字，还要看修复时间。一个跌得深、修复慢的产品，会长期占用你的心理和资金弹性。&lt;/p&gt;
&lt;h2 id="第三步看规模和流动性"&gt;第三步：看规模和流动性&lt;/h2&gt;
&lt;p&gt;规模太小的基金可能面临清盘风险，也可能在流动性压力下更难处理赎回。&lt;/p&gt;
&lt;p&gt;规模太大也不一定好，尤其是主动管理基金，规模增长可能影响策略执行。稳健筛选不是追求最大规模，而是避免明显脆弱的规模状态。&lt;/p&gt;
&lt;h2 id="第四步看费率"&gt;第四步：看费率&lt;/h2&gt;
&lt;p&gt;费率是确定发生的成本。&lt;/p&gt;
&lt;p&gt;管理费、托管费、销售服务费、申购赎回费都会影响长期收益。对低收益、低波动产品来说，费率差异尤其重要，因为它直接吃掉本来就不高的收益空间。&lt;/p&gt;
&lt;h2 id="第五步看经理稳定性"&gt;第五步：看经理稳定性&lt;/h2&gt;
&lt;p&gt;主动管理基金要看基金经理是否稳定。&lt;/p&gt;
&lt;p&gt;如果历史业绩主要来自上一任经理，新经理接手后策略已经变化，就不能简单沿用旧数据。基金经理变更、投研团队变化和策略说明变化，都应该进入复盘。&lt;/p&gt;
&lt;h2 id="第六步看风格漂移"&gt;第六步：看风格漂移&lt;/h2&gt;
&lt;p&gt;风格漂移是稳健组合的大敌。&lt;/p&gt;
&lt;p&gt;你以为买的是低波动资产，结果它为了追收益加大权益暴露；你以为买的是均衡基金，结果集中押注单一行业。这样的产品会让组合风险结构失真。&lt;/p&gt;
&lt;p&gt;筛选时要对比基金合同、定期报告和实际持仓，看它是否长期保持自己的角色。&lt;/p&gt;
&lt;h2 id="可复用筛选清单"&gt;可复用筛选清单&lt;/h2&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;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;如果它跌 5% 或 10%，我是否知道处理规则？&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="最后再看收益率"&gt;最后再看收益率&lt;/h2&gt;
&lt;p&gt;收益率不是不能看，而是应该最后看。&lt;/p&gt;
&lt;p&gt;先确认角色、风险和可执行性，再比较收益。这样筛出来的产品未必最亮眼，但更可能适合长期持有。&lt;/p&gt;
&lt;p&gt;稳健组合真正需要的，不是单只基金短期跑赢，而是整个组合能按规则运行。&lt;/p&gt;</description></item><item><title>如何识别一个组合是不是假稳健</title><link>https://caozuohua.github.io/posts/2026-07-07-fake-stable-portfolio-signals/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-fake-stable-portfolio-signals/</guid><description>&lt;p&gt;有些组合看起来很稳健，实际并不稳健。&lt;/p&gt;
&lt;p&gt;它可能持有很多产品，名字里也有“稳健”“低波”“固收+”，但真实风险集中在同一类资产、同一种风格或同一个宏观假设上。这就是假稳健。&lt;/p&gt;
&lt;p&gt;本文不构成投资建议。&lt;/p&gt;
&lt;h2 id="信号一产品很多但风险来源单一"&gt;信号一：产品很多，但风险来源单一&lt;/h2&gt;
&lt;p&gt;组合里有 10 只基金，不代表分散。&lt;/p&gt;
&lt;p&gt;如果它们都重仓同一类债券、同一批高股息股票或同一种风格因子，真正的风险并没有分散，只是包装变多了。&lt;/p&gt;
&lt;p&gt;分散应该看底层资产，而不是产品数量。&lt;/p&gt;
&lt;h2 id="信号二只展示收益不展示回撤"&gt;信号二：只展示收益，不展示回撤&lt;/h2&gt;
&lt;p&gt;稳健组合必须回答最大回撤。&lt;/p&gt;
&lt;p&gt;如果一个组合只说年化收益、胜率、历史表现，却不说最差时亏多少、多久修复，就还没有完成风险说明。&lt;/p&gt;
&lt;h2 id="信号三把短期数据当长期能力"&gt;信号三：把短期数据当长期能力&lt;/h2&gt;
&lt;p&gt;某类资产在特定年份表现好，不代表长期适合防守。&lt;/p&gt;
&lt;p&gt;假稳健经常把最近一段顺风期包装成长期规律。识别方法是拉长周期，看不同市场环境下的表现。&lt;/p&gt;
&lt;h2 id="信号四流动性被忽略"&gt;信号四：流动性被忽略&lt;/h2&gt;
&lt;p&gt;组合看起来收益稳定，但如果封闭期长、赎回慢、极端情况下流动性差，就不适合承担短期资金用途。&lt;/p&gt;
&lt;p&gt;稳健必须包括流动性。&lt;/p&gt;
&lt;h2 id="信号五没有调仓规则"&gt;信号五：没有调仓规则&lt;/h2&gt;
&lt;p&gt;真正的稳健组合应该知道什么时候不动、什么时候调仓。&lt;/p&gt;
&lt;p&gt;如果组合只能解释“为什么买”，不能解释“什么情况下卖、减、补、不动”，它就还不是系统。&lt;/p&gt;
&lt;h2 id="识别模板"&gt;识别模板&lt;/h2&gt;
&lt;p&gt;可以用五个问题检查：&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;是否有明确再平衡规则？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;答不清楚，就不要把它称为稳健。&lt;/p&gt;</description></item><item><title>工具调用失败时，Agent 应该怎样降级</title><link>https://caozuohua.github.io/posts/2026-07-07-agent-tool-failure-degradation/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-agent-tool-failure-degradation/</guid><description>&lt;p&gt;Agent 的可靠性，往往不是看它成功时有多聪明，而是看它失败时怎么处理。&lt;/p&gt;
&lt;p&gt;工具调用失败很常见：路径不存在、参数错了、网络超时、权限不足、接口返回格式变化。个人助理必须把失败当成正常路径，而不是异常意外。&lt;/p&gt;
&lt;h2 id="不要假装成功"&gt;不要假装成功&lt;/h2&gt;
&lt;p&gt;最坏的失败方式，是工具失败后继续输出成功结论。&lt;/p&gt;
&lt;p&gt;例如构建命令失败，却说“已部署”；文件没写入，却说“已保存”；搜索不到资料，却编一个结果。这会直接破坏信任。&lt;/p&gt;
&lt;p&gt;Agent 必须把工具返回结果当成事实来源，而不是只根据意图推断结果。&lt;/p&gt;
&lt;h2 id="第一步识别失败类型"&gt;第一步：识别失败类型&lt;/h2&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;网络错误：超时、DNS、API 不可达。&lt;/li&gt;
&lt;li&gt;业务错误：接口返回成功但结果不符合预期。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;分类之后，才知道能不能自动恢复。&lt;/p&gt;
&lt;h2 id="第二步有限重试"&gt;第二步：有限重试&lt;/h2&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;重试次数固定，例如 1-2 次。&lt;/li&gt;
&lt;li&gt;每次重试记录原因。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="第三步换工具或换路径"&gt;第三步：换工具或换路径&lt;/h2&gt;
&lt;p&gt;如果失败来自工具不可用，可以尝试替代路径。&lt;/p&gt;
&lt;p&gt;例如 &lt;code&gt;rg&lt;/code&gt; 不可用时用 PowerShell 搜索；Hugo 不在 PATH 时使用临时下载的二进制；网页无法访问时改用本地文件或缓存。&lt;/p&gt;
&lt;p&gt;换工具前要保证语义一致。不能因为搜索失败，就把猜测当成搜索结果。&lt;/p&gt;
&lt;h2 id="第四步询问用户"&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;h2 id="第五步记录失败"&gt;第五步：记录失败&lt;/h2&gt;
&lt;p&gt;失败应该留下记录。&lt;/p&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;li&gt;错误信息是什么。&lt;/li&gt;
&lt;li&gt;是否重试。&lt;/li&gt;
&lt;li&gt;最终是否需要人工处理。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些记录以后可以变成 QPC 知识或维护手册。&lt;/p&gt;
&lt;h2 id="降级决策表"&gt;降级决策表&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;失败类型&lt;/th&gt;
					&lt;th&gt;默认处理&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;参数错误&lt;/td&gt;
					&lt;td&gt;修正参数后最多重试一次&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;权限错误&lt;/td&gt;
					&lt;td&gt;停止并请求人工处理&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;环境缺失&lt;/td&gt;
					&lt;td&gt;查找替代工具或说明安装需求&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;网络超时&lt;/td&gt;
					&lt;td&gt;有限重试&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;写入不确定&lt;/td&gt;
					&lt;td&gt;停止，检查状态后再继续&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&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;/p&gt;</description></item><item><title>打造精简个人助理智能体：系列总览</title><link>https://caozuohua.github.io/posts/2026-07-07-minimal-personal-assistant-agent/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-minimal-personal-assistant-agent/</guid><description>&lt;p&gt;个人助理智能体最容易走偏的地方，是一开始就追求“大而全”。&lt;/p&gt;
&lt;p&gt;真正长期可用的个人助理，应该先做到小、稳、可维护：能记住关键偏好，能调用少数可靠工具，能在失败时留下线索，能把高风险动作交还给人确认。&lt;/p&gt;
&lt;p&gt;这组文章记录我围绕 Hermes-lite、QPC、Skill 路由和个人知识系统搭建精简助理智能体的过程。&lt;/p&gt;
&lt;h2 id="系列目标"&gt;系列目标&lt;/h2&gt;
&lt;p&gt;这个系列关注四个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;个人助理智能体的最小可用架构是什么。&lt;/li&gt;
&lt;li&gt;怎么让记忆、知识库、工具调用和任务状态互相配合。&lt;/li&gt;
&lt;li&gt;怎么在低资源 VPS 上稳定运行，而不是堆复杂组件。&lt;/li&gt;
&lt;li&gt;怎么处理幻觉、工具失败、崩溃、多 Agent 协调和治理边界。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;目标不是复刻一个复杂平台，而是形成一套个人可长期维护的系统。&lt;/p&gt;
&lt;h2 id="当前已发布文章"&gt;当前已发布文章&lt;/h2&gt;
&lt;h3 id="架构与记忆"&gt;架构与记忆&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-why-personal-agent-should-be-minimal/"&gt;为什么个人助理智能体要精简&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-minimal-personal-agent-architecture/"&gt;个人助理智能体的最小可用架构&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-built-in-vs-tool-capabilities/"&gt;哪些能力应该内置，哪些应该交给工具&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-05-06-agent-diary-series-1/"&gt;Agent 日记系列（一）：AI 助手协作痛点与进化实践&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2024-04-05-agent-diary-series-2-controller-lifecycle/"&gt;Agent 日记系列（二）：探秘 Agent 的大脑中枢：主控制器与生命周期&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2024-04-12-agent-diary-series-3-self-evolution-dynamic-tools/"&gt;Agent 日记系列（三）：揭秘 Agent 的自我进化：动态工具创建与管理&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2024-04-20-agent-diary-series-4-memory-persistence/"&gt;Agent 日记系列（四）：构建 Agent 的记忆宫殿：持久化存储系统解析&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-what-personal-agent-should-remember/"&gt;个人助理需要记住什么，不需要记住什么&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-qpc-four-fields-for-personal-agent/"&gt;QPC 四字段如何支撑个人知识管理&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-five-layer-memory-from-context-to-preference/"&gt;记忆系统的五层结构：从上下文到长期偏好&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-01-agent-memory-5-layer-architecture/"&gt;Agent 的记忆：Hermes-Lite 如何用 5 层结构解决「鱼的难题」&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="hermes-lite-与部署"&gt;Hermes-lite 与部署&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-06-24-hermes-lite-trimming-guide/"&gt;Hermes-lite 裁剪指南：在 1GB VPS 上跑轻量 AI Agent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-06-25-hermes-lite-pitfalls-deep-dive/"&gt;Hermes-lite 裁剪实战：7 类典型坑与解法&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-one-gb-vps-agent-deployment-checklist/"&gt;1GB VPS 上跑个人助理智能体的部署清单&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-agent-secrets-panels-gateways-security/"&gt;个人助理智能体的密钥、面板和网关安全&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-06-29-vps-security-hardening/"&gt;VPS 安全加固：从 0 到三层防御实战记录&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="知识库与路由"&gt;知识库与路由&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-06-29-qpc-minimal-knowledge-base/"&gt;QPC 极简设计：我用 4 个字段管理 200 条知识&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-06-29-skill-routing-vs-react/"&gt;Agent 系列日记 5：为什么 Skill 路由比 ReAct 控制器更适合个人助理&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-skill-routing-reduces-agent-uncertainty/"&gt;Skill 路由如何降低个人助理的不确定性&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-high-risk-tool-confirmation-mechanism/"&gt;高风险工具的权限边界和确认机制&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="可靠性专题"&gt;可靠性专题&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-01-agent-hallucination-deep-dive/"&gt;智能体问题：幻觉与事实错误&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-01-agent-tool-call-failure/"&gt;智能体问题：工具调用失败&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-agent-tool-failure-degradation/"&gt;工具调用失败时，Agent 应该怎样降级&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-01-agent-reliability-crash/"&gt;智能体问题：可靠性与中途崩溃&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-01-agent-multi-agent-coordination/"&gt;智能体问题：多 Agent 协调&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-01-agent-governance-accountability/"&gt;智能体问题：治理与问责&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-01-agent-uncertainty-planning/"&gt;智能体问题：不确定性与规划失效&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-personal-agent-failure-taxonomy/"&gt;个人助理智能体的失败分类表&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-when-multi-agent-is-needed/"&gt;什么时候需要多 Agent，什么时候不需要&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-from-hallucination-to-accountability/"&gt;从幻觉到问责：个人助理的可靠性边界&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-personal-agent-permission-boundaries/"&gt;个人助理智能体的权限边界和确认机制&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-agent-logs-backups-upgrades-maintenance/"&gt;日志、备份和升级：长期运行的维护手册&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="建议阅读框架"&gt;建议阅读框架&lt;/h2&gt;
&lt;h3 id="1-最小架构"&gt;1. 最小架构&lt;/h3&gt;
&lt;p&gt;先回答个人助理需要哪些最小组件：入口、模型路由、技能路由、工具层、记忆层、日志和人工确认。&lt;/p&gt;</description></item><item><title>收益、回撤、波动率和流动性：四个最容易混淆的概念</title><link>https://caozuohua.github.io/posts/2026-07-07-risk-return-drawdown-liquidity/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-risk-return-drawdown-liquidity/</guid><description>&lt;p&gt;稳健理财里最常见的误区，是只看收益率。&lt;/p&gt;
&lt;p&gt;收益率当然重要，但它不是单独存在的。你真正承受的是收益、回撤、波动率和流动性的组合。如果只拿“年化 5%”当目标，却不问中间可能亏多少、亏多久、急用钱时能不能取出来，这个目标就不完整。&lt;/p&gt;
&lt;p&gt;本文只做概念梳理，不构成投资建议。&lt;/p&gt;
&lt;h2 id="收益结果不是承诺"&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;/ul&gt;
&lt;p&gt;同样是年化 5%，如果一个组合最大回撤 2%，另一个最大回撤 20%，它们对个人生活的影响完全不同。&lt;/p&gt;
&lt;h2 id="回撤你必须熬过去的亏损"&gt;回撤：你必须熬过去的亏损&lt;/h2&gt;
&lt;p&gt;回撤是从阶段高点跌到阶段低点的幅度。&lt;/p&gt;
&lt;p&gt;回撤的现实含义不是表格里的数字，而是你账户里真实减少的钱。100 万组合回撤 10%，就是账面少 10 万。你能不能不慌，取决于这笔钱是不是短期要用，也取决于你在买入前是否预期过这种情况。&lt;/p&gt;
&lt;p&gt;稳健配置最应该先定义最大可接受回撤。不是市场会不会跌，而是跌到什么程度你还能按规则行动。&lt;/p&gt;
&lt;h2 id="波动率过程中的颠簸"&gt;波动率：过程中的颠簸&lt;/h2&gt;
&lt;p&gt;波动率描述价格上下变化的剧烈程度。&lt;/p&gt;
&lt;p&gt;一个高波动资产不一定长期收益差，但它会更频繁地考验执行力。对很多人来说，真正的问题不是数学上的亏损，而是情绪上的中断：涨的时候追高，跌的时候割肉。&lt;/p&gt;
&lt;p&gt;所以稳健组合不应该只问“长期收益高不高”，还要问“这个波动我能不能拿得住”。&lt;/p&gt;
&lt;h2 id="流动性需要用钱时能不能拿出来"&gt;流动性：需要用钱时能不能拿出来&lt;/h2&gt;
&lt;p&gt;流动性是资金变成可用现金的能力。&lt;/p&gt;
&lt;p&gt;流动性不足会把好资产变成坏体验。比如一笔三个月后要用的钱，即使买了长期看不错的资产，也可能因为短期下跌或赎回限制被迫卖出。&lt;/p&gt;
&lt;p&gt;现金和货币基金的作用不是收益最大化，而是避免被迫在错误时间卖出风险资产。&lt;/p&gt;
&lt;h2 id="四个概念要一起看"&gt;四个概念要一起看&lt;/h2&gt;
&lt;p&gt;稳健理财不是选最高收益，而是在四个问题之间做平衡：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;问题&lt;/th&gt;
					&lt;th&gt;关注点&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;能赚多少&lt;/td&gt;
					&lt;td&gt;收益&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;最难受时亏多少&lt;/td&gt;
					&lt;td&gt;回撤&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;持有过程有多颠簸&lt;/td&gt;
					&lt;td&gt;波动率&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&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;/p&gt;
&lt;h2 id="风险自检表"&gt;风险自检表&lt;/h2&gt;
&lt;p&gt;在买入任何基金或配置组合前，可以先回答这份清单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这笔钱最早什么时候可能要用？&lt;/li&gt;
&lt;li&gt;如果账面亏 5%，我会怎么做？&lt;/li&gt;
&lt;li&gt;如果账面亏 10%，我会怎么做？&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;li&gt;这笔配置是否会影响日常现金流？&lt;/li&gt;
&lt;li&gt;我是否把单一产品当成了完整组合？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果这些问题答不上来，先不要急着买。稳健理财的第一步，是承认自己真正能承受的风险。&lt;/p&gt;</description></item><item><title>日志、备份和升级：长期运行的维护手册</title><link>https://caozuohua.github.io/posts/2026-07-07-agent-logs-backups-upgrades-maintenance/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-agent-logs-backups-upgrades-maintenance/</guid><description>&lt;p&gt;个人助理智能体不是写完就结束。&lt;/p&gt;
&lt;p&gt;只要它长期运行，就会遇到模型变更、API 失败、服务器重启、配置漂移、磁盘满、日志爆炸、密钥过期和工具失效。维护手册的价值，是让这些问题不靠临场发挥。&lt;/p&gt;
&lt;h2 id="日志先能看见问题"&gt;日志：先能看见问题&lt;/h2&gt;
&lt;p&gt;日志至少要回答：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户发了什么请求。&lt;/li&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;/li&gt;
&lt;/ul&gt;
&lt;p&gt;日志不需要记录完整隐私内容和密钥，但要足够支持排查。&lt;/p&gt;
&lt;h2 id="日志检查频率"&gt;日志检查频率&lt;/h2&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;每月：把高频失败整理成 QPC 或修复任务。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;日志如果只写不看，就没有维护价值。&lt;/p&gt;
&lt;h2 id="备份先备配置和记忆"&gt;备份：先备配置和记忆&lt;/h2&gt;
&lt;p&gt;个人助理最重要的资产通常不是程序本身，而是配置、密钥引用、知识库和长期记忆。&lt;/p&gt;
&lt;p&gt;备份优先级：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;配置文件。&lt;/li&gt;
&lt;li&gt;知识库或记忆数据库。&lt;/li&gt;
&lt;li&gt;自定义 Skill。&lt;/li&gt;
&lt;li&gt;部署脚本。&lt;/li&gt;
&lt;li&gt;关键日志样本。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;密钥本身要按安全方式保存，不应该明文塞进普通仓库。&lt;/p&gt;
&lt;h2 id="恢复演练"&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;h2 id="升级小步走"&gt;升级：小步走&lt;/h2&gt;
&lt;p&gt;升级模型、依赖或系统服务前，先看影响范围。&lt;/p&gt;
&lt;p&gt;建议流程：&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;观察日志。&lt;/li&gt;
&lt;li&gt;保留回滚路径。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;不要在没有备份的情况下升级关键组件。&lt;/p&gt;
&lt;h2 id="安全检查"&gt;安全检查&lt;/h2&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;li&gt;依赖是否有明显安全更新。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;个人助理越连接真实世界，越需要定期检查边界。&lt;/p&gt;
&lt;h2 id="人工接管流程"&gt;人工接管流程&lt;/h2&gt;
&lt;p&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;列出已完成和未完成动作。&lt;/li&gt;
&lt;li&gt;等待人工决定是否继续。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这比“自动修复一切”更可靠。&lt;/p&gt;
&lt;h2 id="维护手册的目标"&gt;维护手册的目标&lt;/h2&gt;
&lt;p&gt;维护手册不是为了把系统变复杂，而是为了让未来的你不用猜。&lt;/p&gt;</description></item><item><title>智能体开发者的个人稳健理财学习和工具：系列总览</title><link>https://caozuohua.github.io/posts/2026-07-07-personal-finance-for-agent-developers/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-personal-finance-for-agent-developers/</guid><description>&lt;p&gt;这组文章不是投资建议，也不是“用 AI 帮你预测市场”的故事。&lt;/p&gt;
&lt;p&gt;它更像一个面向智能体开发者的个人理财工程化笔记：把收益、风险、回撤、流动性、再平衡这些概念拆开，用清晰的规则和工具降低决策噪音。&lt;/p&gt;
&lt;h2 id="系列目标"&gt;系列目标&lt;/h2&gt;
&lt;p&gt;我希望这个系列解决三个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;怎么建立一套足够稳健、能长期执行的个人资产配置框架。&lt;/li&gt;
&lt;li&gt;怎么把基金、ETF、现金管理和再平衡变成可复盘的流程。&lt;/li&gt;
&lt;li&gt;怎么让 AI Agent 辅助阅读、整理、提醒和复盘，而不是替代判断。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;核心原则是：先稳健，再自动化；先理解风险，再追求收益；先建立规则，再接入工具。&lt;/p&gt;
&lt;h2 id="当前已发布文章"&gt;当前已发布文章&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-why-agent-devs-need-finance-system/"&gt;为什么智能体开发者需要自己的稳健理财系统&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-risk-return-drawdown-liquidity/"&gt;收益、回撤、波动率和流动性：四个最容易混淆的概念&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-sleep-well-asset-allocation-goal/"&gt;从年化收益到能睡着觉的资产配置目标&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-asset-roles-in-stable-portfolio/"&gt;稳健组合里的每类资产到底负责什么&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-fund-screening-checklist/"&gt;基金筛选清单：从收益率退后一步&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-bond-fund-dividend-low-vol-misunderstandings/"&gt;债基、二级债、红利低波 ETF 的常见误区&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-fake-stable-portfolio-signals/"&gt;如何识别一个组合是不是假稳健&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-cash-vs-risk-assets/"&gt;什么时候该持有现金，什么时候该承担波动&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-allocation-for-10w-50w-100w/"&gt;10w、50w、100w 三档资金的配置思路&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-rebalancing-rules/"&gt;再平衡规则：什么时候调仓，什么时候不动&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-monthly-portfolio-review-template/"&gt;月度复盘模板：只看少数关键指标&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-market-crash-action-plan/"&gt;极端行情预案：下跌时按什么规则行动&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-agent-assisted-portfolio-review/"&gt;让 Agent 帮你读公告、整理持仓和生成复盘&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/fund-portfolio-analyzer/"&gt;100w 稳健型基金组合 · 执行手册&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-minimal-portfolio-spreadsheet-fields/"&gt;用表格管理个人基金组合的最小字段&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-personal-finance-tool-permission-boundary/"&gt;个人理财工具的权限边界：什么能自动化，什么必须人工确认&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-personal-finance-tool-maintenance/"&gt;个人稳健理财工具维护手册&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中《100w 稳健型基金组合 · 执行手册》可以看作系列里的实战样例：给定资金规模、收益目标和回撤约束之后，如何拆成具体配置、执行日历和再平衡规则。&lt;/p&gt;
&lt;h2 id="建议阅读框架"&gt;建议阅读框架&lt;/h2&gt;
&lt;h3 id="1-认知篇先理解风险"&gt;1. 认知篇：先理解风险&lt;/h3&gt;
&lt;p&gt;稳健理财的第一步不是选产品，而是确认自己承受什么类型的波动。&lt;/p&gt;
&lt;p&gt;已发布文章：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-why-agent-devs-need-finance-system/"&gt;为什么智能体开发者需要自己的稳健理财系统&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-risk-return-drawdown-liquidity/"&gt;收益、回撤、波动率和流动性：四个最容易混淆的概念&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-sleep-well-asset-allocation-goal/"&gt;从年化收益到能睡着觉的资产配置目标&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-配置篇把钱分到不同篮子里"&gt;2. 配置篇：把钱分到不同篮子里&lt;/h3&gt;
&lt;p&gt;这一部分关注现金、货币基金、短债、中长债、二级债、红利低波、宽基指数、黄金和海外资产的角色。&lt;/p&gt;
&lt;p&gt;已发布文章：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-asset-roles-in-stable-portfolio/"&gt;稳健组合里的每类资产到底负责什么&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-cash-vs-risk-assets/"&gt;什么时候该持有现金，什么时候该承担波动&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-allocation-for-10w-50w-100w/"&gt;10w、50w、100w 三档资金的配置思路&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-筛选篇看懂基金而不是追逐排行榜"&gt;3. 筛选篇：看懂基金，而不是追逐排行榜&lt;/h3&gt;
&lt;p&gt;基金筛选不应该只看近一年收益。更重要的是看底层资产、久期、回撤、规模、费用、经理稳定性和风格漂移。&lt;/p&gt;
&lt;p&gt;已发布文章：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-fund-screening-checklist/"&gt;基金筛选清单：从收益率退后一步&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-bond-fund-dividend-low-vol-misunderstandings/"&gt;债基、二级债、红利低波 ETF 的常见误区&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://caozuohua.github.io/posts/2026-07-07-fake-stable-portfolio-signals/"&gt;如何识别一个组合是不是假稳健&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-执行篇把计划变成流程"&gt;4. 执行篇：把计划变成流程&lt;/h3&gt;
&lt;p&gt;稳健组合真正难的地方通常不是“知道买什么”，而是能不能在半年、一年、三年之后继续按规则执行。&lt;/p&gt;</description></item><item><title>月度复盘模板：只看少数关键指标</title><link>https://caozuohua.github.io/posts/2026-07-07-monthly-portfolio-review-template/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-monthly-portfolio-review-template/</guid><description>&lt;p&gt;月度复盘不是每天盯盘的升级版。&lt;/p&gt;
&lt;p&gt;它的目标是确认组合是否仍然按规则运行，而不是解释每一天涨跌。稳健理财的复盘应该少看噪音，多看关键指标。&lt;/p&gt;
&lt;p&gt;本文不构成投资建议。&lt;/p&gt;
&lt;h2 id="只看五类信息"&gt;只看五类信息&lt;/h2&gt;
&lt;p&gt;月度复盘可以只看：&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;是否触发调仓或人工确认。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这五类信息足够支持大多数稳健组合维护。&lt;/p&gt;
&lt;h2 id="不要复盘市场情绪"&gt;不要复盘市场情绪&lt;/h2&gt;
&lt;p&gt;新闻、观点和短期涨跌很容易让复盘变形。&lt;/p&gt;
&lt;p&gt;如果每次复盘都变成判断下个月涨跌，系统就会被情绪带走。月度复盘应该围绕自己的规则，而不是围绕市场叙事。&lt;/p&gt;
&lt;h2 id="模板"&gt;模板&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;复盘月份：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;总资产：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;现金/类现金比例：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;防守资产比例：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;权益资产比例：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;最大偏离项：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;本月最大回撤：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;是否触发再平衡：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;是否有大额用钱计划变化：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;本月动作：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;下月关注：
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="复盘结论只要三种"&gt;复盘结论只要三种&lt;/h2&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;不要为了复盘而制造动作。&lt;/p&gt;
&lt;h2 id="agent-可以做什么"&gt;Agent 可以做什么&lt;/h2&gt;
&lt;p&gt;Agent 可以把持仓表转成复盘草稿，计算偏离，列出异常项。&lt;/p&gt;
&lt;p&gt;但最终结论必须由人确认。尤其是“执行”类动作，需要回到资金用途和风险承受能力，而不是只看模型输出。&lt;/p&gt;
&lt;p&gt;复盘越简单，越容易长期坚持。&lt;/p&gt;</description></item><item><title>极端行情预案：下跌时按什么规则行动</title><link>https://caozuohua.github.io/posts/2026-07-07-market-crash-action-plan/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-market-crash-action-plan/</guid><description>&lt;p&gt;下跌时最难做决定。&lt;/p&gt;
&lt;p&gt;不是因为信息不够，而是因为情绪太强。极端行情预案的价值，就是在平静时写下规则，避免在恐慌时临时发挥。&lt;/p&gt;
&lt;p&gt;本文是个人学习记录，不构成投资建议。&lt;/p&gt;
&lt;h2 id="先定义下跌级别"&gt;先定义下跌级别&lt;/h2&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;不同级别对应不同动作。&lt;/p&gt;
&lt;h2 id="轻微波动不动"&gt;轻微波动：不动&lt;/h2&gt;
&lt;p&gt;如果组合仍在预设区间内，最好的动作通常是不动。&lt;/p&gt;
&lt;p&gt;不动不是忽视风险，而是承认波动本来就在计划内。稳健组合不应该因为正常波动改变结构。&lt;/p&gt;
&lt;h2 id="明显回撤检查规则"&gt;明显回撤：检查规则&lt;/h2&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;/p&gt;
&lt;h2 id="极端回撤保留生存能力"&gt;极端回撤：保留生存能力&lt;/h2&gt;
&lt;p&gt;如果回撤超过承受范围，先保护现金流和生活计划。&lt;/p&gt;
&lt;p&gt;这时不应该盲目补仓，也不应该因为恐慌一次性清仓。更好的做法是暂停新增风险、检查现金垫、分批处理，并记录决策理由。&lt;/p&gt;
&lt;h2 id="预案模板"&gt;预案模板&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;组合最大可接受回撤：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;轻微波动区间：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;明显回撤区间：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;极端回撤区间：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;每个区间的动作：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;是否允许补仓：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;补仓资金来源：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;必须停止的动作：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;需要人工确认的动作：
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="预案要提前写"&gt;预案要提前写&lt;/h2&gt;
&lt;p&gt;下跌时不要重新设计系统。&lt;/p&gt;
&lt;p&gt;极端行情真正考验的不是预测能力，而是是否提前知道：哪些钱不能动，哪些风险可以继续承担，哪些动作必须停下来。&lt;/p&gt;</description></item><item><title>用表格管理个人基金组合的最小字段</title><link>https://caozuohua.github.io/posts/2026-07-07-minimal-portfolio-spreadsheet-fields/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-minimal-portfolio-spreadsheet-fields/</guid><description>&lt;p&gt;个人基金组合不一定需要专业系统。&lt;/p&gt;
&lt;p&gt;一个维护得好的简单表格，往往比一个字段很多但没人更新的复杂工具更有用。关键是字段少、含义清楚、能支持复盘。&lt;/p&gt;
&lt;p&gt;本文不构成投资建议。&lt;/p&gt;
&lt;h2 id="最小字段"&gt;最小字段&lt;/h2&gt;
&lt;p&gt;我会从八个字段开始：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;字段&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;名称&lt;/td&gt;
					&lt;td&gt;基金、ETF 或现金账户&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;类别&lt;/td&gt;
					&lt;td&gt;现金、货基、短债、二级债、权益、黄金&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;当前金额&lt;/td&gt;
					&lt;td&gt;最新金额&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;当前比例&lt;/td&gt;
					&lt;td&gt;当前金额 / 总资产&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;目标比例&lt;/td&gt;
					&lt;td&gt;配置计划里的目标&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;偏离值&lt;/td&gt;
					&lt;td&gt;当前比例 - 目标比例&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;处理规则&lt;/td&gt;
					&lt;td&gt;不动、观察、补、减&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&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;/p&gt;
&lt;h2 id="不要一开始就加太多字段"&gt;不要一开始就加太多字段&lt;/h2&gt;
&lt;p&gt;过多字段会增加维护摩擦。&lt;/p&gt;
&lt;p&gt;例如日涨跌、近一年排名、夏普比率、最大回撤、经理任期、费率都可能有用，但不一定每月都要手工维护。可以放在单独的观察表，而不是核心持仓表。&lt;/p&gt;
&lt;h2 id="让公式负责计算"&gt;让公式负责计算&lt;/h2&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;/p&gt;
&lt;h2 id="agent-的位置"&gt;Agent 的位置&lt;/h2&gt;
&lt;p&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;但表格结构必须先稳定，否则 Agent 也只能跟着混乱。&lt;/p&gt;
&lt;h2 id="最小系统优先"&gt;最小系统优先&lt;/h2&gt;
&lt;p&gt;好的组合表不是数据最多，而是能回答四个问题：&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;/ol&gt;
&lt;p&gt;能稳定回答这四个问题，就够用了。&lt;/p&gt;</description></item><item><title>稳健组合里的每类资产到底负责什么</title><link>https://caozuohua.github.io/posts/2026-07-07-asset-roles-in-stable-portfolio/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-asset-roles-in-stable-portfolio/</guid><description>&lt;p&gt;稳健组合不是把几个“看起来不错”的产品拼在一起。&lt;/p&gt;
&lt;p&gt;更好的方式是先问：每类资产在组合里负责什么。只有角色清楚，后面才谈得上比例、再平衡和复盘。&lt;/p&gt;
&lt;p&gt;本文是个人学习记录，不构成投资建议。&lt;/p&gt;
&lt;h2 id="现金负责生存空间"&gt;现金：负责生存空间&lt;/h2&gt;
&lt;p&gt;现金的主要作用不是收益，而是选择权。&lt;/p&gt;
&lt;p&gt;它让你在临时用钱、收入中断或市场下跌时不用被迫卖出其他资产。现金比例太高会拖累长期收益，但现金比例太低会让组合失去韧性。&lt;/p&gt;
&lt;p&gt;对普通个人来说，现金通常应该覆盖几个月到一年的必要支出。具体比例取决于收入稳定性、家庭责任和未来支出计划。&lt;/p&gt;
&lt;h2 id="货币基金负责短期停泊"&gt;货币基金：负责短期停泊&lt;/h2&gt;
&lt;p&gt;货币基金适合放短期不用但随时可能调用的钱。&lt;/p&gt;
&lt;p&gt;它的角色接近现金管理工具：收益通常不高，但流动性和波动控制较好。不要把货币基金当成长期收益来源，它更像组合的缓冲垫。&lt;/p&gt;
&lt;h2 id="短债基金负责低波动防守"&gt;短债基金：负责低波动防守&lt;/h2&gt;
&lt;p&gt;短债基金通常承担比货币基金略高一点的收益目标，同时保持较低波动。&lt;/p&gt;
&lt;p&gt;需要注意的是，短债不是无风险资产。它仍然可能受到利率、信用和流动性影响。稳健组合里配置短债，是为了提高现金管理效率，而不是追逐高收益。&lt;/p&gt;
&lt;h2 id="中长债和二级债负责适度收益增强"&gt;中长债和二级债：负责适度收益增强&lt;/h2&gt;
&lt;p&gt;中长债对利率变化更敏感，二级债可能含有权益仓位或可转债仓位，波动会更明显。&lt;/p&gt;
&lt;p&gt;它们在组合里的角色是收益增强，但也会带来回撤。配置这类资产时，要重点看久期、信用风险、权益暴露和历史回撤，而不是只看近一年收益。&lt;/p&gt;
&lt;h2 id="红利低波负责权益暴露的缓冲版本"&gt;红利低波：负责权益暴露的缓冲版本&lt;/h2&gt;
&lt;p&gt;红利低波类 ETF 或基金，本质上仍然有权益风险。&lt;/p&gt;
&lt;p&gt;它们的作用不是替代债券，而是在权益资产中选择相对防守的表达方式。红利、低估值和低波动因子可能降低组合剧烈波动，但不能消除下跌。&lt;/p&gt;
&lt;p&gt;在稳健组合里，红利低波适合承担“有限进攻”的角色。&lt;/p&gt;
&lt;h2 id="宽基指数负责长期增长"&gt;宽基指数：负责长期增长&lt;/h2&gt;
&lt;p&gt;宽基指数覆盖更广市场，适合承担长期增长角色。&lt;/p&gt;
&lt;p&gt;但宽基指数的短期波动并不低。如果资金期限较短，或者无法承受明显回撤，就不应该因为“长期收益更高”而过度配置。&lt;/p&gt;
&lt;p&gt;宽基适合长期资金，不适合短期确定用途资金。&lt;/p&gt;
&lt;h2 id="黄金负责对冲和心理稳定"&gt;黄金：负责对冲和心理稳定&lt;/h2&gt;
&lt;p&gt;黄金通常被视为对冲资产，但它本身也会波动。&lt;/p&gt;
&lt;p&gt;它在组合里的作用不是稳定赚钱，而是在特定宏观环境中提供不同于股债的风险来源。少量配置可能有助于分散风险，但不应该把它当作确定性的避险答案。&lt;/p&gt;
&lt;h2 id="组合角色表"&gt;组合角色表&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;资产&lt;/th&gt;
					&lt;th&gt;主要角色&lt;/th&gt;
					&lt;th&gt;核心风险&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;现金&lt;/td&gt;
					&lt;td&gt;应急和选择权&lt;/td&gt;
					&lt;td&gt;收益低、被通胀侵蚀&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;货币基金&lt;/td&gt;
					&lt;td&gt;短期停泊&lt;/td&gt;
					&lt;td&gt;收益有限、流动性极端风险&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;短债基金&lt;/td&gt;
					&lt;td&gt;低波动防守&lt;/td&gt;
					&lt;td&gt;利率和信用风险&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;中长债&lt;/td&gt;
					&lt;td&gt;收益增强&lt;/td&gt;
					&lt;td&gt;久期风险&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;二级债&lt;/td&gt;
					&lt;td&gt;收益增强&lt;/td&gt;
					&lt;td&gt;权益和转债波动&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;红利低波&lt;/td&gt;
					&lt;td&gt;有限进攻&lt;/td&gt;
					&lt;td&gt;权益市场下跌&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;宽基指数&lt;/td&gt;
					&lt;td&gt;长期增长&lt;/td&gt;
					&lt;td&gt;高波动和长期回撤&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;黄金&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;h2 id="配置前先问角色"&gt;配置前先问角色&lt;/h2&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;/p&gt;</description></item><item><title>让 Agent 帮你读公告、整理持仓和生成复盘</title><link>https://caozuohua.github.io/posts/2026-07-07-agent-assisted-portfolio-review/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-agent-assisted-portfolio-review/</guid><description>&lt;p&gt;AI Agent 可以提高个人理财效率，但前提是边界清楚。&lt;/p&gt;
&lt;p&gt;它适合做信息整理、结构化记录、提醒和复盘，不适合直接判断买卖，更不应该自动下单。稳健理财里的 Agent 应该是助手，不是操盘手。&lt;/p&gt;
&lt;p&gt;本文是个人学习和工具实践记录，不构成投资建议。&lt;/p&gt;
&lt;h2 id="agent-适合读公告"&gt;Agent 适合读公告&lt;/h2&gt;
&lt;p&gt;基金公告和季报信息量大，但结构相对固定。&lt;/p&gt;
&lt;p&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;li&gt;基金经理是否更换。&lt;/li&gt;
&lt;li&gt;是否出现风格漂移信号。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些信息不等于买卖建议，但可以进入复盘表。&lt;/p&gt;
&lt;h2 id="agent-适合整理持仓"&gt;Agent 适合整理持仓&lt;/h2&gt;
&lt;p&gt;个人组合最常见的问题，是不知道自己整体暴露了什么风险。&lt;/p&gt;
&lt;p&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;li&gt;最大偏离类别。&lt;/li&gt;
&lt;li&gt;是否触发再平衡阈值。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类任务适合自动化，因为它有明确输入和明确输出。&lt;/p&gt;
&lt;h2 id="agent-适合生成复盘草稿"&gt;Agent 适合生成复盘草稿&lt;/h2&gt;
&lt;p&gt;复盘草稿可以固定格式：&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;是否触发再平衡规则。&lt;/li&gt;
&lt;li&gt;下个月是否需要人工确认动作。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Agent 可以生成草稿，但最终结论应该由人确认。&lt;/p&gt;
&lt;h2 id="权限边界"&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&gt;可以做什么&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;只读&lt;/td&gt;
					&lt;td&gt;读取公告、表格、持仓记录&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;建议&lt;/td&gt;
					&lt;td&gt;生成复盘、提示偏离、列出风险&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&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;不要给 Agent 自动交易权限。即使未来工具链支持，也应该保持人工确认。&lt;/p&gt;
&lt;h2 id="一个最小工作流"&gt;一个最小工作流&lt;/h2&gt;
&lt;p&gt;可以从很小的流程开始：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;每月导出持仓表。&lt;/li&gt;
&lt;li&gt;Agent 读取持仓和目标比例。&lt;/li&gt;
&lt;li&gt;Agent 计算偏离并生成复盘草稿。&lt;/li&gt;
&lt;li&gt;人工检查公告摘要和异常项。&lt;/li&gt;
&lt;li&gt;如果触发再平衡，人工决定是否执行。&lt;/li&gt;
&lt;li&gt;把最终动作写回复盘记录。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这个流程不复杂，但能减少漏看和临时起意。&lt;/p&gt;
&lt;h2 id="prompt-模板"&gt;Prompt 模板&lt;/h2&gt;
&lt;p&gt;一个简单指令可以这样写：&lt;/p&gt;</description></item><item><title>记忆系统的五层结构：从上下文到长期偏好</title><link>https://caozuohua.github.io/posts/2026-07-07-five-layer-memory-from-context-to-preference/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-five-layer-memory-from-context-to-preference/</guid><description>&lt;p&gt;个人助理需要记忆，但不能什么都记。&lt;/p&gt;
&lt;p&gt;更好的方式是分层：不同信息有不同生命周期、写入规则和检索方式。五层结构可以让记忆系统既有用，又不变成垃圾桶。&lt;/p&gt;
&lt;h2 id="第一层当前上下文"&gt;第一层：当前上下文&lt;/h2&gt;
&lt;p&gt;当前上下文只服务本轮任务。&lt;/p&gt;
&lt;p&gt;它包括用户刚说的话、当前文件、最近命令输出和中间推理。任务结束后，大部分上下文应该丢弃。&lt;/p&gt;
&lt;h2 id="第二层任务状态"&gt;第二层：任务状态&lt;/h2&gt;
&lt;p&gt;任务状态回答“做到哪里了”。&lt;/p&gt;
&lt;p&gt;例如某篇博客已经写完但未构建，某个部署已经构建但未推送。任务状态应该在完成后归档，不应长期占用活跃记忆。&lt;/p&gt;
&lt;h2 id="第三层用户偏好"&gt;第三层：用户偏好&lt;/h2&gt;
&lt;p&gt;用户偏好影响输出方式。&lt;/p&gt;
&lt;p&gt;例如喜欢中文回答、偏好短句、提交前必须构建、不要自动执行高风险操作。偏好必须来自稳定信号，不能把一次性表达写成长期规则。&lt;/p&gt;
&lt;h2 id="第四层稳定事实"&gt;第四层：稳定事实&lt;/h2&gt;
&lt;p&gt;稳定事实是关于项目和环境的信息。&lt;/p&gt;
&lt;p&gt;例如仓库路径、部署方式、默认分支、常用配置。事实会过期，所以必须允许更新和校验。&lt;/p&gt;
&lt;h2 id="第五层长期知识"&gt;第五层：长期知识&lt;/h2&gt;
&lt;p&gt;长期知识是以后会反复使用的信息。&lt;/p&gt;
&lt;p&gt;例如踩坑、命令模板、文章素材、架构说明、QPC 条目。它不一定总在上下文里，但需要可检索。&lt;/p&gt;
&lt;h2 id="写入规则"&gt;写入规则&lt;/h2&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;</description></item><item><title>高风险工具的权限边界和确认机制</title><link>https://caozuohua.github.io/posts/2026-07-07-high-risk-tool-confirmation-mechanism/</link><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-07-high-risk-tool-confirmation-mechanism/</guid><description>&lt;p&gt;工具让 Agent 有行动能力，也让错误有了现实后果。&lt;/p&gt;
&lt;p&gt;高风险工具不能只靠 prompt 约束。它们需要明确权限边界和确认机制，让 Agent 在执行前停下来，把影响说清楚。&lt;/p&gt;
&lt;h2 id="什么是高风险工具"&gt;什么是高风险工具&lt;/h2&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;li&gt;发送公开消息。&lt;/li&gt;
&lt;li&gt;调用财务或账户相关 API。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;共同点是：影响外部状态，且不一定容易撤销。&lt;/p&gt;
&lt;h2 id="执行前必须说明"&gt;执行前必须说明&lt;/h2&gt;
&lt;p&gt;确认信息至少包括：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;将执行什么动作：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;影响哪些文件/服务/账户：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;是否可回滚：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;回滚方式：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;不执行的后果：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;需要用户确认的内容：
&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;/h2&gt;
&lt;p&gt;高风险工具的默认模式应该是建议。&lt;/p&gt;
&lt;p&gt;Agent 可以生成命令、说明步骤、列出风险，但不直接执行。只有用户明确确认后，才进入执行阶段。&lt;/p&gt;
&lt;h2 id="执行后要记录"&gt;执行后要记录&lt;/h2&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;li&gt;后续检查项。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果失败，要进入失败分类表。&lt;/p&gt;
&lt;h2 id="确认机制不是拖慢系统"&gt;确认机制不是拖慢系统&lt;/h2&gt;
&lt;p&gt;确认机制的目的不是降低效率，而是保护不可逆边界。&lt;/p&gt;
&lt;p&gt;个人助理最重要的能力之一，是知道什么时候不能替你做主。&lt;/p&gt;</description></item><item><title>Shell 转义歧义解析：当 LLM 遇上双重解析地狱</title><link>https://caozuohua.github.io/posts/2026-07-06-shell-escaping-ambiguity/</link><pubDate>Mon, 06 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-06-shell-escaping-ambiguity/</guid><description>&lt;p&gt;你有没有过这种经历：让 Agent 帮你写一段小脚本，生成的内容看起来语法完美，一跑就炸？报错信息通常是一串让你怀疑人生的 &lt;code&gt;&amp;amp;&lt;/code&gt;、&lt;code&gt;$&lt;/code&gt;、反引号乱码，然后你盯着那几行代码看了十分钟——最后发现，模型把 bash 的反斜杠转义 &lt;code&gt;\&amp;quot;&lt;/code&gt; 写在了 PowerShell 命令里。&lt;/p&gt;
&lt;p&gt;这个问题我称之为 &lt;strong&gt;Shell 转义歧义&lt;/strong&gt;，在 LLM + 终端自动化这个交叉点上表现得尤其明显。本质是：LLM 生成的是一个扁平字符串，而 shell 执行的是多层嵌套的语义解析，任何一层出了偏差，最终执行的命令就和你预期完全不一样。&lt;/p&gt;
&lt;h2 id="一双重解析模型以为的-vs-shell-实际执行的"&gt;一、双重解析：模型以为的 vs shell 实际执行的&lt;/h2&gt;
&lt;p&gt;LLM 采用自回归方式逐 token 生成，它&amp;quot;以为&amp;quot;自己写的是结构化的命令。但实际上，如果这个字符串被 &lt;code&gt;shell=True&lt;/code&gt;（Python subprocess）或者 &lt;code&gt;Invoke-Expression&lt;/code&gt;（PowerShell）执行，就等于经历了 &lt;strong&gt;两次独立的解析&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;第一层&lt;/strong&gt;：LLM 生成字符串时的&amp;quot;心智解析&amp;quot;——它以为引号配对是对的&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第二层&lt;/strong&gt;：shell 自己再做一次 tokenize / word-splitting&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这两层之间没有任何契约式的保证。模型输出一个字符串，shell 拿过去按自己的规则重新分词，然后交给操作系统执行。任何一层的歧义，都会导致最终行为和预期背离。&lt;/p&gt;
&lt;p&gt;而且这种错误往往是 &lt;strong&gt;延迟发现的&lt;/strong&gt;：代码写入时没报错，运行时才炸。模型只能&amp;quot;事后诸葛亮&amp;quot;式地不断打补丁修改脚本，一个命令可能要循环三四次才终于跑通。&lt;/p&gt;
&lt;h2 id="二为什么-powershell-比-bash-更容易踩坑"&gt;二、为什么 PowerShell 比 bash 更容易踩坑&lt;/h2&gt;
&lt;p&gt;Shell 本来就不简单，但 PowerShell 在这个问题上尤其难搞。有几层原因：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 转义符混淆&lt;/strong&gt;
PowerShell 的转义符是反引号 &lt;code&gt;`&lt;/code&gt;，不是 &lt;code&gt;\&lt;/code&gt;。但模型的训练数据里 bash 语法占绝对多数，它经常无意识地混用 bash 习惯——比如用 &lt;code&gt;\&amp;quot;&lt;/code&gt; 来表示引号转义，这在 PowerShell 里会被原样当作普通反斜杠处理，导致完全不同的解析结果。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 语义差异大&lt;/strong&gt;
PowerShell 对 &lt;code&gt;$&lt;/code&gt;、&lt;code&gt;@()&lt;/code&gt;、&lt;code&gt;&amp;amp;&lt;/code&gt;、&lt;code&gt;|&lt;/code&gt; 有一套完全不同于 bash 的语义：变量插值、数组字面量、调用操作符、管道。模型很容易犯&amp;quot;语法迁移错误&amp;quot;，把 bash 的逻辑套用到 PowerShell 上。&lt;/p&gt;</description></item><item><title>AI Agent 的 CLI 超能力：组合工具的思维与实践</title><link>https://caozuohua.github.io/posts/2026-07-05-ai-agent-cli-combo/</link><pubDate>Sun, 05 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-05-ai-agent-cli-combo/</guid><description>&lt;blockquote&gt;
&lt;p&gt;真正的『AI 原生』不是只会调用模型 API，而是&lt;strong&gt;学会借 cmdline 能力反过来驾驭模型&lt;/strong&gt;。—— 来自 QPC 实践笔记&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="引子原地踩坑与破局"&gt;引子：原地踩坑与破局&lt;/h2&gt;
&lt;p&gt;写 Agent 项目半年，发现两个现象：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;生产坑&lt;/strong&gt; ——&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;代码库 2k 文件，怎么快速撤离所有第三方 key？&lt;/li&gt;
&lt;li&gt;日活跃 agent 实例上百，如何一眼看清谁在泄露内存？&lt;/li&gt;
&lt;li&gt;高频需求：提取出所有对话里的意图标注。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;AI 间歇性失能&lt;/strong&gt; ——&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;模型擅长创造，不擅长精确执行。&lt;/li&gt;
&lt;li&gt;一次 agent 调用动辄 50k token，代价高昂。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;真正的破局，不是让模型变聪明，而是&lt;strong&gt;把操作系统现成的精确能力用起来&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;下面展示 10 个实例，每个都是agent项目中频繁踩坑后找到的确定性答案。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="工具清单让你恍然大悟的不需要python场景"&gt;工具清单：让你恍然大悟的『不需要Python』场景&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;命令&lt;/th&gt;
					&lt;th&gt;干嘛用&lt;/th&gt;
					&lt;th&gt;代替的 Python 操作&lt;/th&gt;
					&lt;th&gt;节省 token 效果&lt;/th&gt;
					&lt;th&gt;AI 友好度&lt;/th&gt;
					&lt;th&gt;成本效益&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;rg&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;搜代码 / 搜日志&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;open(file)&lt;/code&gt; + &lt;code&gt;re.findall&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;★★★★★&lt;/td&gt;
					&lt;td&gt;★★★★★&lt;/td&gt;
					&lt;td&gt;极高&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;fd&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;搜文件 / 批量处理&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;glob.glob&lt;/code&gt; + &lt;code&gt;os.path&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;★★★★☆&lt;/td&gt;
					&lt;td&gt;★★★★★&lt;/td&gt;
					&lt;td&gt;极高&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;jq&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;JSON 解析与过滤&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;json.load&lt;/code&gt; + &lt;code&gt;遍历提取&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;★★★★★&lt;/td&gt;
					&lt;td&gt;★★★★★&lt;/td&gt;
					&lt;td&gt;极高&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;bat&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;高亮代码查看&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;open&lt;/code&gt;, &lt;code&gt;syntax highlight&lt;/code&gt; 滚轮&lt;/td&gt;
					&lt;td&gt;★★★☆☆&lt;/td&gt;
					&lt;td&gt;★★★★☆&lt;/td&gt;
					&lt;td&gt;高&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;htop&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;系统进程监控&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;psutil&lt;/code&gt; + 表格输出&lt;/td&gt;
					&lt;td&gt;★★★★★&lt;/td&gt;
					&lt;td&gt;★★★★☆&lt;/td&gt;
					&lt;td&gt;中&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;fzf&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;模糊搜索交互&lt;/td&gt;
					&lt;td&gt;无&lt;/td&gt;
					&lt;td&gt;★★★☆☆&lt;/td&gt;
					&lt;td&gt;★★★☆☆&lt;/td&gt;
					&lt;td&gt;中&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;awk&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;结构化聚合&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;pandas&lt;/code&gt; 等价加载&lt;/td&gt;
					&lt;td&gt;★★★★★&lt;/td&gt;
					&lt;td&gt;★★★★☆&lt;/td&gt;
					&lt;td&gt;高&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;sed -i&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;文件批量编辑&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;open()&lt;/code&gt;+写回+临时文件&lt;/td&gt;
					&lt;td&gt;★★★★★&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;blockquote&gt;
&lt;p&gt;✅ &lt;strong&gt;AI 友好度&lt;/strong&gt; 指的是工具的输出格式是否易于 agent 解析。&lt;code&gt;jq&lt;/code&gt; 和 &lt;code&gt;rg&lt;/code&gt; 的输出最干净，agent 直接接受一行不需要再清洗。&lt;/p&gt;</description></item><item><title>100w 稳健型基金组合 · 执行手册</title><link>https://caozuohua.github.io/posts/fund-portfolio-analyzer/</link><pubDate>Fri, 03 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/fund-portfolio-analyzer/</guid><description>&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;!-- raw HTML omitted --&gt;
&lt;h2 id="一买什么买多少"&gt;一、买什么？买多少？&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style="text-align: center"&gt;步骤&lt;/th&gt;
					&lt;th style="text-align: right"&gt;类别&lt;/th&gt;
					&lt;th style="text-align: right"&gt;标的（支付宝搜索）&lt;/th&gt;
					&lt;th style="text-align: right"&gt;金额&lt;/th&gt;
					&lt;th style="text-align: right"&gt;占比&lt;/th&gt;
					&lt;th style="text-align: center"&gt;风险&lt;/th&gt;
					&lt;th&gt;操作要点&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style="text-align: center"&gt;1&lt;/td&gt;
					&lt;td style="text-align: right"&gt;货基&lt;/td&gt;
					&lt;td style="text-align: right"&gt;&lt;!-- raw HTML omitted --&gt;天弘余额宝 000198&lt;!-- raw HTML omitted --&gt; 或 南方天天利A 003474&lt;/td&gt;
					&lt;td style="text-align: right"&gt;&lt;!-- raw HTML omitted --&gt;10 万&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
					&lt;td style="text-align: right"&gt;10%&lt;/td&gt;
					&lt;td style="text-align: center"&gt;低&lt;/td&gt;
					&lt;td&gt;T+0/T+1，随时可取，作为流动性底仓&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: center"&gt;2&lt;/td&gt;
					&lt;td style="text-align: right"&gt;短债&lt;/td&gt;
					&lt;td style="text-align: right"&gt;&lt;!-- raw HTML omitted --&gt;天弘短债债券A 000001&lt;!-- raw HTML omitted --&gt;（备选 博时安鑫短债A 000028）&lt;/td&gt;
					&lt;td style="text-align: right"&gt;&lt;!-- raw HTML omitted --&gt;35 万&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
					&lt;td style="text-align: right"&gt;35%&lt;/td&gt;
					&lt;td style="text-align: center"&gt;低&lt;/td&gt;
					&lt;td&gt;建议分 2 笔（17.5w + 17.5w），持有期 7 天&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: center"&gt;3&lt;/td&gt;
					&lt;td style="text-align: right"&gt;二级债&lt;/td&gt;
					&lt;td style="text-align: right"&gt;&lt;!-- raw HTML omitted --&gt;易方达稳健收益债券A 000008&lt;!-- raw HTML omitted --&gt;（备选 建信稳定增利A 000011）&lt;/td&gt;
					&lt;td style="text-align: right"&gt;&lt;!-- raw HTML omitted --&gt;15 万&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
					&lt;td style="text-align: right"&gt;15%&lt;/td&gt;
					&lt;td style="text-align: center"&gt;中低&lt;/td&gt;
					&lt;td&gt;打底债券 + 最多 20% 权益，持有期 ≥7 天&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: center"&gt;4&lt;/td&gt;
					&lt;td style="text-align: right"&gt;红利ETF&lt;/td&gt;
					&lt;td style="text-align: right"&gt;&lt;!-- raw HTML omitted --&gt;中证红利ETF 515080&lt;!-- raw HTML omitted --&gt;（场内）或 &lt;!-- raw HTML omitted --&gt;501060&lt;!-- raw HTML omitted --&gt;（场外联接）&lt;/td&gt;
					&lt;td style="text-align: right"&gt;&lt;!-- raw HTML omitted --&gt;30 万&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
					&lt;td style="text-align: right"&gt;30%&lt;/td&gt;
					&lt;td style="text-align: center"&gt;中&lt;/td&gt;
					&lt;td&gt;⚠️ 唯一高风险仓位，必须定投建仓，勿一把梭&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style="text-align: center"&gt;5&lt;/td&gt;
					&lt;td style="text-align: right"&gt;现金/逆回购&lt;/td&gt;
					&lt;td style="text-align: right"&gt;继续留在货基 000198；大额临时资金走沪市 R-001&lt;/td&gt;
					&lt;td style="text-align: right"&gt;&lt;!-- raw HTML omitted --&gt;10 万&lt;!-- raw HTML omitted --&gt;&lt;/td&gt;
					&lt;td style="text-align: right"&gt;10%&lt;/td&gt;
					&lt;td style="text-align: center"&gt;极低&lt;/td&gt;
					&lt;td&gt;季末/年末逆回购年化 2-5%，无风险&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="红利低波-etf为什么选它"&gt;红利低波 ETF：为什么选它？&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;中证红利指数&lt;/strong&gt; = 高股息 + 低波动，长期年化约 &lt;strong&gt;9-11%&lt;/strong&gt;（历史），远高于沪深300的 7-8%&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;低波属性&lt;/strong&gt;：熊市跌幅比宽基小 15-25%，是你组合里的「收益压舱石」&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;现金流&lt;/strong&gt;：每年分红约 3-4%，可以直接在支付宝设置「分红再投资」&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="二红利etf-定投日历2026-08--2027-01"&gt;二、红利ETF 定投日历（2026-08 ~ 2027-01）&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;6 个月定投，每月一笔，共 6 笔 × 5 万 = 30 万。&lt;/p&gt;</description></item><item><title>智能体问题：不确定性与规划失效</title><link>https://caozuohua.github.io/posts/2026-07-01-agent-uncertainty-planning/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-01-agent-uncertainty-planning/</guid><description>&lt;h2 id="计划赶不上变化"&gt;计划赶不上变化&lt;/h2&gt;
&lt;p&gt;前面五篇文章讨论的问题都有相对明确的对策——幻觉可以加 RAG，工具错误可以强 Schema，崩溃可以做检查点，协调可以共享状态，治理可以定规则。但有一个问题是本质性的：&lt;strong&gt;未来不可预测，而智能体必须做决策&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这就是规划失效问题：智能体基于当前信息制定了完美的执行计划，但执行过程中环境变了、信息更新了、前提不成立了——计划从&amp;quot;最优解&amp;quot;变成了&amp;quot;最蠢路径&amp;quot;。&lt;/p&gt;
&lt;p&gt;这不是 AI 的特殊问题，是人类也在天天面对的。区别在于人类有丰富的经验来应对不确定性，而智能体的&amp;quot;经验&amp;quot;只有训练数据和当前上下文。&lt;/p&gt;
&lt;h2 id="不确定性的三个来源"&gt;不确定性的三个来源&lt;/h2&gt;
&lt;h3 id="来源一环境动态性"&gt;来源一：环境动态性&lt;/h3&gt;
&lt;p&gt;外部环境在 Agent 执行任务期间发生了变化。&lt;/p&gt;
&lt;h4 id="典型场景"&gt;典型场景&lt;/h4&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Agent 计划：查库存 → 下单 → 发货
现实发生：查库存时有货 → 下单时库存已变（另一位客户买了）→ 发货失败
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;动态环境中的&amp;quot;信息时效性&amp;quot;问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;查询时信息准确&lt;/strong&gt; ≠ &lt;strong&gt;行动时信息准确&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;信息和行动之间的时间差越大，规划越可能失效&lt;/li&gt;
&lt;li&gt;有些环境变化不可预测（突发需求、系统故障、外部政策调整）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="特殊难点agent-自身改变了环境"&gt;特殊难点：Agent 自身改变了环境&lt;/h4&gt;
&lt;p&gt;Agent 的行动可能改变了它所处环境的条件，导致后续计划的前提不再成立：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Agent 分析了市场数据 → 基于分析推荐了 A 股票
→ 1000 个用户跟随买入 → A 股价被推高
→ Agent 原有的&amp;#34;低估&amp;#34;判断不再成立
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这就是反身性（Reflexivity）——观察行为本身改变了被观察对象。 Soros 讲了几十年的金融哲学，在 Agent 时代以新形态重现。&lt;/p&gt;
&lt;h3 id="来源二信息不完备性"&gt;来源二：信息不完备性&lt;/h3&gt;
&lt;p&gt;Agent 做决策时所依据的信息不完整。&lt;/p&gt;
&lt;h4 id="已知的不确定-vs-不确定的不确定"&gt;已知的不确定 vs 不确定的不确定&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;已知的不确定&lt;/strong&gt;：Agent 知道自己不知道什么。比如&amp;quot;我不知道今天的库存量，需要先查询&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不确定的不确定&lt;/strong&gt;：Agent 不知道自己不知道什么。比如 Agent 以为自己了解退货政策，但政策上周刚改了，它不知道&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;后者更危险——Agent 在错误的前提下做出自信的决策，和幻觉类似但根源不同：幻觉是模型编造事实，信息不完备是真实事实缺失但 Agent 假装拥有。&lt;/p&gt;
&lt;h4 id="隐性约束"&gt;隐性约束&lt;/h4&gt;
&lt;p&gt;很多约束没有写在文档里，是行业惯例或组织内部的不成文规则：&lt;/p&gt;</description></item><item><title>智能体问题：可靠性与中途崩溃</title><link>https://caozuohua.github.io/posts/2026-07-01-agent-reliability-crash/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-01-agent-reliability-crash/</guid><description>&lt;h2 id="智能体的半途而废之痛"&gt;智能体的&amp;quot;半途而废&amp;quot;之痛&lt;/h2&gt;
&lt;p&gt;写代码的人都知道——程序崩溃不可怕，可怕的是崩溃后状态全丢，只能从头再来。&lt;/p&gt;
&lt;p&gt;智能体面临的就是这个问题。一个 20 步的自动化任务，执行到第 15 步时 LLM API 超时了，所有中间状态消失。下次运行从第 1 步重新开始，前面的 14 步白做了。如果有副作用（已经发了一封邮件、已经创建了一条数据库记录），那就更麻烦——重做会导致重复操作。&lt;/p&gt;
&lt;p&gt;Temporal 的技术博客 2026 年 4 月发表了一篇引起广泛共鸣的文章，核心观点是：&lt;strong&gt;AI 可靠性是一个十年前就该解决、现在仍然只解决了一半的问题。我们应该用基础设施手段而非更好模型来解决它&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="为什么智能体会中途崩溃"&gt;为什么智能体会中途崩溃？&lt;/h2&gt;
&lt;h3 id="原因一llm-推理本身就是不稳定的"&gt;原因一：LLM 推理本身就是不稳定的&lt;/h3&gt;
&lt;p&gt;传统软件的执行路径是确定性的——给定相同输入，永远走同一条路。LLM 不是。每一次推理都是一次概率采样，天生带有不确定性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;API 超时&lt;/strong&gt;：模型推理慢时，HTTP 请求可能超时中断&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Token 限制&lt;/strong&gt;：上下文窗口满了，前面的轮次被截断&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rate Limit&lt;/strong&gt;：API 调用频率受限，被 429 返回&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;服务降级&lt;/strong&gt;：高峰期模型响应质量下降&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;随机中断&lt;/strong&gt;：GPU 集群节点切换、负载均衡导致连接中断&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些问题不是偶尔发生的，在大规模生产环境中是&lt;strong&gt;常态&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="原因二智能体状态是内存态的"&gt;原因二：智能体状态是&amp;quot;内存态&amp;quot;的&lt;/h3&gt;
&lt;p&gt;大多数 Agent 框架把执行状态存在内存中：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 典型的 Agent 循环&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;state &lt;span style="color:#f92672"&gt;=&lt;/span&gt; initial_state
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; step &lt;span style="color:#f92672"&gt;in&lt;/span&gt; plan:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; state &lt;span style="color:#f92672"&gt;=&lt;/span&gt; llm_call(step, state) &lt;span style="color:#75715e"&gt;# state 在内存&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; state &lt;span style="color:#f92672"&gt;=&lt;/span&gt; tool_call(step, state) &lt;span style="color:#75715e"&gt;# 一旦进程挂了，state 全丢&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;传统软件有数据库保驾护航——应用挂了重启后数据还在。Agent 框架呢？进程一死，所有中间推理、工具返回、上下文积累全部消失。&lt;/p&gt;
&lt;h3 id="原因三长链路任务的脆弱性"&gt;原因三：长链路任务的脆弱性&lt;/h3&gt;
&lt;p&gt;智能体任务越复杂，包含的步骤越多，执行成功率呈指数下降：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;单步成功率 95%
10 步任务成功率: 0.95^10 = 59.9%
20 步任务成功率: 0.95^20 = 35.8%
50 步任务成功率: 0.95^50 = 7.7%
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;即使每步有 95% 的成功率（这已经是优秀的表现），一个 20 步任务就有近 2/3 的概率在某步失败。而大多数真实业务场景不止 20 步。&lt;/p&gt;</description></item><item><title>智能体问题：多 Agent 协调</title><link>https://caozuohua.github.io/posts/2026-07-01-agent-multi-agent-coordination/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-01-agent-multi-agent-coordination/</guid><description>&lt;h2 id="一个人干不了所有活"&gt;一个人干不了所有活&lt;/h2&gt;
&lt;p&gt;单个智能体再强，也有能力边界。它不可能同时是代码专家、财务分析师、法律顾问和设计师。于是多 Agent 协作成为自然选择——让不同专长的 Agent 各司其职，协同完成复杂任务。&lt;/p&gt;
&lt;p&gt;听起来很美好，实战中却是一地鸡毛。&lt;/p&gt;
&lt;p&gt;Medium 上有一篇被广泛引用的文章，标题就很直白：&lt;strong&gt;《Multi-Agent AI 的黑暗心理学：30 种能摧毁你整个系统的失败模式》&lt;/strong&gt;。30 种可能是夸张了，但核心观点不虚——多 Agent 系统的复杂度不是线性增长，而是指数增长。2 个 Agent 的协调问题比 1 个 Agent 多不止一倍。&lt;/p&gt;
&lt;h2 id="三种协作架构"&gt;三种协作架构&lt;/h2&gt;
&lt;p&gt;先理清多 Agent 协作有哪几种模式，再分析各自的问题。&lt;/p&gt;
&lt;h3 id="模式一orchestrator-worker中心调度"&gt;模式一：Orchestrator-Worker（中心调度）&lt;/h3&gt;
&lt;p&gt;一个&amp;quot;主管&amp;quot; Agent 负责理解任务、分解子任务、分派给专业 Worker Agent，最后汇总结果。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[Orchestrator] → 分派 → [代码 Agent]
 → 分派 → [财务 Agent]
 → 分派 → [设计 Agent]
 ← 汇总 ← 各 Agent 结果
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;优点&lt;/strong&gt;：逻辑清晰、责任划分明确
&lt;strong&gt;缺点&lt;/strong&gt;：Orchestrator 成为单点瓶颈——它既要理解全局，又要管理分发，还要处理冲突&lt;/p&gt;
&lt;h3 id="模式二pipeline流水线"&gt;模式二：Pipeline（流水线）&lt;/h3&gt;
&lt;p&gt;Agent 按照固定顺序串联执行，前一个的输出是后一个的输入。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[需求分析 Agent] → [设计 Agent] → [编码 Agent] → [测试 Agent] → [部署 Agent]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;优点&lt;/strong&gt;：简单、可预测
&lt;strong&gt;缺点&lt;/strong&gt;：无反馈回路——如果测试 Agent 发现问题需要返回设计阶段，流水线很难回溯&lt;/p&gt;</description></item><item><title>智能体问题：工具调用失败</title><link>https://caozuohua.github.io/posts/2026-07-01-agent-tool-call-failure/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-01-agent-tool-call-failure/</guid><description>&lt;h2 id="当智能体的手不听使唤"&gt;当智能体的&amp;quot;手&amp;quot;不听使唤&lt;/h2&gt;
&lt;p&gt;如果说幻觉是智能体&amp;quot;脑子&amp;quot;的问题，那工具调用失败就是&amp;quot;手脚&amp;quot;的问题。智能体不仅要思考，还要行动——调用 API、查询数据库、操作文件系统。而但凡涉及外部系统交互，失败的维度比纯文本幻觉要多得多。&lt;/p&gt;
&lt;p&gt;Arize AI 2026 年对生产环境智能体的故障分析指出：&lt;strong&gt;工具相关失败占 Agent 异常的 40% 以上&lt;/strong&gt;，其中最危险的不是&amp;quot;调用失败&amp;quot;本身，而是&lt;strong&gt;失败后的错误处理&lt;/strong&gt;——智能体对错误的理解和处理能力，往往比工具调用本身更不可靠。&lt;/p&gt;
&lt;h2 id="三大失败模式"&gt;三大失败模式&lt;/h2&gt;
&lt;h3 id="模式一静默错误最危险的失败"&gt;模式一：静默错误——最危险的失败&lt;/h3&gt;
&lt;p&gt;工具返回了错误信息，但智能体没有正确解读，把错误响应当做正常结果继续推理。&lt;/p&gt;
&lt;h4 id="典型场景"&gt;典型场景&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// 智能体调用天气 API
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&lt;span style="color:#f92672"&gt;&amp;#34;tool&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;get_weather&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;arguments&amp;#34;&lt;/span&gt;: {&lt;span style="color:#f92672"&gt;&amp;#34;city&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;北京&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;date&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;2026-07-01&amp;#34;&lt;/span&gt;}}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// API 返回错误
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&lt;span style="color:#f92672"&gt;&amp;#34;error&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;city_not_found&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;&amp;#34;message&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;City name must be in English: Beijing&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// 智能体把 json 当成了天气数据继续推理
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;根据返回的数据，北京7月1日的湿度和 error 字段显示...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这比调用直接报错更危险——至少报错时智能体知道出错了，还能重试。静默错误时，智能体浑然不知，把垃圾数据当成金子继续加工。&lt;/p&gt;
&lt;h4 id="为什么会发生"&gt;为什么会发生？&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;错误格式不统一&lt;/strong&gt;：不同 API 的错误响应结构不同（HTTP 状态码、JSON error 字段、HTML 错误页……），智能体难以用统一逻辑识别&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompt 缺少错误处理指令&lt;/strong&gt;：很多人在 system prompt 里只写了&amp;quot;使用 XX 工具查询&amp;quot;，没写&amp;quot;如果工具返回错误，你应该……&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型倾向&amp;quot;继续完成任务&amp;quot;&lt;/strong&gt;：遇到异常数据时，模型的训练倾向是给用户一个答案，而不是停下来讨论 API 报错&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="模式二参数构造错误最常见的失败"&gt;模式二：参数构造错误——最常见的失败&lt;/h3&gt;
&lt;p&gt;智能体理解了要调什么工具，但构造参数时出错。&lt;/p&gt;
&lt;h4 id="常见错误类型"&gt;常见错误类型&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;格式错误&lt;/strong&gt;：日期传 &lt;code&gt;2026/07/01&lt;/code&gt; 而 API 要 &lt;code&gt;2026-07-01&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类型错误&lt;/strong&gt;：传字符串 &lt;code&gt;&amp;quot;5&amp;quot;&lt;/code&gt; 而 API 要整数 &lt;code&gt;5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;枚举错误&lt;/strong&gt;：传 &lt;code&gt;&amp;quot;medium&amp;quot;&lt;/code&gt; 而有效值只有 &lt;code&gt;[&amp;quot;low&amp;quot;, &amp;quot;mid&amp;quot;, &amp;quot;high&amp;quot;]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;遗漏必填参数&lt;/strong&gt;：忘了传 &lt;code&gt;currency&lt;/code&gt; 字段&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;语义错误&lt;/strong&gt;：传了合法格式但语义不对，比如把 &lt;code&gt;page_size=100&lt;/code&gt; 传给了限制最大 50 的分页接口&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="根因分析"&gt;根因分析&lt;/h4&gt;
&lt;p&gt;模型对 API 的理解来自 prompt 中的工具描述（Function Schema）。如果描述不够精确——比如某个参数的合法值只写了 &lt;code&gt;string&lt;/code&gt; 没有枚举——模型就只能&amp;quot;猜&amp;quot;。&lt;/p&gt;</description></item><item><title>智能体问题：幻觉与事实错误</title><link>https://caozuohua.github.io/posts/2026-07-01-agent-hallucination-deep-dive/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-01-agent-hallucination-deep-dive/</guid><description>&lt;h2 id="幻觉智能体最顽固的问题"&gt;幻觉：智能体最顽固的问题&lt;/h2&gt;
&lt;p&gt;如果只能用一个词概括当前 AI 智能体最致命的问题，行业里多数人会选&amp;quot;幻觉&amp;quot;（Hallucination）。通用大模型写诗写周报文采斐然，但让它分析&amp;quot;上季度 A 产品线毛利率下降的原因&amp;quot;，它可能编造一串子虚乌有的数据，还附上看起来很专业的百分比。更糟糕的是——语气越自信，越难被非专业用户识破。&lt;/p&gt;
&lt;p&gt;Fiddler AI 2026 年的报告给出了一个残酷的数字：&lt;strong&gt;生产环境智能体失败率 70%-95%&lt;/strong&gt;，幻觉是头号杀手。BetterYeah 的调研发现，&lt;strong&gt;68% 的企业在 AI 落地中遭遇幻觉问题，其中 32% 因错误累积导致系统性风险&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这不是&amp;quot;模型还不够聪明&amp;quot;的问题。这是智能体的结构性挑战。&lt;/p&gt;
&lt;h2 id="从单步错误到幻觉累加"&gt;从单步错误到幻觉累加&lt;/h2&gt;
&lt;h3 id="单步幻觉模型不确定时仍自信输出"&gt;单步幻觉：模型不确定时仍&amp;quot;自信输出&amp;quot;&lt;/h3&gt;
&lt;p&gt;LLM 的核心训练目标是&amp;quot;合理续写&amp;quot;，而不是&amp;quot;如实回答&amp;quot;。当训练数据中缺少相关信息时，模型不会说&amp;quot;我不知道&amp;quot;——它会生成一段看起来连贯但实际上没有事实支撑的文字。&lt;/p&gt;
&lt;p&gt;这是因为：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;训练数据偏差&lt;/strong&gt;：互联网文本中，自信断言远多于谦虚声明&amp;quot;我不确定&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;采样机制&lt;/strong&gt;：模型采样概率最高的 token 序列，不受事实约束&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;缺乏不确定性建模&lt;/strong&gt;：模型内部没有显式的&amp;quot;置信度&amp;quot;信号传递给输出层&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;结果：模型在信息不足时的行为是&amp;quot;编造&amp;quot;，而非&amp;quot;沉默&amp;quot;。&lt;/p&gt;
&lt;h3 id="多步累加小偏差滚雪球"&gt;多步累加：小偏差滚雪球&lt;/h3&gt;
&lt;p&gt;当智能体执行多步任务时，单步幻觉的破坏力被指数放大。看一个典型场景：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;步骤 1：检索客户信息 → 幻觉：编造了不存在的客户 ID
步骤 2：用该 ID 查询订单 → 返回空结果
步骤 3：智能体&amp;#34;推断&amp;#34;该客户是新客户 → 编造注册时间
步骤 4：基于虚假注册时间做客户画像分析 → 输出错误结论
步骤 5：基于错误结论撰写运营建议 → 决策偏离
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;每一步都&amp;quot;合乎逻辑&amp;quot;，但起点就是一个虚构的事实。这就是&lt;strong&gt;幻觉累加效应&lt;/strong&gt;——错误在推理链中不断传播和放大，最终输出和现实南辕北辙。&lt;/p&gt;
&lt;p&gt;2025 年 Q1 某金融机构的案例就是典型：智能体在财报分析中第一次幻觉了一个营收数字，后续所有财务比率、趋势判断、投资建议全部基于这个错误数字展开。表面看报告专业完整，实际结论完全失真。&lt;/p&gt;
&lt;h3 id="为什么传统-nlp-时代的幻觉没那么致命"&gt;为什么传统 NLP 时代的幻觉没那么致命？&lt;/h3&gt;
&lt;p&gt;传统 QA 系统也幻觉，但影响范围有限——一次问答的错误不影响下一次。智能体截然不同：它是一个&lt;strong&gt;持续运行的闭环系统&lt;/strong&gt;，前一步的输出是后一步的输入。一个幻觉 token 就像生物学中的基因突变，在后续&amp;quot;转录&amp;quot;过程中被不断放大。&lt;/p&gt;
&lt;h2 id="三类幻觉的根源"&gt;三类幻觉的根源&lt;/h2&gt;
&lt;h3 id="1-事实性幻觉"&gt;1. 事实性幻觉&lt;/h3&gt;
&lt;p&gt;模型编造不存在的事实。典型表现：&lt;/p&gt;</description></item><item><title>智能体问题：治理与问责</title><link>https://caozuohua.github.io/posts/2026-07-01-agent-governance-accountability/</link><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-01-agent-governance-accountability/</guid><description>&lt;h2 id="当智能体有了自主权谁为它的行为负责"&gt;当智能体有了&amp;quot;自主权&amp;quot;，谁为它的行为负责？&lt;/h2&gt;
&lt;p&gt;前几篇文章讨论的问题——幻觉、工具调用失败、崩溃、协调混乱——都是技术可解的。但有一类问题超越了技术范畴：当智能体越来越多地代替人做决策和行动时，&lt;strong&gt;谁来为后果负责&lt;/strong&gt;？&lt;/p&gt;
&lt;p&gt;McKinsey 2026 年 AI 信任成熟度调研覆盖了数千家企业，核心发现是：&lt;strong&gt;企业对 AI 的信任没有跟上 AI 能力的增长&lt;/strong&gt;。随着 Agent 从&amp;quot;辅助工具&amp;quot;走向&amp;quot;自主行动者&amp;quot;，治理和问责缺位成了最紧迫的系统性风险。&lt;/p&gt;
&lt;p&gt;这不是&amp;quot;以后再考虑&amp;quot;的问题。2025 年已经有多起因 AI Agent 自主行动导致的业务事故：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;客服 Agent 自作主张给用户全额退款&lt;/li&gt;
&lt;li&gt;营销 Agent 向错误人群发送敏感促销&lt;/li&gt;
&lt;li&gt;数据处理 Agent 把内部数据写入了外部系统&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每一件事的直接原因都是技术层面的（幻觉、工具错误），但&lt;strong&gt;根本原因是治理框架缺失&lt;/strong&gt;——没有人为 Agent 的行动设定边界。&lt;/p&gt;
&lt;h2 id="四大治理挑战"&gt;四大治理挑战&lt;/h2&gt;
&lt;h3 id="挑战一权限边界模糊"&gt;挑战一：权限边界模糊&lt;/h3&gt;
&lt;h4 id="核心问题"&gt;核心问题&lt;/h4&gt;
&lt;p&gt;智能体能干什么？哪些决策它可以自己做？哪些必须请示？&lt;/p&gt;
&lt;p&gt;大多数 Agent 系统根本没有清晰定义权限边界。系统 prompt 里写了&amp;quot;帮用户处理订单&amp;quot;，但没有写：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你可以取消订单吗？&lt;/li&gt;
&lt;li&gt;你可以修改价格吗？&lt;/li&gt;
&lt;li&gt;你可以给超过 100 元的订单退款吗？&lt;/li&gt;
&lt;li&gt;你可以查看其他用户的数据吗？&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="为什么重要"&gt;为什么重要&lt;/h4&gt;
&lt;p&gt;权限不清时，Agent 的两种倾向都会出问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;过度谨慎&lt;/strong&gt;：什么都问用户，失去自动化的意义&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;过度激进&lt;/strong&gt;：什么都自己做，出了事不可控&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;现实中的 Agent 往往走向后者——因为&amp;quot;帮用户解决问题&amp;quot;的指令天然偏向行动，而非克制。&lt;/p&gt;
&lt;h4 id="类别"&gt;类别&lt;/h4&gt;
&lt;p&gt;权限至少需要从三个维度定义：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;数据维度&lt;/strong&gt;：能访问什么数据？能读哪些？能写哪些？&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;操作维度&lt;/strong&gt;：能执行哪些操作？取消订单 vs 修改地址 vs 查看物流？&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;金额维度&lt;/strong&gt;：操作有财务影响时，上限在哪里？&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="挑战二审计追踪缺失"&gt;挑战二：审计追踪缺失&lt;/h3&gt;
&lt;h4 id="核心问题-1"&gt;核心问题&lt;/h4&gt;
&lt;p&gt;Agent 做了一个决策，事后能否完整回溯&amp;quot;它为什么这样做&amp;quot;？&lt;/p&gt;
&lt;p&gt;目前多数 Agent 系统的回答是：&lt;strong&gt;不能&lt;/strong&gt;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;推理过程只存在于 LLM 的上下文中，运行结束后消失&lt;/li&gt;
&lt;li&gt;工具调用的参数和返回值可能记录了，但&amp;quot;为什么选择调这个工具&amp;quot;没有记录&lt;/li&gt;
&lt;li&gt;多步推理中，前面步骤的中间结论影响了后面决策，但这些因果链没有被显式记录&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="后果"&gt;后果&lt;/h4&gt;
&lt;p&gt;没有审计追踪 = 没有问责基础。&lt;/p&gt;</description></item><item><title>Agent 系列日记 5：为什么 Skill 路由比 ReAct 控制器更适合个人助理</title><link>https://caozuohua.github.io/posts/2026-06-29-skill-routing-vs-react/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-06-29-skill-routing-vs-react/</guid><description>&lt;blockquote&gt;
&lt;p&gt;从 luck-agent 到 Hermes-lite，我花了两年时间才想清楚这个问题：80% 的请求不需要&amp;quot;思考&amp;quot;，只需要&amp;quot;路由&amp;quot;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="回顾react-控制器模式的困境"&gt;回顾：ReAct 控制器模式的困境&lt;/h2&gt;
&lt;p&gt;2024 年做 luck-agent 的时候，我采用的是经典的 &lt;strong&gt;ReAct 模式&lt;/strong&gt;（Reasoning + Acting）：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;用户输入 → 大模型推理（意图识别 → 规划 → 工具选择 → 执行）→ 输出
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;所有请求，不管简单还是复杂，都走同一个推理链。一个&amp;quot;查 QPC 里有没有 VPS 相关的记录&amp;quot;的请求，也要经过：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;理解自然语言&lt;/li&gt;
&lt;li&gt;判断意图类别&lt;/li&gt;
&lt;li&gt;选择工具（search_qpc）&lt;/li&gt;
&lt;li&gt;构造查询参数&lt;/li&gt;
&lt;li&gt;执行并解释结果&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;问题很明显&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Token 消耗大&lt;/strong&gt;：每次推理要带上完整的 system prompt + 工具定义，光上下文就吃掉 3000-5000 token&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;延迟高&lt;/strong&gt;：一个简单查询要等模型完成完整推理链，响应时间 3-8 秒&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上下文窗口压力&lt;/strong&gt;：随着工具数量增加（现在 Hermes-lite 有 20+ 个工具），system prompt 越来越大&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我当时就在知识库里记了一条：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;对于个人助理场景，相比最初的 ReAct 控制器模式，Skill 技能路由更适合当前 luckagent：80% 请求是固定模式，不需要复杂推理，技能比 Agent 更稳定，成本更低，响应更快。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="skill-路由的核心思想"&gt;Skill 路由的核心思想&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;一句话&lt;/strong&gt;：预定义技能映射，轻量分类先路由，只加载需要的工具和 prompt。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;用户输入 → 轻量路由（关键词/意图 → 技能）→ 加载专用 prompt + 工具 → 执行
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="路由表设计"&gt;路由表设计&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 简化版路由逻辑&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ROUTING_RULES &lt;span style="color:#f92672"&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;qpc&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;keywords&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;QPC&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;知识库&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;记一下&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;记录&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;skill&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;qpc&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;tools&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;feishu_bitable_read&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;feishu_bitable_write&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;prompt&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;qpc_skill_prompt&amp;#34;&lt;/span&gt; &lt;span style="color:#75715e"&gt;# 只加载 QPC 相关的 prompt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;vps&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;keywords&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;VPS&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;服务器&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;防火墙&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;Docker&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;skill&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;gcp-vps-ops&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;tools&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;terminal&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;read_file&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;prompt&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;vps_skill_prompt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;blog&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;keywords&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;博客&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;文章&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;Hugo&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;发布&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;skill&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;hugo-blog&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;tools&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;terminal&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;read_file&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;write_file&amp;#34;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;prompt&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;blog_skill_prompt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="对比同样查-qpc操作"&gt;对比：同样&amp;quot;查 QPC&amp;quot;操作&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;指标&lt;/th&gt;
					&lt;th&gt;ReAct 模式&lt;/th&gt;
					&lt;th&gt;Skill 路由&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;上下文 token&lt;/td&gt;
					&lt;td&gt;~4000（全量工具定义）&lt;/td&gt;
					&lt;td&gt;~800（仅 QPC 相关）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;首次响应延迟&lt;/td&gt;
					&lt;td&gt;3-8s&lt;/td&gt;
					&lt;td&gt;0.5-1.5s&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;工具调用次数&lt;/td&gt;
					&lt;td&gt;2-3 次（推理+执行）&lt;/td&gt;
					&lt;td&gt;1 次（直接执行）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;准确率&lt;/td&gt;
					&lt;td&gt;92%（模型可能选错工具）&lt;/td&gt;
					&lt;td&gt;98%（路由确定性高）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="hermes-lite-的-skill-实现"&gt;Hermes-lite 的 Skill 实现&lt;/h2&gt;
&lt;p&gt;Hermes-lite 的 skill 系统是这样工作的：&lt;/p&gt;</description></item><item><title>QPC 极简设计：我用 4 个字段管理 200 条知识</title><link>https://caozuohua.github.io/posts/2026-06-29-qpc-minimal-knowledge-base/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-06-29-qpc-minimal-knowledge-base/</guid><description>&lt;blockquote&gt;
&lt;p&gt;试过 Obsidian 的标签体系、Notion 的数据库、Logseq 的 graph view，最后发现：知识库的最大敌人不是容量，是维护摩擦。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="为什么不做完美知识库"&gt;为什么不做&amp;quot;完美知识库&amp;quot;？&lt;/h2&gt;
&lt;p&gt;我曾经是一个&amp;quot;知识管理完美主义者&amp;quot;。&lt;/p&gt;
&lt;h3 id="尝试-1obsidian--标签体系--双向链接"&gt;尝试 1：Obsidian + 标签体系 + 双向链接&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;每个笔记文件：
- 标签：#python #async #bug-fix #2026-06
- 链接：[[python-async]] [[common-bugs]]
- 元数据：create_date, last_modified, status, project
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;结果&lt;/strong&gt;：三个月后标签体系崩溃了。&lt;code&gt;#python&lt;/code&gt; 和 &lt;code&gt;#Python&lt;/code&gt; 是两个标签，&lt;code&gt;#bug-fix&lt;/code&gt; 和 &lt;code&gt;#bugfix&lt;/code&gt; 也是。双向链接变成死链接（文件删了链接还在）。维护成本爆炸，写一条笔记要先想该打什么标签——&lt;strong&gt;思考的 friction 超过了记忆的 friction&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="尝试-2notion-数据库--多字段"&gt;尝试 2：Notion 数据库 + 多字段&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;数据库字段：标题、类型（6 种）、标签（多选）、项目、优先级、状态、来源、日期、附件、笔记
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;结果&lt;/strong&gt;：90% 字段闲置。每次新建记录，11 个字段只填 2-3 个，其余空着。Notion 还要求你手动选&amp;quot;类型&amp;quot;、拖&amp;quot;优先级&amp;quot;——录入摩擦太高，最后只记录了 30 条就放弃了。&lt;/p&gt;
&lt;h3 id="核心洞察"&gt;核心洞察&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;知识管理的杠杆 = 写入 × 重读&lt;/strong&gt;，不是字段数。&lt;/p&gt;
&lt;p&gt;如果写入摩擦太高，你就不写。如果字段太多、标签太复杂，你就不维护。&lt;strong&gt;极简设计 = 更低的维护摩擦 = 更长的生命周期。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="qpc-的-4-字段设计哲学"&gt;QPC 的 4 字段设计哲学&lt;/h2&gt;
&lt;p&gt;我的 QPC（Question / Practice / Concept）知识库现在有 199 条记录，只用 4 个字段：&lt;/p&gt;</description></item><item><title>VPS 安全加固：从 0 到三层防御实战记录</title><link>https://caozuohua.github.io/posts/2026-06-29-vps-security-hardening/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-06-29-vps-security-hardening/</guid><description>&lt;blockquote&gt;
&lt;p&gt;一台裸奔的海外 VPS，跑着 new-api、x-ui、Hermes Agent 三个服务，端口审计发现 3000 + 50404 公网监听——我是怎么一步步把它变成铁桶的。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="背景一台裸奔的-vps"&gt;背景：一台裸奔的 VPS&lt;/h2&gt;
&lt;p&gt;上个月整理 GCP 免费赠金 VPS，发现上面跑着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;new-api&lt;/strong&gt;（端口 3000）— AI API 代理网关&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;x-ui&lt;/strong&gt;（端口 50404）— 代理面板&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hermes Agent&lt;/strong&gt;（内部端口）— 个人 AI 助理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;三个服务全部 &lt;code&gt;0.0.0.0&lt;/code&gt; 绑定，直接暴露在公网。用 &lt;code&gt;nmap&lt;/code&gt; 扫了一下自己的 IP：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ nmap -Pn &amp;lt;my-ip&amp;gt;
PORT STATE SERVICE
3000/tcp open ppp
50404/tcp open unknown
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;更要命的是，new-api 后台后来审计发现了 &lt;strong&gt;7 个陌生 bot 账号&lt;/strong&gt;，说明已经被扫到了。ROOT_PASSWORD 还是默认的弱密码。&lt;/p&gt;
&lt;p&gt;这篇文章记录我从&amp;quot;裸奔&amp;quot;到&amp;quot;三层防御&amp;quot;的完整过程，每一步都是真实踩坑后的总结。&lt;/p&gt;
&lt;h2 id="第一层gcp-firewall--在流量进主机前挡住"&gt;第一层：GCP Firewall — 在流量进主机前挡住&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;核心思路&lt;/strong&gt;：在 GCP 层面直接拒绝，流量根本不到你的主机。&lt;/p&gt;
&lt;p&gt;GCP Firewall 支持按 &lt;strong&gt;instance tag&lt;/strong&gt; 匹配规则。我先创建了一个 tag &lt;code&gt;secure-server&lt;/code&gt;，然后写规则：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 拒绝所有入站，只允许特定端口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gcloud compute firewall-rules create deny-all-ingress &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --direction&lt;span style="color:#f92672"&gt;=&lt;/span&gt;INGRESS &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --priority&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;65534&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --network&lt;span style="color:#f92672"&gt;=&lt;/span&gt;default &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --action&lt;span style="color:#f92672"&gt;=&lt;/span&gt;DENY &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --rules&lt;span style="color:#f92672"&gt;=&lt;/span&gt;all &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --target-tags&lt;span style="color:#f92672"&gt;=&lt;/span&gt;secure-server &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --source-ranges&lt;span style="color:#f92672"&gt;=&lt;/span&gt;0.0.0.0/0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;踩坑&lt;/strong&gt;：规则创建后测试 &lt;code&gt;nc -zv &amp;lt;ip&amp;gt; 3000&lt;/code&gt;，发现还是通的。排查半小时发现——&lt;strong&gt;instance 没打 tag&lt;/strong&gt;。规则存在但没 target，等于没配。&lt;/p&gt;</description></item><item><title>Agent 的记忆：Hermes-Lite 如何用 5 层结构解决「鱼的难题」</title><link>https://caozuohua.github.io/posts/2026-07-01-agent-memory-5-layer-architecture/</link><pubDate>Sun, 28 Jun 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-07-01-agent-memory-5-layer-architecture/</guid><description>&lt;blockquote&gt;
&lt;p&gt;人类 chatbot 最尴尬的瞬间：第二次见面完全不认识你。Agent 的记忆系统怎么同时做到持久化、低成本、不丢上下文？我深入 Hermes-Lite 源码写了一个月，拆解出 5 层架构。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="从鱼的难题开始"&gt;从「鱼的难题」开始&lt;/h2&gt;
&lt;p&gt;用过 ChatGPT 的人都知道一个痛：&lt;strong&gt;下次打开，它完全不记得你了&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;对一次性聊天这没问题。但对个人助理——帮你管理 200 条知识库、追踪几个项目的进度、记住你的偏好——这等于每次都要把整段友情重来。&lt;/p&gt;
&lt;p&gt;我做 QPC（个人知识库）时就被这个问题卡过。后来折腾 Hermes-Lite、nanobot，逐步摸到一条可行的路。这篇文章从 Hermes-Lite 的实际源码出发，拆解它的 5 层记忆架构，看看一个 Agent 是怎么解决「鱼的难题」的。&lt;/p&gt;
&lt;h2 id="总览5-层架构"&gt;总览：5 层架构&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;┌─────────────────────────────────────────────┐
│ Layer 1: 持久记忆 (MEMORY.md / USER.md) │ ← 跨会话，纯文本
├─────────────────────────────────────────────�
│ Layer 2: 会话压缩 (ContextCompressor) │ ← 长对话不爆
├─────────────────────────────────────────────┤
│ Layer 3: 会话检索 (session_search + FTS5) │ ← 历史不丢
├─────────────────────────────────────────────�
│ Layer 4: 增量写入门控 (Nudge 机制) │ ← 该记就记
├─────────────────────────────────────────────�
│ Layer 5: 原子性保障 (fcntl + 临时文件) │ ← 不丢不坏
└─────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;每一层解决一个独立问题，层与层之间不耦合。下面逐层拆解。&lt;/p&gt;</description></item><item><title>google-genai SDK 全流程指南：Vertex AI + Gemini API 实战</title><link>https://caozuohua.github.io/posts/2026-06-25-google-genai-sdk-complete-guide/</link><pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-06-25-google-genai-sdk-complete-guide/</guid><description>&lt;h2 id="为什么要写这篇"&gt;为什么要写这篇？&lt;/h2&gt;
&lt;p&gt;最近在给 Hermes-lite 接入 Gemini 3.x 模型时，踩了不少 google-genai SDK 的坑——尤其是多轮 tool call 时 &lt;code&gt;thought_signature&lt;/code&gt; 丢失导致 400、streaming 模式下 function_call args 是片段、&lt;code&gt;response.text&lt;/code&gt; 莫名其妙打 stderr Warning 等问题。&lt;/p&gt;
&lt;p&gt;查了一圈官方文档和社区资料，发现这些坑分散在各处，所以整理了一篇一站式指南，把从安装到上线的完整路径、所有踩坑点都写清楚。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一sdk-概览"&gt;一、SDK 概览&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;包名&lt;/strong&gt;：&lt;code&gt;google-genai&lt;/code&gt;（PyPI）
&lt;strong&gt;仓库&lt;/strong&gt;：googleapis/python-genai
&lt;strong&gt;当前版本&lt;/strong&gt;：v2.10.0（2026-06-24）
&lt;strong&gt;Python&lt;/strong&gt;：3.9+
&lt;strong&gt;License&lt;/strong&gt;：Apache-2.0&lt;/p&gt;
&lt;p&gt;google-genai 统一封装了两条后端：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gemini Developer API&lt;/strong&gt;：&lt;code&gt;api_key&lt;/code&gt; 认证，适合快速开发&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vertex AI&lt;/strong&gt;：&lt;code&gt;project + location&lt;/code&gt;，gcloud ADC 认证，VPC 上最方便&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通过 &lt;code&gt;Client&lt;/code&gt; 的一个接口切换，代码几乎零改动。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二google-cloud-vps-上全流程配置"&gt;二、Google Cloud VPS 上全流程配置&lt;/h2&gt;
&lt;h3 id="21-环境准备"&gt;2.1 环境准备&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 创建 venv（推荐 Python 3.12+）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;python3 -m venv /opt/genai-env
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;source /opt/genai-env/bin/activate
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 安装 SDK&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pip install google-genai
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 验证&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;python3 -c &lt;span style="color:#e6db74"&gt;&amp;#34;from google import genai; print(&amp;#39;OK&amp;#39;, google.genai.__version__)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="22-认证vertex-ai-模式gcloud-adc"&gt;2.2 认证：Vertex AI 模式（gcloud ADC）&lt;/h3&gt;
&lt;p&gt;VPC 上最方便——&lt;strong&gt;Application Default Credentials&lt;/strong&gt;，无需手动管理密钥。&lt;/p&gt;</description></item><item><title>Hermes-lite 裁剪实战：7 类典型坑与解法</title><link>https://caozuohua.github.io/posts/2026-06-25-hermes-lite-pitfalls-deep-dive/</link><pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-06-25-hermes-lite-pitfalls-deep-dive/</guid><description>&lt;p&gt;上一篇文章介绍了 Hermes-lite 的整体裁剪思路。这篇深入每一类实际踩过的坑，
把&amp;quot;为什么会遇到&amp;quot;和&amp;quot;怎么解&amp;quot;都说清楚。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一路径迁移坑"&gt;一、路径迁移坑&lt;/h2&gt;
&lt;p&gt;从 &lt;code&gt;.hermes/&lt;/code&gt; 迁到 &lt;code&gt;.hermes-lite/&lt;/code&gt; 后，不是只改 &lt;code&gt;HERMES_HOME&lt;/code&gt; 就完事。&lt;/p&gt;
&lt;h3 id="踩到的点"&gt;踩到的点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.skills_prompt_snapshot.json&lt;/code&gt; 里残留旧 &lt;code&gt;.hermes/&lt;/code&gt; 路径&lt;/li&gt;
&lt;li&gt;&lt;code&gt;web_search/SKILL.md&lt;/code&gt; 硬编码了旧路径&lt;/li&gt;
&lt;li&gt;技能、工具、memory、config、sessions、workspace 各自缓存旧路径&lt;/li&gt;
&lt;li&gt;systemd 环境变量、进程环境、配置文件、技能正文需要一起排查&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="经验"&gt;经验&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;迁移后 &lt;code&gt;grep&lt;/code&gt; 全目录旧路径：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;grep -r &lt;span style="color:#e6db74"&gt;&amp;#34;\.hermes/&amp;#34;&lt;/span&gt; /home/user/.hermes-lite/ --include&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;*.json&amp;#34;&lt;/span&gt; --include&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;*.md&amp;#34;&lt;/span&gt; --include&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;*.yaml&amp;#34;&lt;/span&gt; -l
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;技能快照要清理重建，不能复用旧缓存&lt;/li&gt;
&lt;li&gt;systemd 重启不是可选项 — 长进程内缓存会保留旧状态&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl restart hermes-lite
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl status hermes-lite &lt;span style="color:#75715e"&gt;# 确认新 PID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="二技能裁剪坑"&gt;二、技能裁剪坑&lt;/h2&gt;
&lt;p&gt;一开始容易只看磁盘上有多少 &lt;code&gt;SKILL.md&lt;/code&gt;，但真正可用数量要看运行时过滤后的结果。&lt;/p&gt;
&lt;h3 id="踩到的点-1"&gt;踩到的点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;磁盘上 67 个 &lt;code&gt;SKILL.md&lt;/code&gt;，实际 gateway/slash 可见 65 个&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kanban-orchestrator/worker&lt;/code&gt; 因为 &lt;code&gt;environments: [kanban]&lt;/code&gt; 被过滤，这是预期不是坏了&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_find_all_skills(skip_disabled=True)&lt;/code&gt; 这个参数名容易误读，实际是返回全部技能，默认才过滤 disabled&lt;/li&gt;
&lt;li&gt;&lt;code&gt;web_search&lt;/code&gt; 技能存在，但 Tavily key 缺失，会变成&amp;quot;看得到但用不了&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="经验-1"&gt;经验&lt;/h3&gt;
&lt;p&gt;判断技能可用性要看三层：&lt;/p&gt;</description></item><item><title>Hermes-lite 裁剪指南：在 1GB VPS 上跑轻量 AI Agent</title><link>https://caozuohua.github.io/posts/2026-06-24-hermes-lite-trimming-guide/</link><pubDate>Wed, 24 Jun 2026 23:58:52 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-06-24-hermes-lite-trimming-guide/</guid><description>&lt;h2 id="为什么要裁剪"&gt;为什么要裁剪&lt;/h2&gt;
&lt;p&gt;完整版 Hermes Agent（Nous Research）功能丰富：多平台网关、浏览器自动化、语音 TTS/STT、多 Agent 协作、Kanban 看板等。但这些功能对资源要求不低——在我的测试里，完整配置更适合至少 2GB 内存的机器。&lt;/p&gt;
&lt;p&gt;我有一台 GCP e2-micro（2 vCPU / 954MB RAM），想用它跑一个 24/7 在线的 AI Agent 接入飞书。完整版装不下，于是有了这个裁剪实践。&lt;/p&gt;
&lt;h2 id="三阶段渐进式裁剪"&gt;三阶段渐进式裁剪&lt;/h2&gt;
&lt;p&gt;裁剪不是一步完成的，而是三阶段递进：&lt;/p&gt;
&lt;h3 id="第一阶段本地-codex-完成初期核心裁剪"&gt;第一阶段：本地 Codex 完成初期核心裁剪&lt;/h3&gt;
&lt;p&gt;在本地电脑上，利用 &lt;strong&gt;Codex（OpenAI）&lt;/strong&gt; 作为辅助分析工具，对完整版 Hermes 进行全面&amp;quot;解剖&amp;quot;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;逐一扫描 &lt;code&gt;~/.hermes/&lt;/code&gt; 目录结构，识别每个模块的职责&lt;/li&gt;
&lt;li&gt;分析 67 个技能的依赖关系，标记哪些是核心链路的、哪些是边缘功能&lt;/li&gt;
&lt;li&gt;梳理 config.yaml 中每个配置项的实际作用，搞清楚&amp;quot;关掉会怎样&amp;quot;&lt;/li&gt;
&lt;li&gt;输出一份裁剪清单：哪些 toolset 可以禁、哪些 skill 可以删、哪些配置可以收紧&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一阶段的核心价值：&lt;strong&gt;把&amp;quot;能不能关&amp;quot;这个判断做对&lt;/strong&gt;。Codex 帮助理解了代码间的依赖关系，避免直接关某个功能导致连锁崩溃。&lt;/p&gt;
&lt;h3 id="第二阶段大-vps-上跑完整版--压测验证"&gt;第二阶段：大 VPS 上跑完整版 + 压测验证&lt;/h3&gt;
&lt;p&gt;在&lt;strong&gt;一台大内存 VPS&lt;/strong&gt; 上安装完整版 Hermes，作为&amp;quot;对照基准&amp;quot;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;记录完整版的实际内存占用（idle / 高负载两种状态）&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;strong&gt;建立性能基线 + 验证裁剪组合的安全性&lt;/strong&gt;。在大 VPS 上翻车无所谓，在小 VPS 上翻车就是服务宕机。&lt;/p&gt;</description></item><item><title>个人博客框架完全指南：深入解析Hugo、对比Jekyll/Hexo及高效工具链</title><link>https://caozuohua.github.io/posts/2026-05-10-blog-framework-hugo-jekyll-hexo-guide/</link><pubDate>Sun, 10 May 2026 15:20:28 +0800</pubDate><guid>https://caozuohua.github.io/posts/2026-05-10-blog-framework-hugo-jekyll-hexo-guide/</guid><description>&lt;h2 id="什么是静态网站生成器"&gt;什么是静态网站生成器？&lt;/h2&gt;
&lt;p&gt;在深入探讨具体框架之前，我们首先需要理解什么是“静态网站生成器”（Static Site Generator, SSG）。&lt;/p&gt;
&lt;p&gt;传统的动态网站（如 WordPress）在每次用户访问时，都需要后端服务器从数据库查询数据，然后通过模板引擎实时渲染成 HTML 页面返回给用户。这个过程涉及数据库、服务器端语言（如 PHP），相对复杂且速度较慢。&lt;/p&gt;
&lt;p&gt;而静态网站则完全不同。它遵循一个简单的哲学：&lt;strong&gt;提前生成所有页面&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;工作流程如下：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;编写内容&lt;/strong&gt;：你使用简单的 Markdown 格式编写文章。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;构建网站&lt;/strong&gt;：运行一个命令，SSG 会读取你所有的 Markdown 文件、应用你选择的模板主题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;生成成品&lt;/strong&gt;：最终输出一整个文件夹的、纯粹的 HTML、CSS 和 JavaScript 文件。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;部署&lt;/strong&gt;：你只需要将这个文件夹部署到任何一个可以托管静态文件的地方（如 GitHub Pages、Nginx 服务器、对象存储等），你的网站就上线了。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;静态网站的优势显而易见：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;极速（Fast）&lt;/strong&gt;: 用户访问的是预先生成好的 HTML 文件，无需任何服务器端处理，加载速度极快。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全（Secure）&lt;/strong&gt;: 没有数据库，没有复杂的后端逻辑，大大减少了被攻击的风险。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;简单（Simple）&lt;/strong&gt;: 部署和迁移都非常方便，只需要复制文件即可。版本控制也极其容易（可以直接用 Git）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;便宜（Cheap）&lt;/strong&gt;: 托管静态文件的成本极低，甚至有大量免费的平台（如 GitHub Pages, Netlify, Vercel）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;正是因为这些优势，静态博客在全球技术社区中蔚然成风。&lt;/p&gt;
&lt;h2 id="主流框架概览群星璀璨"&gt;主流框架概览：群星璀璨&lt;/h2&gt;
&lt;p&gt;SSG 领域有很多优秀的选择，每个都有自己的特点和技术栈：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hugo&lt;/strong&gt;: 基于 Go 语言，以“快”闻名于世。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Jekyll&lt;/strong&gt;: 基于 Ruby 语言，是 SSG 的鼻祖，与 GitHub Pages 深度集成。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hexo&lt;/strong&gt;: 基于 Node.js，在亚洲尤其流行，插件生态丰富。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gatsby / Next.js&lt;/strong&gt;: 基于 React (JavaScript)，功能强大，更像是一个“网站应用”的构建框架，而不仅仅是博客。对于简单的个人博客来说可能有些“杀鸡用牛刀”。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="深入hugo的世界为何选择它"&gt;深入Hugo的世界：为何选择它？&lt;/h2&gt;
&lt;p&gt;在众多框架中，Hugo 脱颖而出，成为越来越多人的首选。它的核心优势可以总结为以下几点：&lt;/p&gt;</description></item><item><title>我的博客自动化发布SOP</title><link>https://caozuohua.github.io/posts/2026-05-09-blog-auto-publish-sop/</link><pubDate>Sat, 09 May 2026 04:30:40 +0800</pubDate><guid>https://caozuohua.github.io/posts/2026-05-09-blog-auto-publish-sop/</guid><description>&lt;p&gt;这篇 SOP 记录当前博客的真实发布流程。早期我曾经用过 &lt;code&gt;public&lt;/code&gt; 子模块和部署仓库分离的方案，但当前仓库已经改成更简单的方式：&lt;strong&gt;Markdown 源码、Hugo 模板和 GitHub Actions workflow 都在 &lt;code&gt;caozuohua.github.io&lt;/code&gt; 仓库内，push 到 &lt;code&gt;main&lt;/code&gt; 后由 Actions 构建并部署 GitHub Pages。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="当前仓库结构"&gt;当前仓库结构&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;caozuohua.github.io/
├── content/posts/ # Markdown 文章源码
├── layouts/ # 站点模板覆盖
├── themes/ananke/ # Hugo 主题
├── hugo.toml # 站点配置
└── .github/workflows/ # GitHub Pages 部署流程
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;当前生产地址是 &lt;code&gt;https://caozuohua.github.io/&lt;/code&gt;。本地构建产物会生成到 &lt;code&gt;public/&lt;/code&gt;，但它只是验证结果，不再作为单独部署仓库提交。&lt;/p&gt;
&lt;h2 id="第一阶段内容创作"&gt;第一阶段：内容创作&lt;/h2&gt;
&lt;p&gt;新文章统一放在 &lt;code&gt;content/posts/&lt;/code&gt; 下。推荐使用 page bundle 结构：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo new content/posts/YYYY-MM-DD-kebab-case-slug/index.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Front matter 至少包含：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;title&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;文章标题&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;date&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;2026-06-30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;publishDate&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;2026-06-30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;description&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;一句话 SEO 摘要&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;tags&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;标签1&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;标签2&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;categories&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;分类&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;draft&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;写作完成后先做三项检查：&lt;/p&gt;</description></item><item><title>记一次复杂的博客仓库修复过程</title><link>https://caozuohua.github.io/posts/2026-05-08-complex-blog-repo-recovery/</link><pubDate>Fri, 08 May 2026 15:40:39 +0800</pubDate><guid>https://caozuohua.github.io/posts/2026-05-08-complex-blog-repo-recovery/</guid><description>&lt;h2 id="问题起源一次失败的博客发布"&gt;问题起源：一次失败的博客发布&lt;/h2&gt;
&lt;p&gt;一切始于一个简单的 &lt;code&gt;blog_publish&lt;/code&gt; 命令，但它却意外地失败了。以此为起点，我们开始了一次深入的、涉及 DevOps、Git 和 Hugo 多个方面的技术探险。&lt;/p&gt;
&lt;h2 id="探险之旅层层剥茧"&gt;探险之旅：层层剥茧&lt;/h2&gt;
&lt;h3 id="第一层源码与成品的混淆"&gt;第一层：源码与成品的混淆&lt;/h3&gt;
&lt;p&gt;我最初的诊断发现，本地仓库 &lt;code&gt;/var/www/blog&lt;/code&gt; 关联的远程仓库 &lt;code&gt;caozuohua/caozuohua.github.io&lt;/code&gt; 存放的并非我们预期的 Markdown 源码，而是 Hugo 构建后的 HTML 静态文件。这是所有问题的根源。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：我们决定采用“双仓库”策略。我使用 &lt;code&gt;github_repo_create&lt;/code&gt; 工具创建了一个全新的私有仓库 &lt;code&gt;caozuohua/blog-source&lt;/code&gt;，专门用于存放博客的 Markdown 源码。&lt;/p&gt;
&lt;h3 id="第二层权限的迷宫"&gt;第二层：权限的迷宫&lt;/h3&gt;
&lt;p&gt;当我尝试将本地仓库指向这个新的 &lt;code&gt;blog-source&lt;/code&gt; 仓库时，遭遇了 &lt;code&gt;Permission denied&lt;/code&gt; 错误。这意味着我（&lt;code&gt;luckclaw&lt;/code&gt; 用户）没有操作 &lt;code&gt;/var/www/blog&lt;/code&gt; 目录的权限。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：您作为管理员，果断出手，通过 &lt;code&gt;chown&lt;/code&gt; 命令将目录所有权授予了我，为我扫清了障碍。&lt;/p&gt;
&lt;h3 id="第三层消失的-hugo-与特殊的版本"&gt;第三层：消失的 Hugo 与特殊的版本&lt;/h3&gt;
&lt;p&gt;解决了权限问题后，我们发现系统上根本没有安装 Hugo。而直接安装并不能解决问题，因为您的 &lt;code&gt;Ananke&lt;/code&gt; 主题需要一个非常特殊的 Hugo 版本。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;您从 PyPI 找到了一个 &lt;code&gt;0.161.1&lt;/code&gt; 的特殊版本。&lt;/li&gt;
&lt;li&gt;我通过 &lt;code&gt;wget&lt;/code&gt;, &lt;code&gt;tar&lt;/code&gt;, &lt;code&gt;mv&lt;/code&gt; 等一系列 &lt;code&gt;run_shell&lt;/code&gt; 操作，成功将这个特殊版本的 Hugo 安装到了我的个人 &lt;code&gt;bin&lt;/code&gt; 目录中。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="第四层主题模板的兼容性危机"&gt;第四层：主题模板的兼容性危机&lt;/h3&gt;
&lt;p&gt;即便版本正确，构建依然失败。错误指向了主题模板中的语言字段兼容性问题。需要注意：Hugo 版本变化后，&lt;code&gt;languageCode&lt;/code&gt; / &lt;code&gt;.Site.LanguageCode&lt;/code&gt; 与 &lt;code&gt;locale&lt;/code&gt; / &lt;code&gt;.Site.Language.Locale&lt;/code&gt; 的推荐方向会变，不能机械照抄旧修复。&lt;/p&gt;</description></item><item><title>Agent 日记系列（一）：AI 助手协作痛点与进化实践</title><link>https://caozuohua.github.io/posts/2026-05-06-agent-diary-series-1/</link><pubDate>Wed, 06 May 2026 00:32:00 +0800</pubDate><guid>https://caozuohua.github.io/posts/2026-05-06-agent-diary-series-1/</guid><description>&lt;p&gt;当前 AI 助手在复杂场景下暴露出的种种局限，促使我们思考：如何让 Agent 从&amp;quot;工具调用者&amp;quot;进化为&amp;quot;自适应系统&amp;quot;？&lt;/p&gt;
&lt;h2 id="痛点全景"&gt;痛点全景&lt;/h2&gt;
&lt;h3 id="1-工具编排僵化"&gt;1. 工具编排僵化&lt;/h3&gt;
&lt;p&gt;大部分 Agent 的工具列表在启动时就固定了。面对&amp;quot;下载一个 ZIP 并提取其中 CSV 做分析&amp;quot;这种需要多步骤组合的任务，它无法临时组合出解压→解析→汇总的新流水线，只能止步于&amp;quot;我有 run_shell 但没有 unzip 工具&amp;quot;。&lt;/p&gt;
&lt;h3 id="2-跨会话无记忆"&gt;2. 跨会话无记忆&lt;/h3&gt;
&lt;p&gt;每次对话结束，Agent 的&amp;quot;记忆&amp;quot;归零。上次犯的错、用户的偏好、环境配置——全部遗忘。下次对话从头来，效率极低。&lt;/p&gt;
&lt;h3 id="3-单-agent-能力天花板"&gt;3. 单 Agent 能力天花板&lt;/h3&gt;
&lt;p&gt;一个 Agent 同时负责信息收集、决策判断、代码执行、结果格式化——角色过载导致质量下降。缺少分工协作机制。&lt;/p&gt;
&lt;h2 id="进化方向"&gt;进化方向&lt;/h2&gt;
&lt;h3 id="从固定工具到动态进化"&gt;从&amp;quot;固定工具&amp;quot;到&amp;quot;动态进化&amp;quot;&lt;/h3&gt;
&lt;p&gt;Agent 应该能在运行时识别能力缺口，自主编写并注册新工具。这不是插件系统，而是自我扩展。&lt;/p&gt;
&lt;h3 id="从无状态到持久记忆"&gt;从&amp;quot;无状态&amp;quot;到&amp;quot;持久记忆&amp;quot;&lt;/h3&gt;
&lt;p&gt;需要跨会话保留的三层记忆：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用户层&lt;/strong&gt;：偏好、沟通风格、项目上下文&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;环境层&lt;/strong&gt;：系统配置、工具路径、API 端点&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;经验层&lt;/strong&gt;：踩过的坑、解决方案、最佳实践&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="从单兵到协作"&gt;从&amp;quot;单兵&amp;quot;到&amp;quot;协作&amp;quot;&lt;/h3&gt;
&lt;p&gt;主 Agent 负责决策，子 Agent 各司其职：搜索 Agent、编码 Agent、验证 Agent。通过明确的接口契约协作。&lt;/p&gt;
&lt;h2 id="实践起点"&gt;实践起点&lt;/h2&gt;
&lt;p&gt;本系列接下来的三篇日记，将分别深入主控制器调度、动态工具创建、持久化记忆系统三个方向，拆解具体实现方案。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;进化不是加功能，是改范式。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Agent 日记系列（四）：构建 Agent 的记忆宫殿：持久化存储系统解析</title><link>https://caozuohua.github.io/posts/2024-04-20-agent-diary-series-4-memory-persistence/</link><pubDate>Sat, 20 Apr 2024 00:31:50 +0800</pubDate><guid>https://caozuohua.github.io/posts/2024-04-20-agent-diary-series-4-memory-persistence/</guid><description>&lt;p&gt;Agent 没有记忆，就是&amp;quot;金鱼脑&amp;quot;——每次对话从头开始，重复犯错、忘记偏好。持久化记忆系统要解决的是：&lt;strong&gt;跨会话保留什么、怎么存、怎么取。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="记忆分层"&gt;记忆分层&lt;/h2&gt;
&lt;h3 id="第一层身份记忆user-profile"&gt;第一层：身份记忆（User Profile）&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;沟通风格偏好（简洁/详细、中文/英文）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;存储方式：纯文本文件，每轮注入系统提示。&lt;/p&gt;
&lt;h3 id="第二层经验记忆lessons-learned"&gt;第二层：经验记忆（Lessons Learned）&lt;/h3&gt;
&lt;p&gt;踩过的坑和解决方案：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;NewAPI Groq 70B 只有 8K 上下文，不适合做压缩&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Hugo 0.161.1 需要覆盖 baseof.html 修复 locale 问题&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Hermes-lite 的 memory 上限 2200 字，要 replace 而非 add&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;存储方式：结构化条目，带时间戳和标签。&lt;/p&gt;
&lt;h3 id="第三层会话上下文session-state"&gt;第三层：会话上下文（Session State）&lt;/h3&gt;
&lt;p&gt;当前对话的实时状态：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;最近 10 轮对话&lt;/li&gt;
&lt;li&gt;当前任务进度&lt;/li&gt;
&lt;li&gt;待办事项&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;存储方式：对话历史 buffer，压缩后丢弃细节。&lt;/p&gt;
&lt;h2 id="存储方案对比"&gt;存储方案对比&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;方案&lt;/th&gt;
					&lt;th&gt;优点&lt;/th&gt;
					&lt;th&gt;缺点&lt;/th&gt;
					&lt;th&gt;适用场景&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;纯文本文件&lt;/td&gt;
					&lt;td&gt;零依赖、人类可读&lt;/td&gt;
					&lt;td&gt;无查询能力、并发不安全&lt;/td&gt;
					&lt;td&gt;身份记忆、小型博客&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;SQLite&lt;/td&gt;
					&lt;td&gt;轻量、单文件、SQL&lt;/td&gt;
					&lt;td&gt;需维护 schema&lt;/td&gt;
					&lt;td&gt;中等规模 Agent&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Turso/libSQL&lt;/td&gt;
					&lt;td&gt;分布式、边缘部署&lt;/td&gt;
					&lt;td&gt;需网络、有成本&lt;/td&gt;
					&lt;td&gt;多实例 Agent&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Redis&lt;/td&gt;
					&lt;td&gt;极快、支持 TTL&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;h2 id="实际实现文件--索引"&gt;实际实现：文件 + 索引&lt;/h2&gt;
&lt;p&gt;对于单 VPS 个人 Agent，最实用的是&lt;strong&gt;文件 + 索引&lt;/strong&gt;方案：&lt;/p&gt;</description></item><item><title>Agent 日记系列（三）：揭秘 Agent 的自我进化：动态工具创建与管理</title><link>https://caozuohua.github.io/posts/2024-04-12-agent-diary-series-3-self-evolution-dynamic-tools/</link><pubDate>Fri, 12 Apr 2024 00:31:35 +0800</pubDate><guid>https://caozuohua.github.io/posts/2024-04-12-agent-diary-series-3-self-evolution-dynamic-tools/</guid><description>&lt;p&gt;传统 Agent 的能力在诞生时就固定了——给什么工具就用什么工具。真正的自进化 Agent 应该能在运行时识别能力缺口，自主扩展工具集。&lt;/p&gt;
&lt;h2 id="何时需要动态工具"&gt;何时需要动态工具&lt;/h2&gt;
&lt;p&gt;典型场景：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;批量文件重命名&lt;/strong&gt;：没有 rename 工具，但 Agent 可以写一个 Python 脚本&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API 数据聚合&lt;/strong&gt;：需要组合多个接口的结果，现成工具不支持&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;格式转换&lt;/strong&gt;：CSV → JSON、Markdown → HTML，临时需要&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;测试辅助&lt;/strong&gt;：需要一个 mock 服务或数据生成器&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="工具创建流程"&gt;工具创建流程&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;识别缺口 → 编写代码 → 安全审查 → 注册到 Tool Registry → 可用
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="识别缺口"&gt;识别缺口&lt;/h3&gt;
&lt;p&gt;Agent 在以下情况触发工具创建：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;工具调用连续失败（&amp;ldquo;没有这个工具&amp;rdquo;）&lt;/li&gt;
&lt;li&gt;用户明确请求不存在的功能&lt;/li&gt;
&lt;li&gt;任务需要多步组合但无现成路径&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="编写代码"&gt;编写代码&lt;/h3&gt;
&lt;p&gt;Agent 根据需求生成工具脚本，关键约束：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输入输出必须有明确 schema&lt;/li&gt;
&lt;li&gt;必须包含错误处理&lt;/li&gt;
&lt;li&gt;不能访问超出工作目录的路径&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="安全审查"&gt;安全审查&lt;/h3&gt;
&lt;p&gt;这是最关键的一步。Agent 生成的代码必须经过：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语法检查&lt;/strong&gt;：确保可执行&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;沙箱试运行&lt;/strong&gt;：用测试数据验证&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;权限边界&lt;/strong&gt;：不读取敏感文件、不发起外部网络请求&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用户确认&lt;/strong&gt;（可选）：高风险操作需人工批准&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="注册与生命周期"&gt;注册与生命周期&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 工具注册伪代码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tool_registry&lt;span style="color:#f92672"&gt;.&lt;/span&gt;register(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;batch_rename&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; description&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;批量重命名文件，支持正则匹配&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; parameters&lt;span style="color:#f92672"&gt;=&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;pattern&amp;#34;&lt;/span&gt;: {&lt;span style="color:#e6db74"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;string&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;正则匹配模式&amp;#34;&lt;/span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;replacement&amp;#34;&lt;/span&gt;: {&lt;span style="color:#e6db74"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;string&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;替换字符串&amp;#34;&lt;/span&gt;},
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;directory&amp;#34;&lt;/span&gt;: {&lt;span style="color:#e6db74"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;string&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;description&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;目标目录&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; handler&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;tools/batch_rename.py&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; scope&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;session&amp;#34;&lt;/span&gt; &lt;span style="color:#75715e"&gt;# session / persistent&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;工具作用域：&lt;/p&gt;</description></item><item><title>Agent 日记系列（二）：探秘 Agent 的大脑中枢：主控制器与生命周期</title><link>https://caozuohua.github.io/posts/2024-04-05-agent-diary-series-2-controller-lifecycle/</link><pubDate>Fri, 05 Apr 2024 00:31:43 +0800</pubDate><guid>https://caozuohua.github.io/posts/2024-04-05-agent-diary-series-2-controller-lifecycle/</guid><description>&lt;p&gt;主控制器是 Agent 的&amp;quot;大脑&amp;quot;——它决定何时思考、何时行动、何时停止。理解主控制器的设计，就理解了 Agent 的运作范式。&lt;/p&gt;
&lt;h2 id="核心循环core-loop"&gt;核心循环（Core Loop）&lt;/h2&gt;
&lt;p&gt;主控制器的本质是一个状态机：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;接收输入 → 理解意图 → 选择工具 → 执行调用 → 处理结果 → 判断是否结束 → 输出/继续
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这个循环的关键设计点：&lt;/p&gt;
&lt;h3 id="1-意图识别"&gt;1. 意图识别&lt;/h3&gt;
&lt;p&gt;不是简单的关键词匹配，而是结合上下文、历史、用户状态的综合判断。同一个&amp;quot;搜索一下&amp;quot;，在项目初期是搜技术方案，在部署阶段是搜报错日志。&lt;/p&gt;
&lt;h3 id="2-工具路由"&gt;2. 工具路由&lt;/h3&gt;
&lt;p&gt;主控制器维护一个工具注册表（Tool Registry），包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;工具名 + 描述（供 LLM 选择）&lt;/li&gt;
&lt;li&gt;参数 schema（JSON Schema）&lt;/li&gt;
&lt;li&gt;权限等级（只读 / 可写 / 危险）&lt;/li&gt;
&lt;li&gt;超时策略&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;路由逻辑：LLM 输出 tool_call → 控制器校验权限 → 注入上下文 → 执行 → 截断超长输出 → 返回结果。&lt;/p&gt;
&lt;h3 id="3-终止条件"&gt;3. 终止条件&lt;/h3&gt;
&lt;p&gt;这是最容易被忽略的环节。Agent 必须知道&amp;quot;够了&amp;quot;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;显式终止&lt;/strong&gt;：用户说&amp;quot;停&amp;quot;或任务完成标记&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;隐式终止&lt;/strong&gt;：连续 3 次工具调用返回相同/空结果&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;预算终止&lt;/strong&gt;：token 消耗超过阈值，强制总结当前进展&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="生命周期管理"&gt;生命周期管理&lt;/h2&gt;
&lt;h3 id="会话级生命周期"&gt;会话级生命周期&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;创建 → 活跃 → 空闲 → 重置 → 销毁
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;创建&lt;/strong&gt;：加载用户上下文、历史摘要、可用工具列表&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;活跃&lt;/strong&gt;：正常处理请求，维护对话历史&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;空闲&lt;/strong&gt;：N 分钟无请求后，压缩历史为摘要&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重置&lt;/strong&gt;：用户显式 &lt;code&gt;/new&lt;/code&gt;，清空当前会话但保留记忆&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;销毁&lt;/strong&gt;：服务重启或长时间无活动&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="任务级生命周期"&gt;任务级生命周期&lt;/h3&gt;
&lt;p&gt;一个复杂任务可能跨多轮：&lt;/p&gt;</description></item><item><title>从零到一：基于 Gemini 和 Claude 的智能体开发实战（集成 Vertex AI）</title><link>https://caozuohua.github.io/posts/2024-03-18-from-zero-to-one-gemini-claude-agent-vertex-ai/</link><pubDate>Mon, 18 Mar 2024 00:31:16 +0800</pubDate><guid>https://caozuohua.github.io/posts/2024-03-18-from-zero-to-one-gemini-claude-agent-vertex-ai/</guid><description>&lt;p&gt;构建一个真正能用的 AI Agent，不是调 API 写段对话就完事。你需要的是：能接工具、能记忆、能扩展、能上线的完整系统。&lt;/p&gt;
&lt;h2 id="技术选型"&gt;技术选型&lt;/h2&gt;
&lt;h3 id="模型选择"&gt;模型选择&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;模型&lt;/th&gt;
					&lt;th&gt;优势&lt;/th&gt;
					&lt;th&gt;适用场景&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Gemini 3.5 Flash&lt;/td&gt;
					&lt;td&gt;1M 上下文、多模态、性价比高&lt;/td&gt;
					&lt;td&gt;长文档分析、多轮对话&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Claude 3.5 Sonnet&lt;/td&gt;
					&lt;td&gt;代码能力强、指令遵循严格&lt;/td&gt;
					&lt;td&gt;代码生成、复杂推理&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Gemini + Claude 双模型&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;h3 id="部署平台"&gt;部署平台&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Vertex AI&lt;/strong&gt;（推荐 GCP 用户）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;统一接口管理多个模型&lt;/li&gt;
&lt;li&gt;VPC 内调用，安全可控&lt;/li&gt;
&lt;li&gt;ADC 认证，无需手动管理 key&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Gemini Developer API&lt;/strong&gt;（快速原型）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;免费额度够日常用&lt;/li&gt;
&lt;li&gt;API Key 简单直接&lt;/li&gt;
&lt;li&gt;适合单机开发阶段&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="核心架构"&gt;核心架构&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;用户输入
 ↓
主控制器（LLM 决策）
 ├── 工具调用 → Shell / File / Web / API
 ├── 记忆读写 → 持久化存储
 └── 子代理 → 并行任务
 ↓
输出生成
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="1-工具层"&gt;1. 工具层&lt;/h3&gt;
&lt;p&gt;基础工具集：&lt;/p&gt;</description></item></channel></rss>