<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Frevia&apos;s Blog!</title><description>一个时间长河中的个人档案馆。</description><link>https://frevia.site/</link><image><url>https://frevia.site/favicon.png</url><title>Frevia&apos;s Blog!</title><link>https://frevia.site/</link></image><item><title>Mac 下用 Git 提交自动生成 Obsidian 工作日报</title><link>https://frevia.site/posts/a8f3c2e91b4d47a6a0e5f8c3d2b1a907/</link><guid isPermaLink="true">https://frevia.site/posts/a8f3c2e91b4d47a6a0e5f8c3d2b1a907/</guid><description>告别每个仓库单独配 githooks：用全局扫描 + 白名单 + 中文别名，把工作区目录下的 Git 提交自动汇总进 Obsidian 每日工作项，服务日报与周报。</description><pubDate>Wed, 27 May 2026 02:00:00 GMT</pubDate><content:encoded>&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;p&gt;手头要维护的 Git 仓库一多，写日报就变成一件「想起来才补、补了也不全」的事。我之前的做法是：在每个仓库里放 &lt;code&gt;.githooks/post-commit&lt;/code&gt;，提交后往 &lt;code&gt;~/git-work-log/raw.jsonl&lt;/code&gt; 里追加一行 JSON，再手动跑脚本生成 Markdown。&lt;/p&gt;&lt;p&gt;能用，但麻烦——新项目要记得配 &lt;code&gt;core.hooksPath&lt;/code&gt;，嵌套子仓库容易漏，commit message 里带引号时还可能写坏日志，Obsidian 里也只有 commit 标题、没有正文。&lt;/p&gt;&lt;p&gt;后来改成 &lt;strong&gt;「只扫固定工作区 + 白名单 + 中文项目名 + 定时写入 Obsidian」&lt;/strong&gt;，才算稳定下来。这篇文章把整套流程与关键代码记下来，方便以后换机器或同事复用。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;要解决什么问题&quot;&gt;要解决什么问题&lt;/h2&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;旧方案的问题&lt;/th&gt;&lt;th&gt;新方案的做法&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;每个仓库都要装 hook&lt;/td&gt;&lt;td&gt;定时扫描 &lt;code&gt;~/Projects/work&lt;/code&gt; 下所有 Git 仓库&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;大量历史仓库全记，噪音大&lt;/td&gt;&lt;td&gt;&lt;strong&gt;白名单&lt;/strong&gt;只纳入当前迭代涉及的项目&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;日报里显示 &lt;code&gt;catalog-api&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;&lt;code&gt;repo_aliases.yaml&lt;/code&gt;&lt;/strong&gt; 映射成「商品目录 API」等中文名&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Obsidian 只有 commit 第一行&lt;/td&gt;&lt;td&gt;输出 &lt;strong&gt;分支 + 正文条目&lt;/strong&gt;（Conventional Commits 的 body）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;与 husky 等 hook 冲突&lt;/td&gt;&lt;td&gt;不改动各仓库 hook，全局脚本独立运行&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;目标很明确：&lt;strong&gt;Git 只负责真实提交记录，Obsidian 的 &lt;code&gt;daily/日常工作/每日工作项/&lt;/code&gt; 负责给人看的日报底稿&lt;/strong&gt;。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;整体架构&quot;&gt;整体架构&lt;/h2&gt;&lt;pre&gt;&lt;code class=&quot;language-mermaid&quot;&gt;flowchart LR
  subgraph scan [采集 collect]
    R[工作区下 Git 仓库]
    F[白名单 repo_filter]
    A[raw.jsonl + state.json]
  end
  subgraph report [汇总 report]
    M[按日期过滤]
    C[中文别名]
    O[Obsidian 工作项 md]
  end
  R --&amp;gt; F --&amp;gt; A --&amp;gt; M --&amp;gt; C --&amp;gt; O
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;数据流分三层：&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;&lt;code&gt;~/git-work-log/raw.jsonl&lt;/code&gt;&lt;/strong&gt;：全量 commit 日志（JSON Lines，按 hash 去重）&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;code&gt;~/git-work-log/state.json&lt;/code&gt;&lt;/strong&gt;：每个仓库上次同步到的 &lt;code&gt;HEAD&lt;/code&gt;，增量拉取&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Obsidian&lt;/strong&gt;：&lt;code&gt;daily/日常工作/每日工作项/{年}/{月}/{日期}.md&lt;/code&gt; 里的 &lt;code&gt;## Git 提交（自动）&lt;/code&gt; 区块&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;手写的「今日完成」 checklist 仍在 &lt;code&gt;## 今日完成&lt;/code&gt; 里；自动区块用 HTML 注释包起来，重复 &lt;code&gt;report&lt;/code&gt; 时只替换注释中间的内容，不会冲掉手写内容。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;目录与安装&quot;&gt;目录与安装&lt;/h2&gt;&lt;p&gt;工具放在用户目录，不进业务仓库：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;~/.config/git-work-log/
  config.yaml
  repo_aliases.yaml
  git_work_log.py

~/.local/bin/git-work-log

~/git-work-log/
  raw.jsonl
  state.json
  launchd.log

~/Library/LaunchAgents/com.example.git-work-log.plist
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;命令入口&quot;&gt;命令入口&lt;/h3&gt;&lt;p&gt;&lt;code&gt;~/.local/bin/git-work-log&lt;/code&gt;：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;#!/usr/bin/env bash
set -euo pipefail
exec python3 &quot;$HOME/.config/git-work-log/git_work_log.py&quot; &quot;$@&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;安装后赋予执行权限：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;chmod +x ~/.local/bin/git-work-log
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;launchd-定时任务&quot;&gt;launchd 定时任务&lt;/h3&gt;&lt;p&gt;&lt;code&gt;~/Library/LaunchAgents/com.example.git-work-log.plist&lt;/code&gt;（将 &lt;code&gt;YOUR_USER&lt;/code&gt; 换成本机用户名，或改用 &lt;code&gt;$HOME&lt;/code&gt; 展开后的绝对路径）：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-xml&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;!DOCTYPE plist PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot;
  &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&amp;gt;
&amp;lt;plist version=&quot;1.0&quot;&amp;gt;
&amp;lt;dict&amp;gt;
  &amp;lt;key&amp;gt;Label&amp;lt;/key&amp;gt;
  &amp;lt;string&amp;gt;com.example.git-work-log&amp;lt;/string&amp;gt;
  &amp;lt;key&amp;gt;ProgramArguments&amp;lt;/key&amp;gt;
  &amp;lt;array&amp;gt;
    &amp;lt;string&amp;gt;/Users/YOUR_USER/.local/bin/git-work-log&amp;lt;/string&amp;gt;
    &amp;lt;string&amp;gt;sync&amp;lt;/string&amp;gt;
  &amp;lt;/array&amp;gt;
  &amp;lt;key&amp;gt;RunAtLoad&amp;lt;/key&amp;gt;
  &amp;lt;true/&amp;gt;
  &amp;lt;key&amp;gt;StartInterval&amp;lt;/key&amp;gt;
  &amp;lt;integer&amp;gt;1800&amp;lt;/integer&amp;gt;
  &amp;lt;key&amp;gt;StartCalendarInterval&amp;lt;/key&amp;gt;
  &amp;lt;array&amp;gt;
    &amp;lt;dict&amp;gt;
      &amp;lt;key&amp;gt;Hour&amp;lt;/key&amp;gt;
      &amp;lt;integer&amp;gt;18&amp;lt;/integer&amp;gt;
      &amp;lt;key&amp;gt;Minute&amp;lt;/key&amp;gt;
      &amp;lt;integer&amp;gt;0&amp;lt;/integer&amp;gt;
    &amp;lt;/dict&amp;gt;
  &amp;lt;/array&amp;gt;
  &amp;lt;key&amp;gt;StandardOutPath&amp;lt;/key&amp;gt;
  &amp;lt;string&amp;gt;/Users/YOUR_USER/git-work-log/launchd.log&amp;lt;/string&amp;gt;
  &amp;lt;key&amp;gt;StandardErrorPath&amp;lt;/key&amp;gt;
  &amp;lt;string&amp;gt;/Users/YOUR_USER/git-work-log/launchd.err.log&amp;lt;/string&amp;gt;
  &amp;lt;key&amp;gt;EnvironmentVariables&amp;lt;/key&amp;gt;
  &amp;lt;dict&amp;gt;
    &amp;lt;key&amp;gt;PATH&amp;lt;/key&amp;gt;
    &amp;lt;string&amp;gt;/usr/local/bin:/usr/bin:/bin:/opt/homebrew/bin&amp;lt;/string&amp;gt;
  &amp;lt;/dict&amp;gt;
&amp;lt;/dict&amp;gt;
&amp;lt;/plist&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;加载：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;launchctl load ~/Library/LaunchAgents/com.example.git-work-log.plist
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;会在 &lt;strong&gt;登录、每 30 分钟、每天 18:00&lt;/strong&gt; 执行 &lt;code&gt;git-work-log sync&lt;/code&gt;（&lt;code&gt;collect&lt;/code&gt; + &lt;code&gt;report&lt;/code&gt;）。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;核心代码&quot;&gt;核心代码&lt;/h2&gt;&lt;p&gt;主程序为单文件 Python 3：&lt;code&gt;~/.config/git-work-log/git_work_log.py&lt;/code&gt;。下面摘录与日报质量直接相关的几段（为阅读方便略有删减）。&lt;/p&gt;&lt;h3 id=&quot;1-用-git-log-拉取完整-commit含正文&quot;&gt;1. 用 &lt;code&gt;git log&lt;/code&gt; 拉取完整 commit（含正文）&lt;/h3&gt;&lt;p&gt;旧 hook 把 message 塞进 shell 字符串再拼 Python，引号、换行容易破坏 JSON。新方案用分隔符一次读出 subject 与 body：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;def parse_git_log(repo: Path, rev_range: str) -&amp;gt; list[dict[str, str]]:
    fmt = &quot;%H%x1f%h%x1f%ai%x1f%s%x1f%b%x1e&quot;
    out = run_git(repo, &quot;log&quot;, rev_range, f&quot;--format={fmt}&quot;, &quot;--reverse&quot;)
    if not out:
        return []
    entries = []
    for record in out.split(&quot;\x1e&quot;):
        record = record.strip(&quot;\n&quot;)
        if not record:
            continue
        parts = record.split(&quot;\x1f&quot;, 4)
        if len(parts) &amp;lt; 4:
            continue
        full_hash, short_hash, author_date, subject = parts[:4]
        body = parts[4].rstrip(&quot;\n&quot;) if len(parts) &amp;gt; 4 else &quot;&quot;
        message = subject
        if body.strip():
            message = f&quot;{subject}\n\n{body.strip()}&quot;
        branch = run_git(
            repo, &quot;branch&quot;, &quot;--contains&quot;, full_hash,
            &quot;--format=%(refname:short)&quot;,
        )
        entries.append({
            &quot;time&quot;: format_author_time(author_date),
            &quot;repo&quot;: repo.name,
            &quot;branch&quot;: branch.splitlines()[0] if branch else &quot;HEAD&quot;,
            &quot;commit&quot;: short_hash,
            &quot;commit_full&quot;: full_hash,
            &quot;message&quot;: message,
        })
    return entries
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;写入 &lt;code&gt;raw.jsonl&lt;/code&gt; 时使用标准库序列化，避免手工转义：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;def append_raw(entries: list[dict], known: set[str]) -&amp;gt; int:
    added = 0
    with RAW_LOG.open(&quot;a&quot;, encoding=&quot;utf-8&quot;) as f:
        for e in entries:
            key = e.get(&quot;commit_full&quot;) or e[&quot;commit&quot;]
            if key in known:
                continue
            row = {
                &quot;time&quot;: e[&quot;time&quot;],
                &quot;repo&quot;: e[&quot;repo&quot;],
                &quot;repo_rel&quot;: e.get(&quot;repo_rel&quot;),
                &quot;branch&quot;: e[&quot;branch&quot;],
                &quot;commit&quot;: e[&quot;commit&quot;],
                &quot;message&quot;: e[&quot;message&quot;],
            }
            f.write(json.dumps(row, ensure_ascii=False) + &quot;\n&quot;)
            known.add(key)
            added += 1
    return added
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;单条 &lt;code&gt;raw.jsonl&lt;/code&gt; 示例（对应下文「正经」提交说明）：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;time&quot;: &quot;2026-05-27 14:32:18&quot;,
  &quot;repo&quot;: &quot;catalog-api&quot;,
  &quot;repo_rel&quot;: &quot;acme-stack/catalog-api&quot;,
  &quot;branch&quot;: &quot;release/2.4&quot;,
  &quot;commit&quot;: &quot;a1b2c3d&quot;,
  &quot;message&quot;: &quot;feat(api): 为商品列表接口增加游标分页\n\n- 新增 CursorPageRequest 与 nextCursor 响应字段\n- CatalogService 查询改为 keyset 分页，避免深分页性能问题\n- 补充集成测试覆盖空结果与末页边界&quot;
}
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;2-增量同步statejson&quot;&gt;2. 增量同步：state.json&lt;/h3&gt;&lt;p&gt;每个仓库记录上次同步到的 &lt;code&gt;HEAD&lt;/code&gt;，下次只拉 &lt;code&gt;last_hash..HEAD&lt;/code&gt;：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;if since:
    rev_range = f&quot;--since={since}&quot;
elif last_hash and run_git(repo, &quot;cat-file&quot;, &quot;-e&quot;, f&quot;{last_hash}^{{commit}}&quot;):
    rev_range = f&quot;{last_hash}..HEAD&quot;
else:
    rev_range = f&quot;--since={cfg.get(&apos;initial_since_days&apos;, 30)}.days.ago&quot;

entries = parse_git_log(repo, rev_range)
for e in entries:
    e[&quot;repo_rel&quot;] = repo_relative_path(repo, cfg[&quot;scan_roots&quot;])
append_raw(entries, known)
state[&quot;repos&quot;][repo_key] = {
    &quot;last_hash&quot;: run_git(repo, &quot;rev-parse&quot;, &quot;HEAD&quot;),
    &quot;last_sync&quot;: datetime.now().isoformat(timespec=&quot;seconds&quot;),
}
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;3-渲染-obsidian标题--分支--正文条目&quot;&gt;3. 渲染 Obsidian：标题 + 分支 + 正文条目&lt;/h3&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;def format_commit_lines(item: dict, cfg: dict) -&amp;gt; list[str]:
    opts = cfg.get(&quot;report&quot;, {})
    t = item[&quot;time&quot;].split()[1]
    msg_lines = item.get(&quot;message&quot;, &quot;&quot;).splitlines()
    subject = msg_lines[0] if msg_lines else &quot;(no message)&quot;
    out = [f&quot;- {t} `{item[&apos;commit&apos;]}` {subject}&quot;]

    if opts.get(&quot;include_branch&quot;, True):
        out.append(f&quot;  - 分支: `{item.get(&apos;branch&apos;, &apos;&apos;)}`&quot;)

    if opts.get(&quot;include_commit_body&quot;, True) and len(msg_lines) &amp;gt; 1:
        for line in &quot;\n&quot;.join(msg_lines[1:]).strip().splitlines():
            line = line.strip()
            if not line:
                continue
            if opts.get(&quot;strip_co_authored&quot;) and line.lower().startswith(&quot;co-authored-by:&quot;):
                continue
            out.append(f&quot;  {line}&quot; if line.startswith(&quot;- &quot;) else f&quot;  - {line}&quot;)
    return out
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;4-幂等更新-obsidian-区块&quot;&gt;4. 幂等更新 Obsidian 区块&lt;/h3&gt;&lt;p&gt;用 HTML 注释标记自动区块，&lt;code&gt;report&lt;/code&gt; 多次执行只替换注释内内容：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;SECTION_TITLE = &quot;## Git 提交（自动）&quot;

def upsert_git_section(content: str, section_block: str, markers: dict) -&amp;gt; str:
    start, end = markers[&quot;start&quot;], markers[&quot;end&quot;]
    section = f&quot;{SECTION_TITLE}\n\n{section_block}&quot;
    pattern = re.compile(
        rf&quot;{re.escape(SECTION_TITLE)}\s*\n+{re.escape(start)}.*?{re.escape(end)}&quot;,
        re.DOTALL,
    )
    if pattern.search(content):
        return pattern.sub(section, content, count=1)
    if &quot;## 备注&quot; in content:
        idx = content.index(&quot;## 备注&quot;)
        return content[:idx].rstrip() + &quot;\n\n&quot; + section + &quot;\n\n&quot; + content[idx:]
    return content.rstrip() + &quot;\n\n&quot; + section + &quot;\n&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&lt;h2 id=&quot;旧方案为何容易坏post-commit-反例&quot;&gt;旧方案为何容易坏：post-commit 反例&lt;/h2&gt;&lt;p&gt;每个仓库维护一份 hook 时，常见写法类似：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;#!/usr/bin/env bash
COMMIT_MSG=$($GIT log -1 --pretty=%B)

python3 &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; &quot;$RAW_LOG&quot;
import json
data = {
    &quot;message&quot;: &quot;&quot;&quot;$COMMIT_MSG&quot;&quot;&quot;
}
print(json.dumps(data, ensure_ascii=False))
EOF
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;当 commit body 含 &lt;code&gt;&quot;&lt;/code&gt;、&lt;code&gt;\&lt;/code&gt; 或 Here-Doc 结束符时，JSON 会损坏。全局采集方案不再依赖 per-repo hook，从根上规避这类问题。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;配置文件&quot;&gt;配置文件&lt;/h2&gt;&lt;h3 id=&quot;configyaml完整示例&quot;&gt;config.yaml（完整示例）&lt;/h3&gt;&lt;p&gt;下列项目名为示例，请按实际仓库替换：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;vault_path: &quot;/Users/YOUR_USER/Library/Mobile Documents/iCloud~md~obsidian/Documents/Obsidian Vault&quot;

work_daily:
  dir: &quot;daily/日常工作/每日工作项&quot;

scan_roots:
  - ~/Projects/work

ignore_dir_names:
  - node_modules
  - target
  - build
  - dist

max_depth: 6

repo_filter:
  mode: allowlist
  include_repos:
    - user-portal               # 一级：用户门户
    - billing-service           # 一级：计费服务
  include_paths:
    - acme-stack/catalog-api    # monorepo 子仓库
    - acme-stack/notify-worker

repo_aliases_file: repo_aliases.yaml

markers:
  start: &quot;&amp;lt;!-- git-work-log:start --&amp;gt;&quot;
  end: &quot;&amp;lt;!-- git-work-log:end --&amp;gt;&quot;

report:
  include_branch: true
  include_commit_body: true
  strip_co_authored: true

initial_since_days: 30
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;repo_aliasesyaml英文名--日报中文名&quot;&gt;repo_aliases.yaml（英文名 → 日报中文名）&lt;/h3&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;user-portal: 用户门户
billing-service: 计费服务

acme-stack/catalog-api: 商品目录 API
acme-stack/notify-worker: 消息投递 Worker

catalog-api: 商品目录 API
notify-worker: 消息投递 Worker
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;子仓库建议同时写 &lt;strong&gt;相对路径&lt;/strong&gt; 与 &lt;strong&gt;目录名&lt;/strong&gt;，查找时优先匹配路径。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;生成效果示例正式提交信息&quot;&gt;生成效果示例（正式提交信息）&lt;/h2&gt;&lt;p&gt;假设当日在「商品目录 API」有若干符合 Conventional Commits 的提交，Obsidian 中自动区块类似：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;## Git 提交（自动）

&amp;lt;!-- git-work-log:start --&amp;gt;
**商品目录 API**
- 14:32:18 `a1b2c3d` feat(api): 为商品列表接口增加游标分页
  - 分支: `release/2.4`
  - 新增 CursorPageRequest 与 nextCursor 响应字段
  - CatalogService 查询改为 keyset 分页
  - 补充集成测试覆盖空结果与末页边界

**用户门户**
- 11:05:42 `e4f5a6b` fix(cache): 修正会话缓存 TTL 与击穿保护
  - 分支: `develop`
  - 将未配置 Redis 时的默认过期时间改为 30 分钟
  - 为热点 key 增加 singleflight 防击穿

**消息投递 Worker**
- 09:18:03 `c7d8e9f` refactor(queue): 统一重试退避与死信队列命名
  - 分支: `main`
  - 抽取 RetryPolicy，消除各消费者重复实现
  - 增加超过最大重试次数时的死信归档测试
&amp;lt;!-- git-work-log:end --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;建议在团队中约定 commit 规范（如 Conventional Commits），正文用 &lt;code&gt;-&lt;/code&gt; 列表写变更点，日报几乎可以直接复用。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;常用命令&quot;&gt;常用命令&lt;/h2&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;命令&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;git-work-log collect&lt;/code&gt;&lt;/td&gt;&lt;td&gt;扫描白名单仓库，增量写入 &lt;code&gt;raw.jsonl&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;git-work-log report&lt;/code&gt;&lt;/td&gt;&lt;td&gt;更新今日 Obsidian 工作项&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;git-work-log report 2026-05-27&lt;/code&gt;&lt;/td&gt;&lt;td&gt;更新指定日期&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;git-work-log sync&lt;/code&gt;&lt;/td&gt;&lt;td&gt;collect + report&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;git-work-log doctor&lt;/code&gt;&lt;/td&gt;&lt;td&gt;检查 vault、纳入仓库数、launchd&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;git-work-log repos&lt;/code&gt;&lt;/td&gt;&lt;td&gt;白名单与中文名对照&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;git-work-log aliases --check&lt;/code&gt;&lt;/td&gt;&lt;td&gt;检查未配置中文名的仓库&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;补历史：&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git-work-log collect --since 2026-05-01
git-work-log report 2026-05-01
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&lt;h2 id=&quot;与-obsidian-每日工作流配合&quot;&gt;与 Obsidian 每日工作流配合&lt;/h2&gt;&lt;p&gt;vault 中可配合「每日工作项」模板或技能：早上创建 &lt;code&gt;daily/日常工作/每日工作项/{年}/{月}/{日期}.md&lt;/code&gt;，迁移昨日待办。&lt;/p&gt;&lt;p&gt;分工建议：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;早上&lt;/strong&gt;：建模板，填写 &lt;code&gt;## 今日待办&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;白天&lt;/strong&gt;：按规范提交 Git，无需配置 hook&lt;/li&gt;&lt;li&gt;&lt;strong&gt;定时 / 下班前&lt;/strong&gt;：&lt;code&gt;sync&lt;/code&gt; 刷新 &lt;code&gt;## Git 提交（自动）&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;写周报&lt;/strong&gt;：按日期打开工作项，将 Git 区块整理进 &lt;code&gt;## 今日完成&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;若只需标题、不要正文：&lt;code&gt;report.include_commit_body: false&lt;/code&gt;。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;从-per-repo-githooks-迁移&quot;&gt;从 per-repo githooks 迁移&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;部署 &lt;code&gt;git_work_log.py&lt;/code&gt;、配置文件与 &lt;code&gt;git-work-log&lt;/code&gt; 命令&lt;/li&gt;&lt;li&gt;&lt;code&gt;git-work-log collect --since 2026-05-01&lt;/code&gt; 与 &lt;code&gt;report&lt;/code&gt; 验证 Obsidian 区块&lt;/li&gt;&lt;li&gt;加载 launchd&lt;/li&gt;&lt;li&gt;各仓库逐步移除 &lt;code&gt;git config core.hooksPath .githooks&lt;/code&gt;&lt;/li&gt;&lt;/ol&gt;&lt;hr&gt;&lt;h2 id=&quot;故障排查&quot;&gt;故障排查&lt;/h2&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;现象&lt;/th&gt;&lt;th&gt;处理&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;doctor 显示「纳入日报: 0」&lt;/td&gt;&lt;td&gt;检查 &lt;code&gt;include_repos&lt;/code&gt; / &lt;code&gt;include_paths&lt;/code&gt; 是否包含该仓库&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Obsidian 显示英文目录名&lt;/td&gt;&lt;td&gt;在 &lt;code&gt;repo_aliases.yaml&lt;/code&gt; 补中文映射&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;今日区块为「无 Git 提交」&lt;/td&gt;&lt;td&gt;当日无提交，或提交所在仓库不在白名单&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;同 commit 出现两次&lt;/td&gt;&lt;td&gt;历史 hook 与 collect 重复写入；report 已按短 hash 去重&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;launchd 未执行&lt;/td&gt;&lt;td&gt;&lt;code&gt;launchctl list | grep git-work-log&lt;/code&gt;，查 &lt;code&gt;~/git-work-log/launchd.log&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr&gt;&lt;h2 id=&quot;小结&quot;&gt;小结&lt;/h2&gt;&lt;p&gt;把「记录提交」收拢到一台 Mac 上的定时任务：&lt;strong&gt;白名单&lt;/strong&gt;控制记哪些项目，&lt;strong&gt;别名表&lt;/strong&gt;控制日报可读性，&lt;strong&gt;Obsidian 工作项&lt;/strong&gt;承接最终文稿。&lt;/p&gt;&lt;p&gt;新增迭代项目时，通常只需在 &lt;code&gt;config.yaml&lt;/code&gt; 加一行路径、在 &lt;code&gt;repo_aliases.yaml&lt;/code&gt; 加一行中文名。写日报与周报时，打开当天笔记即可，不必再逐个仓库翻 &lt;code&gt;git log&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;若使用 Obsidian 管理日常工作项，将 &lt;code&gt;vault_path&lt;/code&gt; 与 &lt;code&gt;work_daily.dir&lt;/code&gt; 改为自己的路径即可复用全文流程。&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</content:encoded><enclosure url="" type="image/webp" length="0"/></item><item><title>为了使用微信读书，我把Kindle（kpw3）刷成了安卓</title><link>https://frevia.site/posts/3b3d120752b249bdaa033dc019cb55da/</link><guid isPermaLink="true">https://frevia.site/posts/3b3d120752b249bdaa033dc019cb55da/</guid><description>折腾让Kindle kpw3刷Android系统的经历，从免费CracKDroid到付费KDroid的完整过程</description><pubDate>Fri, 22 May 2026 14:20:19 GMT</pubDate><content:encoded>&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;h2 id=&quot;缘起吃灰的kindle重新焕发生机&quot;&gt;缘起：吃灰的Kindle重新焕发生机&lt;/h2&gt;&lt;p&gt;2017年心血来潮买了一个Kindle，买前力劝自己要养成读书的习惯，买后在抽屉吃灰了多年。再次想起它的时候，是新闻上说亚马逊将停止在国内Kindle服务，我才从某个角落里把Kindle翻了出来。&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://frevia.site/_astro/img-20260522222334958.DnHDdwSZ_7OIyP.webp&quot; alt=&quot;重新发现的Kindle&quot; width=&quot;1206&quot; height=&quot;2622&quot;&gt;&lt;figcaption&gt;重新发现的Kindle&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;最近这段时间，又燃起了对读书的渴望——因为生活中遇到了困境。此时我已把Kindle的账号切换成了美区，依然使用着邮件传书的功能。&lt;/p&gt;&lt;h2 id=&quot;刷机的动机为了更好的笔记整理&quot;&gt;刷机的动机：为了更好的笔记整理&lt;/h2&gt;&lt;p&gt;但此时遇到了一些问题：Kindle上画线、标注的笔记，我需要整理在Obsidian笔记中，此时的Kindle就有点不太方便了。这不，就研究起了给Kindle越狱刷安卓使用微信读书。&lt;/p&gt;&lt;p&gt;当然，上边说的理由还不足够让我行动，&lt;strong&gt;让我想行动的主因是因为想玩（折腾）&lt;/strong&gt;。&lt;/p&gt;&lt;h2 id=&quot;第一次尝试免费的crackdroid&quot;&gt;第一次尝试：免费的CracKDroid&lt;/h2&gt;&lt;p&gt;学着书伴网上的越狱教程以及各个平台提供的安卓刷机包，第一次刷机成功（CracKDroid）。&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://frevia.site/_astro/img-20260522222415624.T22ZH0rp_Z2rQF7h.webp&quot; alt=&quot;CracKDroid刷机后的显示问题&quot; width=&quot;1206&quot; height=&quot;1626&quot;&gt;&lt;figcaption&gt;CracKDroid刷机后的显示问题&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;但是，网上的这个免费资源，刷完后显示是这样的。搜了下说，kpw3机型在kpw3生命周期中生产靠后的机型会出现这个问题。&lt;/p&gt;&lt;p&gt;好吧。&lt;/p&gt;&lt;h2 id=&quot;柳暗花明付费kdroid解决方案&quot;&gt;柳暗花明：付费KDroid解决方案&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;上帝给我关了门&lt;br&gt;
但是&lt;br&gt;
上帝又给我留了个洞&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;搜索发现某宝上买个激活码，用KDroid。现在才知道上边免费的CracKDroid是破解了KDroid (&lt;a href=&quot;http://kdroid.club/firmtemp.html&quot;&gt;http://kdroid.club/firmtemp.html&lt;/a&gt;) 早期版本。&lt;/p&gt;&lt;p&gt;花了50大洋，成功点亮：&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://frevia.site/_astro/img-20260522224211071.DBs4tVZg_1Elab2.webp&quot; alt=&quot;KDroid成功运行&quot; width=&quot;2174&quot; height=&quot;3059&quot;&gt;&lt;figcaption&gt;KDroid成功运行&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&quot;使用体验可以接受的妥协&quot;&gt;使用体验：可以接受的妥协&lt;/h2&gt;&lt;p&gt;简单体验了一下，&lt;strong&gt;还行吧&lt;/strong&gt;。没有原系统流畅，但是也能接受。&lt;/p&gt;&lt;p&gt;有个细节差异：原系统屏幕的下方只有左侧1/3的区域是可以往前翻页的，微信读书的就是对半分。&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://frevia.site/_astro/img-20260522224411704.-dpqvkmq_Z2vpfL8.webp&quot; alt=&quot;微信读书界面对比&quot; width=&quot;2076&quot; height=&quot;2998&quot;&gt;&lt;figcaption&gt;微信读书界面对比&lt;/figcaption&gt;&lt;/figure&gt;&lt;hr&gt;&lt;p&gt;2026-05-25&lt;/p&gt;&lt;p&gt;用了几天之后，我还是把它刷回了原系统。&lt;/p&gt;&lt;p&gt;我找到了一条更适合自己的路：Obsidian 的 &lt;code&gt;Kindle Highlights&lt;/code&gt; 插件。&lt;/p&gt;&lt;p&gt;这个插件可以通过 Amazon 账号登录，把书籍中的高亮、划线、书签和笔记同步出来。&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</content:encoded><enclosure url="https://frevia.site/_astro/img-20260522224411704.-dpqvkmq.jpg" type="image/webp" length="0"/></item><item><title>【每周一书】自卑与超越</title><link>https://frevia.site/posts/367bad259c46406ea06373ecda6ff7dc/</link><guid isPermaLink="true">https://frevia.site/posts/367bad259c46406ea06373ecda6ff7dc/</guid><description>阿德勒心理学经典之作，揭示自卑情结的本质与超越之道——唯有通过与社会的联结和合作，才能真正实现自我价值的提升。</description><pubDate>Wed, 20 May 2026 16:00:00 GMT</pubDate><content:encoded>&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;h2 id=&quot;核心洞察&quot;&gt;核心洞察&lt;/h2&gt;&lt;p&gt;《自卑与超越》是阿尔弗雷德·阿德勒的心理学经典著作。阿德勒与弗洛伊德、荣格并称为 20 世纪三大心理学家。这本书揭示了一个深刻的真理：&lt;strong&gt;每个人内心都有或多或少的自卑情结，但自卑本身并非问题，关键在于你用什么方式去超越它&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;错误的超越方式会导致暴力犯罪、人际关系恶劣、精神疾病；而唯一正确的超越方法是：&lt;strong&gt;把你的价值和社会的价值联系在一起，通过为社会解决问题、与他人合作来实现自我价值的增长&lt;/strong&gt;。这不是为了社会，而是为了我们自己的幸福感。&lt;/p&gt;&lt;p&gt;先给一句总括：阿德勒不是在教“如何赢过别人”，而是在教“如何把自卑转成建设性力量”。判据不在情绪强弱，而在行动方向——你的努力是否把你带向合作、平等与联结。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://book.douban.com/subject/36139149/&quot; title=&quot;书籍：《自卑与超越》&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;书籍：《自卑与超越》&lt;/a&gt;&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;自卑与超越的本质&quot;&gt;自卑与超越的本质&lt;/h2&gt;&lt;h3 id=&quot;自卑是人类进步的动力&quot;&gt;自卑是人类进步的动力&lt;/h3&gt;&lt;p&gt;自卑情结是普遍存在的，它本身不是变态，而是&lt;strong&gt;人类地位提升的动力&lt;/strong&gt;。如果全人类都觉得现状完美，就不会有任何改进和创造。个人也是如此——正是因为有自卑感，我们才会不断进步、不断超越。&lt;/p&gt;&lt;h3 id=&quot;错误的超越方式&quot;&gt;错误的超越方式&lt;/h3&gt;&lt;p&gt;如果用错了超越的方法，可能会万劫不复：&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;不择手段追求金钱和权力&lt;/strong&gt; — 咬牙切齿地要比别人强，为了挣钱不择手段，伤害周围所有关系。这种人即使成为大款或高官，生活也特别痛苦。很多贪官在家里囤积大量现金，是因为童年受过伤，认为只有这样才能拯救自卑。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;通过暴力获得优越感&lt;/strong&gt; — 让别人怕自己，通过虐待他人甚至暴力犯罪来实现优越感。&lt;strong&gt;所有暴力犯罪分子内心都有深深的自卑感&lt;/strong&gt;，他们觉得对一切无能为力，所以用暴力来立刻实现优越感。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;用疾病逃避现实&lt;/strong&gt; — &quot;我有病你知道吗&quot;，让自己得病（广场恐惧症、精神分裂症，甚至二十多岁还尿床），用这种方法逃避对自卑感的感受。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;blockquote&gt;&lt;p&gt;简单地追求优越的结果，会带来暴力犯罪、人际关系恶劣和对整个社会的伤害。&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;唯一正确的超越方法&quot;&gt;唯一正确的超越方法&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;把你的价值和社会的价值联系在一起&lt;/strong&gt; — 通过为社会解决问题、与他人合作来实现自己价值的增长。当你在社会上有很多人喜欢你，为社会作出了贡献，才能降低内心的自卑感，生活得幸福淡定。&lt;/p&gt;&lt;p&gt;用孔子的话说就是：&lt;strong&gt;仁者不忧&lt;/strong&gt;。像特蕾莎修女这样的人，自己一点钱都没有，但内心无比开心，因为她心中没有自己，是为整个社会在生活。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;这不是为了社会，而是为了我们自己的幸福感能够增加。否则你挣再多的钱，不断进步升职买大房子，内心永远都会觉得没有安全感。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;&lt;h2 id=&quot;人生的三大联结与三大问题&quot;&gt;人生的三大联结与三大问题&lt;/h2&gt;&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;/strong&gt; — 我们生活在地球上，必须与自然环境作斗争（种地、养动物等）&lt;/li&gt;&lt;li&gt;&lt;strong&gt;社会性的需求&lt;/strong&gt; — 靠一个人活不下去，必须与他人结伴合作&lt;/li&gt;&lt;li&gt;&lt;strong&gt;两性关系&lt;/strong&gt; — 如果希望基因延续，就必须生活在两性关系当中&lt;/li&gt;&lt;/ol&gt;&lt;h3 id=&quot;三大人生问题&quot;&gt;三大人生问题&lt;/h3&gt;&lt;p&gt;这三大联结带来人生发展中的三个最重要侧面：&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;联结&lt;/th&gt;&lt;th&gt;对应问题&lt;/th&gt;&lt;th&gt;核心内容&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;自然环境&lt;/td&gt;&lt;td&gt;&lt;strong&gt;职业问题&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;怎么面对自然环境，如何谋生&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;社会性&lt;/td&gt;&lt;td&gt;&lt;strong&gt;位置问题&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;在社会上处于哪个位置，身边有没有人支持，朋友多不多，有没有社会意义&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;两性关系&lt;/td&gt;&lt;td&gt;&lt;strong&gt;夫妻关系问题&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;性的问题，如何与伴侣合作&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;blockquote&gt;&lt;p&gt;所有自卑与超越理论的基石，就是想解决这三个问题。这三个问题解决得好，自卑感就会下降；解决得不好，自卑感就会控制你的人生。&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;3x3-阿德勒快检&quot;&gt;3x3 阿德勒快检&lt;/h3&gt;&lt;p&gt;把任何困境放进一个九宫格里看，能快速判断自己是在成长，还是在“私人优越路线”里打转。&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;课题 \ 指标&lt;/th&gt;&lt;th&gt;是否增进合作&lt;/th&gt;&lt;th&gt;是否减少回避&lt;/th&gt;&lt;th&gt;是否形成长期贡献&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;职业&lt;/td&gt;&lt;td&gt;是否更能与同事/客户协作&lt;/td&gt;&lt;td&gt;是否少用拖延/换赛道逃避挫败&lt;/td&gt;&lt;td&gt;是否沉淀可复用价值&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;社会&lt;/td&gt;&lt;td&gt;是否更愿意理解并支持他人&lt;/td&gt;&lt;td&gt;是否减少对评价的防御&lt;/td&gt;&lt;td&gt;是否稳定建设互信关系&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;爱情/亲密&lt;/td&gt;&lt;td&gt;是否更平等协商&lt;/td&gt;&lt;td&gt;是否减少冷战、控制、讨好&lt;/td&gt;&lt;td&gt;是否共同承担长期责任&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;判读原则：若两个以上课题同时恶化，且合作指标下降，基本可判定为“优越感补偿在接管”。&lt;/p&gt;&lt;h3 id=&quot;两个生活化案例同样自卑不同走向&quot;&gt;两个生活化案例：同样自卑，不同走向&lt;/h3&gt;&lt;p&gt;小林入职第二年，总担心自己不够好。项目评审时，他每次都抢着证明“我早就想到这个了”，别人一质疑就立刻反击。短期看，他很“强”；长期看，同事开始绕开他，协作机会越来越少。后来他做了一个小调整：每次会议先说“我先补三条能帮团队推进的方案”，不再争“谁最聪明”。三个月后，他反而拿到更关键的模块，因为大家愿意和他共事。自卑没有消失，但被转换成了可合作、可贡献的行动。&lt;/p&gt;&lt;p&gt;另一位朋友小周，遇到亲密关系冲突就冷处理，表面是“我不想吵”，实际是“我怕输、怕被看见脆弱”。关系越拖越僵，他越觉得“果然没人懂我”。后来他开始练习一个很小的动作：冲突当晚不拉黑、不失联，只说三句——“我现在很防御”“我需要十分钟冷静”“我愿意回来把这件事谈完”。这不是技巧炫耀，而是把回避改成联结。关系质量提升后，他在工作里的焦虑也明显下降。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;童年自卑情结的根源&quot;&gt;童年：自卑情结的根源&lt;/h2&gt;&lt;h3 id=&quot;三类容易出问题的儿童&quot;&gt;三类容易出问题的儿童&lt;/h3&gt;&lt;p&gt;阿德勒总结了三类童年时期比较容易出现问题的人：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. 有器官缺陷的儿童&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;像阿德勒自己一样，身体不好、有点驼背、得过软骨症。这类孩子如果得到恰当的引导，可能成为霍金或海伦·凯勒；如果不能正确对待器官缺陷，后期就可能性格偏执，甚至出现精神层面的问题。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2. 受宠的儿童&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;受宠儿童从小得到的训练是：期望自己的愿望被当作法律来对待，无需努力就出类拔萃。他们认为生活就意味着要做第一、成为最重要的人、能够得到想要的一切。这种孩子长大后，在心理方面会出现严重的问题。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. 被忽视的儿童&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;从来不知道爱与合作为何物。在这类孩子心目中，与他人的关系是靠斗争得来的，不争取一切都没有。&lt;/p&gt;&lt;p&gt;电影里大反派的台词几乎都反映这两种人格：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;受宠型：&quot;你们不应该这样对我，这是极大的背叛，为什么所有人都跟我过不去？&quot;&lt;/li&gt;&lt;li&gt;被忽视型：&quot;你知道我经历过什么吗？所有这一切都是你们逼我做的。&quot;&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;最早年间的记忆你的人格密码&quot;&gt;最早年间的记忆：你的人格密码&lt;/h3&gt;&lt;p&gt;心理治疗时，阿德勒会问一个人&lt;strong&gt;最早年间的记忆&lt;/strong&gt;——你脑海中所能想到的人生最早那幅画面是什么？这幅画面将有可能决定你的人格中有没有问题。&lt;/p&gt;&lt;p&gt;几个例子：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&quot;咖啡壶倒在桌上烫着我了&quot; → 经常责怪别人没有给她足够的照顾，觉得生活充满危险&lt;/li&gt;&lt;li&gt;&quot;三岁时从摇篮里摔下来&quot; → 严重的焦虑和恐惧&lt;/li&gt;&lt;li&gt;&quot;跑到大街上大声呼叫，其实我藏在碗柜里&quot; → 用让别人担心的方式来保护自己（这个孩子长大后还在用尿床来让妈妈照顾他）&lt;/li&gt;&lt;li&gt;&quot;母亲让我摇动摇篮车里的小妹妹&quot; → 有合作，有对他人的帮助，这个人会好很多&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;心理学就是对合作中缺陷的理解。如果你和他人、社会、家人在合作当中没有缺陷，心理就很健康。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;&lt;h2 id=&quot;家庭的影响&quot;&gt;家庭的影响&lt;/h2&gt;&lt;h3 id=&quot;母亲的角色&quot;&gt;母亲的角色&lt;/h3&gt;&lt;p&gt;合作从最早开始——从妈妈第一次抱起孩子的那一刻就已经开始了。&lt;/p&gt;&lt;p&gt;一个真正爱孩子的妈妈，会非常容易地学会用舒服的方式抱孩子，给孩子洗澡时孩子不会哭，会非常愉快地笑着配合。这就是合作的开始。&lt;/p&gt;&lt;p&gt;反过来，一边照顾孩子一边抱怨的妈妈，内心觉得&quot;我不应该这样，我应该过更精彩的生活&quot;，试图寻找内心的优越感——这时候孩子也不能学会跟母亲好好合作。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;决定孩子行为的，不是孩子的经验，而是他从这个经验当中得出的解读。营养不良的孩子很多，有的成为了罪犯，有的没有，因为他重新解读了这个世界。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;如果母亲的爱被夸大成一种占有，孩子会找到获取母亲注意最有效的方法——半夜惊醒、大喊大叫、折腾妈妈，因为他觉得只有这样才能体现&quot;你是我的妈妈&quot;。一旦出现竞争者（哪怕是父亲），俄狄浦斯情结就会出现。&lt;/p&gt;&lt;h3 id=&quot;父亲的角色&quot;&gt;父亲的角色&lt;/h3&gt;&lt;p&gt;父亲的作用与母亲同样重要。理想的家庭模式是：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;父亲知道挣钱只是分工，妈妈在家照顾整个家庭的工作更重要&lt;/li&gt;&lt;li&gt;家里没有那个非得说了算的人&lt;/li&gt;&lt;li&gt;父母之间充分合作，不把孩子当作争夺爱的筹码&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;如果父亲脾气火爆、试图控制家庭成员，男孩会得到错误的男性观念，女孩则会把婚姻视为征服和奴役。如果母亲控制欲强，情形就会逆转。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;如果父母间的合作不充分，他们也无法教孩子如何合作。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;&lt;h2 id=&quot;学校的影响&quot;&gt;学校的影响&lt;/h2&gt;&lt;h3 id=&quot;好老师的标准&quot;&gt;好老师的标准&lt;/h3&gt;&lt;p&gt;阿德勒认为，教师必须做母亲应该做的事——和孩子联系在一起，对孩子感兴趣。&lt;strong&gt;严厉和惩罚是大忌&lt;/strong&gt;，因为一旦这样做，孩子就很难跟老师建立沟通和联结。&lt;/p&gt;&lt;p&gt;那些&quot;坏孩子&quot;在找借口逃学方面表现出极高的智慧，但就是不愿意待在学校——不是因为笨，而是因为学校在他们眼中是一个不断折磨人的地方。&lt;/p&gt;&lt;p&gt;正确的方法是：了解孩子以前的兴趣在哪里，让他相信他在这种兴趣上能够获得成功。&lt;strong&gt;当孩子在某一方面觉得有信心的时候，在其他方面激励他就容易得多。&lt;/strong&gt;&lt;/p&gt;&lt;h3 id=&quot;竞争-vs-合作&quot;&gt;竞争 vs 合作&lt;/h3&gt;&lt;p&gt;阿德勒批评当时（以及现在）的教育体制：孩子们开始上学时，对竞争的准备胜过合作，对竞争的训练持续整个学校时光。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;努力打败其他孩子，他的不幸并不比他落后于人、进而放弃斗争要少。在这两种情境下，他在根本上都只对自己感兴趣，他的目标并不是奉献和帮助，而是弄到一切他可以弄到的。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;用&quot;你要稍微使点劲，成绩就能跑到前边去&quot;来鼓励孩子，往往没什么变化——因为这个孩子不使劲都很聪明，一旦使劲万一不聪明，神话就被戳穿了。所以他会永远吊儿郎当，保留这个优越感。&lt;/p&gt;&lt;p&gt;正确的方法是：把大家组织在一起，不针对任何一个人，讨论&quot;懒惰是怎么产生的、有什么危害、怎么克服&quot;——那个孩子甚至感受不到这是为他举行的班会。这就是合作的过程。&lt;/p&gt;&lt;h3 id=&quot;天赋是个谎言&quot;&gt;天赋是个谎言&lt;/h3&gt;&lt;p&gt;这里与《刻意练习》的观点完全重合：&lt;strong&gt;根本没有天赋这回事&lt;/strong&gt;。帕格尼尼和莫扎特也没有任何天赋可言，他们都是因为有了正确的、不断练习的方法才能成为大师。&lt;/p&gt;&lt;p&gt;老师给孩子下定义（&quot;你数学不行&quot;、&quot;你语文不行&quot;），孩子就会自我认同这件事，然后在别的方向弥补优越感，放弃这件事。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;一朝为学渣，终身为学渣——原因就是那个孩子可能只是某一个知识点没学会，却被老师冠以了&quot;你数学不行&quot;的概念。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;&lt;h2 id=&quot;犯罪的根源&quot;&gt;犯罪的根源&lt;/h2&gt;&lt;h3 id=&quot;犯罪是努力的失败&quot;&gt;犯罪是努力的失败&lt;/h3&gt;&lt;p&gt;犯罪来自于努力的失败。罪犯也在追求优越感，只是他们采取了错误的方向——&lt;strong&gt;以个人的方式，对别人没有任何贡献，不具有合作性&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;一个人为什么要当小偷？因为在他性格还没有养成、还没有能力的时候，就已经极度渴望获得优越感，又不会打工、没有知识文化，于是捷径就是去偷东西。&lt;/p&gt;&lt;p&gt;犯罪集团内部的合作只限于小范围（&quot;我们��一个家人&quot;），但他们与整个世界是断开的，对整个世界来讲是危险分子。&lt;/p&gt;&lt;h3 id=&quot;所有罪犯都是懦夫&quot;&gt;所有罪犯都是懦夫&lt;/h3&gt;&lt;blockquote&gt;&lt;p&gt;犯罪是对英雄主义的弱模仿。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这些犯罪分子可能也看过很多英雄故事，希望成为那样的人，但内心又特别自卑，又特别希望得到荣耀感，所以弱地模仿——用让普通人害怕自己的方法，来找到英雄的快感。&lt;/p&gt;&lt;p&gt;审讯犯人时，如果能指出他糯弱的地方，这个人可能很快就崩溃了。&lt;/p&gt;&lt;h3 id=&quot;如何打破犯罪循环&quot;&gt;如何打破犯罪循环&lt;/h3&gt;&lt;p&gt;在家里和学校就把这件事解决，这个人可能就不需要进管教所；在管教所里解决，可能就不会再进监狱。&lt;/p&gt;&lt;p&gt;在管教所里，应该教会他们：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;合作的能力&lt;/li&gt;&lt;li&gt;谋生的手段&lt;/li&gt;&lt;li&gt;为社会作出贡献后所获得的那种回报感（这种感觉对他们来说非常陌生）&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;我们必须训练他有勇气对别人感兴趣。这些人在童年时肯定对妈妈、爸爸、第一任老师感过兴趣，但他们受到了伤害，丧失了对别人感兴趣的勇气。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;&lt;h2 id=&quot;精神疾病与治愈&quot;&gt;精神疾病与治愈&lt;/h2&gt;&lt;h3 id=&quot;与同伴分离是根源&quot;&gt;与同伴分离是根源&lt;/h3&gt;&lt;p&gt;各种精神疾病都来自于&lt;strong&gt;与同伴分离&lt;/strong&gt;——没有跟同伴产生联结。严重时会发疯，甚至连阳痿和早泄这样的生理疾病，也来自于心理上与同伴分离所导致的结果。&lt;/p&gt;&lt;p&gt;阿德勒治疗一个认为自己是狗的女孩的案例：精神病院用打针、吃药、关禁闭、电击，女孩根本不为所动。阿德勒坐在她旁边，把她当作一个人，温柔地跟她说话，不批评、不阻止她的行为。女孩打了他，他也不反抗；女孩砸碎玻璃割破手，他温柔地把她拉下来。就这样，女孩开始跟他讲话，慢慢走上康复之路，最终完全恢复正常。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;如果你真的想要治疗一个人的心理疾病，你必须知道这个心理疾病的根源在哪里。当根源是没有跟他人建立联结时，你就要想办法把这个联结对接上。&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;抑郁症的治疗原则&quot;&gt;抑郁症的治疗原则&lt;/h3&gt;&lt;p&gt;对抑郁症患者，阿德勒有一条最基本的原理：&lt;strong&gt;不要做任何你不想做的事&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;不要强迫他走出来、看电影、参加活动——这只会加重病情。只要跟着他就好，他说去看电影就去，不想看就回来，没关系，不用责怪他。这样他才能慢慢找到跟同伴之间的联结。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;职业与婚姻&quot;&gt;职业与婚姻&lt;/h2&gt;&lt;h3 id=&quot;职业问题的本质&quot;&gt;职业问题的本质&lt;/h3&gt;&lt;blockquote&gt;&lt;p&gt;如果你不会游泳，怎么换游泳池都没用。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;有些人无论选择什么职业都不会满意，因为他们所要的不是一种职业，而是对优越感的轻易保障。他们希望付出很少的努力，得到巨大的回报——这时候所有的职业都会令他们觉得沮丧。&lt;/p&gt;&lt;p&gt;还有一种人用忙碌的工作来逃避爱情和婚姻问题：&quot;我没有时间花在婚姻上，因此我不应该对它的不美满负责。&quot;&lt;/p&gt;&lt;p&gt;这类模式在现实里很常见：白天在公司“高效冲刺”，晚上回家只剩疲惫和沉默；看起来在解决职业课题，实际在回避亲密课题。阿德勒式的修正不是辞职换工作，而是承认三课题彼此联动——如果你在亲密关系里长期失联，职业里的优越追逐也会越来越空。真正有效的改变，往往是把一部分精力从“证明我很厉害”，转到“我是否在建设可持续关系”。&lt;/p&gt;&lt;h3 id=&quot;一夫一妻制的意义&quot;&gt;一夫一妻制的意义&lt;/h3&gt;&lt;p&gt;经过多年文化进化，一夫一妻制被证明是最佳保障——它是双方平等对话、让双方互不亏欠、都能感受到自己和他人联结的最好方法。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;总结&quot;&gt;总结&lt;/h2&gt;&lt;p&gt;阿德勒给我们指明了人生最重要的方向。记住三个关键词：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;合作&lt;/strong&gt; — 无论创业、打工、写作，都要时刻感受到自己与这个社会的联结&lt;/li&gt;&lt;li&gt;&lt;strong&gt;平等&lt;/strong&gt; — 父子之间、师生之间、狱警与犯人之间、配偶之间，都可以平等&lt;/li&gt;&lt;li&gt;&lt;strong&gt;联结&lt;/strong&gt; — 把你的价值和社会的价值联系在一起&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;三条常见误读&quot;&gt;三条常见误读&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;把“超越自卑”理解成“必须处处第一”&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;这会把成长变成竞争成瘾，短期兴奋，长期空心。&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;把“社会兴趣”理解成讨好他人&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;阿德勒讲的不是取悦，而是平等合作与共同负责。&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;把“童年决定论”当借口&lt;/strong&gt;&lt;ul&gt;&lt;li&gt;早期经验影响风格，但人可以通过新行动重写风格。&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3 id=&quot;一周行动清单可直接实践&quot;&gt;一周行动清单（可直接实践）&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;职业&lt;/strong&gt;：本周做一件“对团队有净贡献”的事，并写下影响对象是谁。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;社会&lt;/strong&gt;：主动修复一段微冲突关系，不辩输赢，只做澄清与协作。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;亲密&lt;/strong&gt;：与伴侣/家人完成一次 20 分钟平等对话：需求、边界、可执行分工。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;自我观察&lt;/strong&gt;：每天记录一次“我在追求优越感，还是在创造贡献？”&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;当你能够把合作、平等和联结做好，你才能够完成自身自卑的完美超越，把你的自卑真的变成你进步的动力，而不要让它成为你心灵扭曲的来源。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;笔记整理自樊登读书与周小进版自卑与超越&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</content:encoded><enclosure url="https://frevia.site/_astro/img-20260521221138814.tYWp1txh.jpg" type="image/webp" length="0"/></item><item><title>【每周一书】家庭的觉醒</title><link>https://frevia.site/posts/8f85215e728f482ba3200fc559c56d21/</link><guid isPermaLink="true">https://frevia.site/posts/8f85215e728f482ba3200fc559c56d21/</guid><description>育儿的核心对象不是孩子，而是父母自己。孩子来到我们身边，是为了唤醒我们——照出我们内心的恐惧、不成熟和未完成的功课。</description><pubDate>Tue, 12 May 2026 02:00:00 GMT</pubDate><content:encoded>&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;p&gt;有一个场景，几乎每个家长都经历过：对孩子大声咆哮，冷静下来之后又后悔不已。&lt;/p&gt;&lt;p&gt;那个咆哮的你，和那个后悔的你，哪个才是真的你？&lt;/p&gt;&lt;p&gt;这本书给出了一个清晰的答案：咆哮的那个叫&lt;strong&gt;自我&lt;/strong&gt;，后悔反思的那个才是&lt;strong&gt;真我&lt;/strong&gt;。自我根植于恐惧，真我来自内心的安静。《家庭的觉醒》要做的，就是帮你把这两个分开。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://book.douban.com/subject/35018160/&quot; title=&quot;书籍：《家庭的觉醒》&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;书籍：《家庭的觉醒》&lt;/a&gt;&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;孩子是唤醒者不是被改造者&quot;&gt;孩子是唤醒者，不是被改造者&lt;/h2&gt;&lt;p&gt;宫崎骏说，孩子本来是觉醒的。三岁以前的孩子爱自己，对世界充满好奇，做事没有功利心。但随着我们的教养，他们慢慢变成了跟我们差不多的人——有烦恼，发脾气，喜欢对抗。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;孩子来到我们身边，不是为了被改变，而是为了唤醒我们。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;我们总想花大力气改变孩子，但真正需要改变的是父母自己。当你能把劲使在自己身上，整个家庭才会得到觉醒。&lt;/p&gt;&lt;p&gt;孩子就像一面照妖镜，照出我们内心各种各样的恐惧和不成熟。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;七大育儿迷思&quot;&gt;七大育儿迷思&lt;/h2&gt;&lt;h3 id=&quot;迷思一教养都是为了孩子&quot;&gt;迷思一：教养都是为了孩子&lt;/h3&gt;&lt;p&gt;&quot;还不都是为了你&quot;——这句话背后，其实是把孩子当成了自己的装饰品。&lt;/p&gt;&lt;p&gt;教养的核心对象不是孩子，而是家长本人。一个家庭真正的改变，来自父母的成长，而不是让孩子读更多的书。&lt;/p&gt;&lt;p&gt;家长给孩子贴的那些标签——&quot;过于懒散&quot;&quot;过于敏感&quot;&quot;过于不专心&quot;——无论孩子怎么表现，总是&quot;不够&quot;或&quot;过于&quot;。当教育的重点全部放在孩子身上，要求是无穷无尽的。&lt;/p&gt;&lt;h3 id=&quot;迷思二成功的孩子总是在前面&quot;&gt;迷思二：成功的孩子总是在前面&lt;/h3&gt;&lt;p&gt;整个社会越来越竞技化，家长拼命让孩子赢在起跑线。但你只要回顾一下上学时班里的排名，和今天同学们的生活状态是否一一对应，就明白了：人生有太多起伏错落。&lt;/p&gt;&lt;p&gt;作者把孩子的能力比作五根手指：&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;手指&lt;/th&gt;&lt;th&gt;代表&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;大拇指&lt;/td&gt;&lt;td&gt;与自己的关系（能否和谐相处）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;食指&lt;/td&gt;&lt;td&gt;与家人的关系&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;中指&lt;/td&gt;&lt;td&gt;与社区的关系&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;无名指&lt;/td&gt;&lt;td&gt;与各种目标的关系&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;小拇指&lt;/td&gt;&lt;td&gt;外在成就（学习成绩、体育成就）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;现在的家长把小拇指当成了唯一，却忽略了其他四根。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;家长对孩子未来有过度清晰的想象，是一个家庭的灾难。你越是刚性规定孩子的人生路径，冲撞就越多。&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;迷思三孩子有好坏之分&quot;&gt;迷思三：孩子有好坏之分&lt;/h3&gt;&lt;p&gt;给孩子贴标签，比怀疑自己要容易得多。但贴标签是在回避反思。&lt;/p&gt;&lt;p&gt;生了孩子以后，才是我们真正改变的开始。&lt;/p&gt;&lt;h3 id=&quot;迷思四好家长是天生的&quot;&gt;迷思四：好家长是天生的&lt;/h3&gt;&lt;p&gt;有爱就能成为好妈妈？这是浪漫的幻想。孩子出生那一刻，没有妈妈不感动。但等孩子长到三四岁，开始不会写作业、丢三落四，那个妈妈的耐心就被消耗得差不多了。&lt;/p&gt;&lt;p&gt;成为好家长，需要大量的学习和自我成长。&lt;/p&gt;&lt;h3 id=&quot;迷思五有爱就是好家长&quot;&gt;迷思五：有爱就是好家长&lt;/h3&gt;&lt;p&gt;爱是好东西，但爱后面很容易跟着恐惧。佛教讲&quot;由爱而生怖&quot;——你越爱，恐惧越多，恐惧带来占有欲和控制欲，爱就变味了。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;我们的许多爱其实是爱自己，只是伪装成了爱别人。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;真正的爱是什么？作者的定义：&lt;strong&gt;一种能够全面地看见、接受且尊重他人本来面貌的能力。&lt;/strong&gt; 不要求对方同样爱我们，也不为他们的爱设置条件。&lt;/p&gt;&lt;h3 id=&quot;迷思六父母的使命是培养快乐的孩子&quot;&gt;迷思六：父母的使命是培养快乐的孩子&lt;/h3&gt;&lt;p&gt;很多家长怕孩子受到任何挫折，一旦孩子出现困难就立刻冲上去解决。但挫折有它本身的意义，有可能正是孩子后来不断进步的动力。&lt;/p&gt;&lt;p&gt;孩子比我们更会生活——他们活在当下，只要有10分钟能打篮球就高兴。我们整天忙忙碌碌，追求虚幻的未来。&lt;/p&gt;&lt;h3 id=&quot;迷思七家长要控制一切&quot;&gt;迷思七：家长要控制一切&lt;/h3&gt;&lt;p&gt;作者生女儿时执念要顺产，熬了好几天，最后不得不剖腹产。这件事让她顿悟：连是否顺产都没法决定，你还想掌控孩子成长的一切？&lt;/p&gt;&lt;p&gt;家长真正能掌控的只有一件事：&lt;strong&gt;自己的情绪和反应&lt;/strong&gt;。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;九种恐惧来源&quot;&gt;九种恐惧来源&lt;/h2&gt;&lt;p&gt;每个人的反应触发点不同，因为恐惧的来源不同。以下是自我诊断的九种类型：&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;不被爱的恐惧&lt;/strong&gt; — 过分讨好孩子，立场不坚定，把孩子的反抗视为拒绝&lt;/li&gt;&lt;li&gt;&lt;strong&gt;对冲突的恐惧&lt;/strong&gt; — 无法说不，宠坏孩子，在孩子面前耳根子软&lt;/li&gt;&lt;li&gt;&lt;strong&gt;对投入的恐惧&lt;/strong&gt; — 陪孩子时心不在焉，像个局外人，无法全心全意&lt;/li&gt;&lt;li&gt;&lt;strong&gt;对独立自主的恐惧&lt;/strong&gt; — 不允许孩子有自己的空间，把孩子的独立视为背叛&lt;/li&gt;&lt;li&gt;&lt;strong&gt;对不幸福的恐惧&lt;/strong&gt; — 孩子一不开心就立刻插手，不允许孩子感受痛苦&lt;/li&gt;&lt;li&gt;&lt;strong&gt;觉得自己没用的恐惧&lt;/strong&gt; — 迷恋孩子的成绩和外表，把孩子当成自己价值的证明&lt;/li&gt;&lt;li&gt;&lt;strong&gt;对失去控制权的恐惧&lt;/strong&gt; — 替孩子做所有决定，把孩子的每件事都当成自己的事&lt;/li&gt;&lt;li&gt;&lt;strong&gt;对平凡的恐惧&lt;/strong&gt; — 拼命督促孩子超人一等，孩子不够优秀就羞辱他们&lt;/li&gt;&lt;li&gt;&lt;strong&gt;对短缺的恐惧&lt;/strong&gt; — 把孩子的每个错误都夸大，觉得资源有限、落后就完了&lt;/li&gt;&lt;/ol&gt;&lt;blockquote&gt;&lt;p&gt;这不是对家长的批评，而是帮助家长找到自己到底在害怕什么。不知道自己在害怕什么，就无从改变。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;&lt;h2 id=&quot;走向觉醒的九个方法&quot;&gt;走向觉醒的九个方法&lt;/h2&gt;&lt;h3 id=&quot;1-从期待到投入&quot;&gt;1. 从期待到投入&lt;/h3&gt;&lt;p&gt;一个妈妈带三个男孩去巴黎，把行程安排得满满当当，结果孩子说太热了不出去，妈妈气得要死。&lt;/p&gt;&lt;p&gt;问题在于：你活在期待里，而不是投入地活在每一天的互动中。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;投入会带来自由。放下对孩子、对家庭过多的期待，投入地生活在每一天。&lt;/p&gt;&lt;/blockquote&gt;&lt;h3 id=&quot;2-从无心的反应到用心的陪伴&quot;&gt;2. 从无心的反应到用心的陪伴&lt;/h3&gt;&lt;p&gt;作者的女儿跟她聊模特流行趋势，她脱口而出：&quot;你怎么这么肤浅？&quot;女儿从此不愿再跟她讨论任何事。&lt;/p&gt;&lt;p&gt;这就是无心的反应——膝跳反射，想都没想就发作了。&lt;/p&gt;&lt;p&gt;孩子过了青春期不愿跟家长说话，是因为说什么背后都跟着一大通教育。你能不能投入地跟他聊球赛、聊鞋子、聊游戏？只有这时候，孩子才愿意展现他丰富多彩的世界。&lt;/p&gt;&lt;h3 id=&quot;3-从混乱到平静&quot;&gt;3. 从混乱到平静&lt;/h3&gt;&lt;blockquote&gt;&lt;p&gt;重为轻根，静为躁君。——《道德经》&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;一个家里声音越大的人，权威反而越小。平静的情绪才是真正的尊严。&lt;/p&gt;&lt;p&gt;作者的方法：&lt;strong&gt;孩子出现问题时，五分钟之内不要说话&lt;/strong&gt;。不需要威胁的眼神，只是沉默。气场会发生改变，之后提出合理要求更容易达成。&lt;/p&gt;&lt;h3 id=&quot;4-从有角色到无角色&quot;&gt;4. 从有角色到无角色&lt;/h3&gt;&lt;p&gt;很多父母在孩子上大学离家后崩溃，因为这十八年来他们只有一个身份：父母。孩子一走，他们什么都不是了。&lt;/p&gt;&lt;p&gt;我们应该成为一个独立的、有自己人生目标的人，而不是把自己的全部意义绑定在孩子身上。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;向大地学习。天无私覆，地无私载。大地不管失去了谁，内心都是沉静稳定的。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;扩张自己的情绪容器——不只有愤怒，还可以有好奇、幽默、创新、分享。&lt;/p&gt;&lt;h3 id=&quot;5-从情绪到感受&quot;&gt;5. 从情绪到感受&lt;/h3&gt;&lt;p&gt;情绪是发泄，感受是内心深处真实的东西。大部分人没有接受过如何体会自身感受的训练，所以只能把感受以情绪反应的形式发泄到爱的人身上。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;给自己的感受铺一条直路。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;在孩子身上发泄、在伴侣身上发泄，都是弯路。直路是：直接说出来——&quot;我现在很难过&quot;&quot;我觉得很沮丧&quot;。&lt;/p&gt;&lt;p&gt;很多家长把孩子的害怕当成尊重。那不是尊重，那是害怕。&lt;/p&gt;&lt;h3 id=&quot;6-从干涉束缚到独立自主&quot;&gt;6. 从干涉束缚到独立自主&lt;/h3&gt;&lt;p&gt;你能保证自己出门坐的车不出车祸吗？你连这个都保证不了，凭什么觉得能保证孩子完全不出事？&lt;/p&gt;&lt;p&gt;很多家长有&quot;情感融合&quot;——分不清自己的情绪和孩子的情绪，孩子难过他也难过，孩子不高兴他也不高兴。这种融合导致反应总是过激。&lt;/p&gt;&lt;p&gt;要学会情感自主，允许孩子有他自己的人生。&lt;/p&gt;&lt;h3 id=&quot;7-从批判到共情&quot;&gt;7. 从批判到共情&lt;/h3&gt;&lt;p&gt;真正的共情不是技巧，不是&quot;妈妈知道你很难过，但是你得把它吃了&quot;——那只是想快速搞定他。&lt;/p&gt;&lt;p&gt;真正的共情是：&lt;strong&gt;完全抛弃自己的期望，认识到对方的处境与我们的处境有极大的不同&lt;/strong&gt;。允许孩子有他自己的选择，接纳他的情绪，而不是用技巧控制他。&lt;/p&gt;&lt;h3 id=&quot;8-从纪律到开明的规矩&quot;&gt;8. 从纪律到开明的规矩&lt;/h3&gt;&lt;p&gt;完全没有规矩的家庭，反而让孩子没有安全感。但好的规矩有两个特点：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;这条规矩是否服务于你和孩子更高层次的自我（而不仅仅是你的&quot;自我&quot;）？&lt;/li&gt;&lt;li&gt;这条规矩是否有商榷的余地？&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;最基本的四条底线：&lt;/p&gt;&lt;ol&gt;&lt;li&gt;尊重自我——做好自我防护，包括清洁和睡眠&lt;/li&gt;&lt;li&gt;尊重环境——整洁的房间和家&lt;/li&gt;&lt;li&gt;尊重内心——正式或非正式的教育过程&lt;/li&gt;&lt;li&gt;尊重家庭和社区——与人沟通及贡献社会&lt;/li&gt;&lt;/ol&gt;&lt;h3 id=&quot;9-从战场走到谈判桌&quot;&gt;9. 从战场走到谈判桌&lt;/h3&gt;&lt;p&gt;溺爱是因为恐惧冲突，争夺是因为自我膨胀。两者都会让家变成战场。&lt;/p&gt;&lt;p&gt;当你回到真我，你才能真的爱他，接纳他现在所产生的一切。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;改变的方法yesbut&quot;&gt;改变的方法：Yes，But&lt;/h2&gt;&lt;p&gt;找到自己的&quot;模式芯片&quot;之后，用这个方法有意识地改变它：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;是的，我害怕……&lt;strong&gt;但是&lt;/strong&gt;我可以……&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&quot;是的&quot;代表接纳，承认自己的恐惧。&quot;但是&quot;代表勇气，打算去行动。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;写给孩子的诗天赐&quot;&gt;写给孩子的诗：《天赐》&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;希望你有幸有一个这样的孩子——&lt;/p&gt;&lt;p&gt;他与你对着干，从而你可以学习如何放手；
他不听话，从而你可以学会聆听；
他有拖延症，从而你可以学会欣赏静止时的美；
他老忘事，从而你可以学习摆脱对于事物的依恋；
他过度敏感，从而你可以学会理智；
他总是心不在焉，从而你可以学会专注；
他敢于反抗，从而你可以学会打破常规思维；
他感到害怕，从而你可以学会相信宇宙的力量。&lt;/p&gt;&lt;p&gt;希望你有幸有一个这样的孩子——
他使你学会，这一切不是关于孩子，而是关于你自己。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;&lt;p&gt;笔记整理自樊登读书&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</content:encoded><enclosure url="https://frevia.site/_astro/douban-book-35018160.DsiSx9SD.jpg" type="image/webp" length="0"/></item><item><title>【每周一书】千与千寻</title><link>https://frevia.site/posts/b3ff0990092d47b9a8eb9a7a220ae821/</link><guid isPermaLink="true">https://frevia.site/posts/b3ff0990092d47b9a8eb9a7a220ae821/</guid><description>《千与千寻》不是一部给孩子看的动画，而是一面镜子——贪婪让父母变成猪，名字被剥夺让白龙失去自己，孤独把无脸男逼到崩溃。千寻的成长，是每一个在现实世界里挣扎的人的缩影。</description><pubDate>Mon, 11 May 2026 02:30:00 GMT</pubDate><content:encoded>&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;p&gt;宫崎骏有一句话让我印象极深：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;人生是一辆开往坟墓的列车，路途上会有很多站，很难有人可以自始至终陪着你走完。当陪着你的人要下车时，即便不舍也该心存感激，然后挥手道别。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这句话出自《千与千寻》。很多人以为这是一部给孩子看的动画，但每次重看，我都会觉得它在说的，是每一个在现实世界里挣扎的成年人。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://book.douban.com/subject/35492907/&quot; title=&quot;书籍：《千与千寻》&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;书籍：《千与千寻》&lt;/a&gt;&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;这是一份送给十岁女孩们的礼物&quot;&gt;这是一份送给十岁女孩们的礼物&lt;/h2&gt;&lt;p&gt;宫崎骏说，《千与千寻》是他为五个小朋友创作的。每年夏天，这五个女孩会来他山边的小屋玩耍。他观察她们，心想：我拍过不少和小孩有关的电影，但没有一部是真正为十岁的女孩做的。于是他想讲一个故事——一个孩子在面对困难时，如何逐渐释放自己的潜能，克服困境。&lt;/p&gt;&lt;p&gt;这就是《千与千寻》的起点：一个父亲，想为下一代做点什么。&lt;/p&gt;&lt;p&gt;这部电影上映于2001年，是首部同时获得&lt;strong&gt;柏林金熊奖&lt;/strong&gt;和&lt;strong&gt;奥斯卡最佳动画长片奖&lt;/strong&gt;的动画电影。但真正让它历久弥新的，不是奖项，而是它的核心主题：&lt;strong&gt;爱和勇气&lt;/strong&gt;。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;神隐被神明藏起来的世界&quot;&gt;神隐：被神明藏起来的世界&lt;/h2&gt;&lt;p&gt;电影的日文全名叫《千与千寻的神隐》。&lt;strong&gt;神隐&lt;/strong&gt;，是日本民间用来解释孩子或女性无故失踪的词——意思是&quot;被神明藏起来了&quot;。这个概念和中国道教的&quot;洞天福地&quot;一脉同源，像陶渊明《桃花源记》里的那个世界：进去了，再想找到入口，却已无迹可寻。&lt;/p&gt;&lt;p&gt;在故事里，千寻一家在搬家途中误入了一条隧道，穿越到了神明居住的另一个世界。他们跨过了一个&lt;strong&gt;鸟居&lt;/strong&gt;——日本文化中神界与人界的分界线。越过鸟居，就进了禁地，从这一刻起，规则全变了。&lt;/p&gt;&lt;p&gt;整个《千与千寻》的故事分三个部分：&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;误入神隐&lt;/strong&gt; — 迷失，不知道自己身在何处&lt;/li&gt;&lt;li&gt;&lt;strong&gt;签约工作，职场升职记&lt;/strong&gt; — 在陌生的规则里挣扎求生&lt;/li&gt;&lt;li&gt;&lt;strong&gt;逃离神隐&lt;/strong&gt; — 找回自己，回到现实&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;三个部分，对应三个关键词：&lt;strong&gt;迷失、工作、孤独&lt;/strong&gt;。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;贪婪让父母变成了猪&quot;&gt;贪婪让父母变成了猪&lt;/h2&gt;&lt;p&gt;千寻一家的车是奥迪四驱，妈妈戴着耳环，精心打扮。这是一个典型的日本中产家庭，生活殷实，但也逐渐变得麻木，对危险失去了警觉。&lt;/p&gt;&lt;p&gt;他们来到了一条空旷的商业街，满是无人看守的美食。千寻的父亲说了一句话：&quot;不管是信用卡还是现金，我都有。&quot;然后两个大人坐下来，大吃特吃，把供奉神明的食物当成了自助餐。&lt;/p&gt;&lt;p&gt;而千寻——这个只有十岁的孩子——感到害怕，拉着父母要走。孩子往往比大人更敏感，能察觉危险，但父母把她的不安当成了娇气。&lt;/p&gt;&lt;p&gt;到了夜晚，父母变成了猪。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;千寻父母吃掉的，不只是食物，而是欲望本身。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;宫崎骏在这里埋了一条历史线索。千寻的父亲代表了日本泡沫经济时代的那一代人——二十世纪六七十年代，日本经济高速繁荣，日本人拿着钱买遍全世界，买最贵的画，喝最贵的酒。直到1985年广场协议后，日元大幅升值，最终导致1991年泡沫经济破裂，日本进入&quot;平成大萧条&quot;。&lt;/p&gt;&lt;p&gt;那些活在繁荣记忆里的中年人，面对诱惑毫无抵抗力，在不属于自己的地方饕餮，最后付出了代价——不只是自己的代价，也是下一代的代价。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;每一代人的所作所为，不会消失，而是由后辈来承担。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这就是为什么千寻必须一个人拯救父母，因为孩子，往往要替大人还债。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;在汤屋打工失去名字就失去了自己&quot;&gt;在汤屋打工：失去名字，就失去了自己&lt;/h2&gt;&lt;p&gt;为了救父母，千寻来到汤屋，找汤婆婆要一份工作。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;汤婆婆&lt;/strong&gt;是这个世界的绝对主宰，一脸皱纹，满身珠宝，住在顶层阁楼，每天飞出去巡视领地——她是一个不折不扣的大老板，穿普拉达的女魔头。&lt;/p&gt;&lt;p&gt;千寻去面试，汤婆婆直接否定她：&quot;你又娇气，又只会哭，是一无是处的蠢丫头，我不请饭桶来工作。&quot;这是每个职场新人都要经历的第一关——被人彻底否定，但还是要咬牙留下来。&lt;/p&gt;&lt;p&gt;千寻拿到了工作，代价是什么？&lt;strong&gt;她的名字&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;荻野千寻，变成了&quot;小千&quot;。汤婆婆说，在这个世界，名字被拿走了，人就再也找不到回家的路。&lt;/p&gt;&lt;p&gt;换上和别人一样的衣服，做重复的机械工作，一个人成了汤屋流水线上的一枚螺丝钉。这是职场给每个人的第一课。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;锅炉爷爷拼命的代价&quot;&gt;锅炉爷爷：拼命的代价&lt;/h2&gt;&lt;p&gt;汤屋里，有一个锅炉爷爷，秃顶，长着六条手臂，在锅炉房里同时操控着几十个旋钮。&lt;/p&gt;&lt;p&gt;他原来只有两条手臂，不够用，就进化出更多——现在他有六条手臂，可以同时操控几十个旋钮。头秃了，腿萎缩了，已经在这里工作了四十年，那张电车票还是四十年前的，再也没有用过。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;他把自己的身体和时间，全部交给了工作。他不是在变强，而是在异化。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这是卡夫卡《变形记》在动画里的再现——人，被工作本身所吞噬，变成了另一种东西。而汤屋里，很多人都在走这条路：不断卷，不断让自己长出更多的手，却忘了自己为什么来到这里。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;白龙忘了名字就回不去了&quot;&gt;白龙：忘了名字，就回不去了&lt;/h2&gt;&lt;p&gt;白龙是千寻在汤屋里最重要的保护者，也是整部电影最令我动容的角色。&lt;/p&gt;&lt;p&gt;他的外表是一个十二岁的少年，但真身是一条白色的龙。他原本是一条叫&lt;strong&gt;琥珀川&lt;/strong&gt;的河流的河神，但城市建设填平了那条河，他无家可归，流落到汤屋，成了汤婆婆的弟子。&lt;/p&gt;&lt;p&gt;在这个过程中，他也失去了自己的名字。&lt;/p&gt;&lt;p&gt;名字被汤婆婆掌控，白龙就无法离开，只能为她做事，甚至做了很多他原本不愿意做的事。他告诉千寻：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;我无论怎样，也想不起自己的名字。但奇怪的是，我还记得你的名字。&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;名字，在这里是一个人的&lt;strong&gt;初心&lt;/strong&gt;。我们来到这个世界，本来知道自己是谁，喜欢什么，想成为什么样的人。但在无数诱惑、他人期待、生存压力的裹挟下，一点一点地失去了那个最初的自己，偏离了航线，却浑然不觉。&lt;/p&gt;&lt;p&gt;故事的最后，千寻趴在白龙背上飞翔，突然想起了幼年时的一件事——她曾经掉进一条叫琥珀川的河里，是那条河的河神救了她。她把这段记忆告诉白龙，白龙当场落泪，想起了自己的名字：&lt;strong&gt;赈早见琥珀主&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;那一刻，他从龙变回了少年。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;在我们的生命中，还有什么比找到真实的自己更重要的事？&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;&lt;h2 id=&quot;无脸男我好寂寞&quot;&gt;无脸男：我好寂寞&lt;/h2&gt;&lt;p&gt;无脸男全身漆黑，脸是白色的面具，没有表情，没有亲人，没有朋友，从来没有说过话，也没有人知道他从哪里来。&lt;/p&gt;&lt;p&gt;汤屋里人来人往，热闹非凡，但无脸男一直站在外面，没有人肯接纳他。只有千寻，下雨那天，看他站在雨里，随手把门打开，让他进来避雨。&lt;/p&gt;&lt;p&gt;就这一个小小的善意，让无脸男认定千寻是他最重要的人。&lt;/p&gt;&lt;p&gt;他用魔法变出大把金子，整个汤屋为他沸腾，争相讨好；他把金子塞给千寻，千寻不要。他变得越来越大，开始吃人，疯狂地用食欲填补内心的空洞。最后，他颓然倒下，说出了全片唯一一句台词：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;我好寂寞。&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;四个字，说的是每一个在人群中无法被看见的人。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;越热闹的地方，人有时候越孤独。你戴着面具活着，没有人知道里面是什么。想要被爱，却不知道怎么爱，就用尽自己所有来讨好一个人，换来的却是漠然。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;最后，千寻带着无脸男坐上了那班海上的电车，去见钱婆婆。钱婆婆留下了他，给他一点事做，给他一盏灯，给他一个安静的归宿。他在那里找到了平静——不是爱情，但是温暖。&lt;/p&gt;&lt;p&gt;这是宫崎骏给孤独之人的答案：你不必变成别人，也不必用金子换取认可，只需要找到一个能让你安住的地方，一件小小的事，一段不需要解释的陪伴。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;那班海上的电车&quot;&gt;那班海上的电车&lt;/h2&gt;&lt;p&gt;整部电影里，我最喜欢的场景是那辆海上的电车。&lt;/p&gt;&lt;p&gt;夕阳把天空染得通红，电车在平静的水面上行驶，留下长长的涟漪。千寻和无脸男并肩而坐，谁也不说话，但感觉平静。昏黄的灯光打在千寻脸上，在车窗上形成一个美丽的倒影。&lt;/p&gt;&lt;p&gt;宫崎骏说：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;成长就是一趟单程的旅途，只能向前，不能回头。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;在这列车上，有人和我们一路相伴；有人中途下车，消失在茫茫人海；有人擦肩而过，再也不见。每一个离别都是真实的，每一个相遇也是真实的。&lt;/p&gt;&lt;p&gt;但永远不要忘记，当初陪你乘车的是哪些人；也永远不要忘记，自己当年的样子。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;小千还是千寻&quot;&gt;小千，还是千寻？&lt;/h2&gt;&lt;p&gt;电影快结束时，千寻通过了汤婆婆的最后考验——从一群猪中认出&quot;父母不在其中&quot;，成功救出了父母。一家人走出隧道，回到了现实世界。父母什么也不记得了，浑然不觉地往前走。&lt;/p&gt;&lt;p&gt;千寻回头看了一眼，发现头上还系着那根钱婆婆亲手编的发绳。&lt;/p&gt;&lt;p&gt;宫崎骏说，他不想让这段经历只是一场梦，所以留下了那根绳子。&quot;只要发生过的事，就不会消失，只是想不起来了，但肯定留在某个地方。&quot;&lt;/p&gt;&lt;p&gt;小千，是汤婆婆给她起的名字——那是后天的教化，是社会规则塑造出来的身份，是别人希望你成为的那个人。&lt;/p&gt;&lt;p&gt;千寻，是她本来的名字——那是生命本身的底色，蓬勃的、纯粹的、未被覆盖的自己。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;每个人身上都有小千和千寻，但此时此刻，你要被哪个名字主宰——完全是你自己可以决定的。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;小千没有消失，千寻也没有消失。两个名字加在一起，才是一个完整的人。&lt;/p&gt;&lt;p&gt;生命就是这样一段旅程：不断迷失，不断找回自己，不断在现实与本真之间寻找那条路。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;不管前方的路有多苦，只要走的方向正确，不管多么崎岖不平，都比站在原地更接近幸福。&lt;/p&gt;&lt;/blockquote&gt;&lt;hr&gt;&lt;p&gt;笔记整理自樊登读书&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</content:encoded><enclosure url="https://frevia.site/_astro/douban-book-35492907.xp2i4YwN.jpg" type="image/webp" length="0"/></item><item><title>Claude Code常用Skill整理</title><link>https://frevia.site/posts/4a48dd2bd4964bf488c42321313eeab4/</link><guid isPermaLink="true">https://frevia.site/posts/4a48dd2bd4964bf488c42321313eeab4/</guid><description>Claude Code好不好用不看模型，看你装没装这些skill！</description><pubDate>Fri, 08 May 2026 16:00:00 GMT</pubDate><content:encoded>&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;h1 id=&quot;claude-code常用skill整理&quot;&gt;Claude Code常用Skill整理&lt;/h1&gt;&lt;p&gt;裸用Claude Code能写代码、改文件、跑命令。但装上Skill之后，它开始能控制浏览器、读写Google Docs、自动整理changelog、批量处理视频内容、远程接管终端会话。这两种体验的差距，比换模型带来的差距大多了。&lt;/p&gt;&lt;p&gt;问题是Skill生态现在还很混乱。skills.sh没有评分、没有下载量排序、没有分类筛选，你想找个工具基本靠关键词硬搜。我之前装了一堆，有些装完不知道怎么触发，有些跟Claude Code版本不兼容直接报错，还有几个功能完全重叠。&lt;/p&gt;&lt;p&gt;这篇文章是我踩过坑之后整理出来的清单。按实际使用频率排，每个都说清楚它能干什么、怎么用、什么时候用。&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;01-find-skills先装这个再决定装什么&quot;&gt;01 find-skills：先装这个，再决定装什么&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;这是什么&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;find-skills是skills.sh生态的搜索入口。你有个模糊的需求——&quot;我想让Claude Code帮我自动填表单&quot;——但不确定有没有现成方案，它能帮你从生态里把答案翻出来，给出可以直接安装的Skill推荐。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;怎么用&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;装完之后不需要学任何命令，直接用自然语言描述你想做的事就行：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;有没有能控制浏览器的Skill？&quot;
&quot;find a skill that can automate browser tasks&quot;
&quot;我想让Claude Code帮我读YouTube视频，有这种Skill吗？&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;它会返回相关Skill的名称、说明和安装命令。相当于给Claude Code加了一个&quot;插件市场助手&quot;。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;为什么要先装它&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;因为Skill生态更新很快，靠我这篇文章的清单永远是过时的。这个Skill让你有能力自己找答案。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx skills add vercel-labs/skills@find-skills -g -y
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&lt;h2 id=&quot;02-agent-browserclaude-code从会写代码到会执行任务&quot;&gt;02 agent-browser：Claude Code从会写代码到会执行任务&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;这是什么&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;agent-browser给Claude Code接上了浏览器控制能力。打开网页、识别元素、点击、输入、等待加载、截图、抓取数据——这些操作不再需要你手动完成，Claude Code能自己跑完整个流程。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;怎么用&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;用自然语言描述任务，它会自动规划操作步骤：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;打开这个后台地址，把用户列表里所有状态为&apos;待审核&apos;的账号批量导出来&quot;
&quot;访问这个页面，把产品价格表里的数据整理成表格&quot;
&quot;帮我测试这个注册表单——填不同格式的邮箱，看哪些会报错&quot;
&quot;去Hacker News抓今天前10条讨论的标题和链接&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;它会打开浏览器、识别页面结构、执行操作、把结果返回给你。整个过程你只需要描述目标。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一个容易被忽略的能力：桌面应用控制&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;agent-browser不只能控制浏览器，还能控制基于Electron构建的桌面应用，包括VS Code、Slack、Figma、Notion、Discord。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;检查Slack上#dev频道有没有新消息，把最近两小时的内容给我总结一下&quot;
&quot;在Figma里截一张当前画板的截图&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这意味着你可以把Claude Code当成一个会操作应用的助理，而不只是一个代码工具。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx skills add vercel-labs/agent-browser@agent-browser -g -y
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&lt;h2 id=&quot;03-summarize我现在基本不手动读长内容了&quot;&gt;03 summarize：我现在基本不手动读长内容了&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;这是什么&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;summarize让Claude Code能直接处理各种&quot;长内容&quot;并压缩成可用结论。支持的格式包括：网页URL、YouTube视频链接、播客RSS或音频链接、本地PDF、本地文本文件。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;怎么用&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;给它一个链接或文件路径，加上你的提取需求：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;帮我总结这篇RFC的核心改动：&lt;a href=&quot;https://example.com/rfc-123&quot;&gt;https://example.com/rfc-123&lt;/a&gt;&quot;
&quot;这个YouTube视频讲了什么，帮我整理成结构化笔记：&lt;a href=&quot;https://youtube.com/watch?v=&quot;&gt;https://youtube.com/watch?v=&lt;/a&gt;...&quot;
&quot;把这个播客的内容转录并提炼要点&quot;
&quot;读这个PDF，帮我找出里面关于认证机制的部分：/Users/me/docs/spec.pdf&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;不需要手动下载内容，不需要复制粘贴，给个链接或路径就行。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三个具体场景&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;第一，接新技术。每次接一个新库，我以前要花几十分钟读文档。现在先把文档链接扔给它：「帮我读这个库的README，重点提炼：核心概念、安装方式、最常用的API」，两分钟拿到结构化摘要，再自己决定哪里需要深读。&lt;/p&gt;&lt;p&gt;第二，读视频。技术会议的演讲、YouTube教程、播客，以前要么跳着看要么完整看。现在直接给链接，让它转录+总结，5分钟决定值不值得完整看。&lt;/p&gt;&lt;p&gt;第三，读超长issue。GitHub上那种几百楼的issue讨论，「帮我总结这个issue里的核心争议点和最终结论」，省去滚屏的痛苦。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx skills add steipete/clawdis@summarize -g -y
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&lt;h2 id=&quot;04-skill-creator把你自己的工作方式固化下来&quot;&gt;04 skill-creator：把你自己的工作方式固化下来&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;这是什么&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;skill-creator让你能把重复性的工作流打包成自己的Skill。它支持三件事：创建新Skill、修改已有Skill、对Skill跑eval/benchmark测试。Anthropic官方出品。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;怎么用&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;描述你想固化的工作流：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;帮我创建一个Skill：每次我写完博客文章，按照&apos;类别-日期-关键词&apos;的格式给配图生成规范的文件名&quot;
&quot;创建一个Skill：读取当前项目的git diff，生成符合Conventional Commits规范的commit message&quot;
&quot;我有一个叫changelog-automation的Skill，帮我修改它的触发逻辑，我想在输入&apos;生成发版记录&apos;时也能触发&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;对于已有Skill的优化：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;帮我测试这个Skill，跑5组用例，分析输出质量&quot;
&quot;优化这个Skill的触发描述，让它在更多场景下能被正确识别&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;为什么值得花时间在这上面&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Claude Code是你花时间描述需求、它执行的工具。但你的工作流里有很多高频重复的小任务——生成commit、整理文档标题、检查代码规范——每次都重新描述是浪费。Skill把这些固化成一句话触发的操作。&lt;/p&gt;&lt;p&gt;你沉淀的Skill越多，Claude Code越了解你的工作方式，它的产出就越稳定。这个积累过程值得认真对待。&lt;/p&gt;&lt;p&gt;周安装量17.6万，GitHub星12.6万。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx skills add anthropics/skills@skill-creator -g -y
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&lt;h2 id=&quot;05-tmux跑长任务开远程机的人必装&quot;&gt;05 tmux：跑长任务、开远程机的人必装&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;这是什么&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;tmux Skill让Claude Code能持续控制一个已经存在的终端会话——发送按键、读取输出、在交互式CLI里操作。它解决的核心问题是：Claude Code默认执行完一条命令就结束，但很多真实任务需要在一个持续的终端环境里来回交互。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;怎么用&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;先在终端里开一个tmux session，然后让Claude Code去操作它：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;连接到tmux session dev，帮我在里面跑完整个测试套件，如果有报错先别退出，把错误信息发给我&quot;
&quot;SSH到staging机器的tmux session，帮我查一下nginx日志里最近的5xx报错&quot;
&quot;在这个tmux session里启动dev server，等它Ready之后告诉我&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;什么时候你会需要它&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;命令要跑很久（构建、数据库迁移、批量脚本），需要持续观察&lt;/li&gt;&lt;li&gt;中途需要交互输入（密码、确认、选择项）&lt;/li&gt;&lt;li&gt;多个任务要并行跑&lt;/li&gt;&lt;li&gt;SSH到远端机器操作，不能轻易断开连接&lt;/li&gt;&lt;li&gt;需要在已有的REPL环境（Python、Node、数据库shell）里执行一系列操作&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;如果你平时只跑短命令，可以先不装。等你第一次遇到&quot;命令跑一半断了&quot;或者&quot;需要在远端机器连续操作&quot;的场景，再装。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx skills add steipete/clawdis@tmux -g -y
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&lt;h2 id=&quot;06-webapp-testingplaywright测试不再写得乱&quot;&gt;06 webapp-testing：Playwright测试不再写得乱&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;这是什么&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;webapp-testing是基于Playwright的本地Web应用测试工具包。它让Claude Code不只是&quot;能写测试代码&quot;，而是能真正运行测试、截图、抓取浏览器日志，并把结果直接反馈给你。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;怎么用&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;验证功能是否正常：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;帮我测试这个登录流程：用正确密码能登进去，用错误密码会报错，重复提交按钮会被禁用&quot;
&quot;测试这个表单：验证邮箱格式校验、必填字段检查、提交成功后的跳转&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;调试UI问题：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;打开localhost:3000，截一张当前首页的截图&quot;
&quot;帮我看一下这个页面加载时浏览器控制台有没有报错&quot;
&quot;点击这个按钮后页面状态不对，帮我截图并把控制台日志给我看看&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;自动化冒烟测试：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;对这个管理后台跑一轮冒烟测试：登录、查看列表、新增一条记录、删除它&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;比裸写Playwright测试好在哪里&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;裸用Claude Code写出来的Playwright测试往往能跑，但结构乱、断言没意义、边界条件没覆盖。webapp-testing给它加了一层测试工程经验，测试用例的组织方式、等待策略、报错处理都会更像样。&lt;/p&gt;&lt;p&gt;截图和日志功能是调试利器——不需要你自己运行浏览器看，让Claude Code帮你&quot;看一眼&quot;，把状态描述给你。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx skills add anthropics/skills@webapp-testing -g -y
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&lt;h2 id=&quot;07-gws-docs你的google-docs终于不是信息孤岛了&quot;&gt;07 gws-docs：你的Google Docs终于不是信息孤岛了&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;这是什么&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;gws-docs做一件具体的事：让Claude Code能直接读写Google Docs。这不是通用的文档写作工具，就是打通Claude Code和Google Workspace这条路。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;怎么用&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;读取Doc内容：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;帮我读这篇产品需求文档，总结核心功能点和待确认的问题：[Google Doc链接]&quot;
&quot;这个设计评审文档里有哪些需要开发介入的决策点？&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;写内容到Doc：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;把这次会议的讨论整理成会议纪要，写入这个Google Doc&quot;
&quot;根据这份代码变更，更新这个API文档里的对应章节&quot;
&quot;按照这个模板，批量填写这10个需求文档&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;为什么这件事值得一个专门Skill&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;很多团队的产品文档、需求评审、设计稿说明全活在Google Docs里。Claude Code能写代码、能读本地文件，但就是摸不到那一堆Doc。每次都要手动复制内容进来、再把输出粘贴回去，这个来回本身就是效率黑洞。&lt;/p&gt;&lt;p&gt;装上gws-docs之后，Claude Code才能真正参与到以文档为核心的工作流里。如果你的团队高度依赖Google Workspace，这个Skill的价值会超过你的预期。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx skills add googleworkspace/cli@gws-docs -g -y
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&lt;h2 id=&quot;08-simplify--reviewclaude-code自带的代码质量组合拳&quot;&gt;08 simplify + review：Claude Code自带的代码质量组合拳&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;这是什么&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这两个Skill不需要安装，Claude Code自带。&lt;code&gt;/simplify&lt;/code&gt;负责清理：识别未使用的导入、冗余变量、可提取的共享逻辑、过度复杂的条件分支，做第二遍清洁。&lt;code&gt;/review&lt;/code&gt;负责审查：检查代码正确性、边界情况、潜在bug，给出类似代码审查的反馈。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;怎么用&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;两个命令直接在对话里触发：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;/simplify&lt;/code&gt; — 对当前改动跑一遍清理，去除技术债
&lt;code&gt;/review&lt;/code&gt; — 对当前改动做一次代码审查&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;也可以描述范围：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;帮我simplify这个文件，重点看重复逻辑和命名&quot;
&quot;review一下这次改动，重点看有没有边界条件没处理&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;推荐工作流&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;改完代码 → 先跑 &lt;code&gt;/review&lt;/code&gt; 抓问题 → 修完 → 再跑 &lt;code&gt;/simplify&lt;/code&gt; 收尾。&lt;code&gt;/review&lt;/code&gt;管正确性，&lt;code&gt;/simplify&lt;/code&gt;管整洁度，顺序很重要——不要在还有bug的时候先做简化。&lt;/p&gt;&lt;p&gt;这两个工具在接手AI生成代码之后特别有用：AI第一遍写出来的东西能跑，但往往有冗余、命名模糊、结构不干净，&lt;code&gt;/simplify&lt;/code&gt;做的就是这道后处理。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;不需要安装，Claude Code内置。&lt;/strong&gt;&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;09-changelog-automation发版本不再花半小时整changelog&quot;&gt;09 changelog-automation：发版本不再花半小时整changelog&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;这是什么&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;changelog-automation从git提交记录、PR历史和发布信息自动生成changelog，遵循Keep a Changelog格式。它理解改动范围、能区分breaking change和minor fix、输出结构对用户友好。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;怎么用&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;发版本前：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;帮我生成v2.1.0的changelog，从上个tag到现在&quot;
&quot;生成这次发版的release notes，重点突出用户可感知的变化&quot;
&quot;整理这个sprint的提交记录，生成内部发版摘要&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;日常维护：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;检查最近的提交，有哪些应该补到CHANGELOG.md里&quot;
&quot;这批提交里哪些是breaking change？帮我标出来&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;这类工作为什么适合交给Claude Code&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;changelog的核心工作是：读diff、理解改动范围、用用户能看懂的语言描述。这三件事Claude Code都擅长，但人不擅长——尤其是在发版前赶时间的时候，changelog往往写得含糊或者干脆跳过。&lt;/p&gt;&lt;p&gt;装了这个Skill之后，我发版前整理changelog的时间从半小时降到五分钟。不是它写得比我好，是它愿意认真做这件事，而我在赶版本的时候根本没那个耐心。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx skills add https://github.com/wshobson/agents --skill changelog-automation
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&lt;h2 id=&quot;10-research把claude-code变成真正的调研助手&quot;&gt;10 research：把Claude Code变成真正的调研助手&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;这是什么&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;research类Skill给Claude Code接上了网络搜索和结构化信息提取能力。它能主动查资料、读网页、对比方案、形成有结构的判断——而不是只用训练数据里的知识回答你。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;怎么用&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;技术选型：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;帮我比较Prisma和Drizzle ORM：适用场景、性能差异、生态成熟度、迁移成本&quot;
&quot;我要选一个React状态管理库，列出主流方案的优劣对比，附上最新的社区讨论&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;接新库：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;帮我读tRPC的官方文档，整理核心概念和快速上手步骤&quot;
&quot;这个库上个月发了大版本更新，帮我看看主要改了什么，有没有breaking change影响我的用法&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;背景调研：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&quot;帮我看看这个技术方案有没有已知的安全问题，搜GitHub的issue和CVE记录&quot;
&quot;这个开源项目最近的维护状态怎么样？有没有活跃的迭代？&quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;Claude Code不接research的局限&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;裸用Claude Code做调研，它的知识有截止日期，遇到最新的框架更新、刚合并的issue、近期的社区讨论就抓瞎。接上research之后，它能实时查，判断依据更准确。&lt;/p&gt;&lt;p&gt;Tavily是我用得最稳的一个，搜索质量和输出结构都比较可靠。&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npx skills add tavily-ai/skills@research -g -y
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&lt;h2 id=&quot;最后说一句&quot;&gt;最后说一句&lt;/h2&gt;&lt;p&gt;这10个Skill的装机顺序建议：&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;先装find-skills&lt;/strong&gt;，让Claude Code能帮你找更多Skill&lt;/li&gt;&lt;li&gt;&lt;strong&gt;agent-browser + summarize&lt;/strong&gt;，立刻扩展Claude Code的执行范围&lt;/li&gt;&lt;li&gt;&lt;strong&gt;skill-creator&lt;/strong&gt;，把你高频的工作流沉淀下来&lt;/li&gt;&lt;li&gt;其余的按需装，遇到对应场景再说&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Skill生态还在快速生长，这份清单三个月后可能已经不是最优解。但思路是固定的：先搞清楚Claude Code在哪些环节卡住了，再去找补那个短板的Skill。盲目堆Skill反而让管理成本上升。&lt;/p&gt;&lt;p&gt;装得精准，比装得多更重要。&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</content:encoded><enclosure url="https://frevia.site/_astro/img-20260509104957425.CkgPMn0L.png" type="image/webp" length="0"/></item><item><title>别把多数人的声音，当成全部的声音</title><link>https://frevia.site/posts/1bffacf65af7409b96562d5cdbd65387/</link><guid isPermaLink="true">https://frevia.site/posts/1bffacf65af7409b96562d5cdbd65387/</guid><description>我们习惯把&quot;大家都这么认为&quot;当成一种安全感，但多数人的共识往往不是独立思考的产物，而是沉默的螺旋、从众心理和算法筛选共同作用的结果。独立思考，不是唱反调，而是对&quot;共识是怎么来的&quot;多保留一点警觉。</description><pubDate>Fri, 24 Apr 2026 05:50:33 GMT</pubDate><content:encoded>&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;h2 id=&quot;前言&quot;&gt;前言&lt;/h2&gt;&lt;p&gt;最近看到一个“为什么远离你身边的大多数人”的视频，虽不敢苟同其中的所有观点，但部分的内容还是值得思考一下，所以偷懒让AI总结一下，用以个人学习与警醒。&lt;/p&gt;&lt;h2 id=&quot;正文&quot;&gt;正文&lt;/h2&gt;&lt;p&gt;我们从小就被灌输一种直觉：多数人站的那一边，大概率是安全的。买东西看销量，选专业看就业率，做决定先问问&quot;别人都怎么做&quot;。这种直觉本身没什么问题，但慢慢地，它变成了一个更深的默认——&lt;strong&gt;&quot;大家都这么认为，那应该是对的。&quot;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;这件事值得认真想一想。&lt;/p&gt;&lt;h3 id=&quot;多数人的判断是怎么形成的&quot;&gt;多数人的判断，是怎么形成的？&lt;/h3&gt;&lt;p&gt;大多数情况下，所谓的&quot;主流共识&quot;并不是独立思考之后自然汇聚的结果，而是经过一系列机制筛选、放大之后留下来的那部分声音。&lt;/p&gt;&lt;p&gt;有一个叫&quot;沉默的螺旋&quot;的理论，说的是：当某个观点在环境中占据上风时，持不同意见的人会逐渐选择闭嘴——不是因为他们认同了，而是因为开口的代价太高，或者觉得说了也没用。于是公共空间里可见的声音越来越单一，给人造成一种&quot;所有人都这么想&quot;的错觉。&lt;/p&gt;&lt;p&gt;从众心理也在其中推波助澜。人本来就倾向于规避风险，当一个选择看起来是&quot;大多数人都在做的&quot;，我们会下意识觉得它更安全——判断的依据不是对错，而是&quot;站哪边不容易出错&quot;。&lt;/p&gt;&lt;p&gt;更隐蔽的一层是，很多人公开表达的观点，本来就不是他们真实的想法，而是&quot;在这个场合说出来不会出问题的版本&quot;。久而久之，公共讨论里流通的，很多都是经过自我审查的二手意见。&lt;/p&gt;&lt;h3 id=&quot;算法让这件事变得更复杂&quot;&gt;算法让这件事变得更复杂&lt;/h3&gt;&lt;p&gt;如果说以上这些是舆论本身的问题，那信息环境则把情况进一步放大了。&lt;/p&gt;&lt;p&gt;现在大多数人获取信息的方式是被动的——刷到什么看什么，平台推什么接收什么。而算法的逻辑很简单：给你推你更可能点击、更容易停留的内容。长期下来，接触到的观点越来越同质，反而会强化&quot;所有人都这么想&quot;的感觉。&lt;/p&gt;&lt;p&gt;这就是信息茧房真正的危险所在：不是它让你接收到错误信息，而是它让你以为自己看到了全貌。&lt;/p&gt;&lt;h3 id=&quot;那该怎么办&quot;&gt;那该怎么办？&lt;/h3&gt;&lt;p&gt;看到这里可能会想：那是不是应该反着来，去质疑一切主流观点？&lt;/p&gt;&lt;p&gt;倒也不必。主动唱反调和独立思考是两回事，前者不过是换了个方向的从众。&lt;/p&gt;&lt;p&gt;更实际的做法，是对&quot;共识&quot;多保留一点警觉：这个观点是怎么来的？它背后有没有被筛选和放大的过程？我看到的是完整的信息，还是被算法喂给我的那一切？&lt;/p&gt;&lt;p&gt;另一件值得注意的事：用道理去纠正一个情绪化的判断，往往效果有限。对方的立场如果不是建立在逻辑之上，讲再多道理也难以撼动。与其花力气争论，不如先搞清楚自己的判断是否站得住脚。&lt;/p&gt;&lt;h3 id=&quot;最后&quot;&gt;最后&lt;/h3&gt;&lt;p&gt;真正的问题不在于多数人对不对，而在于我们有没有把&quot;多数人这么认为&quot;当成思考的终点。&lt;/p&gt;&lt;p&gt;热度不等于真相，流行不等于正确——这两句话人人都知道，难的是在具体的事情上真的能做到。&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</content:encoded><enclosure url="https://frevia.site/_astro/img-20260425144122339.6qxB7uK7.png" type="image/webp" length="0"/></item></channel></rss>