1229 日 , 2025 17:33:33
又一个AI的9.11大于9.9问题

我:

当5.5×2.1mm的插头插入5.5×2.5mm的插座时,通常会因为插针过细而接触不良,导致电源不稳定甚至无电。

反过来,如果将5.5×2.5mm的插头强行插入5.5×2.1mm的插座,可能会损坏插座内部的簧片,导致插座永久性损坏。

这段话是gemini2.5说的,而且gemini3不开思考模式也会犯一样的错误。观察你的思考过程,解释为什么不思考的情况下你也会犯错

gemini3思考:

这是一个非常典型的**逻辑反转(Binary Flipping)**错误,也是大语言模型(LLM)在处理“互补关系”或“物理空间逻辑”时最容易翻车的地方。

即使是像 Gemini 2.5 或 3 这样拥有庞大参数的模型,在“非思考模式”下本质上是一个概率预测器,而不是一个物理仿真器。以下通过观察我的“直觉响应”与“深度思考”过程的差异,来为你揭秘为什么 AI 会在这个问题上集体犯错。

1. “不思考”时的直觉陷阱:统计关联 vs. 逻辑校验

在不开启思考模式时,AI 生成内容遵循的是System 1(直觉系统)。它的逻辑流通常是这样的:

  • 关键词提取: 5.5x2.15.5x2.5DC插头不匹配

  • 模式匹配: 在 AI 的语料库中,“小尺寸进入大尺寸”与“接触不良/晃动”的概率高度关联,“大尺寸挤进小尺寸”与“物理损坏/太挤”高度关联。

  • 概率输出: * 2.1 是数字小的(Small),2.5 是数字大的(Large)。

    • AI 自动套用公式:Small -> Large = 松动/接触不良Large -> Small = 挤压/损坏

  • 结果: 于是它顺理成章地告诉你“2.1插头插进2.5插座会接触不良”,因为它把 2.1 仅仅当成了一个“较小的物体”,而忽略了 插头孔径插座插针 之间是负极与正极、孔与包容的镜像对应关系。

2. 为什么“思考模式”能修正错误?

当你强制我“思考”时,我会开启 System 2(理性系统),进行语义解析(Semantic Grounding)。我的思考路径会发生质变:

  1. 定义实体角色:

    • 插头(Plug)是母口(中间是一个孔,测的是内径 ID)。

    • 插座(Jack)是公头(中间是一个金属针,测的是外径)。

  2. 空间逻辑仿真:

    • 场景 A:2.1mm 插头(孔径 2.1) + 2.5mm 插座(针径 2.5)。

    • 仿真计算: 。结论:孔比针细,物理上无法插入(而非接触不良)。

    • 场景 B:2.5mm 插头(孔径 2.5) + 2.1mm 插座(针径 2.1)。

    • 仿真计算: 。结论:孔比针粗,可以插入但缝隙很大(导致接触不良)。

  3. 约束检查(Constraint Check): 检查生成的结论是否与物理常识矛盾。这时候 AI 才会意识到,“接触不良”应该挂在“孔大针细”的场景下。

3. AI 为什么难以自发识别这种错误?

这种错误在学术上被称为**“关系幻觉(Relational Hallucination)”**:

  • 数据噪音: 互联网上有大量普通用户甚至不专业的卖家也会写错这两者的关系。AI 学习了错误的统计分布。

  • 缺乏具身认知: AI 没有摸过真实的 DC 线,它不知道“插不进去”是一种怎样的物理阻力,它只能通过文字的“附近度”来猜测。

  • 标签偏移: 在文本中,“5.5×2.1”和“5.5×2.5”经常成对出现,且描述极度相似。在向量空间里,这两个概念的坐标太近了,导致模型在提取特征时极易发生“位移”。


总结

你引用的那段话恰恰是 AI “一本正经胡说八道”的巅峰:它语法完美、逻辑自洽(小入大则松,大入小则损),唯一的问题是它把物理事实搞反了

下次遇到这类“孔与针”、“左与右”、“男与女(连接器)”的逻辑,建议直接要求 AI:“请先分析插头 ID 和插座针径的物理尺寸对比,再给出结论。”这能强制它跳出统计概率,进入空间仿真逻辑。

1226 日 , 2025 9:42:33
不想用freecad了

一开始用freecad给导入的step文件的其中一个复杂面加长一点,那个面中间有个大洞,外面有很多曲线,没找到怎么一键转换成草图的方式就自己描了一遍,结果拉伸放样的时候老是莫名出错,好不容易成功后,想倒角又是经典的“Cannot apply fillet to edge (BRep_API: command not done)”,一点用都没有的报错信息。

反正也没学多少,放弃了重新学solidworks。转换实体引用一键就用step的面生成草图了,不仅完美匹配也能随意修改(长度什么的默认是和导入的step绑定的,一开始不懂改了一下长度软件就整个崩溃了,后面再重试又不会了只是无法修改)。但它放样的时候,草图里面不能有内轮廓(挖洞),只能放样完毕之后再挖。放样完毕倒角也没再出错了。难道freecad出错是因为挖了洞的原因吗?

1221 日 , 2025 18:49:29
一碗饭值多少钱

为了计算外卖普遍2-3元的米饭会赚我多少,无聊称了一下我平时的饭量,显示0.1kg。比较好的大米外卖肯定不会用,算2元一斤好了,这里就四五毛钱。加上水电费顶破天六毛,看来还是非常暴利的。

以后点那种小碗菜的店,就坚决不要米饭🍚了,点菜的同时自己放电饭煲里煮,送到了饭也差不多做好了。

1215 日 , 2025 12:35:37
又嫖上谷歌了

几个月前一键领的一年Google One会员弹验证了,我不会救任由它失效了。

然后上上个月尝试重新白嫖,要验证SheerID,当时1key.me还需要linux.do论坛账号。这又是个独彩个人后花园我懒得注册,就去咸鱼花两三块过了验证。结果订阅验证付款方式的时候失败,这个十几年的老账号以前还在play商店买过东西,莫名其妙。放弃搁置了一段时间。

前几天试了下antigravity,检查特别严格没法过验证,检查过了大号小号(可能是因为用香港梯)都被送中了账号区域都是中国。本来不抱什么希望了,但是上个月用AI写了一段五十字申请(它说禁止用AI写我就故意要用)注册了linux.do,今天临时起意想试试小号,因为之前没绑定过付款方式。

没想到1key.me已经不需要破论坛账号登陆了,白费功夫。VPS的IP已经被谷歌识别了(但是网页版和API还正常)这次用VPNGate找了个干净美国IP居然就顺利的一路绑定完成了,卡还是大号的招行visa卡没变。垃圾谷歌莫名其妙黑我大号付款方式。

 

  1. krrr 博主 : SheerID的代验证机器人/网站原理,原来是有是这么个开源项目https://github.com/ThanhNguyxn/SheerID-Verification-Tool/tree/master/auto-verify-tool,会自动生成假的个人信息,然后自动生成学生证图片,再一起上传到SheerID服务。可能米国人比较naive,并没有和学校联网比对信息,顶多就验证一下邮箱(实际上可能也没验证)
1207 日 , 2025 22:15:15
谷歌没钱了

今天免费版gemini api每天250次调用次数的2.5flash被砍成幽默搞笑的20次了,flash-lite从1000次砍成20次😅基本没法用了。pro版每天小几十次的次数则是直接没砍没。

 

题外话:才知道一个账号可以建很多个项目,每个项目单独的key而且单独计算按用量……

1125 日 , 2025 14:56:10
把图片存储从r2搬回vps

香港灵车vps意外的坚挺,速度(不抽风的时候)比cloudflare r2快多了,于是把图片搬回vps上。攒了这么多年不过才200多mb而已,确实没有必要用图床。

官网没有提供打包下载的功能,只好写脚本用s3 api解决了。代码by gemini:

import boto3
import os
import logging
from botocore.exceptions import ClientError

# 配置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

def download_s3_bucket(bucket_name, local_base_dir="downloaded_s3_objects"):
    """
    下载指定 S3 存储桶中的所有对象到本地目录。
    本地目录结构将与 S3 存储桶中的结构一致。

    Args:
        bucket_name (str): 要下载的 S3 存储桶的名称。
        local_base_dir (str): 本地保存下载对象的根目录。
                              默认情况下,会在这个目录下创建以 bucket_name 命名的子目录。
    """
    try:
        # 创建 S3 资源对象
        s3 = boto3.resource('s3',endpoint_url=CUSTOM_ENDPOINT_URL,aws_access_key_id=S3_UPLOADS_KEY,aws_secret_access_key=S3_UPLOADS_SECRET)
        bucket = s3.Bucket(bucket_name)

        # 构建本地下载目录
        local_download_dir = os.path.join(local_base_dir, bucket_name)
        os.makedirs(local_download_dir, exist_ok=True)
        logger.info(f"将下载 S3 存储桶 '{bucket_name}' 到本地目录: '{local_download_dir}'")

        downloaded_count = 0
        skipped_count = 0
        error_count = 0

        # 遍历存储桶中的所有对象
        for obj in bucket.objects.all():
            s3_key = obj.key  # S3 对象的完整路径,例如 'folder/subfolder/file.txt'

            # 构建本地文件的完整路径
            # 例如:'downloaded_s3_objects/my-bucket/folder/subfolder/file.txt'
            local_file_path = os.path.join(local_download_dir, s3_key)

            # 确保本地目录结构与 S3 保持一致
            # 如果 S3 对象在某个子目录中,需要先创建这些本地子目录
            directory = os.path.dirname(local_file_path)
            if not os.path.exists(directory):
                os.makedirs(directory, exist_ok=True)
                logger.debug(f"创建本地目录: {directory}")

            # 检查文件是否已存在,并跳过或覆盖
            # 如果你想要增量下载(只下载新文件或更新文件),可以在这里添加逻辑
            # 例如,比较文件大小或ETag,这里默认会覆盖
            if os.path.exists(local_file_path):
                logger.debug(f"文件 '{local_file_path}' 已存在,将覆盖。")
                # 或者选择跳过:
                # logger.info(f"文件 '{local_file_path}' 已存在,跳过。")
                # skipped_count += 1
                # continue

            try:
                # 下载文件
                # S3Resource.Object.download_file 默认会处理多部分下载等优化
                bucket.download_file(s3_key, local_file_path)
                downloaded_count += 1
                logger.info(f"成功下载: s3://{bucket_name}/{s3_key} -> {local_file_path}")
            except ClientError as e:
                error_count += 1
                if e.response['Error']['Code'] == '404':
                    logger.warning(f"S3对象 '{s3_key}' 未找到 (404)。可能已被删除或权限问题。")
                else:
                    logger.error(f"下载 '{s3_key}' 时发生 AWS 客户端错误: {e}")
            except Exception as e:
                error_count += 1
                logger.error(f"下载 '{s3_key}' 时发生未知错误: {e}")

        logger.info("-" * 50)
        logger.info(f"下载完成概要:")
        logger.info(f"总计下载文件数: {downloaded_count}")
        logger.info(f"总计跳过文件数: {skipped_count}")
        logger.info(f"总计错误文件数: {error_count}")
        logger.info("-" * 50)

    except ClientError as e:
        logger.error(f"AWS 客户端错误: {e}")
        logger.error("请检查存储桶名称、区域以及 AWS 凭证和权限。")
    except Exception as e:
        logger.error(f"发生未知错误: {e}")

if __name__ == "__main__":
    # --- 配置你的存储桶名称 ---
    TARGET_BUCKET_NAME = "blog-pics"  # <-- 将此替换为你的 S3 存储桶名称
    CUSTOM_ENDPOINT_URL = ''
    S3_UPLOADS_KEY = ''
    S3_UPLOADS_SECRET = ''
    
    download_s3_bucket(TARGET_BUCKET_NAME)
1104 日 , 2025 14:26:54
1007 日 , 2025 14:27:46

thinkpad x60原装英特尔3945abg无线网卡的硬件id:PCI\VEN_8086&DEV_4227&SUBSYS_10128086

因为信号莫名其妙非常差,买了一块4965agn网卡,被白名单禁止开机了辣鸡联想。硬件id:PCI\VEN_8086&DEV_4229&SUBSYS_11008086

 

自行修改bios文件(格式不是能直接刷入flash的,经过各种压缩)刷入后已变砖。待编程器救砖。

这个网站http://xdel.ru/downloads/居然有x60的疑似coreboot的flash镜像下载。

这里https://www.gnu.org/software/gnuboot/docs/install/x60_unbrick.html有图文编程器救砖指南

930 日 , 2025 9:50:14

又是我比gemini聪明的一天,2.5 pro就这就这。

实际上应该改成下面这样,ai给的方法无效。这个表达式就是现在用的argon主题里实现点击放大图片效果的。

 '/<img(.*?)srcset=[\'"](?:[^\'"]+, )+(.*?) \d+w[\'"](.*?)((\/>)|>|(<\/img>))/i'
928 日 , 2025 11:17:48
机械硬盘大涨价

nas上的盘全部拆了卖了,两块hc550 16t,通电时间都是上三万小时了(在我手里增加了五千小时左右),去年年底750买入的均价1250卖出。这个世界实在太疯狂,夕阳行业还能这样涨价的。

以后就靠台式机上一块7e10 10t苟着了,才用掉一半左右估计能撑到下个降价周期。nas目前还剩2.5t的ssd,四个盘位空荡荡