<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/modules/content/">
  <channel>
    <title><![CDATA[tanscp]]></title>
    <link>https://tanscp.com</link>
    <description><![CDATA[Purring Cat]]></description>
    <language>en</language>
    <lastBuildDate>Tue, 01 Sep 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://tanscp.com/feed.xml" rel="self" type="application/rss+xml" />
    <image>
      <url>https://tanscp.com/og-image.png</url>
      <title>tanscp</title>
      <link>https://tanscp.com</link>
    </image>
    
        <item>
          <title><![CDATA[科学驾驭你的身体电量 (Body Battery)]]></title>
          <link>https://tanscp.com/posts/what-is-body-battery/</link>
          <guid isPermaLink="true">https://tanscp.com/posts/what-is-body-battery/</guid>
          <pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate>
          <description><![CDATA[你是否经常在下午感到精力耗尽，或者明明睡够了 8 小时，早上醒来却依然觉得疲惫不堪？ 在健康监测的科学模型中，佳明（Garmin）等智能手表引入了一个直观的指标：body-battery（身体电量）。它是一个从 5 到 100 的动态分值，就像是你身体的“油表”。但它并不是靠步数或睡眠时间简单估算出来的，它的背后，隐藏...]]></description>
          <content:encoded><![CDATA[<p>你是否经常在下午感到精力耗尽，或者明明睡够了 8 小时，早上醒来却依然觉得疲惫不堪？</p>
<p>在健康监测的科学模型中，佳明（Garmin）等智能手表引入了一个直观的指标：<a href="https://tanscp.com/posts/what-is-body-battery/body-battery"><strong>body-battery</strong></a><strong>（身体电量）</strong>。它是一个从 5 到 100 的动态分值，就像是你身体的“油表”。但它并不是靠步数或睡眠时间简单估算出来的，它的背后，隐藏着一套精密的人体神经与内分泌密码。</p>
<p>今天，我们就来揭开身体电量的科学黑盒，教你如何精准管理自己的精力。</p>
<h2>1. 身体电量的隐形操盘手：心率变异性 (HRV)</h2>
<p>要理解电量，首先要认识一个核心指标：<a href="https://tanscp.com/posts/what-is-body-battery/hrv"><strong>hrv</strong></a><strong>（心率变异性）</strong>。HRV 指的是连续心跳之间微小的时间差异。它是衡量我们身体 <a href="https://tanscp.com/posts/what-is-body-battery/autonomic-nervous-system"><strong>autonomic-nervous-system</strong></a><strong>（自律神经系统）</strong> 平衡性的黄金标准。</p>
<p>自律神经系统有两大相互博弈的分支：</p>
<ul>
<li><strong>交感神经（耗电模式）</strong>：当你面临工作挑战、压力、情绪激动或剧烈运动时，交感神经主导（战斗或逃跑反应）。为了稳定输出能量，你的心跳会变得极其规律，导致 <strong>HRV 下降</strong>。</li>
<li><strong>副交感神经（充电模式）</strong>：当你进入放松、睡眠或冥想状态时，副交感神经接管（休息与消化）。心跳间隔变得富有弹性，导致 <strong>HRV 上升</strong>。</li>
</ul>
<p><strong>身体电量的核心逻辑就在于此：设备通过捕捉你的 HRV 实时变化，敏锐识别出你的身体究竟是在“耗电”还是在“充电”。</strong></p>
<h2>2. 为什么你的电量会“尿崩”？HPA轴与压力陷阱</h2>
<p>有时候，你并没有做高强度的运动，电量却依然掉得飞快，或者睡了一觉也“充不进电”。这通常与你体内的 <a href="https://tanscp.com/posts/what-is-body-battery/hpa-axis"><strong>hpa-axis</strong></a><strong>（压力应激机制）</strong> 有关。</p>
<p>当大脑感受到压力（即便是情绪应激，比如焦虑或过度兴奋），HPA 轴就会促使肾上腺分泌 <a href="https://tanscp.com/posts/what-is-body-battery/cortisol"><strong>cortisol</strong></a><strong>（皮质醇）</strong> 等压力荷尔蒙。</p>
<ul>
<li>在 <a href="https://tanscp.com/posts/what-is-body-battery/chronic-stress"><strong>chronic-stress</strong></a><strong>（慢性压力）</strong> 状态下，交感神经持续活跃，身体一直处于“备战”状态。</li>
<li>数据上的反映就是：静息心率偏高、HRV 持续走低。</li>
<li>此外，<strong>酒精</strong>是公认的第一能量杀手。睡前饮酒会大幅拉高夜间的压力分数，彻底摧毁睡眠期间的副交感神经活动，让你第二天以低电量开局。</li>
</ul>
<h2>3. 科学充电：除了夜间睡眠，你还能做什么？</h2>
<p>理想的电量曲线应该是“昼落夜升”。<a href="https://tanscp.com/posts/what-is-body-battery/sleep-optimization"><strong>sleep-optimization</strong></a><strong>（睡眠优化）</strong> 无疑是最重要的充电手段。顺应自然节律（如保证稳定的作息时间），能够让身体在夜间获得最深度的修复。</p>
<p>但在白天，我们同样有策略可以进行“快充”：</p>
<ul>
<li><strong>10-20 分钟的 <a href="https://tanscp.com/posts/what-is-body-battery/power-nap">power-nap</a>（短午睡）</strong>：在下午 2-4 点的能量低谷期，进行不超过 20 分钟的短休。这不仅不会引发醒后的昏沉感，还能有效刺激副交感神经，提高 HRV。你会立刻在手表上看到电量的回升，为接下来的工作注入即时能量。</li>
<li><strong>正念与深呼吸</strong>：即便只是几分钟的缓慢呼吸，也能向大脑发送安全的信号，强制中断交感神经的过度亢奋。</li>
</ul>
<h2>4. 你的能量管理行动清单</h2>
<p>想要优化你的能量蓝图，不妨从以下三个习惯开始，将“数据”与“体感”对标：</p>
<ol>
<li><strong>守护黄金恢复期</strong>：全球数据显示，周一晚到周二早晨通常是全周睡眠与能量得分最高的时候。利用这段时间固定作息，储备一周的底气。</li>
<li><strong>善用短午睡</strong>：用 15 分钟的闭目养神代替下午多余的咖啡因。</li>
<li><strong>警惕睡前酒精</strong>：把它视为“拒充”毒药，尝试建立无酒的晚间放松仪式。</li>
</ol>
<p>真正的高效，不是全天候保持 100 分的亢奋，而是顺应生理节律，在 76-100 分的巅峰期攻坚克难，在电量亮起红灯时（5-25分）允许自己彻底断电休息。</p>]]></content:encoded>
          <dc:creator><![CDATA[Tanscp]]></dc:creator>
          
        </item>
        <item>
          <title><![CDATA[通俗易懂的解释什么是Agent]]></title>
          <link>https://tanscp.com/posts/what-is-agent/</link>
          <guid isPermaLink="true">https://tanscp.com/posts/what-is-agent/</guid>
          <pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate>
          <description><![CDATA[通俗易懂的解释什么是 Agent]]></description>
          <content:encoded><![CDATA[<h2>一篇给家人朋友也能看懂的 AI 概念说明书</h2>
<p>今天大家理解 AI 最大的障碍，不是技术太难，而是名字太吓人。Agent、Skills、MCP、LLM、模型、算法……这些词一摆出来，很多人第一反应不是理解，而是先被震住。</p>
<p>于是讨论很容易走向两个极端：一种是<strong>神化</strong>，觉得这些东西像黑魔法，仿佛一夜之间诞生了会思考的机器生命；另一种是<strong>轻视</strong>，觉得不就是聊天机器人换了个包装，没什么新鲜的。这两种看法都不对。</p>
<p>如果你想把这些概念讲给非互联网行业的朋友或家人，最好的方法不是讲参数、架构和训练细节，而是先把它们从神坛上拉下来。说白了，它们没有那么玄，更像是一家公司里不同层次的能力、流程和工具。只要抓住这个比喻，这几个词基本都能讲明白。</p>
<hr>
<h2>先说结论</h2>
<ul>
<li><strong>算法</strong>：是做事的方法。</li>
<li><strong>模型</strong>：是按某种方法训练出来的大脑。</li>
<li><strong>LLM</strong>：是特别擅长理解和生成文字的大脑。</li>
<li><strong>Skills</strong>：是给这个大脑配上的专项经验和工作流程。</li>
<li><strong>MCP</strong>：是让 AI 接上外部工具和系统的统一接口。</li>
<li><strong>Agent</strong>：则是一个不只会回答，还会主动拆任务、调工具、一步步把事情做完的 AI 执行者。</li>
</ul>
<p>如果还嫌抽象，那我们就把它想成一家公司。</p>
<hr>
<h2>一家公司，讲明白六个词</h2>
<h3>1. 算法：做事的方法论</h3>
<p>算法不是什么神秘力量，它本质上就是一套规则，一种解决问题的方法。就像公司培训新员工时，会告诉他客户投诉怎么处理、订单异常怎么排查、报销流程怎么走。先做什么，再做什么，遇到什么情况要分支处理，这套规则就是算法。所以算法不是一个具体的人，它更像做事的方法论。</p>
<h3>2. 模型：训练完成的大脑</h3>
<p>模型可以理解成一个经过训练的员工大脑。公司不是把流程写在墙上就完事了，还要让员工不断学习案例、熟悉话术、积累经验。学得越多，这个人处理问题就越熟练。模型也是一样，它通过大量数据训练，逐渐形成某种能力。所以算法更像训练方法，模型更像训练完成后的结果。</p>
<h3>3. LLM：擅长语言的特长生</h3>
<p>LLM（大语言模型）可以理解成一个特别擅长语言工作的员工。它最强的地方不是搬箱子，也不是拧螺丝，而是读文字、理解意思、组织表达。你问它问题，它能回答；你给它材料，它能总结；你让它写邮件、改文案，它都能做得不错。</p>
<p><strong>特别注意</strong>：很多人误以为 LLM 就是高级搜索，其实不然。搜索引擎的强项是“找资料”，而 LLM 的强项是“理解你的表达，再把信息组织成你能听懂的话”。</p>
<h3>4. Skills：岗位的 SOP</h3>
<p>Skills 可以理解成专项培训包或岗位 SOP。同一个员工，学过客服流程就更会处理投诉，学过财务流程就更会做报销审核。AI 也是一样：给它一个写周报的 skill，它做周报会更有结构；给它一个数据分析的 skill，它处理表格时会更有章法。所以 skill 不是新的大脑，而是让现有大脑在某类任务上变得更专业。</p>
<h3>5. MCP：统一的插口</h3>
<p>MCP 听起来很技术，但你可以把它直接理解成“统一插口”。电脑有 USB，家里的电器有插座，公司软件之间也有标准接口。MCP 的本质就是让 AI 能用统一方式接入外部系统（如文件系统、浏览器、数据库等）。如果没有统一接口，每接一个工具都要单独适配，既麻烦又混乱。有了 MCP，AI 就像有了标准工位，接什么系统都顺畅。</p>
<h3>6. Agent：全能的执行者</h3>
<p>Agent 是最容易被神化的概念。其实你可以把它理解成一个能接任务、会拆步骤、会调用工具、最终交付结果的“AI 员工”。</p>
<p>普通模型更像“问答型员工”，你问一句，它答一句；而 Agent 更像“执行型员工”，你给它一个目标，它会先想怎么做，再一步步完成。比如你说“帮我整理下周出差安排”，普通 LLM 可能会告诉你应该怎么整理，而 Agent 则会真的去查日程、看航班、调用地图、生成清单，最后把安排交给你。</p>
<p><strong>总结一下</strong>：模型更像大脑，Agent 更像带着大脑去干活的人。</p>
<hr>
<h2>逻辑链条：从大脑到执行者</h2>
<p>为什么很多人总把这些词混在一起？因为它们不是并列关系，而是层层递进的：</p>
<ol>
<li><strong>算法</strong>决定训练方式，训练之后形成<strong>模型</strong>。</li>
<li>其中擅长语言处理的模型，就是 <strong>LLM</strong>。</li>
<li>LLM 配上专项流程，就是 <strong>Skills</strong>；接上外部系统，需要 <strong>MCP</strong>。</li>
<li>当这个系统不仅能回答，还能规划步骤、调用工具、完成任务时，就成为了 <strong>Agent</strong>。</li>
</ol>
<p>换句话说，Agent 通常是模型、工具、流程、接口共同作用后的结果。这就像公司里一个能独立做项目的人，不只是脑子好用，还要懂流程、会用系统、能协调资源。</p>
<hr>
<h2>澄清误解：看清 AI 的真相</h2>
<ul>
<li><strong>误解一：模型是知识仓库</strong>。模型不是硬盘，它不存原文，而是从海量内容中学出一种统计规律。它看起来知道很多，其实是擅长生成合理的回答。</li>
<li><strong>误解二：LLM 是搜索引擎</strong>。搜索引擎负责“找”，LLM 负责“理解和表达”。</li>
<li><strong>误解三：Agent 和 Skills 分不清楚</strong>。这两个词经常被混着用，但它们根本不是一个层级。Agent 更像接任务、拆步骤、调工具、交结果的人，Skills 更像这个人掌握的专项能力、经验包和 SOP。Agent 负责把事情做完，Skills 负责把某类事情做得更好。只有 Skills，不等于就有了 Agent；反过来，一个没有足够 Skills 的 Agent，也往往只是肯干活，但不够专业。</li>
<li><strong>误解四：Agent 是机器人秘书</strong>。它依然受工具、权限和边界限制，不是有自我意识的生命，而是高级的任务执行系统。</li>
<li><strong>误解五：MCP 是大脑升级</strong>。MCP 提升的是“通路”而非“智商”，解决的是调不调得动的问题，而非想不想得明白的问题。</li>
</ul>
<hr>
<h2>结语：理解边界，而非术语</h2>
<p>向非技术朋友解释 AI，最重要的不是让他们背下术语，而是让他们知道这套系统的边界：它强在处理文字、总结信息、辅助决策和自动执行；弱在缺乏人类经验，且对现实的理解高度依赖数据和接口。</p>
<p>算法是方法，模型是脑子，LLM 是会说会写的脑子，Skills 是专业训练，MCP 是工具插口，Agent 是能把任务往下做的执行者。</p>
<p>理解这些，是为了不被专业术语吓住。AI 不是神迹，它是工程。理解了这一点，你就已经比很多人更接近真相了。</p>]]></content:encoded>
          <dc:creator><![CDATA[Tanscp]]></dc:creator>
          
        </item>
        <item>
          <title><![CDATA[焦虑不是敌人，而是生活发来的提醒]]></title>
          <link>https://tanscp.com/posts/anxiety-is-not-an-enemy-but-a-reminder/</link>
          <guid isPermaLink="true">https://tanscp.com/posts/anxiety-is-not-an-enemy-but-a-reminder/</guid>
          <pubDate>Wed, 18 Mar 2026 00:00:00 GMT</pubDate>
          <description><![CDATA[我越来越觉得，焦虑并不只是单纯的坏情绪。很多时候，它更像是一种提醒：提醒我们正在面对不确定，提醒我们在意一些东西，提醒我们感受到自身资源不够、能力不够，或者至少，我们主观上觉得还不够。 所以，焦虑真正折磨人的地方，往往不在事情本身，而在于那种“我好像快要失控了”的感觉。事情还没发生，结果还没到来，人却已经先在脑子里把最...]]></description>
          <content:encoded><![CDATA[<p>我越来越觉得，焦虑并不只是单纯的坏情绪。很多时候，它更像是一种提醒：提醒我们正在面对不确定，提醒我们在意一些东西，提醒我们感受到自身资源不够、能力不够，或者至少，我们主观上觉得还不够。</p>
<p>所以，焦虑真正折磨人的地方，往往不在事情本身，而在于那种“我好像快要失控了”的感觉。事情还没发生，结果还没到来，人却已经先在脑子里把最坏的版本活了一遍。</p>
<h2>焦虑的根，不只是想太多</h2>
<p>以前我总以为，焦虑是因为自己不够坚强，后来才慢慢发现，它更像是几种力量拧在一起之后产生的拉扯感。</p>
<p>第一种拉扯，来自欲望和现实之间的距离。人会焦虑，往往不是因为真的一无所有，而是因为心里同时存在两个方向：一边想过稳定踏实的生活，一边又不甘心停在原地；一边想休息，一边又怕自己一停下来就会被时代甩开。很多压力并不是外界直接压过来的，而是自己内心几种愿望互相打架，谁都不肯让步。</p>
<p>第二种拉扯，来自资源感的下降。钱不够，时间不够，精力不够，注意力不够，甚至连情绪的缓冲空间都不够时，人就很容易慌。焦虑本质上是一种资源告急的主观体验。它并不一定意味着你真的走投无路了，而是说明你已经明显感觉到，自己正在被消耗，而且还没有找到稳定的补给方式。</p>
<p>第三种拉扯，来自比较。人一旦过度看向别人，就很容易忘了自己脚下的路。别人升职了，别人赚钱了，别人看起来比你从容、体面、厉害，于是你开始怀疑：是不是自己太慢了，是不是自己不够好。可比较最麻烦的地方在于，它从来不会给人真正的答案，它只会不断抬高你内心的标尺，让你在任何阶段都觉得还不够。</p>
<p>还有一种很隐蔽的来源，是无意义的忙碌。忙，本来不一定是坏事，但很多时候我们并不是在解决问题，而是在用忙碌制造一种“我至少没有停下”的安慰。事情看起来很多，日程排得很满，可真正重要的问题没有被处理，内心的不安也没有减少。结果就是，人表面上很勤奋，心里却越来越空。</p>
<h2>焦虑最擅长伪装</h2>
<p>焦虑很少直接站出来说“我来了”。更多时候，它会换一种样子出现。</p>
<p>它会伪装成拖延。很多人以为拖延是懒，其实不全是。拖延常常是在逃避一种更深的感受：怕做不好，怕被否定，怕最后证明自己真的不行。于是人宁愿把问题拖到“时间来不及”这个层面，也不愿意直接面对“也许我不够优秀”这种更伤自尊的可能。表面上拖的是事情，实际上拖的是对自我评价的审判。</p>
<p>它也会伪装成过度勤奋。有些人一焦虑就拼命行动，任务接得满满当当，时间塞得密不透风，看起来很努力，实际上只是不敢停下来。一停下来，那些没有想清楚的问题、没有处理好的情绪、没有安放好的恐惧就会浮上来。所以很多时候，过度忙碌并不是高效，而是一种廉价止痛药。</p>
<p>它还会伪装成过度负责。总想替别人多做一点，总想把所有漏洞都补上，总想提前把风险扛掉。表面看这是责任感，实际上里面往往藏着一种更深的念头：只要我多做一点，就能少一点失控。可问题在于，一个人一旦习惯用“过度承担”来换安全感，最后往往只会把自己拖进更深的疲惫里。</p>
<p>在社交场景里，焦虑又会变成过度自我审查。说一句话之前先反复预演，聊完一次天之后反复复盘，总觉得自己哪里说得不对、表现得不够自然。注意力始终放在“别人怎么看我”上，反而失去了与人真正连接的能力。</p>
<h2>我后来慢慢明白的一件事</h2>
<p>真正让人痛苦的，常常不是现实有多糟，而是我们试图在今天就把明天、下个月、甚至几年后的风险一次性想完。人没有这种处理能力，却总想提前完成这项工作，于是大脑长期处于超载状态。</p>
<p>焦虑之所以让人疲惫，不只是因为它吵，而是因为它会不断诱导你去做一件根本做不到的事：彻底消除不确定性。</p>
<p>可问题恰恰在这里。人生里很多重要的东西，本来就伴随着不确定。工作会变，关系会变，行业会变，身体状态会变，能力也需要时间慢慢长出来。一个人如果总想等到“完全确定了、完全安全了、完全准备好了”再开始行动，那很可能永远也动不了。</p>
<p>我现在更愿意把焦虑理解为一种信号，而不是一种命令。它可以提醒我：这里有我在意的东西，这里有我需要补足的部分，这里有我暂时还没消化好的压力。但提醒归提醒，我不必什么都听它的。情绪可以出现，方向不能被它拿走。</p>
<h2>比起消灭焦虑，更重要的是学会安顿它</h2>
<p>后来我发现，真正有用的方法，不是和焦虑硬碰硬，而是先让自己重新落回现实。</p>
<p>首先，要把模糊的不安变成具体的问题。很多焦虑之所以可怕，是因为它一团雾似的，罩在那里，让人觉得四面八方都是问题。一旦你开始把它写下来、拆开来，它就会从一种压迫感，变成几个可以处理的小问题。怕能力跟不上，那就去学；怕财务没有缓冲，那就先存一点；怕表达不好，那就减少自我盯梢，多听对方在说什么。很多事情一落实到行动层面，恐惧会立刻下降一大半。</p>
<p>其次，要承认资源有限，并认真保护资源。人不可能在睡眠不足、信息过载、注意力被切碎的状态下，还要求自己始终稳定、清醒、有力量。很多时候，焦虑并不是你想得太多，而是你已经太累了。这个时候最需要的，不是继续给自己打鸡血，而是先恢复：少看一点无意义的信息，少把自己暴露在比较里，多留一点空白，多做一点能让身体和精神慢慢回来的事。</p>
<p>再者，要学会区分“可控”和“不可控”。这是老生常谈，但真正做到的人并不多。行业变化、别人怎么看你、机会什么时候来，这些都不完全由你决定。可你能决定的是，今天有没有把手上的事做好，有没有让自己比昨天多懂一点，有没有在混乱里保住基本节奏。一个人只要还能守住节奏，很多事情就还没有真的失去。</p>
<p>最后，不要把“没有焦虑”当作目标。一个对生活有要求、对未来有责任感的人，不可能完全没有焦虑。真正成熟的状态，不是从此风平浪静，而是即使内心有波动，依然能把日子往前过，把事情一件件做完。焦虑不会因此彻底消失，但它会慢慢从驾驶位退到副驾驶。</p>
<h2>结语</h2>
<p>我现在对焦虑的理解，和过去很不一样。以前总觉得它是敌人，后来才发现，它更像是一个笨拙的警报器：声音很大，表达很差，常常误报，但背后并不是为了毁掉你，而是在提醒你——你在意，你疲惫，你需要重新调整自己的节奏和生活方式。</p>
<p>所以，与其急着把焦虑赶走，不如先问问自己：我到底在怕什么，我真正缺的是什么，我现在最需要先稳住哪一部分。</p>
<p>很多问题，并不是想通了才会轻松，而是开始行动以后，才发现原来没有想象中那么可怕。人也不是等到完全不焦虑了，才有能力过好这一生，而是在一次次焦虑来临时，慢慢学会不被它带着跑。</p>]]></content:encoded>
          <dc:creator><![CDATA[Tanscp]]></dc:creator>
          
        </item>
        <item>
          <title><![CDATA[用 tmux + LaunchAgent + remote-opencode 搭一套常在线 AI 开发环境]]></title>
          <link>https://tanscp.com/posts/tmux-launchagent-remote-opencode/</link>
          <guid isPermaLink="true">https://tanscp.com/posts/tmux-launchagent-remote-opencode/</guid>
          <pubDate>Sat, 14 Mar 2026 00:00:00 GMT</pubDate>
          <description><![CDATA[最近我一直在反复折腾自己的开发环境。原因很简单：AI 写代码这件事，已经不是“偶尔用一下”了，而是越来越像一种长期工作方式。问题也随之暴露出来——我们手上的设备越来越多，但 AI 的上下文却还是割裂的。 白天在公司电脑上开着终端，晚上回家换到自己的 Mac；出门在外，手边只有手机或 iPad。设备一切换，前面刚铺好的上...]]></description>
          <content:encoded><![CDATA[<p>最近我一直在反复折腾自己的开发环境。原因很简单：AI 写代码这件事，已经不是“偶尔用一下”了，而是越来越像一种长期工作方式。问题也随之暴露出来——我们手上的设备越来越多，但 AI 的上下文却还是割裂的。</p>
<p>白天在公司电脑上开着终端，晚上回家换到自己的 Mac；出门在外，手边只有手机或 iPad。设备一切换，前面刚铺好的上下文、刚跑到一半的任务、刚调顺手的工作流，往往也跟着断掉。你会发现，真正拖慢效率的，很多时候不是模型不够强，也不是机器不够快，而是这套环境没有连续性。</p>
<p>所以我这段时间重点解决的，不是“再换一个更强的 AI 工具”，而是想办法把开发环境本身做成一个<strong>全天候在线、跨设备可调用的基座</strong>。我的目标很明确：不管我人在哪里，只要能发出一条指令，就能接上同一台 Mac、同一个终端会话、同一套知识库、同一份上下文。</p>
<p>这篇文章讲的，就是我目前跑得最顺手的一套方案：<strong>Ghostty + tmux + remote-opencode + LaunchAgent</strong>。它表面上是在解决远程开发问题，实际上解决的是另一件更重要的事：<strong>把你的记忆资产固定在一台始终在线的机器上，而不是分散在不同设备里。</strong></p>
<hr>
<h2>1. 桌面端为什么还是主战场</h2>
<p>先说一个很现实的判断：移动端很方便，但真正高强度的开发，主战场依然是桌面端。</p>
<p>原因不复杂。桌面端有更完整的终端能力、更稳定的网络环境、更强的本地性能，也更适合长时间盯着复杂上下文工作。尤其是在 AI 参与越来越深的情况下，终端已经不只是“输入命令的地方”了，它更像一个持续运行的协作现场：模型在里面读代码、改代码、跑命令、等待反馈，你在旁边观察、修正、继续推进。</p>
<p>既然桌面端是主战场，那这套环境首先就得满足两个要求：<strong>足够快</strong>，以及<strong>足够稳</strong>。</p>
<h3>1.1 Ghostty：把“卡顿感”从工作流里拿掉</h3>
<p>如果你经常让 AI 一口气输出大段代码、日志或者 diff，就会很容易感受到终端性能的差异。很多终端在普通场景下没问题，但一旦输出量上来，滚动、刷新、分屏切换这些动作就开始拖后腿。它不一定会完全卡死，但就是会让你觉得“不跟手”。</p>
<p>我后来换到 <strong>Ghostty</strong>，最大的感受不是某个参数多强，而是它整体非常顺。它用 Zig 编写，走 GPU 渲染路线，在大段输出场景里依然能保持很好的反馈速度。这个体验放在 AI 工作流里特别重要，因为你几乎一直在和大量文本打交道：代码、日志、终端输出、补丁结果、测试回显，全部都在争夺你的注意力。</p>
<p>当终端本身足够流畅时，你的注意力就会放在“内容是什么”上，而不是“它怎么还没刷出来”。这件事听起来小，但每天高频发生时，差别非常明显。</p>
<h3>1.2 tmux：让长任务真正“有地方住”</h3>
<p>但只有快还不够。AI 工作流还有另一个典型问题：任务时长不稳定。</p>
<p>有时候它几秒钟就结束，有时候它会在那儿持续跑很久。可能是在改一批文件，可能是在读一堆上下文，可能是在执行一串串联命令。这个时候，如果终端窗口被你顺手关了，或者网络抖了一下，整个过程就断了。</p>
<p>所以我一直认为，AI 时代的终端环境必须配 <strong>tmux</strong>。它最大的价值不是“酷”，而是给进程一个稳定的落点。</p>
<p>我的日常用法很简单：</p>
<ul>
<li>Ghostty 负责原生分屏和视觉体验；</li>
<li>每个分屏里，再进入一个 tmux session；</li>
<li>真正关键的任务，都放到 tmux 里跑。</li>
</ul>
<p>这样一来，Ghostty 是前台界面，tmux 才是后台生命线。就算我把窗口关了、机器短暂断开显示、甚至重新连回来，只要 tmux session 还在，整个上下文就还在。对于 AI 长任务来说，这种“会话不跟窗口同生共死”的能力，几乎是基础设施级别的存在。</p>
<hr>
<h2>2. 真正该被保护的，其实是“记忆资产”</h2>
<p>很多人会把这类方案理解成“远程控制自己的电脑”。这当然没错，但如果只看到这里，其实还没抓住重点。</p>
<p>这套流程真正要保护的，不是某一个终端窗口，也不是某一个模型会话，而是你长期积累下来的<strong>记忆资产</strong>。</p>
<p>我所谓的记忆资产，包含几层东西：</p>
<ul>
<li>AI 对你项目代码结构的理解；</li>
<li>AI 对你个人习惯、命名方式、表达偏好的适应；</li>
<li>你本地知识库里的笔记、文档、历史记录；</li>
<li>正在进行中的任务链路和上下文状态。</li>
</ul>
<p>这些东西一旦固定在某一台机器上，并且不断累积，它就会越来越值钱。相反，如果你在公司一套环境、家里一套环境、手机上又临时切到另一个入口，结果就是上下文四分五裂。每次切换设备，AI 都得重新认识你一次。你看起来是在“随时可用”，实际上是在不断重建现场。</p>
<p>这也是我开始认真看待 <strong>remote-opencode</strong> 的原因。</p>
<p>它最有意思的地方，不只是把本地 OpenCode CLI 暴露到了远程，而是把“统一入口”这件事做得很顺。你不需要在每台设备上都重新维护一套开发环境，也不需要为了移动端临时换一个完全不同的工作方式。你只要把核心环境放在那台最稳定、性能最强、资料最完整的 Mac 上，然后通过 Discord 这样的入口去调用它就行。</p>
<p>换句话说，手机、iPad、甚至别的临时设备，在这个体系里都不再是“新的工作环境”，而只是“同一套环境的远程入口”。这个思路一旦建立起来，整个工作流会一下子清晰很多。</p>
<hr>
<h2>3. remote-opencode 的价值，不只是“远程”</h2>
<p>第一次接触 <code>remote-opencode</code>，很多人都会先被它的形式吸引：原来可以直接在 Discord 里给本地 OpenCode 发指令。</p>
<p>这当然很直观。但我自己真正用下来之后，觉得它最有价值的地方，不是“能发指令”，而是它帮我把不同设备之间那条断裂带给补上了。</p>
<p>以前的情况是这样的：</p>
<ul>
<li>在桌面端，我有完整的本地仓库、终端、脚本、知识库；</li>
<li>到了移动端，这些东西几乎全部消失，只剩一个聊天窗口；</li>
<li>结果就是，移动端只能做很浅的事情，比如发个备忘、看两眼消息，很难真正接入工作流。</li>
</ul>
<p>而现在，Discord 这个聊天窗口本身，就变成了一个轻量控制台。它背后接的不是一个全新的云端环境，而是我自己那套已经养熟了的本地环境。这里的区别非常大。</p>
<p>因为这意味着：</p>
<ul>
<li>我在手机上发出去的，不是一个“临时请求”，而是对同一套上下文的继续操作；</li>
<li>我在 iPad 上补的一句话，不会漂在外面，而是能直接回到同一个 Vault、同一个终端、同一个任务链里；</li>
<li>我回到桌面端之后，不需要重新解释一遍刚才做了什么，只要 attach 回 tmux，就能继续。</li>
</ul>
<p>这才是我最看重的地方：<strong>不是跨设备都能做事，而是跨设备做的还是同一件事。</strong></p>
<hr>
<h2>4. 一个非常实用的副产物：Obsidian 移动端快速记录</h2>
<p>这套流程还有一个我非常喜欢的副产物——它几乎顺手解决了 <strong>Obsidian 移动端快速记录</strong> 的问题。</p>
<p>只要长期用 Obsidian，你大概率都遇到过类似情况：人在外面，突然冒出一个想法，想赶紧记下来；你掏出手机，点开 Obsidian，等它加载、同步、进入目标笔记，整个过程并不算慢到不能接受，但就是足够打断思路。</p>
<p>问题不在于它不能记，而在于它不够“即刻”。</p>
<p>而有了这套远程流程之后，记录方式会变得非常自然：</p>
<ol>
<li>打开手机上的 Discord；</li>
<li>直接发一句自然语言，比如：
<ul>
<li>“帮我把这条想法存到收件箱：……”</li>
<li>“把这件事记到今日日记里：……”</li>
<li>“帮我新建一条关于 xxx 的笔记草稿。”</li>
</ul>
</li>
<li>远端的 OpenCode 接收到消息之后，直接调用本地的 <code>obsidian</code> CLI；</li>
<li>内容被写入你 Mac 上那份真正的 Vault；</li>
<li>等你回到电脑前，一切已经在原来的体系里了。</li>
</ol>
<p>这件事的妙处在于，它没有要求你在移动端重新搭一个“轻量 Obsidian 工作流”，也没有让你去适应另一套工具。你只是换了一个更快的入口，但背后还是同一个知识库。</p>
<p>我现在很喜欢把它理解成一种“闪念胶囊”：你不需要完整进入系统，只需要把想法扔进去，系统会替你准确落到该落的地方。对于高频记录的人来说，这个体验提升非常明显。</p>
<hr>
<h2>5. 落地配置：让这套服务开机就在线</h2>
<p>如果这套方案只是“偶尔手动启动一下”，那它的价值会大打折扣。真正好用的状态，应该是你几乎不用去想它，它自己就在那儿稳定运行。</p>
<p>所以接下来这一步很关键：把 <code>remote-opencode</code> 放进 <code>tmux</code>，再交给 macOS 的 <code>LaunchAgent</code> 处理，让它在登录后自动拉起。</p>
<h3>5.1 启动脚本：先保证 session 的存在</h3>
<p>我习惯先写一个很小的启动脚本，专门干一件事：检查 tmux session 是否已经存在，如果没有，就创建并启动 <code>remote-opencode</code>。</p>
<p><strong>路径</strong>：<code>~/scripts/auto_opencode.sh</code></p>
<pre><code class="language-bash">#!/bin/bash

# launchd 环境下 PATH 很干净，必须手动补全，不然找不到 node 和全局包
export PATH="/Users/用户名/.npm-global/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

TMUX_BIN="/opt/homebrew/bin/tmux"
OPENCODE_BIN="/Users/用户名/.npm-global/bin/remote-opencode"

# 检查 session 在不在，不在才启动
$TMUX_BIN has-session -t remote-opencode 2>/dev/null
if [ $? != 0 ]; then
  # 先建一个空 session，再发送启动命令
  # 这样即使启动时报错，也能直接 attach 进去看现场
  $TMUX_BIN new-session -d -s remote-opencode
  sleep 1
  $TMUX_BIN send-keys -t remote-opencode "$OPENCODE_BIN start" C-m
fi
</code></pre>
<p>这里有两个细节值得注意。</p>
<p>第一，<code>launchd</code> 运行出来的环境变量非常干净，很多你在交互式 shell 里默认有的 PATH，它其实都不知道，所以这里一定要手动把常用路径补全。</p>
<p>第二，我不建议直接一条命令粗暴启动，而是先建空 session，再 <code>send-keys</code>。因为这样出问题时更容易排查。你只要 <code>tmux attach -t remote-opencode</code>，就能直接看到它到底卡在了哪一步。</p>
<p>脚本写完之后，记得加执行权限：</p>
<pre><code class="language-bash">chmod +x ~/scripts/auto_opencode.sh
</code></pre>
<h3>5.2 LaunchAgent：交给系统接管启动流程</h3>
<p>接下来，用 <code>LaunchAgent</code> 让 macOS 在登录时自动执行这个脚本。</p>
<p><strong>路径</strong>：<code>~/Library/LaunchAgents/com.用户名.remote-opencode.plist</code></p>
<pre><code class="language-xml">&#x3C;?xml version="1.0" encoding="UTF-8"?>
&#x3C;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
&#x3C;plist version="1.0">
&#x3C;dict>
    &#x3C;key>Label&#x3C;/key>
    &#x3C;string>com.用户名.remote-opencode&#x3C;/string>
    &#x3C;key>ProgramArguments&#x3C;/key>
    &#x3C;array>
        &#x3C;string>/Users/用户名/scripts/auto_opencode.sh&#x3C;/string>
    &#x3C;/array>
    &#x3C;key>RunAtLoad&#x3C;/key>
    &#x3C;true/>
    &#x3C;key>KeepAlive&#x3C;/key>
    &#x3C;false/>
&#x3C;/dict>
&#x3C;/plist>
</code></pre>
<p>配好之后，执行：</p>
<pre><code class="language-bash">launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.用户名.remote-opencode.plist
</code></pre>
<p>以后机器一登录，这套流程就会自动起来。你想确认它是不是正常运行，也很简单，直接：</p>
<pre><code class="language-bash">tmux attach -t remote-opencode
</code></pre>
<p>如果看到 session 已经在，说明整个启动链路是通的。</p>
<hr>
<h2>6. 最后一公里：让 Mac 合盖也别睡</h2>
<p>到这里，其实整套系统已经差不多成型了。但如果你真想把这台 Mac 当成一台长期在线的“个人开发服务器”，还有最后一个现实问题：<strong>合盖休眠</strong>。</p>
<p>只要系统睡过去了，远程入口再漂亮也没用。所以这一层保障不能省。</p>
<h3>6.1 图形化方案：KeepingYouAwake</h3>
<p>如果你更喜欢简单稳定的方式，<strong>KeepingYouAwake</strong> 基本就是最省心的选择。它是个很轻的小工具，放在菜单栏里，点一下就能阻止系统休眠。</p>
<p>比较实用的设置思路是：</p>
<ul>
<li>选择长期保持唤醒；</li>
<li>允许显示器休眠；</li>
<li>机器接电使用。</li>
</ul>
<p>这样做的好处是，屏幕可以黑掉，不影响日常放置和省电，但系统本身仍然在线，后台服务也不会中断。</p>
<h3>6.2 命令行方案：caffeinate</h3>
<p>如果你不想额外装工具，也可以直接用 macOS 自带的 <code>caffeinate</code>。</p>
<pre><code class="language-bash"># 在 tmux 里跑这个，系统就不会进入休眠
caffeinate -i remote-opencode start
</code></pre>
<p>再激进一点，也可以直接改电源设置：</p>
<pre><code class="language-bash">sudo pmset -a disablesleep 1
</code></pre>
<p>不过这个方案更适合你非常清楚自己在做什么的时候再用。毕竟机器长期不睡，散热、电源、摆放环境这些现实问题都要一起考虑。我的建议很简单：如果你是把它当长期在线节点来跑，最好接着电，并放在一个散热条件稳定的位置。</p>
<hr>
<h2>7. 这套方案改变的，不只是“能不能远程”</h2>
<p>我后来越来越确定，这套流程真正改变的，不只是我能不能在外面远程给家里的电脑发命令。</p>
<p>它改变的是我对开发环境的理解。</p>
<p>以前我们总把开发环境理解成“我现在手上这台设备上的一堆工具”。但在 AI 时代，这种理解其实已经有点落后了。因为真正持续积累价值的，不再只是编辑器、终端和命令本身，而是那套不断被喂养、不断长上下文、不断沉淀知识的工作现场。</p>
<p>一旦你把这件事想清楚，就会发现最合理的做法不是“每台设备都尽量配齐”，而是固定一台核心机器，让所有设备都去连接它。</p>
<p>这样一来：</p>
<ul>
<li>桌面端，负责深度工作；</li>
<li>手机端，负责快速触发和记录；</li>
<li>iPad，负责补充查看和轻操作；</li>
<li>而真正的记忆、上下文、任务状态，都稳定地待在同一个地方。</li>
</ul>
<p>这就是我现在最喜欢的部分：<strong>设备边界还在，但工作流边界被抹平了。</strong></p>
<p>你在地铁上想到一个点子，掏出手机发出去；回到桌前，打开 Ghostty，attach 回 tmux，刚才那条思路已经接进了原来的任务链。整个过程没有重启上下文，也没有“我刚才到底记到哪儿了”的额外心智负担。</p>
<p>这种感觉一旦用顺，真的很难再回到过去那种每切一次设备就重新来过的状态。</p>
<hr>
<h2>总结</h2>
<p>如果只看表面，这篇文章讲的是 <code>tmux + remote-opencode + LaunchAgent</code> 怎么配。</p>
<p>但如果往里看一层，它其实是在回答一个更现实的问题：<strong>在 AI 深度参与开发之后，我们该怎么保住自己的上下文连续性。</strong></p>
<p>我的答案就是，把最完整的环境固定在一台长期在线的 Mac 上，用 Ghostty 提供顺滑体验，用 tmux 保住会话，用 remote-opencode 打通远程入口，再用 LaunchAgent 和防休眠方案把它变成真正稳定的底座。</p>
<p>这样做之后，你获得的不是一个花哨的远程控制玩法，而是一套真正能每天使用、能持续积累、能把不同设备重新串成一条线的工作流。</p>
<p>如果你也在折腾多设备协同、远程开发、或者 Obsidian 移动端快速记录，这套思路值得你自己跑一遍。很多体验，光看文字很难完全感受到，真把它搭起来之后，你会更容易理解什么叫“同一套记忆资产，在不同设备上被持续调用”。</p>]]></content:encoded>
          <dc:creator><![CDATA[tanscp]]></dc:creator>
          <category><![CDATA[opencode]]></category><category><![CDATA[agent]]></category>
        </item>
        <item>
          <title><![CDATA[第一篇：系列内的中文文章]]></title>
          <link>https://tanscp.com/zh/zh-demo-series/di-yi-pian/</link>
          <guid isPermaLink="true">https://tanscp.com/zh/zh-demo-series/di-yi-pian/</guid>
          <pubDate>Tue, 03 Mar 2026 00:00:00 GMT</pubDate>
          <description><![CDATA[中文示例系列的第一篇文章。]]></description>
          <content:encoded><![CDATA[<p>系列子文章从系列索引继承标题与作者，与默认语言树的行为一致。</p>]]></content:encoded>
          <dc:creator><![CDATA[Tanscp]]></dc:creator>
          <category><![CDATA[示例]]></category>
        </item>
        <item>
          <title><![CDATA[中文原创示例文章]]></title>
          <link>https://tanscp.com/zh/posts/zh-original-demo/</link>
          <guid isPermaLink="true">https://tanscp.com/zh/posts/zh-original-demo/</guid>
          <pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate>
          <description><![CDATA[一篇只存在于中文内容树中的原创文章 —— 没有英文 twin，自成规范 URL。]]></description>
          <content:encoded><![CDATA[<p>这篇文章只存在于 <code>content/zh/posts/</code> 中，没有默认语言树里的对应文件。
它拥有自己的规范 URL（<code>/zh/posts/zh-original-demo/</code>），不参与 hreflang 配对。</p>
<p>中文原创内容与译文在数据层没有区别 —— 语言由所在的内容树决定。</p>]]></content:encoded>
          <dc:creator><![CDATA[Tanscp]]></dc:creator>
          <category><![CDATA[示例]]></category><category><![CDATA[i18n]]></category>
        </item>
        <item>
          <title><![CDATA[Multimedia Showcase: Video, Podcasts & Embeds]]></title>
          <link>https://tanscp.com/posts/multimedia-showcase/</link>
          <guid isPermaLink="true">https://tanscp.com/posts/multimedia-showcase/</guid>
          <pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate>
          <description><![CDATA[A comprehensive test of multimedia embedding support — YouTube, Vimeo, podcasts, livestreams, HTML5 native media, and audio platforms.]]></description>
          <content:encoded><![CDATA[<p>This post tests how Amytis renders multimedia content embedded via raw HTML iframes and native HTML5 media elements. Since <code>rehype-raw</code> is enabled, standard HTML embed codes work directly inside Markdown.</p>
<hr>
<h2>YouTube Video</h2>
<p>Responsive 16</p><div></div> YouTube embed using a padded wrapper:<p></p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; border-radius: 12px; margin: 1.5rem 0;">
  <iframe src="https://www.youtube.com/embed/jNQXAC9IVRw?rel=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;" allow="accelerometer; autoplay; clipboard-write; encrypted-media; fullscreen; gyroscope; picture-in-picture; web-share" title="Me at the zoo — first YouTube video ever uploaded (2005)"></iframe>
</div>
<p><em>"Me at the zoo" — the very first video uploaded to YouTube (April 23, 2005).</em></p>
<hr>
<h2>Vimeo Video</h2>
<p>Vimeo also supports responsive 16</p><div></div> embedding:<p></p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; border-radius: 12px; margin: 1.5rem 0;">
  <iframe src="https://player.vimeo.com/video/76979871?color=ff9933&#x26;title=0&#x26;byline=0&#x26;portrait=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;" allow="autoplay; fullscreen; picture-in-picture" title="Big Buck Bunny — Blender Foundation (Vimeo)"></iframe>
</div>
<p><em>Big Buck Bunny (2008) — open-source animated short by the Blender Foundation.</em></p>
<hr>
<h2>Podcast Embeds</h2>
<h3>Spotify Podcast</h3>
<p>Spotify provides a fixed-height iframe embed for individual episodes:</p>
<iframe src="https://open.spotify.com/embed/episode/0b8q6Q7fKqZLlSc0Lh1WQe?utm_source=generator&#x26;theme=0" style="border-radius: 12px; margin: 1rem 0;" width="100%" height="152" frameborder="0" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy" title="Spotify Podcast Episode"></iframe>
<p>You can also embed the full show player at a taller height (352px) to show the episode list:</p>
<iframe src="https://open.spotify.com/embed/show/5as3aKmN2k11yfDDDSrvaZ?utm_source=generator" style="border-radius: 12px; margin: 1rem 0;" width="100%" height="352" frameborder="0" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy" title="Spotify Show Player"></iframe>
<h3>Apple Podcasts</h3>
<p>Apple Podcasts uses a similar iframe embed pattern:</p>
<iframe src="https://embed.podcasts.apple.com/us/podcast/syntax-tasty-web-development-treats/id1253186678?itsct=podcast_box_player&#x26;itscg=30200&#x26;ls=1&#x26;theme=auto" height="175px" frameborder="0" sandbox="allow-forms allow-popups allow-same-origin allow-scripts allow-top-navigation-by-user-activation" allow="autoplay *; encrypted-media *; clipboard-write" style="width: 100%; max-width: 660px; overflow: hidden; border-radius: 10px; margin: 1rem 0; display: block;" title="Apple Podcasts — Syntax.fm"></iframe>
<hr>
<h2>Livestream Embeds</h2>
<h3>YouTube Live</h3>
<p>A YouTube Live channel or active live video can be embedded exactly like a regular video. Use the channel's live URL (<code>/live</code>) or a live event ID:</p>
<pre><code class="language-html">&#x3C;!-- Replace CHANNEL_ID with the YouTube channel ID -->
&#x3C;iframe
  src="https://www.youtube.com/embed/live_stream?channel=CHANNEL_ID"
  ...
>&#x3C;/iframe>
</code></pre>
<p>Below is NASA's public live stream:</p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; border-radius: 12px; margin: 1.5rem 0;">
  <iframe src="https://www.youtube.com/embed/xAieE-QtOeM?autoplay=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0;" allow="accelerometer; autoplay; clipboard-write; encrypted-media; fullscreen; gyroscope; picture-in-picture" title="NASA TV Live"></iframe>
</div>
<h3>Twitch Stream</h3>
<p>Twitch requires your site's hostname in the <code>parent</code> query parameter (so the embed works in production):</p>
<pre><code class="language-html">&#x3C;!-- Replace CHANNEL_NAME with a Twitch channel, and your-domain.com with your domain -->
&#x3C;iframe
  src="https://player.twitch.tv/?channel=CHANNEL_NAME&#x26;parent=your-domain.com"
  height="378"
  width="100%"
  allow="fullscreen"
  title="Twitch Stream"
>&#x3C;/iframe>
</code></pre>
<p>Twitch also supports embedding past broadcasts (VODs) and clips:</p>
<pre><code class="language-html">&#x3C;!-- VOD -->
&#x3C;iframe src="https://player.twitch.tv/?video=VOD_ID&#x26;parent=your-domain.com" ...>&#x3C;/iframe>
&#x3C;!-- Clip -->
&#x3C;iframe src="https://clips.twitch.tv/embed?clip=CLIP_SLUG&#x26;parent=your-domain.com" ...>&#x3C;/iframe>
</code></pre>
<hr>
<h2>HTML5 Native Media</h2>
<p>Native <code>&#x3C;video></code> and <code>&#x3C;audio></code> elements work without any third-party embeds.</p>
<h3>HTML5 Video</h3>
<p>&#x3C;video
controls
style="width: 100%; border-radius: 12px; margin: 1rem 0; background: #000;"
poster="<a href="https://peach.blender.org/wp-content/uploads/title_anouncement.jpg">https://peach.blender.org/wp-content/uploads/title_anouncement.jpg</a>"</p>
<blockquote>
</blockquote>
  <source src="https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4" type="video/mp4">
  Your browser does not support the HTML5 video element.

<p><em>Elephants Dream (2006) — first open-source animated film by the Blender Foundation.</em></p>
<p>Attributes you can use:</p>

































<table><thead><tr><th align="left">Attribute</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><code>controls</code></td><td align="left">Show playback controls</td></tr><tr><td align="left"><code>autoplay</code></td><td align="left">Start playing automatically (use with <code>muted</code>)</td></tr><tr><td align="left"><code>muted</code></td><td align="left">Mute by default (required for autoplay)</td></tr><tr><td align="left"><code>loop</code></td><td align="left">Loop the video</td></tr><tr><td align="left"><code>poster</code></td><td align="left">Preview image shown before play</td></tr><tr><td align="left"><code>preload</code></td><td align="left"><code>auto</code> | <code>metadata</code> | <code>none</code></td></tr></tbody></table>
<h3>HTML5 Audio</h3>
<p>&#x3C;audio
controls
style="width: 100%; margin: 1rem 0;"</p>
<blockquote>
</blockquote>
  <source src="https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3" type="audio/mpeg">
  Your browser does not support the HTML5 audio element.

<p><em>SoundHelix royalty-free sample track.</em></p>
<p>Multiple formats improve cross-browser support:</p>
<pre><code class="language-html">&#x3C;audio controls>
  &#x3C;source src="https://tanscp.com/posts/multimedia-showcase/audio.ogg" type="audio/ogg" />
  &#x3C;source src="https://tanscp.com/posts/multimedia-showcase/audio.mp3" type="audio/mpeg" />
  Your browser does not support the HTML5 audio element.
&#x3C;/audio>
</code></pre>
<hr>
<h2>Audio Platforms</h2>
<h3>SoundCloud</h3>
<p>SoundCloud exposes an iframe embed from any track's "Share → Embed" menu:</p>
<iframe width="100%" height="166" scrolling="no" frameborder="no" allow="autoplay" style="border-radius: 8px; margin: 1rem 0;" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/1&#x26;color=%23ff5500&#x26;auto_play=false&#x26;hide_related=false&#x26;show_comments=true&#x26;show_user=true&#x26;show_reposts=false&#x26;show_teaser=true" title="SoundCloud track"></iframe>
<p>The full visual player (300px height) shows the waveform:</p>
<pre><code class="language-html">&#x3C;iframe
  width="100%"
  height="300"
  src="https://w.soundcloud.com/player/?url=TRACK_URL&#x26;visual=true"
  ...
>&#x3C;/iframe>
</code></pre>
<h3>Bandcamp</h3>
<p>Bandcamp provides both album and track embed codes:</p>
<pre><code class="language-html">&#x3C;!-- Album embed -->
&#x3C;iframe
  style="border: 0; width: 100%; height: 120px;"
  src="https://bandcamp.com/EmbeddedPlayer/album=ALBUM_ID/size=large/bgcol=ffffff/linkcol=0687f5/"
  seamless
>&#x3C;/iframe>
</code></pre>
<hr>
<h2>Embed Best Practices</h2>
<p>When embedding third-party media, keep these in mind:</p>
<ul>
<li><strong>Responsive sizing</strong>: Wrap iframes in a <code>padding-bottom: 56.25%; position: relative</code> container to maintain 16<div></div> ratio.</li>
<li><strong><code>loading="lazy"</code></strong>: Add this to below-the-fold embeds to defer loading and improve page speed.</li>
<li><strong><code>title</code> attribute</strong>: Always provide a descriptive <code>title</code> for screen reader accessibility.</li>
<li><strong>Privacy-enhanced mode</strong>: YouTube supports <code>youtube-nocookie.com</code> to reduce tracking when embeds don't auto-play.</li>
<li><strong><code>allow</code> over <code>allowfullscreen</code></strong>: Use <code>allow="fullscreen"</code> instead of the deprecated <code>allowfullscreen</code> boolean attribute. Note that bare <code>allow="fullscreen"</code> restricts fullscreen to the iframe's own origin (more secure), whereas the legacy <code>allowfullscreen</code> was equivalent to <code>allow="fullscreen *"</code> (any origin). For third-party embeds like YouTube or Vimeo, <code>allow="fullscreen"</code> is the correct and preferred form. When both attributes are present the browser warns that <code>allow</code> takes precedence.</li>
<li><strong><code>sandbox</code> attribute</strong>: Use for untrusted embeds to restrict what the iframe can do.</li>
<li><strong>Twitch <code>parent</code> parameter</strong>: Twitch requires your site's hostname in <code>parent</code> for embeds to work outside localhost.</li>
</ul>
<pre><code class="language-html">&#x3C;!-- YouTube privacy-enhanced embed -->
&#x3C;iframe
  src="https://www.youtube-nocookie.com/embed/VIDEO_ID?rel=0"
  ...
>&#x3C;/iframe>
</code></pre>]]></content:encoded>
          <dc:creator><![CDATA[Tanscp]]></dc:creator>
          <category><![CDATA[multimedia]]></category><category><![CDATA[video]]></category><category><![CDATA[audio]]></category><category><![CDATA[podcast]]></category><category><![CDATA[embed]]></category><category><![CDATA[test]]></category>
        </item>
        <item>
          <title><![CDATA[静态导出下的多语言路由考量]]></title>
          <link>https://tanscp.com/zh/posts/i18n-routing-considerations/</link>
          <guid isPermaLink="true">https://tanscp.com/zh/posts/i18n-routing-considerations/</guid>
          <pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate>
          <description><![CDATA[在纯静态导出的站点上，基于 URL 的语言路由与客户端切换方案的取舍。]]></description>
          <content:encoded><![CDATA[<p>这是 <code>i18n-routing-considerations</code> 的中文译文，与英文原文位于相同的树内相对路径，
因此构成一对 twin：<code>content/posts/…</code> ↔ <code>content/zh/posts/…</code>。</p>
<h2>为什么选择 URL 路由</h2>
<p>客户端语言切换在水合后才生效，会带来闪烁与 hydration 告警；把语言编码进 URL
之后，服务端在构建期就知道该渲染哪种语言。</p>
<h2>稀疏镜像</h2>
<p>只有存在中文内容的页面才会生成 <code>/zh/</code> 路由 —— 没有译文的页面不会凭空多出一个
中文外壳的副本。</p>]]></content:encoded>
          <dc:creator><![CDATA[Tanscp]]></dc:creator>
          <category><![CDATA[i18n]]></category><category><![CDATA[next.js]]></category>
        </item>
        <item>
          <title><![CDATA[The Kitchen Sink: Comprehensive Feature Test]]></title>
          <link>https://tanscp.com/posts/kitchen-sink/</link>
          <guid isPermaLink="true">https://tanscp.com/posts/kitchen-sink/</guid>
          <pubDate>Wed, 21 Jan 2026 00:00:00 GMT</pubDate>
          <description><![CDATA[A complete showcase of all markdown features, code highlighting, diagrams, math, and layout capabilities supported by Amytis.]]></description>
          <content:encoded><![CDATA[<p>This is a paragraph under H1. <strong>Bold text</strong>, <em>italic text</em>, and <del>strikethrough</del>.</p>
<h2>Heading Level 2</h2>
<p>Here is a blockquote:</p>
<blockquote>
<p>"The digital garden is not just a collection of posts, but a web of interconnected thoughts."</p>
<p>— Unknown Gardener</p>
</blockquote>
<h3>Heading Level 3</h3>
<h4>Heading Level 4</h4>
<h5>Heading Level 5</h5>
<h6>Heading Level 6</h6>
<hr>
<h2>Lists</h2>
<h3>Unordered</h3>
<ul>
<li>Item 1</li>
<li>Item 2
<ul>
<li>Nested Item 2.1</li>
<li>Nested Item 2.2</li>
</ul>
</li>
<li>Item 3</li>
</ul>
<h3>Ordered</h3>
<ol>
<li>Step One</li>
<li>Step Two</li>
<li>Step Three</li>
</ol>
<h3>Task List</h3>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" checked disabled> Implement Markdown</li>
<li class="task-list-item"><input type="checkbox" checked disabled> Add Syntax Highlighting</li>
<li class="task-list-item"><input type="checkbox" disabled> Write Documentation</li>
</ul>
<hr>
<h2>Code</h2>
<h3>Inline</h3>
<p>The <code>useState</code> hook is essential. You can install via <code>bun install</code>.</p>
<h3>Code Blocks</h3>
<p><strong>TypeScript:</strong></p>
<pre><code class="language-typescript">interface User {
  id: number;
  name: string;
}

function getUser(id: number): User {
  return { id, name: "Alice" };
}
</code></pre>
<p><strong>Bash:</strong></p>
<pre><code class="language-bash">echo "Hello World" > hello.txt
ls -la
</code></pre>
<p><strong>JSON:</strong></p>
<pre><code class="language-json">{
  "project": "Amytis",
  "version": "1.4.0"
}
</code></pre>
<hr>
<h2>Math (LaTeX)</h2>
<p>Inline math: <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>E</mi><mo>=</mo><mi>m</mi><msup><mi>c</mi><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">E = mc^2</annotation></semantics></math></span> and <span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>e</mi><mrow><mi>i</mi><mi>π</mi></mrow></msup><mo>+</mo><mn>1</mn><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">e^{iπ} + 1 = 0</annotation></semantics></math></span>.</p>
<p>Block math:</p>
<span class="katex"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mfrac><mn>1</mn><mrow><mi>σ</mi><msqrt><mrow><mn>2</mn><mi>π</mi></mrow></msqrt></mrow></mfrac><mi>exp</mi><mo>⁡</mo><mrow><mo fence="true">(</mo><mo>−</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><msup><mrow><mo fence="true">(</mo><mfrac><mrow><mi>x</mi><mo>−</mo><mi>μ</mi></mrow><mi>σ</mi></mfrac><mo fence="true">)</mo></mrow><mn>2</mn></msup><mo fence="true">)</mo></mrow></mrow><annotation encoding="application/x-tex">\frac{1}{\sigma\sqrt{2\pi}} \exp\left( -\frac{1}{2} \left( \frac{x-\mu}{\sigma} \right)^2 \right)</annotation></semantics></math></span>
<hr>
<h2>Diagrams (Mermaid)</h2>
<h3>Flowchart</h3>
<pre><code class="language-mermaid">flowchart LR
    A[Start] --> B{Is it working?}
    B -- Yes --> C[Great!]
    B -- No --> D[Debug]
    D --> B
</code></pre>
<h3>Sequence Diagram</h3>
<pre><code class="language-mermaid">sequenceDiagram
    Alice->>John: Hello John, how are you?
    John-->>Alice: Great!
</code></pre>
<hr>
<h2>Images</h2>
<h3>Standard Markdown</h3>
<p><img src="https://tanscp.com/posts/kitchen-sink/assets/test.svg" alt="Test SVG"></p>
<h3>Raw HTML (Quoted)</h3>
<img src="https://tanscp.com/posts/kitchen-sink/assets/test.svg" width="100" alt="Small HTML Image" style="border: 2px solid #ccc; border-radius: 8px;">
<h3>Photos from Public Directory</h3>
<p><img src="https://tanscp.com/images/antelope-canyon.jpg" alt="Antelope Canyon"></p>
<p><img src="https://tanscp.com/images/mountains.jpg" alt="Mountain Landscape"></p>
<p><img src="https://tanscp.com/images/lake.jpg" alt="Lake View"></p>
<p><img src="https://tanscp.com/images/flowers.jpg" alt="Flowers"></p>
<p><img src="https://tanscp.com/images/cappadocia.jpg" alt="Cappadocia"></p>
<p><img src="https://tanscp.com/images/galaxy.jpg" alt="Galaxy"></p>
<h3>Vibrant Waves (JPG format)</h3>
<p><img src="https://tanscp.com/images/vibrant-waves.jpg" alt="Vibrant Waves"></p>
<h3>Side by Side (Raw HTML)</h3>
<div style="display: flex; gap: 1rem; flex-wrap: wrap;">
  <img src="https://tanscp.com/images/antelope-canyon.jpg" alt="Antelope Canyon" style="width: 48%; border-radius: 8px;">
  <img src="https://tanscp.com/images/cappadocia.jpg" alt="Cappadocia" style="width: 48%; border-radius: 8px;">
</div>
<hr>
<h2>Tables</h2>

























<table><thead><tr><th align="left">Feature</th><th align="center">Status</th><th align="left">Notes</th></tr></thead><tbody><tr><td align="left"><strong>GFM</strong></td><td align="center">✅</td><td align="left">Tables supported</td></tr><tr><td align="left"><strong>Math</strong></td><td align="center">✅</td><td align="left">KaTeX integration</td></tr><tr><td align="left"><strong>Mermaid</strong></td><td align="center">✅</td><td align="left">Native rendering</td></tr></tbody></table>
<hr>
<h2>Links</h2>
<ul>
<li><a href="https://tanscp.com/">Internal Link to Home</a></li>
<li><a href="https://google.com">External Link (Google)</a></li>
<li><a href="https://github.com/vercel/next.js">Reference Link</a></li>
</ul>
<hr>
<h2>HTML Components</h2>
<details>
  <summary>Click to expand secret info</summary>
  <div style="padding: 1rem; background: #f0fdf4; border-radius: 0.5rem; color: #166534;">
    This content is inside a raw HTML <code>details</code> tag with inline styles.
  </div>
</details>
<hr>
<h2>Footnotes</h2>
<p>Here is a footnote reference<sup><a href="#user-content-fn-1" id="user-content-fnref-1" data-footnote-ref="" aria-describedby="footnote-label">1</a></sup>. And another one<sup><a href="#user-content-fn-note2" id="user-content-fnref-note2" data-footnote-ref="" aria-describedby="footnote-label">2</a></sup>.</p>
<section data-footnotes="" class="footnotes"><h2 class="sr-only" id="footnote-label">Footnotes</h2>
<ol>
<li id="user-content-fn-1">
<p>This is the first footnote text. <a href="#user-content-fnref-1" data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref">↩</a></p>
</li>
<li id="user-content-fn-note2">
<p>This is a second footnote with <strong>bold</strong> text. <a href="#user-content-fnref-note2" data-footnote-backref="" aria-label="Back to reference 2" class="data-footnote-backref">↩</a></p>
</li>
</ol>
</section>]]></content:encoded>
          <dc:creator><![CDATA[Amytis Team]]></dc:creator>
          <dc:creator><![CDATA[Tester]]></dc:creator>
          <category><![CDATA[features]]></category><category><![CDATA[test]]></category><category><![CDATA[demo]]></category>
        </item>
        <item>
          <title><![CDATA[Mac 菜单栏武装计划：10 款免费开源的宝藏 App 推荐]]></title>
          <link>https://tanscp.com/posts/mac-menu-bar-10-free-open-source-apps/</link>
          <guid isPermaLink="true">https://tanscp.com/posts/mac-menu-bar-10-free-open-source-apps/</guid>
          <pubDate>Sat, 17 Jan 2026 00:00:00 GMT</pubDate>
          <description><![CDATA[在高度数字化的企业级办公环境中，macOS 菜单栏（Menu Bar）的功能早已超越了简单的系统状态展示。从首席信息架构师的视角来看，它是系统功能的延伸触点，是提升专业工作流连续性…]]></description>
          <content:encoded><![CDATA[<p>在高度数字化的企业级办公环境中，macOS 菜单栏（Menu Bar）的功能早已超越了简单的系统状态展示。从首席信息架构师的视角来看，它是系统功能的延伸触点，是提升专业工作流连续性的关键。随着企业对数字化效率与安全合规要求的日益严苛，开源软件（OSS）凭借其透明的代码逻辑、极高的定制化潜力以及显著的成本控制优势，正成为构建现代化工作空间的首选。</p>
<p>本次评估旨在为企业 IT 决策者及高级知识工作者提供一份技术层面的深度审计。我们将通过<strong>安全性、系统资源占用（Overhead）、以及企业级合规性</strong>三个核心维度，对一系列精选的开源菜单栏应用进行拆解分析。我们的目标不仅是推荐工具，更是通过技术底层的逻辑论证，评估这些工具如何融入受控的生产力环境。
!<span class="wikilink wikilink--broken" title="[[unnamed(2).png]] not found">unnamed(2).png</span></p>
<h2>1. 系统资源监测与透明化管理：Stats 的颗粒度分析</h2>
<p>在企业工作站维护中，一个常见的行业痛点是“监控软件反成资源黑洞”——监控工具因其非原生架构导致的高 CPU 占用，往往会干扰到核心业务进程的性能。</p>
<h3>Stats：基于原生 Swift 开发的轻量化监测方案</h3>
<p><strong>Stats</strong> 是一款在 GitHub 上获得超过万次星标（Stars）的标杆级项目。作为采用 <strong>Swift 原生开发</strong>的应用，它在后台运行时的资源消耗极低，确保了数据采集与系统稳定性之间的平衡。</p>
<p>其技术优势主要体现在数据的颗粒度上：</p>
<ul>
<li><strong>硬件级读取：</strong> 完美适配 Apple Silicon (M1/M2/M3) 系列芯片，能够精准读取各性能核心与能效核心的频率、负载及温度波动。</li>
<li><strong>进程级能耗审计：</strong> 提供实时的进程能耗清单，帮助架构师快速识别异常的后台资源占用。</li>
<li><strong>存储与流量监测：</strong> 涵盖磁盘 I/O 状态及网络吞吐量的实时颗粒度显示。</li>
</ul>
<p><strong>深度分析（So What? 层）：</strong> 对于资深系统架构师而言，Stats 提供的不仅是数据，更是<strong>性能释放的决策依据</strong>。在高负载的编译、渲染或大规模数据处理任务中，通过对核心频率和能效比的实时监测，用户可以判断当前硬件状态是否触及热节流（Thermal Throttling）红线。这种颗粒度极细的数据展示，是确保生产力设备处于巅峰状态的基础透明化管理。</p>
<h2>2. 硬件交互的无缝集成：MonitorControl 与音视频增强方案</h2>
<p>多显示器办公场景下，macOS 原生权限缺失常导致第三方显示器无法通过系统快捷键调节亮度和音量。这不仅是体验缺失，更是对工作流连续性的干扰。</p>
<h3>MonitorControl：DDC/CI 协议的底层接管</h3>
<p><strong>MonitorControl</strong> 通过 <strong>DDC/CI (Display Data Channel Command Interface) 协议</strong> 直接与外接显示器硬件通信。</p>
<ul>
<li><strong>架构价值：</strong> 它消除了对第三方显示器厂商闭源驱动的依赖，规避了潜在的“驱动腐烂（Driver Rot）”风险。</li>
<li><strong>智能化调度：</strong> 支持基于鼠标位置的自动检测，确保键盘指令精准作用于当前活跃屏幕，逻辑高度符合交互直觉。</li>
</ul>
<h3>Background Music：虚拟驱动层面的音频分路</h3>
<p>针对 macOS 系统音量控制“一刀切”的局限性，<strong>Background Music</strong> 通过安装虚拟音频驱动，实现了企业级的音量管理。</p>



































<table><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td>维度</td><td>系统全局音量控制 (原生)</td><td>Background Music (虚拟驱动分路)</td></tr><tr><td><strong>控制颗粒度</strong></td><td>仅限系统级全局调节</td><td>针对单一进程/应用独立调节百分比</td></tr><tr><td><strong>交互逻辑</strong></td><td>交互层级深，需进入应用内设置</td><td>菜单栏即点即调，具备调音台逻辑</td></tr><tr><td><strong>项目状态</strong></td><td>系统级稳定</td><td><strong>Public Beta (公测阶段，需关注稳定性)</strong></td></tr><tr><td><strong>自动化逻辑</strong></td><td>无</td><td>支持“自动暂停”逻辑（检测新音频源时自动响应）</td></tr></tbody></table>
<h3>IINA：专业影音协作终端</h3>
<p>在多媒体素材审阅环节，<strong>IINA</strong> 凭借其 <strong>mpv 内核</strong> 的强悍解码能力，支持 4K HDR 原盘及几乎所有行业专业格式。其界面完全遵循 macOS 原生设计语言，支持自动字幕下载与在线流媒体协议，是影音工作流中兼顾性能与美学的最佳实践。</p>
<h2>3. 网络安全防御核心：LuLu 的白名单机制与流量审计</h2>
<p>在企业网络环境中，未经授权的外发连接是隐私泄露与内网渗透的核心入口。对于底层网络权限软件，**“安全源于透明”**是唯一准则。</p>
<h3>LuLu：基于 Network Extension 框架的防火墙</h3>
<p><strong>LuLu</strong> 由前 NASA 及 NSA 安全专家开发。这种深厚的安全背景为其提供了天然的可信供应链背书。</p>
<ul>
<li><strong>技术路径：</strong> 利用 macOS <strong>Network Extension 框架</strong> 接管系统流量，而非老旧的内核扩展（Kext），确保了系统的现代安全性。</li>
<li><strong>白名单策略：</strong> 默认拦截所有出站请求，强制用户对每个联网行为进行即时审计。</li>
</ul>
<p><strong>深度分析（So What? 层）：</strong> LuLu 的实战价值在于其防御“供应链攻击”和“流氓软件隐私上传”的能力。通过源代码开放，它规避了闭源防火墙可能存在的“安全通过模糊（Security through Obscurity）”谬误。对于处理敏感数据、需要防范破解软件异常联网验证的专业环境，LuLu 是构建防御性办公环境的基石。</p>
<h2>4. 视觉规范与专业化工作流增强：Pika 与效率组件</h2>
<p>视觉无障碍（Accessibility）合规性在现代企业的前端开发与品牌设计中，已从“可选项”上升为“合规性法律要求”。</p>
<h3>Pika：无障碍设计的合规引擎</h3>
<p><strong>Pika</strong> 不仅仅是取色器，其核心竞争力在于对 <strong>WCAG (Web Content Accessibility Guidelines) 标准</strong> 的实时支持。</p>
<ul>
<li><strong>对比度审计：</strong> 它能自动计算两个颜色的对比度得分，确保 UI 设计符合无障碍法律标准。</li>
<li><strong>开发者友好：</strong> 支持 HEX, RGB, HSB 以及 iOS 开发专用的 <strong>UIColor</strong> 格式一键转换。</li>
</ul>
<h3>Fluor：输入逻辑的自动化映射</h3>
<p><strong>Fluor</strong> 针对开发者与设计师群体解决了 F1-F12 键位的逻辑冲突。它能根据当前活跃的应用，自动在“媒体模式”与“标准 F 键模式”之间切换。在 IDE 中启用 F11 调试，在浏览器中启用媒体控制，这种<strong>无感切换</strong>大幅度降低了专业人士的认知负担。</p>
<h2>5. 工作环境净化与自动化状态维持</h2>
<p>“数字杂乱（Digital Clutter）”是阻碍高净值知识工作者专注力的主要因素。</p>
<ul>
<li><strong>Hidden Bar：收纳与合规边界。</strong> 针对 MacBook 刘海屏遮挡图标的物理缺陷，Hidden Bar 提供了简洁的收纳逻辑。值得注意的是，该应用已上架 <strong>Mac App Store</strong>，这意味着其通过了 Apple 严格的沙盒化（Sandboxing）安全审核，具备极高的企业准入合规性。</li>
<li><strong>Itsycal：轻量化调度中心。</strong> 不同于重量级的系统日历，Itsycal 专注于“随手可得”的交互。其支持**周数（Week Number）**显示，这对外企或以周为计划单位的企业环境至关重要。同时支持 iCloud、Google 及 Teams 会议链接的直接跳转，极大地缩短了会议接入路径。</li>
<li><strong>KeepingYouAwake：经典的现代复刻。</strong> 作为经典应用 <strong>Caffeine</strong> 的现代开源复刻版，它奉行“如无必要，勿增实体”的极简主义。相比复杂的电源管理套件，它提供了一个纯粹、稳定的系统防休眠开关，确保长耗时任务（如大数据导出或模型训练）的连续性。</li>
</ul>
<h2>6. 结论与部署建议：构建企业级开源软件治理准则</h2>
<p>开源菜单栏工具在 Mac 环境下的应用，已不仅是个人偏好，更是企业提升技术透明度、优化硬件效能的战略手段。</p>
<p><strong>管理建议（Chief IT Architect's Advice）：</strong></p>
<ol>
<li><strong>权限最小化原则：</strong> 此类工具（如 MonitorControl, Fluor）涉及系统辅助功能授权。建议企业 IT 部门通过 MDM（移动设备管理）建立合规白名单，指导用户进行受控授权。</li>
<li><strong>供应链安全审计：</strong> 在部署前，应由安全审计员验证 GitHub 项目的活跃度。<strong>核心指标包括：</strong> 提交记录（Commit）是否在 6 个月内更新、Issue 响应率是否处于活跃状态、以及 GitHub Stars 是否达到社区信任基准（通常建议千星以上）。</li>
<li><strong>风险与冗余管理：</strong> 对于处于 <strong>Public Beta</strong> 阶段的软件（如 Background Music），应仅限于非生产关键型环境使用。通过 Hidden Bar 等工具定期审查菜单栏负载，在提升效率的同时，确保系统架构的纯净度与响应响应速度。</li>
</ol>
<p>通过这种“以开源提升透明，以工具强化效能”的策略，企业可以构建一个既硬核又优雅的数字化办公闭环。</p>
<h2>链接</h2>
<ol>
<li><a href="https://github.com/exelban/stats">Stats（系统监控）</a> 🌟 35.7k</li>
<li><a href="https://github.com/dwarvesf/hidden">Hidden Bar（菜单栏收纳）</a> 🌟 13.2k</li>
<li><a href="https://github.com/sfsam/Itsycal">Itsycal（简约日历）</a> 🌟 3.7k</li>
<li><a href="https://github.com/MonitorControl/MonitorControl">MonitorControl（显示器亮度控制）</a> 🌟 32.1k</li>
<li><a href="https://github.com/objective-see/LuLu">LuLu（出站流量监控）</a> 🌟 11.8k</li>
<li><a href="https://github.com/Pyroh/Fluor">Fluor（Fn 键自动切换）</a> 🌟 2.1k</li>
<li><a href="https://github.com/newmarcel/KeepingYouAwake">KeepingYouAwake（电脑保持清醒）</a> 🌟 6.2k</li>
<li><a href="https://github.com/superhighfives/pika">Pika（屏幕取色）</a> 🌟 2.2k</li>
<li><a href="https://github.com/iina/iina">IINA（视频播放器）</a> 🌟 43.3k</li>
<li><a href="https://github.com/kyleneideck/BackgroundMusic">Background Music（应用音量控制）</a> 🌟 18.4k</li>
</ol>]]></content:encoded>
          <dc:creator><![CDATA[Tanscp]]></dc:creator>
          
        </item>
        <item>
          <title><![CDATA[Nested Image Test]]></title>
          <link>https://tanscp.com/posts/nested-image-test/</link>
          <guid isPermaLink="true">https://tanscp.com/posts/nested-image-test/</guid>
          <pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate>
          <description><![CDATA[Testing nested images in a dedicated 'images' subdirectory.]]></description>
          <content:encoded><![CDATA[<p>This post demonstrates loading an image from an <code>./images/</code> subdirectory.</p>
<p><img src="https://tanscp.com/posts/nested-image-test/images/test.svg" alt="Test Image"></p>
<h2>inline html pic</h2>
<p><strong>测试一下 (Quoted - Recommended):</strong>
<img src="https://tanscp.com/posts/nested-image-test/images/test.svg" width="100" style="display: inline-block;" alt="Quoted Image"></p>
<p><strong>测试一下 (Unquoted - Testing):</strong>
&#x3C;img src=./images/test.svg width="100" style="display: inline-block;" alt="Unquoted Image" /></p>
<p><strong>Simple Unquoted:</strong>
&#x3C;img src=./images/test.svg /></p>
<h3>Note on HTML Attributes</h3>
<p>HTML5 allows omitting quotes for simple values. This should work.</p>]]></content:encoded>
          <dc:creator><![CDATA[Tester]]></dc:creator>
          <category><![CDATA[images]]></category><category><![CDATA[nested]]></category>
        </item>
        <item>
          <title><![CDATA[AI洞察从你的笔记中读出了什么？]]></title>
          <link>https://tanscp.com/posts/what-ai-insight-read-from-your-notes/</link>
          <guid isPermaLink="true">https://tanscp.com/posts/what-ai-insight-read-from-your-notes/</guid>
          <pubDate>Sat, 11 Oct 2025 00:00:00 GMT</pubDate>
          <description><![CDATA[最近 flomo 推出了 AI 洞察，其定位是让 AI 激发我们更深入地思考，帮助我们发现更好的问题。]]></description>
          <content:encoded><![CDATA[<p>最近 flomo 推出了 AI 洞察，其定位是让 AI 激发我们更深入地思考，帮助我们发现更好的问题。</p>
<p>出于好奇，试试这个功能。默认 AI 洞察的时间长度是近 7 天，也可手动选择全部笔记。我的 flomo 记录了 860+ 条笔记，涵盖了生活琐事、自我成长、工作日志和一系列的琐碎，记录杂乱堆积，完全没有系统结构可言，它们像肆意生长的野草，看似蓬勃却毫无章法。正因如此，生长不出网络和链接，也不会迸发出新的想法，缺乏一个清晰的主轴。不像一片森林，更像路边的杂草堆。借助 AI 的语义理解、信息提取优化和生成重构能力，去帮助我们梳理这些破碎的笔记，从荆棘中扒出一些脉络看清自己的变化和所思所想。更重要的是它能从全新的视角出发，揭示一些底层逻辑，打破我们的思维定势，从记录碎片中点燃新的灵感。</p>
<p>以下是 AI 洞察回复的内容：</p>
<blockquote>
<p>1437，从你横跨五年的思考碎片中，我梳理出三条清晰的脉络，帮你照见持续进化的轨迹与可能的突破口。</p>
<p><strong>技术深度与实践智慧的互促成长</strong>是你反复演绎的旋律。从初期的产品功能排查到设计模式的趣味解读，再沉淀为架构设计原则与技术排障心得，背后是不断将方法论融入真实场景的系统化尝试。核心原则是通过解决复杂问题构建可靠认知，但近期线程池分析、搜索系统设计等任务暴露了问题——跨系统关联性的隐性盲区可能制约整体方案的最优性。<strong>当你面对一个技术组件的问题时，如何察觉它在整个业务生态中的涟漪效应？</strong></p>
<p><strong>知识管理的认知升维</strong>体现为从工具使用跃向理念内化。四年前你摘录「写作即思考」「收藏不等于习得」的概念，如今已演化为渐进式加工六层模型的深度实践，强调闭环完整性与个人化应用。驱动这一切的是对知识效能的执着追求，然而「2025-01-15」的逆境觉察笔记悄然点出突破口：追求效率的范式之外，还需留白给非功利性体验带来的意外洞见。<strong>当整理笔记流程自动运行后，有哪些模糊但珍贵的生活直觉未被纳入知识网络？</strong></p>
<p><strong>存在意义的叩问与价值确认</strong>成为逐渐清晰的暗线。从困惑「付出是否收获」到记录平凡生活的幸福感，再借《浪浪山》剖析普通人英雄主义，核心动机始终是寻找生活坐标系的内在稳固性。突破点就藏在最近三条感悟的交汇处：「接受平凡」的坦然、「生活方式形成」的内向探索与「逆境觉察」的韧性三者间，正酝酿着从认知到生命实践的关键整合。<strong>若将「2025-07-18」的 AI 学习热忱转化为生活方式，哪些系统设计思维可迁移到自我建构中？</strong></p>
<p>贯穿始终但可能被轻忽的是：<strong>在方法论精进的背面，保留对「非系统化价值」的敏感度</strong>。那些被架构原则压缩的直觉、未升华为模型的细微体验、技术文档外的生活灵感，恰是创造力的隐秘土壤。</p>
<p>静水深流，你早已在路上。</p>
</blockquote>
<p>整体的生成表现良好，有梳理出我的思考脉络，有给出新的见解，抛出一些系统性的问题。从技术维度 - 知识管理 - 自我存在 3 个脉络去总结我的笔记，着重在于表层的知识关联和总结，而深层次的探讨和行动路径规划是比较缺乏的。但也符合产品本身的定位，给予用户洞察。换句话说，深层次和行动更应该是用户自身的探索，而洞察只是阶段性的总结和开启新路径的引信。有可以尝试通过分析用户的现有知识和兴趣，结合领域专家的建议，为用户提供一些可行的目标和行动步骤。这将鼓励用户在获得洞察的基础上，进一步采取实际行动来实现个人成长。如果能把思考的碎片投射到个人认知坐标系中，生成可交互的思维热力图，会更加直观的展示出用户的聚焦领域和认知荒漠。</p>]]></content:encoded>
          <dc:creator><![CDATA[Tanscp]]></dc:creator>
          
        </item>
        <item>
          <title><![CDATA[什么是真正的自我？它真的存在吗？]]></title>
          <link>https://tanscp.com/posts/what-is-true-self-does-it-exist/</link>
          <guid isPermaLink="true">https://tanscp.com/posts/what-is-true-self-does-it-exist/</guid>
          <pubDate>Sat, 11 Oct 2025 00:00:00 GMT</pubDate>
          <description><![CDATA[或许所谓 '真实自我'，本就是流动的河]]></description>
          <content:encoded><![CDATA[<p>什么是真正的自我？它存在吗？人总是矛盾的，尤其在面对自我认知时。我们常困惑于‘真正的自我’是什么，因为身份和性格在不同情境中表现迥异。这种变化是否意味着真正的自我不存在？或者，自我本就是流动的？
<img src="https://coldbrew-images-1302535887.cos.ap-nanjing.myqcloud.com/pictures/p2923775537.webp" alt="">
一种观点认为，真正的自我是我们内心深处最真实的感受和想法，是不受外界影响的纯粹的自我。按照这种看法，我们的内在核心，是在经历外部世界的纷扰时仍保持不变的那个部分。然而，在实际生活中，我们的自我认知往往受到社会角色、文化背景、以及他人期望的影响，使得真正的自我常常被层层伪装和掩盖。</p>
<p>另一种观点认为，自我是动态变化的，随时间、环境和经验而改变。自我认知是一个持续发展的过程，而非固定不变的实体。人在不同阶段会有不同的优先级和看待世界的方式。这不意味着我们没有真正的自我，而是体现了成长与适应的能力。</p>
<p>我更认同第二种观点。翻看近年笔记，像在反复擦拭一面镜子——有时模糊，偶尔透亮。想改变却找不到意义，行动后陷入怀疑，最终退回原点。这种无力感来自深层牵引：可能是原生家庭的认知局限，也可能是即时满足的诱惑。它们像暗流，拖住脚步。我也在寻找药方：允许情绪流动，不压抑；慢慢接纳自己的脆弱，难过时就痛哭流涕，快乐时就热情洋溢。反求诸己，当挫败和责怪无处可推，才逐渐明白，自己与世界的关系，其实是与自己的关系的投射。
那些深夜的自我拷问，如今看来都是重建的铆钉。拷问自己比质问别人更有效，因为答案早已藏在身体里。不必苛责当下的迷茫，在控制与放手之间找平衡。就像擦镜子的手终会感知：重要的不是擦净每一粒尘埃，而是让光有路可走。</p>
<p>无论哪种观点，重要的是接受自我的复杂性与多样性。矛盾和冲突，其实是自我探索的一部分。通过持续反思与理解，我们能更清楚自己的需求、价值观和目标，从而更好地生活。真正的自我或许不在某个固定形象中，而是在不断探索真实自我的过程中逐渐显现。这种对内在复杂性的接纳，恰恰是《浪浪山小妖怪》（Nobody）想要表达的东西之一。他们都是“无名之辈”，只是芸芸众妖中的普通一员，没有惊天动地的本事，但每一次犹豫后依然选择善良，害怕时依然选择勇敢，这些小小的坚持，反而让他们活出了自己的光芒。
真实的自己不是藏在某个正确答案里，而是藏在每一次诚实的行动中。就像故事里的小妖怪，成佛与否不重要，重要的是他始终在成为“更好的自己”。我们不需要完美，只需要在困惑中继续前行，或许所谓 " 真实自我 "，本就是流动的河。</p>]]></content:encoded>
          <dc:creator><![CDATA[Tanscp]]></dc:creator>
          <category><![CDATA[自我认知]]></category>
        </item>
        <item>
          <title><![CDATA[简单几步，Mac本地部署deepseek]]></title>
          <link>https://tanscp.com/posts/simple-steps-to-deploy-deepseek-locally-on-mac/</link>
          <guid isPermaLink="true">https://tanscp.com/posts/simple-steps-to-deploy-deepseek-locally-on-mac/</guid>
          <pubDate>Fri, 14 Mar 2025 00:00:00 GMT</pubDate>
          <description><![CDATA[简单几步，Mac本地部署deepseek]]></description>
          <content:encoded><![CDATA[<ul>
<li><a href="#%E7%AE%80%E5%8D%95%E5%87%A0%E6%AD%A5%EF%BC%8Cmac%E6%9C%AC%E5%9C%B0%E9%83%A8%E7%BD%B2deepseek">简单几步，Mac本地部署deepseek</a>
<ul>
<li><a href="#%E5%AE%89%E8%A3%85ollama">安装Ollama</a></li>
<li><a href="#%E9%80%89%E6%8B%A9deepseek%E6%A8%A1%E5%9E%8B%E7%89%88%E6%9C%AC">选择deepseek模型版本</a></li>
<li><a href="#%E9%83%A8%E7%BD%B2deepseek">部署deepseek</a></li>
<li><a href="#%E5%A5%97%E4%B8%AA%E5%89%8D%E7%AB%AF%E5%A3%B3%E5%AD%90open-webui">套个前端壳子-Open WebUI</a>
<ul>
<li><a href="#docker%E9%83%A8%E7%BD%B2">docker部署</a></li>
<li><a href="#openwebui%E9%85%8D%E7%BD%AE">OpenWebUI配置</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<p>这里需要用到 2 个工具：</p>
<ul>
<li>Ollama</li>
<li>Open-WebUI</li>
</ul>
<h3>安装 Ollama</h3>
<p>Ollama 是一个用于本地管理和运行大模型的工具，在 <a href="https://ollama.com/">官网</a> 中下载对应的操作系统版本。<img src="https://coldbrew-images-1302535887.cos.ap-nanjing.myqcloud.com/2025/02/08/an-zhuangollama.png" alt="安装ollama">
我安装的是 mac 版本的，mac 配置为：M3 芯片，内存 16G，磁盘空间 512G，macOS Sequoia 15.3。
安装成功后返回官网中找到 Models，选择要安装的大模型版本
<img src="https://coldbrew-images-1302535887.cos.ap-nanjing.myqcloud.com/2025/02/08/ollama-xuan-ze-mo-xing1.png" alt="ollama选择模型-1"></p>
<h3>选择 deepseek 模型版本</h3>
<p>就 deepseek 模型的版本选择要根据自己的电脑配置来，问问 chatGPT，看看它的建议：
<img src="https://coldbrew-images-1302535887.cos.ap-nanjing.myqcloud.com/2025/02/08/an-zhuangdeepseek-mo-xingmo-xing-xuan-ze.png" alt="安装deepseek模型-模型选择">
这些只是电脑硬件上的差异，还得看看实际的使用场景，简单总结：</p>
<ul>
<li>小型模型（1.5B、7B）：适用于轻量级应用、快速原型和小型企业应用，能够满足基本的对话生成、文本处理和问答任务。7B 适用于对话系统、推荐系统、内容生成等中等复杂度的场景。</li>
<li>中型模型（8B、14B）：适用于复杂的对话生成、能够理解上下文、多领域任务、多任务学习，能够提供高质量的自然语言处理服务。例如用于文章生成、内容创作、营销文案等。</li>
<li>大型模型（32B、70B）：主要用于科研开发、大规模决策分析，能够处理更复杂的推理和跨领域任务。例如高度个性化的产品推荐系统、深度语义搜索引擎、大规模金融分析、医疗数据挖掘、法律文本分析等高度专业化的任务等。</li>
<li>超大模型（671B）：顶级 AI 研发和实验应用，适合大规模全球化、多语种的任务，支持最复杂的深度推理和自然语言生成。例如高阶推理、复杂科学模拟、跨领域的 AI 开发等。</li>
</ul>
<p>我选择的部署的是 deepseek-r1</p><div></div>，7B 是从 qwen2 的模型中蒸馏出来的，参数量是 7.62B,自注意力有 28 个头,我的机器应该能跑得起来<p></p>
<h3>部署 deepseek</h3>
<p>在启动台找到终端（或者是第三方的 app 也行，我用的是 Termius）,直接复制以下指令，回车运行。</p>
<pre><code>ollama run deepseek-r1:7b
</code></pre>
<p>静待模型下载部署（下载的过程着实让人着急），部署成功后即可开始与大模型对话
<img src="https://coldbrew-images-1302535887.cos.ap-nanjing.myqcloud.com/2025/02/08/deepseek-an-zhuang-cheng-gong-ce-shi1.png" alt="deepseek安装成功测试-1">
让我们来验证一下模型是否正常运行，问一个经典的比大小例子：9.9 和 9.11 哪个比较大？
<img src="https://coldbrew-images-1302535887.cos.ap-nanjing.myqcloud.com/2025/02/08/17389750477658.jpg" alt=""></p>
<h3>套个前端壳子 -Open WebUI</h3>
<p><strong>不想折腾的可以直接用 Chatbox，<a href="https://chatboxai.app/zh/help-center/connect-chatbox-remote-ollama-service-guide">教程在这</a></strong></p>
<h4>docker 部署</h4>
<p>我的 mac 上安装了 Docker，就用 Docker 部署，不需要配置环境
新建一个 openWebUI 目录，在里面新建 docker-compose.yaml</p>
<pre><code>version: '3.8'

services:
  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "3000:8080"
    extra_hosts:
      - "host.docker.internal:host-gateway"
    volumes:
      - ./data:/app/backend/data
    environment:
      - ENABLE_OPENAI_API=False
      - ENABLE_RAG_WEB_SEARCH=True
      - RAG_WEB_SEARCH_ENGINE="duckduckgo"
      - RAG_WEB_SEARCH_RESULT_COUNT=3
      - RAG_WEB_SEARCH_CONCURRENT_REQUESTS=10
    restart: unless-stopped
</code></pre>
<p>在同级文件夹创建 data 目录，后台启动服务</p>
<pre><code>docker-compose up -d
</code></pre>
<p>docker 开始拉取镜像部署
<img src="https://coldbrew-images-1302535887.cos.ap-nanjing.myqcloud.com/2025/02/08/docker-an-zhuangopenwebui.png" alt="docker安装openWebUI">
部署完成
<img src="https://coldbrew-images-1302535887.cos.ap-nanjing.myqcloud.com/2025/02/08/docker-an-zhuangopenwebui2.png" alt="docker安装openWebUI-2">
也可以直接用 python 安装，在终端或命令行工具中运行以下命令，安装 Open-WebUI：pip install open-webui</p>
<h4>OpenWebUI 配置</h4>
<p>按照提示新建管理员账号</p>
<p>还是用经典的比大小例子：9.9 和 9.11 哪个比较大？
<img src="https://coldbrew-images-1302535887.cos.ap-nanjing.myqcloud.com/2025/02/08/deepseek-an-zhuang-cheng-gong-ce-shi.png" alt="deepseek安装成功测试"></p>]]></content:encoded>
          <dc:creator><![CDATA[Tanscp]]></dc:creator>
          
        </item>
        <item>
          <title><![CDATA[致佳之的一封信-02]]></title>
          <link>https://tanscp.com/a-letter-notes/a-letter-02/</link>
          <guid isPermaLink="true">https://tanscp.com/a-letter-notes/a-letter-02/</guid>
          <pubDate>Thu, 13 Mar 2025 00:00:00 GMT</pubDate>
          <description><![CDATA[见信如晤。我是爸爸，写下这封信的时候你已经是 2 周岁的小大人了。]]></description>
          <content:encoded><![CDATA[<p>见信如晤。我是爸爸，写下这封信的时候你已经是 2 周岁的小大人了。
每每看到你在前面走路像个小大人的样子，就好奇长大后的你会是什么样？从第一次的翻身、爬行、坐立、吃辅食、踉踉跄跄的走路，每一个小小的进步都让我感到无比欣慰和骄傲。从你蹒跚学步到现在小跑起来如此自信，我知道，这只是你冒险旅程的开始。
或许对于你而言，这一切都是理所当然，但对我来说，你每一步的成长都让我深感欣慰。换尿布、病痛、还有你偶尔的小脾气，都是我们生活的组成部分。每当你因为不满而嘟囔嘴巴，我都仿佛看到了一个小小的、充满个性的你在逐渐成型。你有一双会说话的眼睛，每当你含泪看着我时，我都希望自己能是你最大的那份依靠。
现在每个周末都会带你上幼儿园，去认识新的朋友，去感受幼儿园的氛围，这儿将是你人生的起点。之后你的生活，会有属于自己的那一部分，就像《人世间》里歌词写到：草木会发芽，孩子会长大。爸爸不再知晓你的全部。你会交新的朋友，学习许多事情，而爸爸则需要学会放手，给你空间去探索这个世界。
爸爸试着去揣测你的内心，想要得到你给妈妈那般的信任和爱。我明白，是我还不够了解你，你有你自己的小世界。我努力学习，努力去适应这个全新的角色。初为人父是很奇妙的一种感受，自此在爸爸的生命里多了一份牵挂，也渐渐懂得爱是什么。爱是每一次小心翼翼的守护，是每一次不经意间的欣慰。
未来的路很长，爸爸希望自己能够一直陪在你身边，看着你一天天长大。无论你选择怎样的人生道路，我都会全力支持你，成为你最坚强的后盾。
爱你的爸爸！</p>]]></content:encoded>
          <dc:creator><![CDATA[Tanscp]]></dc:creator>
          
        </item>
        <item>
          <title><![CDATA[ISSUE 026｜数独事件]]></title>
          <link>https://tanscp.com/issue/issue-026/</link>
          <guid isPermaLink="true">https://tanscp.com/issue/issue-026/</guid>
          <pubDate>Thu, 13 Mar 2025 00:00:00 GMT</pubDate>
          <description><![CDATA[the sudoku affair.在软件开发中，选择合适的设计方法至关重要，而整体设计方法以其能够提供清晰框架和高效解决方案的优势脱颖而出。以Peter Norvig的数独求解器…]]></description>
          <content:encoded><![CDATA[<p>1、
<a href="https://explaining.software/archive/the-sudoku-affair/">the sudoku affair</a>.在软件开发中，选择合适的设计方法至关重要，而整体设计方法以其能够提供清晰框架和高效解决方案的优势脱颖而出。以Peter Norvig的数独求解器为例，他通过深入分析数独问题的本质，将其视为一个约束满足问题，并设计出一个简洁高效的框架，利用约束传播和递归搜索解决问题。这种方法不仅让代码运行高效，还使得后续的扩展和维护变得轻松。相比之下，Ron Jeffries采用的增量设计方法，由于缺乏对问题本质的深入理解，最终在复杂的数独问题面前显得力不从心。整体设计方法的优势在于，它能够帮助开发者从一开始就抓住问题的核心，避免陷入局部优化的陷阱，从而更高效地解决问题。这种设计方法不仅适用于算法问题，同样适用于大型软件系统的开发，能够显著提升开发效率和代码质量。
这种思维方式在人生的道路上同样适用。很多时候，我们面对复杂的生活问题，也需要先停下来，深入思考问题的本质，而不是盲目地去尝试各种解决方案。只有当我们真正理解了问题的核心，才能找到最有效的解决办法。也提醒我们在人生中要设定明确的目标和规划。就像开发一个大型软件系统一样，人生也需要一个清晰的蓝图。我们需要学会从整体的角度去看待问题，避免被短期的利益所迷惑，而是要专注于实现自己的长期目标。</p>
<p>2、
<a href="https://blog.rootsofprogress.org/why-pessimism-sounds-smart">Why pessimism sounds smart</a>.悲观主义之所以常被认为更具智慧，源于其基于现实的理性分析、对风险的深刻洞察以及与人类心理机制的天然契合。
首先，从认知基础来看，悲观主义立足于已被验证的事实和现实数据，而乐观主义则需要依托于尚未实现的未来突破。这种差异使得悲观主义显得更为审慎和务实。正如经济学家托马斯·索维尔所言："现实不是用来逃避的，而是需要正视的。"悲观主义正是这种现实主义的体现。
其次，在应对不确定性方面，悲观主义倾向于全面评估潜在风险和挑战，这种思维方式往往被认为更具深度和前瞻性。相比之下，乐观主义需要相信未来会出现新的解决方案，这种信念在某种程度上更接近于一种基于希望的预测。心理学研究表明，人类在评估风险时往往存在"损失厌恶"倾向（指的是人们对损失的敏感程度远高于对同等收益的感知。换句话说，人们往往更害怕失去100元，而不是同样程度地渴望获得100元），这使得悲观主义的观点更容易获得认同。
现实中我们往往先看到问题再寻找解决方案。悲观主义更关注当下存在的具体问题，而乐观主义则需要相信尚未发生的突破。这种“问题先行”的规律使得悲观主义同时悲观主义强调资源的有限性和发展面临的制约，而乐观主义则寄希望于未来的技术创新和替代资源的发现。这种分歧使得悲观主义的观点显得更为现实，而乐观主义则可能被视为过于理想化。历史经验表明，尽管许多悲观预测最终被证明过于夸大，但其警示作用仍然具有重要价值。
从进化心理学的角度来看，人类对威胁和风险的敏感性是一种生存机制。这种机制使得悲观主义更容易引发关注和共鸣，而乐观主义则需要克服这种固有的心理倾向。心理学家丹尼尔·卡尼曼的研究表明，人类对负面信息的关注度是正面信息的2-3倍，这进一步解释了悲观主义为何更容易被接受。</p>
<p>3、
<a href="https://mp.weixin.qq.com/s?__biz=MjM5MDc0NTY2OA==&#x26;mid=2651673381&#x26;idx=1&#x26;sn=d8f0bad0b8ce5d551dafddb4dc2ed4ba&#x26;chksm=bdb9e60e8ace6f18083e5921406ed24db225d6d639316ab67beeb519a1aeaff7f0fb47d0f200#rd">杨绛：四十岁以后，最通透的活法，是学会归零</a>
杨绛先生提出的“归零”，是一种深刻的人生智慧，也是一种超然的生活态度，更是一种积极的自我更新。它并非简单地清空过往，而是学会放下情绪、欲望和成就的包袱，让自己以轻盈的姿态重新出发，从容面对生活的起伏。它让人在困境中保持从容，不被物欲和世俗评价所绑架，找到内心真正的平静。只有不断调整自己，才能在纷繁的世界中活得轻松自在，在生活的风雨中保持一颗清醒且豁达的心，找到自己的安稳与淡然。
有人或许会疑惑，要做到“归零”，是否非得远离尘世、遁入空门？其实不然。“归零”并非逃避现实，而是在日常中调整心境，学会不被过去的成败得失束缚，也不被外界的喧嚣所扰。它不是形式上的放下，而是内心的自由。即使身处红尘，依然可以坦然面对一切，不执着于过往，不畏惧未来。但这需要一个过程，可能会经历很长一段时间，也可能到生命的尽头也没有答案。</p>]]></content:encoded>
          <dc:creator><![CDATA[Tanscp]]></dc:creator>
          <category><![CDATA[issue]]></category>
        </item>
        <item>
          <title><![CDATA[ISSUE 025｜你喜欢哪个版本的自己？]]></title>
          <link>https://tanscp.com/issue/issue-025/</link>
          <guid isPermaLink="true">https://tanscp.com/issue/issue-025/</guid>
          <pubDate>Fri, 17 Jan 2025 00:00:00 GMT</pubDate>
          <description><![CDATA[who are you when nobody is watching?.里面有句话：Are you still yourself, or do you become unreco…]]></description>
          <content:encoded><![CDATA[<p>1、
<a href="https://medium.com/@pahal.agrawal/who-are-you-when-nobody-is-watching-93045016bcdf">who are you when nobody is watching?</a>.里面有句话：Are you still yourself, or do you become unrecognizable?  在独处的时候，你还是你自己，还是变得面目全非？哪个自己才是真的自己，对于自己而言你又喜欢哪个版本的自己？这是一个值得深思熟虑的问题，诚实地回答也需要花很多心思
无人时，人们会展现出不同的一面，会释放被压抑的情绪，也可能表现出自私或善良。作者强调，我们是自己隐藏的秘密、未表达的爱和未被注意的善意。怎么理解呢？人本身是一个丰富、复杂且深邃的存在。真正的自我不仅仅是外在展现的行为和话语，而是那些隐藏的秘密、未表达的情感和未被注意的善意共同构成的。当我们独处时，没有外界的目光或评价，人们可以更自由地释放内心的情感和想法，也是一种内心秩序的整理。
正如一位评论者所说：“我希望自己永远能展现内心善良的一面。我知道自己有不好的地方，并非总是成为理想中的自己。就像大多数人一样，我充满了缺点，但我希望，正是这种认识和承认能够引导我去做正确的事。“</p>
<p>2、
<a href="https://news.qq.com/rain/a/20250117A01PNP00">隐形习惯正在主宰你的生活</a>.Lenny反思总结了newsletter10条有用的经验教训，其中有提到：习惯是最好的工作流。找到合适自己的工作模式，再将其内化成一种习惯，习惯的形成与情境-反应关联有关，一旦形成，行为会变得自动化。好的习惯对工作而言，意味着效率、稳定、成长和健康，要关注一些生活中潜移默化形成的隐形习惯。这些习惯往往在我们的生活中潜移默化地形成，影响我们的决策和行为，但我们可能并未察觉到它们的存在。
早起一杯咖啡是我的习惯，如果问“为什么喝咖啡？”，我可能回答：“习惯了”，并没有明确的目的。你可能会有疑问：人不管做什么事情，背后都有一些驱动因素的，都有目的的。但目标之所以看起来像是我们的主要动力，只是因为我们对它们的意识比对习惯的强大力量更敏感。习惯和目标的关系是相辅相成的，如果目标依赖于一时的冲动或短暂的动力，往往难以持续。但通过养成良好的习惯，目标就可以被拆解为日常的“小步骤”，逐渐内化为生活的一部分。目标决定了你想要去的地方，而习惯决定了你能否到达那里。那么我们如何去识别生活中的好的习惯和坏的习惯呢？对此，詹姆斯·克利尔（James Clear）在《原子习惯》（Atomic Habits）中提供了一个简单但有效的方法：“习惯评分表”，列出所有日常习惯，并对这些习惯对生活的积极、消极或中性影响进行评分，通过这样的方式，我们可以更有意识地调整自己的行为。
所谓的长期主义，强调的是累积的力量，而习惯是这种累积的具体体现。小习惯日积月累，可以带来质变的结果。坚持一个小习惯，也许短期内看不到效果，但放在长期的时间维度上，它可能改变你的一生</p>
<p>3、
<a href="https://mp.weixin.qq.com/s/Bkb-eTigXS4lLvoQuBR0RQ?poc_token=HGKpkWejwONydVwTQ-9V7PiNOcvSOHx9iKzLzeTC">郝景芳：我们的孩子错失了什么？ | 二湘空间</a>.最近初中各个年段的期末考成绩陆陆续续都公布了，外甥女刚升入初中，单从成绩单上的数字来看，并不理想。尝试回想一下自己在那个阶段的感受，可能会发现，有刚升入初中的新鲜感，有周遭新鲜事物的诱惑，有懵懵懂懂的荷尔蒙。这个阶段的孩子随着荷尔蒙水平的剧烈变化会影响他们的情绪和行为，变得敏感、冲动和情绪化。同时，自我意识的增强让他们试图摆脱小学时的乖巧形象，渴望确立自己的独立性和身份。这种对独立的追求可能让他们反对父母和权威，表现出叛逆。这个阶段其实挺考验父母的教育观念的，如果是拳头教育，孩子可能会以更剧烈的方式反抗。
郝景芳老师在一次演讲中以《灌篮高手》为例，分析了良性竞争、团队合作、朋友义气和热爱等元素对孩子心理健康的重要性，重点就是呼吁我们家长和教育者更加关注孩子的心理健康。在之前的<a href="https://tanscp.com/world-not-all-dark">ISSUE 014</a>中有提到：在《2022年国民抑郁症蓝皮书》的数据显示，50%的抑郁症患者为在校学生，每五个孩子中就有一个患有抑郁症，其中69.57%的孩子因家庭关系抑郁。那么我们的孩子到底失去了什么？</p>
<blockquote>
<p>从根本上来说，很多孩子缺了最核心的生命力——那种活泼的、热忱的、燃烧的、由内而外的、发光的生命力——生命力，那是活下去的支柱啊。</p>
</blockquote>
<p>今年，人类学家项飙提出了“生命力”这一概念。在一次<a href="https://mp.weixin.qq.com/s/HJohU8oEhJpiNqHdkqihvQ">访谈</a>中，他指出，过去我们通常将“生命力”理解为一种生理层面的能量，比如用它来形容一株植物的茁壮成长，或者一位老人爬山时的精力充沛。然而，我们很少用这个词来描述自己。而如今，越来越多的年轻人开始用“生命力”来表达他们的切身感受，对“生命力”的消耗感和剥夺感越发强烈。
家庭对教育的投入往往带有救赎性质，是对过去生活悬浮状态的一种弥补，而不是对未来的明确期望。简单来说，父母对教育的投入更多是情感上的一种投射，是对过去未竟之事的弥补和对现实不满的回应，而不是单纯为孩子的未来制定的清晰目标。作为父母，我们的角色至关重要，要为孩子提供一个更加支持和理解的环境，帮助孩子们去捕获“生命力”，与孩子保持开放和诚实的沟通，让他们知道他们是可以自由地表达自己的感受和担忧，尽量减少孩子生活中的压力源。</p>]]></content:encoded>
          <dc:creator><![CDATA[Tanscp]]></dc:creator>
          <category><![CDATA[issue]]></category>
        </item>
        <item>
          <title><![CDATA[ISSUE 024｜认知失调]]></title>
          <link>https://tanscp.com/issue/issue-024/</link>
          <guid isPermaLink="true">https://tanscp.com/issue/issue-024/</guid>
          <pubDate>Wed, 15 Jan 2025 00:00:00 GMT</pubDate>
          <description><![CDATA[最近听了故事FM《指望不上丈夫娘家，我中年创业，却成了老赖》，去理解屈小姐努力在抛开“为人母”这一身份之外的领域中寻找自己的价值，这不仅是一种对自我认同的渴望，更是一种在生活无情冲…]]></description>
          <content:encoded><![CDATA[<p>1、
最近听了故事FM《<a href="https://www.xiaoyuzhoufm.com/episode/6783e97b1bf3f0ab2ba814e1">指望不上丈夫娘家，我中年创业，却成了老赖</a>》，去理解屈小姐努力在抛开“为人母”这一身份之外的领域中寻找自己的价值，这不仅是一种对自我认同的渴望，更是一种在生活无情冲击下仍然不放弃的坚韧与执着。虽然她站在一位成功男士的身旁，但这一切背后隐藏着对自我的牺牲。最终，她以“工作关系”来诠释这段婚姻，这种自我说服的方式，需要积攒多大的勇气，恐怕也只有屈小姐自己最清楚。</p>
<p>心理学上有个概念：认知失调。说的是当个体经历痛苦或不公时，他们可能会感受到强烈的不适。为了减少这种不适，受害者可能会通过自我责备来合理化，去调整自己的认知，去接受痛苦的原因认为自己的遭遇是“有原因”的，可能是命运、错误的选择或自身的缺陷。屈小姐的这种“工作关系”，是一种自我合理化的妥协。在很多遭受不公平待遇的故事里，长时间处于这种环境里的受害方可能会将这种不公平合理化，这是自我的否定。我们常说的“受害方有罪论”关注的是外部因素，通过指责他人或受害方来解释事件，但在某些情况下，受害方可能会内化“受害者有罪论”，认为自己应为所遭受的不幸负责，这种情况可能就会引发认知失调。</p>
<p>2、
<a href="https://www.gurwinder.blog/p/why-you-are-probably-an-npc">Why You Are Probably An NPC</a>.初看文章标题，脑海中浮现的场景是密室逃脱游戏中的NPC——那些按照既定规则行动，为玩家提供指引或增添趣味的扮演者。再仔细一想，其实生活中的很多人也像NPC一般，日复一日地按照固定的节奏运行：两点一线地穿梭于家与公司之间，到点起床，走相同的路线，吃差不多的早餐，按时完成8小时的打卡工作。这种一成不变的生活模式，难免让人感觉活得像个NPC。文中提到的NPC分类更加深刻，指的是在某些领域或问题上的看法和思考，像NPC那样固定、机械、缺乏灵活性。这与笔者所探讨的日常生活的按部就班更加深刻，从作者的视角来看，判断自己属于哪种NPC并不容易，因为可能在不同维度上，每个人都多多少少有一些类似的特征。然而，究竟属于哪种NPC并不重要，重要的是如何让自己不那么像一个NPC——无论是在思考方式上，还是日常生活中，都能够跳出固有框架，寻求更多可能性。</p>
<p>3、
<a href="https://www.raptitude.com/2025/01/the-tiniest-mission/">The Tiniest Mission</a>.有时候一些满足感和幸福感会来自一件很小的事，比如你耳机坏了，刚刚好年会中了一副，比如把手机屏幕擦的一尘不染。这些事情可能来自偶然，没什么难易程度，但它们也是组成生活的一部分。无论你的一天是什么样子，生活最终都是由这些无数微小的行动组成的。作者强调了将日常生活中的一些小事情转化为专注的“小任务”所能带来的满足感。这些看似平凡的小事，例如拼图、擦屏幕等，只需将注意力集中在行动本身，而非最终的结果上，便能在忙碌的生活中找到一份宁静与满足，甚至收获“精神上的”愉悦。关键在于以专注的方式对待眼前的每个小行动，专心于当下的任务，关注细节。这种看似微不足道的做法，不仅让人感到轻松且充实，还能在忙碌中创造出一份不匆忙的节奏和全神贯注的体验。</p>]]></content:encoded>
          <dc:creator><![CDATA[Tanscp]]></dc:creator>
          <category><![CDATA[issue]]></category>
        </item>
        <item>
          <title><![CDATA[ISSUE 001｜眼睛懂了，但大脑没懂]]></title>
          <link>https://tanscp.com/issue/issue-001/</link>
          <guid isPermaLink="true">https://tanscp.com/issue/issue-001/</guid>
          <pubDate>Tue, 07 Jan 2025 00:00:00 GMT</pubDate>
          <description><![CDATA[盲目追求在有限的时间里获得大量的知识，本质上是通过“压榨”消化知识的时间来实现的，借用现在的流行语来说，就是“眼睛懂了，但大脑没懂”。]]></description>
          <content:encoded><![CDATA[<ul>
<li>盲目追求在有限的时间里获得大量的知识，本质上是通过“压榨”消化知识的时间来实现的，借用现在的流行语来说，就是“眼睛懂了，但大脑没懂”。 (<a href="https://mp.weixin.qq.com/s?__biz=Mzg5NDg2NjMyMg==&#x26;mid=2247645732&#x26;idx=1&#x26;sn=6a899a99a66d035ff9f536fdb94370a9&#x26;source=41#wechat_redirect">View Highlight</a>)</li>
</ul>
<blockquote>
<p>*Note</p><div></div>，会出现当时懂了，但大脑没懂。因为没有实际的经验做支撑和拆解，是很容易忘记的。<p></p>
</blockquote>
<ul>
<li>
<p>美好回忆总是轻易被潮水带走，而所有的尴尬时刻，都像被篆刻在石碑上一样难以忘怀。</p>
<p>也许是出于求生的本能，我们无法停止焦虑和自我批评，它们总会不经允许，随意出现。试图摆脱负面情绪的抗争都是徒劳的。所以，我喜欢这个“ <a href="https://substack.com/redirect/47025861-afba-454d-afe9-5b8f8aed9493?j=eyJ1IjoiMjBsbWxrIn0.yOuaAYKWbMVXyqHQCvMQnS9WmVYBbxcyVMwZtV6vrg8">不款待你的（负面）思绪</a> ”的方法：</p>
</li>
</ul>
<blockquote>
<p>"思想并不倾向于敲门，它们只是出现在房子里，"迪罗写道。" <strong>主人的工作不是堵住门，而是不端茶倒水。</strong> " 也许我不能完全离开负面想法，但我可以抵制放纵它们的诱惑，不邀请它们在沙发上一连几个小时，喝着美味的热饮，吃着慷慨的蛋糕片。(我想起了伊丽莎白-吉尔伯特 <strong>关于恐惧在创造性工作中的地位的立场：你不能把它赶出汽车，但你需要不让它靠近驾驶座。</strong> ） 用这种和蔼可亲的宽容来对待不受欢迎的想法是很有道理的： <strong>拒绝与它们争吵，同时坚定地表示如果它们坚持要留下来，它们会在走廊里等着，而你则继续做重要的事情。</strong></p>
</blockquote>
<blockquote>
<p>你无法阻挡你的负面情绪，但不要浪费精力与之斗争，让它们等在大厅里，而你去做你自己的事情。如果没有事情做的时候怎么办（比如睡前）？我的做法是，如果一定要想点什么，就去想那些很困难，但对我们更有价值的问题。 (<a href="https://read.readwise.io/read/01gs7sgc111tgnfsv3vkdeafar">View Highlight</a>)</p>
</blockquote>
<pre><code>- *Note: 我无法改变世界，但可以改变自己，可以改变面对事物的情绪*
</code></pre>
<ul>
<li>因为每个人都必然是利己的，只不过有些人受制于眼界和认知的不足，导致他们无法看得更远，无法做出更加明智的决策，所以只能一直在重复着低效的努力。<a href="https://mp.weixin.qq.com/s/y35S650uRKkfCb7gb0j1ew">微信公众平台</a></li>
</ul>
<blockquote>
<p><em>Note：要拓宽自己的边界，善于总结，勤于反思。相同的一件事尝试从不同的角度和维度去分析拆解</em></p>
</blockquote>
<ul>
<li>“有时候，我们活得很累，并非生活过于刻薄，而是我们太容易被外界的氛围所感染，被他人的情绪所左右。” (<a href="https://instapaper.com/read/1287266453/12490164">View Highlight</a>)</li>
</ul>
<blockquote>
<p>*Note：这种容易被外界影响的欲望是浅度的，基于模仿性，可能也是爱慕虚荣，也可能是不想被差异化。有些东西并不是自己的刚需，只是一类群体或他人用来自我标高的工具罢了。这种比较和影响大多数来自于周围的同学和朋友，他们是离你最近的比较点</p>
</blockquote>
<ul>
<li>一个人想要依照自己的价值去做决定，就必须要承担这样心理的压力，而你进入到现成的社会结构当中，绝大部分的决定是由社会集体组织先大幅地减少了其中的选项，甚至有时候减少到，在你的心目当中，根本不需要反应——你以为这就是唯一的方法或者是唯一的选项 (<a href="https://read.readwise.io/read/01gpgn4ntvdwjdjs7g88q7ax1w">View Highlight</a>)</li>
</ul>
<blockquote>
<p><em>Note：社会造就并持续影响着你的价值观，你的选择背后定有一种价值观念在主导你如何选择</em></p>
</blockquote>]]></content:encoded>
          <dc:creator><![CDATA[Tanscp]]></dc:creator>
          <category><![CDATA[issue]]></category>
        </item>
        <item>
          <title><![CDATA[ISSUE 002｜刻意练习]]></title>
          <link>https://tanscp.com/issue/issue-002/</link>
          <guid isPermaLink="true">https://tanscp.com/issue/issue-002/</guid>
          <pubDate>Tue, 07 Jan 2025 00:00:00 GMT</pubDate>
          <description><![CDATA[电灯结束了事物的自然秩序。它重新定义了午夜对于随后几代人的意义。夜晚的人工光线，即使是强度或勒克斯（照度单位）很小的光线，也会欺骗你的视交叉上核，让你相信太阳尚未落山。限制褪黑激素…]]></description>
          <content:encoded><![CDATA[<ul>
<li>电灯结束了事物的自然秩序。它重新定义了午夜对于随后几代人的意义。夜晚的人工光线，即使是强度或勒克斯（照度单位）很小的光线，也会欺骗你的视交叉上核，让你相信太阳尚未落山。限制褪黑激素释放的刹车踏板，本来应该在黄昏的时候松开，却在电灯胁迫下仍然在你的大脑中强行踩下。<a href="https://mp.weixin.qq.com/s?__biz=MzA4NzAxMjQyMg==&#x26;mid=2650166240&#x26;idx=1&#x26;sn=36ec74bc716dfb7bd259bc48e4727c00&#x26;chksm=883d16c9bf4a9fdf1de0dc64935a2aa2efe109a74136b3a8ee19c567dd370b1a1efae4f7c1d7#rd">微信公众平台</a></li>
</ul>
<blockquote>
<p><em>Note：有个人类幼崽之后，更加关注睡眠的重要性。一是感受神经系统被人为惊醒后暴发性的活动所引起的心率不齐和昏昏沉沉；二是培养婴儿睡眠规律，尽量不开夜灯或降低夜灯的亮度</em></p>
</blockquote>
<ul>
<li>write about things you've learned, and write about things you've built! <a href="https://simonwillison.net/2022/Nov/6/what-to-blog-about/">What to blog about</a></li>
</ul>
<blockquote>
<p><em>Note：回答和肯定了一直以来困扰自己的问题：我需要博客吗？开始写博客，如果不知道写什么，就写你学到的东西，以及写下你创造或建立的东西。这是之前写的文章：<a href="https://www.tanscp.com/%e4%b8%ba%e4%bb%80%e4%b9%88%e4%bd%a0%e9%9c%80%e8%a6%81%e4%b8%80%e4%b8%aa%e4%b8%aa%e4%ba%ba%e5%8d%9a%e5%ae%a2%ef%bc%9f/">为什么你需要一个个人博客？ - tanscp</a>，讨论过该话题。</em></p>
</blockquote>
<ul>
<li>从自己获得当然不是要自夸多么天之骄子，相反的我总是在反思——因为反思自己的不足所以知道有什么需要提升，而在学习和了解的过程中总是能发现新奇、有趣的事物，而这便也成了我被很多人羡慕「还有什么是虎哥不会」的灵感。所以少一些批判和自以为是，对于自己不理解、不赞同的人、事、物，不要总想着要去表达观点分辨对错争论胜负，想想自己为什么要这么觉得，这么觉得是否正确，对了不要骄傲，错了也不必就得罚跪道歉而试图逃避，重要的是它所延展开来的点滴都是平凡人生但仰首可见的明亮星星。<a href="https://sspai.com/prime/story/zhuanglesha-microhoo">装了啥 | 少数派编辑、数字生活达人 Microhoo 装了啥 ｜ 少数派会员 π+Prime</a></li>
</ul>
<blockquote>
<p><em>Note：多反思自己，破除茧房</em></p>
</blockquote>
<ul>
<li>刻意练习是指一种特殊类型的练习，是有目的、有计划的。常规练习可能包括无意识的重复，而刻意练习则需要集中注意力，并以提高成绩为具体目标。 (<a href="https://read.readwise.io/read/01gnxzwx9xfh75h2axq9p18twc">View Highlight</a>)*</li>
</ul>
<blockquote>
<p>*Note：我们都需要刻意练习很多的第一次。最近我在刻意练习给波妞换纸尿裤、哄她睡觉、帮她按摩打嗝，都是初为父母，有时候的手足无措在正常不过。学习控制自己，不对波妞发脾气，毕竟为了长大她也承受了很多。做的不好之处，还请多多包涵。</p>
</blockquote>
<ul>
<li>自己曾经的优点，可能反而成为下一步成长道路上的绊脚石。认识到每种能力都有用处与局限，能够在恰当时间和场合去运用这种能力，在另一些时间和场合刻意限制使用这种能力，这是比拥有及炫耀“一技之长”更难更艰辛的道路。而这一切的取舍，都是为了一个宏大的目标，为了自身的长远发展。有句谚语叫“善游者溺，善骑者堕”，说的是做自己擅长的事，往往会掉以轻心阴沟翻船，其实它还有更深一层的意义——有一技之长的人，稍不小心，就可能变成自己技术的奴隶 <a href="https://mp.weixin.qq.com/s?__biz=MzIxMzkwNjM2NQ==&#x26;mid=2247511689&#x26;idx=1&#x26;sn=99b3108b0e61e7fd115081bf8985fcff&#x26;chksm=97ad485ba0dac14ddea41c6c378563ad2dfaa2413681eb2e99a7d291b5012d70c163ec7a7df1#rd%23%23%25E8%2587%25AA%25E5%25B7%25B1%25E6%259B%25BE%25E7%25BB%258F%25E7%259A%2584%25E4%25BC%2598%25E7%2582%25B9%25EF%25BC%258C%25E5%258F%25AF%25E8%2583%25BD%25E5%258F%258D%25E8%2580%258C%25E6%2588%2590%25E4%25B8%25BA%25E4%25B8%258B%25E4%25B8%2580%25E6%25AD%25A5%25E6%2588%2590%25E9%2595%25BF%25E9%2581%2593%25E8%25B7%25AF%25E4%25B8%258A%25E7%259A%2584%25E7%25BB%258A%25E8%2584%259A%25E7%259F%25B3%25E3%2580%2582%25E8%25AE%25A4%25E8%25AF%2586%25E5%2588%25B0%25E6%25AF%258F%25E7%25A7%258D%25E8%2583%25BD%25E5%258A%259B%25E9%2583%25BD%25E6%259C%2589%25E7%2594%25A8%25E5%25A4%2584%25E4%25B8%258E%25E5%25B1%2580%25E9%2599%2590%25EF%25BC%258C%25E8%2583%25BD%25E5%25A4%259F%25E5%259C%25A8%25E6%2581%25B0%25E5%25BD%2593%25E6%2597%25B6%25E9%2597%25B4%25E5%2592%258C%25E5%259C%25BA%25E5%2590%2588%25E5%258E%25BB%25E8%25BF%2590%25E7%2594%25A8%25E8%25BF%2599%25E7%25A7%258D%25E8%2583%25BD%25E5%258A%259B%25EF%25BC%258C%25E5%259C%25A8%25E5%258F%25A6%25E4%25B8%2580%25E4%25BA%259B%25E6%2597%25B6%25E9%2597%25B4%25E5%2592%258C%25E5%259C%25BA%25E5%2590%2588%25E5%2588%25BB%25E6%2584%258F%25E9%2599%2590%25E5%2588%25B6%25E4%25BD%25BF%25E7%2594%25A8%25E8%25BF%2599%25E7%25A7%258D%25E8%2583%25BD%25E5%258A%259B%25EF%25BC%258C%25E8%25BF%2599%25E6%2598%25AF%25E6%25AF%2594%25E6%258B%25A5%25E6%259C%2589%25E5%258F%258A%25E7%2582%25AB%25E8%2580%2580%25E2%2580%259C%25E4%25B8%2580%25E6%258A%2580%25E4%25B9%258B%25E9%2595%25BF%25E2%2580%259D%25E6%259B%25B4%25E9%259A%25BE%25E6%259B%25B4%25E8%2589%25B0%25E8%25BE%259B%25E7%259A%2584%25E9%2581%2593%25E8%25B7%25AF%25E3%2580%2582%25E8%2580%258C%25E8%25BF%2599%25E4%25B8%2580%25E5%2588%2587%25E7%259A%2584%25E5%258F%2596%25E8%2588%258D%25EF%25BC%258C%25E9%2583%25BD%25E6%2598%25AF%25E4%25B8%25BA%25E4%25BA%2586%25E4%25B8%2580%25E4%25B8%25AA%25E5%25AE%258F%25E5%25A4%25A7%25E7%259A%2584%25E7%259B%25AE%25E6%25A0%2587%25EF%25BC%258C%25E4%25B8%25BA%25E4%25BA%2586%25E8%2587%25AA%25E8%25BA%25AB%25E7%259A%2584%25E9%2595%25BF%25E8%25BF%259C%25E5%258F%2591%25E5%25B1%2595%25E3%2580%2582%25E6%259C%2589%25E5%258F%25A5%25E8%25B0%259A%25E8%25AF%25AD%25E5%258F%25AB%25E2%2580%259C%25E5%2596%2584%25E6%25B8%25B8%25E8%2580%2585%25E6%25BA%25BA%25EF%25BC%258C%25E5%2596%2584%25E9%25AA%2591%25E8%2580%2585%25E5%25A0%2595%25E2%2580%259D%25EF%25BC%258C%25E8%25AF%25B4%25E7%259A%2584%25E6%2598%25AF%25E5%2581%259A%25E8%2587%25AA%25E5%25B7%25B1%25E6%2593%2585%25E9%2595%25BF%25E7%259A%2584%25E4%25BA%258B%25EF%25BC%258C%25E5%25BE%2580%25E5%25BE%2580%25E4%25BC%259A%25E6%258E%2589%25E4%25BB%25A5%25E8%25BD%25BB%25E5%25BF%2583%25E9%2598%25B4%25E6%25B2%259F%25E7%25BF%25BB%25E8%2588%25B9%25EF%25BC%258C%25E5%2585%25B6%25E5%25AE%259E%25E5%25AE%2583%25E8%25BF%2598%25E6%259C%2589%25E6%259B%25B4%25E6%25B7%25B1%25E4%25B8%2580%25E5%25B1%2582%25E7%259A%2584%25E6%2584%258F%25E4%25B9%2589%25E2%2580%2594%25E2%2580%2594%25E6%259C%2589%25E4%25B8%2580%25E6%258A%2580%25E4%25B9%258B%25E9%2595%25BF%25E7%259A%2584%25E4%25BA%25BA%25EF%25BC%258C%25E7%25A8%258D%25E4%25B8%258D%25E5%25B0%258F%25E5%25BF%2583%25EF%25BC%258C%25E5%25B0%25B1%25E5%258F%25AF%25E8%2583%25BD%25E5%258F%2598%25E6%2588%2590%25E8%2587%25AA%25E5%25B7%25B1%25E6%258A%2580%25E6%259C%25AF%25E7%259A%2584%25E5%25A5%25B4%25E9%259A%25B6%25E3%2580%2582">微信公众平台</a></li>
</ul>
<blockquote>
<p><em>Note：了解自己比了解别人更重要。但能真正了解自己的人更是屈指可数，不了解才是普通人的常态。及时的自我肯定，赞赏和鼓励，才是一种好的人生态度。</em></p>
</blockquote>]]></content:encoded>
          <dc:creator><![CDATA[Tanscp]]></dc:creator>
          <category><![CDATA[issue]]></category>
        </item>
  </channel>
</rss>