在90年代的笔记本上使用ChatGPT


好久没写博客了,来水一篇。昨晚在水群的时候看到 dialup.net 编写了一个 16 位 Windows 版本的 ChatGPT 客户端——WinGPT,这样 Windows 3.x 也可以使用上人工智能聊天技术了。之前还看过 Squirrel Monkey 做的整活视频《If ChatGPT were around in the 1980s...》,这次属于是成真了。

wingpt.jpg

这是怎么做到的?根据作者的介绍,他把较新的 WolfSSL 移植到了 16 位 Windows 上,这样应用程序就可以使用其接口直接处理 TLS 1.3 而不需要其他主机当代理来终结 TLS 了。当然由于时代的限制,只能使用一些比较弱的加密方式,是有安全隐患的。另外,当今的 API 并不太会考虑传输内容的尺寸进行优化,JSON 的处理同样需要一些内存。在那个年代的系统上,内存的使用是一件非常痛苦的事情,因此 WinGPT 的单次交互内容需要尽可能小,作者就限制了输入文本的长度,也一并把上下文的发送给砍掉了。

顺便一提,这个作者在写 WinGPT 的时候,也问过 ChatGPT 怎么样来实现软件中的状态栏,但是它给了一个错误的答案。

下面则是记录一下老爷车上网开上了信息高速路,去和那“谈天吉批提”聊天的技术细节。

手里刚好有一台 Toshiba Satellite Pro 480CDT 笔记本,因此我准备在它上面运行,来一场划时代的碰撞。这台笔记本搭载了 Intel 的 Pentium w/MMX @233MHz 处理器(代号 P55C)和 160MB EDO DRAM 内存,以及 Yamaha OPL3-SA3 声卡、Chips & Technologies 65555 显卡、800x600 TFT 24 位真彩色显示器、33.6Kbps 调制解调器(但我没买 DAA 模块,没法插电话线)、USB 控制器、两个 32 位 CardBus 卡片扩展槽。是一个还算高级的笔记本,毕竟在 97 年卖两万多人民币呢。我在他上面装了 MS-DOS 6.22 + Windows 3.2、Windows 98 SE、Windows 2000 Professional 和 Alpine Linux,使用 GRUB2 引导。

我没有 Windows 3.x 下有驱动的 PCMCIA 以太网卡,也没有给内置 MODEM 买 DAA 模块,因此选择使用串口上网。其实串口上网是和拨号上网一样的,MODEM 只不过是把串口信号调制成音频信号通过电话网络传输。在这里,我使用一条 USB 的 RS-232 串口线连接现代笔记本(Linux)与上古笔记本(Windows 3.2),图中的 DB9 到 RJ45 console 接口的转换器是昨晚看到 WinGPT 以后加急购买的。

serial-line.jpg

在串口上跑 TCP/IP 常见的有两种协议,SLIP(Serial Line Internet Protocol)和 PPP(Point-to-Point Protocol)。PPP 有协商鉴权和分配 IP 的过程,因此在那个年代多是使用 PPP 来上网。我只需要让 Windows 3.2 通过 Linux 的网络上网,不需要那些有的没的,因此使用 SLIP 即可。SLIP 和 PPP 都可以在 Windows 3.x 上使用 Trumpet Winsock 实现。Trumpet Winsock 通过提供 Winsock 兼容接口的方式来为使用 Winsock 的应用程序提供更高级的网络连接。

Linux 上可以使用 slattach -s 115200 -p slip -L /dev/ttyUSB0 在 tty 上以 115200 的波特率处理 SLIP,并创建一个网络接口。

Snipaste_2023-06-29_00-30-12.png

一般来说,创建的这个接口是 sl0。同样的,在 Trumpet Winsock 上配置好串口号和波特率,以及奇偶校验、停止位等参数,最后写好 IP 地址、DNS 服务器,这样就完成了。

trumpet.jpg

接着回到 Linux 添加 IP 并拉起网卡,Linux 主机就和 Windows 3.x 连接起来了。

# 因为是点对点连接,因此用这种写法来添加 IP,内核会自动添加一个到对端的直连路由。
ip addr add dev sl0 44.159.73.196/32 peer 44.159.73.203
# 拉起 sl0 并设置其 MTU 为 576,对于这种连接来说小 MTU 会好点。
ip link set dev sl0 up mtu 576

因为是第 3 层的点对点协议,并不是基于以太网,因此不能直接将其桥接到 Linux 的外网接口上来上网。这里我通过开启 ARP 代理的方式,把外网接口和 sl0 连接起来。ARP 代理的原理是以被代理主机(这里是 Windows 3.2 笔记本)的名义在广播域中宣告被代理 IP 的 MAC 为自己网卡的 MAC,这样子网内其他主机(包括网关)就会像下图一样,把发往被代理主机的报文发给代理主机了。

Snipaste_2023-06-29_00-49-32.png

这样网络就通了,也就可以网上冲浪并与“谈天吉批提”聊天了。

ping-tracert.jpg


协议: 本文根据 Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License 进行授权。

标签: 老爷车


  • 这篇文章一条评论也没有……

撰写新评论

account_circle
mail
insert_link
mode_comment