<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>韩老魔的博客</title>
  
  
  <link href="https://0xhanniba1.github.io/atom.xml" rel="self"/>
  
  <link href="https://0xhanniba1.github.io/"/>
  <updated>2026-03-06T15:16:55.531Z</updated>
  <id>https://0xhanniba1.github.io/</id>
  
  <author>
    <name>0xHanniba1</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>2026-W10</title>
    <link href="https://0xhanniba1.github.io/2026/03/2026-W10/"/>
    <id>https://0xhanniba1.github.io/2026/03/2026-W10/</id>
    <published>2026-03-02T05:32:29.000Z</published>
    <updated>2026-03-06T15:16:55.531Z</updated>
    
    <content type="html"><![CDATA[<h2 id="每日记录">每日记录</h2><h3 id="2026-03-02-周一">2026-03-02(周一)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 调研监护仪自动化测试方法</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 面试被鸽了</li></ul></li><li><strong>反思</strong>：<ul><li>MCP is dead. Long live the CLI</li><li>如果用 Claude code + MCP 来控制监护仪？</li></ul></li></ul><h3 id="2026-03-03-周二">2026-03-03(周二)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 完成监护仪UI 自动化项目：Monitor-eye</li></ul></li><li><strong>反思</strong>：<ul><li>如果监护仪无法使用 VNC 远程控制，得另想办法</li></ul></li></ul><h3 id="2026-03-04-周三">2026-03-04(周三)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 收到 offer，整理入职材料</li></ul></li><li><strong>反思</strong>：<ul><li>得开始构建 soulwork 测试用例集以及落地接口自动化</li></ul></li></ul><h3 id="2026-03-06-周五">2026-03-06(周五)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 体检</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 通过 mitmproxy 抓包导出所有接口，进行测试</li></ul></li><li><strong>反思</strong>：<ul><li>梳理测试大架构，后续怎么从 0 到 1 开展</li></ul></li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;每日记录&quot;&gt;每日记录&lt;/h2&gt;
&lt;h3 id=&quot;2026-03-02-周一&quot;&gt;2026-03-02(周一)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;随记&lt;/strong&gt;：
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;</summary>
      
    
    
    
    
    <category term="2026zk" scheme="https://0xhanniba1.github.io/tags/2026zk/"/>
    
  </entry>
  
  <entry>
    <title>2026-W09</title>
    <link href="https://0xhanniba1.github.io/2026/02/2026-W09/"/>
    <id>https://0xhanniba1.github.io/2026/02/2026-W09/</id>
    <published>2026-02-23T01:20:34.000Z</published>
    <updated>2026-03-01T14:53:34.237Z</updated>
    
    <content type="html"><![CDATA[<h2 id="每日记录">每日记录</h2><h3 id="2026-02-23-周一">2026-02-23(周一)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 确认AIGC方向</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 创建了一个 job-hunter skill，分析了十几个岗位的匹配度</li></ul></li><li><strong>反思</strong>：</li></ul><h3 id="2026-02-24-周二">2026-02-24(周二)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 学习ai agent 测试方法</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 安装 mitmproxy 进行手机端抓包</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 借助 claude code 发现 soulwork 小程序的多个 P0/P1漏洞</li></ul></li><li><strong>反思</strong>：<ul><li>mitmproxy 是 cli 版，对比其他抓包软件，目前在 AI 的加持下，cli 是最适配的</li></ul></li></ul><h3 id="2026-02-25-周三">2026-02-25(周三)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 面试 soulwork</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 安装 tailscale，成功在手机上可以使用 Claude code</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 创建 tech 调研 skill</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 使用 deepeval 来测试 soulwork</li></ul></li><li><strong>反思</strong>：</li></ul><h3 id="2026-02-26-周四">2026-02-26(周四)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> api 转 cli <a href="https://github.com/alexknowshtml/api2cli">https://github.com/alexknowshtml/api2cli</a></li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 跑通了 langsmith：设置了 50 个用例 x 4个评估器</li></ul></li><li><strong>反思</strong>：<ul><li>DeepEval：想快速跑通评估+CI；LangSmith：需要 Tracing 可观测性+数据集管理+实验对比</li></ul></li></ul><h3 id="2026-02-27-周五">2026-02-27(周五)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 通过 mcp，把 codex/gemini 全串起来，codex 用来审查代码，gemini 可以用来给文章配图</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 面试后，整理了soulwork 的测试流程文档以及提到问题解决方案</li></ul></li><li><strong>反思</strong>：</li></ul><h3 id="2026-02-28-周六">2026-02-28(周六)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> Keploy：API, Integration, E2E，其中集成测试最强 <a href="https://github.com/keploy/keploy">https://github.com/keploy/keploy</a></li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> tech-radar skill 从全页读取优化成 goal-driven，预估节省 80% token</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> obsidian cli 配置，把文档全部同步到笔记</li></ul></li><li><strong>反思</strong>：</li></ul><h3 id="2026-03-01-周日">2026-03-01(周日)</h3><ul><li><p><strong>随记</strong>：</p><ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 试玩了一下 Dify+n8n，出现了点问题，还是得靠 codex 解决。</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 整理一套自动生成测试用例的 skill</li></ul><img src="/2026/02/2026-W09/image-20260301225021952.png" class="" alt="image-20260301225021952"><ul><li>[ ]</li></ul></li><li><p><strong>反思</strong>：</p><ul><li>有个 AI 应用工程师的岗位 JD，以前想的是原子化 skill，一直没有做个Agent，打通内部流程。</li></ul></li></ul><h2 id="本周复盘">本周复盘</h2><ul><li><strong>Keep (继续保持)</strong>：*</li><li><strong>Improve (需要改进)</strong>：*</li><li><strong>Try (下周尝试)</strong>：*</li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;每日记录&quot;&gt;每日记录&lt;/h2&gt;
&lt;h3 id=&quot;2026-02-23-周一&quot;&gt;2026-02-23(周一)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;随记&lt;/strong&gt;：
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;</summary>
      
    
    
    
    
    <category term="2026zk" scheme="https://0xhanniba1.github.io/tags/2026zk/"/>
    
  </entry>
  
  <entry>
    <title>2026-W07</title>
    <link href="https://0xhanniba1.github.io/2026/02/2026-W07/"/>
    <id>https://0xhanniba1.github.io/2026/02/2026-W07/</id>
    <published>2026-02-09T14:43:24.000Z</published>
    <updated>2026-02-12T14:38:18.194Z</updated>
    
    <content type="html"><![CDATA[<h2 id="本周概览-summary">本周概览 (Summary)</h2><ul><li><strong>一句话总结</strong>：</li><li><strong>进度</strong>：</li></ul><h2 id="每日记录-daily-log">每日记录 (Daily Log)</h2><h3 id="2026-02-09-周一">2026-02-09(周一)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 修改 claude code 的输出风格 output_style为白描美学</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 搭建 Obsidian，配置 Claude Code 通过 MCP 管理笔记</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 整理 Claude Skill 构建指南总结</li></ul></li><li><strong>反思</strong>：<ul><li>后续看看 obsidian 里文章怎么双向链接，构建自己的知识库</li></ul></li></ul><h3 id="2026-02-10-周二">2026-02-10(周二)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 整理文章2026 Agentic Coding Trends Report</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 学习openclaw 的核心引擎 Pi，Pi 拥有所有代理中最短的系统提示（system prompt），只4 个基本工具：Read、Write、Edit、Bash。</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> <a href="https://github.com/forrestchang/andrej-karpathy-skills">andrej-karpathy-skills</a>避免 claude code 乱写代码</li></ul></li><li><strong>反思</strong>：<ul><li>Pi+skills 是否能构建垂直 agent</li></ul></li></ul><h3 id="2026-02-11-周三">2026-02-11(周三)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 收拾东西回家</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> Obsidian 更新了 cli 版，后续可以更加方便使用 ai 控制</li></ul></li><li><strong>反思</strong>：<ul><li>后面还是搞个 mac mini</li></ul></li></ul><h3 id="2026-02-12-周四">2026-02-12(周四)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 终于是到家了</li></ul></li><li><strong>反思</strong>：<ul><li>OpenClaw接入类似小智esp32</li><li>Home Assistant</li></ul></li></ul><h2 id="本周复盘-weekly-review">本周复盘 (Weekly Review)</h2><ul><li><strong>Keep (继续保持)</strong>：*</li><li><strong>Improve (需要改进)</strong>：*</li><li><strong>Try (下周尝试)</strong>：*</li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;本周概览-summary&quot;&gt;本周概览 (Summary)&lt;/h2&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;h2 id=&quot;每日记录-daily-log&quot;&gt;</summary>
      
    
    
    
    
    <category term="2026zk" scheme="https://0xhanniba1.github.io/tags/2026zk/"/>
    
  </entry>
  
  <entry>
    <title>2026-W06</title>
    <link href="https://0xhanniba1.github.io/2026/02/2026-W06/"/>
    <id>https://0xhanniba1.github.io/2026/02/2026-W06/</id>
    <published>2026-02-02T11:10:41.000Z</published>
    <updated>2026-02-08T15:40:05.282Z</updated>
    
    <content type="html"><![CDATA[<h2 id="本周概览-summary">本周概览 (Summary)</h2><ul><li><strong>一句话总结</strong>：</li><li><strong>进度</strong>：</li></ul><h2 id="每日记录-daily-log">每日记录 (Daily Log)</h2><h3 id="2026-02-02-周一">2026-02-02 (周一)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> spotify 到期了，写一个本地音乐播放器</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> llm-eval 学习模块 1-2</li></ul></li><li><strong>反思</strong>：<ul><li>有点焦虑，注意力不集中了</li></ul></li></ul><h3 id="2026-02-03-周二">2026-02-03 (周二)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 休息</li></ul></li><li><strong>反思</strong>：<ul><li>休息</li></ul></li></ul><h3 id="2026-02-04-周三">2026-02-04 (周三)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 学习了 BDD基础</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 安装了前端 skill：ui-ux-pro-max，做一个登录界面看看效果</li></ul></li><li><strong>反思</strong>：<ul><li>测试必须关注做什么，而不是怎么做</li><li>codex 和 claude code 马上又要发布新模型了，后续可以深入学习如何使用</li></ul></li></ul><h3 id="2026-02-05-周四">2026-02-05 (周四)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 继续学习 BDD</li></ul></li><li><strong>反思</strong>：<ul><li>没心思学习了</li></ul></li></ul><h3 id="2026-02-06-周五">2026-02-06 (周五)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 基于原来主题创建一个了新主题 hexo-theme-hanli</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 做了一个自然语言转成 SQL 的 vanna-demo</li></ul></li><li><strong>反思</strong>：<ul><li>需要读一下 claude code 官方使用文档</li></ul></li></ul><h3 id="2026-02-07-周六">2026-02-07 (周六)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 使用 brainstorm 制定了一个测试学习计划，已经快学完第一轮</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 使用 brainstorm 发散下 AI 时代测试有什么不同</li></ul></li><li><strong>反思</strong>：<ul><li>今天使用了 codex5.3，感觉还是 cc 做计划，codex 执行</li></ul></li></ul><h3 id="2026-02-08-周日">2026-02-08 (周日)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> codex --yolo 也开启最高权限试了用 skill 学习，做中学和迭代是两个核心点，但是不如人意，没有 cc 好</li></ul></li><li><strong>反思</strong>：<ul><li>单接口如何随意串联起来 传统 vs AI</li><li>ODC(正交缺陷分类) RCA(根因分析)</li></ul></li></ul><h2 id="本周复盘-weekly-review">本周复盘 (Weekly Review)</h2><ul><li><strong>Keep (继续保持)</strong>：*</li><li><strong>Improve (需要改进)</strong>：*</li><li><strong>Try (下周尝试)</strong>：*</li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;本周概览-summary&quot;&gt;本周概览 (Summary)&lt;/h2&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;h2 id=&quot;每日记录-daily-log&quot;&gt;</summary>
      
    
    
    
    
    <category term="2026zk" scheme="https://0xhanniba1.github.io/tags/2026zk/"/>
    
  </entry>
  
  <entry>
    <title>Claude Code 完整使用指南</title>
    <link href="https://0xhanniba1.github.io/2026/02/claude-code-guide/"/>
    <id>https://0xhanniba1.github.io/2026/02/claude-code-guide/</id>
    <published>2026-02-01T08:06:22.000Z</published>
    <updated>2026-02-01T08:53:48.039Z</updated>
    
    <content type="html"><![CDATA[<h1 id="claude-code-完整使用指南">Claude Code 完整使用指南</h1><blockquote><p>来源：Boris Cherny (@bcherny) - Claude Code 团队成员分享的 10 个高效技巧</p></blockquote><hr><h2 id="目录">目录</h2><ol><li><a href="#git-worktree">Git Worktree 并行开发</a></li><li><a href="#plan-mode">Plan Mode 规划模式</a></li><li><a href="#claude-md">CLAUDE.md 记忆文件</a></li><li><a href="#skills">自定义 Skills</a></li><li><a href="#fix-bug">自主修 Bug</a></li><li><a href="#prompting">提升 Prompting 技巧</a></li><li><a href="#terminal">终端与环境配置</a></li><li><a href="#subagents">使用 Subagents</a></li><li><a href="#data-analysis">数据分析</a></li><li><a href="#learning">用 Claude 学习</a></li></ol><hr><p><a id="git-worktree"></a></p><h1 id="1-git-worktree-并行开发">1. Git Worktree 并行开发</h1><h2 id="核心理念">核心理念</h2><blockquote><p><strong>同时开启多个 worktree，每个运行独立的 Claude 会话，并行工作效率翻倍。</strong></p></blockquote><h2 id="什么是-git-worktree？">什么是 Git Worktree？</h2><p>通常一个 git 仓库只有一个工作目录。<strong>Worktree 允许你从同一个仓库创建多个工作目录</strong>，每个目录可以切换到不同的分支。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">普通方式：</span><br><span class="line">my-project/          ← 只能同时在一个分支工作</span><br><span class="line"></span><br><span class="line">使用 Worktree：</span><br><span class="line">my-project/                    ← 主目录，在 main 分支</span><br><span class="line">my-project/.claude/worktrees/</span><br><span class="line">├── feature-a/                 ← 在 feature-a 分支</span><br><span class="line">├── feature-b/                 ← 在 feature-b 分支</span><br><span class="line">└── bugfix/                    ← 在 bugfix 分支</span><br></pre></td></tr></table></figure><h2 id="为什么配合-claude-code-很强？">为什么配合 Claude Code 很强？</h2><p><strong>传统工作流：</strong></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">让 Claude 做任务 A → 等待完成 → 再做任务 B → 等待完成 → 再做任务 C</span><br></pre></td></tr></table></figure><p><strong>Worktree + Claude 并行工作流：</strong></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">终端1: cd worktree-a &amp;&amp; claude &quot;实现用户登录&quot;     ← 同时进行</span><br><span class="line">终端2: cd worktree-b &amp;&amp; claude &quot;修复支付 bug&quot;    ← 同时进行</span><br><span class="line">终端3: cd worktree-c &amp;&amp; claude &quot;写单元测试&quot;      ← 同时进行</span><br></pre></td></tr></table></figure><p>三个独立的 Claude 会话，互不干扰，同时工作。</p><h2 id="实际操作">实际操作</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 1. 创建 worktree（基于 main 分支）</span></span><br><span class="line">git worktree add .claude/worktrees/feature-login origin/main</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2. 进入并启动 Claude</span></span><br><span class="line"><span class="built_in">cd</span> .claude/worktrees/feature-login</span><br><span class="line">claude</span><br><span class="line"></span><br><span class="line"><span class="comment"># 3. 查看所有 worktree</span></span><br><span class="line">git worktree list</span><br><span class="line"></span><br><span class="line"><span class="comment"># 4. 删除 worktree（完成后清理）</span></span><br><span class="line">git worktree remove .claude/worktrees/feature-login</span><br></pre></td></tr></table></figure><h2 id="设置快捷别名">设置快捷别名</h2><p>在 <code>~/.zshrc</code> 添加：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">alias</span> za=<span class="string">&#x27;cd ~/projects/my-app/.claude/worktrees/a &amp;&amp; claude&#x27;</span></span><br><span class="line"><span class="built_in">alias</span> zb=<span class="string">&#x27;cd ~/projects/my-app/.claude/worktrees/b &amp;&amp; claude&#x27;</span></span><br><span class="line"><span class="built_in">alias</span> zc=<span class="string">&#x27;cd ~/projects/my-app/.claude/worktrees/c &amp;&amp; claude&#x27;</span></span><br></pre></td></tr></table></figure><hr><p><a id="plan-mode"></a></p><h1 id="2-plan-mode-规划模式">2. Plan Mode 规划模式</h1><h2 id="核心理念-2">核心理念</h2><blockquote><p><strong>把精力花在计划上，让 Claude 一次性完成实现。</strong></p></blockquote><h2 id="什么是-plan-mode？">什么是 Plan Mode？</h2><p>Claude Code 的一种工作模式。在这个模式下，Claude <strong>只做规划，不写代码</strong>，直到你确认计划后才开始实现。</p><p>按 <code>Shift+Tab</code> 可以切换模式。</p><h2 id="为什么要用-plan-mode？">为什么要用 Plan Mode？</h2><p><strong>不用 Plan Mode：</strong></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">你：重构 cli.tsx</span><br><span class="line">Claude：好的，我来改...（改了一堆）...出问题了...再改...又出问题...</span><br><span class="line">结果：来回折腾，浪费时间和 token</span><br></pre></td></tr></table></figure><p><strong>用 Plan Mode：</strong></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">你：[Plan Mode] 重构 cli.tsx</span><br><span class="line">Claude：这是我的计划：</span><br><span class="line">  1. 先拆分 A 模块</span><br><span class="line">  2. 再抽取 B 函数</span><br><span class="line">  3. 最后更新 C 接口</span><br><span class="line">你：确认 / 调整计划</span><br><span class="line">Claude：按计划一次性完成</span><br></pre></td></tr></table></figure><h2 id="团队的实战技巧">团队的实战技巧</h2><h3 id="技巧-1：双-claude-审核">技巧 1：双 Claude 审核</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">Claude A (Plan Mode)  →  写计划</span><br><span class="line">                ↓</span><br><span class="line">Claude B              →  以 Staff Engineer 身份审核计划</span><br><span class="line">                ↓</span><br><span class="line">Claude A              →  执行审核后的计划</span><br></pre></td></tr></table></figure><h3 id="技巧-2：出问题立刻回到-plan-mode">技巧 2：出问题立刻回到 Plan Mode</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">执行中发现问题 → 不要硬推 → 立刻切回 Plan Mode → 重新规划</span><br></pre></td></tr></table></figure><h3 id="技巧-3：验证步骤也要规划">技巧 3：验证步骤也要规划</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">不只是规划&quot;怎么构建&quot;</span><br><span class="line">还要规划&quot;怎么验证&quot;：</span><br><span class="line">- 跑哪些测试</span><br><span class="line">- 检查哪些边界情况</span><br><span class="line">- 如何确认功能正常</span><br></pre></td></tr></table></figure><hr><p><a id="claude-md"></a></p><h1 id="3-claude-md-记忆文件">3. <a href="http://CLAUDE.md">CLAUDE.md</a> 记忆文件</h1><h2 id="核心理念-3">核心理念</h2><blockquote><p><strong><a href="http://CLAUDE.md">CLAUDE.md</a> 是你和 Claude 的共享知识库。投入时间维护它，Claude 的表现会越来越好。</strong></p></blockquote><h2 id="什么是-claude-md？">什么是 <a href="http://CLAUDE.md">CLAUDE.md</a>？</h2><p><a href="http://CLAUDE.md">CLAUDE.md</a> 是 Claude Code 的「记忆文件」。每次启动时，Claude 会自动读取这个文件，了解项目背景和你的偏好。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">~/.claude/CLAUDE.md          ← 全局配置，所有项目生效</span><br><span class="line">项目目录/CLAUDE.md           ← 项目配置，仅当前项目生效</span><br></pre></td></tr></table></figure><h2 id="核心用法：让-claude-自己写规则">核心用法：让 Claude 自己写规则</h2><p><strong>关键技巧</strong>：每次纠正 Claude 后，说：</p><blockquote><p>“更新 <a href="http://CLAUDE.md">CLAUDE.md</a>，确保你不再犯这个错误”</p></blockquote><p>Claude 非常擅长为自己写规则。让它自己总结教训，比你手写更有效。</p><h2 id="实战技巧">实战技巧</h2><h3 id="技巧-1：持续迭代">技巧 1：持续迭代</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">发现问题 → 纠正 Claude → 让它更新 CLAUDE.md → 错误率下降</span><br></pre></td></tr></table></figure><h3 id="技巧-2：项目笔记目录">技巧 2：项目笔记目录</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">项目/</span><br><span class="line">├── CLAUDE.md              ← 指向 notes 目录</span><br><span class="line">└── notes/</span><br><span class="line">    ├── architecture.md    ← 架构说明</span><br><span class="line">    ├── api-conventions.md ← API 规范</span><br><span class="line">    └── pr-notes.md        ← 每次 PR 后更新</span><br></pre></td></tr></table></figure><h3 id="技巧-3：分层配置">技巧 3：分层配置</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">~/.claude/CLAUDE.md     → 你的通用偏好（代码风格、语言等）</span><br><span class="line">项目/CLAUDE.md          → 项目特定规则（框架、约定等）</span><br></pre></td></tr></table></figure><h2 id="claude-md-示例内容"><a href="http://CLAUDE.md">CLAUDE.md</a> 示例内容</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"><span class="section"># 项目：电商后台</span></span><br><span class="line"></span><br><span class="line"><span class="section">## 技术栈</span></span><br><span class="line"><span class="bullet">-</span> Next.js 14 + TypeScript</span><br><span class="line"><span class="bullet">-</span> Prisma + PostgreSQL</span><br><span class="line"><span class="bullet">-</span> TailwindCSS</span><br><span class="line"></span><br><span class="line"><span class="section">## 代码规范</span></span><br><span class="line"><span class="bullet">-</span> 使用中文注释</span><br><span class="line"><span class="bullet">-</span> 组件用 PascalCase</span><br><span class="line"><span class="bullet">-</span> 工具函数用 camelCase</span><br><span class="line"><span class="bullet">-</span> 禁止使用 any 类型</span><br><span class="line"></span><br><span class="line"><span class="section">## 常见错误（Claude 请注意）</span></span><br><span class="line"><span class="bullet">-</span> 不要用 moment.js，用 dayjs</span><br><span class="line"><span class="bullet">-</span> API 路由必须做权限校验</span><br><span class="line"><span class="bullet">-</span> 表单必须有 loading 状态</span><br></pre></td></tr></table></figure><h2 id="查看当前记忆">查看当前记忆</h2><p>在 Claude Code 中输入 <code>/memory</code> 可以查看当前加载的记忆文件和 token 占用。</p><hr><p><a id="skills"></a></p><h1 id="4-自定义-skills">4. 自定义 Skills</h1><h2 id="核心理念-4">核心理念</h2><blockquote><p><strong>如果一件事你每天做超过一次，就把它变成 Skill。</strong></p></blockquote><h2 id="什么是-skills？">什么是 Skills？</h2><p>Skills 是 Claude Code 的自定义命令/工作流。你可以把常用操作封装成 <code>/xxx</code> 命令，一键执行。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">/techdebt    → 自动查找重复代码</span><br><span class="line">/sync        → 同步 Slack、GitHub 等信息</span><br><span class="line">/review      → 按团队规范审查代码</span><br></pre></td></tr></table></figure><h2 id="skills-存放位置">Skills 存放位置</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">~/.claude/skills/           ← 全局 skills，所有项目可用</span><br><span class="line">项目/.claude/skills/        ← 项目 skills，仅当前项目可用</span><br></pre></td></tr></table></figure><h2 id="创建一个-skill">创建一个 Skill</h2><p><strong>示例：/techdebt 技术债务检查</strong></p><p>创建文件 <code>~/.claude/skills/techdebt.md</code>：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line">---</span><br><span class="line">name: techdebt</span><br><span class="line"><span class="section">description: 查找并清理技术债务</span></span><br><span class="line"><span class="section">---</span></span><br><span class="line"></span><br><span class="line"><span class="section"># 技术债务检查</span></span><br><span class="line"></span><br><span class="line">请执行以下检查：</span><br><span class="line"></span><br><span class="line"><span class="section">## 1. 重复代码</span></span><br><span class="line"><span class="bullet">-</span> 查找相似度高的代码块</span><br><span class="line"><span class="bullet">-</span> 建议抽取公共函数</span><br><span class="line"></span><br><span class="line"><span class="section">## 2. 未使用代码</span></span><br><span class="line"><span class="bullet">-</span> 查找未使用的变量、函数、导入</span><br><span class="line"><span class="bullet">-</span> 列出可以安全删除的代码</span><br><span class="line"></span><br><span class="line"><span class="section">## 3. TODO/FIXME</span></span><br><span class="line"><span class="bullet">-</span> 列出所有 TODO 和 FIXME 注释</span><br><span class="line"><span class="bullet">-</span> 按优先级排序</span><br></pre></td></tr></table></figure><h2 id="分享-skills">分享 Skills</h2><p>把 <code>.claude/skills/</code> 目录提交到 Git，团队共享：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git add .claude/skills/</span><br><span class="line">git commit -m <span class="string">&quot;添加团队 skills&quot;</span></span><br></pre></td></tr></table></figure><hr><p><a id="fix-bug"></a></p><h1 id="5-自主修-bug">5. 自主修 Bug</h1><h2 id="核心理念-5">核心理念</h2><blockquote><p><strong>不要微观管理 Claude。给它目标，让它自己搞定。</strong></p></blockquote><h2 id="方法-1：slack-mcp-集成">方法 1：Slack MCP 集成</h2><p>启用 Slack MCP 后，可以直接丢 Slack 链接给 Claude：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">你：fix this https://ant.slack.com/archives/C07VBSH...</span><br><span class="line">Claude：（自动读取 Slack 讨论）→ 理解问题 → 定位代码 → 修复</span><br></pre></td></tr></table></figure><h2 id="方法-2：直接指向-ci">方法 2：直接指向 CI</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">你：Go fix the failing CI tests</span><br><span class="line">Claude：（查看 CI 日志）→ 分析失败原因 → 修复代码 → 重新验证</span><br></pre></td></tr></table></figure><h2 id="方法-3：docker-日志排查">方法 3：Docker 日志排查</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">你：分析这个 docker 日志，找出问题并修复</span><br><span class="line">Claude：（读取日志）→ 定位错误 → 追踪到源码 → 修复</span><br></pre></td></tr></table></figure><h2 id="实战工作流对比">实战工作流对比</h2><p><strong>传统方式：</strong></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">1. 看到 Slack 报 bug</span><br><span class="line">2. 复制错误信息</span><br><span class="line">3. 打开代码编辑器</span><br><span class="line">4. 粘贴给 Claude</span><br><span class="line">5. 解释上下文</span><br><span class="line">6. 来回沟通</span><br><span class="line">7. 最终修复</span><br></pre></td></tr></table></figure><p><strong>高效方式：</strong></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">1. 看到 Slack 报 bug</span><br><span class="line">2. 丢链接给 Claude，说 &quot;fix&quot;</span><br><span class="line">3. 完成</span><br></pre></td></tr></table></figure><h2 id="关键心态">关键心态</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">❌ &quot;先看第 45 行，然后检查那个函数，可能是类型问题...&quot;</span><br><span class="line">✅ &quot;fix this&quot;</span><br></pre></td></tr></table></figure><p><strong>相信 Claude 的能力，给它空间自主工作。</strong></p><hr><p><a id="prompting"></a></p><h1 id="6-提升-prompting-技巧">6. 提升 Prompting 技巧</h1><h2 id="核心理念-6">核心理念</h2><blockquote><p><strong>你的 prompt 质量决定 Claude 的输出质量。</strong></p></blockquote><h2 id="技巧-a：让-claude-当你的审查者">技巧 A：让 Claude 当你的审查者</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">你：Grill me on these changes and don&#x27;t make a PR until I pass your test.</span><br><span class="line">（严格审查这些改动，在我通过你的测试之前不要创建 PR）</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">你：Prove to me this works</span><br><span class="line">（证明给我看这能正常工作）</span><br></pre></td></tr></table></figure><h2 id="技巧-b：不满意就重来">技巧 B：不满意就重来</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">你：Knowing everything you know now, scrap this and implement the elegant solution</span><br><span class="line">（基于你现在掌握的所有信息，推翻这个方案，实现一个优雅的解决方案）</span><br></pre></td></tr></table></figure><p>为什么有效：</p><ul><li>Claude 第一次尝试时在「探索」问题</li><li>探索完成后，它对问题有了更深理解</li><li>第二次实现通常更简洁、更优雅</li></ul><h2 id="技巧-c：详细的-spec-减少歧义">技巧 C：详细的 Spec 减少歧义</h2><p><strong>模糊：</strong></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">你：添加一个登录功能</span><br></pre></td></tr></table></figure><p><strong>具体：</strong></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">你：添加用户登录功能：</span><br><span class="line">- 使用 email + 密码登录</span><br><span class="line">- 密码至少 8 位，包含大小写和数字</span><br><span class="line">- 登录失败显示具体错误</span><br><span class="line">- 成功后跳转到 /dashboard</span><br><span class="line">- 使用现有的 AuthContext</span><br></pre></td></tr></table></figure><h2 id="高效-prompt-速查表">高效 Prompt 速查表</h2><table><thead><tr><th>场景</th><th>Prompt</th></tr></thead><tbody><tr><td>让 Claude 审查</td><td>“Grill me on this, don’t let me merge bad code”</td></tr><tr><td>要求证明</td><td>“Prove to me this works”</td></tr><tr><td>重做更好版本</td><td>“Knowing everything you know now, implement the elegant solution”</td></tr><tr><td>质疑方案</td><td>“What are 3 ways this could fail?”</td></tr><tr><td>要求简化</td><td>“This is too complex. Simplify.”</td></tr></tbody></table><hr><p><a id="terminal"></a></p><h1 id="7-终端与环境配置">7. 终端与环境配置</h1><h2 id="核心理念-7">核心理念</h2><blockquote><p><strong>好的工具配置让你更高效。终端是你和 Claude 交互的界面，值得投入时间优化。</strong></p></blockquote><h2 id="推荐终端：ghostty">推荐终端：Ghostty</h2><table><thead><tr><th>特性</th><th>说明</th></tr></thead><tbody><tr><td>同步渲染</td><td>不会闪烁、撕裂</td></tr><tr><td>24-bit 真彩色</td><td>代码高亮更准确</td></tr><tr><td>完整 Unicode</td><td>支持各种符号和 emoji</td></tr><tr><td>高性能</td><td>GPU 加速，响应快</td></tr></tbody></table><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">brew install --cask ghostty</span><br></pre></td></tr></table></figure><h2 id="状态栏配置：-statusline">状态栏配置：/statusline</h2><p>使用 <code>/statusline</code> 命令自定义 Claude Code 状态栏：</p><ul><li><strong>Context 使用量</strong> - 知道还剩多少上下文空间</li><li><strong>当前 Git 分支</strong> - 确认在正确的分支工作</li></ul><h2 id="语音输入：说比打字快-3-倍">语音输入：说比打字快 3 倍</h2><p><strong>快捷键</strong>：连按两次 <code>fn</code> 键（macOS）</p><p>优势：</p><ul><li>说话速度是打字的 3 倍</li><li>更自然地表达复杂需求</li><li>prompt 会更详细、更清晰</li></ul><h2 id="完整环境配置清单">完整环境配置清单</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 1. 安装 Ghostty</span></span><br><span class="line">brew install --cask ghostty</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2. 安装好看的字体</span></span><br><span class="line">brew install --cask font-fira-code-nerd-font</span><br><span class="line"></span><br><span class="line"><span class="comment"># 3. 配置 Ghostty (~/.config/ghostty/config)</span></span><br><span class="line">font-family = <span class="string">&quot;FiraCode Nerd Font Mono&quot;</span></span><br><span class="line">font-size = 14</span><br><span class="line"></span><br><span class="line"><span class="comment"># 4. 开启语音输入</span></span><br><span class="line"><span class="comment"># 系统设置 → 键盘 → 听写 → 开启</span></span><br></pre></td></tr></table></figure><hr><p><a id="subagents"></a></p><h1 id="8-使用-subagents">8. 使用 Subagents</h1><h2 id="核心理念-8">核心理念</h2><blockquote><p><strong>Subagents 让你用多个 Claude 并行工作，同时保持主会话的上下文干净。</strong></p></blockquote><h2 id="什么是-subagents？">什么是 Subagents？</h2><p>主 Claude 可以同时启动多个子代理，每个专注于不同任务：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">主 Claude</span><br><span class="line">    ├── Subagent 1: 探索入口文件</span><br><span class="line">    ├── Subagent 2: 探索组件结构</span><br><span class="line">    ├── Subagent 3: 探索工具实现</span><br><span class="line">    ├── Subagent 4: 探索状态管理</span><br><span class="line">    └── Subagent 5: 探索测试基础设施</span><br></pre></td></tr></table></figure><h2 id="技巧-a：加-“use-subagents”-触发并行计算">技巧 A：加 “use subagents” 触发并行计算</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">你：explore the codebase, use subagents</span><br><span class="line">你：分析这个项目的架构，use subagents</span><br><span class="line">你：找出所有 API 端点，use subagents</span><br></pre></td></tr></table></figure><h2 id="技巧-b：卸载任务，保持主上下文干净">技巧 B：卸载任务，保持主上下文干净</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">主 Claude                          Subagent</span><br><span class="line">   │                                  │</span><br><span class="line">   ├── &quot;去分析 auth 模块&quot; ──────────→ │</span><br><span class="line">   │                                  ├── 读取文件</span><br><span class="line">   │   （主上下文保持干净）              ├── 分析代码</span><br><span class="line">   │                                  ├── 总结发现</span><br><span class="line">   │ ←─────────── 返回分析结果 ────────┤</span><br><span class="line">   │</span><br><span class="line">   └── 基于结果制定重构方案</span><br></pre></td></tr></table></figure><h2 id="常用-subagent-命令">常用 Subagent 命令</h2><table><thead><tr><th>任务</th><th>命令示例</th></tr></thead><tbody><tr><td>探索代码库</td><td><code>use 5 subagents to explore the codebase</code></td></tr><tr><td>并行搜索</td><td><code>search for all usages of AuthContext, use subagents</code></td></tr><tr><td>批量分析</td><td><code>analyze all API endpoints, use subagents</code></td></tr></tbody></table><h2 id="快捷键">快捷键</h2><table><thead><tr><th>快捷键</th><th>功能</th></tr></thead><tbody><tr><td><code>Ctrl+O</code></td><td>展开查看 subagent 详情</td></tr><tr><td><code>Ctrl+B</code></td><td>将 subagent 放到后台运行</td></tr></tbody></table><hr><p><a id="data-analysis"></a></p><h1 id="9-数据分析">9. 数据分析</h1><h2 id="核心理念-9">核心理念</h2><blockquote><p><strong>让 Claude 帮你写 SQL、跑查询、分析数据。你可以 6 个月不写一行 SQL。</strong></p></blockquote><h2 id="工作方式">工作方式</h2><p>Claude Code 可以直接使用数据库 CLI 工具：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">你：查一下过去 7 天的日活用户数</span><br><span class="line">Claude：（自动用 bq 命令查询 BigQuery）</span><br><span class="line">       结果：DAU 平均 12,450，周环比 +8%</span><br></pre></td></tr></table></figure><p>支持任何有 CLI、MCP 或 API 的数据库：</p><ul><li><strong>BigQuery</strong> → <code>bq</code> CLI</li><li><strong>PostgreSQL</strong> → <code>psql</code></li><li><strong>MySQL</strong> → <code>mysql</code></li><li><strong>MongoDB</strong> → <code>mongosh</code></li></ul><h2 id="实战示例">实战示例</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">你：查一下昨天注册转化率</span><br><span class="line">Claude：执行 bq query &quot;SELECT ...&quot;</span><br><span class="line">       结果：注册转化率 3.2%，比前天提升 0.5%</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">你：检查昨天有没有异常数据</span><br><span class="line">Claude：（自动跑多个查询，发现异常点）</span><br><span class="line">       发现：支付成功率在 14:00-15:00 下降到 85%</span><br></pre></td></tr></table></figure><h2 id="好处">好处</h2><table><thead><tr><th>传统方式</th><th>Claude 方式</th></tr></thead><tbody><tr><td>打开数据库客户端</td><td>直接在终端问</td></tr><tr><td>手写 SQL</td><td>用自然语言描述</td></tr><tr><td>复制结果到表格分析</td><td>Claude 直接分析</td></tr></tbody></table><hr><p><a id="learning"></a></p><h1 id="10-用-claude-学习">10. 用 Claude 学习</h1><h2 id="核心理念-10">核心理念</h2><blockquote><p><strong>Claude 不只是工具，还是你的学习伙伴。让它解释代码、画图、帮你理解新概念。</strong></p></blockquote><h2 id="技巧-a：开启解释模式">技巧 A：开启解释模式</h2><p>在 <code>/config</code> 中设置输出风格为 <code>Explanatory</code> 或 <code>Learning</code>：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">Claude：我要修改这个函数...</span><br><span class="line"></span><br><span class="line">       **为什么这样改：**</span><br><span class="line">       原来的实现有 N+1 查询问题，每次循环都会请求数据库。</span><br><span class="line">       改用批量查询可以减少 99% 的数据库调用。</span><br></pre></td></tr></table></figure><h2 id="技巧-b：生成-html-演示文稿">技巧 B：生成 HTML 演示文稿</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">你：生成一个 HTML 演示文稿，解释这个模块的工作原理</span><br></pre></td></tr></table></figure><p>Claude 会创建带有清晰章节、代码高亮、流程图的专业演示。</p><h2 id="技巧-c：用-ascii-图理解架构">技巧 C：用 ASCII 图理解架构</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">你：画一个 ASCII 图解释这个系统的数据流</span><br></pre></td></tr></table></figure><p>输出：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">┌─────────┐    ┌─────────┐    ┌─────────┐</span><br><span class="line">│  Client │───→│   API   │───→│   DB    │</span><br><span class="line">└─────────┘    └────┬────┘    └─────────┘</span><br><span class="line">                    │</span><br><span class="line">                    ▼</span><br><span class="line">              ┌─────────┐</span><br><span class="line">              │  Cache  │</span><br><span class="line">              └─────────┘</span><br></pre></td></tr></table></figure><h2 id="技巧-d：间隔重复学习">技巧 D：间隔重复学习</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">你：/learn React 的 fiber 架构</span><br><span class="line"></span><br><span class="line">Claude：请先解释你目前对 fiber 的理解。</span><br><span class="line"></span><br><span class="line">你：fiber 是一种新的调度算法...</span><br><span class="line"></span><br><span class="line">Claude：基本正确，但有几点需要补充...</span><br><span class="line">       问题：fiber 如何处理优先级中断？</span><br></pre></td></tr></table></figure><h2 id="学习场景速查">学习场景速查</h2><table><thead><tr><th>场景</th><th>命令</th></tr></thead><tbody><tr><td>理解代码</td><td>“解释这个函数，假设我是新手”</td></tr><tr><td>学习架构</td><td>“画 ASCII 图解释这个系统”</td></tr><tr><td>深入原理</td><td>“为什么要这样设计？有什么替代方案？”</td></tr><tr><td>制作分享</td><td>“生成 HTML 演示文稿解释这个模块”</td></tr></tbody></table><hr><h1 id="总结">总结</h1><table><thead><tr><th>#</th><th>技巧</th><th>核心要点</th></tr></thead><tbody><tr><td>1</td><td>Git Worktree</td><td>多个 worktree 并行开发</td></tr><tr><td>2</td><td>Plan Mode</td><td>先规划再执行，一次到位</td></tr><tr><td>3</td><td><a href="http://CLAUDE.md">CLAUDE.md</a></td><td>让 Claude 记住你的偏好</td></tr><tr><td>4</td><td>Skills</td><td>封装常用工作流</td></tr><tr><td>5</td><td>自主修 Bug</td><td>给目标，不微观管理</td></tr><tr><td>6</td><td>Prompting</td><td>挑战、重做、写清 spec</td></tr><tr><td>7</td><td>终端配置</td><td>Ghostty + 语音输入</td></tr><tr><td>8</td><td>Subagents</td><td>并行计算，保持上下文干净</td></tr><tr><td>9</td><td>数据分析</td><td>自然语言查数据库</td></tr><tr><td>10</td><td>学习</td><td>解释、画图、巩固理解</td></tr></tbody></table><hr><blockquote><p><strong>最重要的一点：Claude 能力很强，给它空间自主发挥。你的时间应该花在思考和决策上，把执行交给 Claude。</strong></p></blockquote>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;claude-code-完整使用指南&quot;&gt;Claude Code 完整使用指南&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;来源：Boris Cherny (@bcherny) - Claude Code 团队成员分享的 10 个高效技巧&lt;/p&gt;
&lt;/blockquo</summary>
      
    
    
    
    
    <category term="Claude Code" scheme="https://0xhanniba1.github.io/tags/Claude-Code/"/>
    
    <category term="git worktree" scheme="https://0xhanniba1.github.io/tags/git-worktree/"/>
    
  </entry>
  
  <entry>
    <title>LLM API 核心参数详解：Temperature、Top_p 与 Max_tokens</title>
    <link href="https://0xhanniba1.github.io/2026/01/llm-eval-learn/"/>
    <id>https://0xhanniba1.github.io/2026/01/llm-eval-learn/</id>
    <published>2026-01-30T14:01:53.000Z</published>
    <updated>2026-01-30T14:13:24.616Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>目标：搭建环境，调通 OpenAI 和 Claude API，理解核心参数含义。产出：一个封装好的 <code>llm_client.py</code>，支持调用两家 API。</p></blockquote><h2 id="核心原理：llm-是个-概率预测机">核心原理：LLM 是个&quot;概率预测机&quot;</h2><p>当你问 LLM：&quot;天空是？&quot;的时候，它并不是直接想出&quot;蓝色&quot;这个词，而是在内部计算所有可能的下一个字的<strong>概率排行榜</strong>：</p><table><thead><tr><th>候选词</th><th>概率</th></tr></thead><tbody><tr><td>蓝色</td><td>60%</td></tr><tr><td>灰的</td><td>20%</td></tr><tr><td>广阔的</td><td>10%</td></tr><tr><td>绿色的</td><td>0.01%</td></tr><tr><td>…</td><td>…</td></tr></tbody></table><p>以下三个参数，就是在控制<strong>怎么从这个排行榜里选词</strong>。</p><h2 id="1-temperature（温度）：控制-胆量">1. Temperature（温度）：控制&quot;胆量&quot;</h2><p><strong>定义</strong>：控制模型在概率排行榜上选择时的<strong>随机性</strong>。</p><p><strong>原理</strong>：</p><ul><li><strong>低温 (0 ~ 0.3)</strong>：模型变得保守，放大高概率词的优势，几乎只选 No.1。</li><li><strong>高温 (0.7 ~ 1.0+)</strong>：模型变得狂野，把所有词的概率拉平（Flatten），低概率词也有机会被选中。</li></ul><p><strong>费曼比喻</strong>：</p><ul><li><code>temperature = 0.1</code> — 像一个<strong>严谨的会计</strong>。你问他在哪吃饭，他永远去评分最高的那一家。稳，但无聊。</li><li><code>temperature = 0.9</code> — 像一个<strong>喝醉的诗人</strong>。你问他在哪吃饭，他可能会指着路边摊甚至垃圾桶说&quot;试试这个&quot;。容易出错，但偶尔有惊世骇俗的创意。</li></ul><p><strong>场景建议</strong>：</p><table><thead><tr><th>场景</th><th>推荐值</th><th>原因</th></tr></thead><tbody><tr><td>写代码、提取 JSON、分析 Bug 等级</td><td><code>0</code></td><td>需要确定性</td></tr><tr><td>生成测试数据、模拟用户多样化输入</td><td><code>0.7+</code></td><td>需要多样性</td></tr></tbody></table><h2 id="2-top-p（核采样）：控制-候选池">2. Top_p（核采样）：控制&quot;候选池&quot;</h2><p><strong>定义</strong>：不改变概率值，而是直接<strong>切断低概率的尾巴</strong>。也叫 Nucleus Sampling。</p><p><strong>原理</strong>：模型从高到低累加概率，直到累加值达到 p（比如 0.9），只有在这个范围内的词才会被考虑，剩下的直接扔掉。</p><p><strong>费曼比喻 — 招聘面试</strong>：</p><ul><li><code>top_p = 1.0</code> — 任何人都可以来面试，包括完全不靠谱的人。</li><li><code>top_p = 0.1</code> — 只面试哈佛耶鲁毕业的（前 10% 的精英），绝对稳，但可能把&quot;乔布斯&quot;这种非传统天才拒之门外。</li></ul><h3 id="temperature-vs-top-p">Temperature vs Top_p</h3><table><thead><tr><th>维度</th><th>Temperature</th><th>Top_p</th></tr></thead><tbody><tr><td>作用方式</td><td>调整概率分布的<strong>形状</strong>（扁平 or 尖锐）</td><td>画一条线，<strong>切掉长尾</strong></td></tr><tr><td>类比</td><td>调节音量旋钮</td><td>设置入场门槛</td></tr></tbody></table><blockquote><p><strong>行业惯例</strong>：通常只调其中一个，不要同时调两个，否则效果难以控制。</p></blockquote><h2 id="3-max-tokens：控制-话唠程度">3. Max_tokens：控制&quot;话唠程度&quot;</h2><p><strong>定义</strong>：限制模型**生成（Output）**的最大 Token 数量。</p><p><strong>注意点</strong>：</p><ul><li><strong>不包括输入</strong>：这是指模型输出的字数上限。</li><li><strong>硬截断</strong>：如果模型话没说完就到了 <code>max_tokens</code>，它会戛然而止。</li><li><strong>惨案现场</strong>：你让它返回 JSON，结果 <code>max_tokens</code> 太小，返回了 <code>&#123;&quot;status&quot;: &quot;succe...</code>（后面没了），导致 <code>json.loads()</code> 直接报错。</li></ul><p><strong>Token 换算参考</strong>：</p><ul><li>1 Token ≈ 0.75 个英文单词</li><li>1 Token ≈ 0.5 ~ 0.8 个汉字（取决于模型的 Tokenizer）</li></ul><blockquote><p><strong>测试策略</strong>：API 调试阶段不要吝啬 <code>max_tokens</code>，设大一点（如 1024 或 4096），防止截断。</p></blockquote>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;目标：搭建环境，调通 OpenAI 和 Claude API，理解核心参数含义。产出：一个封装好的 &lt;code&gt;llm_client.py&lt;/code&gt;，支持调用两家 API。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;核心原理：llm-</summary>
      
    
    
    
    
    <category term="AI" scheme="https://0xhanniba1.github.io/tags/AI/"/>
    
    <category term="LLM" scheme="https://0xhanniba1.github.io/tags/LLM/"/>
    
    <category term="API" scheme="https://0xhanniba1.github.io/tags/API/"/>
    
  </entry>
  
  <entry>
    <title>autotest-idea</title>
    <link href="https://0xhanniba1.github.io/2026/01/autotest-idea/"/>
    <id>https://0xhanniba1.github.io/2026/01/autotest-idea/</id>
    <published>2026-01-29T07:27:16.000Z</published>
    <updated>2026-01-29T08:56:42.804Z</updated>
    
    <content type="html"><![CDATA[<p>1.Jenkins 构建结果发给 clawdbot</p><p>思路：</p><img src="/2026/01/autotest-idea/image-20260129152850601.png" class="" alt="image-20260129152850601"><p>实现：</p><img src="/2026/01/autotest-idea/image-20260129165412577.png" class="" alt="image-20260129165412577"><img src="/2026/01/autotest-idea/image-20260129165635135.png" class="" alt="image-20260129165635135">]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;1.Jenkins 构建结果发给 clawdbot&lt;/p&gt;
&lt;p&gt;思路：&lt;/p&gt;
&lt;img src=&quot;/2026/01/autotest-idea/image-20260129152850601.png&quot; class=&quot;&quot; alt=&quot;image-20260129152850</summary>
      
    
    
    
    
    <category term="测试" scheme="https://0xhanniba1.github.io/tags/%E6%B5%8B%E8%AF%95/"/>
    
  </entry>
  
  <entry>
    <title>Clawdbot 安装配置指南</title>
    <link href="https://0xhanniba1.github.io/2026/01/clawdbot/"/>
    <id>https://0xhanniba1.github.io/2026/01/clawdbot/</id>
    <published>2026-01-26T14:40:09.000Z</published>
    <updated>2026-01-27T01:59:22.421Z</updated>
    
    <content type="html"><![CDATA[<h2 id="简介">简介</h2><p>Clawdbot 是一个开源的个人 AI 助手，可以通过 Telegram、WhatsApp 等平台与 AI 模型交互，支持浏览器控制、文件操作等功能。</p><h2 id="1-购买-vps">1. 购买 VPS</h2><p>推荐 <a href="https://www.dmit.io/aff.php?aff=17897">DMIT</a>，选择 <strong>Los Angeles + Premium 网络</strong>，国内访问质量好。</p><p><strong>注意</strong>：开着代理时 SSH 可能无法连接，需要把 VPS IP 加到代理的直连规则中。</p><img src="/2026/01/clawdbot/image-20260127095233858.png" class="" alt="image-20260127095233858"><h2 id="2-安装-clawdbot">2. 安装 Clawdbot</h2><p>SSH 登录 VPS 后执行：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 更新系统</span></span><br><span class="line">apt update &amp;&amp; apt upgrade -y</span><br><span class="line"></span><br><span class="line"><span class="comment"># 一键安装</span></span><br><span class="line">curl -fsSL https://clawd.bot/install.sh | bash</span><br></pre></td></tr></table></figure><p>按提示完成初始配置（选择 AI 模型、认证方式等）。</p><h2 id="3-访问-web-管理页面">3. 访问 Web 管理页面</h2><p>Clawdbot 默认只监听 localhost，需要通过 SSH 端口转发访问。</p><p><strong>在本地 Mac 终端执行</strong>（不是服务器）：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh -N -L 18789:127.0.0.1:18789 -i ~/Documents/DMIT-zktmac1-id_rsa/id_rsa.pem root@你的服务器IP</span><br></pre></td></tr></table></figure><p>然后在本地浏览器打开：<a href="http://localhost:18789/">http://localhost:18789/</a></p><h2 id="4-配置-telegram">4. 配置 Telegram</h2><h3 id="4-1-创建-telegram-bot">4.1 创建 Telegram Bot</h3><ol><li>在 Telegram 搜索 <strong>@BotFather</strong></li><li>发送 <code>/newbot</code>，按提示设置名称和用户名</li><li>复制获得的 Bot Token</li></ol><h3 id="4-2-配置-clawdbot">4.2 配置 Clawdbot</h3><p>在 VPS 上运行：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">clawdbot configure --section channels</span><br></pre></td></tr></table></figure><p>选择 Telegram，输入 Bot Token。</p><h3 id="4-3-添加授权用户">4.3 添加授权用户</h3><p>在 Web 管理页面 → Channels → Telegram：</p><ol><li>点击 <strong>Allow From</strong> 旁边的 <strong>+ Add</strong></li><li>添加你的 Telegram User ID</li></ol><img src="/2026/01/clawdbot/image-20260127095313109.png" class="" alt="image-20260127095313109"><h3 id="4-4-完成配对">4.4 完成配对</h3><p>在 Telegram 给 Bot 发送 <code>/start</code>，会收到配对码：</p><img src="/2026/01/clawdbot/image-20260127095332821.png" class="" alt="image-20260127095332821"><p>在 VPS 上执行配对命令：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">clawdbot pairing approve telegram 你的配对码</span><br></pre></td></tr></table></figure><h2 id="5-模型选择">5. 模型选择</h2><table><thead><tr><th>方式</th><th>优点</th><th>缺点</th></tr></thead><tbody><tr><td>Claude API</td><td>推理能力强</td><td>价格较贵</td></tr><tr><td>Claude OAuth</td><td>用订阅额度</td><td>有封号风险</td></tr><tr><td>OpenAI API</td><td>价格适中</td><td>按量付费</td></tr><tr><td>OpenAI OAuth</td><td>用 Plus 额度</td><td>配置稍复杂</td></tr></tbody></table><p>推荐使用 <strong>OpenAI OAuth</strong>，可以利用 ChatGPT Plus 订阅额度。</p><p>在 Web 管理页面 → Config → Models 中配置：</p><img src="/2026/01/clawdbot/image-20260127095352343.png" class="" alt="image-20260127095352343"><h2 id="6-后台运行">6. 后台运行</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 安装 pm2</span></span><br><span class="line">npm install -g pm2</span><br><span class="line"></span><br><span class="line"><span class="comment"># 启动并设置开机自启</span></span><br><span class="line">pm2 start clawdbot</span><br><span class="line">pm2 save</span><br><span class="line">pm2 startup</span><br></pre></td></tr></table></figure><h2 id="常见问题">常见问题</h2><p><strong>Q: SSH 连接被关闭？</strong>A: 检查代理设置，把 VPS IP 加入直连规则。</p><p><strong>Q: Telegram 收不到回复？</strong>A: 确认已添加 User ID 到 Allow From，并完成 pairing approve。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;简介&quot;&gt;简介&lt;/h2&gt;
&lt;p&gt;Clawdbot 是一个开源的个人 AI 助手，可以通过 Telegram、WhatsApp 等平台与 AI 模型交互，支持浏览器控制、文件操作等功能。&lt;/p&gt;
&lt;h2 id=&quot;1-购买-vps&quot;&gt;1. 购买 VPS&lt;/h2&gt;
&lt;p&gt;</summary>
      
    
    
    
    
    <category term="AI" scheme="https://0xhanniba1.github.io/tags/AI/"/>
    
    <category term="VPS" scheme="https://0xhanniba1.github.io/tags/VPS/"/>
    
    <category term="Telegram" scheme="https://0xhanniba1.github.io/tags/Telegram/"/>
    
  </entry>
  
  <entry>
    <title>2026-W05</title>
    <link href="https://0xhanniba1.github.io/2026/01/2026-W05/"/>
    <id>https://0xhanniba1.github.io/2026/01/2026-W05/</id>
    <published>2026-01-26T06:02:56.000Z</published>
    <updated>2026-02-01T14:48:40.809Z</updated>
    
    <content type="html"><![CDATA[<h2 id="本周概览-summary">本周概览 (Summary)</h2><ul><li><strong>一句话总结</strong>：</li><li><strong>进度</strong>：</li></ul><h2 id="每日记录-daily-log">每日记录 (Daily Log)</h2><h3 id="2026-01-26-周一">2026-01-26 (周一)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 安装使用 clawdbot，整理一篇安装指南</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> blog 里的图片上传到 <a href="http://githup.io">githup.io</a> 不显示了，明天看看</li></ul></li><li><strong>反思</strong>：<ul><li>今天把 clawdbot 跑通踩了不少坑，但是有 AI辅助就轻松多了，搁以前肯定放弃了；所以说现在想学什么都很方便</li></ul></li></ul><h3 id="2026-01-27-周二">2026-01-27 (周二)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> blog 图片显示问题是路径错了，截屏粘贴显示完全路径就没问题</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 钉钉接入 clawdbot，效果不搞好，代码是 cc 写的；飞书接入 clawdbot 没有调试成功</li></ul></li><li><strong>反思</strong>：<ul><li>一股脑接入钉钉、飞书，没有确定自己想要什么</li></ul></li></ul><h3 id="2026-01-28-周三">2026-01-28 (周三)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 自己总想着造车，搞半天接入飞书失败；今天 githup 搜索到了有大佬已经写好了插件，让 cc 帮忙安装成功了。openAI 额度限制了，又开通了 MinMax</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> hexo-theme 主体在原有的基础上加上搜索和目录功能，但是目录感觉有点鸡肋</li></ul></li><li><strong>反思</strong>：<ul><li>明天想一下 hexo-theme 后续怎么搞</li><li>还是看看测试全流程，整整 skill</li></ul></li></ul><h3 id="2026-01-29-周四">2026-01-29 (周四)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 直接在本地 hexo-theme 里增加了搜索功能，后续看看能否导出成新的主题</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 场景已跑通：Jenkins 构建结果通过 webhook 发送到飞书群，然后 clawdbot 对失败日志进行分析</li></ul></li><li><strong>反思</strong>：<ul><li>我看到有人通过 cc 配置硬件玩，感觉也可以玩玩</li></ul></li></ul><h3 id="2026-01-30-周五">2026-01-30 (周五)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 整理了一份 llm-eval学习列表</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 今天搭建环境，调通 OpenAI 和 Claude API，理解核心参数含义</li></ul></li><li><strong>反思</strong>：<ul><li>clawdbot 暂时停了，等后续有新玩法</li></ul></li></ul><h3 id="2026-01-31-周六">2026-01-31 (周六)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 给 blog 主题加上了菜单栏</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 下午陪你鹏提车</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 给老弟看看高校专项计划</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 另开了个claude会员，两个轮番上阵</li></ul></li><li><strong>反思</strong>：<ul><li>blog 主题暂时不加功能了，后面看到好的 UI，借鉴一下</li><li>继续开整 llm-eval</li></ul></li></ul><h3 id="2026-02-01-周日">2026-02-01 (周日)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 使用 brainstorm 创建一个迭代学习的 skill</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 使用学习 skill 学习 zero-shot、few-shot 和 CoT prompt基础</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 整理了一份 CC 之父的 CC 使用指南</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 使用 glm4.7api 做了翻译插件，免费的 api，目前用起来还行</li></ul></li><li><strong>反思</strong>：<ul><li>学习时间无需太长，主要是效率；2-3 小时就能完成很多任务，需要合理安排计划（能否做一个计划 skill？）</li></ul></li></ul><h2 id="本周复盘-weekly-review">本周复盘 (Weekly Review)</h2><ul><li><strong>Keep (继续保持)</strong>：*</li><li><strong>Improve (需要改进)</strong>：*</li><li><strong>Try (下周尝试)</strong>：*</li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;本周概览-summary&quot;&gt;本周概览 (Summary)&lt;/h2&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;h2 id=&quot;每日记录-daily-log&quot;&gt;</summary>
      
    
    
    
    
    <category term="2026zk" scheme="https://0xhanniba1.github.io/tags/2026zk/"/>
    
  </entry>
  
  <entry>
    <title>2026-W04</title>
    <link href="https://0xhanniba1.github.io/2026/01/2026-W04/"/>
    <id>https://0xhanniba1.github.io/2026/01/2026-W04/</id>
    <published>2026-01-19T13:53:58.000Z</published>
    <updated>2026-01-25T14:59:44.337Z</updated>
    
    <content type="html"><![CDATA[<h2 id="本周概览-summary">本周概览 (Summary)</h2><ul><li><strong>一句话总结</strong>：</li><li><strong>进度</strong>：</li></ul><h2 id="每日记录-daily-log">每日记录 (Daily Log)</h2><h3 id="2026-01-19-周一">2026-01-19 (周一)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 学习 skill 原理，<a href="http://reference+script+skill.md">reference+script+skill.md</a></li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 写个RAG-demo，openAI api 购买搁置</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 把测试中的痛点拆解形成原子 skill</li></ul></li><li><strong>反思</strong>：<ul><li>还是更喜欢在 claude 里用 skill，token 不足，后续用 codex 写代码</li></ul></li></ul><h3 id="2026-01-20-周二">2026-01-20 (周二)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 写一个 taxapp，复刻成功</li></ul></li><li><strong>反思</strong>：<ul><li>明天继续回归 skill</li></ul></li></ul><h3 id="2026-01-21-周三">2026-01-21 (周三)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 生日🎂</li></ul></li><li><strong>反思</strong>：<ul><li>休息休息，明天再学</li></ul></li></ul><h3 id="2026-01-22-周四">2026-01-22 (周四)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 将一些热门 githup 项目做成 skill</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> codex 解除了网络限制，之前都不知道，现在也可以快乐地制作 skill 了</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 将 yt-dlp 做成快捷指令，更加方便了</li></ul></li><li><strong>反思</strong>：<ul><li>继续找一些软件测试相关的 githup 项目，做成 skill</li><li>得好好学习一下快捷指令</li></ul></li></ul><h3 id="2026-01-23-周五">2026-01-23 (周五)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> Agent-browser skill 和 playwright-mcp</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> yt-dlp 快捷指令进度显示舍弃</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> python-testing-patterns skill</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> npx ctx7 来安装 skill</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> promptfoo 测试 prompt/api/agent</li></ul></li><li><strong>反思</strong>：<ul><li>还是得把测试全流程跑通</li><li>搞清楚测试 prompt 的原理</li></ul></li></ul><h3 id="2026-01-24-周六">2026-01-24 (周六)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 卸载 npm 方式安装的 cc，换成原生方式</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 出去玩耍</li></ul></li><li><strong>反思</strong>：<ul><li>无～今天太疲惫 休息再说</li></ul></li></ul><h3 id="2026-01-25-周日">2026-01-25 (周日)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 使用 brainstorm 规划 skill 功能，再用 skill-creator 构建 skill；创建了 api-test-generator skill，后续根据需求不断迭代</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 学习 prompt、agent 测试流程</li></ul></li><li><strong>反思</strong>：<ul><li><p>AI 测试的方向：</p><pre><code>1. 构建测试 Skill 库 - 把团队的测试经验沉淀为可复用的 Skill2. 人机协作 - Skill 处理重复性测试，人专注边界探索3. 持续演进 - 每次发现新问题就更新 Skill</code></pre></li><li><p>专用 Agent 架构 → 不需要了；通用 Agent + 专业 Skill → 正确路径</p></li></ul></li></ul><h2 id="本周复盘-weekly-review">本周复盘 (Weekly Review)</h2><ul><li><strong>Keep (继续保持)</strong>：*</li><li><strong>Improve (需要改进)</strong>：*</li><li><strong>Try (下周尝试)</strong>：*</li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;本周概览-summary&quot;&gt;本周概览 (Summary)&lt;/h2&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;h2 id=&quot;每日记录-daily-log&quot;&gt;</summary>
      
    
    
    
    
    <category term="2026zk" scheme="https://0xhanniba1.github.io/tags/2026zk/"/>
    
  </entry>
  
  <entry>
    <title>2026-W03</title>
    <link href="https://0xhanniba1.github.io/2026/01/2026-W03/"/>
    <id>https://0xhanniba1.github.io/2026/01/2026-W03/</id>
    <published>2026-01-12T03:28:48.000Z</published>
    <updated>2026-01-18T14:28:34.374Z</updated>
    
    <content type="html"><![CDATA[<h2 id="本周概览-summary">本周概览 (Summary)</h2><ul><li><strong>一句话总结</strong>：本周深度探索了 Claude Agent 开发与工作流（ApiFlowAgent 项目与 Brainstorm 插件结合），同时完成了网络分流与各种状态栏小工具（IP Monitor/养猫）的开发；但在高强度的 Token 消耗与复杂的全流程自动化探索中感到难以掌控，心态略有起伏，最终决定回归第一性原理重新审视接口自动化。</li><li><strong>进度</strong>：<ul><li><strong>研发项目：</strong> 完成 <code>ApiFlowAgent</code> 初始版（MVP），但决定重构思路；开发并上线 Mac 状态栏工具 <code>ip-monitor</code> 和 <code>养猫游戏</code>。</li><li><strong>基础设施：</strong> 解决 Claude Code 封号/分流问题（配置住宅静态 IP）；修复 Codex 代理冲突问题。</li><li><strong>生活/理财：</strong> 完成国区 PayPal 注册及汇丰 One 网银开通。</li><li><strong>技能/学习：</strong> 复习 JMeter；初步掌握 Claude Agent SDK；探索 PSB-guide 与 Brainstorm 结合的敏捷开发流程。</li></ul></li></ul><h2 id="每日记录-daily-log">每日记录 (Daily Log)</h2><h3 id="2026-01-12-周一">2026-01-12 (周一)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 安装插件/superpowers:brainstorm，更新到 PSB-guide 流程</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 使用/superpowers:brainstorm 写了一个 ip-monitor，ip 显示在状态菜单栏</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 学习了 JMeter</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 学习小火箭分流</li></ul></li><li><strong>反思</strong>：<ul><li>JMeter 之前也学习过，现在也忘得差不多了。今天相当于复习了，但是没有整理操作文档。</li><li>claude code 封号搞怕了，想用静态 IP，但是太贵了；不然分流让刷推等主要流走其他节点—需要再考虑方案</li></ul></li></ul><h3 id="2026-01-13-周二">2026-01-13 (周二)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 面试那边要做 agent，回来学习 agent，第一次申请 claude api</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 用原始 api 写了个 agent demo，后面又用 sdk 写了个；后续再优化</li></ul></li><li><strong>反思</strong>：<ul><li>/brainstorm 插件还行，但是只能把指定的 plan 拿来作为参考，要和 PSB-guide 流程结合起来，今天写 agent 没有 changelog ，后面就乱套了</li><li>后续把/brainstorm 和 PSB-guide 结合成起来，整理输出一篇文档/</li></ul></li></ul><h3 id="2026-01-14-周三">2026-01-14 (周三)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 养猫游戏 在状态菜单栏奔跑</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 学习设置了分流，让 cluade 走住宅静态 ip</li></ul></li><li><strong>反思</strong>：<ul><li>今天就搞养猫游戏了，token 限额了，半天 bug 没解决</li></ul></li></ul><h3 id="2026-01-15-周四">2026-01-15 (周四)</h3><ul><li><p><strong>随记</strong>：</p><ul class="contains-task-list"><li class="task-list-item"><p><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 终于是找到 codex 无法工作的问题，之前下载了个监控 token 的工具 Quotio，工具里开启了代理</p><img src="/2026/01/2026-W03/image-20260115105110828.png" class="" alt="image-20260115105110828"></li><li class="task-list-item"><p><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 养猫游戏调试完成，后续再看看找个好图标。</p></li><li class="task-list-item"><p><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 发现个 typora 主题，还可以<a href="https://theme.typora.io/theme/Phycat-Color/">https://theme.typora.io/theme/Phycat-Color/</a></p></li></ul></li><li><p><strong>反思</strong>：</p><ul><li>能够基于Claude Agent SDK构建通用型测试Agent，利用多元化Skill解决复杂测试场景，并将智能分析能力深度集成至CI/CD流程，实现智能化全流程闭环。</li></ul></li></ul><h3 id="2026-01-16-周五">2026-01-16 (周五)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 开启项目 ApiFlowAgent，当前进度：完成了需求设计、AI 层、执行层、报告层和 CLI</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 注册了国区 PayPal</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 汇丰 one 到了，开通了网银，但是没找到怎么绑定 apple pay</li></ul></li><li><strong>反思</strong>：<ul><li>将brainstorm skill 和 PSB-guide 流程结合起来了，后续整一个文档，例如按照敏捷开发思路先跑来(MVP化)，PSB-guide 只用来 changelog/project-status/spec；取两者的精华组合起来</li><li>之前 debug 养猫游戏消耗太多 token 了，导致今天 ApiFlowAgent 进度慢了，后续看看 cc 写完了代码，让 codex 来测试验证，减少点 token 消耗？</li></ul></li></ul><h3 id="2026-01-17-周六">2026-01-17 (周六)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 完成了 ApiFlowAgent 初始版，后续得慢慢迭代</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 在 codex 安装了 brainstorm skill，试试看</li></ul></li><li><strong>反思</strong>：<ul><li>ApiFlowAgent 到后面感觉自己已经无法掌控了，还得多练</li><li>目前无法掌控 agent接口自动化全流程，还是拆开来，基于第一性原理，接口自动化痛点是什么。但是有个要点，不能是单纯让AI 生成用例或者代码，需要流程化。agent 里最难的是自动生成用例，自动迭代，TDD 模式跑到没有错误为止。还是多次头脑风暴迭代后想一个好方法</li><li>每天至少复现 x 上大佬分享skill 等内容</li></ul></li></ul><h3 id="2026-01-18-周日">2026-01-18 (周日)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 退回原有模式，重新开展接口自动化</li></ul></li><li><strong>反思</strong>：<ul><li>最近一周心态有点不稳</li></ul></li></ul><h2 id="本周复盘-weekly-review">本周复盘 (Weekly Review)</h2><ul><li><strong>Keep (继续保持)</strong>：<ul><li><strong>极强的行动力与工具化思维：</strong> 遇到痛点（如 IP 监控、工作流卡顿）能立即动手写脚本或插件解决，不仅停留在想，而是落实到了代码上。</li><li><strong>持续的工作流优化意识：</strong> 不断尝试将 <code>/brainstorm</code> 插件与 PSB-guide 流程融合，试图建立更标准化的 MVP 开发模式（Changelog + Spec）。</li><li><strong>第一性原理思考：</strong> 在 ApiFlowAgent 项目失控时，能及时止损，反思“接口自动化的本质痛点”，而不是盲目堆砌代码。</li></ul></li><li><strong>Improve (需要改进)</strong>：<ul><li><strong>Token 成本与收益控制：</strong> 在“养猫游戏” debug 上消耗过多 Token，导致主线项目进度受阻。需评估 Token 使用的优先级，非核心逻辑可尝试降级方案。</li><li><strong>文档沉淀习惯：</strong> 复习 JMeter 时未整理操作文档，导致知识复用率低；Agent 开发过程中的 Changelog 缺失导致了中期的混乱。</li><li><strong>心态管理：</strong> 本周后期因项目复杂度失控出现心态不稳，需接受“技术探索期的混沌状态”，避免急于求成。</li></ul></li><li><strong>Try (下周尝试)</strong>：<ul><li><strong>落地新工作流文档：</strong> 正式输出一篇关于 <code>/superpowers:brainstorm</code> 与 PSB-guide 结合的实操文档，固化“头脑风暴 -&gt; MVP 规划 -&gt; 状态追踪”的流程。</li><li><strong>策略调整：</strong> 尝试“Claude Code 写代码 + Codex 验证测试”的组合模式，降低 Token 消耗。</li><li><strong>回归 TDD 模式：</strong> 在接口自动化重构中，严格执行 TDD（测试驱动开发），先写断言/用例，再让 AI 生成代码，避免 AI 生成不可控的“幻觉代码”。</li><li><strong>微习惯养成：</strong> 每天复现一个 X (Twitter) 上大佬分享的 Skill 或 Prompt 技巧，保持技术敏感度。</li></ul></li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;本周概览-summary&quot;&gt;本周概览 (Summary)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;一句话总结&lt;/strong&gt;：本周深度探索了 Claude Agent 开发与工作流（ApiFlowAgent 项目与 Brainstorm 插件结合），同时完成</summary>
      
    
    
    
    
    <category term="2026zk" scheme="https://0xhanniba1.github.io/tags/2026zk/"/>
    
  </entry>
  
  <entry>
    <title>测试用例生成prompt</title>
    <link href="https://0xhanniba1.github.io/2026/01/Test-case-generation/"/>
    <id>https://0xhanniba1.github.io/2026/01/Test-case-generation/</id>
    <published>2026-01-10T12:35:58.000Z</published>
    <updated>2026-01-10T12:43:25.256Z</updated>
    
    <content type="html"><![CDATA[<h2 id="任务目标">任务目标</h2><p>为以下功能生成全面的测试用例</p><h2 id="功能描述">功能描述</h2><p>“”&quot;[在此粘贴需求文本、用户故事或功能说明]“”&quot;</p><h2 id="补充信息">补充信息</h2><h3 id="接口定义（如有）">接口定义（如有）</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[粘贴函数签名、API 定义、请求/响应结构]</span><br></pre></td></tr></table></figure><h3 id="历史-bug-记录（如有）">历史 bug 记录（如有）</h3><ul><li>[简述历史上该模块或类似功能出过的典型问题]</li></ul><h3 id="上下游依赖（如有）">上下游依赖（如有）</h3><ul><li>[列出依赖的外部服务、数据库、第三方接口及其可能的异常情况]</li></ul><h2 id="分析步骤">分析步骤</h2><p>请严格按以下步骤分析，不要跳步：</p><p><strong>第一步：识别所有输入变量</strong>列出影响系统行为的所有因素：</p><ul><li>显式参数：函数入参、请求字段、表单输入</li><li>隐式状态：用户登录态、数据库现有数据、配置开关</li><li>环境因素：网络状况、系统时间、并发请求</li></ul><p><strong>第二步：对每个变量做等价类划分</strong>用表格呈现：</p><table><thead><tr><th>变量名</th><th>有效等价类</th><th>无效等价类</th><th>边界值</th></tr></thead></table><p><strong>第三步：生成用例矩阵</strong>使用 pairwise 组合策略，确保任意两个变量的取值组合至少被一个用例覆盖。</p><p><strong>第四步：补充高风险场景</strong>基于补充信息中的历史 bug 和依赖关系，添加针对性用例。</p><h2 id="输出格式">输出格式</h2><p>最终用例用 Markdown 表格输出，包含以下列：</p><table><thead><tr><th>ID</th><th>测试模块</th><th>前置条件</th><th>测试步骤</th><th>测试数据</th><th>预期结果</th><th>优先级</th></tr></thead></table><p>优先级定义：</p><ul><li>P0：核心流程，阻塞发布</li><li>P1：重要功能，需本迭代修复</li><li>P2：边缘场景，可延后处理</li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;任务目标&quot;&gt;任务目标&lt;/h2&gt;
&lt;p&gt;为以下功能生成全面的测试用例&lt;/p&gt;
&lt;h2 id=&quot;功能描述&quot;&gt;功能描述&lt;/h2&gt;
&lt;p&gt;“”&amp;quot;
[在此粘贴需求文本、用户故事或功能说明]
“”&amp;quot;&lt;/p&gt;
&lt;h2 id=&quot;补充信息&quot;&gt;补充信息&lt;/h2&gt;
</summary>
      
    
    
    
    
    <category term="测试" scheme="https://0xhanniba1.github.io/tags/%E6%B5%8B%E8%AF%95/"/>
    
  </entry>
  
  <entry>
    <title>gitignore模板</title>
    <link href="https://0xhanniba1.github.io/2026/01/gitignore/"/>
    <id>https://0xhanniba1.github.io/2026/01/gitignore/</id>
    <published>2026-01-10T09:40:05.000Z</published>
    <updated>2026-01-12T03:27:59.795Z</updated>
    
    <content type="html"><![CDATA[<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br></pre></td><td class="code"><pre><span class="line"># Python</span><br><span class="line">__pycache__/</span><br><span class="line">*.py[cod]</span><br><span class="line">*.so</span><br><span class="line">build/</span><br><span class="line">dist/</span><br><span class="line">*.egg-info/</span><br><span class="line">*.egg</span><br><span class="line"></span><br><span class="line"># 虚拟环境</span><br><span class="line">venv/</span><br><span class="line">.venv/</span><br><span class="line">env/</span><br><span class="line"></span><br><span class="line"># IDE</span><br><span class="line">.idea/</span><br><span class="line">.vscode/</span><br><span class="line">*.swp</span><br><span class="line">*.swo</span><br><span class="line"></span><br><span class="line"># 测试/覆盖率</span><br><span class="line">.pytest_cache/</span><br><span class="line">.coverage</span><br><span class="line">htmlcov/</span><br><span class="line"></span><br><span class="line"># 日志和临时文件</span><br><span class="line">*.log</span><br><span class="line">*.tmp</span><br><span class="line">.cache/</span><br><span class="line"></span><br><span class="line"># 环境变量和敏感信息</span><br><span class="line">.env</span><br><span class="line">.env.local</span><br><span class="line">*.pem</span><br><span class="line">*.key</span><br><span class="line">secrets/</span><br><span class="line"></span><br><span class="line"># 系统文件</span><br><span class="line">.DS_Store</span><br><span class="line">Thumbs.db</span><br><span class="line"></span><br><span class="line"># AI 工具</span><br><span class="line">.cursor/</span><br><span class="line">.aider/</span><br><span class="line">.claude/</span><br><span class="line">.codex/</span><br><span class="line">.continue/</span><br><span class="line">.codeium/</span><br><span class="line">.tabnine/</span><br><span class="line">.sourcegraph/</span><br><span class="line">.cody/</span><br><span class="line">CLAUDE.md</span><br><span class="line">.github/copilot-*</span><br><span class="line"></span><br><span class="line"># AI 生成的临时/上下文文件</span><br><span class="line">*prompt.txt</span><br><span class="line">*context.md</span><br><span class="line">.ai_history/</span><br><span class="line"></span><br><span class="line"># 项目特定（按需调整）</span><br><span class="line">output/</span><br><span class="line">data/</span><br><span class="line">*.csv</span><br><span class="line">*.xlsx</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span c</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>CI/CD 自动化通知配置指南 (钉钉/飞书)</title>
    <link href="https://0xhanniba1.github.io/2026/01/CI-CD-ding-feishu-notify/"/>
    <id>https://0xhanniba1.github.io/2026/01/CI-CD-ding-feishu-notify/</id>
    <published>2026-01-10T09:11:15.000Z</published>
    <updated>2026-01-10T09:14:32.827Z</updated>
    
    <content type="html"><![CDATA[<h3 id="第一步：项目结构整理">第一步：项目结构整理</h3><p>为了保持项目整洁，建议按照以下目录归档文件：</p><ol><li>在项目根目录下新建一个文件夹，命名为 <strong><code>scripts</code></strong>。</li><li>将通知用的 Python 脚本（如 <code>ding_notify.py</code> 或 <code>feishu_notify.py</code>）放入该文件夹。</li><li>根目录保留 <code>Jenkinsfile</code> 和 <code>requirements.txt</code>（如果有）。</li></ol><hr><h3 id="第二步：配置群机器人-获取-webhook">第二步：配置群机器人 (获取 Webhook)</h3><h4 id="选项-a：钉钉-dingtalk">选项 A：钉钉 (DingTalk)</h4><ol><li>进入钉钉群，点击右上角 <strong>群设置</strong> -&gt; <strong>智能群助手</strong>。</li><li>点击 <strong>添加机器人</strong> -&gt; 选择 <strong>自定义 (通过Webhook接入)</strong>。</li><li><strong>安全设置 (必选)</strong>：推荐选择 <strong>“自定义关键词”</strong>，填入 <strong>“构建通知”</strong> (或你脚本中定义的其他词)。</li><li>完成添加，<strong>复制并保存 Webhook 地址</strong> (重点是 <code>access_token</code> 部分)。</li></ol><h4 id="选项-b：飞书-feishu-lark">选项 B：飞书 (Feishu/Lark)</h4><ol><li>进入飞书群，点击右上角 <strong>设置</strong> -&gt; <strong>群机器人</strong>。</li><li>点击 <strong>添加机器人</strong> -&gt; 选择 <strong>自定义机器人</strong>。</li><li><strong>安全设置 (必选)</strong>：推荐选择 <strong>“关键词”</strong>，填入 <strong>“构建通知”</strong>。</li><li>完成添加，<strong>复制并保存 Webhook 地址</strong>。</li></ol><hr><h3 id="第三步：脚本功能准备-python-逻辑">第三步：脚本功能准备 (Python 逻辑)</h3><p>你需要准备的脚本应具备以下逻辑（无需贴代码，确认功能即可）：</p><ol><li><strong>依赖库</strong>：使用 <code>requests</code> 库发送 HTTP 请求。</li><li><strong>获取 Token</strong>：优先从系统环境变量读取 Webhook 地址或 Token，也可以在脚本中设置默认值。</li><li><strong>状态判断</strong>：接收命令行传入的 <code>SUCCESS</code> 或 <code>FAILURE</code> 状态。<ul><li><strong>成功</strong>：消息标头显示绿色，文案提示“构建成功”。</li><li><strong>失败</strong>：消息标头显示红色，文案提示“构建失败”。</li></ul></li><li><strong>消息组装</strong>：包含项目名称、构建耗时、结束时间，以及<strong>跳转链接</strong>（Console 日志或测试报告）。</li><li><strong>发送请求</strong>：将组装好的 JSON 数据 POST 给机器人的 Webhook 地址。</li></ol><hr><h3 id="第四步：jenkins-流水线集成-jenkinsfile-逻辑">第四步：Jenkins 流水线集成 (Jenkinsfile 逻辑)</h3><p>在 Jenkinsfile 中配置以下流程：</p><ol><li><strong>Stage: 环境准备与测试</strong><ul><li><strong>检查环境</strong>：判断 <code>venv</code> 文件夹是否存在。</li><li><strong>创建环境</strong>：如果不存在，执行命令自动创建虚拟环境。</li><li><strong>激活环境</strong>：执行 <code>source venv/bin/activate</code>。</li><li><strong>安装依赖</strong>：安装 <code>requests</code> (发通知用) 和 <code>selenium</code>/<code>pytest</code> (测试用)。</li><li><strong>执行测试</strong>：运行自动化测试命令并生成报告数据。</li></ul></li><li><strong>Post: 构建后操作 (通知核心)</strong><ul><li>配置 <strong><code>success</code> (成功块)</strong> 和 <strong><code>failure</code> (失败块)</strong>。</li><li><strong>再次激活环境</strong>：在发送通知前，<strong>必须</strong>再次执行 <code>source venv/bin/activate</code>。</li><li><strong>执行脚本</strong>：调用 Python 脚本，并传入 Jenkins 的环境变量（任务名、构建URL、耗时等）。</li></ul></li></ol>]]></content>
    
    
      
      
    <summary type="html">&lt;h3 id=&quot;第一步：项目结构整理&quot;&gt;第一步：项目结构整理&lt;/h3&gt;
&lt;p&gt;为了保持项目整洁，建议按照以下目录归档文件：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在项目根目录下新建一个文件夹，命名为 &lt;strong&gt;&lt;code&gt;scripts&lt;/code&gt;&lt;/strong&gt;。&lt;/li&gt;
&lt;l</summary>
      
    
    
    
    
    <category term="测试" scheme="https://0xhanniba1.github.io/tags/%E6%B5%8B%E8%AF%95/"/>
    
  </entry>
  
  <entry>
    <title>性能测试</title>
    <link href="https://0xhanniba1.github.io/2026/01/performance-testing-guide/"/>
    <id>https://0xhanniba1.github.io/2026/01/performance-testing-guide/</id>
    <published>2026-01-10T03:27:13.000Z</published>
    <updated>2026-01-10T04:54:08.018Z</updated>
    
    <content type="html"><![CDATA[<h2 id="一、性能测试是什么">一、性能测试是什么</h2><p>性能测试的核心目标是回答一个问题：<strong>系统能扛多大压力，瓶颈在哪里？</strong></p><p>它不是简单地&quot;压一下看看&quot;，而是通过科学的方法，找到系统的能力边界和优化方向。</p><hr><h2 id="二、测试类型（按目的分）">二、测试类型（按目的分）</h2><table><thead><tr><th style="text-align:left">类型</th><th style="text-align:left">目的</th><th style="text-align:left">做法</th><th style="text-align:left">典型产出</th></tr></thead><tbody><tr><td style="text-align:left"><strong>基准测试</strong></td><td style="text-align:left">摸清系统正常能力</td><td style="text-align:left">单接口/单场景，逐步加压</td><td style="text-align:left">最大 TPS、RT 基线</td></tr><tr><td style="text-align:left"><strong>负载测试</strong></td><td style="text-align:left">验证能否满足预期目标</td><td style="text-align:left">按目标值压（如 1000 TPS）</td><td style="text-align:left">通过/不通过</td></tr><tr><td style="text-align:left"><strong>压力测试</strong></td><td style="text-align:left">找系统极限，什么时候崩</td><td style="text-align:left">持续加压直到崩溃</td><td style="text-align:left">极限值、崩溃表现</td></tr><tr><td style="text-align:left"><strong>稳定性测试</strong></td><td style="text-align:left">长时间运行有无问题</td><td style="text-align:left">中等压力跑 2~24 小时</td><td style="text-align:left">内存泄漏、GC 问题</td></tr><tr><td style="text-align:left"><strong>容量测试</strong></td><td style="text-align:left">当前配置能支撑多少用户</td><td style="text-align:left">阶梯加压 + 资源监控</td><td style="text-align:left">容量规划建议</td></tr><tr><td style="text-align:left"><strong>浪涌测试</strong></td><td style="text-align:left">突发流量能否扛住</td><td style="text-align:left">瞬间拉高再降低</td><td style="text-align:left">系统恢复能力</td></tr></tbody></table><h3 id="怎么选择测试类型？">怎么选择测试类型？</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">新系统上线前 → 基准测试 + 负载测试</span><br><span class="line">大促活动前 → 压力测试 + 容量测试  </span><br><span class="line">日常迭代   → 基准测试（回归）</span><br><span class="line">核心系统   → 稳定性测试</span><br><span class="line">秒杀场景   → 浪涌测试</span><br></pre></td></tr></table></figure><hr><h2 id="三、测试场景（按业务分）">三、测试场景（按业务分）</h2><h3 id="3-1-基础场景">3.1 基础场景</h3><table><thead><tr><th>场景</th><th>说明</th><th>适用情况</th></tr></thead><tbody><tr><td><strong>单接口测试</strong></td><td>对单个 API 压测</td><td>性能摸底、问题定位</td></tr><tr><td><strong>单业务流程</strong></td><td>完整链路（如下单=查库存→创建订单→扣款）</td><td>链路性能验证</td></tr></tbody></table><h3 id="3-2-进阶场景">3.2 进阶场景</h3><table><thead><tr><th>场景</th><th>说明</th><th>关键点</th></tr></thead><tbody><tr><td><strong>混合场景</strong></td><td>模拟真实流量比例</td><td>接口比例要贴近生产</td></tr><tr><td><strong>秒杀/抢购</strong></td><td>瞬间高并发打同一资源</td><td>集合点、库存一致性、限流</td></tr><tr><td><strong>大数据量</strong></td><td>处理大量数据（导出、批量）</td><td>单请求处理能力、超时</td></tr><tr><td><strong>长连接</strong></td><td>WebSocket、消息推送</td><td>连接数上限、心跳、断连</td></tr><tr><td><strong>文件上传下载</strong></td><td>大文件传输</td><td>带宽、超时、断点续传</td></tr></tbody></table><h3 id="3-3-混合场景设计示例">3.3 混合场景设计示例</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">电商网站真实流量比例：</span><br><span class="line">├── 首页浏览    40%</span><br><span class="line">├── 商品搜索    25%</span><br><span class="line">├── 商品详情    20%</span><br><span class="line">├── 加入购物车   8%</span><br><span class="line">├── 下单支付    5%</span><br><span class="line">└── 用户登录    2%</span><br></pre></td></tr></table></figure><p>混合场景的价值：单接口都没问题，混合起来可能有资源竞争。</p><hr><h2 id="四、性能指标体系">四、性能指标体系</h2><h3 id="4-1-业务指标（用户视角）">4.1 业务指标（用户视角）</h3><table><thead><tr><th>指标</th><th>全称</th><th>含义</th><th>关注点</th></tr></thead><tbody><tr><td><strong>RT</strong></td><td>Response Time</td><td>响应时间</td><td>P90/P99 比平均值重要</td></tr><tr><td><strong>TPS</strong></td><td>Transactions Per Second</td><td>每秒事务数</td><td>业务处理能力</td></tr><tr><td><strong>QPS</strong></td><td>Queries Per Second</td><td>每秒请求数</td><td>接口吞吐量</td></tr><tr><td><strong>并发数</strong></td><td>Concurrency</td><td>同时在处理的请求数</td><td>系统承载能力</td></tr><tr><td><strong>错误率</strong></td><td>Error Rate</td><td>失败请求占比</td><td>压力大了是否报错</td></tr><tr><td><strong>吞吐量</strong></td><td>Throughput</td><td>单位时间处理的数据量</td><td>网络/IO 能力</td></tr></tbody></table><h4 id="响应时间的正确理解">响应时间的正确理解</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">平均 RT = 100ms  ← 看起来不错？</span><br><span class="line">P90 RT = 150ms   ← 90% 的请求在 150ms 内</span><br><span class="line">P99 RT = 800ms   ← 有 1% 的请求要 800ms！</span><br><span class="line"></span><br><span class="line">结论：平均值会掩盖长尾问题，要看分位数</span><br></pre></td></tr></table></figure><h4 id="tps-vs-qps">TPS vs QPS</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">TPS：一个事务可能包含多个请求（下单=查库存+扣款+创建订单）</span><br><span class="line">QPS：纯粹的请求数量</span><br><span class="line"></span><br><span class="line">接口压测一般说 QPS</span><br><span class="line">业务压测一般说 TPS</span><br></pre></td></tr></table></figure><h3 id="4-2-系统资源指标（服务器视角）">4.2 系统资源指标（服务器视角）</h3><table><thead><tr><th>指标</th><th>监控命令</th><th>瓶颈信号</th><th>可能原因</th></tr></thead><tbody><tr><td><strong>CPU</strong></td><td><code>top</code>, <code>vmstat</code></td><td>持续 &gt; 80%</td><td>计算密集、死循环、GC</td></tr><tr><td><strong>内存</strong></td><td><code>free</code>, <code>top</code></td><td>持续上涨不释放</td><td>内存泄漏、缓存过大</td></tr><tr><td><strong>磁盘 I/O</strong></td><td><code>iostat</code>, <code>iotop</code></td><td>iowait 高、util 100%</td><td>大量读写、日志过多</td></tr><tr><td><strong>网络</strong></td><td><code>iftop</code>, <code>netstat</code></td><td>带宽打满、连接数耗尽</td><td>数据量大、连接泄漏</td></tr></tbody></table><h4 id="cpu-指标详解">CPU 指标详解</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">%user   - 用户态 CPU（应用代码）</span><br><span class="line">%system - 内核态 CPU（系统调用）</span><br><span class="line">%iowait - 等待 IO 的 CPU（磁盘慢）</span><br><span class="line">%idle   - 空闲 CPU</span><br><span class="line"></span><br><span class="line">iowait 高 → 瓶颈在磁盘，不是 CPU</span><br><span class="line">user 高   → 瓶颈在应用代码</span><br></pre></td></tr></table></figure><h4 id="内存指标详解">内存指标详解</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">used     - 已使用内存</span><br><span class="line">free     - 完全空闲</span><br><span class="line">buff/cache - 系统缓存（可回收）</span><br><span class="line">available - 实际可用 = free + 可回收的 cache</span><br><span class="line"></span><br><span class="line">看 available，不是 free</span><br></pre></td></tr></table></figure><h3 id="4-3-中间件指标（组件视角）">4.3 中间件指标（组件视角）</h3><h4 id="数据库（mysql）">数据库（MySQL）</h4><table><thead><tr><th>指标</th><th>含义</th><th>关注点</th></tr></thead><tbody><tr><td>QPS/TPS</td><td>查询和事务数</td><td>数据库压力</td></tr><tr><td>慢查询数</td><td>超过阈值的 SQL</td><td>需要优化的 SQL</td></tr><tr><td>连接数</td><td>当前连接 / 最大连接</td><td>连接池是否够用</td></tr><tr><td>锁等待</td><td>行锁、表锁等待时间</td><td>并发冲突</td></tr><tr><td>缓冲池命中率</td><td>Buffer Pool Hit Ratio</td><td>内存是否够用</td></tr></tbody></table><h4 id="redis">Redis</h4><table><thead><tr><th>指标</th><th>含义</th><th>关注点</th></tr></thead><tbody><tr><td>命中率</td><td>Hit / (Hit + Miss)</td><td>缓存有效性</td></tr><tr><td>内存使用</td><td>used_memory</td><td>是否接近上限</td></tr><tr><td>连接数</td><td>connected_clients</td><td>连接池配置</td></tr><tr><td>阻塞 Key</td><td>blocked_clients</td><td>慢操作</td></tr></tbody></table><h4 id="消息队列（kafka-rabbitmq）">消息队列（Kafka/RabbitMQ）</h4><table><thead><tr><th>指标</th><th>含义</th><th>关注点</th></tr></thead><tbody><tr><td>堆积量</td><td>未消费消息数</td><td>消费者是否跟得上</td></tr><tr><td>生产速率</td><td>每秒写入消息数</td><td>生产压力</td></tr><tr><td>消费速率</td><td>每秒消费消息数</td><td>消费能力</td></tr><tr><td>延迟</td><td>消息从生产到消费的时间</td><td>实时性</td></tr></tbody></table><h3 id="4-4-jvm-指标（java-应用）">4.4 JVM 指标（Java 应用）</h3><table><thead><tr><th>指标</th><th>含义</th><th>关注点</th></tr></thead><tbody><tr><td>堆内存</td><td>Heap 使用量</td><td>是否频繁接近上限</td></tr><tr><td>GC 次数</td><td>Young GC / Full GC</td><td>Full GC 频繁说明有问题</td></tr><tr><td>GC 时间</td><td>每次 GC 耗时</td><td>影响 RT</td></tr><tr><td>线程数</td><td>活跃线程数量</td><td>线程池是否够用</td></tr></tbody></table><hr><h2 id="五、常用工具">五、常用工具</h2><h3 id="5-1-压测工具">5.1 压测工具</h3><table><thead><tr><th>工具</th><th>特点</th><th>适用场景</th></tr></thead><tbody><tr><td><strong>JMeter</strong></td><td>GUI + 脚本，功能全</td><td>复杂业务场景、协议多</td></tr><tr><td><strong>Locust</strong></td><td>Python 编写脚本</td><td>开发友好、灵活</td></tr><tr><td><strong>wrk</strong></td><td>命令行，性能极高</td><td>简单接口、极限压测</td></tr><tr><td><strong>ab</strong></td><td>Apache 自带，简单</td><td>快速验证</td></tr><tr><td><strong>k6</strong></td><td>JS 脚本，现代化</td><td>CI/CD 集成</td></tr><tr><td><strong>Gatling</strong></td><td>Scala，报告漂亮</td><td>自动化、报告要求高</td></tr></tbody></table><h3 id="5-2-监控工具">5.2 监控工具</h3><table><thead><tr><th>工具</th><th>用途</th></tr></thead><tbody><tr><td><strong>Prometheus + Grafana</strong></td><td>指标采集 + 可视化</td></tr><tr><td><strong>node_exporter</strong></td><td>主机资源监控</td></tr><tr><td><strong>cAdvisor</strong></td><td>容器监控</td></tr><tr><td><strong>Arthas</strong></td><td>Java 应用诊断</td></tr><tr><td><strong>perf / FlameGraph</strong></td><td>CPU 火焰图</td></tr></tbody></table><h3 id="5-3-分析工具">5.3 分析工具</h3><table><thead><tr><th>工具</th><th>用途</th></tr></thead><tbody><tr><td><strong>慢查询日志</strong></td><td>定位慢 SQL</td></tr><tr><td><strong>Explain</strong></td><td>分析 SQL 执行计划</td></tr><tr><td><strong>jstack</strong></td><td>Java 线程 dump</td></tr><tr><td><strong>jmap</strong></td><td>Java 内存 dump</td></tr><tr><td><strong>MAT</strong></td><td>内存泄漏分析</td></tr></tbody></table><hr><h2 id="六、性能测试流程">六、性能测试流程</h2><h3 id="6-1-标准流程">6.1 标准流程</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line">1. 需求分析</span><br><span class="line">   ├── 测试目标是什么？（TPS 达到 1000？RT &lt; 200ms？）</span><br><span class="line">   ├── 测试哪些场景？</span><br><span class="line">   └── 测试环境要求？</span><br><span class="line"></span><br><span class="line">2. 环境准备</span><br><span class="line">   ├── 测试环境搭建（尽量接近生产）</span><br><span class="line">   ├── 监控部署（Prometheus + Grafana）</span><br><span class="line">   ├── 数据准备（测试数据量级）</span><br><span class="line">   └── 压测工具准备</span><br><span class="line"></span><br><span class="line">3. 脚本开发</span><br><span class="line">   ├── 接口脚本编写</span><br><span class="line">   ├── 参数化配置</span><br><span class="line">   ├── 关联处理</span><br><span class="line">   └── 脚本调试验证</span><br><span class="line"></span><br><span class="line">4. 执行测试</span><br><span class="line">   ├── 基准测试（摸底）</span><br><span class="line">   ├── 负载测试（验证目标）</span><br><span class="line">   ├── 压力测试（找极限）</span><br><span class="line">   └── 稳定性测试（长时间）</span><br><span class="line"></span><br><span class="line">5. 结果分析</span><br><span class="line">   ├── 指标是否达标</span><br><span class="line">   ├── 瓶颈在哪里</span><br><span class="line">   └── 优化建议</span><br><span class="line"></span><br><span class="line">6. 测试报告</span><br><span class="line">   ├── 测试结论</span><br><span class="line">   ├── 数据图表</span><br><span class="line">   └── 问题和建议</span><br></pre></td></tr></table></figure><h3 id="6-2-瓶颈定位思路">6.2 瓶颈定位思路</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line">RT 变长 / TPS 上不去</span><br><span class="line">    │</span><br><span class="line">    ├─ CPU 高？</span><br><span class="line">    │   ├─ user 高 → 代码问题（算法、死循环）</span><br><span class="line">    │   └─ iowait 高 → 磁盘问题</span><br><span class="line">    │</span><br><span class="line">    ├─ 内存高？</span><br><span class="line">    │   ├─ 持续上涨 → 内存泄漏</span><br><span class="line">    │   └─ GC 频繁 → 堆内存不够</span><br><span class="line">    │</span><br><span class="line">    ├─ CPU/内存都不高？</span><br><span class="line">    │   ├─ 数据库慢查询？</span><br><span class="line">    │   ├─ 连接池打满？</span><br><span class="line">    │   ├─ 锁竞争？</span><br><span class="line">    │   └─ 外部依赖慢？</span><br><span class="line">    │</span><br><span class="line">    └─ 网络？</span><br><span class="line">        ├─ 带宽打满</span><br><span class="line">        └─ 连接数耗尽</span><br></pre></td></tr></table></figure><hr><h2 id="七、q-a">七、Q&amp;A</h2><h3 id="7-1-基础问题">7.1 基础问题</h3><p><strong>Q：你们性能测试关注哪些指标？</strong></p><blockquote><p>三层：业务指标（RT、TPS、错误率）、系统资源（CPU、内存、IO、网络）、中间件指标（数据库、缓存）。重点是把指标放在同一时间轴上看，找到瓶颈。</p></blockquote><p><strong>Q：RT 看平均值还是 P99？</strong></p><blockquote><p>P99 更重要。平均值会被大量正常请求拉低，掩盖长尾问题。比如平均 100ms，但 P99 是 2s，说明有 1% 用户体验很差。</p></blockquote><p><strong>Q：TPS 和 QPS 的区别？</strong></p><blockquote><p>TPS 是事务，一个事务可能包含多个请求；QPS 是纯请求数。接口压测一般说 QPS，业务压测说 TPS。</p></blockquote><h3 id="7-2-场景问题">7.2 场景问题</h3><p><strong>Q：你们预估的 QPS 是怎么得出的？</strong></p><blockquote><p>两种方法：1）看生产监控历史峰值；2）业务推算：日活 × 人均请求数 ÷ 集中时段秒数，再乘 2~3 倍余量。</p></blockquote><p><strong>Q：混合场景怎么设计？</strong></p><blockquote><p>分析生产日志或埋点数据，统计各接口调用比例，按比例配置并发。比如浏览 60%、搜索 25%、下单 5%。</p></blockquote><p><strong>Q：秒杀场景怎么测？</strong></p><blockquote><p>用集合点让请求同时发出，关注：1）限流是否生效；2）库存一致性；3）系统是否雪崩。</p></blockquote><p><strong>Q：稳定性测试发现过什么问题？</strong></p><blockquote><p>内存泄漏（内存持续上涨不释放）、连接泄漏（连接数持续增长）、GC 时间变长、RT 逐渐上涨。</p></blockquote><h3 id="7-3-定位问题">7.3 定位问题</h3><p><strong>Q：TPS 上不去，怎么排查？</strong></p><blockquote><p>先看资源：CPU、内存、IO 哪个高。如果都不高，看数据库慢查询、连接池、锁竞争、外部依赖。</p></blockquote><p><strong>Q：CPU 高怎么定位？</strong></p><blockquote><p>看是 user 高还是 iowait 高。user 高用火焰图找热点代码；iowait 高说明磁盘是瓶颈。</p></blockquote><p><strong>Q：内存泄漏怎么定位？</strong></p><blockquote><p>多次 dump 内存快照，用 MAT 对比，看哪些对象持续增长。</p></blockquote><hr><h2 id="八、实战检查清单">八、实战检查清单</h2><h3 id="测试前">测试前</h3><ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 明确测试目标（TPS、RT、错误率要求）</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 测试环境配置记录（CPU、内存、带宽）</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 监控部署完成（能看到实时数据）</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 测试数据准备（数量级合理）</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 脚本调试通过（单次请求正常）</li></ul><h3 id="测试中">测试中</h3><ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 逐步加压，不要一上来就拉满</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 实时观察监控，发现异常及时记录</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 每轮测试记录：并发数、TPS、RT、错误率、资源使用</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 出现拐点时停下来分析</li></ul><h3 id="测试后">测试后</h3><ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 整理各轮数据，画趋势图</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 定位瓶颈点</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 输出测试报告</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 提出优化建议</li></ul><hr><h2 id="九、附录：常用命令速查">九、附录：常用命令速查</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># CPU</span></span><br><span class="line">top                    <span class="comment"># 整体情况</span></span><br><span class="line">vmstat 1               <span class="comment"># 每秒刷新</span></span><br><span class="line">mpstat -P ALL 1        <span class="comment"># 每个核心</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 内存</span></span><br><span class="line">free -h                <span class="comment"># 内存概况</span></span><br><span class="line">top -o %MEM            <span class="comment"># 按内存排序</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 磁盘</span></span><br><span class="line">iostat -x 1            <span class="comment"># IO 详情</span></span><br><span class="line">iotop                  <span class="comment"># IO 排行</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 网络</span></span><br><span class="line">iftop                  <span class="comment"># 带宽监控</span></span><br><span class="line">netstat -ant | <span class="built_in">wc</span> -l   <span class="comment"># 连接数</span></span><br><span class="line">ss -s                  <span class="comment"># 连接统计</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 进程</span></span><br><span class="line">ps aux --<span class="built_in">sort</span>=-%cpu    <span class="comment"># CPU 排行</span></span><br><span class="line">ps aux --<span class="built_in">sort</span>=-%mem    <span class="comment"># 内存排行</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Java</span></span><br><span class="line">jstat -gc &lt;pid&gt; 1000   <span class="comment"># GC 监控</span></span><br><span class="line">jstack &lt;pid&gt;           <span class="comment"># 线程 dump</span></span><br><span class="line">jmap -heap &lt;pid&gt;       <span class="comment"># 堆内存概况</span></span><br></pre></td></tr></table></figure><hr><h2 id="总结">总结</h2><p>性能测试的本质是：<strong>给系统施加压力，观察表现，找到瓶颈，指导优化。</strong></p><p>记住这个思考框架：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">目标 → 场景 → 指标 → 执行 → 分析 → 优化</span><br></pre></td></tr></table></figure><p>不是为了压测而压测，而是为了回答业务问题：系统能不能扛住？扛不住的话问题在哪？</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;一、性能测试是什么&quot;&gt;一、性能测试是什么&lt;/h2&gt;
&lt;p&gt;性能测试的核心目标是回答一个问题：&lt;strong&gt;系统能扛多大压力，瓶颈在哪里？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它不是简单地&amp;quot;压一下看看&amp;quot;，而是通过科学的方法，找到系统的能力边界和优化</summary>
      
    
    
    
    
    <category term="测试" scheme="https://0xhanniba1.github.io/tags/%E6%B5%8B%E8%AF%95/"/>
    
  </entry>
  
  <entry>
    <title>系统性地使用Claude Code编写新项目</title>
    <link href="https://0xhanniba1.github.io/2026/01/PSB-guide/"/>
    <id>https://0xhanniba1.github.io/2026/01/PSB-guide/</id>
    <published>2026-01-07T08:01:24.000Z</published>
    <updated>2026-01-12T13:16:04.623Z</updated>
    
    <content type="html"><![CDATA[<h2 id="第一步：规划阶段（15-30-分钟）">第一步：规划阶段（15-30 分钟）</h2><p>🌟现在安装了/superpowers:brainstorm 插件，可以直接在 Claude Code 里规划</p><h3 id="1-1-打开任意笔记工具，回答这两个问题">1.1 打开任意笔记工具，回答这两个问题</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">问题 1：我到底想做什么？</span><br><span class="line">- 这是原型验证还是要上线？</span><br><span class="line">- 写一句话描述项目核心价值</span><br><span class="line"></span><br><span class="line">问题 2：MVP 包含哪些功能？</span><br><span class="line">- 列出 3-5 个核心功能</span><br><span class="line">- 其他功能放到 v1.1、v1.2</span><br></pre></td></tr></table></figure><h3 id="1-2-让-ai-帮你理清思路">1.2 让 AI 帮你理清思路</h3><p>打开 Claude，输入：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">我想做一个 [你的项目描述]。</span><br><span class="line"></span><br><span class="line">请问我 3 个最重要的问题，帮我理清没想明白的地方。</span><br></pre></td></tr></table></figure><p>认真回答这些问题，把答案记下来。</p><h3 id="1-3-生成项目规格文档">1.3 生成项目规格文档</h3><p>继续让 Claude 帮你整理：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">基于我们的讨论，帮我生成一份项目规格文档，包含：</span><br><span class="line"></span><br><span class="line">1. 产品需求</span><br><span class="line">   - 解决什么问题</span><br><span class="line">   - 目标用户</span><br><span class="line">   - 核心功能列表（MVP）</span><br><span class="line">   - 用户交互流程</span><br><span class="line"></span><br><span class="line">2. 技术需求</span><br><span class="line">   - 技术栈选择（请用：[你偏好的技术栈，比如 Python + FastAPI + SQLite]）</span><br><span class="line">   - 项目结构建议</span><br><span class="line">   - 第三方服务/API</span><br></pre></td></tr></table></figure><p>把输出保存为 <code>docs/spec.md</code>。</p><hr><h2 id="第二步：配置阶段（10-15-分钟）">第二步：配置阶段（10-15 分钟）</h2><h3 id="2-1-创建-github-仓库">2.1 创建 GitHub 仓库</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建并克隆仓库</span></span><br><span class="line">gh repo create my-project --private --<span class="built_in">clone</span></span><br><span class="line"><span class="built_in">cd</span> my-project</span><br><span class="line"></span><br><span class="line"><span class="comment"># 或者本地初始化</span></span><br><span class="line"><span class="built_in">mkdir</span> my-project &amp;&amp; <span class="built_in">cd</span> my-project</span><br><span class="line">git init</span><br></pre></td></tr></table></figure><h3 id="2-2-创建目录结构">2.2 创建目录结构</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">mkdir</span> docs</span><br><span class="line"><span class="built_in">mkdir</span> .claude</span><br><span class="line"><span class="built_in">mkdir</span> .claude/commands</span><br></pre></td></tr></table></figure><h3 id="2-3-创建环境变量文件">2.3 创建环境变量文件</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">touch</span> .<span class="built_in">env</span></span><br><span class="line"><span class="built_in">touch</span> .env.example</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;.env&quot;</span> &gt;&gt; .gitignore</span><br></pre></td></tr></table></figure><p>在 <code>.env</code> 中提前填好所有 API key：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">OPENAI_API_KEY=xxx</span><br><span class="line">DATABASE_URL=xxx</span><br><span class="line"># 其他需要的 key...</span><br></pre></td></tr></table></figure><h3 id="2-4-创建-claude-md（核心文件）">2.4 创建 <a href="http://CLAUDE.md">CLAUDE.md</a>（核心文件）</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">touch</span> CLAUDE.md</span><br></pre></td></tr></table></figure><p>填入以下内容：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br></pre></td><td class="code"><pre><span class="line"><span class="section"># 项目名称</span></span><br><span class="line"></span><br><span class="line">一句话描述：[从 spec.md 复制]</span><br><span class="line"></span><br><span class="line"><span class="section">## 项目目标</span></span><br><span class="line"></span><br><span class="line">[MVP 要实现的 3-5 个核心功能]</span><br><span class="line"></span><br><span class="line"><span class="section">## 技术栈</span></span><br><span class="line"></span><br><span class="line"><span class="bullet">-</span> 语言：Python 3.11</span><br><span class="line"><span class="bullet">-</span> 框架：FastAPI</span><br><span class="line"><span class="bullet">-</span> 数据库：SQLite</span><br><span class="line"><span class="bullet">-</span> [其他...]</span><br><span class="line"></span><br><span class="line"><span class="section">## 项目结构</span></span><br><span class="line"></span><br><span class="line">src/</span><br><span class="line">  main.py</span><br><span class="line">  models/</span><br><span class="line">  routes/</span><br><span class="line">docs/</span><br><span class="line">tests/</span><br><span class="line"></span><br><span class="line"><span class="section">## 开发规范</span></span><br><span class="line"></span><br><span class="line"><span class="bullet">-</span> 代码风格：[你的偏好]</span><br><span class="line"><span class="bullet">-</span> 提交规范：feat/fix/docs 前缀</span><br><span class="line"><span class="bullet">-</span> 测试要求：[有/无]</span><br><span class="line"></span><br><span class="line"><span class="section">## 约束条件</span></span><br><span class="line"></span><br><span class="line"><span class="bullet">-</span> 不要使用 [某个你不想用的库]</span><br><span class="line"><span class="bullet">-</span> 不要 [其他限制]</span><br><span class="line"></span><br><span class="line"><span class="section">## 当前状态</span></span><br><span class="line"></span><br><span class="line">见 [<span class="string">project-status.md</span>](<span class="link">./docs/project-status.md</span>)</span><br><span class="line"></span><br><span class="line"><span class="section">## 相关文档</span></span><br><span class="line"></span><br><span class="line"><span class="bullet">-</span> [<span class="string">项目规格</span>](<span class="link">./docs/spec.md</span>)</span><br><span class="line"><span class="bullet">-</span> [<span class="string">架构设计</span>](<span class="link">./docs/architecture.md</span>)</span><br><span class="line"><span class="bullet">-</span> [<span class="string">变更日志</span>](<span class="link">./docs/changelog.md</span>)</span><br></pre></td></tr></table></figure><h3 id="2-5-创建自动化文档">2.5 创建自动化文档</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">touch</span> docs/architecture.md <span class="comment"># 项目写完了再生成架构文档</span></span><br><span class="line"><span class="built_in">touch</span> docs/changelog.md</span><br><span class="line"><span class="built_in">touch</span> docs/project-status.md</span><br></pre></td></tr></table></figure><p><code>docs/project-status.md</code> 模板：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="section"># 项目状态</span></span><br><span class="line"></span><br><span class="line"><span class="section">## 已完成</span></span><br><span class="line"><span class="bullet">-</span> [ ] 项目初始化</span><br><span class="line"></span><br><span class="line"><span class="section">## 进行中</span></span><br><span class="line"><span class="bullet">-</span> [ ] [当前任务]</span><br><span class="line"></span><br><span class="line"><span class="section">## 待开始</span></span><br><span class="line"><span class="bullet">-</span> [ ] [下一个任务]</span><br><span class="line"></span><br><span class="line"><span class="section">## 下次继续</span></span><br><span class="line">从这里开始：[具体描述]</span><br></pre></td></tr></table></figure><h3 id="2-6-创建自定义命令（可选但推荐）">2.6 创建自定义命令（可选但推荐）</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">touch</span> .claude/commands/update-docs.md</span><br></pre></td></tr></table></figure><p>内容：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">请更新以下文档以反映最新的代码变更：</span><br><span class="line"></span><br><span class="line"><span class="bullet">1.</span> docs/architecture.md - 更新系统架构</span><br><span class="line"><span class="bullet">2.</span> docs/changelog.md - 添加本次变更记录</span><br><span class="line"><span class="bullet">3.</span> docs/project-status.md - 更新完成状态和下次继续点</span><br></pre></td></tr></table></figure><h3 id="2-7-首次提交">2.7 首次提交</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git add .</span><br><span class="line">git commit -m <span class="string">&quot;init: 项目初始化&quot;</span></span><br><span class="line">git push -u origin main</span><br></pre></td></tr></table></figure><hr><h2 id="第三步：构建阶段">第三步：构建阶段</h2><h3 id="3-1-启动-claude-code">3.1 启动 Claude Code</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">claude</span><br></pre></td></tr></table></figure><h3 id="3-2-让-claude-先熟悉项目">3.2 让 Claude 先熟悉项目</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">请阅读 CLAUDE.md 和 docs/spec.md，确认你理解了项目目标和技术栈。</span><br></pre></td></tr></table></figure><h3 id="3-3-进入计划模式（重要！）">3.3 进入计划模式（重要！）</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">我要开始实现 [第一个功能]。</span><br><span class="line"></span><br><span class="line">请先进入 plan 模式，列出实现步骤，不要直接写代码。</span><br></pre></td></tr></table></figure><p>等 Claude 列出计划后，确认没问题再说：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">计划看起来没问题，请开始实现。</span><br></pre></td></tr></table></figure><h3 id="3-4-每完成一个功能后">3.4 每完成一个功能后</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">/update-docs</span><br></pre></td></tr></table></figure><p>或者手动说：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">请更新 changelog.md 和 project-status.md，记录刚才的变更。</span><br></pre></td></tr></table></figure><h3 id="3-5-遇到-claude-犯错时">3.5 遇到 Claude 犯错时</h3><p>立即在 <a href="http://CLAUDE.md">CLAUDE.md</a> 的约束条件里添加：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">## 约束条件</span></span><br><span class="line"></span><br><span class="line"><span class="bullet">-</span> 不要使用 print 调试，用 logging</span><br><span class="line"><span class="bullet">-</span> 不要把密钥硬编码  # ← 新增的规则</span><br></pre></td></tr></table></figure><hr><h2 id="完整流程图">完整流程图</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line">┌─────────────────────────────────────────────────────────┐</span><br><span class="line">│  第一步：规划（15-30分钟）                                 │</span><br><span class="line">│  ├─ 回答两个核心问题                                      │</span><br><span class="line">│  ├─ 让 AI 问你问题                                       │</span><br><span class="line">│  └─ 输出 spec.md                                        │</span><br><span class="line">└─────────────────────────────────────────────────────────┘</span><br><span class="line">                          ↓</span><br><span class="line">┌─────────────────────────────────────────────────────────┐</span><br><span class="line">│  第二步：配置（10-15分钟）                                 │</span><br><span class="line">│  ├─ 创建 GitHub 仓库                │</span><br><span class="line">│  ├─ 配置 .env                                            │</span><br><span class="line">│  ├─ 创建 CLAUDE.md                                       │</span><br><span class="line">│  ├─ 创建 docs/ 文档                                      │</span><br><span class="line">│  └─ 首次提交                                             │</span><br><span class="line">└─────────────────────────────────────────────────────────┘</span><br><span class="line">                          ↓</span><br><span class="line">┌─────────────────────────────────────────────────────────┐</span><br><span class="line">│  第三步：构建（循环）                                      │</span><br><span class="line">│  ├─ 让 Claude 熟悉项目                                   │</span><br><span class="line">│  ├─ plan 模式列计划                                      │</span><br><span class="line">│  ├─ 确认后实现                                           │</span><br><span class="line">│  ├─ 更新文档                                             │</span><br><span class="line">│  └─ 犯错时添加规则                                        │</span><br><span class="line">└─────────────────────────────────────────────────────────┘</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;第一步：规划阶段（15-30-分钟）&quot;&gt;第一步：规划阶段（15-30 分钟）&lt;/h2&gt;
&lt;p&gt;🌟现在安装了/superpowers:brainstorm 插件，可以直接在 Claude Code 里规划&lt;/p&gt;
&lt;h3 id=&quot;1-1-打开任意笔记工具，回答这两</summary>
      
    
    
    
    
    <category term="AI" scheme="https://0xhanniba1.github.io/tags/AI/"/>
    
    <category term="Claude Code" scheme="https://0xhanniba1.github.io/tags/Claude-Code/"/>
    
  </entry>
  
  <entry>
    <title>tmux命令</title>
    <link href="https://0xhanniba1.github.io/2026/01/tmux/"/>
    <id>https://0xhanniba1.github.io/2026/01/tmux/</id>
    <published>2026-01-05T14:33:38.000Z</published>
    <updated>2026-01-05T14:43:46.769Z</updated>
    
    <content type="html"><![CDATA[<h1 id="tmux-常用命令速查表">Tmux 常用命令速查表</h1><h2 id="核心机制：前缀键-prefix-key">核心机制：前缀键 (Prefix Key)</h2><p>所有快捷键操作前，必须先按下“扳机”：<strong><code>Ctrl</code> + <code>b</code></strong> (松开后再按后续按键)。</p><h2 id="1-会话管理-session-management">1. 会话管理 (Session Management)</h2><h3 id="在普通终端-terminal-中执行：">在普通终端 (Terminal) 中执行：</h3><table><thead><tr><th style="text-align:left">动作</th><th style="text-align:left">命令</th><th style="text-align:left">说明</th></tr></thead><tbody><tr><td style="text-align:left"><strong>新建会话</strong></td><td style="text-align:left"><code>tmux new -s &lt;名字&gt;</code></td><td style="text-align:left">创建一个有名字的房间 (例如 <code>tmux new -s claude</code>)</td></tr><tr><td style="text-align:left"><strong>列出会话</strong></td><td style="text-align:left"><code>tmux ls</code></td><td style="text-align:left">查看后台有哪些房间在运行</td></tr><tr><td style="text-align:left"><strong>回到会话</strong></td><td style="text-align:left"><code>tmux attach -t &lt;名字&gt;</code></td><td style="text-align:left">重新连接回指定的房间 (简写 <code>tmux a -t &lt;名字&gt;</code>)</td></tr><tr><td style="text-align:left"><strong>彻底删除</strong></td><td style="text-align:left"><code>tmux kill-session -t &lt;名字&gt;</code></td><td style="text-align:left">在外部强制关闭某个房间</td></tr></tbody></table><h3 id="在-tmux-内部操作：">在 Tmux 内部操作：</h3><table><thead><tr><th style="text-align:left">动作</th><th style="text-align:left">快捷键/命令</th><th style="text-align:left">说明</th></tr></thead><tbody><tr><td style="text-align:left"><strong>暂时离开</strong></td><td style="text-align:left"><code>前缀键</code> + <code>d</code></td><td style="text-align:left"><strong>Detach</strong>。人走，房间留着，程序继续跑</td></tr><tr><td style="text-align:left"><strong>彻底结束</strong></td><td style="text-align:left">输入 <code>exit</code> 或 <code>Ctrl</code>+<code>d</code></td><td style="text-align:left">关门熄灯，结束当前面板/会话</td></tr></tbody></table><h2 id="2-屏幕切分-pane-management">2. 屏幕切分 (Pane Management)</h2><p><em>注意：操作前需先按前缀键 <code>Ctrl</code> + <code>b</code></em></p><table><thead><tr><th style="text-align:left">动作</th><th style="text-align:left">快捷键</th><th style="text-align:left">记忆法</th></tr></thead><tbody><tr><td style="text-align:left"><strong>左右切分</strong></td><td style="text-align:left"><code>%</code> (<code>Shift</code> + <code>5</code>)</td><td style="text-align:left">斜杠 <code>/</code> 把屏幕分两半</td></tr><tr><td style="text-align:left"><strong>上下切分</strong></td><td style="text-align:left"><code>&quot;</code> (<code>Shift</code> + <code>'</code>)</td><td style="text-align:left">引号上下两点，代表上下分</td></tr><tr><td style="text-align:left"><strong>切换光标</strong></td><td style="text-align:left"><code>方向键</code> (⬆️⬇️⬅️➡️)</td><td style="text-align:left">想去哪边按哪边</td></tr></tbody></table><h2 id="3-设置鼠标移动">3.设置鼠标移动!!!</h2><p><code>tmux set -g mouse on</code> 回车后，你就可以直接用鼠标滚轮滚动查看历史了，点击面板也会自动切换焦点</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;tmux-常用命令速查表&quot;&gt;Tmux 常用命令速查表&lt;/h1&gt;
&lt;h2 id=&quot;核心机制：前缀键-prefix-key&quot;&gt;核心机制：前缀键 (Prefix Key)&lt;/h2&gt;
&lt;p&gt;所有快捷键操作前，必须先按下“扳机”：&lt;strong&gt;&lt;code&gt;Ctrl&lt;/co</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>2026-W02</title>
    <link href="https://0xhanniba1.github.io/2026/01/2026-W02/"/>
    <id>https://0xhanniba1.github.io/2026/01/2026-W02/</id>
    <published>2026-01-05T02:16:13.000Z</published>
    <updated>2026-01-11T14:17:01.723Z</updated>
    
    <content type="html"><![CDATA[<h2 id="📅-本周概览-summary">📅 本周概览 (Summary)</h2><ul><li><strong>一句话总结</strong>：本周是<strong>工具化思维与AI工作流标准化</strong>并行的一周。通过开发多个实用小工具（Mock服务、JSON转换、X插件）验证了“Claude Code系统化流程”的有效性，技术上覆盖了从开发到运维（Jenkins/Prometheus）的闭环；但在情绪管理和AI账号稳定性上遭遇挑战，需尽快建立抗风险机制。</li><li><strong>进度</strong>：<ul><li><strong>开发产出：</strong> 完成 <code>mock-service</code> (FastAPI)、Web端JSON转断言工具、X(Twitter) 备注分组插件。</li><li><strong>运维/测试：</strong> 跑通 Prometheus+Grafana 监控、Jenkins+钉钉通知流，整理性能测试文档。</li><li><strong>方法论沉淀：</strong> 整理并实践了“Claude Code 系统化使用流程”及“PSB-guide”，验证了结构化开发对质量的提升</li><li><strong>个人成长：</strong> 完成简历大改版，接触 <code>git worktree</code> 与 <code>tmux</code>。</li></ul></li></ul><hr><h2 id="📝-每日记录-daily-log">📝 每日记录 (Daily Log)</h2><h3 id="2026-01-05-周一">2026-01-05 (周一)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 完成 mock-service：一个基于 FastAPI 的轻量级 Mock 服务，支持通过管理页面动态配置接口规则，用于模拟第三方系统接口进行自动化测试</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 学习使用 tmux 分屏等</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 要大改简历，不能按照原来老旧的思路</li></ul></li><li><strong>反思</strong>：<ul><li>做 agent：第一个版本用 claude agent sdk 搭，先跑起来再说</li><li><a href="http://Claude.md">Claude.md</a> 到底如何使用</li><li>cc写，codex测试：节约token 先写框架，再小模块填充</li></ul></li></ul><h3 id="2026-01-06-周二">2026-01-06 (周二)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 修改了简历</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 测试下众安</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> Claude code 只会简单对话给需求，深入学习整理教程也有搞头</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> 自媒体要做：公众号、微博、小红书、推特、抖音</li></ul></li><li><strong>反思</strong>：<ul><li>刷手机真是浪费时间</li></ul></li></ul><h3 id="2026-01-07-周三">2026-01-07 (周三)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 做了一个 web 端 json 一键转 JS/python 断言</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 整理了一个系统性使用 Claude Code的流程</li><li class="task-list-item"><input class="task-list-item-checkbox" disabled="" type="checkbox"> git worktree</li></ul></li><li><strong>反思</strong>：<ul><li>想跑通一下 cc系统性写项目，暂时没想到写什么；还是喜欢写些小工具</li></ul></li></ul><h3 id="2026-01-08-周四">2026-01-08 (周四)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 写了一个 X 的插件：主要是备注、分组</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 给 claude code 加了一个/command，指定中文写作风格</li></ul></li><li><strong>反思</strong>：<ul><li>写 X 插件时按照系统性使用 Claude Code的流程文档操作了前面的准备阶段，项目太小后面没有按照文档。但是，后面测试改动了几个版本，体会到按照流程走的好处。明天重新按照流程走一遍</li><li>想整一个工具箱Zkit-web：将工具都放上去</li></ul></li></ul><h3 id="2026-01-09-周五">2026-01-09(周五)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> Prometheus + Grafana 部署使用</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 性能测试文档整理</li></ul></li><li><strong>反思</strong>：一点事就影响了情绪，计划搁置</li></ul><h3 id="2026-01-10-周六">2026-01-10(周六)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> CI/CD 自动化通知配置指南 (钉钉/飞书)</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 性能测试文档整理</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> .gitignore 模板</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 测试用例生成prompt</li></ul></li><li><strong>反思</strong>：<ul><li>md表格无法在网页里显示，1 个小时未解决！</li></ul></li></ul><h3 id="2026-01-11-周日">2026-01-11(周日)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 按照 PSB-guide 流程跑通了 UItest-Jenkins-ding，</li></ul></li><li><strong>反思</strong>：<ul><li>tmd claude 又把我号封了！严重影响心情</li><li>第一次按照较为全面的流程 vibe 一个项目，感觉确实不一样</li></ul></li></ul><hr><h2 id="💡-本周复盘-weekly-review">💡 本周复盘 (Weekly Review)</h2><ul><li><p><strong>Keep (继续保持)</strong>：</p><ul><li><strong>以造代学</strong>：高频产出实战工具（Mock/JSON/X插件），验证了“需求驱动”的高效性。</li><li><strong>流程落地</strong>：从随意开发转向遵循 “Claude Code SOP” 和 “PSB-guide”，工程质量显著提升。</li></ul></li><li><p><strong>Improve (需要改进)</strong>：</p><ul><li><strong>情绪风控</strong>：减少因工具故障（封号）或琐事（MD表格）导致的心态崩坏，建立备选方案意识。</li><li><strong>时间熔断</strong>：遇到非核心样式问题（如1小时修表格），应强制止损，拒绝低效内耗。</li></ul></li><li><p><strong>Try (下周尝试)</strong>：</p><ul><li><p><strong>Zkit-web 集成</strong>：将本周的零散小工具整合为 Web 平台，借此完整跑通系统化开发流程。</p><p><strong>AI 容灾方案</strong>：配置Codex 或其他模型作为 Claude 的 Plan B，确保生产力不中断。</p></li></ul></li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;📅-本周概览-summary&quot;&gt;📅 本周概览 (Summary)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;一句话总结&lt;/strong&gt;：本周是&lt;strong&gt;工具化思维与AI工作流标准化&lt;/strong&gt;并行的一周。通过开发多个实用小工具（Mock服务、J</summary>
      
    
    
    
    
    <category term="2026zk" scheme="https://0xhanniba1.github.io/tags/2026zk/"/>
    
  </entry>
  
  <entry>
    <title>2026-W01</title>
    <link href="https://0xhanniba1.github.io/2026/01/daily-recoding/"/>
    <id>https://0xhanniba1.github.io/2026/01/daily-recoding/</id>
    <published>2026-01-03T13:12:21.000Z</published>
    <updated>2026-01-04T13:13:31.246Z</updated>
    
    <content type="html"><![CDATA[<h2 id="📅-本周概览-summary">📅 本周概览 (Summary)</h2><ul><li><strong>一句话总结</strong>：本周主要完成了 Postman Mock 的学习与实操，并 vibe 出一个 mock-chrome-plugin，最大的挑战是从零上手 Mock 技术并快速产出可用工具。</li><li><strong>进度</strong>：<ul><li>Postman Mock 学习 ✅ Done</li><li>mock-chrome-plugin 🚀 MVP 完成</li><li>HK 开卡完成</li></ul></li></ul><hr><h2 id="📝-每日记录-daily-log">📝 每日记录 (Daily Log)</h2><h3 id="2026-01-02-周五">2026-01-02 (周五)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 学习 postman mock</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> vibe了一个mock-chrome-plugin</li></ul></li><li><strong>反思</strong>：<ul><li>Gemini 的学习辅导功能特别实用，讲解很详细，对刚开始学的人特别友好。</li></ul></li></ul><h3 id="2026-01-03-周六">2026-01-03 (周六)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 复习 postman mock，又实操了一遍</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 准备 HK 开卡</li><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> 咸鱼找人gpt 军人认证</li></ul></li><li><strong>反思</strong>：<ul><li>X的创作者收益增加，后续可以在X上输出，刚好去办张卡</li></ul></li></ul><h3 id="2026-01-04-周日">2026-01-04 (周日)</h3><ul><li><strong>随记</strong>：<ul class="contains-task-list"><li class="task-list-item"><input class="task-list-item-checkbox" checked="" disabled="" type="checkbox"> HK 一日游</li></ul></li></ul><hr><h2 id="💡-本周复盘-weekly-review">💡 本周复盘 (Weekly Review)</h2><ul><li><strong>Keep (继续保持)</strong>：<ul><li>学完即练的节奏，周五学 + 周六复习实操，知识留存率高</li><li>善用 AI 工具辅助学习（Gemini 讲解）</li><li>保持对新工具/新机会的敏感度（X 创作者收益）</li></ul></li><li><strong>Improve (需要改进)</strong>：<ul><li>每日记录可以更结构化，比如区分「学习」「项目」「杂事」</li><li>周末安排较松散，可提前规划好核心任务</li></ul></li><li><strong>Try (下周尝试)</strong>：<ul><li>在 X 上发第一条技术/工具类内容，测试输出→反馈循环</li><li>把 mock-chrome-plugin 完善一下，考虑是否值得公开分享</li><li>HK 卡到手后，跑通一次完整的收款流程</li></ul></li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;📅-本周概览-summary&quot;&gt;📅 本周概览 (Summary)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;一句话总结&lt;/strong&gt;：本周主要完成了 Postman Mock 的学习与实操，并 vibe 出一个 mock-chrome-plugin，最大</summary>
      
    
    
    
    
    <category term="2026zk" scheme="https://0xhanniba1.github.io/tags/2026zk/"/>
    
  </entry>
  
  <entry>
    <title>Linux常用命令</title>
    <link href="https://0xhanniba1.github.io/2025/09/linux-cli/"/>
    <id>https://0xhanniba1.github.io/2025/09/linux-cli/</id>
    <published>2025-09-27T02:44:58.000Z</published>
    <updated>2025-09-27T02:48:41.859Z</updated>
    
    <content type="html"><![CDATA[<h3 id="第一部分：基础技能-构建可信赖的测试环境"><strong>第一部分：基础技能 - 构建可信赖的测试环境</strong></h3><p><strong>根本问题：</strong> 如何确保我的测试环境是干净、正确、且可重复的？ <strong>核心原则：</strong> 任何测试的有效性都建立在一个稳定且配置正确的环境之上。以下命令是构建和维护这种环境的基石。</p><h4 id="a-文件系统：管理测试资产"><strong>A. 文件系统：管理测试资产</strong></h4><p>这是我们的数字化工作台，存放着代码、数据、日志和脚本。</p><ul><li><strong>导航与检视 (我们在哪？这里有什么？)</strong><ul><li><code>pwd</code> (Print Working Directory): 回答“我现在在哪里？”这个问题，获取当前位置的绝对路径。</li><li><code>ls -lah</code> (List): 回答“这里有什么？”。 <code>-l</code> (长格式) 看权限和所有者，<code>-a</code> (所有) 看隐藏文件，<code>-h</code> (人类可读) 看文件大小。这是检查环境状态的第一步。</li><li><code>cd</code> (Change Directory): 切换工作空间，去往你需要操作的地方。</li></ul></li><li><strong>创建与组织 (搭建工作区)</strong><ul><li><code>mkdir -p &lt;路径&gt;</code>: 创建目录。<code>-p</code> 选项能一次性创建多层嵌套的目录，非常适合组织测试结果，如 <code>mkdir -p test_results/run_20250927</code>。</li><li><code>touch &lt;文件名&gt;</code>: 创建一个空文件，常用于脚本中创建锁文件或日志占位符。</li></ul></li><li><strong>操作与管理 (移动和清理资产)</strong><ul><li><code>cp -r &lt;源&gt; &lt;目标&gt;</code>: 复制文件或目录。<code>-r</code> 用于递归复制整个目录，是准备测试数据的常用操作。</li><li><code>mv &lt;源&gt; &lt;目标&gt;</code>: 移动或重命名文件/目录。</li><li><code>rm -rf &lt;文件/目录&gt;</code>: 删除文件或目录。<code>-r</code> 递归删除，<code>-f</code> 强制执行。<strong>这是一个高风险操作，使用前请三思。</strong></li></ul></li><li><strong>精确定位 (大海捞针)</strong><ul><li><code>find &lt;路径&gt; -name &quot;&lt;模式&gt;&quot;</code>: 在指定路径下根据名称、类型、修改时间等多种条件查找文件。<ul><li><strong>测试场景:</strong> <code>find /var/log -name &quot;*.log&quot; -mtime -1</code> -&gt; 查找过去24小时内被修改过的所有日志文件，是排查近期问题的利器。</li></ul></li></ul></li></ul><h4 id="b-权限管理：控制访问权限"><strong>B. 权限管理：控制访问权限</strong></h4><p><strong>根本问题：</strong> 谁能对这个文件做什么？（读、写、执行） 这是导致自动化脚本失败最常见也最容易被忽略的原因之一。</p><ul><li><code>chmod</code> (Change Mode): 修改权限。<ul><li><strong>场景:</strong> 自动化脚本无法执行？ -&gt; <code>chmod +x my_script.sh</code> (为脚本添加执行权限)。</li><li><strong>两种模式:</strong><ul><li>符号模式 (易读): <code>u+x</code> (为所有者增加执行权限), <code>g-w</code> (为用户组移除写权限)。</li><li>八进制模式 (高效): <code>755</code>, <code>644</code>。<code>755</code> 通常用于目录和脚本，<code>644</code> 用于普通文件。</li></ul></li></ul></li><li><code>chown</code> (Change Owner): 更改文件/目录的所有者和所属组。<ul><li><strong>场景:</strong> 被测应用无法写入日志？ -&gt; 检查日志目录的所有者是否为运行该应用的用户，如果不是，使用 <code>chown -R app_user:app_group /var/log/app</code> 修正。</li></ul></li></ul><hr><h3 id="第二部分：核心技能-从数据中提取洞见"><strong>第二部分：核心技能 - 从数据中提取洞见</strong></h3><p><strong>根本问题：</strong> 系统出错了，日志里记录了什么？海量日志中，哪一句是关键信息？ <strong>核心原则：</strong> 日志是系统行为的唯一事实来源。我们的任务不是“读”日志，而是“审问”日志，从中压榨出有价值的信息。</p><h4 id="a-查看日志：初步侦查"><strong>A. 查看日志：初步侦查</strong></h4><ul><li><code>cat</code>: 一次性显示整个文件（仅适用于小文件）。</li><li><code>less</code>: <strong>查看大文件的正确方式。</strong> 交互式查看，支持搜索 (<code>/</code>) 和翻页，不消耗大量内存。</li><li><code>head</code>/<code>tail</code>: 查看文件的开头/结尾。</li><li><code>tail -f &lt;文件名&gt;</code>: <strong>实时问题分析的王者。</strong> 持续监控文件末尾的新增内容，可以将测试操作与系统日志输出实时关联。</li></ul><h4 id="b-过滤与分析：沙里淘金"><strong>B. 过滤与分析：沙里淘金</strong></h4><ul><li><code>grep</code> (Global Regular Expression Print): <strong>文本搜索的瑞士军刀。</strong><ul><li><strong>核心功能:</strong> 筛选包含特定模式的行。<code>grep &quot;ERROR&quot; app.log</code>。</li><li><strong>关键选项:</strong><ul><li><code>-i</code>: 忽略大小写。</li><li><code>-C &lt;数字&gt;</code> (Context): 显示匹配行的上下文，理解错误背景至关重要。</li><li><code>-v</code> (Invert): 反向匹配，排除无关信息。</li><li><code>-r</code>: 递归搜索目录。</li></ul></li></ul></li><li><code>sed</code> (Stream Editor): <strong>行编辑器。</strong> 擅长对文本行进行批量<strong>替换、删除、插入</strong>。<ul><li><strong>场景:</strong> <code>sed 's/DEBUG/INFO/g' log.txt</code> -&gt; 将日志中的 “DEBUG” 全部替换为 “INFO”，便于分析。</li></ul></li><li><code>awk</code> (Aho, Weinberger, and Kernaghan): <strong>列处理器。</strong> 擅长将一行文本分割成多个字段（列）并进行处理。<ul><li><strong>核心能力:</strong> 将非结构化或半结构化的日志<strong>数据化</strong>。</li><li><strong>场景:</strong> 从访问日志中计算平均响应时间。 <code>grep &quot;200 OK&quot; access.log | awk '&#123;sum+=$10&#125; END &#123;print sum/NR&#125;'</code> -&gt; 筛选成功请求，并对第10列（响应大小）求和，最后打印平均值。</li></ul></li></ul><hr><h3 id="第三部分：控制被测应用-管理进程生命周期"><strong>第三部分：控制被测应用 - 管理进程生命周期</strong></h3><p><strong>根本问题：</strong> 我的应用启动了吗？它运行得怎么样？如何安全地启停它？ <strong>核心原则：</strong> 建立一个“验证 -&gt; 观察 -&gt; 控制”的反馈回路来主动管理被测应用。</p><ul><li><strong><code>ps aux | grep &lt;应用名&gt;</code></strong>: <strong>验证 (Verify)</strong> 进程是否存在、状态如何。这是测试开始前的第一步检查。</li><li><code>top</code>: <strong>观察 (Observe)</strong> 系统和进程的实时资源消耗（CPU、内存）。这是诊断性能问题的首选工具。</li><li><code>kill</code>: <strong>控制 (Control)</strong> 进程的生命。<ul><li><code>kill &lt;PID&gt;</code>: 发送 SIGTERM (15) 信号，请求进程“优雅地”退出。</li><li><code>kill -9 &lt;PID&gt;</code>: 发送 SIGKILL (9) 信号，强制终止进程。这是最后的手段。</li></ul></li></ul><hr><h3 id="第四部分：高级诊断-深入性能与网络"><strong>第四部分：高级诊断 - 深入性能与网络</strong></h3><p><strong>根本问题：</strong> 系统为什么慢？是 CPU、内存、磁盘还是网络的问题？API 调用为何失败？</p><h4 id="a-系统性能剖析"><strong>A. 系统性能剖析</strong></h4><ul><li><strong>宏观监控 (发现症状):</strong><ul><li><code>free -h</code>: 查看内存和交换空间使用情况。</li><li><code>vmstat</code>: 全面了解 CPU、内存、I/O 的动态。</li><li><code>iostat</code>: 深入分析磁盘 I/O 性能。</li></ul></li><li><strong>微观剖析 (定位病因):</strong><ul><li><code>perf</code>: <strong>专家的终极武器，能直接定位到代码函数级别的性能瓶颈。</strong><ul><li><code>perf stat &lt;命令&gt;</code>: 快速获取一个操作的宏观性能指标。</li><li><code>perf top</code>: 实时查看消耗 CPU 最多的函数。</li><li><code>perf record</code> &amp; <code>perf report</code>: 记录详细数据并离线分析，找出导致性能问题的具体调用链。</li></ul></li></ul></li></ul><h4 id="b-网络诊断与测试"><strong>B. 网络诊断与测试</strong></h4><ul><li><strong>基础连通性:</strong><ul><li><code>ping</code>: 检查两台主机之间网络是否通畅。</li><li><code>traceroute</code>: 显示数据包经过的路由路径，定位网络延迟点。</li><li><code>nslookup</code>: 验证域名解析是否正确。</li></ul></li><li><strong>端口与连接:</strong><ul><li><code>netstat -lntp</code>: 查看哪些进程在监听哪些 TCP 端口。验证服务是否成功启动并监听在正确端口上。</li></ul></li><li><strong>API 交互:</strong><ul><li><code>curl</code>: <strong>API 测试的命令行王者。</strong> 模拟各类 HTTP 请求。<ul><li><code>-X &lt;方法&gt;</code>: 指定请求方法 (GET, POST, etc.)。</li><li><code>-H &quot;&lt;头信息&gt;&quot;</code>: 添加请求头 (e.g., “Content-Type: application/json”)。</li><li><code>-d '&lt;数据&gt;'</code>: 发送请求体。</li><li><code>-v</code>: 显示详细的通信过程，用于调试。</li><li><code>-o &lt;文件&gt;</code>: 将响应输出到文件。</li></ul></li></ul></li><li><strong>安全文件传输:</strong><ul><li><code>scp -r &lt;源&gt; &lt;目标&gt;</code>: 在本地和远程服务器之间安全地复制文件/目录。用于部署构建包、上传测试数据、下载日志报告。</li></ul></li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;h3 id=&quot;第一部分：基础技能-构建可信赖的测试环境&quot;&gt;&lt;strong&gt;第一部分：基础技能 - 构建可信赖的测试环境&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;根本问题：&lt;/strong&gt; 如何确保我的测试环境是干净、正确、且可重复的？ &lt;strong&gt;核心原则：&lt;/</summary>
      
    
    
    
    
    <category term="测试" scheme="https://0xhanniba1.github.io/tags/%E6%B5%8B%E8%AF%95/"/>
    
  </entry>
  
</feed>
