BetterDisplay Pro新增了软件控制HDMI音量的能力,显示器带音箱的一定要试试!
以我自己的联合创新的32寸显示器为例,原本的硬件控制显示器音量的功能是没法用的,只要一调整,就会立刻静音,然后必须用显示器上自带的菜单调整一下才能出声。有了这个之后,调整是纯软件的,完全可以控制音量了。

这里一定要选软件,而不要选硬件或者Combine。

背景只是
macOS下,显示器的HDMI音量系统是无法调整的。
以我自己的联合创新的32寸显示器为例,原本的硬件控制显示器音量的功能是没法用的,只要一调整,就会立刻静音,然后必须用显示器上自带的菜单调整一下才能出声。有了这个之后,调整是纯软件的,完全可以控制音量了。

这里一定要选软件,而不要选硬件或者Combine。

macOS下,显示器的HDMI音量系统是无法调整的。
最近蛮喜欢Trae宝的。这是我使用的第一个bot应用。我认为它和以往的Agent不一样。
最典型的就是ChatGPT了。用户需要什么和它说,它回答。主要就是文字、语音、图片这三类。缺点是只能做这些,不能干别的。你问它代码问题可以,但是需要你复制粘贴,然后自己去验证。
最典型的是Claude Code和Codex,相比于上一代,这一代的助手更擅长解决各类应用问题,无论是系统、网络、还是桌面和手机上的应用,它们不仅精通修改,擅长操作,还能额外创建新的应用。
缺点是上下文存在限制,你一旦开启新对话,所有东西都得重新来过。后期虽然增加了记忆功能,但是模式是这样的。
就是Trae宝这种形态了。最近ChatGPT统一了额度,并且直接在ChatGPT里可以直接使用Work,不需要切换。因此,ChatGPT也进化到了这种状态。
这种形态简单说,就是在二代和用户之间,增加了新的一层,这一层只复杂调度和反馈,不负责具体的内容,具体的内容有下一级的Agent来完成。因此,Bot有更充足的上下文来记住用户的习惯,而不是具体的任务。这么做的好处就是你可以一直跟某个项目对应的Bot对话,而不用重新开启对话,实际上也没法开启新对话。Bot就相当于是你的助理,你什么事情安排给他,有了反馈他再告诉你。并且,他还会额外的思考一些你需要但是没有注意到的小问题,这样会感觉比上一代只专注于完成任务的助手更加贴心。
比如,我让Bot根据git上的代码,更新App Store Connect上新版的文字说明,也就是新版更新哪些内容,有什么亮点。它做好了之后,反馈给我说,已经更新完毕,内容是xxx,然后又说,它发现原本的应用说明里,有部分内容我们这次已经删除掉了,不再合适继续保留,是否需要它帮我删除。我同意了。这其实就是我原本知道,但是疏漏了的地方,Bot提醒到我了。如果是上一代的助手,就不一定会有这种提醒。
我的耳朵比较敏感,戴入耳的半入耳的,都会戴上一段时间耳朵就发痒,所以之前我一直使用的击音的PowerSports B1,这个是绕后颈的挂耳式的耳机,我很喜欢它,甚至因为第一个因为某天下雨放在双肩包里被水泡开胶了之后,我又买了一个一模一样的。不过这个耳机电池最近不太行了,我就考虑是再买一个同类型的,还是换一个方式。
和ChatGPT商量了一番,决定试试这种耳夹式的耳机。出于外观的考虑,选择了绿联的这款白色的。
我对于这个耳机的初印象很好。
第二台机器要配对蓝牙,只能使用以往的技巧。就是关闭第一台的蓝牙,设备在找不到蓝牙目标之后,会进入配对模式。然后再第二台设备的蓝牙上搜索就可以了。对了,之前需要在app里的打开双设备连接这个功能,默认是关闭的。
我想让手机在外面也能指挥家里那台 Mac 上的 dsh。不是远程桌面那种指挥,是打开手机,看到会话列表,发一句话,看它跑。
问题很快就来了:家里有公网 IP,但从外面连不进来。我查了一下自己的出口,是 175 开头的一个地址,看着就是可以直接拨回来的那种,实际上连不上——家里的路由器默认不接受入站连接,我没有给它做端口映射。而且这个地址是动态的,光猫重启、运营商续租都会变,把它写死进任何配置里,过几天就失效了。
真要顺着这条路走,得在路由器上开端口映射,再挂一个动态 DNS 服务,把会变的地址绑成一个固定名字。这条路是通的,我也认真考虑过,最后还是没走:把一个端口开到公网上,等于让互联网上所有扫描器都能来敲我的门,我不太能接受那种“谁都能访问”的状态。
AI建议我使用Tailscale。我没同意,后来证明我的想法是错的。这是因为我以前使用过Tailscale,那时候的经验限制了我。
那时候我对 Tailscale 的理解就是一条 VPN。于是按它最标准的用法来:手机、VPS、家里的电脑,三台都装客户端。家里没有任何对外开放的入口,VPS 顺便当个落脚点。
但是在安卓上遇到了问题。系统只有一个 VPN 槽位。Tailscale 占了它,我手机上就上不了外网了——能连家里,是连 Google、连 GitHub 全都断。Tailscale 给了一条到内网的路,但它不负责帮你翻墙。
那怎么办?我当时的解法是把 VPS 设成TailScale的出口节点(exit node),让手机的流量先绕到 VPS,再从 VPS 出去。听起来很合理:反正 VPS 是国外的,顺便当个梯子用。
能用,但慢。慢到我宁愿不用。原因也不难想:流量先加密到 VPS,绕一圈再出去,而 VPS 本身是个小机器,线路也一般。这不是 Tailscale 的错,是我把两种完全不同的需求——“连回家里”和“上外网”——硬塞进了同一条隧道里。
后来干脆就不用了。因为Codex这种直接就能使用手机访问了。
这次是AI帮我自动配置的,它配置了一条单独的规则,只有特定的访问才会通过规则走Tailscale。这个是最近的代理应有都有能力,之前我使用的时候代理都还不支持TailScale,所以我使用的官方的客户端。
技术上靠的是 mihomo。它在 1.19.25 版本支持了 type: tailscale 的出站,意思是我可以在 Clash 配置里写一个 tailscale 类型的节点,跟机场节点并列排在一起。FlClash 仍然是手机上唯一的 VPN,翻墙流量照旧走机场,只有去家里那台 Mac 的流量才被这个节点接手。
两个需求分开了,谁也不挤谁。这才是这次的真正收获:不是“省下了一台 VPS”,而是发现 Tailscale 可以按规则用。我以前的用法是“开一条隧道接管全部流量”,现在的用法是“在某些地址上,多一条回家的路”。
配置起来就三段:一个 tailscale 类型的出站,一个 select 组,两条规则。多一条规则,多一条路,仅此而已。
不过它不随 FlClash 启动就开始连接。按官方文档的说法,任何类型的节点都只在第一次有流量命中时才建立连接,所以头几次访问超时是正常的,不是配错了。
真正有意思的是最后一步,子网路由。
移动网关只监听 10.0.0.114:3443,自签证书也只签了这一个地址。如果让手机直接去访问 Tailscale 分给它的 100.x 地址,证书对不上,配对得重做一遍。
所以我没动网关,而是在 Mac 上宣告了一条 10.0.0.0/24 的路由,再到后台批准。这样一来,手机拨的还是 10.0.0.114,包却走的是 tailnet。它以为自己在家里。地址没变,证书没变,配对记录也没变。
这条路也是可逆的。哪天不想给整个网段开门,把宣告改成 10.0.0.114/32,后台重新勾一次,就只放开这一台。
装完我盯着连接状态看了两轮。
在家,Wi-Fi 开着,curAddr 是 10.0.0.6,手机在局域网里的地址。关掉 Wi-Fi 换成移动数据,同一个节点,curAddr 变成 175.x.x.x,运营商给我分的公网地址。
两行字,一个是局域网直连,一个是公网打洞直连,都不是中继。这一点很重要。当年那套三台机器的方案给我留下的印象就是“能连上,但慢”,慢的原因几乎都出在中继或者绕行上。真直连的话,延迟就是你两端网络的自然延迟,中间没有多一跳。
我装完一开始以为,安全是靠那个自签证书保证的——手机上装了 CA 证书才能连上,听起来像是“装了证书才有权限”。这可能吗?不是。证书只干一件事:让手机相信这个 HTTPS 是这台电脑的,链路能加密、不被中间人冒充。它不负责授权。
真正拦人的是配对。网关对所有未配对的请求一律返回 401,配对码是 256 位随机串,只在电脑本机的回环接口上生成,两分钟过期,用过即废,还有频率限制,电脑那边存的也只是令牌的哈希。缺一个都不行:只有证书没有令牌,拿到地址的人就能控制你的电脑;只有令牌没有证书,令牌会被同一个网络里的人嗅探走。
所以这套东西的门禁其实是够的,这一点我很确定。但“认证够不够”和“我愿不愿意把这扇门放到公网上”是两件事。一台能执行 shell 的机器,长期挂在一个被全世界的扫描器反复敲打的端口后面,我睡得不安稳。Tailscale 这条路,公网上根本没有我开放的端口,也就没有这些事。
按这次的用法,不需要了。它不再承担“让手机出网”的职责——那是机场节点的事;它也没成为中继,因为两端打洞成功,直接直连。
只有一种情况我会重新考虑:打洞失败,流量长期走 DERP 中继,而中继节点基本在国外,慢到没法用。那时候才值得起一台国内的小机器自建中继。到那一步,VPS 的角色是提速备件,不再是必需品。
这几年我一直以为 Tailscale 是一条 VPN,包住所有流量。按那个理解搭出来的方案,必然要牺牲别的东西——要么牺牲手机的翻墙,要么牺牲速度,要么再加一台 VPS 去补。我当年选了加 VPS,然后被速度劝退。
这次真正想通的是:它可以是规则里的一条旁路。手机上还是那套代理,只有去家里那台 Mac 的地址,才拐上这条路。翻墙归翻墙,回家归回家,两件事本来就该分开走。
我没有租 VPS,也没有开端口映射。配置加起来不到二十行,全部收益就是:在外面打开手机,能看见家里那台 Mac 上的会话列表。
这两天在折腾我的Windows PC,结果发现事情还蛮多的。
主要是折腾Windows的版本。一开始安装的Windows 11 2023H2,结果发现太老了,想要升级。直接升级到了2026H2之后,发现几个问题,最严重的就是系统一旦睡眠,就再也无法唤醒。只能断电重新开机。
然后SSD还有问题,我让AI检查SSD的健康,结果说存在坏道。今早我看了一下原始订单,当初我特意选择的京东的,5年质保的,还没过保。于是找京东申请售后。
没想到京东现在也拉了。刚刚给我打电话,说这个公司现在不跟京东合作了,可以给我退款,或者我自己去找厂家。然后我问怎么找厂家,说是通过厂家在京东的店的客服聊天就可以。可是现在这个型号的SSD已经比我当初买的时候贵1倍了,京东原价退我我肯定是不能接受的。因为我再买不是还得自己补钱吗?和京东客服声明了我的主张,她和我说需要向上反馈,承诺48小时内回复。
挂了电话。我心想要不联系厂家客服看看,看看到底给不给修。点击商品链接,我4年前买的SSD如果还在卖,价格贵了一倍。客服一上来很热情,和我说这款固态硬盘速度很快。我说我是过来找售后的,本来找的京东,京东说现在你们不和它合作了,需要直接找厂家。厂家客服让我稍等,等了能有20分钟吧。和我说给我转到了售后客服,售后客服先找我要京东的订单号,然后让我给SSD正反面拍照,说可以返厂,返厂检测有问题给换新。我拍照正反面的时候,发现正反面都有撕毁失去保修的贴纸,原来是这个意思,我心想。上传了照片之后,我获得了地址,是上海的。
我想就放过京东吧。不过按照原本的售后流程,应该是京东上门取件,修好了再给我送回来的。现在我自己寄快递了,快递费得京东出。于是我回拨京东客服的电话,电话秒接,但是不是真人,是AI客服,但是说话很自然,理解能力也不差。上来就和我说,注意到我有一个售后订单,并且我还跟厂家客服沟通过了,问我有什么需要?是不是想要寄件地址。
虽然话说得很客气,但是我和厂家客服通过京东应用沟通的过程,京东全程都是有围观的。这让我很不爽。你京东自己说人家不和你合作了,你没法跟我售后,然后围观我和人家厂家客服的对话,你不知道什么叫用户隐私吗?人家不和你合作,虽然还在京东开店,但是你俩也是竞争对手,你直接看对手和客户的对话?商战这么朴实无华吗?
我说不是,我找客服,我说京东承诺给我售后,但是现在什么都没做。AI客服承认了这一点,表示记下来了,晚上6点前会有人给我反馈。
过了一个多小时吧,京东客服给我电话,这次是人工客服。上来和我说他们京东联系不到厂家的售后,没法给我更换。我心想,人工客服就是不如AI客服掌握的信息丰富啊。我说,我已经联系厂家客服了,她还在说,但是我们这边联系不上。我接着说,就是用你们的京东应用,我说,他店开在你京东,你说你联系不上。她说,那是以前的店。我说,现在还开着呢。她没话了。和我强调,按照京东现在的规则现在就是无法售后。我说我理解,我已经和对方谈好了。就差邮寄了。但是如果按照原来的,是不是应该京东上门取件,修好了再上门给我。现在变成我自己邮寄了,邮费京东出了吧。而且我和她强调,只需要单程的运费,因为回来的是厂家邮寄。她送了口气,但是却没有给我敲死,说需要我邮寄了之后申请快递费。我说这样不行,本来我都体谅你们了,不让你们直接给我换新,我都自己找的厂家。你们答应给个快递费还不能敲死,那我邮寄了之后你说申请不下来怎么办?她让我再等等她,她去申请这笔费用。
京东客服打来电话,说可以,申请下来15元快递费,给我打到白条里了。24小时到账。于是我打开京东软件,下了一单快递,扣掉优惠券,加上保价费,一共需要付款10元。
当年我买这款海康威视的CC500 1TB的价格是449元,时间是2022年10月,质保是5年,到2027年10月。现在过了4年,硬盘出坏道了。需要售后,而目前京东这款硬盘还在售,价格已经涨到了899元。并且处于无货的状态。
我经常用 Mac 的“屏幕共享”连接另一台 Mac mini。以前点一下就能进去,最近却不行了。每次连接都会先弹出一个窗口,说远端的 zhaoxin 正在使用显示器,让我选择“请求许可查看显示器”,或者“以 aiUser 身份登录”。默认选中的是请求许可。点连接以后,就一直转圈。
这就很奇怪。两台电脑上我用的都是 zhaoxin,为什么连接自己的电脑,还要等对面有人批准?Mac mini 又不一定有人坐在前面,等下去也不会有人点“允许”。我只能点 Back,重新输入 zhaoxin 的密码,才能进去。进去之后,还需要再次输入一遍密码才能进入桌面。
我一开始怀疑,是 Finder 把文件共享的登录身份搞混了。Finder 那边显示的是我的 Apple Account 邮箱,可是“屏幕共享”的连接详情里,用户名明明写着 zhaoxin。后来我又去看两台电脑的用户列表:本机没有 aiUser,远端 Mac mini 上却有。更有意思的是,选“以 aiUser 身份登录”居然也能进去。也就是说,aiUser 不是一个凭空冒出来的用户名,真正进不去的只有默认那个“请求许可”。
我又检查了远端的屏幕共享设置。允许访问的用户里有 zhaoxin,所以权限本身没问题。试过在输入密码时勾选“记住密码”,下一次仍然要输入。之前我还以为这只是密码没有保存好,现在看起来,事情没那么简单。
最后,我在 Mac mini 上删除了不再需要的 aiUser。删除之前发现,这个账户还开着“查找我的 Mac”。我先把相关功能关掉,再删除账户。结果重新连接时,那个让我选择“请求许可”或 aiUser 的窗口消失了,系统直接让我输入 zhaoxin 的密码。这次勾选“记住密码”后,再连接就直接进入,连密码也不用输了。故障排除。
我怀疑 aiUser 开启“查找我的 Mac”后,在系统里有了某种更高的关联地位,影响了屏幕共享默认选择的连接方式。不过我同时关闭了“查找”并删除了账户,没有单独测试哪一步起了作用,所以不能把这个推测当成确定的原因。能够确定的是:远端多出这个账户时,屏幕共享总把我带到一个无法完成的请求许可流程;清理掉它之后,zhaoxin 的直接登录和记住密码都恢复了正常。
经常有人说ChatGPT很慢,即便是提速了之后还是慢。我看到有人发的测试图,然后自己也测试一下,发现我这次测出来的速度并不慢。刚刚,我遇到了Reconnection 5/5的问题
stream disconnected before completion: IO error: Broken pipe (os error 32)
以往我就是等它继续了。但是今天我突发奇想,新建一个对话,然后让Codex分析,这次故障的原因。Codex分析说,这个对话原本使用的是WebSockets,然后再5次重试之后,换成了http的访问方式。但是在我这里,http的访问是很慢的。因此,我担心一旦回退到http的方式,之后的对话都会继续使用http。
我使用了多种方式进行测试。首先是新建一个对话,然后让Codex分析,Codex说这个新对话还是使用的WebSockets,然后我继续刚刚出错的对话,Codex说这个继续使用了http。于是我退出Codex,重新开,然后继续刚刚出错的那个对话。结果那个对话虽然一开始恢复使用WebSockets了,但是它立刻连续失败了5次,然后又回退到http。我问Codex这种情况怎么办。Codex让我新建一个session,然后重新说明任务。这次终于好了。
当长任务遇到WebSokets失败之后,最好的办法就是新开一个对话,然后重新描述任务。否则就会回退到http,这会导致对话变得很慢,根源是
WebSocket 在长任务中可以复用连接和近期响应状态,减少每次继续请求的开销;HTTP 回退会失去这项优势。
X上关注的一个新闻号今早发了一个法国议会开采石油议案提案没通过的新闻。一开始我还比较同意作者的观点,但是越看到后来,我觉得这事儿越有意思。
事情是这样的,根据法国的法律,为了环保,法国不能开发殖民地的石油。而现在国际市场石油价格大涨到100美元以上,石油太贵了。而法国所属圭亚那本身就有石油。于是就有一个议案提出来,希望可以推翻之前的法律,允许圭亚那开采石油。特别的,这位记者还指出,代表圭亚那当地的议员都投了赞成票。但是,最终的结果是议案没有通过,记者说这就是巴黎方面给拒绝了。
事情到这里,我还是同意记者观点的。但是后面的来了,记者说,距离圭亚那不远,其实就有石油在开采,是法国和美国的公司联合开采的。所以,圭亚那本身也可以直接开采,这次议案就是这家法国公司推动的,但是很可惜没通过。法国人现在每天都得花钱买这个本可以自己独立挖的石油。
事情变得有意思起来了。因为这名记者明显只考虑利益,没有考虑道德。换个说法,汤姆和莱昂合伙做生意,生意火了之后,莱昂决定在两人的店旁边再开一家店,自己独资,卖相同的东西。任谁都会觉得这个莱昂不地道吧。提这个议案的法国公司就是这个莱昂,还好巴黎方面要脸,给拒绝了。