0%

Claude Code有一个从未出现在任何文档中的模式,在这个模式下,它会系统性地抹除一切AI参与的痕迹。不写Co-Authored-By,不写Generated with Claude Code的footer,甚至连system prompt里都不告诉模型它自己是什么型号。这个模式叫Undercover Mode,只存在于Anthropic内部构建版本中,外部用户永远看不到它,因为整个功能在公开构建时会被dead code elimination彻底剔除。

从行为推断,这个机制的存在意味着Anthropic员工日常使用Claude Code向公开仓库提交代码。如果没有某种保护措施,commit message里可能出现未发布模型的代号,PR描述里可能暴露内部项目名称,system prompt里的模型标识可能通过某种方式泄露。Undercover Mode就是为了堵住这些口子。

Claude Code 执行复杂任务时会并行派生多个子 agent,每个都需要父对话的完整上下文。假设父对话积累了 100K token,并行 3 个子 agent,朴素实现要付 300K 的输入费用。

熟悉 LLM 推理优化的人会立刻想到:这不就是 KV Cache 共享的问题吗?多个请求如果前缀相同,Attention 层的 Key/Value 可以复用,省掉重复计算。Anthropic 把这个能力以 Prompt Cache 的形式暴露给了 API 用户,对缓存命中的前缀部分打一折。但前提是多个请求的前缀字节完全一致。Claude Code 的 fork 子 agent 被刻意构造成彼此之间 99% 以上的字节相同,3 个子 agent 的实际输入成本大约只有 120K 等价(100K 全价 + 2 × 100K × 10%)。

200K context window 听起来很大, 但一个中等复杂度的编程 session, 读几十个文件, 跑几轮 grep, 执行一些 bash 命令, 就能轻松吃掉大半个窗口. 压缩是必须的, 但压缩本身又要花钱: 你需要一次 LLM 调用来生成摘要, 而这次调用的输入就是你要压缩的那整段上下文. 这形成了一个有趣的工程权衡: 压得太早浪费信息, 压得太晚窗口爆了, 压缩本身的成本也不能忽略. Claude Code 对此给出的答案是一套多层级联系统: 能不压就不压, 能便宜压就便宜压, 实在不行才动用 LLM.

AI 执行 Bash 命令的安全问题,不是"该不该信任模型",而是"怎么确认命令的含义和它看起来的一样"。

Claude Code 允许 AI 直接执行 Bash 命令。不是通过 MCP 那样的结构化接口间接调用,是真给模型开了一个 shell。MCP 的思路是把工具封装成 JSON schema,安全是安全了,但你不可能为几千个 CLI 工具逐个写 adapter,能力天花板肉眼可见。直接给 Bash,什么都能干,代价是安全问题从"接口权限控制"变成了"搞懂这条命令到底在干嘛"。上一篇聊了 YOLO Classifier 怎么用 AI 审查 AI,但 YOLO Classifier 看到的是完整的命令字符串,它做的是语义判断:这个操作危不危险。在那之前,还有一层更底层的问题需要回答:这个命令真的是它看起来的那个意思吗?

Claude Code 有个自动模式,可以不经确认直接执行操作。但"自动"不等于"不审查",每个动作背后都有一个分类器在盯着。

自动模式的矛盾

用 Claude Code 写代码,最烦的事之一是权限弹窗。每次执行 Bash 命令、写文件,都要点一下确认。效率高的用户会开启自动模式(auto mode),让 Claude 自主执行所有操作,不再逐个询问。

这带来一个显而易见的问题:如果模型决定 rm -rf /,或者把代码推到 production 分支,或者往 .bashrc 里写个后门呢?

Claude Code 没有向量数据库,没有 embedding 索引,但它能在百万行代码库里精准定位你需要的文件。这背后是一套完全不同于传统 RAG 的检索架构。

这不是你理解的 RAG

用过 RAG 的人对这套流程应该很熟:离线建索引,用户提问,向量检索 Top-K,拼入 prompt,生成回答。一条直线,跑一次就完事。

Claude Code 完全不是这么干的。它没有离线索引,检索过程由模型自己驱动。

塔勒布在《随机漫步的傻瓜》里讲了一个思想实验:如果有无限只猴子在无限台打字机前随机敲击,总有一只会打出《伊利亚特》全文。

我越想越觉得,这个故事的终局,就是今天的大语言模型。

用过Claude Code的开发者可能都有这样的体验:即便在一次超长对话中修改了几十个文件,它似乎始终"记得"之前做过什么。更神奇的是,你在上一次对话里告诉它"我喜欢用bun而不是npm",下次它就自动遵守了。

这背后是一套精密的记忆管理系统。今天,我们把Claude Code的记忆机制彻底拆解开来。

公众号一年多没更新了,不是因为懒,也不是因为自己没有跟上技术的步伐,而是因为有个执念,AI变强之后,技术博客本身的价值就大幅降低,大家学习的方式已经从搜索-学习变成了直接与AI对话的交互式学习。此外由于AI能力的加持,太多AI生成的公众号内容会第一时间发布一些内容,让我觉得步人后尘倒也没有太大必要。从博客的访问量上来看,最近一年的访问量也骤跌,更没有了花几小时写一篇文章的兴致。我更怀念那些一个字一个字几个小时甚至几天码出来的一篇博文的时光。

最近半年AI工具有了长足进步,作为重度用户,聊聊”明明Agent是我们的帮手,为什么却感觉越来越累?”

当你在 Windows 上使用 TeX Live 编译包含自定义字体的 LaTeX 文档时,可能会遇到如下错误:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
kpathsea: Running mktextfm Fontin

The command name is F:\texlive\2025\bin\windows\mktextfm
name = Fontin, rootname = Fontin, pointsize =
mktexmf: empty or non-existent rootfile!

kpathsea: Running mktexmf Fontin.mf

The command name is F:\texlive\2025\bin\windows\mktexmf
Cannot find Fontin.mf.
kpathsea: Appending font creation commands to missfont.log.

kpathsea: Running mktextfm Fontin

The command name is F:\texlive\2025\bin\windows\mktextfm
name = Fontin, rootname = Fontin, pointsize =
mktexmf: empty or non-existent rootfile!

kpathsea: Running mktexmf Fontin.mf

The command name is F:\texlive\2025\bin\windows\mktexmf
Cannot find Fontin.mf.

这个错误的原因是 TeX 系统找不到所需的字体文件(特别是 .mf.tfm 文件),因此无法生成它们。奇怪的是,你可能已经安装了该字体。

MongoDB 的 Aggregation Pipeline 是处理和分析数据的强大工具,适用于实时查询和离线数据分析。它允许开发者使用多个阶段(stages)来转换、过滤、分组和排序数据,从而高效地执行复杂的计算。本文将探讨 Aggregation Pipeline 的基本概念、应用示例、性能分析及优化方案。

今天打开Chrome突然提示SwitchyOmega “此扩展程序未遵循 Chrome 扩展程序的最佳实践,因此已无法再使用。” 应该是Chrome自动升级之后插件被禁用了。还有一个坏消息,Stylish插件也因为一样的问题入土不可再用。

然后Chrome Web Store无法打开安装其他插件,死锁了。

双花问题是交易系统中的一个关键挑战,尤其是在管理账户余额或资金时。当系统允许由于并发操作或竞争条件导致同一笔资金被多次使用时,就会发生双花问题。本文将探讨使用 MongoDB 解决这一问题的两种方法:基于事务的处理基于版本的处理

本文是 用MongoDB构建交易系统 关于双花问题的深入讨论。

Windows Update之后,win11的远程桌面就不好使了:连接黑屏,鼠标和界面一概不可见,一分钟之后自动断开连接。无奈只能重新进入本机查看到底是什么问题。

交易系统是现代商业和金融活动的核心,涵盖从电子商务订单处理到金融机构的实时清算等多种场景。这类系统通常需要高并发处理能力、实时数据存储和高效检索功能,同时需要在数据一致性与性能之间找到平衡。随着交易数据的规模和复杂性不断增长,传统交易系统架构在应对这些挑战时,往往因固定的表结构和横向扩展能力的不足而受限。

MongoDB 作为一款分布式文档型数据库,以其灵活的架构、高吞吐能力和内置的事务支持,为构建复杂、高效的交易系统提供了一种现代化的解决方案,能够满足多样化的业务需求。

收到腾讯云的证书续期通知,结果在申请新证书时发现,腾讯云不再支持一年的免费证书:

2024年4月25日起,腾讯云新签发的免费证书有效期调整为 90 天

考虑到一直是手动更新证书,如果三个月手动操作一次还是挺费劲的。于是研究Let’s Encrypt的certbot,唯一的顾虑是如何证明自己对二级域名的所有权问题。实践之后发现此问题并不存在,因为certbot仅是签发一个证书而已,并不存在对网站本身的威胁。

下面是certbot的配置步骤,其实仅需要执行几个命令,非常简单。

十一去了趟伦敦,很喜欢这座拥有悠久历史和丰富文化的城市,古典和现代的结合给人留下了非常深刻的印象。限于时间,只玩了几处最具代表性的地标:大英博物馆、西敏寺、牛津大学、国家美术馆和海德公园。

去之前在小红书上做了些功课,主要是两点:提前办无接触信用卡(contactless card)和治安不好。其他就是常规操作,出发前两天买旅行险,提前在淘宝上买电话卡(用的giffgaff,信号还可以)。

旅行的体验:

  • 无接触卡非常必要,一分钱现金也没花,全带回来了。
  • 总体治安尚可,肯定不像小红书上说得那么夸张,当地朋友告诉我们治安非常好。同行的朋友确实遭遇了抢手机,虽然没抢走,但也受了点小伤。
  • 吃得还不错,不需要带泡面,当地的英式早餐、英国菜、印度菜和意大利菜都挺好吃,不是传说中的“美食荒漠”。
  • 酒店比较贵。
  • 购物不太行,不像美国日本那么好买,许多品牌比国内贵。

特别要提的是天气,十月已经不再是伦敦的旅游旺季,温度大概在10度左右,偏湿冷。当地朋友特意提示要穿waterproof,也就是冲锋衣。实际体验之后明白了原因,这里的雨可谓是霪雨霏霏,下得不大,但说下就下,而且可能伴有大风,穿雨衣忒费劲,打伞又举不住,而且大风带着小雨一样会把衣服打湿。

如今许多App都涉及社交网络,如 Twitter、WhatsApp 和 Facebook。这些平台必须扩展以处理数十亿用户(图节点),这并非易事。构建和维护一个可扩展的社交网络基础设施需要仔细的规划和战略性的数据建模。实际上,像Facebook这样专业的社交网络应用有专门的团队来做这块内容,对其性能进行极致的优化。但对于许多希望加入社交网络功能的小型App,如一个创业公司项目,建立一个团队来做这样的架构显然是不现实也没有必要的。

那么,利用合适的数据建模和存储能否构建一个高性能易扩展的社交网络?答案是肯定的。早期的Facebook使用mysql作为底层存储来构建社交网络,但今天我们可以有更好更高效的存储选择:MongoDB。

在conda环境中升级软件包后,talib无法接受DataFrame作为输入,错误信息如下所示:TypeError: Argument 'xxx' has incorrect type (expected numpy.ndarray, got DataFrame)

1
2
3
4
5
6
Traceback (most recent call last):
  File "/data/1.py", line 7, in <module>
    df['SMA_5'] = ta.SMA(df['Close'], timeperiod=5)
  File "/data/miniconda3/envs/a/lib/python3.10/site-packages/talib/__init__.py", line 64, in wrapper
    result = func(*_args, **_kwds)
TypeError: Argument 'real' has incorrect type (expected numpy.ndarray, got DataFrame)

大多数网络搜索结果都具有误导性,比如将df转换为np数组。由于在更新软件包之前代码能够正常运行,因此问题应为软件包不兼容的问题。

今天遇到Win11中 D 盘在磁盘管理工具中显示可用,但在文件管理器中却不可见的诡异情况。网上搜了许多方案,如在设备管理器中更新驱动,禁用再启用设备,用diskpart重新删除新建分区,改卷标改盘符等等都不好使。

问题描述

  • 新建D盘,在diskmgmt.msc磁盘管理器中可见,一切正常。甚至能打开文件浏览器(只是左栏不显示磁盘)
  • D盘可正常使用,如在命令行中使用
  • 修改盘符为“E”或其他盘符,文件浏览器中就可见了,但改回“D”又会消失