<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://liuning0820.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://liuning0820.github.io/" rel="alternate" type="text/html" /><updated>2026-10-07T08:11:52+00:00</updated><id>https://liuning0820.github.io/feed.xml</id><entry><title type="html">我做了一个 AI 图片重命名工具</title><link href="https://liuning0820.github.io/2026/10/03/ai-photo-renamer.html" rel="alternate" type="text/html" title="我做了一个 AI 图片重命名工具" /><published>2026-10-03T00:00:00+00:00</published><updated>2026-10-03T00:00:00+00:00</updated><id>https://liuning0820.github.io/2026/10/03/ai-photo-renamer</id><content type="html" xml:base="https://liuning0820.github.io/2026/10/03/ai-photo-renamer.html"><![CDATA[<h1 id="我做了一个-ai-图片重命名工具看懂照片内容再生成有意义的文件名">我做了一个 AI 图片重命名工具：看懂照片内容，再生成有意义的文件名</h1>

<p>整理旅行照片时，我经常遇到一个问题：相机和手机生成的文件名通常是 <code class="language-plaintext highlighter-rouge">IMG_8428.JPG IMG_0698.JPG</code> 这样的编号。</p>

<p>当照片数量较少时，还可以逐张打开查看；但一次旅行拍摄几十甚至几百张照片后，仅凭文件名几乎无法知道照片内容。想找到“国清寺古建筑”“天台山瀑布合影”或者“琼台仙谷悬索桥”，只能不断翻看缩略图。</p>

<p>为了解决这个问题，我开发了一个带图形界面的 Python 工具：<strong>AI 照片与视频重命名器</strong>。</p>

<p>它可以调用本地视觉模型识别照片内容，自动生成类似下面这样的文件名：</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>IMG_0506.JPG
→ 20260812-天台山大瀑布景区-一家三口合影.JPG

IMG_8428.JPG
→ 20260813-国清寺-黄墙古树与石狮.JPG

IMG_8422.JPG
→ 20260812-琼台仙谷-悬索桥近景.JPG
</code></pre></div></div>

<p>相比没有含义的相机编号，这样的名称更容易搜索、归档和长期保存。</p>

<blockquote>
  <p>视频演示</p>
</blockquote>

<video width="640" controls="controls" preload="metadata" src="/images/2026-10-03-ai-photo-renamer-demo.mp4">
your browser does not support the HTML5 Video element
</video>

<h2 id="这个工具能做什么">这个工具能做什么？</h2>

<p>工具使用 Python 和 Tkinter 开发，提供了一个轻量的桌面操作界面。用户不需要编写命令，只需要选择媒体目录、配置模型，然后按照“扫描—分析—预览—确认”的流程操作。</p>

<p>目前支持以下功能：</p>

<ul>
  <li>选择指定的图片或视频目录</li>
  <li>可选择是否递归扫描子目录</li>
  <li>支持 JPG、JPEG、PNG、WebP 和 BMP 图片</li>
  <li>支持 MOV、MP4、M4V、AVI 和 MKV 视频</li>
  <li>在界面或 <code class="language-plaintext highlighter-rouge">.env</code> 中配置接口类型、模型、API 地址和可选 API Key</li>
  <li>支持 Ollama 原生接口：<code class="language-plaintext highlighter-rouge">/api/chat</code> 和 <code class="language-plaintext highlighter-rouge">/api/tags</code></li>
  <li>支持 OpenAI 兼容接口：<code class="language-plaintext highlighter-rouge">/v1/chat/completions</code> 和 <code class="language-plaintext highlighter-rouge">/v1/models</code></li>
  <li>自动生成带日期和场景描述的文件名</li>
  <li>重命名前预览全部结果</li>
  <li>支持手工修改 AI 生成的名称</li>
  <li>自动清理 Windows 文件名中的非法字符</li>
  <li>自动处理同名文件并添加序号</li>
  <li>不覆盖目录中已经存在的文件</li>
  <li>批量重命名失败时尝试回滚</li>
</ul>

<p>整个过程只会修改文件名，不会修改图片、视频内容或照片中的 EXIF 信息。</p>

<h2 id="为什么支持本地视觉模型">为什么支持本地视觉模型？</h2>

<p>这款工具默认可以连接本机运行的 Ollama 服务。当前也支持通过 <code class="language-plaintext highlighter-rouge">LLM_API_TYPE</code> 切换到 OpenAI 兼容接口：</p>

<pre><code class="language-dotenv"># Ollama 原生接口
LLM_API_TYPE=ollama
LLM_MODEL=qwen3.8:27b
LLM_API_HOST=http://127.0.0.1:11434
LLM_API_KEY=
</code></pre>

<p>如果使用 OpenAI 兼容服务，可以这样配置：</p>

<pre><code class="language-dotenv">LLM_API_TYPE=openai
LLM_MODEL=你的视觉模型
LLM_API_HOST=https://你的服务地址/v1
LLM_API_KEY=你的密钥
</code></pre>

<p><code class="language-plaintext highlighter-rouge">LLM_API_TYPE</code> 只有两个取值：<code class="language-plaintext highlighter-rouge">ollama</code> 和 <code class="language-plaintext highlighter-rouge">openai</code>，默认是 <code class="language-plaintext highlighter-rouge">ollama</code>。OpenAI 模式会请求标准的 <code class="language-plaintext highlighter-rouge">/v1/chat/completions</code> 接口，并将压缩后的图片作为视觉输入发送；如果地址已经以 <code class="language-plaintext highlighter-rouge">/v1</code> 结尾，程序不会重复追加路径。</p>

<h3 id="1-本地模型可以减少隐私顾虑">1. 本地模型可以减少隐私顾虑</h3>

<p>当 API 地址配置为 <code class="language-plaintext highlighter-rouge">127.0.0.1</code> 或其他本机回环地址时，图片分析请求只发送给本机运行的模型服务。家庭照片、旅行合影等内容不需要上传到外部云平台。</p>

<p>如果配置的是远程 Ollama 或 OpenAI 兼容服务，图片仍然会发送到该服务。因此，使用前应确认服务的隐私政策、数据处理方式和访问控制；远程 HTTP 地址也应改用 HTTPS。</p>

<h3 id="2-模型可以自由切换">2. 模型可以自由切换</h3>

<p>模型名称、接口类型和 API 地址都可以在 <code class="language-plaintext highlighter-rouge">.env</code> 文件或图形界面中配置。OpenAI 兼容服务如果需要鉴权，可以填写 <code class="language-plaintext highlighter-rouge">LLM_API_KEY</code>，本地不需要鉴权的服务则可以留空。</p>

<p>需要注意的是，所选模型必须支持视觉输入。纯文本模型无法识别照片内容。</p>

<h2 id="图片和视频是怎样处理的">图片和视频是怎样处理的？</h2>

<p>直接把数 MB 甚至十几 MB 的原图发送给模型，会占用较多内存和视觉 Token。为此，程序会先对图片进行预处理：</p>

<ol>
  <li>读取并修正照片的 EXIF 方向；</li>
  <li>将图片最长边缩小到 1280 像素；</li>
  <li>转换为适合模型分析的 JPEG 数据；</li>
  <li>根据接口类型生成请求：Ollama 使用 <code class="language-plaintext highlighter-rouge">images</code> 字段，OpenAI 兼容接口使用 <code class="language-plaintext highlighter-rouge">data:image/jpeg;base64,...</code> 的 <code class="language-plaintext highlighter-rouge">image_url</code>；</li>
  <li>解析模型返回的文件名描述，并清理 Windows 不允许的字符。</li>
</ol>

<p>这个过程只在内存中生成缩略图，不会修改原始照片。</p>

<p>对于视频，程序会通过 FFmpeg 获取视频时长，抽取中间位置的一帧，然后让视觉模型根据这一帧生成名称。临时画面会在分析结束后自动删除。</p>

<p>这种方案无法概括长视频的全部内容，但对于手机拍摄的短视频、Live Photo 片段和旅行记录，通常已经能够提供有意义的名称。</p>

<h2 id="为什么不让-ai-直接修改文件">为什么不让 AI 直接修改文件？</h2>

<p>AI 生成的名称并不一定每次都完全准确。例如，它可能无法确定具体景点，或者把人物关系描述得过于笼统。</p>

<p>因此，这个工具没有采用“分析后立即重命名”的方式，而是加入了一个预览确认流程：</p>

<ol>
  <li>扫描目录中的媒体文件；</li>
  <li>AI 逐个分析并生成建议名称；</li>
  <li>用户检查全部结果；</li>
  <li>对不满意的名称进行手工修改；</li>
  <li>最后统一确认并应用。</li>
</ol>

<p>只有用户点击“应用重命名”并再次确认后，程序才会真正修改文件名。</p>

<h2 id="文件安全方面做了哪些处理">文件安全方面做了哪些处理？</h2>

<p>批量重命名看起来简单，但需要考虑文件重名、非法字符和中途失败等情况。</p>

<p>程序会自动清理 Windows 不允许出现在文件名中的字符：</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt; &gt; : " / \ | ? *
</code></pre></div></div>

<p>如果多个文件得到相同的名称，程序会自动添加序号：</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>天台山大瀑布-瀑布近景.JPG
天台山大瀑布-瀑布近景-02.JPG
天台山大瀑布-瀑布近景-03.JPG
</code></pre></div></div>

<p>正式重命名前，程序还会检查目标文件是否已经存在，避免覆盖原有文件。</p>

<p>批量操作采用两阶段重命名：文件首先被改成唯一的临时名称，确认全部进入临时状态后，再转换成最终名称。如果过程中发生异常，程序会尽可能恢复原始文件名。</p>

<h2 id="安装和运行">安装和运行</h2>

<p>项目使用独立的 Python 虚拟环境，不会把依赖安装到系统 Python 中。</p>

<p>进入项目目录后运行：</p>

<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">powershell</span><span class="w"> </span><span class="nt">-ExecutionPolicy</span><span class="w"> </span><span class="nx">Bypass</span><span class="w"> </span><span class="nt">-File</span><span class="w"> </span><span class="o">.</span><span class="nx">\setup.ps1</span><span class="w">
</span></code></pre></div></div>

<p>安装脚本会自动：</p>

<ul>
  <li>创建 <code class="language-plaintext highlighter-rouge">.venv</code>；</li>
  <li>安装锁定版本的 Python 依赖；</li>
  <li>在缺少 <code class="language-plaintext highlighter-rouge">.env</code> 时从模板创建配置文件。</li>
</ul>

<p>然后编辑 <code class="language-plaintext highlighter-rouge">.env</code>。继续使用 Ollama 时：</p>

<pre><code class="language-dotenv">LLM_API_TYPE=ollama
LLM_MODEL=qwen3.8:27b
LLM_API_HOST=http://127.0.0.1:11434
LLM_API_KEY=
</code></pre>

<p>切换到 OpenAI 兼容接口时：</p>

<pre><code class="language-dotenv">LLM_API_TYPE=openai
LLM_MODEL=你的视觉模型
LLM_API_HOST=https://你的服务地址/v1
LLM_API_KEY=你的密钥
</code></pre>

<p>系统环境变量优先于 <code class="language-plaintext highlighter-rouge">.env</code>，程序界面中的修改只对当前运行生效。<code class="language-plaintext highlighter-rouge">.env</code> 不应提交到 Git 仓库，API Key 也不要写入公开配置或博客。</p>

<p>启动程序：</p>

<div class="language-powershell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">powershell</span><span class="w"> </span><span class="nt">-ExecutionPolicy</span><span class="w"> </span><span class="nx">Bypass</span><span class="w"> </span><span class="nt">-File</span><span class="w"> </span><span class="o">.</span><span class="nx">\run.ps1</span><span class="w">
</span></code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">run.ps1</code> 会始终使用项目目录下 <code class="language-plaintext highlighter-rouge">.venv</code> 中的 Python。如果虚拟环境不存在，它会先自动执行安装脚本。</p>

<h2 id="使用流程">使用流程</h2>

<p>实际操作只需要几步：</p>

<ol>
  <li>点击“选择目录”，指定待处理的照片或视频目录；</li>
  <li>选择接口类型：<code class="language-plaintext highlighter-rouge">ollama</code> 或 <code class="language-plaintext highlighter-rouge">openai</code>；</li>
  <li>配置 API 地址、视觉模型，以及需要时填写 API Key；</li>
  <li>点击“测试连接”，确认服务可访问且模型名称正确；</li>
  <li>点击“扫描目录”；</li>
  <li>点击“AI 分析全部”；</li>
  <li>检查并手工修改建议名称；</li>
  <li>点击“应用重命名”，确认后完成批量处理。</li>
</ol>

<p>分析过程采用顺序处理，不会同时把大量原图加载到内存中，更适合包含几十或几百个媒体文件的目录。正式重命名之前，所有建议都可以在表格中检查和修改。</p>

<h2 id="当前版本的局限">当前版本的局限</h2>

<p>目前版本仍有一些可以继续改进的地方：</p>

<ul>
  <li>日期前缀暂时来自文件修改时间，还没有优先读取 EXIF 拍摄时间；</li>
  <li>视频只分析中间一帧，无法完整理解长视频内容；</li>
  <li>景点识别依赖视觉模型自身能力，模型可能只能描述画面而无法判断准确地点；</li>
  <li>AI 生成的名称仍建议在应用前人工检查；</li>
  <li>不同 OpenAI 兼容服务对视觉消息格式和模型名称的支持程度可能存在差异。</li>
</ul>

<p>未来可以继续增加 EXIF 拍摄时间、地理位置、多个视频关键帧、命名模板以及重复照片检测等功能。</p>

<h2 id="项目源码">项目源码</h2>

<p>完整源码和安装说明已发布在 GitHub：</p>

<p><a href="https://github.com/liuning0820/media-ai-renamer">查看 GitHub 项目源码</a></p>

<p>如果你也有大量使用 <code class="language-plaintext highlighter-rouge">IMG_XXXX.JPG</code> 命名的旅行照片，希望这个工具能帮助你更高效地完成整理。</p>]]></content><author><name>liuning0820</name></author><category term="ai" /><category term="geek life" /><summary type="html"><![CDATA[我做了一个 AI 图片重命名工具：看懂照片内容，再生成有意义的文件名 整理旅行照片时，我经常遇到一个问题：相机和手机生成的文件名通常是 IMG_8428.JPG IMG_0698.JPG 这样的编号。 当照片数量较少时，还可以逐张打开查看；但一次旅行拍摄几十甚至几百张照片后，仅凭文件名几乎无法知道照片内容。想找到“国清寺古建筑”“天台山瀑布合影”或者“琼台仙谷悬索桥”，只能不断翻看缩略图。 为了解决这个问题，我开发了一个带图形界面的 Python 工具：AI 照片与视频重命名器。 它可以调用本地视觉模型识别照片内容，自动生成类似下面这样的文件名： IMG_0506.JPG → 20260812-天台山大瀑布景区-一家三口合影.JPG IMG_8428.JPG → 20260813-国清寺-黄墙古树与石狮.JPG IMG_8422.JPG → 20260812-琼台仙谷-悬索桥近景.JPG 相比没有含义的相机编号，这样的名称更容易搜索、归档和长期保存。 视频演示 your browser does not support the HTML5 Video element 这个工具能做什么？ 工具使用 Python 和 Tkinter 开发，提供了一个轻量的桌面操作界面。用户不需要编写命令，只需要选择媒体目录、配置模型，然后按照“扫描—分析—预览—确认”的流程操作。 目前支持以下功能： 选择指定的图片或视频目录 可选择是否递归扫描子目录 支持 JPG、JPEG、PNG、WebP 和 BMP 图片 支持 MOV、MP4、M4V、AVI 和 MKV 视频 在界面或 .env 中配置接口类型、模型、API 地址和可选 API Key 支持 Ollama 原生接口：/api/chat 和 /api/tags 支持 OpenAI 兼容接口：/v1/chat/completions 和 /v1/models 自动生成带日期和场景描述的文件名 重命名前预览全部结果 支持手工修改 AI 生成的名称 自动清理 Windows 文件名中的非法字符 自动处理同名文件并添加序号 不覆盖目录中已经存在的文件 批量重命名失败时尝试回滚 整个过程只会修改文件名，不会修改图片、视频内容或照片中的 EXIF 信息。 为什么支持本地视觉模型？ 这款工具默认可以连接本机运行的 Ollama 服务。当前也支持通过 LLM_API_TYPE 切换到 OpenAI 兼容接口： # Ollama 原生接口 LLM_API_TYPE=ollama LLM_MODEL=qwen3.8:27b LLM_API_HOST=http://127.0.0.1:11434 LLM_API_KEY= 如果使用 OpenAI 兼容服务，可以这样配置： LLM_API_TYPE=openai LLM_MODEL=你的视觉模型 LLM_API_HOST=https://你的服务地址/v1 LLM_API_KEY=你的密钥 LLM_API_TYPE 只有两个取值：ollama 和 openai，默认是 ollama。OpenAI 模式会请求标准的 /v1/chat/completions 接口，并将压缩后的图片作为视觉输入发送；如果地址已经以 /v1 结尾，程序不会重复追加路径。 1. 本地模型可以减少隐私顾虑 当 API 地址配置为 127.0.0.1 或其他本机回环地址时，图片分析请求只发送给本机运行的模型服务。家庭照片、旅行合影等内容不需要上传到外部云平台。 如果配置的是远程 Ollama 或 OpenAI 兼容服务，图片仍然会发送到该服务。因此，使用前应确认服务的隐私政策、数据处理方式和访问控制；远程 HTTP 地址也应改用 HTTPS。 2. 模型可以自由切换 模型名称、接口类型和 API 地址都可以在 .env 文件或图形界面中配置。OpenAI 兼容服务如果需要鉴权，可以填写 LLM_API_KEY，本地不需要鉴权的服务则可以留空。 需要注意的是，所选模型必须支持视觉输入。纯文本模型无法识别照片内容。 图片和视频是怎样处理的？ 直接把数 MB 甚至十几 MB 的原图发送给模型，会占用较多内存和视觉 Token。为此，程序会先对图片进行预处理： 读取并修正照片的 EXIF 方向； 将图片最长边缩小到 1280 像素； 转换为适合模型分析的 JPEG 数据； 根据接口类型生成请求：Ollama 使用 images 字段，OpenAI 兼容接口使用 data:image/jpeg;base64,... 的 image_url； 解析模型返回的文件名描述，并清理 Windows 不允许的字符。 这个过程只在内存中生成缩略图，不会修改原始照片。 对于视频，程序会通过 FFmpeg 获取视频时长，抽取中间位置的一帧，然后让视觉模型根据这一帧生成名称。临时画面会在分析结束后自动删除。 这种方案无法概括长视频的全部内容，但对于手机拍摄的短视频、Live Photo 片段和旅行记录，通常已经能够提供有意义的名称。 为什么不让 AI 直接修改文件？ AI 生成的名称并不一定每次都完全准确。例如，它可能无法确定具体景点，或者把人物关系描述得过于笼统。 因此，这个工具没有采用“分析后立即重命名”的方式，而是加入了一个预览确认流程： 扫描目录中的媒体文件； AI 逐个分析并生成建议名称； 用户检查全部结果； 对不满意的名称进行手工修改； 最后统一确认并应用。 只有用户点击“应用重命名”并再次确认后，程序才会真正修改文件名。 文件安全方面做了哪些处理？ 批量重命名看起来简单，但需要考虑文件重名、非法字符和中途失败等情况。 程序会自动清理 Windows 不允许出现在文件名中的字符： &lt; &gt; : " / \ | ? * 如果多个文件得到相同的名称，程序会自动添加序号： 天台山大瀑布-瀑布近景.JPG 天台山大瀑布-瀑布近景-02.JPG 天台山大瀑布-瀑布近景-03.JPG 正式重命名前，程序还会检查目标文件是否已经存在，避免覆盖原有文件。 批量操作采用两阶段重命名：文件首先被改成唯一的临时名称，确认全部进入临时状态后，再转换成最终名称。如果过程中发生异常，程序会尽可能恢复原始文件名。 安装和运行 项目使用独立的 Python 虚拟环境，不会把依赖安装到系统 Python 中。 进入项目目录后运行： powershell -ExecutionPolicy Bypass -File .\setup.ps1 安装脚本会自动： 创建 .venv； 安装锁定版本的 Python 依赖； 在缺少 .env 时从模板创建配置文件。 然后编辑 .env。继续使用 Ollama 时： LLM_API_TYPE=ollama LLM_MODEL=qwen3.8:27b LLM_API_HOST=http://127.0.0.1:11434 LLM_API_KEY= 切换到 OpenAI 兼容接口时： LLM_API_TYPE=openai LLM_MODEL=你的视觉模型 LLM_API_HOST=https://你的服务地址/v1 LLM_API_KEY=你的密钥 系统环境变量优先于 .env，程序界面中的修改只对当前运行生效。.env 不应提交到 Git 仓库，API Key 也不要写入公开配置或博客。 启动程序： powershell -ExecutionPolicy Bypass -File .\run.ps1 run.ps1 会始终使用项目目录下 .venv 中的 Python。如果虚拟环境不存在，它会先自动执行安装脚本。 使用流程 实际操作只需要几步： 点击“选择目录”，指定待处理的照片或视频目录； 选择接口类型：ollama 或 openai； 配置 API 地址、视觉模型，以及需要时填写 API Key； 点击“测试连接”，确认服务可访问且模型名称正确； 点击“扫描目录”； 点击“AI 分析全部”； 检查并手工修改建议名称； 点击“应用重命名”，确认后完成批量处理。 分析过程采用顺序处理，不会同时把大量原图加载到内存中，更适合包含几十或几百个媒体文件的目录。正式重命名之前，所有建议都可以在表格中检查和修改。 当前版本的局限 目前版本仍有一些可以继续改进的地方： 日期前缀暂时来自文件修改时间，还没有优先读取 EXIF 拍摄时间； 视频只分析中间一帧，无法完整理解长视频内容； 景点识别依赖视觉模型自身能力，模型可能只能描述画面而无法判断准确地点； AI 生成的名称仍建议在应用前人工检查； 不同 OpenAI 兼容服务对视觉消息格式和模型名称的支持程度可能存在差异。 未来可以继续增加 EXIF 拍摄时间、地理位置、多个视频关键帧、命名模板以及重复照片检测等功能。 项目源码 完整源码和安装说明已发布在 GitHub： 查看 GitHub 项目源码 如果你也有大量使用 IMG_XXXX.JPG 命名的旅行照片，希望这个工具能帮助你更高效地完成整理。]]></summary></entry><entry><title type="html">Mindset 2026</title><link href="https://liuning0820.github.io/2026/10/02/mindset-2026.html" rel="alternate" type="text/html" title="Mindset 2026" /><published>2026-10-02T00:00:00+00:00</published><updated>2026-10-02T00:00:00+00:00</updated><id>https://liuning0820.github.io/2026/10/02/mindset-2026</id><content type="html" xml:base="https://liuning0820.github.io/2026/10/02/mindset-2026.html"><![CDATA[<h1 id="growth-mindset-2026">Growth Mindset 2026</h1>

<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width="330" height="86" src="//music.163.com/outchain/player?type=2&amp;id=2659004343&amp;auto=1&amp;height=66"></iframe>

<p>微信公众号“对刘谈心”记录一个“观念改造”的系列。计划是每个月一篇，月底刊登。</p>

<p>观念改造记录这个月我看过的书或网页，遇见的人或事情对我个人的观念的改造，至少当下我比较认同的观念，朋友们一看，能够遇到某一条您也比较接受或认同的，我便心满意足。</p>

<p>&lt;! –more– &gt;</p>

<p><img src="https://liuning0820.github.io/images/mindset-change.jpg" alt="Growth Mindset" /></p>

<p>Table Of Context:</p>

<ul>
  <li><a href="#2026-10">10月</a></li>
</ul>

<h2 id="2026-10">2026-10</h2>

<h3 id="心理丰富性psychological-richness">心理丰富性（Psychological Richness）</h3>

<p>我以前默认“过得好”只有两种：舒服安稳地快乐，或者有目标有奉献地高尚。今天读到一篇基于一万多人的研究论文，让我接受了第三种——心理丰富性：生活里有没有新奇、复杂、能把你视角掰弯的体验。它和前两种并列，是独立的一条路。</p>

<p>这对我是个安慰。我这几年谈不上多快乐，也谈不上多高尚，但折腾得够杂、踩过的坑够多。按这个框架，这些起伏本身就在给人生加厚度。</p>

<p>下面是论文说的（事实）和我信的（判断），我分开写。</p>

<p>来源：Konishi 等人，<a href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0326528">Psychological richness as a distinct dimension of well-being: Links to mental, social, and physical health</a>，PLOS ONE，样本 11,041 人。</p>

<p>概念不是这篇论文首创：心理丰富性作为幸福感第三维度，由 Shigehiro Oishi（大石繁宏）与 Erin Westgate 等人在更早的研究（约 2019–2021 年）中提出。本文是在该框架上做的大样本实证拓展。</p>

<p>定义：以新奇、复杂、打破常规、能改变视角的体验为核心的生活状态，与两种传统维度并列。</p>

<ul>
  <li>享乐幸福感（Hedonic）：追求快乐、舒适、稳定、生活满意。</li>
  <li>自我实现幸福感（Eudaimonic）：追求意义、目标、奉献。</li>
  <li>心理丰富性（Psychological Richness）：追求体验的多样性与认知深度。</li>
</ul>

<p>论文结论（事实）：</p>

<ul>
  <li>心理丰富性是一条独立于生活满意度和生活意义感的幸福感路径。</li>
  <li>传统幸福感与更少的负面情绪、更强的社会联系、更好的身体健康相关。</li>
  <li>心理丰富性伴随权衡：更多家庭担忧、更明显的身体症状、偏向独处/社交隔离。</li>
  <li>但它独特地提升认知韧性（cognitive resilience）、应对自信（coping confidence）与自我成长。</li>
</ul>

<p>我的理解（判断）：</p>

<p>对照我自己，这个第三维度一下就对上了。我住在郊区十多年，一套公寓，日子舒适安稳，谈不上大富大贵；工作上也没什么宏伟目标，就是一步一个脚印地学，运气好，恰好踩着技术的趋势往前走。按前两种标准，我大概算“还行，但不耀眼”。</p>

<p>真正让我觉得这几年没白过的，是另一摊事：爱好杂，书读得杂，开始喜欢和人聊天，喜欢户外徒步，遇见新鲜的人和事，把不同的旅程记录下来。每记一次，心灵上就好像又厚了一层——很多时候，是“记录”这个动作本身让体验变成了收获。</p>

<p>所以好生活不必只有“平静快乐”和“伟大高尚”两种模板。即便起伏不断、不够完美，只要体验够厚、视角被掰弯过足够多次，也值得过。</p>

<h3 id="stay-relevant">Stay Relevant</h3>

<p>如果说心理丰富性是向内给自己的人生加厚度，那这一条是向外的：拒绝在舒适区里退化，让自己被别人需要、保持连接。价值不来自自给自足，而来自让别人离不开你。</p>

<p>来源：播客《小天章》EP5「何超琼：人生没有写好的剧本」</p>

<p>赌王何鸿燊的女儿何超琼谈到她以“是否 relevant”作为分配时间精力的标准，又在讲述自己脱离家族标签、独立做出成绩的经历时提出 “Stay Relevant”——持续产出实际生产力，否则会随时代掉队，变得 irrelevant。</p>

<p>这一条在 AI 时代对我格外真切。现在单位里都在卷 AI，各个部门、各个团队都想在 AI Agent 和应用上做出点成绩，分一杯羹。我们想做的是底下那层通用统一平台，这条路要难得多——离具体业务远，成绩不好量化，容易被看成“配角”。但我还算踩得稳：仍在持续学习，仍盯着用户的真实需要，并且随时调整方向，用基础能力、通用能力去给上层那些应用兜底。能被这些应用需要，就是我和团队保持 relevant 的方式。</p>

<p>这一条和“心理丰富性”其实有点互相拉扯：一个讲为自己攒体验的厚度，一个讲让别人离不开你。我没打算调和它们——大概人在不同处境里，需要的本来就不是同一种“值得”。</p>

<h3 id="金色开放获取gold-open-access">金色开放获取（Gold Open Access）</h3>

<p>免费读到上面那篇心理丰富性的论文时，我顺手牵出了一个原先没搞懂的概念。</p>

<p>“作者付费、读者免费”：论文发表后立即在期刊或出版商网站上免费公开，通常采用 CC BY 等开放许可。出版成本由文章处理费（APC, Article Processing Charge）承担，一般由作者、其科研基金或所在机构支付。现在有很多学术期刊采用这种模式。</p>

<p>例子：<a href="https://journals.plos.org/plosone">PLOS ONE</a>，PLOS 出版的开放获取期刊。</p>

<ul>
  <li>PLOS 按篇收取 APC，用来覆盖同行评审管理、期刊制作、在线托管和存档的成本。论文被接收后付费，不同期刊费率不同。</li>
</ul>

<p>注意：“作者付费”是金色 OA 最常见的收费方式。</p>

<table>
  <thead>
    <tr>
      <th>模式</th>
      <th>谁付费</th>
      <th>特点</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>金色 OA</td>
      <td>通常是作者方（APC）</td>
      <td>出版即开放，开放的是正式出版版本</td>
    </tr>
    <tr>
      <td>绿色 OA</td>
      <td>不额外付费</td>
      <td>作者将稿件自存档到机构库或 arXiv 等平台，常有禁阅期</td>
    </tr>
    <tr>
      <td>钻石 / 白金 OA</td>
      <td>作者和读者都不付</td>
      <td>由机构或学会补贴</td>
    </tr>
    <tr>
      <td>混合 OA</td>
      <td>订阅费加 APC</td>
      <td>订阅期刊中个别文章付费开放，常被批评“双重收费”</td>
    </tr>
  </tbody>
</table>

<p>我的疑问：</p>

<p>“作者付费、读者免费”第一次听说时，我有点转不过弯——花钱把自己的成果送出去让人免费看，这跟我对“发表”的直觉正好相反。可就算在这种模式下，论文发表看起来反而越来越热。我在 PLOS ONE 上翻论文时就留意到，不少文章的作者都是中国人。往回推一层，大概是国家每年在科研经费上的投入不小——APC 这笔钱很多时候不用研究者自己掏，而是机构或学校的科研经费兜底，而这些经费往上追，终究是公共财政。</p>

<p>我说不清这种靠公共经费撑起来的模式能不能一直走下去。钱从公共经费来，论文免费给全世界看，听上去很理想；可按篇付费的机制又天然鼓励多发，发得越多账面越好看。</p>

<p>我更倾向于相信，这背后并不是什么良性循环，而是学术界越来越卷：评职称、评先进、拿项目，都要靠论文数量来撑。发表于是从“把成果讲清楚”变成了“必须交的指标”。至于这套靠公共经费和考核压力一起推着走的模式还能转多久，我没有答案，先记在这儿。</p>]]></content><author><name>liuning0820</name></author><category term="mindset" /><summary type="html"><![CDATA[Growth Mindset 2026 微信公众号“对刘谈心”记录一个“观念改造”的系列。计划是每个月一篇，月底刊登。 观念改造记录这个月我看过的书或网页，遇见的人或事情对我个人的观念的改造，至少当下我比较认同的观念，朋友们一看，能够遇到某一条您也比较接受或认同的，我便心满意足。]]></summary></entry><entry><title type="html">球场上的镜像神经元</title><link href="https://liuning0820.github.io/2026/09/08/%E7%90%83%E5%9C%BA%E4%B8%8A%E7%9A%84%E9%95%9C%E5%83%8F%E7%A5%9E%E7%BB%8F%E5%85%83.html" rel="alternate" type="text/html" title="球场上的镜像神经元" /><published>2026-09-08T00:00:00+00:00</published><updated>2026-09-08T00:00:00+00:00</updated><id>https://liuning0820.github.io/2026/09/08/%E7%90%83%E5%9C%BA%E4%B8%8A%E7%9A%84%E9%95%9C%E5%83%8F%E7%A5%9E%E7%BB%8F%E5%85%83</id><content type="html" xml:base="https://liuning0820.github.io/2026/09/08/%E7%90%83%E5%9C%BA%E4%B8%8A%E7%9A%84%E9%95%9C%E5%83%8F%E7%A5%9E%E7%BB%8F%E5%85%83.html"><![CDATA[<h1 id="球场上的镜像">球场上的镜像</h1>

<p>昨晚打羽毛球，我们赢了两局。可下场以后，我觉得对面那位刚刚输球的球友，才是四个人里收获最多的一个。</p>

<h2 id="输球以后">输球以后</h2>

<h2 id="一场酣畅淋漓的混双比赛">一场酣畅淋漓的混双比赛</h2>

<p>昨晚我和公司招聘团队的一位女生搭档。</p>

<p>两局下来，四个人都满头大汗。他的搭档有几个球没接住，尴尬地笑了笑。</p>

<p>我当时注意的还是输赢。我原以为，那位球风犀利的球友多少会有些懊恼：也许会复盘队友丢掉的球，也许会想着下一局怎样把比分追回来。至少换作我，刚输完球时大概还困在比分里，很难马上把注意力转到对手身上。</p>

<p>但他没有。</p>

<p>他径直走到我面前，先问我在羽毛球群里叫什么名字。真正让我意外的是，他接下来谈的不是输赢。</p>

<h2 id="他谈的不是输赢">他谈的不是输赢</h2>

<p>他先对我说：</p>

<blockquote>
  <p>球场上要交流。既要跟队友交流，也要跟对手交流。</p>
</blockquote>

<p>他接着谈起刚才那两局球。我记得他的大意是：</p>

<blockquote>
  <p>打完球，不能只想自己哪个球没打好、下次该怎么改。对手打出的好球也要留意。为什么这个球打得好？是动作、意识，还是线路不一样？以后自己能不能照着学？</p>
</blockquote>

<p>他说，为对手的好球喝彩，不只是客气，也是在观察和学习。</p>

<p>听到这里，我有些惭愧。场上，我一直在琢磨怎样调动他们、怎样抓住空当得分；下场后，我也还在为几个好球暗自得意。他谈的却是，那些球为什么能打成，自己能从中学到什么。</p>

<h2 id="观察也是一种练习">观察也是一种练习</h2>

<p>这让我联想起前段时间读的《智能简史》提到，即使只是观察别人完成动作，大脑也会对这个动作进行某种模拟。参与这一过程的神经元被称为“镜像神经元”（Mirror Neurons），也被认为与模仿有关。</p>

<p>这也让我重新理解那位球友的做法：盯住一个好球，观察对手的动作、意识和线路，在脑子里重新过一遍，再设法变成自己的东西。</p>

<p>想到这里，我又联想起自己曾经教孩子运动时常犯的错。</p>

<h2 id="不能只是埋头苦练">不能只是埋头苦练</h2>

<p>每个孩子的运动天赋和学习节奏都不一样。看到别人一学就会，而自己的孩子练了很多遍，提高却不明显，大人很容易着急，甚至脱口而出：“为什么别人会，你还不会？”这种比较除了打击信心，并不能帮他找到问题。</p>

<p>我以前更容易把“多练”当作答案，觉得动作做得不够好，就再多做几遍。后来才意识到，不能只让孩子埋头苦练、独自琢磨。适当地让他看教程里的动作分解，看比赛视频中高手怎样移动、发力和处理球，再回到场上尝试，也可能带来提高。</p>

<p>当然，看懂不等于做到，观察也代替不了亲自练习。但练习并不只发生在自己挥拍的那一刻。认真看别人怎样完成一个动作，也是在给下一次尝试做准备。</p>

<p>这位球友让我看到，输掉一场球和学到一点东西并不矛盾。能从对手身上看到值得喝彩、值得模仿的地方，也许正是他越打越好的原因。</p>]]></content><author><name>liuning0820</name></author><category term="mindset" /><category term="life" /><summary type="html"><![CDATA[球场上的镜像 昨晚打羽毛球，我们赢了两局。可下场以后，我觉得对面那位刚刚输球的球友，才是四个人里收获最多的一个。 输球以后 一场酣畅淋漓的混双比赛 昨晚我和公司招聘团队的一位女生搭档。 两局下来，四个人都满头大汗。他的搭档有几个球没接住，尴尬地笑了笑。 我当时注意的还是输赢。我原以为，那位球风犀利的球友多少会有些懊恼：也许会复盘队友丢掉的球，也许会想着下一局怎样把比分追回来。至少换作我，刚输完球时大概还困在比分里，很难马上把注意力转到对手身上。 但他没有。 他径直走到我面前，先问我在羽毛球群里叫什么名字。真正让我意外的是，他接下来谈的不是输赢。 他谈的不是输赢 他先对我说： 球场上要交流。既要跟队友交流，也要跟对手交流。 他接着谈起刚才那两局球。我记得他的大意是： 打完球，不能只想自己哪个球没打好、下次该怎么改。对手打出的好球也要留意。为什么这个球打得好？是动作、意识，还是线路不一样？以后自己能不能照着学？ 他说，为对手的好球喝彩，不只是客气，也是在观察和学习。 听到这里，我有些惭愧。场上，我一直在琢磨怎样调动他们、怎样抓住空当得分；下场后，我也还在为几个好球暗自得意。他谈的却是，那些球为什么能打成，自己能从中学到什么。 观察也是一种练习 这让我联想起前段时间读的《智能简史》提到，即使只是观察别人完成动作，大脑也会对这个动作进行某种模拟。参与这一过程的神经元被称为“镜像神经元”（Mirror Neurons），也被认为与模仿有关。 这也让我重新理解那位球友的做法：盯住一个好球，观察对手的动作、意识和线路，在脑子里重新过一遍，再设法变成自己的东西。 想到这里，我又联想起自己曾经教孩子运动时常犯的错。 不能只是埋头苦练 每个孩子的运动天赋和学习节奏都不一样。看到别人一学就会，而自己的孩子练了很多遍，提高却不明显，大人很容易着急，甚至脱口而出：“为什么别人会，你还不会？”这种比较除了打击信心，并不能帮他找到问题。 我以前更容易把“多练”当作答案，觉得动作做得不够好，就再多做几遍。后来才意识到，不能只让孩子埋头苦练、独自琢磨。适当地让他看教程里的动作分解，看比赛视频中高手怎样移动、发力和处理球，再回到场上尝试，也可能带来提高。 当然，看懂不等于做到，观察也代替不了亲自练习。但练习并不只发生在自己挥拍的那一刻。认真看别人怎样完成一个动作，也是在给下一次尝试做准备。 这位球友让我看到，输掉一场球和学到一点东西并不矛盾。能从对手身上看到值得喝彩、值得模仿的地方，也许正是他越打越好的原因。]]></summary></entry><entry><title type="html">芳姐的光荣退休欢送会</title><link href="https://liuning0820.github.io/2026/08/28/%E8%8A%B3%E5%A7%90%E7%9A%84%E5%85%89%E8%8D%A3%E9%80%80%E4%BC%91%E6%AC%A2%E9%80%81%E4%BC%9A.html" rel="alternate" type="text/html" title="芳姐的光荣退休欢送会" /><published>2026-08-28T00:00:00+00:00</published><updated>2026-08-28T00:00:00+00:00</updated><id>https://liuning0820.github.io/2026/08/28/%E8%8A%B3%E5%A7%90%E7%9A%84%E5%85%89%E8%8D%A3%E9%80%80%E4%BC%91%E6%AC%A2%E9%80%81%E4%BC%9A</id><content type="html" xml:base="https://liuning0820.github.io/2026/08/28/%E8%8A%B3%E5%A7%90%E7%9A%84%E5%85%89%E8%8D%A3%E9%80%80%E4%BC%91%E6%AC%A2%E9%80%81%E4%BC%9A.html"><![CDATA[<h1 id="芳姐的光荣退休欢送会">芳姐的光荣退休欢送会</h1>

<p>今天中午，我在芳姐的退休欢送会上，提前偷看了自己退休那天的样子。让我自己都有点不好意思的是——它并不苦，我甚至隐隐盼着它。</p>

<p>芳姐是单位网络组的同事，我 6 年前进公司时她就在了。这六年她一直在我身边：来得比我还早，走路低着头，风风火火，像永远赶着去处理下一个故障。可我们几乎没说过话，多是应用故障排查涉及网络时，在线上打个照面。</p>

<p>今天中午去茶水间倒水，恰好遇到视频组的头，拿着专业单反相机，匆匆朝会议室方向走去，会议室那头人头攒动，感觉有什么事情发生，他很激动地告诉我“今天芳姐退休”。</p>

<p>我当时心里一愣。大概数十天之前，我还去找芳姐修过一次连不上的 WiFi，那是我们唯一一次面对面打交道。她有条不紊地排查了几步，几下就好了，我连她做了什么都没记住。她在我身边六年，我却只在她要走的这天，才第一次认真看她。</p>

<p>我愣在那儿。替她高兴是真的，为一位老同事的突然离开发怵也是真的；可那点连自己都不好意思承认的兴奋，也是真的。那一刻我没想清楚这些感受从哪来，只是有股说不清的力量，把我也推向了会议室。</p>

<p>芳姐讲了几句，回顾自己的职业生涯，没想到她在惠普也待了不少年。之前分属不同部门，我们并不认识，竟到要分别了，才知道我们很巧地曾是同事。</p>

<p>她讲得很朴素，也很动情。最后几年，她感受到年轻人后浪推前浪的压力，拼命努力，不想掉队，心有不甘；可年岁又实实在在地压上来，让她不舍又无奈。组里最新来的 00 后，发现她岁数超过自己妈妈，开始叫她“阿姨”，她一开始很抵触，后来也就由它去了，连两鬓的白发也随之任之，不再染黑。</p>

<p>她反复地、近乎重复地讲着这团矛盾——我听着听着，忽然就被击中了。让我停不下来的，正是她那帽檐下两鬓的露出的白发，那是几十年职业生涯生动的注脚。她讲了那么多遍，我反倒觉得她并没有真和自己和解：一边为年轻人让出舞台，一边又对这里恋恋不舍。</p>

<p>长江后浪推前浪，每个人都会到站。这话我一直知道，今天却是第一次站在中场、看着一个人真的在我面前下车。我久久不能平静，说不清是舍不得她，还是在她身上撞见了那个终将轮到我的时刻——而我竟隐隐盼着它。仪式散了，我回工位继续干活。轮到我下车的那天，我不知道自己会像芳姐那样心有不甘，还是仍旧像今天这样，悄悄地盼着。</p>]]></content><author><name>liuning0820</name></author><category term="life" /><summary type="html"><![CDATA[芳姐的光荣退休欢送会 今天中午，我在芳姐的退休欢送会上，提前偷看了自己退休那天的样子。让我自己都有点不好意思的是——它并不苦，我甚至隐隐盼着它。 芳姐是单位网络组的同事，我 6 年前进公司时她就在了。这六年她一直在我身边：来得比我还早，走路低着头，风风火火，像永远赶着去处理下一个故障。可我们几乎没说过话，多是应用故障排查涉及网络时，在线上打个照面。 今天中午去茶水间倒水，恰好遇到视频组的头，拿着专业单反相机，匆匆朝会议室方向走去，会议室那头人头攒动，感觉有什么事情发生，他很激动地告诉我“今天芳姐退休”。 我当时心里一愣。大概数十天之前，我还去找芳姐修过一次连不上的 WiFi，那是我们唯一一次面对面打交道。她有条不紊地排查了几步，几下就好了，我连她做了什么都没记住。她在我身边六年，我却只在她要走的这天，才第一次认真看她。 我愣在那儿。替她高兴是真的，为一位老同事的突然离开发怵也是真的；可那点连自己都不好意思承认的兴奋，也是真的。那一刻我没想清楚这些感受从哪来，只是有股说不清的力量，把我也推向了会议室。 芳姐讲了几句，回顾自己的职业生涯，没想到她在惠普也待了不少年。之前分属不同部门，我们并不认识，竟到要分别了，才知道我们很巧地曾是同事。 她讲得很朴素，也很动情。最后几年，她感受到年轻人后浪推前浪的压力，拼命努力，不想掉队，心有不甘；可年岁又实实在在地压上来，让她不舍又无奈。组里最新来的 00 后，发现她岁数超过自己妈妈，开始叫她“阿姨”，她一开始很抵触，后来也就由它去了，连两鬓的白发也随之任之，不再染黑。 她反复地、近乎重复地讲着这团矛盾——我听着听着，忽然就被击中了。让我停不下来的，正是她那帽檐下两鬓的露出的白发，那是几十年职业生涯生动的注脚。她讲了那么多遍，我反倒觉得她并没有真和自己和解：一边为年轻人让出舞台，一边又对这里恋恋不舍。 长江后浪推前浪，每个人都会到站。这话我一直知道，今天却是第一次站在中场、看着一个人真的在我面前下车。我久久不能平静，说不清是舍不得她，还是在她身上撞见了那个终将轮到我的时刻——而我竟隐隐盼着它。仪式散了，我回工位继续干活。轮到我下车的那天，我不知道自己会像芳姐那样心有不甘，还是仍旧像今天这样，悄悄地盼着。]]></summary></entry><entry><title type="html">浙江徒步之雪窦岭</title><link href="https://liuning0820.github.io/2026/08/23/%E6%B5%99%E6%B1%9F%E5%BE%92%E6%AD%A5%E4%B9%8B%E9%9B%AA%E7%AA%A6%E5%B2%AD.html" rel="alternate" type="text/html" title="浙江徒步之雪窦岭" /><published>2026-08-23T00:00:00+00:00</published><updated>2026-08-23T00:00:00+00:00</updated><id>https://liuning0820.github.io/2026/08/23/%E6%B5%99%E6%B1%9F%E5%BE%92%E6%AD%A5%E4%B9%8B%E9%9B%AA%E7%AA%A6%E5%B2%AD</id><content type="html" xml:base="https://liuning0820.github.io/2026/08/23/%E6%B5%99%E6%B1%9F%E5%BE%92%E6%AD%A5%E4%B9%8B%E9%9B%AA%E7%AA%A6%E5%B2%AD.html"><![CDATA[<h1 id="浙江徒步之雪窦岭古道">浙江徒步之雪窦岭古道</h1>

<h2 id="往有草的地方戳">往有草的地方戳</h2>

<p>下山时儿子突然跟我说：”你往有草的地方戳。”</p>

<p>我没反应过来。他解释说，石头台阶上长草的地方，底下一定是石头缝——杖尖戳在缝里才稳。</p>

<p>这是他用了一天登山杖，自己一下一下试出来的。</p>

<h2><img src="https://liuning0820.github.io/images/2026-08-23-浙江徒步之雪窦岭-01.png" alt="石头缝中草" /></h2>

<p>上周末我们走的是雪窦岭古道。台阶是那种大块不规则的条石，年代久了，表面被磨得光滑，有些地方还覆着一层湿滑的青苔。</p>

<p>出发前我给他买了根 NatureHike 的登山杖试水——说明书上讲了长度调节和腕带用法，他上山过程中都体会到了。但说明书没告诉你的是：杖尖戳在光滑湿石面上根本站不住。他一开始本能地往石头缝里戳，确实牢固很多，但石头缝窄，走快了根本瞄不准。有一次他戳空了，杖尖从石面上滑过去，整个人趔趄了一下，吓得我在后面喊了一声”慢点！”</p>

<p>后来他自己琢磨出了规律：台阶上凡是长草的地方，底下必定是缝。因为草只能从缝里长出来。</p>

<p>这个道理说出来很简单。但它不是想出来的，是脚走了一整天、杖尖戳了几百下之后，试出来的。</p>

<h2 id="水起风生">水起风生</h2>

<p>下山到一处瀑布跟前，突然凉快了好多。</p>

<p>一开始没反应过来为什么，站了几秒才明白：水往下冲，带着风。不是风生水起，是水起风生。</p>

<p>我们在那儿站着不走了。后面上来一个光皮大哥，走近瀑布，愣了一下，然后冲后面喊：”快来这儿！这里凉快！”他朋友们呼啦都围了过来，帽子摘了，袖子撸起来，对着水雾吹。站了好几分钟，谁都不想走。</p>

<p>山里走了一天，这几分钟最惬意。</p>

<p><img src="https://liuning0820.github.io/images/2026-08-23-浙江徒步之雪窦岭-02.png" alt="水起风生" /></p>]]></content><author><name>liuning0820</name></author><category term="life" /><summary type="html"><![CDATA[浙江徒步之雪窦岭古道 往有草的地方戳 下山时儿子突然跟我说：”你往有草的地方戳。” 我没反应过来。他解释说，石头台阶上长草的地方，底下一定是石头缝——杖尖戳在缝里才稳。 这是他用了一天登山杖，自己一下一下试出来的。 上周末我们走的是雪窦岭古道。台阶是那种大块不规则的条石，年代久了，表面被磨得光滑，有些地方还覆着一层湿滑的青苔。 出发前我给他买了根 NatureHike 的登山杖试水——说明书上讲了长度调节和腕带用法，他上山过程中都体会到了。但说明书没告诉你的是：杖尖戳在光滑湿石面上根本站不住。他一开始本能地往石头缝里戳，确实牢固很多，但石头缝窄，走快了根本瞄不准。有一次他戳空了，杖尖从石面上滑过去，整个人趔趄了一下，吓得我在后面喊了一声”慢点！” 后来他自己琢磨出了规律：台阶上凡是长草的地方，底下必定是缝。因为草只能从缝里长出来。 这个道理说出来很简单。但它不是想出来的，是脚走了一整天、杖尖戳了几百下之后，试出来的。 水起风生 下山到一处瀑布跟前，突然凉快了好多。 一开始没反应过来为什么，站了几秒才明白：水往下冲，带着风。不是风生水起，是水起风生。 我们在那儿站着不走了。后面上来一个光皮大哥，走近瀑布，愣了一下，然后冲后面喊：”快来这儿！这里凉快！”他朋友们呼啦都围了过来，帽子摘了，袖子撸起来，对着水雾吹。站了好几分钟，谁都不想走。 山里走了一天，这几分钟最惬意。]]></summary></entry><entry><title type="html">悟不是灵光乍现</title><link href="https://liuning0820.github.io/2026/06/20/%E6%82%9F%E4%B8%8D%E6%98%AF%E7%81%B5%E5%85%89%E4%B9%8D%E7%8E%B0.html" rel="alternate" type="text/html" title="悟不是灵光乍现" /><published>2026-06-20T00:00:00+00:00</published><updated>2026-06-20T00:00:00+00:00</updated><id>https://liuning0820.github.io/2026/06/20/%E6%82%9F%E4%B8%8D%E6%98%AF%E7%81%B5%E5%85%89%E4%B9%8D%E7%8E%B0</id><content type="html" xml:base="https://liuning0820.github.io/2026/06/20/%E6%82%9F%E4%B8%8D%E6%98%AF%E7%81%B5%E5%85%89%E4%B9%8D%E7%8E%B0.html"><![CDATA[<h1 id="悟不是灵光乍现是慢慢磨出来的">悟不是灵光乍现，是慢慢磨出来的</h1>

<p>我们常以为，“悟”是灵光一闪的顿悟，是天才的专属时刻。
但回望历史与当下，你会发现一个残酷的真相：真正的“悟”，往往伴随着痛苦的自我否定，是一场漫长而精细的“打磨”。
它不是一味做加法，而是加加再减减；不是一味获得，而是抽丝剥茧，去芜存菁。</p>

<h2 id="01-子贡的举一反三">01. 子贡的举一反三</h2>

<p>在《论语》中，子贡曾自信地问孔子：“贫穷时不巴结，富贵时不骄傲，这境界不错吧？”
孔子却泼了一盆冷水：“这只是及格线。不如贫穷却快乐，富贵却好礼。”
如果是普通人，可能觉得面子挂不住。但子贡立刻联想到《诗经》里的“如切如磋，如琢如磨”。
他“悟”了：道德修养不是静止的状态，而是像加工玉石一样，需要不断的切割、磋磨，甚至要切除原本属于自己的部分，才能成器。
孔子大赞他“告诸往而知来者”，能够举一反三。这里的“悟”，不是凭空而来的灵感，而是通过极致的观察与思考，将外在的知识内化为自己的智慧。没有之前的积累与反思，就没有那一刻的通透。</p>

<h2 id="02-秦观的炼字山抹微云">02. 秦观的炼字：山抹微云</h2>

<p>北宋词人秦观写下千古名句“山抹微云”。一个“抹”字，为何能流传千年？
因为它不是简单的描写，而是诗人对自然深度观察和思考后的结晶。普通人看云，只知其在飘；秦观“悟”到了山与云之间那种拟人化的、充满情感的互动。
这个字，是他反复推敲、剔除平庸词汇后的结果。“悟”在这里，表现为对细节的极致敏感和对表达的精准把控。</p>

<p><img src="https://liuning0820.github.io/images/2026-06-20-山抹微云.png" alt="" /></p>

<h2 id="03-whimsical的断舍离">03. Whimsical的断舍离</h2>

<p>今天读到一篇文章 <a href="https://whimsical.com/blog/choosing-depth-over-breadth">https://whimsical.com/blog/choosing-depth-over-breadth</a>。 Whimsical 始于 2017 年，他们的愿景是旨在打造一个全能型团队协作中心，最初凭借流程图、线框图、思维导图等专注型工具取得了成功。</p>

<p>他们曾执着于打造“全能协作中心”，近期推出的“项目（Projects）”和“帖子（Posts）”等宽泛功能未能获得预期的关注。产品范围的扩大分散了资源，威胁到整体产品质量，产品团队意识到用户更看重核心工具的深度，而不是一个大一统的套件。他们没有固执己见，而是像工匠审视瑕疵品一样，通过分析数据、倾听用户，完成了深刻的自我反省。
最终，他们做出了艰难的决定：砍掉 Projects 和 Tasks 功能，重新聚焦并专注于其最具优势的核心产品：白板体验（Boards）。
这不就是“如切如磋”吗？切掉多余的欲望，磨去浮躁的广度，只留下最核心的价值。
这种“悟”，是敢于承认错误的勇气，更是从“贪多”走向“精深”的境界升华。</p>

<p>无论是子贡的修身、秦观的炼字，还是 Whimsical 的产品迭代，它们都指向同一个真理：
“悟”不在深山，而在事上磨。在这个喧嚣的时代，愿我们都能拥有这份“琢磨”的耐心，在不断的自我重塑中，遇见那个更通透的自己。</p>]]></content><author><name>liuning0820</name></author><category term="mindset life" /><summary type="html"><![CDATA[悟不是灵光乍现，是慢慢磨出来的 我们常以为，“悟”是灵光一闪的顿悟，是天才的专属时刻。 但回望历史与当下，你会发现一个残酷的真相：真正的“悟”，往往伴随着痛苦的自我否定，是一场漫长而精细的“打磨”。 它不是一味做加法，而是加加再减减；不是一味获得，而是抽丝剥茧，去芜存菁。 01. 子贡的举一反三 在《论语》中，子贡曾自信地问孔子：“贫穷时不巴结，富贵时不骄傲，这境界不错吧？” 孔子却泼了一盆冷水：“这只是及格线。不如贫穷却快乐，富贵却好礼。” 如果是普通人，可能觉得面子挂不住。但子贡立刻联想到《诗经》里的“如切如磋，如琢如磨”。 他“悟”了：道德修养不是静止的状态，而是像加工玉石一样，需要不断的切割、磋磨，甚至要切除原本属于自己的部分，才能成器。 孔子大赞他“告诸往而知来者”，能够举一反三。这里的“悟”，不是凭空而来的灵感，而是通过极致的观察与思考，将外在的知识内化为自己的智慧。没有之前的积累与反思，就没有那一刻的通透。 02. 秦观的炼字：山抹微云 北宋词人秦观写下千古名句“山抹微云”。一个“抹”字，为何能流传千年？ 因为它不是简单的描写，而是诗人对自然深度观察和思考后的结晶。普通人看云，只知其在飘；秦观“悟”到了山与云之间那种拟人化的、充满情感的互动。 这个字，是他反复推敲、剔除平庸词汇后的结果。“悟”在这里，表现为对细节的极致敏感和对表达的精准把控。 03. Whimsical的断舍离 今天读到一篇文章 https://whimsical.com/blog/choosing-depth-over-breadth。 Whimsical 始于 2017 年，他们的愿景是旨在打造一个全能型团队协作中心，最初凭借流程图、线框图、思维导图等专注型工具取得了成功。 他们曾执着于打造“全能协作中心”，近期推出的“项目（Projects）”和“帖子（Posts）”等宽泛功能未能获得预期的关注。产品范围的扩大分散了资源，威胁到整体产品质量，产品团队意识到用户更看重核心工具的深度，而不是一个大一统的套件。他们没有固执己见，而是像工匠审视瑕疵品一样，通过分析数据、倾听用户，完成了深刻的自我反省。 最终，他们做出了艰难的决定：砍掉 Projects 和 Tasks 功能，重新聚焦并专注于其最具优势的核心产品：白板体验（Boards）。 这不就是“如切如磋”吗？切掉多余的欲望，磨去浮躁的广度，只留下最核心的价值。 这种“悟”，是敢于承认错误的勇气，更是从“贪多”走向“精深”的境界升华。 无论是子贡的修身、秦观的炼字，还是 Whimsical 的产品迭代，它们都指向同一个真理： “悟”不在深山，而在事上磨。在这个喧嚣的时代，愿我们都能拥有这份“琢磨”的耐心，在不断的自我重塑中，遇见那个更通透的自己。]]></summary></entry><entry><title type="html">苏东坡</title><link href="https://liuning0820.github.io/2026/05/01/%E8%8B%8F%E4%B8%9C%E5%9D%A1.html" rel="alternate" type="text/html" title="苏东坡" /><published>2026-05-01T00:00:00+00:00</published><updated>2026-05-01T00:00:00+00:00</updated><id>https://liuning0820.github.io/2026/05/01/%E8%8B%8F%E4%B8%9C%E5%9D%A1</id><content type="html" xml:base="https://liuning0820.github.io/2026/05/01/%E8%8B%8F%E4%B8%9C%E5%9D%A1.html"><![CDATA[<h1 id="人在职场不快乐只因未读苏东坡">人在职场不快乐，只因未读苏东坡</h1>

<p>林语堂在《苏东坡传》里说，苏东坡的人生，是从四十岁之后开始的。如今年过四十的我，每当职场内卷不快乐的时候，我都能从苏东坡的诗词里找到慰藉和力量。</p>

<p>今天的职场，很多压力和焦虑看似新鲜，实则古已有之。趁着五一闲暇，抄写一首《满庭芳》，可以说是苏老的“职场反内卷宣言”，让我产生些许共鸣。并对照当下职场做了一份“职场解压版”，希望它能提醒你：真正重要的，不是无休止的竞争，而是给自己留一点生活的余地。</p>

<p><img src="https://liuning0820.github.io/images/2026-05-01-苏东坡.jpg" alt="" /></p>

<h2 id="职场解压版">职场解压版</h2>

<p>KPI虚名，年终微利，算来著甚干忙（PA 晋升、各种评奖……为了这点虚名微利，算来算去，值得把自己忙成这样吗）。
晋升前定，谁卷谁又强。（你以为晋升靠拼命，其实很多时候和能力无关）
且趁40未老，尽放我、些子疏狂（趁还没被996榨干，保留一点”不服从”的野性，夜晚非老板电话不接消息不回，周报里敢写牢骚）。
百年里，浑教是醉，三万六千场。（一辈子也就三万六千天，偶尔放松一下，比天天紧绷更可贵）
思量。能几许，忧愁风雨，一半相妨。（想想吧，焦虑内耗至少偷走了一半人生，值得吗）
又何须，抵死说短道长。（何必互相甩锅，各种损招？）
幸对清风皓月，奶茶店、云幕高张。（真正的”福利”是下班后的清风明月，路边的奶茶小店，天边的晚霞）
下班好，千钟美酒，一曲满庭芳。（下班真好，和朋友喝顿酒，唱首歌，这才是自己的人生）</p>

<h2 id="为什么今日依然可参考">为什么今日依然可参考</h2>

<p>苏东坡的心态提醒我们，工作只是人生的一部分。你可以努力，但不必把自己逼成机器；你可以认真，却不必把时间和情绪都交给职场。</p>

<p>这不是鼓励你消极避工，而是鼓励你在职场中保留自我。用苏东坡的方式看待压力，不是逃避，而是给自己多一份选择：内卷之外，还有更多值得好好过的日子。人生不只有绩效，还有在忙碌之外的安静时刻。</p>

<p>愿你这个五一，既能放松心情，也能找到属于自己的“满庭芳”。</p>]]></content><author><name>liuning0820</name></author><category term="mindset life" /><summary type="html"><![CDATA[人在职场不快乐，只因未读苏东坡 林语堂在《苏东坡传》里说，苏东坡的人生，是从四十岁之后开始的。如今年过四十的我，每当职场内卷不快乐的时候，我都能从苏东坡的诗词里找到慰藉和力量。 今天的职场，很多压力和焦虑看似新鲜，实则古已有之。趁着五一闲暇，抄写一首《满庭芳》，可以说是苏老的“职场反内卷宣言”，让我产生些许共鸣。并对照当下职场做了一份“职场解压版”，希望它能提醒你：真正重要的，不是无休止的竞争，而是给自己留一点生活的余地。 职场解压版 KPI虚名，年终微利，算来著甚干忙（PA 晋升、各种评奖……为了这点虚名微利，算来算去，值得把自己忙成这样吗）。 晋升前定，谁卷谁又强。（你以为晋升靠拼命，其实很多时候和能力无关） 且趁40未老，尽放我、些子疏狂（趁还没被996榨干，保留一点”不服从”的野性，夜晚非老板电话不接消息不回，周报里敢写牢骚）。 百年里，浑教是醉，三万六千场。（一辈子也就三万六千天，偶尔放松一下，比天天紧绷更可贵） 思量。能几许，忧愁风雨，一半相妨。（想想吧，焦虑内耗至少偷走了一半人生，值得吗） 又何须，抵死说短道长。（何必互相甩锅，各种损招？） 幸对清风皓月，奶茶店、云幕高张。（真正的”福利”是下班后的清风明月，路边的奶茶小店，天边的晚霞） 下班好，千钟美酒，一曲满庭芳。（下班真好，和朋友喝顿酒，唱首歌，这才是自己的人生） 为什么今日依然可参考 苏东坡的心态提醒我们，工作只是人生的一部分。你可以努力，但不必把自己逼成机器；你可以认真，却不必把时间和情绪都交给职场。 这不是鼓励你消极避工，而是鼓励你在职场中保留自我。用苏东坡的方式看待压力，不是逃避，而是给自己多一份选择：内卷之外，还有更多值得好好过的日子。人生不只有绩效，还有在忙碌之外的安静时刻。 愿你这个五一，既能放松心情，也能找到属于自己的“满庭芳”。]]></summary></entry><entry><title type="html">规则设计重要性</title><link href="https://liuning0820.github.io/2026/03/08/%E8%A7%84%E5%88%99%E8%AE%BE%E8%AE%A1%E9%87%8D%E8%A6%81%E6%80%A7.html" rel="alternate" type="text/html" title="规则设计重要性" /><published>2026-03-08T00:00:00+00:00</published><updated>2026-03-08T00:00:00+00:00</updated><id>https://liuning0820.github.io/2026/03/08/%E8%A7%84%E5%88%99%E8%AE%BE%E8%AE%A1%E9%87%8D%E8%A6%81%E6%80%A7</id><content type="html" xml:base="https://liuning0820.github.io/2026/03/08/%E8%A7%84%E5%88%99%E8%AE%BE%E8%AE%A1%E9%87%8D%E8%A6%81%E6%80%A7.html"><![CDATA[<h1 id="从一次选举中看规则设计的重要性">从一次选举中看规则设计的重要性</h1>

<h2 id="差额选举规则说明">差额选举规则说明</h2>

<h3 id="1-选举方式">1. 选举方式</h3>
<p>本次选举实行<strong>差额选举</strong>。</p>
<ul>
  <li><strong>候选人总数</strong>：6 名</li>
  <li><strong>应选名额</strong>：5 名</li>
  <li><strong>差额人数</strong>：1 名</li>
</ul>

<h3 id="2-有效票判定标准">2. 有效票判定标准</h3>
<ul>
  <li><strong>有效票</strong>：每张选票所选人数（含“赞成”票与“另选他人”）<strong>等于或少于 5 名</strong>。</li>
  <li><strong>无效票（废票）</strong>：每张选票所选人数<strong>超过 5 名</strong>。</li>
</ul>

<h3 id="3-填写符号规范">3. 填写符号规范</h3>
<p>请在候选人姓名上方的空格内按规定符号填写：</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">投票意向</th>
      <th style="text-align: left">操作说明</th>
      <th style="text-align: center">符号示例</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><strong>赞成</strong></td>
      <td style="text-align: left">在候选人姓名上方的空格内画圆圈</td>
      <td style="text-align: center"><strong>○</strong></td>
    </tr>
    <tr>
      <td style="text-align: left"><strong>反对</strong></td>
      <td style="text-align: left">在候选人姓名上方的空格内画叉号</td>
      <td style="text-align: center"><strong>×</strong></td>
    </tr>
    <tr>
      <td style="text-align: left"><strong>弃权</strong></td>
      <td style="text-align: left">在候选人姓名上方的空格内<strong>不画任何符号</strong></td>
      <td style="text-align: center">(空白)</td>
    </tr>
  </tbody>
</table>

<h3 id="关于另选他人">关于“另选他人”</h3>
<p>如果您反对某位候选人并希望另选他人，请按以下步骤操作：</p>
<ol>
  <li>在选票指定的 <strong>“另选人”</strong> 栏内填写您希望选举的人的姓名。</li>
  <li>在该姓名的上方空格内画 <strong>“○”</strong>。
    <blockquote>
      <p><strong>注意</strong>：“另选他人”也计入总票数，需确保总赞成人数（候选人 + 另选人）不超过 5 人，否则选票无效。</p>
    </blockquote>
  </li>
</ol>

<h3 id="4-注意事项">4. 注意事项</h3>
<ul>
  <li><strong>符号清晰</strong>：请务必保证所画符号清晰、准确，易于辨认。</li>
  <li><strong>严禁涂改</strong>：选票不得随意涂改。若涂改导致字迹不清或无法辨认，该选票可能被视为<strong>无效票</strong>。</li>
  <li><strong>规范填写</strong>：请严格按照上述要求填写，未按要求操作的选票可能被认定为废票。</li>
</ul>

<h2 id="通俗理解">通俗理解</h2>

<h3 id="投票操作指南6选5">投票操作指南（6选5）</h3>

<ul>
  <li>怎么选？ 您最多可以投 5 个人的赞成票。</li>
  <li>怎么画？
    <ul>
      <li>✅ 同意他：在名字上面画个圈 ○</li>
      <li>❌ 不同意：在名字上面画个叉 ×</li>
      <li>⭕ 弃权：什么都不画，留空即可</li>
    </ul>
  </li>
  <li>特别提醒：
    <ol>
      <li>如果您画圈的人数超过5人，这张票就作废了。</li>
      <li>如果您想选名单以外的人，请在“另选人”处写上名字并画圈。</li>
      <li>您可以只选1人、4人或5人，也可以全部反对或全部弃权。</li>
    </ol>
  </li>
  <li>投票结果示例：
<img src="../images/2026-03-08-规则设计重要性01.png" alt="" /></li>
</ul>

<p><img src="https://liuning0820.github.io/images/2026-03-08-规则设计重要性01.png" alt="" /></p>

<h2 id="一次真实的选举-41人40人投出完全一样的选票">一次真实的选举 “41人，40人投出完全一样的选票”</h2>

<p>最近，我经历了一场小型的选举。</p>

<p>现场有41位投票人，需要从6位候选人中选出5位。说实话，这6位候选人里，我真正熟悉的只有2位，剩下的大半脸对我来说都是陌生的。</p>

<p>拿到选票时，我仔细端详了一番。姓名排列看似毫无规律，没有明显的倾向（后来我知道，这是严格按照笔画排序的，一种极致的公平）。</p>

<p>面对陌生的名字，该怎么选？</p>

<p>在那一刻，我没有看到左右交头接耳，也没有左右权衡。一种潜意识的直觉驱使着我：
既然看不出区别，那就顺着顺序，选前五个吧。</p>

<p>我觉得自己填得很“客观”，甚至带着一点“随机”的洒脱。</p>

<p>然而，当计票结果出来的那一刻，我愣住了。</p>

<p><strong>41人参与投票，最终有40人的选择，和我一模一样。</strong></p>

<p>全场只有1个人，做出了不同的选择。其余40人，在互不交流、没有串通、没有任何暗示的情况下，竟然齐刷刷地勾选了名单上的前五位。</p>

<p>没有暗箱操作，过程公开透明。但这一结果，却像某种无声的魔法，让我感到深深的震撼。</p>

<p>我自知没有人提前和我打过招呼，选举过程公开公正。可是这个结果让我感到很意外。</p>

<p>为何会出现如此惊人的“沉默共识”？</p>

<p>我问了一下千问，AI 给出一份答案：</p>

<p>选票的设计固然是严谨的，可是作为选民手中掌握的信息对称性很重要。如果信息不对称，那么多数人会遵循“心理捷径”的惯性思维。</p>

<p>按规定，候选人按笔画排序本是为体现公平，杜绝人为干预。但在选民对候选人缺乏深入了解时，这种“绝对中立”的排序反而成了潜意识的“推荐序”。心理学上的“首因效应”让大脑默认：排在前面的或许更资深、更靠谱。于是，“顺手勾前五”成了认知成本最低的决策路径。</p>]]></content><author><name>liuning0820</name></author><category term="product design" /><summary type="html"><![CDATA[从一次选举中看规则设计的重要性 差额选举规则说明 1. 选举方式 本次选举实行差额选举。 候选人总数：6 名 应选名额：5 名 差额人数：1 名 2. 有效票判定标准 有效票：每张选票所选人数（含“赞成”票与“另选他人”）等于或少于 5 名。 无效票（废票）：每张选票所选人数超过 5 名。 3. 填写符号规范 请在候选人姓名上方的空格内按规定符号填写： 投票意向 操作说明 符号示例 赞成 在候选人姓名上方的空格内画圆圈 ○ 反对 在候选人姓名上方的空格内画叉号 × 弃权 在候选人姓名上方的空格内不画任何符号 (空白) 关于“另选他人” 如果您反对某位候选人并希望另选他人，请按以下步骤操作： 在选票指定的 “另选人” 栏内填写您希望选举的人的姓名。 在该姓名的上方空格内画 “○”。 注意：“另选他人”也计入总票数，需确保总赞成人数（候选人 + 另选人）不超过 5 人，否则选票无效。 4. 注意事项 符号清晰：请务必保证所画符号清晰、准确，易于辨认。 严禁涂改：选票不得随意涂改。若涂改导致字迹不清或无法辨认，该选票可能被视为无效票。 规范填写：请严格按照上述要求填写，未按要求操作的选票可能被认定为废票。 通俗理解 投票操作指南（6选5） 怎么选？ 您最多可以投 5 个人的赞成票。 怎么画？ ✅ 同意他：在名字上面画个圈 ○ ❌ 不同意：在名字上面画个叉 × ⭕ 弃权：什么都不画，留空即可 特别提醒： 如果您画圈的人数超过5人，这张票就作废了。 如果您想选名单以外的人，请在“另选人”处写上名字并画圈。 您可以只选1人、4人或5人，也可以全部反对或全部弃权。 投票结果示例： 一次真实的选举 “41人，40人投出完全一样的选票” 最近，我经历了一场小型的选举。 现场有41位投票人，需要从6位候选人中选出5位。说实话，这6位候选人里，我真正熟悉的只有2位，剩下的大半脸对我来说都是陌生的。 拿到选票时，我仔细端详了一番。姓名排列看似毫无规律，没有明显的倾向（后来我知道，这是严格按照笔画排序的，一种极致的公平）。 面对陌生的名字，该怎么选？ 在那一刻，我没有看到左右交头接耳，也没有左右权衡。一种潜意识的直觉驱使着我： 既然看不出区别，那就顺着顺序，选前五个吧。 我觉得自己填得很“客观”，甚至带着一点“随机”的洒脱。 然而，当计票结果出来的那一刻，我愣住了。 41人参与投票，最终有40人的选择，和我一模一样。 全场只有1个人，做出了不同的选择。其余40人，在互不交流、没有串通、没有任何暗示的情况下，竟然齐刷刷地勾选了名单上的前五位。 没有暗箱操作，过程公开透明。但这一结果，却像某种无声的魔法，让我感到深深的震撼。 我自知没有人提前和我打过招呼，选举过程公开公正。可是这个结果让我感到很意外。 为何会出现如此惊人的“沉默共识”？ 我问了一下千问，AI 给出一份答案： 选票的设计固然是严谨的，可是作为选民手中掌握的信息对称性很重要。如果信息不对称，那么多数人会遵循“心理捷径”的惯性思维。 按规定，候选人按笔画排序本是为体现公平，杜绝人为干预。但在选民对候选人缺乏深入了解时，这种“绝对中立”的排序反而成了潜意识的“推荐序”。心理学上的“首因效应”让大脑默认：排在前面的或许更资深、更靠谱。于是，“顺手勾前五”成了认知成本最低的决策路径。]]></summary></entry><entry><title type="html">功能存在到用户知道</title><link href="https://liuning0820.github.io/2026/01/25/%E5%8A%9F%E8%83%BD%E5%AD%98%E5%9C%A8%E5%88%B0%E7%94%A8%E6%88%B7%E7%9F%A5%E9%81%93.html" rel="alternate" type="text/html" title="功能存在到用户知道" /><published>2026-01-25T00:00:00+00:00</published><updated>2026-01-25T00:00:00+00:00</updated><id>https://liuning0820.github.io/2026/01/25/%E5%8A%9F%E8%83%BD%E5%AD%98%E5%9C%A8%E5%88%B0%E7%94%A8%E6%88%B7%E7%9F%A5%E9%81%93</id><content type="html" xml:base="https://liuning0820.github.io/2026/01/25/%E5%8A%9F%E8%83%BD%E5%AD%98%E5%9C%A8%E5%88%B0%E7%94%A8%E6%88%B7%E7%9F%A5%E9%81%93.html"><![CDATA[<h1 id="功能存在--用户知道">功能存在 ≠ 用户知道</h1>

<p>作为一位开了24,000公里的特斯拉车主，我对这辆车非常满意——操控精准如臂使指，安全性能令人安心，每一次出行都充满信心与愉悦。</p>

<p>但有一个细节，我一直耿耿于怀：在使用导航时，只要打转向灯，屏幕上就会弹出摄像头监控画面。偏偏这个画面会遮挡关键的导航地图信息，尤其在复杂路口，常常让我措手不及，差点错过转弯。</p>

<p><img src="https://liuning0820.github.io/images/2026-01-25-功能存在到用户知道01.png" alt="" /></p>

<p>我一度以为这是无法更改的设计缺陷，直到昨天坐朋友的车，才恍然大悟——原来这个监控窗口是可以移动的！
朋友轻描淡写地说：“你只要长按那个画面，就能拖到左边。”
果然，一试就成。窗口移到左侧后，我用余光就能看清盲区，再也不用扭头或担心挡住导航路线。
就这么一个小小的交互操作，竟能让驾驶体验提升一大截。可笑的是，我开了两万多公里，竟从未发现。</p>

<p><img src="https://liuning0820.github.io/images/2026-01-25-功能存在到用户知道02.png" alt="" /></p>

<p>这让我想起早年用微信的经历：想在一段文字中间插入几个字，总是习惯性一路回删重打。直到有朋友告诉我，“长按空格键，光标就能自由移动”——那一刻，我才意识到自己错过了多少效率。
这类“长按拖动”“长按移动光标”的操作，本质上属于隐式交互（Implicit Interaction），也常被称作“专家模式”：功能确实存在，但没有明确引导，普通用户很难主动发现。</p>

<h2 id="功能存在--用户知道-1">功能存在 ≠ 用户知道</h2>

<p>在产品工作中，我们常常陷入一种“知识的诅咒”：
我们知道功能在哪、怎么用、为什么重要、能解决什么问题。
但——用户不知道。
这不是一句调侃，而是产品设计中最容易被忽视、却最值得警惕的真相。
很多团队都经历过这样的场景：用户提出一个需求，你心里立刻冒出一句：“这功能我们早就做了啊！” 你甚至能立刻指出入口、按钮样式和操作路径。
可用户依然一脸茫然。
这不是用户的问题，而是产品的问题。</p>

<h2 id="当用户重复提需求其实是可用性在报警">当用户“重复提需求”，其实是可用性在报警</h2>

<p>经常和用户交流的好处，不只是获取新点子，更在于你会听到他们反复提出一些“早已存在”的功能需求。
这时，请别急着纠正：“这个我们早就有了！”
相反，这恰恰是一个暴露可用性问题的信号。
为什么用户找不到已有功能？常见原因包括：</p>
<ul>
  <li><strong>入口不明显</strong>：藏得太深，或缺乏视觉提示；</li>
  <li><strong>命名不直观</strong>：术语专业，但不符合用户语言；</li>
  <li><strong>路径不符合自然操作流</strong>：用户想A，你却让他先做B再做C；</li>
  <li><strong>功能与用户的心智模型错位</strong>：你以为他需要”监控画面”，他只关心”别挡住导航”。</li>
</ul>

<h2 id="真正有价值的反馈往往藏在已实现的需求里">真正有价值的反馈，往往藏在“已实现的需求”里</h2>

<p>很多团队热衷于听“新需求”——因为那意味着可以开发新功能、增加亮点、拓展边界。
但真正高价值的反馈，往往是那些“你已经做过，但用户没发现”的需求。
为什么？因为它们揭示的是更深层的问题：</p>

<ul>
  <li>可用性缺陷</li>
  <li>信息架构混乱</li>
  <li>命名与认知偏差</li>
  <li>用户行为路径与设计预期脱节</li>
</ul>

<p>这些问题比“缺功能”更隐蔽，却对体验影响更大。一个没人能找到的功能，本质上等于没有上线。</p>

<h2 id="结语功能上线--价值实现">结语：功能上线 ≠ 价值实现</h2>

<p>只有当用户理解、发现并顺利使用时，功能才算真正“上线”。
产品设计的终极目标，不是堆砌功能，而是让价值被看见、被感知、被轻松获取。
下次再听到用户提出“已有功能”的需求时，请别急着解释——
不妨问问自己：我们的设计，是否真的站在了用户的视角？</p>]]></content><author><name>liuning0820</name></author><category term="product design" /><summary type="html"><![CDATA[功能存在 ≠ 用户知道 作为一位开了24,000公里的特斯拉车主，我对这辆车非常满意——操控精准如臂使指，安全性能令人安心，每一次出行都充满信心与愉悦。 但有一个细节，我一直耿耿于怀：在使用导航时，只要打转向灯，屏幕上就会弹出摄像头监控画面。偏偏这个画面会遮挡关键的导航地图信息，尤其在复杂路口，常常让我措手不及，差点错过转弯。 我一度以为这是无法更改的设计缺陷，直到昨天坐朋友的车，才恍然大悟——原来这个监控窗口是可以移动的！ 朋友轻描淡写地说：“你只要长按那个画面，就能拖到左边。” 果然，一试就成。窗口移到左侧后，我用余光就能看清盲区，再也不用扭头或担心挡住导航路线。 就这么一个小小的交互操作，竟能让驾驶体验提升一大截。可笑的是，我开了两万多公里，竟从未发现。 这让我想起早年用微信的经历：想在一段文字中间插入几个字，总是习惯性一路回删重打。直到有朋友告诉我，“长按空格键，光标就能自由移动”——那一刻，我才意识到自己错过了多少效率。 这类“长按拖动”“长按移动光标”的操作，本质上属于隐式交互（Implicit Interaction），也常被称作“专家模式”：功能确实存在，但没有明确引导，普通用户很难主动发现。 功能存在 ≠ 用户知道 在产品工作中，我们常常陷入一种“知识的诅咒”： 我们知道功能在哪、怎么用、为什么重要、能解决什么问题。 但——用户不知道。 这不是一句调侃，而是产品设计中最容易被忽视、却最值得警惕的真相。 很多团队都经历过这样的场景：用户提出一个需求，你心里立刻冒出一句：“这功能我们早就做了啊！” 你甚至能立刻指出入口、按钮样式和操作路径。 可用户依然一脸茫然。 这不是用户的问题，而是产品的问题。 当用户“重复提需求”，其实是可用性在报警 经常和用户交流的好处，不只是获取新点子，更在于你会听到他们反复提出一些“早已存在”的功能需求。 这时，请别急着纠正：“这个我们早就有了！” 相反，这恰恰是一个暴露可用性问题的信号。 为什么用户找不到已有功能？常见原因包括： 入口不明显：藏得太深，或缺乏视觉提示； 命名不直观：术语专业，但不符合用户语言； 路径不符合自然操作流：用户想A，你却让他先做B再做C； 功能与用户的心智模型错位：你以为他需要”监控画面”，他只关心”别挡住导航”。 真正有价值的反馈，往往藏在“已实现的需求”里 很多团队热衷于听“新需求”——因为那意味着可以开发新功能、增加亮点、拓展边界。 但真正高价值的反馈，往往是那些“你已经做过，但用户没发现”的需求。 为什么？因为它们揭示的是更深层的问题： 可用性缺陷 信息架构混乱 命名与认知偏差 用户行为路径与设计预期脱节 这些问题比“缺功能”更隐蔽，却对体验影响更大。一个没人能找到的功能，本质上等于没有上线。 结语：功能上线 ≠ 价值实现 只有当用户理解、发现并顺利使用时，功能才算真正“上线”。 产品设计的终极目标，不是堆砌功能，而是让价值被看见、被感知、被轻松获取。 下次再听到用户提出“已有功能”的需求时，请别急着解释—— 不妨问问自己：我们的设计，是否真的站在了用户的视角？]]></summary></entry><entry><title type="html">囊肿记</title><link href="https://liuning0820.github.io/2026/01/18/%E5%9B%8A%E8%82%BF%E8%AE%B0.html" rel="alternate" type="text/html" title="囊肿记" /><published>2026-01-18T00:00:00+00:00</published><updated>2026-01-18T00:00:00+00:00</updated><id>https://liuning0820.github.io/2026/01/18/%E5%9B%8A%E8%82%BF%E8%AE%B0</id><content type="html" xml:base="https://liuning0820.github.io/2026/01/18/%E5%9B%8A%E8%82%BF%E8%AE%B0.html"><![CDATA[<h1 id="囊肿记">囊肿记</h1>

<p>如果当年我先有 AI 可问，身上就不会多一道疤。这不是技术进步的感叹，是我对自己身体的后悔。搜索引擎在健康信息上的商业模式，本质是贩卖焦虑。AI 至少暂时还没有这个毛病。这是我在同一个小囊肿上，间隔几年得出的结论。</p>

<hr />

<p>几年前，皮肤表面冒出一个小小的囊肿。我不懂它是什么，下意识去搜索。搜索引擎好似鬼市，左边喊”良性恶性”，右边叫”冰冻切除”，前面推医院，后面摆广告。绿豆大小的东西，被吆喝成洪水猛兽。吓得我心慌手乱，洗澡时一摸一抓，竟弄破了，感染化脓。最后不得不去三甲医院，消炎、切除、病理检查，一套走完。手术切下的肉块像东坡先生的红烧肉那般大小，比囊肿本身大数十倍。留下一道永久的疤痕。</p>

<p>今年，类似的情况再次发生。大概是因为臭美，在胳肢窝喷了两次香水，几天后又冒出一个小囊肿。不同的是，这一次我有了 AI。拍了张照片，描述前因后果，问了几个工具。AI 答曰：小感染耳，莫慌，保持清洁，勿弄破，且观察。语气平平，不吓人，不推销。</p>

<p>我照做了。胳肢窝摩擦带来些许不适，但没有恶化。几天后，小肉球由粉色变暗，逐渐萎缩，最后有一天洗澡时忽然不见了，像瓜熟蒂落般自然。没有手术，没有疤痕。</p>

<hr />

<p>AI 不能替代医生，这我知道。但它至少不带利益驱动，不靠吓人赚点击。搜索引擎的问题不在于信息不准确——那些医院和手术确实存在——而在于它把所有信息按出价高低排列，焦虑越大，点击越多，广告越值钱。用户的恐惧是产品的燃料。</p>

<p>我那道疤，是我在恐惧中做出错误动作的代价。如果有人当时平静地告诉我”别碰它，观察几天”，故事就不一样了。AI 做到了这件事。不是因为它更聪明，是因为它没有理由吓我。</p>

<p>知识若只为赚钱，便是囊肿未破，心先化脓；若能安人心，才是瓜熟蒂落的妙处。</p>

<p>就在我写完这些的第二天，听说 OpenAI 马上要在 ChatGPT 里放广告了。</p>]]></content><author><name>liuning0820</name></author><category term="ai life" /><summary type="html"><![CDATA[囊肿记 如果当年我先有 AI 可问，身上就不会多一道疤。这不是技术进步的感叹，是我对自己身体的后悔。搜索引擎在健康信息上的商业模式，本质是贩卖焦虑。AI 至少暂时还没有这个毛病。这是我在同一个小囊肿上，间隔几年得出的结论。 几年前，皮肤表面冒出一个小小的囊肿。我不懂它是什么，下意识去搜索。搜索引擎好似鬼市，左边喊”良性恶性”，右边叫”冰冻切除”，前面推医院，后面摆广告。绿豆大小的东西，被吆喝成洪水猛兽。吓得我心慌手乱，洗澡时一摸一抓，竟弄破了，感染化脓。最后不得不去三甲医院，消炎、切除、病理检查，一套走完。手术切下的肉块像东坡先生的红烧肉那般大小，比囊肿本身大数十倍。留下一道永久的疤痕。 今年，类似的情况再次发生。大概是因为臭美，在胳肢窝喷了两次香水，几天后又冒出一个小囊肿。不同的是，这一次我有了 AI。拍了张照片，描述前因后果，问了几个工具。AI 答曰：小感染耳，莫慌，保持清洁，勿弄破，且观察。语气平平，不吓人，不推销。 我照做了。胳肢窝摩擦带来些许不适，但没有恶化。几天后，小肉球由粉色变暗，逐渐萎缩，最后有一天洗澡时忽然不见了，像瓜熟蒂落般自然。没有手术，没有疤痕。 AI 不能替代医生，这我知道。但它至少不带利益驱动，不靠吓人赚点击。搜索引擎的问题不在于信息不准确——那些医院和手术确实存在——而在于它把所有信息按出价高低排列，焦虑越大，点击越多，广告越值钱。用户的恐惧是产品的燃料。 我那道疤，是我在恐惧中做出错误动作的代价。如果有人当时平静地告诉我”别碰它，观察几天”，故事就不一样了。AI 做到了这件事。不是因为它更聪明，是因为它没有理由吓我。 知识若只为赚钱，便是囊肿未破，心先化脓；若能安人心，才是瓜熟蒂落的妙处。 就在我写完这些的第二天，听说 OpenAI 马上要在 ChatGPT 里放广告了。]]></summary></entry></feed>