fix Zed go lsp error
前言 前段时间在使用 Zed 编辑器时,出现了 go lsp 启动错误,未能正确找到 go 语言的二进制文件。 本文将一步步从源代码分析修复 Zed 的 go lsp 启动错误。 步骤 从错误信息可以得知,具体的逻辑在 /crates/languages/src/go.rs#L76,可以看到是 delegate.which("go".as_ref()).await.is_none() 方法的返回值为 true,导致 go 语言的二进制文件未找到。 接下来寻找 which 方法的定义位置,可以看到是在 /crates/project/src/lsp_store.rs#L12758,这段代码实现了 LspAdapterDelegate trait 中的 which 方法,用于在系统中查找可执行文件的路径。 修改 which 方法,添加一些日志,以便更好地理解其执行过程。 async fn which(&self, command: &OsStr) -> Option<PathBuf> { let mut worktree_abs_path = self.worktree_root_path().to_path_buf(); if self.fs.is_file(&worktree_abs_path).await { worktree_abs_path.pop(); } let shell_path = self.shell_env().await.get("PATH").cloned(); // Debug output log::info!( "which() called for command: {:?}, worktree_abs_path: {:?}, shell_path: {:?}", command, worktree_abs_path, shell_path ); let result = which::which_in(command, shell_path.as_ref(), worktree_abs_path).ok(); log::info!("which() result for {:?}: {:?}", command, result); result } 重新编译运行 Zed,查看日志: ...
Building Zed for Windows
前言 本文将介绍如何在 Windows11 上构建 Zed 编辑器。 依赖性 Zed 是由 rust 编写的,因此需要安装 rust 工具链。 安装 Visual Studio 2022 ,安装符合电脑架构的 C++ 工具集。 主要是如下组件: { "version": "1.0", "components": [ "Microsoft.VisualStudio.Component.CoreEditor", "Microsoft.VisualStudio.Workload.CoreEditor", "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", "Microsoft.VisualStudio.Component.Windows11SDK.26100", "Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions.CMake", "Microsoft.VisualStudio.Component.VC.CMake.Project", "Microsoft.VisualStudio.Component.VC.Runtimes.x86.x64.Spectre" ], "extensions": [] } 构建 安装完依赖项后,可以从源代码构建 Zed 编辑器。 Clone Zed Repository gh repo clone overstarry/zed cd zed 构建 debug 版本 cargo run 编译中出现了 ,需要将前面安装的 cmake 添加到环境变量中。 设置完,重新运行 cargo run 即可。 ...
zed 配置 codex acp
前言 在前面的文章![https://jasminides.com/posts/zed-acp-claude-code/] 介绍了如何在 zed 中 配置 Claude Code, 本文将介绍如何在 zed 编辑器中安装配置使用 codex。 安装 本文使用的环境是 Windows11 下的 wsl,进入 wsl,输入wget https://github.com/zed-industries/codex-acp/releases/download/0.2.4/codex-acp-0.2.4-x86_64-unknown-linux-gnu.tar.gz 下载 codex-acp, 使用 tar -xvf codex-acp-0.2.4-x86_64-unknown-linux-gnu.tar.gz 解压,将解压后的文件移动到 /usr/local/bin 目录下。 配置 codex-acp 的配置很简单,打开 zed 的设置,填入设置: { "agent_servers": { "Custom Codex Agent": { "command": "/usr/local/bin/codex-acp", "args": [], "env": {} } } } 设置完打开 Agent 面板就可以看到外部 Agents 的选项中已有 Custom Codex Agent 选项。 输入消息,顺利得到回复。 小结 本文介绍了如何在 Zed 编辑器中安装和配置 codex-acp,详细说明了下载、解压、移动可执行文件以及在 Zed 设置中添加自定义 Agent 的步骤。通过简单的配置,即可在 Zed 中顺利使用 Codex Agent,提升了编辑器的智能化体验。期待未来官方带来更多 agent 的集成。 ...
将 MCP Server 提交到 MCP Registry
前言 MCP Registry 是 MCP 官方提供的一个 提供 MCP Server 的平台,开发者可以将自己开发的 MCP Server 提交到 MCP Registry 以便其他用户可以方便的使用,MCP Registry 于 2025年 9月 8号推出了预览版,本文就讲述如何将自己开发的 MCP Server 提交到 MCP Registry。 提交 MCP Server 本文所使用的 MCP Server 是 qweather-mcp-go ,是一个使用 Node.js 开发的 MCP Server, 环境是 windows 11, 其他系统类似。 安装 Publisher CLI 要提交 MCP Server 需要使用安装使用 Publisher CLI macOS/Linux/WSL 使用 Homebrew 安装: brew install mcp-publisher macOS/Linux/WSL 使用预编译的二进制文件安装: # 下载最新版本的预编译二进制文件 curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.0.0/mcp-publisher_1.0.0_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher && sudo mv mcp-publisher /usr/local/bin/ macOS/Linux/WSL 使用源码安装: 需要 Git、Make 和 Go 1.24 以上版本 ...
Zed acp-claude-code
前言 zed 在 0.201.4 版本推出了应用 Agent Client Protocol (ACP) 协议的第一个正式版本,Agent Client Protocol (ACP) 是一个将外部 Agents 与编辑器集成的开放协议,zed 在这个版本中集成了 Google Gemini CLI , 开发者可以自己开发兼容 ACP 的自定义代理,本文就是讲述如何安装配置 acp-claude-code 以在 zed 更方便的使用 Claude Code. 配置 acp-claude-code 的配置很简单,打开 zed 的设置,填入设置: { "agent_servers": { "Claude Code": { "command": "npx", "args": ["acp-claude-code"] } } } 设置完打开 Agent 面板就可以看到外部 Agents的选项中已有 Claude Code 选项。 新建 Claude Code 线程,发现报错了,提示 program not found 。 根据以往的经验,这种错误主要发生在 windows 系统上,windows 系统的用户应该使用如下配置。 ...
Enhancing qweather-mcp-go
前言 Claude Code 是 Anthropic 公司开发的 AI 编程工具,它在终端运行,能理解整个项目架构,通过自然语言指令进行代码生成、Bug 修复、Git 操作和自动化开发流程,显著提升开发效率。它支持 macOS、Ubuntu 和 Windows (WSL),并提供按量付费或包月订阅模式。 本文将使用 Claude Code 来增强 qweather-mcp-go 项目,qweather-mcp-go 是一个 mcp 工具,可以方便的查询天气情况等数据。本文将一步步使用 Claude Code 来为 qweather-mcp-go 添加 Streamable HTTP 的支持。 开始 开始编写代码之前,介绍一下使用的工具及环境: 开发工具: zed mcp: context7 、 server-sequential-thinking AI 编程工具: claude code 模型: claude-sonnet-4 qweather-mcp-go 当前只支持 stdio 和 sse 协议,我们来为它添加 streamable http 的支持。 初始化项目 打开终端,输入 /init 初始化项目,会在项目中生成 CLAUDE.md 文件,使 Claude Code 能够快速理解项目。 实现 在 Claude Code 中输入以下内容: 请按照以下步骤实现 Streamable HTTP 支持: 1. 首先阅读 GitHub issue:https://github.com/overstarry/qweather-mcp-go/issues/4,理解具体的需求和期望的功能 2. 使用 context7 工具获取 github.com/mark3labs/mcp-go 库中与 Streamable HTTP 相关的 API 文档,重点关注: - 流式 HTTP 请求和响应的接口定义 - 相关的结构体、方法和配置选项 - 使用示例和最佳实践 3. 基于获取的文档信息,分析当前 qweather-mcp-go 项目的代码结构,确定需要修改的文件和组件 4. 提出一个详细的实现方案,包括: - 需要实现的具体功能点 - 代码架构设计 - 主要的实现步骤 - 可能遇到的技术挑战和解决方案 5. 在开始编码前,先展示完整的实现计划供确认 输入后可以看到 Claude Code 会创建计划来一步步实现需求。 ...
Docker Push Error
问题 最近升级 Docker-Desktop 后,发现 push 镜像到 nexus 注册表时,报错如下: error from registry: unknown 升级到 v4.42.1 时,甚至出现镜像不能顺利上传的问题。 解决 通过查阅相关 issue , 发现是 nexus 版本太低,不支持目前主流的 OCI 镜像标准,如果想要解决,可以有两种方法解决: 1 升级 nexus 版本,从稳定版 Nexus 3.47.1 支持 OCI,升级到此版本以上即可解决。 2 通过 –provenance=false 参数解决,–provenance 标志是 docker buildx build 命令的一个选项,用于控制是否生成 provenance 凭证 。它是 –attest=type=provenance 的简写形式 。 启用 Provenance (默认行为): 在较新版本的 Buildx 中,provenance 凭证是默认启用的 。您也可以显式地使用 true 来启用它,这会以 mode=min 的模式附加凭证 为了兼容旧的镜像仓库,可以禁用。 小结 本文讲述了在使用 docker push 时遇到由于注册表版本太低导致的推送镜像失败问题,并提出了两个解决方案,对于两个方案,如果允许升级的话,最好还是更新 nexus 版本来解决,不能升级的话可以使用 –provenance=false 参数解决。 参考 https://github.com/docker/build-push-action/issues/780#issuecomment-1408361775 https://github.com/docker/buildx/issues/1653 https://central.sonatype.org/faq/what-happened-to-issues-sonatype-org/ https://github.com/docker/buildx/issues/1513#issuecomment-1401751716
Dify 学习 - 安装和初探
前言 Dify 是一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等,让您可以快速从原型到生产。本篇将介绍如何安装和初步使用 Dify,接下来还会有多篇介绍 Dify 的文章,敬请期待。 安装 接下来介绍如何使用 Docker 安装 Dify。 安装 Docker 在各个操作系统上安装 Docker,可以参考 Docker 官方文档,这里就不进行叙述了。 Clone Dify 仓库 使用命令 git clone https://github.com/langgenius/dify.git 克隆 Dify 仓库。 启动 Dify 进入 Docker 目录,拷贝一份环境变量配置文件,使用 docker compose up -d 命令启动 Dify。 cd dify/docker cp .env.example .env docker compose up -d 过一会儿,使用 docker compose ps 命令查看容器状态,确保所有容器都正常运行。 设置管理员账号 访问 http://localhost/install 设置管理员账号,设置完成之后,访问 http://localhost/signin 即可登录。 ...
使用 gpt 改造你的小米音箱
前言 前段时间看到了一个项目 mi-gpt ,可以将你的小爱音箱接入 gpt,改造成专属于你的语音助手。 接下来就由作者来介绍小爱同学从零接入 deepseek 的过程。 设置环境变量和配置文件 mi-gpt 有两种部署方式,一是使用 docker 部署,二是使用 Node.js 进行部署,本文使用 docker 进行部署使用。 需要提供两个文件 .env 和 .migpt.js 文件,.migpt.js 是配置文件,包括一些配置,.env 是环境变量文件,存放 gpt 密钥相关文件。文件的例子可以从仓库里复制,然后进行相应的修改。 启动 使用以下命令启动 docker: docker run -d --env-file $(pwd)/.env -v $(pwd)/.migpt.js:/app/.migpt.js idootop/mi-gpt:latest windows 环境下需要将$(pwd) 替换为绝对路径。 启动后可以通过 callAIKeywords 设置的关键字调用 ai 来响应用户的消息。 小结 本文介绍了使用 mi-gpt 升级你的闲置的小爱音箱,通过简单的测试和使用,个人感觉还不够完善,稳定性不够好,感兴趣的读者可以根据本文的内容进行自行搭建尝试。 参考 https://github.com/idootop/mi-gpt
node.js 项目构建问题及解决
前言 今天在编译构建一个 node.js 项目时,在构建过程中遇到了一些问题,本文将记录问题及对应的解决方案。 问题 1 在执行 npm run build 遇到此提示: error Expected linebreaks to be 'LF' but found 'CRLF' linebreak-style 根据信息可以看出是 eslint 的报错,查看 .eslintrc.js 文件,修改 linebreak-style 对应的行: 'linebreak-style': ['error', process.platform === 'win32' ? 'windows' : 'unix'], 重新运行命令,顺利构建成功。 这个问题的原因是项目的作者可能是使用 Linux 或 Mac 构建的,没有考虑 Windows 的情况,通过这行配置,可以根据运行的环境来决定 lint 规则。 问题 2 在执行 npm start 遇到了第二个问题: Generating browser application bundles (phase: building)...node:internal/crypto/hash:79 this[kHandle] = new _Hash(algorithm, xofLen, algorithmId, getHashCache()); ^ Error: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:79:19) at Object.createHash (node:crypto:139:10) at BulkUpdateDecorator.hashFactory (D:\code\xx\node_modules\webpack\lib\util\createHash.js:145:18) at BulkUpdateDecorator.update (D:\code\xx\node_modules\webpack\lib\util\createHash.js:46:50) at RawSource.updateHash (D:\code\xx\node_modules\webpack\node_modules\webpack-sources\lib\RawSource.js:77:8) at NormalModule._initBuildHash (D:\code\xx\node_modules\webpack\lib\NormalModule.js:880:17) at handleParseResult (D:\code\xx\node_modules\webpack\lib\NormalModule.js:946:10) at D:\code\xx\node_modules\webpack\lib\NormalModule.js:1040:4 at processResult (D:\code\xx\node_modules\webpack\lib\NormalModule.js:755:11) at D:\code\xx\node_modules\webpack\lib\NormalModule.js:819:5 { opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error', 'error:0308010C:digital envelope routines::unsupported' ], library: 'digital envelope routines', reason: 'unsupported', code: 'ERR_OSSL_EVP_UNSUPPORTED' } 根据这个报错,推测可能是啥 hash 算法不支持,通过查阅相关资料,得到以下解决方案: ...