开发者生态
morning
欺骗 Zed 使其远程服务器在 FreeBSD 上运行
摘要
If anyone from the Zed team is reading this: please support FreeBSD remote servers out of the box. I’m happy to help with CI or anything else, free of charge, feel free to reach out: hayzam@alchemilla...
the
and
Zed
FreeBSD
that
Code
off
can
server
Linux
2026-11-14
1 阅读
约8分钟阅读
arch1e
字号:
如果 Zed 团队的任何人正在阅读本文:请立即支持 FreeBSD 远程服务器。我很乐意为 CI 或其他任何事情提供免费帮助,请随时联系:hayzam@alchemilla.io。我从 16 岁左右就开始使用 VS Code,差不多十年了,老实说,它基本上都很好。但最近它已经变得难以忍受:速度缓慢,而且越来越受到人工智能的拖累。 grahamperrin@ 向我指出 VS Code 现在有 chat.disableAIFeatures ,他们是对的。我完全错过了!至少从我在有限的测试中看到的情况来看,它确实确实关闭了内置的人工智能功能,而且它确实有效。但即使关闭了它,VS Code 仍然感觉很笨重。另一方面,Zed 速度很快,而且它有一个本地开关,可以比 VS Code 稍早关闭所有 AI 功能,这是我非常喜欢的。 (这是设置中的一个切换,或者设置文件中的“disable_ai”:true。)这并不是因为我回避法学硕士。我只是不想让他们尝试编辑我写的每一行,或者坐在角落里对我做出不祥的判断。我仍然自己编写大部分 FOSS 代码:它让我保持理智,而且我觉得 FOSS 开发人员有责任保持代码干净,以便法学硕士可以从哈哈中窃取。我所做的只是比较累人的部分:回归测试、边缘案例以及超出我 20 瓦小大脑所能承受范围的探索。为此,我使用与模型配合良好的工具,例如 OpenCode 。除了自动完成之外......我总是发现整个工具(例如克劳德代码等)在编辑器中非常笨重。让它发挥作用 Zed 还没有 FreeBSD 远程服务器产品,但 FreeBSD 可以毫无疑问地运行 Linux 二进制文件,所以我们使用 Zed 的 Linux 远程服务器。您所需要的只是一个可以通过 SSH 访问的 FreeBSD 服务器。 1. 打开 Linux 兼容性 sudo sysrc linux_enable=YES sudo service linux start sudo pkg install linux_base-rl9 kldstat -m linux64 # should print a module 2. 让 Zed 选择 Linux 服务器 Zed 询问主机运行的平台。 FreeBSD 说 FreeBSD amd64 ,没有可用的服务器,Zed 放弃了。这个包装器对这个问题表示 Linux x86_64 并将其他所有内容传递给真正的 uname 。将其保存为 ~/.local/bin/uname 并使其可执行: #!/bin/sh case " $# : $* " in 1:-sm | 1:-ms ) printf 'Linux x86_64\n' ;; *) exec /usr/bin/uname " $@ " ;; esac 将 ~/.local/bin 放在非交互式 SSH 会话的 PATH 上。对于 zsh,将其添加到 ~/.zshenv(使用您的 shell 的等效项):export PATH = " $HOME /.local/bin: $PATH " 这是一个小谎言,但它是一个包含的谎言,也是我想退出的部分。 3. 连接。通过 SSH 从 Zed 连接并打开一个文件夹。第一个连接将 Linux 服务器上传到 ~/.zed_server/ 。要观看,请运行 tail -f ~/.local/share/zed/logs/server-workspace-*.log 。 4. 使用 (FreeBSD) 修复程序运行内核 如果没有它,您将可以正常连接并得到一个空的项目树,服务器日志中会出现以下内容: 错误处理条目无法读取目录条目 原因:无效参数(操作系统错误 22) 修复程序是 ec6629628cb ,位于 main 、 stable/15 和 releng/15.2 中,因此 15.2-RELEASE 将包含它。如果错误仍然存在,请检查是否使用 uname -v 引导了新内核。通俗地说就是这个错误 为了展示您的项目,Zed 向服务器询问每个文件夹中文件的名称,一次几个。 Zed 为每个批次留出少量空间。想象一下,一位老师向一名学生朗读班级名册,学生将名字写在便利贴上(我无法想出更好的类比,请坦白说)。老师在读的时候划掉了每个名字,而她再也没有读过被划掉的名字。学生的笔记可以容纳 6 个名字。老师四人一组读书,这是一个明智的习惯,几乎每次都效果很好。但 6 并不是组的整数,所以她读到了 8 个名字,然后将所有 8 个划掉。纸币上只有 6 个。现在她陷入了困境。在检查之前,她的衬裙已经变得不合身了。她不能交出适合的 6 篇,而保留另外 2 篇以供以后使用,因为它们已经被划掉了,她永远不会再读它们。所以她报告了一个错误,至少声音很大。当我尝试安静的方式时,我的 1,002 个文件中有 112 个在没有任何警告的情况下消失了(从列表中)。我敢肯定,大声的错误胜过安静的损失。 Zed 看到了错误并确定它无法读取该文件夹,并将其显示为空。解决办法很小:不要读取超出笔记上的名称。读 6 个,划掉 6 个,再回来读下一个 6 个,直到卷完。真正的bug中,老师是FreeBSD的Linux翻译器(Linuxulator),注释是一个768字节的缓冲区,一组4个名字是一个512字节的块。对于内核迷来说这是一种回归。 2026 年 2 月修复 NFS 目录返回虚假条目( 110f2567cb51 , PR 292282 ),更改了 sys/compat/linux/linux_file.c 在 linux_getdents() 和 linux_getdents64() 中调整其本机读取大小的方式: /* 2026 年 2 月之前 */ buflen = min (args -> count , MAXBSIZE); /* 之后:每个请求都向上舍入为 512 字节块 */ buflen = min ( roundup2 (args -> count , DEV_BSIZE), MAXBSIZE);如果调用者的缓冲区不是’
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱