<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>斯达特二普</title>
    <description>一些路上的记录吧
</description>
    <link>http://smallzhan.github.io/</link>
    <atom:link href="http://smallzhan.github.io/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Wed, 07 Oct 2026 10:01:15 +0000</pubDate>
    <lastBuildDate>Wed, 07 Oct 2026 10:01:15 +0000</lastBuildDate>
    <generator>Jekyll v4.4.1</generator>
    
      <item>
        <title></title>
        <description>&lt;p&gt;上周末，也就是 3 月 22 日，我在合肥又参加了一次马拉松，算起来是第二次跑，成绩比第一次快了一分钟，当天有点头昏昏沉沉的，因此一开始没敢快速跑。一直保持配速 6 分钟左右，到了第 4 公里才追上 2:15 的兔子，然后超过并保持。关注持续心率，都在 170 上下，平均心率在170，上次是175左右，降了一点。中途有一段时间想加速，一度冲到180，然后马上就慢下来了，后来就好了。奇怪的是，到最后一两公里的时候，心率突然降到了160多。因此我加了一些速，最后冲过去的时候感觉，似乎这个手表出了点问题。不过也很快就缓过来了。我觉得和第一次比有一个进步，就是在15~16公里的时候，基本上可以保持跟前面一样的匀速，没有怎么下降，从体能上完全能跟上了。第一次可能是前面冲的有点快，15~16公里的时候，速度怎么也提不上去，稍微提一下，心率就狂飙。然后拿到了一个漂亮的奖牌，坐着地铁回家了，过起了下午的悠闲的野营的生活。&lt;/p&gt;

&lt;p&gt;3月24号，张雪峰突然上了热搜。这个人平常也了解一点，主要是给各种高考的填志愿。我觉得他属于那种敢说的，讲的也是相对比较实在的一些东西。当然因为这个社会观念鲜明的人总是会有。那种特别赞同或特别讨厌，但我对他并没有特别的观感，只是一个敢于表达观点的人吧。他上热搜主要是因为猝死。猝死的情景是在跑步机上运动的时候，然后突发不适，送到医院就没救过来。然后逐渐的过程就被扒出来，说他虽然是跑步引发的猝死，但问题主要不在跑步，而是长期的熬夜，睡眠少。身体早就透支了，心脏出现了一些问题。而一个细节是，他本来报名参加了3月22号的无锡马拉松，但是因为体检心脏彩超不达标，组委会把他的资格取消了。但是他并没有休息，而是自己在家里跑步，最终引发了这个悲剧。&lt;/p&gt;

&lt;p&gt;然后奇怪的是，网上出现了大面积的文章，讲跑马拉松就是装逼，就是自己跟自己过不去。然后跑步并不是一个很好的运动，应该躺着之类的。我觉得这些都非常的极端，但可能好多人只是为了相关的流量，他并不知道自己讲的是什么。也有部分中立的相对理性派的说法是，本身跑步有氧是一个比较好的运动，但是那是在身体吃得消的情况下。朝九晚五加上跑步，那是生活。但是九九六甚至零零六，然后长期睡眠不足的情况下，还指望着用跑步来 保持运动和活力，那那就是找死。还有一些人把这个也归因于当初的疫苗，就是在疫苗的情况下，让大家的免疫力出现了非常的低下。然后导致各种各样的问题，特别是心脏相关的问题。网上曾有报道说，有些阳了的人刚痊愈就去做高强度运动，然后得了心肌炎，很快就去世了。当然不否认跟这个有关系，然而这也并不能拿来作为攻击张雪峰的理由。说他是疫苗的支持者，为了自己支持去打了7针疫苗，所以，该死。&lt;/p&gt;

&lt;p&gt;对于跑步这个事情，只有本身在跑的人才会知道真实的感受。也可以说它就是一种生活，既然是生活，那当然有张有弛。在条件允许的情况下，追求跑得快和追求强度，其实也本身并不是矛盾的，只是咱们不能盲目的去追求。想起之前 室友曾问我说要配一个跑步机，这样在下雪天的时候就可以在室内跑步了。我反问讲，下雪的时候我为什么要跑步？我跑步只是作为一种 锻炼休闲的方式，并不是以此来作为自虐，或者是那种极端的自律，以此来证明什么。其实完全不必要，想跑爱跑那就跑就是了，不想跑那就休息呗。&lt;/p&gt;

&lt;p&gt;不过也有一些研究的文章讲了怎么样利用科学的跑步来锻炼心肺功能，提出了一个公式，就是220减去年龄，然后用这个数字 乘以60%~80%，这就是最佳的运动心率区间。超过80%，那就是高强度运动了，不能长期的坚持，长期坚持反而对心脏有害。由此观之，我的路可能还很长。随随便便跑跑心率就170、180，这都已经到了100%了，当然不能长久。不过考虑到我跑步的频率，我觉得似乎这也不会有什么太大影响。反而从最近的体检报告来看，三高中的高血脂倾向好了，指标正常了，我觉得应该是这段时间运动的一些功劳。&lt;/p&gt;

&lt;p&gt;我想，接下来可以把跑步的目标定为，找到合适的心率和速度区间，并以此坚持吧。对于跑步来说，只是有这么一段时间不想继续坐着盯着电脑，保持这种怠惰的情况，而是用这段时间去运动运动，还能获得一些有益的效果，何乐而不为呢？&lt;/p&gt;
</description>
        <pubDate>Wed, 07 Oct 2026 10:01:15 +0000</pubDate>
        <link>http://smallzhan.github.io/2026/10/07/2026-03-29-T182715-%E5%86%8D%E8%B0%88%E8%B7%91%E6%AD%A5__life.html</link>
        <guid isPermaLink="true">http://smallzhan.github.io/2026/10/07/2026-03-29-T182715-%E5%86%8D%E8%B0%88%E8%B7%91%E6%AD%A5__life.html</guid>
        
        
      </item>
    
      <item>
        <title>从哪里来一直是一个好问题</title>
        <description>&lt;h1 id=&quot;id-如何理解一个问题&quot;&gt;如何理解一个问题&lt;/h1&gt;

&lt;p&gt;在 ChatGPT 出来后，那篇 Attention 的文章就一直非常火，也很早就读了，原理和做法倒是懂了，但一直有个疑问，就这东西是人们如何想出来的？为什么 attention 是这样的？因为并没有 NLP 以及机器学习方面的背景，所以一直比较好奇。最近看到一篇文章，一下子就理解，attention 并不是天上下来的，他有自己的演化路径，而顺着这个演化路径，相关想法也是非常直观的。&lt;/p&gt;

&lt;p&gt;话要从 GPT 类模型解决的问题说起，也就是他们的主要原理，都是从一段文字预测下一个字（本来是 token，简单点就算做字吧）。第一个非常直观的方法就是 HMM 这一套，通过无数的预料来做统计，然后根据统计的概率还选择词，例如“马路上过去了一辆…”，大部分人都会填“车”而不是“船”。这个统计可以是分段的词，通常叫做 N-gram, N 就表示前 N 个字，最简但的就是看前面一个字，预测下一个，当然这样非常不准，因为各种语料五花八门。但如果 N 太多，则计算量又非常大，早期一般是 3-gram, 4-gram 这样。&lt;/p&gt;

&lt;p&gt;这时，第二个问题出现了，出现同义词怎么办？例如“马路上过去了一辆…”， 车固然是可以，如果下面是“轿车”，“拖拉机”等呢？所以还需要知道一些雷士同义词，这时候的解决方案是“词向量”，即将一个词表达为一个向量，相近的向量，计算一个余弦角度，越相似则角度越小。词向量也需要通过训练构建，通过统计手段，不论是做前馈网络还是其他，将相似的概念放到一起。&lt;/p&gt;

&lt;p&gt;到这里，似乎问题完美解决了，或起码都有方案了。但新问题来了，对于 N-gram，一旦确定 N， 则网络构成基本就定了，例如都是根据 5 个字预测后一个，没办法根据 6 个字预测后一个，但人们可不是这么说话的，因此 RNN 以及 LTSM 类方法又出来了，主要是记忆之前的信息，RNN 是增加一个隐藏层，LTSM 则是将前面的信息做一个压缩，也是通过隐藏状态来传递和理解。不仅是隐藏状态传递，该把什么放到隐藏状态中去，也可以通过学习得到。&lt;/p&gt;

&lt;p&gt;LTSM 接着优化，就到 Transformer 了，主要是效率问题，当对话长了之后，看远处的信息需要层层传递，然后计算顺序必须一个字一个字来。所以一个显然的想法是，有没有一个办法能够并行的计算所有词的信息，并且保持自相关特性，这个思路过去，很显然就是 Transformer 了，至于 QKV 矩阵，位置编码等细节，都是在这个思想上的技术处理。&lt;/p&gt;

&lt;p&gt;顺便说一句，之前有个测试 AI 的 winograd 指代消解测试，当时还在学校时，有一次审稿见到了这个挑战，作者呼吁用其来替代图灵测试。印象中似乎前面的模型对这个挑战处理起来都非常不好，直到 Transformer 架构的出现，GPT 基本上攻克了这个问题。&lt;/p&gt;

&lt;h1 id=&quot;id-原因往往不在结果附近&quot;&gt;原因往往不在结果附近&lt;/h1&gt;

&lt;p&gt;从 Transformer 的演变，很容易就理解了这个结构具体是如何出现的，各个原理是什么。还有很多其他生活中的问题，也需要了解历史，经济，文化等变迁才能明白。&lt;/p&gt;

&lt;p&gt;国庆假期去了香港澳门，发现可以使用微信来乘坐当地公交车，比较有意思的是他们有个“同行码”，一个乘车码可以添加三个同行码，为同行人刷吗乘车，能很方便的解决同行儿童，老人的乘车问题。但奇怪的是内地就没有，同样是支付宝和微信，国内也有老人小孩这些没支付宝账号的人群，结果就没这个码。在 AI 上咨询过后，背后也有很多有意思的细节，其一对港澳来说，只是单一城市的接入，并且这两个城市本身就是旅游大城，从游客出发，只要交通部门政策支持就很容易做到，而大陆城市众多，标准不同，各自分散，接码都很麻烦，更别说同行；其次，也有历史原因，大陆基本上在 2018 年就爆发二维码扫描的乘车系统，那时设计上就是为了单人设计的，甚至逐步需要实名制，需要绑定，校验等等，再加上之前疫情时候一人一码都深入人心了，在此基础上修改成本巨大，涉及到很多系统性工作。而港澳基本上是2020年之后才开始设计这套系统，加上旅游逻辑等，从头开始专门做，设计和是现成本低很多，所以就导致了现在的结果。&lt;/p&gt;

&lt;p&gt;其他类似的问题也包括，港澳的老式门头，双层巴士等，都有很多历史，经济，文化的原因，偶尔想想这些也非常有意思。&lt;/p&gt;

&lt;p&gt;很多问题都是，在当下看似乎非常“蠢”，但放到特定的历史进程中去，会发现是很多成本和妥协的产物，包括之前提到的中国和美国的卡车，尖头和平头的差异等等。&lt;/p&gt;

&lt;p&gt;最近又看到一本有意思的书，通过地理来理解历史，例如看射雕时候的疑惑，为什么那时襄阳城那么重要？有零星了解一些情况，但比较干巴，结合地图来理解就更加顺利了。等读完来写笔记吧。&lt;/p&gt;
</description>
        <pubDate>Wed, 07 Oct 2026 00:00:00 +0000</pubDate>
        <link>http://smallzhan.github.io/reading/2026/10/07/T165050-%E4%BB%8E%E5%93%AA%E9%87%8C%E6%9D%A5%E4%B8%80%E7%9B%B4%E6%98%AF%E4%B8%80%E4%B8%AA%E5%A5%BD%E9%97%AE%E9%A2%98__reading.html</link>
        <guid isPermaLink="true">http://smallzhan.github.io/reading/2026/10/07/T165050-%E4%BB%8E%E5%93%AA%E9%87%8C%E6%9D%A5%E4%B8%80%E7%9B%B4%E6%98%AF%E4%B8%80%E4%B8%AA%E5%A5%BD%E9%97%AE%E9%A2%98__reading.html</guid>
        
        <category>reading</category>
        
        
        <category>reading</category>
        
      </item>
    
      <item>
        <title>买椟还珠的智慧</title>
        <description>&lt;h1 id=&quot;id-买椟还珠的故事&quot;&gt;买椟还珠的故事&lt;/h1&gt;

&lt;p&gt;故事从小课文就学过，这次再看，竟然出自《韩非子》而不是记忆中的《战国策》，全文如下：&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;楚人有卖其珠于郑者，为木兰之椟，薰以桂椒，缀以珠玉，饰以玫瑰，辑以翡翠。郑人买其椟而还其珠。此可谓善卖椟矣，未可谓善鬻珠也。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;一般来讲，这个故事主要用于讽刺，嘲笑郑国人舍本逐末，或搞不清主次。但现在看来，最后一句却有点意思，“此可谓善卖椟矣，未可谓善鬻珠也。”琢磨着，似乎是在赞扬这个楚人，反过来讲，说不准，这个楚人没什么好珠子，所以才在包装上下功夫，人家主要就是靠卖盒子。&lt;/p&gt;

&lt;p&gt;这其实是一种优秀的商业模式，一般来讲，大家买东西时会买其功用，但在这个所谓“产能过剩”的时代，其实更多买的是一种情绪价值，不论是被承认的虚荣，或是被赞扬的优越。产品包装是产品非常重要的组成部分，刚需的东西其实不多，无非衣食住行，包装难看的东西，除非特别需要，否则真是很难入眼的。所以从这个角度来讲，楚人颇有一番智慧。&lt;/p&gt;

&lt;h1 id=&quot;id-佛与空的争辩&quot;&gt;佛与空的争辩&lt;/h1&gt;

&lt;p&gt;最近看小说，看到这么一段：有僧人问道，&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;佛说四大皆空，所见一切皆空……, 既然一切皆空，那这寺庙是空，佛像是空，经书是空，你我这些僧人也是空……, 既然都是空，那为什么要花百万灵石建寺庙，造纯金佛像，念千万遍经书？我们费这么大功夫，守着一堆虚妄，到底实在修佛，还是再修执念？&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;而大多数主持等答不上来，最后答上来有一段非常有意思；&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;空是药，有是糖衣，糖衣不是药，但没有糖衣，众生连药都不肯碰…… 众生贪金，你便用纯金塑佛，告诉他，‘拜这金佛，可得福报’, 他才愿意弯腰；众生慕强，你便建百丈高塔、碗里佛国，告诉他‘入我佛门，可得庇护’，他才愿意进门…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;众生皆执念，要打破只能从最低级的地方起，从他能理解的方面开始，而不是一上来就将大道理。不禁想到，中国农村，只要发鸡蛋，就能信基督教。&lt;/p&gt;

&lt;p&gt;接下来更是将这个问答提升了高度：&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;僧人守寺庙，就像摆渡人守渡船。船不是岸，但要渡人过河，就不能没有船；寺庙佛像不是佛，但要渡众生出苦海，就不能没有寺庙佛像。真正的修行人，心里清楚船是空的，寺是空的，佛像是空的，但不妨碍他守着这条船，度一个有一个过河的人。他守的不是船，是渡人的缘分；他拜的不是像，是众生的佛性。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;至此，总算对一些形式化的东西有了理解，一些事务如果没有一个形式，可能人们连看都不会正眼看。广告也是形式，没有广告可能很多好产品都无人问津，不禁想到一个段子。据传茅台首次参加万国博览会，参展初期，茅台酒包装简陋，无人问津。中国代表团急中生智，故意摔碎一瓶茅台，顿时酒香四溢，吸引评委驻足，最终使茅台酒名声大噪。&lt;/p&gt;
</description>
        <pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate>
        <link>http://smallzhan.github.io/reading/2026/07/21/T195831-%E4%B9%B0%E6%A4%9F%E8%BF%98%E7%8F%A0%E7%9A%84%E6%99%BA%E6%85%A7__reading.html</link>
        <guid isPermaLink="true">http://smallzhan.github.io/reading/2026/07/21/T195831-%E4%B9%B0%E6%A4%9F%E8%BF%98%E7%8F%A0%E7%9A%84%E6%99%BA%E6%85%A7__reading.html</guid>
        
        <category>reading</category>
        
        
        <category>reading</category>
        
      </item>
    
      <item>
        <title>城北徐公确实比你美</title>
        <description>&lt;h1 id=&quot;id-沟通的千古难题&quot;&gt;沟通的千古难题&lt;/h1&gt;

&lt;p&gt;2000 多年前，《战国策》中有一篇记载《邹忌讽齐王纳谏》，其中邹忌从自身出发讲了下面一个故事：&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;邹忌修5八尺有余，而形貌昳丽。朝服衣冠，窥镜，谓其妻曰：“我孰与城北徐公美？”其妻曰：“君美甚，徐公何能及君也？”城北徐公，齐国之美丽者也。忌不自信，而复问其妾曰：“吾孰与徐公美？”妾曰：“徐公何能及君也？”旦日，客从外来，与坐谈，问之客曰：“吾与徐公孰美？”客曰：“徐公不若君之美也。”明日徐公来，孰视之，自以为不如；窥镜而自视，又弗如远甚。暮寝而思之，曰：“吾妻之美我者，私我也；妾之美我者，畏我也；客之美我者，欲有求于我也。”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;这个故事告诉我们，在人与人交往过程中，因为亲密而爱，或者畏惧，或者有求于人，都会顺着人的想法来说一些脱离事实的话，不管是有心或无心。&lt;/p&gt;

&lt;p&gt;大刘在《三体》中描述的三体人，其想和说是完全一致的，也就是所谓“知行合一”，三体人非常不理解为什么地球人可以想一套说一套，因此首次降临时被地球人耍得很惨，后面靠着绝对的水滴武力才扳回了一城。在 2023 年高考时，全国卷语文的题目是“论感情的亲疏与对事物的认知”，题目讲了一则寓言，是评论各自认为最美与最丑的事物，特别是很多人都会认为自己的孩子是天底下最聪明最美丽的。“智子疑邻”这个成语更是说明了，即使说同样的话，表达同样的意思，也会因为感情亲疏的问题，造成人们有不同的看法和认知。而侯世达在《我是个怪圈》中还提到一句有意思的论断：“当自己的观点由他人之口陈述出来的时候，人们常常就不信任它了”。&lt;/p&gt;

&lt;p&gt;所有的这一些，都表明了一个道理，人与人沟通，需要获得自己想要的真实信息，是非常困难的，人们会受到环境，感情，情绪，认知等等一系列的影响。不仅回答的人不会表达最真实的想法，提问者对于同样的答案也会有不同认知。&lt;/p&gt;

&lt;h1 id=&quot;id-迎难而上&quot;&gt;迎难而上&lt;/h1&gt;

&lt;p&gt;在产品开发过程中，用户调研是非常重要的一个环节，虽然这个世界上不乏有特级大师能自己定义用户需求，引领用户习惯，但大多数依然还是需要跟用户的调研中获得重要的启发与思路。既然沟通交流这么难，那有什么办法能够真正获得想要的信息呢？&lt;/p&gt;

&lt;p&gt;《The Mom Test》（妈妈测试）就是这么一本书，书中认为，获得有用信息的关键其实并不是回答者，而是提问方，其主要思想一句话概括为：“教你设计出连你妈妈都无法对你撒谎的问题”。&lt;/p&gt;

&lt;p&gt;这个原则说白了其实很简单，主要是三句话：&lt;/p&gt;

&lt;blockquote&gt;
  &lt;ol&gt;
    &lt;li&gt;
      &lt;p&gt;谈论他们的生活，而不是你的想法。&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;询问过去具体的细节，而不是对未来的笼统说法或意见&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;少说多听&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;这三个原则说起来很简单，但做到却不容易，特别是做问卷调研时，很容易就会进入一种“推销模式”，这时对方要么就进行无效的恭维，要么就是一些模糊的对未来的许诺，而这两种反应都是无效反馈。可悲的是，很多人会将这视作是调研成功的信号，是对方对于产品的兴奋点，是自己的点子获得了大多数认同的信号。但实际上可能对方只是处于礼貌，不想直接的拒绝而已。&lt;/p&gt;

&lt;p&gt;围绕着这些原则，书中提及了很多有用的方法，以及一些其他的原则，例如如何开始会议，如何笔记等。以及提出一些看起来很反直观的论断，例如：“任何涉及未来的都是过于乐观的谎言”，这点可能很多人有实际体会（”改天请你吃饭”)，以及“人们如果认为那是你想听到的，就会对你撒谎”，“如果他们还没寻找解决方法，他们就不会去找（或购买）你的方法”，“你需要的是事实和承诺，而不是赞美”，“赞美是客户学习中的愚人金，闪亮，分散注意力，而且完全无用”。&lt;/p&gt;

&lt;p&gt;我们可以使用妈妈测试的方法回到邹忌的问题中，例如他可以问他夫人，你见过城北徐公吗？上次见他是什么印象？从而与见到自己的行为做对比，就自然知道到底谁更美了。&lt;/p&gt;

&lt;p&gt;不过更加幸运的是，邹忌是一个很有自知之明的人，与徐公对比一番，了解了自己的不足，才有了千古名篇。现实生活的大多数，显然是更加自我而不自知的人。&lt;/p&gt;

&lt;p&gt;所以我们应该好好的学习“妈妈测试”的方法，不仅是用在产品上，也要用在与人的沟通交流中。&lt;/p&gt;
</description>
        <pubDate>Sun, 12 Jul 2026 00:00:00 +0000</pubDate>
        <link>http://smallzhan.github.io/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/2026/07/12/T212319-%E5%9F%8E%E5%8C%97%E5%BE%90%E5%85%AC%E7%A1%AE%E5%AE%9E%E6%AF%94%E4%BD%A0%E7%BE%8E__%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0.html</link>
        <guid isPermaLink="true">http://smallzhan.github.io/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/2026/07/12/T212319-%E5%9F%8E%E5%8C%97%E5%BE%90%E5%85%AC%E7%A1%AE%E5%AE%9E%E6%AF%94%E4%BD%A0%E7%BE%8E__%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0.html</guid>
        
        <category>读书笔记</category>
        
        
        <category>读书笔记</category>
        
      </item>
    
      <item>
        <title>发布一个 Chrome 插件</title>
        <description>&lt;p&gt;最近因为做的一个客服助手，其形态是一个 Chrome 插件，本来一开始都是使用开发模式，载入未打包插件这样使用，但后续还要发给外部人员使用，这样就复杂了，所以看了一下发布流程。&lt;/p&gt;

&lt;p&gt;一开始是借助AI查了一下，如何发布合适，AI 给出的建议是上架，但是 Unlist 模式，这样知道 url 的可以直接安装和更新，不知道的查不到。而以前也在 X 上听人说过注册一个插件开发者终身只要 5 美元，可以发布很多插件，比 App 开发交年费的模式便宜和良心多了。于是就整了一下。&lt;/p&gt;

&lt;p&gt;注册账号之类的很快搞定了，然后是上传插件，打包个 zip 也很快，再之后就到了填写信息这里，有点犯愁，看到有文章说因为权限，描述等问题导致审核搞了好久没搞定。好在现在有 AI 了，于是就填写吧。&lt;/p&gt;

&lt;p&gt;打开 Codex 工程，让 AI 总结一下项目，Chrome 第一个需要填的是插件的简介之类的，正好 AI 会做总结，了解项目，就让他生成了一段介绍。然后需要截图，自己截取了两个界面，上传时候说尺寸不对，于是又问上了 AI， AI 首先上网去读了一下图片标准，看咱们的图片，说哪里哪里不符，然后就加了一些边框之类的，扩展到了标准尺寸，上传成功了。再然后填写邮箱之类的，都很顺利，填写完毕保存草稿，然后不让我提交，给了一通说明，一看，哦，隐私什么的。可是这东西没地方填啊，再看在知道，在左侧导航栏中还有很多内容呢。这个坑，填写时候不在一个地方。&lt;/p&gt;

&lt;p&gt;打开隐私界面，又要填写单一用途啊，隐私什么的。这个用途据说审核能刷掉很多，因为需要确保一个插件只有一个用途。AI 很顺利的解决了，然后是权限，因为是一个助手，需要连我们后台网站，所以有什么 alarm, host, clipboardWrite 之类的权限，问过AI 之后，AI 贴心的给出了建议，应该填写哪些选项，然后详细解释为什么需要这些插件，唯一的不足是生成的文本太长，超出这里的限制了，于是精简了一下，过关。途中本来比较疑惑，因为这个插件本身就是调用后台然后展示信息，本身不保存任何隐私信息，哪怕用户名密码也是传到网站去认证的，是不是就不需要写隐私之类的，如果不选，还不需要提供隐私协议呢。AI 回答是虽然本身不保存隐私信息，但是接触到了，都要主动说明，那还是听他的吧。最后因为选了隐私选项，需要一个隐私协议，好办，在一个 session 中，AI 很快写出来了，需要一个网页呈现，也让 AI 最简单的排版了一下。挂到我们网站上，提审吧。这时，第二个坑来了，也不知道怎么回事，谷歌说这个隐私协议网站不能访问，奇了怪了，一个简单的 com.cn 域名的静态信息而已，不知道为什么不能访问，是不是国内网站统一设置免爬什么的，整了好久，没办法解决了。后来突然想到，我们还有好几个域名在 cloudflare 解析呢，于是做了个简单的 site, 挂到域名中，填写上去，终于过了。&lt;/p&gt;

&lt;p&gt;然后提交，过程中页面说因为涉及到 host 之类的权限，所以审核可能需要很久，也就没管了。等过了两天去看，竟然默默的通过了，网上一般说需要 3-4 个工作日，这，我周二才提交，周四晚上想起来去看一眼，竟然上线了，属实没想到。大概是 AI 的资料给的太齐全了吧，竟然没遇到任何需要什么的问题，我还看了好几个文章，说遇到审核问题很多也是通过 AI 来回答才过的。&lt;/p&gt;

&lt;p&gt;周五，做了一个小的更新，提交，也非常快，周六又通过了。&lt;/p&gt;

&lt;p&gt;想说的是，确实 AI 时代能极大提升效率，之前这种提交等流程性工作，光一开始了解规则，然后整理文件就好久，还不一定能过，利用 AI，需求说明白，很快刷刷的基础工作都完成了，又快又顺利。很多不了解的东西，只要敢想，这种壁垒和信息差都完全不存在了。确实非常便利。&lt;/p&gt;
</description>
        <pubDate>Sun, 05 Jul 2026 00:00:00 +0000</pubDate>
        <link>http://smallzhan.github.io/programming/2026/07/05/T233104-%E5%8F%91%E5%B8%83%E4%B8%80%E4%B8%AA-chrome-%E6%8F%92%E4%BB%B6__programming.html</link>
        <guid isPermaLink="true">http://smallzhan.github.io/programming/2026/07/05/T233104-%E5%8F%91%E5%B8%83%E4%B8%80%E4%B8%AA-chrome-%E6%8F%92%E4%BB%B6__programming.html</guid>
        
        <category>programming</category>
        
        
        <category>programming</category>
        
      </item>
    
      <item>
        <title>AI不死，记忆永生</title>
        <description>&lt;h1 id=&quot;id-记忆&quot;&gt;记忆&lt;/h1&gt;

&lt;p&gt;记忆是人生重要的组成部分，长久以来，记忆与所谓等都有很强的正相关，所谓“博闻强识”，有人过目不忘，也有人提笔忘言。很多人都有专门训练记忆的方法，七八十年代还不乏一些骗人的大师，用一些带夸张性质的记忆术来做各种演出。&lt;/p&gt;

&lt;p&gt;记忆是容易遗忘的，有个著名的“艾宾浩斯遗忘曲线”，是说记下来的东西在第一天时忘记特别快，往后也是一个不断衰减的过程。针对这点也有一些记忆方法，特别在求学时期背单词时候用的比较多。然而随着时光的流逝，这些记忆总归慢慢烟消云散了。有句话叫“好记性不如烂笔头”，用笔记录下的东西，后续还勉强有可查的方式，而散落在脑中不知名位置的那些记忆，真的就随着云烟一半散去了，直到某一天，在某个契机下，那些死去的记忆会短暂的复活，疯了一般会攻击你我。&lt;/p&gt;

&lt;p&gt;然而烂笔头记下来并不是记忆，那只是记录，记录是要整理和回顾的，只有在这个过程中，自己消化理解的东西，才是自己的。且不说是否方便查询，否则查到同样的东西之后，只会感觉有点莫名的熟悉，而不知道究竟是什么，如何来融会贯通，只有在这些记忆中不断深化和梳理，组成你我人生的一部分，那才是记忆。&lt;/p&gt;

&lt;h1 id=&quot;id-ai-时代的记忆&quot;&gt;AI 时代的记忆&lt;/h1&gt;

&lt;p&gt;AI 时代来临后，记忆的范式发生了巨大的变化。有一种说法是，记忆可以组成一个“外脑”，如果有这个外脑存在，在做任何事情时，都能够随时利用起来，召回这些记忆，那表明记忆就是人生的一部分了。先检索，再使用，就和原生记忆几乎一样了。&lt;/p&gt;

&lt;p&gt;但 AI 也有自己的问题，比如上下文窗口太小，比如可能会有冗余，或者一些杂乱的记忆甚至可能是错误的，因此特别需要一种特别的编排。在这个方面，人脑是一个黑箱，或者只有一些模糊的规则，例如印象深刻的，可能是记忆本身能带上其他特别的触动或心情，又或者有一些特殊的启动词，例如手上的伤疤等。但 AI 可没这些契机，上下文撑爆时，可能只能记得近期的一些事务，而忘掉了最底层的约束。人与之不同，在任何情况下，其底层的人生观价值观始终是对人行为的最基本指导。&lt;/p&gt;

&lt;p&gt;回忆也是一个重要的因素，很多时候我们总是想不出来有用的知识，或莫名的感觉似乎见过。那是因为知识没经过整理和梳理，没被消化。&lt;/p&gt;

&lt;p&gt;另一个重要的方面是关联，例如三个月前学习到一个知识，了解了其中的某个方面，开始应用，三个月后的今天，从另一个方面又学习到类似的知识，这个知识和之前的知识是有联系的，如果还能记起来，就能将这两者联系起来，在后续生活过程中他们可能就更能发挥作用。而如果记不起来，联系不起来，可能又会变成散落在记忆宫殿中的一片尘埃，最终消散在历史中。&lt;/p&gt;

&lt;p&gt;所以，一个最简单的 AI 记忆系统，起码要会这几样，一是记忆的编排，需要整理成合适的存储方式存下来，可能还要经历几层的抽象，例如主题的聚类，主要内容的总结等；另一个是联系，能在相当长的时间维度，将历史与现在提及的相似主题联系起来，形成新的知识和记忆。&lt;/p&gt;

&lt;h1 id=&quot;id-nowledge-mem&quot;&gt;Nowledge Mem&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;https://mem.nowledge.co&quot;&gt;Nowledge Mem&lt;/a&gt; 就是一个这样的记忆编排软件，他的大标题特别有意思“AI 工具会变，但记忆不该推倒重来”。这面向的是 AI 大模型时代的一个典型场景，我在 gemini 中问了一个问题和方案，在 codex 中做了一个审核，最终使用 claude code 来实现。这三个工具之前，以前都是互不感知的，需要人工将这些知识拷来拷去。而如果使用了 nowledge mem 与这些工具打通，那么记忆就是一致的，可以将各个部分集成起来，在使用下一个工具时，自动将上一个工具的有用知识导入进去。&lt;/p&gt;

&lt;p&gt;这只是该工具的一个点，打通各个 AI 工具中的知识。它在知识整理上也做了对应的分拆。记忆分成实体，结晶，联系等，只要把需要记忆的知识导入到资料库，后台会自动进行分析，联系和聚类。自动分析系统是智能的，不会短期结合大模型来发起巨大的请求，会在后台默默的把事情做了，可以说每周，每天，每小时，这个记忆工具都在进化。&lt;/p&gt;

&lt;p&gt;最近正好看到一篇文章，也讲了一个Agent 记忆编排的工具，叫做 Magi，将记忆进行了分层，L0-L4 等，有点对应自动驾驶的嫌疑，但也说明白了外脑以及是什么。简单来说，L0 就如同当前code agent 做的，记录当前任务目标等，L1 记录“发生了什么”，L2记录“这说明了什么”，L3负责“长时间跨度下的压缩”，也就是那些记忆是重要的，那些不是等等，L4则开启了自我进化，重点在于沉淀“下次怎么做更好”，我发现 nowledge mem 也基本上是这个设计思路。&lt;/p&gt;

&lt;p&gt;当资料加入到资料库后，会有短期运行(例如每天)的后台进程来进行实体，知识，主题的抽取，然后会有略长期启动的进程(每三天或每周等)来分析相关联系，行成 wiki（相互关联的主题），以及对应知识结晶（也就是将多个记忆组合起来行程一个进化的脉络），然后还有更长时间(每周或更长)的进程负责抽取这些记忆中的模式，总结成 skill 等，以及最终还有一些“自动发现”。另外一些日常的维护，例如知识冲突，更新，新鲜度扫描等，都在一些日常活动安排中。&lt;/p&gt;

&lt;p&gt;这是个自我进化的系统，而且是将人的记忆更加规范化和结构化的做了出来，能严格执行这一套的人，估计古往今来也不太多，做到了可能也是一个领域的泰斗。《奇特的一生》 中描述的切比雪夫似乎就是这样一个人，他取得的成就世人都有目共睹了。&lt;/p&gt;

&lt;p&gt;目前软件在迅速迭代过程中，几乎每天都有新版本发布，作者非常勤奋和友好。如果自建服务器，一次买断也就不到100元，还是非常值得的。&lt;/p&gt;

&lt;p&gt;感谢这个 AI 时代。&lt;/p&gt;
</description>
        <pubDate>Sun, 21 Jun 2026 00:00:00 +0000</pubDate>
        <link>http://smallzhan.github.io/learning/2026/06/21/T141310-ai%E4%B8%8D%E6%AD%BB-%E8%AE%B0%E5%BF%86%E6%B0%B8%E7%94%9F__learning.html</link>
        <guid isPermaLink="true">http://smallzhan.github.io/learning/2026/06/21/T141310-ai%E4%B8%8D%E6%AD%BB-%E8%AE%B0%E5%BF%86%E6%B0%B8%E7%94%9F__learning.html</guid>
        
        <category>learning</category>
        
        
        <category>learning</category>
        
      </item>
    
      <item>
        <title>外国人眼里的中国</title>
        <description>&lt;p&gt;有一个美国人名字叫何伟。听起来特别像一个中国人是吧？他是一个记者，在中国生活了好多年，写了好几本书。最近的一本叫做《别江》。主要讲的是他在川大任教，和学生的一些互动，对中国社会，文化的一些思考的故事。可能 20 年前，他还有一本书叫做《江城》。讲的是他在四川乌江涪陵师专当老师时候的故事。因为他是一个外国人，所以天生的思想与咱们中国的老百姓就有所区别。他也试图融入和理解我们，当然，更多的是可能是不理解。呃，同时说话又比较大胆，包括对于一些政治的评价。所以他的书一段时间在国内都看不到。当然越是看不到的书，可能我越兴趣越是比较大。所以这次趁着看《别江》的时候，又把之前的他的几本书看了一遍。&lt;/p&gt;

&lt;p&gt;当一个人要理解另外一种文化的时候，他只有深入其中，才可能真的有所理解。否则只会形成一些刻板的印象。例如我们对于泰国，可能老觉得有很多人妖。或者听说之前老外对于中国人的印象是还带着辫子的清朝人的样子。何伟写的书，真的就是在日常生活中的这样的一些真实的感受。为了在大学任教，他在中国待了两年，同时将他全家都搬到了中国。他的一对双胞胎女儿在成都的公立学校上学。而当他因为某些原因不能在大学续约之后，又把家全部搬回了美国。都是因为他是做记者的，所以他对很多的事情都会亲自去做调查。比如他还去过华南海鲜市场，当然是在疫情结束之后，他还采访过方方。相比之下，有多少国内写疫情的人，可能都没有去过，跟着人云亦云，在这说一些连自己都不相信的东西。在别江中，他把他所教过的学生们称作是习一代，与他在江城里面描写的学生做了一些对比，觉得“他们老的太早，连他们的时间感都流逝得比较快”。同时他又写道，“我对他们有无比的信心 – 我佩服他们的认真与坚韧，也很同情他们的挣扎。每一代人都承接了一套体制，体制的问题不是他们造成的，而他们也尽可能把手里的牌。打到最好。不过在1990年代，年轻人面对的挑战虽然很艰巨，但也明明白白，看得见摸得着。求学、进城打拼、脱贫。30年后，问题变得更严重，体制的根本有些需要改变。我对年轻人还是很有信心，只是我感觉他们的未来恐怕更加复杂。”我觉得这真是对于国人的了解，可能比我们自己了解的更深刻。&lt;/p&gt;

&lt;p&gt;另一本叫做《寻路中国》的书，就更加有意思了。这个名字起的大，其实是三个经历。第一个是环游长城。当地图还不发达的那些年代，在国内都需要看一些出版的纸质地图，而那些地图上都会把长城用特殊的符号表示出来。读到这一章时，我特地去软件上看了一下，目前已经都没有了长城的标识。这些纸片上的长城引起了小时候的我很多的遐想，其实也是某种骄傲。万里长城万里长，想着如果真能够把长城一路看过去，那是多么宏大的一个景象。然而却让一个外国人首先做到了。他从北京出发租了车，然后沿着长城去旅行，其实也是去看这些关于长城的风土人情吧。行文特别有意思，会把驾照里面的考题都放在里面，而从这些考题上，以及即使过了考题拿到驾照的人们对于驾驶不同的实施方式。来得到一些关于中国人民的性格的一些描述。写书的那个时候，其实国内的乡村建设还没有那么发达，不像目前基本上实现了村村通。前年我从老家回来，高速堵得不得了，就走到了山里面的小路上。那些路做的又宽又平，虽然急弯多了点，但是好在没有其他的车辆打扰，驾驶起来也别有一番乐趣。然而那个时候，很多的地方都没有路，也没有导航地图，得靠人与人的交道和凭着自己的一腔把事情做完的壮志来完成这个旅行。结束的也很有意思，是因为有一些地方不让外国人经过，经过之后遇到了当地的警察的重视，所以不得不提前结束了这个旅程。第二部分描写乡村，作者就真的到了北京的山区里面，找了一套房子就住在那，每天融入到当地的生活里面来做观察。一开始，其实当地的居民并没有接纳他，直到他住，他租住的人家的孩子有一次生病，帮忙把 小朋友送到医院去，至此才受到了人们的广泛的接纳，能够深入到这个乡村的每一步。而同时，他也观察到了乡村振兴的发展，农民们是如何抓住政策和时代的机遇。来完成一些商业化的转变。当然这个转变也不能说一定是好或者不好。最后一部分是关于工厂，作者考察到了浙江的丽水，发现浙江那边的一些乡村的小作坊。或者是那些不太正规，以价格取胜的山寨工厂是如何生存的。工厂的老板是什么样的追求？工厂的打工者们又是怎么想的，以及怎么做的？以此来反映在这个高速发展的时代，中国人的面貌。&lt;/p&gt;

&lt;p&gt;由于视角比较独特，有时候作者表达的语言也非常的独特，显得有些幽默甚至刻薄。例如他讲到开车的时候受到劝酒，政府官员让他喝酒，要么说啤酒不是酒，要么说只喝一杯没有事。这确实是中国迎来送往的一些 约定俗成的文化。当他看到村里的小孩子被那些垃圾食品所攻陷的时候，而他的父母对此视而不见，反而认为能吃是好。孩子的父亲对于孩子健康问题的反应是把孩子的名字给改掉。他发出这样的感慨，“有时候他们似乎是本能的抓住两个世界里最糟糕的东西。最糟糕的现代生活和最糟糕的传统观念。”&lt;/p&gt;

&lt;p&gt;有时候在文中似乎能感觉到作者对政治的那种刻意的蔑视感，一些对于一些不公平事件的一些愤怒和控诉。似乎还处在一种青少年愤青的那个年代，而中国的大多数人可能经过那个年代之后，就对于这些东西漠不关心了。在这一点上，我觉得难能可贵。或者不管怎么说，他至少告诉了我们一个正常的人对于生活，对于职业，对于写作这件事情应该是一种什么样的生活态度。基于这样的态度，他也不可能写出那种特别偏颇和特别片面，以及特别极端的东西。所以就想不通为什么这些书 会不在国内出版。也许该反思的是我们吧。&lt;/p&gt;
</description>
        <pubDate>Wed, 25 Mar 2026 00:00:00 +0000</pubDate>
        <link>http://smallzhan.github.io/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/2026/03/25/T215130-%E5%A4%96%E5%9B%BD%E4%BA%BA%E7%9C%BC%E9%87%8C%E7%9A%84%E4%B8%AD%E5%9B%BD__%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0.html</link>
        <guid isPermaLink="true">http://smallzhan.github.io/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/2026/03/25/T215130-%E5%A4%96%E5%9B%BD%E4%BA%BA%E7%9C%BC%E9%87%8C%E7%9A%84%E4%B8%AD%E5%9B%BD__%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0.html</guid>
        
        <category>读书笔记</category>
        
        
        <category>读书笔记</category>
        
      </item>
    
      <item>
        <title>读散文</title>
        <description>&lt;p&gt;之前一直不喜欢看散文，总觉的没有小说那么气势磅礴和妙趣横生，也没有情节，有时候可能是无病呻吟之类的。初中时有个同学，手抄一篇《没有秋虫的地方》，跟我讲这个文章写的太好了，作者是叶圣陶，但是我就是读不出来那个感觉，很是怅惘。&lt;/p&gt;

&lt;p&gt;再后来各种杂书都看，也多是小说。高中反而迷上了杂文，似乎这种针砭天下的愤青范更合我的口味，连带着有时候写作文都是那种调调，有一次考试，被给了一个低分，我去请教语文老师，他说来说去，似乎和我文中表达的意思也差不多，我觉得可能就是阅卷老师一时审美疲劳之类的吧。高考时候的作文，我还记得，题目是是《论感情的亲疏和对事务的认真》，我颇为得意的引经据典说了下什么“任人唯亲”之类的事情，从最后得到的分数看，万幸没被批评离题。&lt;/p&gt;

&lt;p&gt;再后来，确实对散文有点感觉了，其实散文很简单，就是看到一些事情，有了点感觉，一边欣赏，一边借着这些环境，捕捉一些一晃而过的思绪和想法，有时候可能是睹物伤情，有时候可能是借物喻人。而如果，正好，读到这边文章时，有类似的感悟，可能就会惊呼天人。作者其实是观察非常仔细的人，而正好有这个能力，将这个观察描述出来。散文没杂文那么犀利，但有时候的神来一笔，可以把人震动好久。再回去读了几遍《没有秋虫的地方》，也想不到为什么当时那个同学能奉为神作，或许那时就能看出来志向的不同吧。&lt;/p&gt;

&lt;p&gt;最近读到一篇文集《解闷儿》，作者是张辰亮，我并不认识。他其实更多的是个科普博物爱好者，可能作家是第二职业。从文章中也能看出来，他对一些动物植物的认识，可能比生活感悟本身很多。自序中他说，收到汪曾祺的影响最大，而这几篇文章，确实有那个调调，汪曾祺我看过的也不多，上学时候读过他的小说《受戒》，那种细致的田间的描写，看的让人都想去当和尚，也去田间和小姑娘们脚踩脚玩儿。后来看过一本文集《我从未如此眷念人间》，发现他似乎也是个吃货，写各种东西时，总是不厌其烦描写怎么才好吃。但是那种娓娓道来，平实的文风，读起来犹如清风拂面，令人心旷神怡。&lt;/p&gt;

&lt;p&gt;这部散文集，确实也类似汪曾祺的感觉。一开始讲他小时候的故事，不论是说附近的猴，逮蜻蜓，小时候的池塘等等，都没有什么华丽的词藻，有时候也没有什么特别的说教风格，就是回忆这些事情，把他写出来，全当解闷儿，不仅解自己的，也解了各位读者的。其中又有很多专业的知识，可以看出作者很有科普功底，各种叫不出来名字的动物植物，是他上学时研究的对象，也还有图片能对照，遗憾的是，有了图片，我下回看到也不可能认识。&lt;/p&gt;

&lt;p&gt;这些文章中，有时候有些点睛之笔，读起来简直妙趣横生又特别共鸣。例如讲到蜻蜓那篇，结尾讲到，凡是把蜻蜓带回家的，想要逮蚊子的，结果他们不逮，一直撞到天花板上，没几天就把自己折腾死了。这个场景我也见过，以前夏天蚊子多，抓了就往房间里放，结果一直没用，一度好奇究竟蜻蜓吃不吃蚊子。结果文章接着来了一句“蜻蜓是天上的虫，天有顶，蜻蜓理解不了，也接受不了。”突然一下子就理解散文了。&lt;/p&gt;

&lt;p&gt;还有一篇，讲姥爷的花盆，通篇就一直在将姥爷如何会养花，自己养不好，特别几个小花盆，一直不知道该养什么，最后终于找到了应景适合的花，好好的养了起来。特别还写，姥要是看到了，肯定说“这回行了，咱家有俩人儿都会养花了”。然而最后来了一句：“想到这儿突然发现，我成了我们家唯一会养花的。”前文的絮叨和描述，霎时间转化成了浓浓的思念，萦绕在人心头，久久不散。&lt;/p&gt;

&lt;p&gt;类似这样的还不少，我想，也许就是心境的变化，有些事情没有经历，是很难有共鸣的。即使别人描写再传神，再活灵活现，最多会心一笑，很少真能植入内心。&lt;/p&gt;

&lt;p&gt;我想，我也是能读散文的人了。&lt;/p&gt;
</description>
        <pubDate>Sun, 15 Mar 2026 00:00:00 +0000</pubDate>
        <link>http://smallzhan.github.io/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/2026/03/15/T225204-%E8%AF%BB%E6%95%A3%E6%96%87__%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0.html</link>
        <guid isPermaLink="true">http://smallzhan.github.io/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/2026/03/15/T225204-%E8%AF%BB%E6%95%A3%E6%96%87__%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0.html</guid>
        
        <category>读书笔记</category>
        
        
        <category>读书笔记</category>
        
      </item>
    
      <item>
        <title>openclaw 配置 github-copilot 踩坑记</title>
        <description>&lt;p&gt;一直有 github-copilot 的订阅，在其他订阅方式中，这个其实是个比较有意思的，他集成了御三家 (OpenAI, Anthropic, Google) 的主流模型，可以深度与 vscode 天生集成，并且也提供了 copilot 的命令行，而且在 opencode 中原生有支持。定价方面也还好，10$/month 的 Pro 套餐，如果不是使用强度很高，也没啥问题。35 刀每月的量比这个多了 5 倍，基本上也可以略高强度使用了。&lt;/p&gt;

&lt;p&gt;后来开始玩 openclaw，之前官方并不支持 copilot 订阅，我试了试 deepseek 之类的，一会会用了非常多的 token，就一直没怎么正经用。到处找一些免费的模型之类的使用，找到 nvidia 的模型，配是配上了，但是响应特别慢，说话要等一分钟可能才有回应，忍不了了，也想试试好的模型是什么感觉。想到正好也支持了 copilot，就开始配上了。&lt;/p&gt;

&lt;p&gt;按照官方文档&lt;a href=&quot;https://docs.openclaw.ai/zh-CN/providers/github-copilot#github-copilot&quot;&gt;这里&lt;/a&gt;，一开始很顺利。熟悉的味道，直接 github 做个 device 认证，就来了。设置模型时，按照一句：&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;openclaw models set github-copilot/gpt-4o&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;也设置成功了，这时候再去找龙虾，响应飞快。就是这个龙虾不太聪明，很多工具不了解也不会用，随便问下其他的事情等等的，训练内的没啥问题，需要调用工具的，能力上就差多了。所以这个龙虾除了聊天基本上是个残废。不行，那测别的模型吧。&lt;/p&gt;

&lt;p&gt;马上试试 set 一个 gpt-5.4 来用用，刚从 vscode 里面看似乎有了。&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;openclaw models set github-copilot/gpt-5.4&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;测试，说找不到模型，那可能是 pro 还没提供吧。设置 claude 试试，这个确认有，结果一调用，反馈 400，有点懵。明明用的好好的。我在其他地方找到了模型的名字，直接去改配置文件，因为文档里面配置文件有一句：&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;{ agents: { defaults: { model: { primary: “github-copilot/gpt-4o” } } }, }&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;结果我改成 gemini 或者 claude，或者 gpt-5.3 之类的高级模型都不行。&lt;/p&gt;

&lt;p&gt;到目前为止，订阅里面只有 gpt-4o 能用，其他都不行。我就跟龙虾聊，让他去试试 github-copilot 有哪些模型，分别调用试试。他去找了源码，然后告诉我，有哪些哪些模型，我就让去试，结果试下来告诉我，除了 4o，gpt-5.4 是没有，其他都不行。然后告诉我 openclaw 有个白名单，会决定哪些模型能调用，哪些不能。我说那你去改，他去改了一个叫做 “models.json” 的文件，结果每次我去看，这个文件里面的模型都是空，再问，他说确定改了，可能是系统覆盖了。&lt;/p&gt;

&lt;p&gt;有点僵局了，这时候我突然看到有些模型提示是 model not allowed，有些提示似乎是调用了，似乎有些是被 openclaw 拦住的，有些是被 api 拦住的。所以我就让龙虾自己去调用，同时监控 log，他告诉我，claude 这些，调用到 api 了，结果是 api 拦住的，而 gemini 这些，直接调用就不允许了。我突然想起来，配置文件 openclaw.json 中，关于 models 里面，claude, gpt-4o 这些都是写了的。而其他的没写，于是找他要了模型列表，手动在 models 里面添加了。再让他测，除了 claude 之外，其他都成功了。&lt;/p&gt;

&lt;p&gt;那 claude 是为什么？突然想起来，之前 anthropic 说不给中国服务，因此如果 ip 在国内，copilot 或 vscode 里面都是看不见 claude 类模型的。于是去调整了下梯子配置，再试 claude，立刻就成功了。&lt;/p&gt;

&lt;p&gt;因为 copilot 中 gpt-4o 和 gpt-5-mini 是 0x 的，相当于是免费使用，因此先用 gpt-5-mini 试了试，结果创建定时任务，墨迹半天，一会说没权限，一会说创建不了。看来他完全不知道 openclaw 的接口啊，把文档喂给他，能创建了，结果不能调用，其中格式有点乱，还乱找问题，死循环了。而且这个模型还特别啰嗦，每次都给你提供1234 好多方案，然后获得回复才开始。于是将主模型换成 claude，同样一个任务，过一会，回复说搞定了。&lt;/p&gt;

&lt;p&gt;突然想到，如果一开始没有网络问题，直接就配置好了 claude, 可能好多问题一早就解决了，不会整这么久。所以龙虾最大的坑在于，一定要给他好模型，不要贪图便宜，过去的模型，当时可能非常厉害，在现在的迭代强度下，调用工具的能力，解决问题的能力，其差距大概是一个高材生对上村头 2 傻子类似的体验。&lt;/p&gt;
</description>
        <pubDate>Sun, 08 Mar 2026 00:00:00 +0000</pubDate>
        <link>http://smallzhan.github.io/programming/2026/03/08/T105121-openclaw-%E9%85%8D%E7%BD%AE-github-copilot-%E8%B8%A9%E5%9D%91%E8%AE%B0__programming.html</link>
        <guid isPermaLink="true">http://smallzhan.github.io/programming/2026/03/08/T105121-openclaw-%E9%85%8D%E7%BD%AE-github-copilot-%E8%B8%A9%E5%9D%91%E8%AE%B0__programming.html</guid>
        
        <category>programming</category>
        
        
        <category>programming</category>
        
      </item>
    
      <item>
        <title>神奇 AI 找 Bug</title>
        <description>&lt;p&gt;此前将自己的 Emacs Org 相关函数用 AI 重新实现了一遍，其中有个功能是统计一天的计时情况。以前的函数只能统计当天的，后来借助 AI 将其扩展了一下，做成了可以统计任意一天时间的函数，同时还有看板以及 TODO 的函数，这些函数统一需要展示一个 org buffer 界面，因此就把这些显示封装了一个函数，具体如下。&lt;/p&gt;

&lt;div class=&quot;language-emacs-lisp highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;defun&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;my/render-view-buffer&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;buffer-name&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;title&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;refresh-fn&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;body-fn&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;&amp;amp;optional&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;skip-footer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;s&quot;&gt;&quot;创建并显示一个只读的 org-mode 视图缓冲区。
BUFFER-NAME: 缓冲区名称
TITLE: 标题（包含emoji图标）
REFRESH-FN: 刷新函数符号（用于 &apos;g&apos; 键）
BODY-FN: 无参函数，负责插入缓冲区主体内容
SKIP-FOOTER: 可选，为 t 时跳过自动添加底部提示（由 body-fn 自行处理）&quot;&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;with-current-buffer&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;get-buffer-create&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;buffer-name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;let&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;inhibit-read-only&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;erase-buffer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;org-mode&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;insert&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;format&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;#+TITLE: %s\n&quot;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;insert&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;format&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;#+DATE: %s\n\n&quot;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;format-time-string&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;%Y-%m-%d %A&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)))&lt;/span&gt;

      &lt;span class=&quot;c1&quot;&gt;;; 调用主体内容生成函数&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;funcall&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;body-fn&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

      &lt;span class=&quot;c1&quot;&gt;;; 统一的底部提示（除非明确跳过）&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;unless&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;skip-footer&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;insert&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;make-string&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;my/view-separator-width&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;─&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;insert&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;my/--styled-text&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Press &apos;g&apos; to Refresh | &apos;q&apos; to Quit&quot;&lt;/span&gt; 
                            &lt;span class=&quot;ss&quot;&gt;&apos;font-lock-comment-face&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)))&lt;/span&gt;

      &lt;span class=&quot;c1&quot;&gt;;; 统一的按键绑定&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;local-set-key&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;kbd&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;g&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;refresh-fn&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;local-set-key&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;kbd&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;q&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;#&apos;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;quit-window&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

      &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;goto-char&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;point-min&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;setq&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;buffer-read-only&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)))&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;pop-to-buffer&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;buffer-name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;这个函数会挂两个函数，分别绑定到 g 和 q，作为刷新和退出的函数。使用起来是这样的。&lt;/p&gt;

&lt;div class=&quot;language-emacs-lisp highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;defun&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;my/org-clock-report&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;&amp;amp;optional&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;_match&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;interactive&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;let&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;date&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;org-read-date&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)))&lt;/span&gt;
      &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;my/render-view-buffer&lt;/span&gt;
       &lt;span class=&quot;s&quot;&gt;&quot;*Org Timeline Report*&quot;&lt;/span&gt;
       &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;format&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Report of [%s]&quot;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;date&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
       &lt;span class=&quot;o&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)))&lt;/span&gt;

&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;defun&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;my/org-kanban-view&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;&amp;amp;optional&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;_match&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;interactive&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;my/render-view-buffer&lt;/span&gt;
   &lt;span class=&quot;s&quot;&gt;&quot;*Kanban*&quot;&lt;/span&gt;
   &lt;span class=&quot;s&quot;&gt;&quot;📊 Kanban View&quot;&lt;/span&gt;
   &lt;span class=&quot;nf&quot;&gt;#&apos;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;my/kanban-view&lt;/span&gt;
   &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;lambda&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
     &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;my/render-task-sections&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;my/get-kanban-tasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)))))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;最近发现一个问题，过一段时间，org-mode 里面就不能正常敲 g 了，会变成 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;my/org-clock-report&lt;/code&gt; 的调用，说是绑定到了 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;org-mode-map&lt;/code&gt;, 检查了半天没找到哪里绑定的，然后就重启了，一开始是好的，过一会就又绑定了，特别奇怪。实在找不到了，心想，用 AI 试试，反正这几个函数本来就是 AI 写出来的。于是就把 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;my/org-clock-report&lt;/code&gt; 发给 AI 看，并告诉他：=org-mode= 中的 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;g&lt;/code&gt; 变成了这个函数，无法输入正常的 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;g&lt;/code&gt; 了，可能是什么原因。 AI 回复的第一句就把我惊到了：&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;这个问题发生的根源，几乎可以肯定隐藏在你的 my/render-view-buffer 这个函数的实现里。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;于是我把 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;my/render-view-buffer&lt;/code&gt; 发给 AI，马上他就指出问题了：&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;找到了！问题出在 local-set-key 这个函数的“陷阱”上。&lt;/p&gt;

  &lt;p&gt;为什么 g 会在所有 Org 文件里失效？&lt;/p&gt;

  &lt;p&gt;在 Emacs 中，local-set-key 虽然名字叫“本地”，但它的实现逻辑是：修改当前缓冲区所使用的 Keymap。&lt;/p&gt;

  &lt;p&gt;重点来了：大多数 Major Mode（包括 org-mode）为了节省内存，所有的 Org 缓冲区都共用同一个 org-mode-map。 当你在这个渲染函数里执行 (local-set-key (kbd “g”) …) 时，你实际上是直接修改了全局的 org-mode-map。结果就是：所有的 Org 文件里的 g 都变成了刷新按钮，导致你无法正常输入字符 g。&lt;/p&gt;

  &lt;p&gt;;; — 核心修复：创建一个本地 map 副本，防止污染全局 — (use-local-map (copy-keymap org-mode-map))&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;也就是在做 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;local-set-key&lt;/code&gt; 之前，复制一份本地的 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;keymap&lt;/code&gt; 即可。加上，果然就好了。&lt;/p&gt;

&lt;p&gt;不禁特别感慨，不了解这个知识点，可能找 bug 需要找好久好久，也很难知道如何来 debug 。而 AI 在这些问题上的经验已经远远大于人们了，我们确实生在了一个好时代。&lt;/p&gt;
</description>
        <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
        <link>http://smallzhan.github.io/programming/2026/03/01/T231349-%E7%A5%9E%E5%A5%87-ai-%E6%89%BE-bug__programming.html</link>
        <guid isPermaLink="true">http://smallzhan.github.io/programming/2026/03/01/T231349-%E7%A5%9E%E5%A5%87-ai-%E6%89%BE-bug__programming.html</guid>
        
        <category>programming</category>
        
        
        <category>programming</category>
        
      </item>
    
  </channel>
</rss>
