From 2394d732c36b4a69bcccf5eabfcd7abc9abf727e Mon Sep 17 00:00:00 2001 From: yiliang114 <1204183885@qq.com> Date: Thu, 12 Feb 2026 13:11:22 +0800 Subject: [PATCH] Revert "wip" This reverts commit 9b882b4752e6f03f6c2bdf667688cebbd84889ef. --- PR_DESCRIPTION_ZH.md | 53 -------------------------------------------- 1 file changed, 53 deletions(-) delete mode 100644 PR_DESCRIPTION_ZH.md diff --git a/PR_DESCRIPTION_ZH.md b/PR_DESCRIPTION_ZH.md deleted file mode 100644 index 5b25639a0..000000000 --- a/PR_DESCRIPTION_ZH.md +++ /dev/null @@ -1,53 +0,0 @@ -## TLDR - -修复在容器环境(如 code-server 远程开发)中,IDE 客户端因 `host.docker.internal` 域名不可达而无法连接的问题。 - -将 `getIdeServerHost()` 函数改为异步,在检测到容器环境后,先通过 DNS 查询验证 `host.docker.internal` 是否可解析,不可达时自动回退到 `127.0.0.1`。 - -## Dive Deeper - -### 问题背景 - -在 Docker Desktop 中,`host.docker.internal` 会自动配置为指向宿主机的特殊域名。但在以下环境中该域名不一定存在: - -- **Linux Docker**:需要手动添加 `--add-host=host.docker.internal:host-gateway` -- **code-server 远程环境**:不运行在 Docker Desktop 中,没有该域名 -- **Podman 等其他容器运行时**:不一定支持该域名 - -原有实现只通过 `/.dockerenv` 或 `/run/.containerenv` 文件检测是否在容器中,一旦检测到就直接使用 `host.docker.internal`,但未验证该域名是否实际可达,导致在上述环境中 IDE 连接失败。 - -### 修改内容 - -1. **`getIdeServerHost()` 改为异步函数**:新增 `dns.lookup` 检查 `host.docker.internal` 是否可解析 -2. **结果缓存**:首次检测结果缓存到模块级变量 `cachedIdeServerHost`,避免重复 DNS 查询 -3. **debug 日志**:在容器环境下输出 DNS 检查结果,方便排查连接问题 -4. **导出测试辅助函数**:`_resetCachedIdeServerHost()` 用于测试间隔离缓存状态 -5. **完整单元测试**:新增 6 个测试用例覆盖所有场景 - -### 修改文件 - -| 文件 | 变更 | -| ------------------------------------------ | ------------ | -| `packages/core/src/ide/ide-client.ts` | 核心逻辑修改 | -| `packages/core/src/ide/ide-client.test.ts` | 新增测试用例 | - -## Reviewer Test Plan - -1. 拉取分支后运行测试:`npx vitest run packages/core/src/ide/ide-client.test.ts` -2. 确认所有 24 个测试通过(含 6 个新增) -3. 在 Docker 容器中(有 `host.docker.internal`)验证 IDE 连接正常 -4. 在 code-server 远程环境中(无 `host.docker.internal`)验证 IDE 自动回退到 `127.0.0.1` - -## Testing Matrix - -| | 🍏 | 🪟 | 🐧 | -| -------- | --- | --- | --- | -| npm run | ✅ | ❓ | ❓ | -| npx | ❓ | ❓ | ❓ | -| Docker | ❓ | ❓ | ❓ | -| Podman | ❓ | - | - | -| Seatbelt | ❓ | - | - | - -## Linked issues / bugs - -