一切的一切始于那场 DeepSeek API 断网故障。

DeepSeek API 断网那天,一开始我并不慌。家里服务器上跑着两张卡,本地 Qwen3.8:27b 随便用。但是,当把模型从云端 DeepSeek 切换回本地之后,我开始慌了——会话中已有的上下文超出了本地模型的上限。

DeepSeek Harness 上下文压缩机制是通过大模型来概括精简上下文,但是云端大模型不可用,上下文压缩也就不可用。就在这时,一直在角落里默不作声的 Grok 提议:“你需要的并不是上下文压缩,而是上下文裁剪。不需要大模型参与,只需要剪掉超出限额部分的上下文就好”。于是,dsh-command-context-trim 插件项目就这样开始了。

插件最一开始的功能很简单,不靠大模型,只靠脚本搜索上下文,保留头部的系统提示和工具集,从最古老的对话部分开始,将对话成对剪掉(一则用户消息和一串模型回复为一对)。原则上保留最后一对对话,这样可以保证可以继续会话内容。

就这样度过了 DeepSeek API 的断网期。很快,迎来了 DSH v0.1.7-rc 更新。这一版更新为了配合 DeepSeek 云端 API,在上下文机制和计算上引入了头部预留(headroom),固定为 65536 tokens (64K)。本地模型的 128K 上下文顿时有一半不能用了。表现现象就是上下文还没填到 50% 就触发压缩(compaction)。于是,插件里面又添加了上下文计算调优功能。

总算解决了上下文计算,新的问题又出现了—— DSH内置的上下文修剪(prune)功能会将上下文中最后一组会话剪掉! 表现出来的现象是,模型先读进一个文件 -> 文件太大触发修剪(prune)-> 刚读进来的代码被修剪掉 -> 模型再次读入同一个文件…… 如此循环。于是,插件中又多了上下文修剪调优功能。

DSH v0.1.7-rc 引入的另外一个大规模更新就是独立的插件设置页,对插件设置页的制作提出了规范化的要求。这是好事。于是,我又花了几天时间,指导AI适配新的插件设置页。

终于,在 DSH v0.2.0-rc.2 上线之际,插件的更新完成了!

阅读全文 »

升级固件嘛,不就是下载个升级包,然后运行一下就完事了…… 当然没那么简单!

因为公司的电脑严格控制应用程序安装,所以只能拿自己的 ThinkPad 来升级 HP 扩展坞的固件。不管尝试几次都可耻地失败了。

HP_TBT3_Error.png

如图所示,声卡、DisplayPort 和 USB 都能正常更新,唯独 Intel Thunderbolt 3 Dock Firmware 一项一直提示找不到设备。

阅读全文 »

HAOS 固然好,但是不提供 pi-hole 组件。Ubuntu 也不错,但是 Home Assistant Core 没有组件支持。为了合并两台小主机,只能把 Home Assistant 迁移到 Ubuntu 下面,通过 docker 提供附加组件。

这次需要转移的服务如下:

  • Home Assistant Core
  • Mosquitto
  • Zigbee2MQTT (SONOFF Zigbee 3.0 Stick)
  • Zwave-JS UI (Zooz Z-wave Stick ZST10)
  • ESPhome

阅读全文 »

不得不说,Linux 开发者都是一帮偏执的“天才”程序员。曾经有人质疑 dnsmasq 是否应该强制将 67 端口绑定至 0.0.0.0(所有网络界面),但是几位“天才”非要固执地说,这是为了负载平衡。结果,由 dnsmasq 魔改的 pihole-FTL,真的就和 libvirt 依赖的 dnsmasq 冲突了……

依照前人的解决办法,依然无法让 pi-hole 正常工作。在参阅了 pi-hole docker 文档和另一位前人的笔记之后,终于找到了目前为止最好的解决方案。

阅读全文 »

DSM 7.2 版本以上移除了对 USB 电视接收棒的支持,Plex 的 Live TV + DVR 功能也无法使用了。目前网上主流的解决方案就是买个 HDHomeRun,专门用来接受电视信号。

既然手上有电视接收棒,为什么不自制一个 HDHomeRun 呢?查了一下,网上鲜有教程,于是只能自己研究了

阅读全文 »

之前因为 Pi-Hole 在家庭网络里的重要地位,甚至导致家庭控制器的 Ubuntu 系统升级推迟了一年。毕竟从 20.04 升级到 22.04 需要大量的重新配置工作。所以,把 Pi-Hole 移到 Docker 里面便成为一个必要的步骤。

之前尝试将设置导出,并且直接创建 Pi-Hole 容器,直接使用导出的设置。但是结果是 FTL 崩溃,不管是 bridge 网络还是 host 网络均以 FTL 崩溃告终。

后来发现,如果把 DHCP 关掉,只用 DNS 部分是没问题的。再进一步,终于找到了解决办法。

阅读全文 »

起因就是家里两个小家伙总是争抢一台电脑玩游戏,抢不到就唧唧歪歪。想想 Minecraft 也不是什么吃显卡的游戏,目前显卡价格虽然降了一些,但还是很贵。而且 Intel UHD 核显也的确性能拉跨。家里正好躺着一块 Nvidia GT 1030 “亮机卡”,性能足够两个人同时玩 Minecraft。

搜刮了一下互联网,看来我不是第一个研究“把一块显卡掰成两半使用”的人,不仅已经有人实现了,还记录了详细的步骤,另外还有人做了视频教程。

说搞就搞,打开 Kijiji 开始捡垃圾。CPU 得要个强劲的,核心数量优势在 AMD Ryzen 这边,相应的主板就选择 B450,内存 32GB。于是捡了一圈垃圾,又从我的电脑上拆了两条内存,加上刚换下来的电源,组装了这么一台奇怪的机器:

  • AMD Ryzen 7 2700 (8-core, 16-thread)
  • Asrock B450M-HDV R4.0
  • 2x16GB Vulcan T-force 3200MHz
  • Nvidia GT 1030 2GB (D5)

硬件搞定,接下来就是软件部分了。遵照教程,软件使用 Proxmox 7.2 虚拟环境 + Windows 10。

阅读全文 »

由于实在受不了 Windows Storage Spaces 的读写性能,一拍脑门,转向 Linux。顺便体验一下大红大紫的 ZFS。

说干就干,虚拟机上安装 Ubuntu 20.04 LTS。选择 Ubuntu 是因为用的人多,apt 仓库里可用的软件多。选择 LTS 是因为稳定。照例,ESXi 上新开个虚拟机,很快就安装好了。

接下来就是一些配置。

阅读全文 »

目前我的服务器上用一块 LSI 9207-4i4e (SAS2308) 连接 16 盘位 SAS 背板。这些硬盘分别属于两个虚拟机。所以,无法将整个 LSI 9207-4i4e 直通给任何一个虚拟机使用。这个时候,硬盘直通(RDM,Raw Device Mapping)就是一个非常好的解决方案了。

但是,将硬盘直通给 Windows 10 虚拟机的时候,性能出现了问题。硬盘的读写速度降到了 20MB/s 以下!

阅读全文 »