mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-29 14:03:17 +00:00
## 为什么现在做 这次排查「QQ 收不到回复」花了大半程才定位到根因,途中我犯了两类错: 先断言「提示词没写 output_send 规则」(实际 buildSystemPrompt:48-52 写了), 又断言「适配器丢了内容」(实际两版等价、直连上游正常)。 两次都是**在无自动化判据的情况下凭局部证据外推**。 仓库已有 60 个 Go 包、`go build ./...` 仅 2.2 秒,成本极低却无人强制跑。 AtomGit 停用流水线后更无兜底,故迁到 GitHub 补齐。 ## 设计原则:CI 里每条命令都是本地已实测通过的 不写「可能有用先试试」的步骤 —— 未验证的 CI 步骤会把假红灯变成常态, 最后所有人都学会忽略它。本文六个 job 的每条命令都本地跑过: go build ./... ✓ go vet ./... ✓ go test ./... -count=1 ✓(干净克隆亦通过) make check-client-versions ✓ go test -race core + waiter ✓ waiter/initconfig/mock-server 交叉 ✓(5 平台) npm test(cmd/gui) ✓ make check-csrc ✓(告警/ABI/ASan+UBSan/跨架构) ## 六个 job | job | 覆盖 | |-------|----------------------------------------------------------| | go | build + vet + test + **跨平台客户端版本一致性** | | race | 并发核心的竞态检测 | | cross | linux/darwin/windows × amd64/arm64(仅可纯交叉的 3 个 cmd)| | gui | Electron 仓的 Node 测试 | | csrc | C 基础设施门禁 | | docs | 站点配置可解析 | ## 关键事实(都由实测确立,不是推断) 1. **只有 waiter/initconfig/mock-server 能纯交叉编译**。homed、memgc、 homed-kb-migrate 依赖 cgo(gojieba / onnx),必须原生构建 ⇒ 不进 cross matrix。 2. **CGO 必须为 1**:gojieba 需要 cgo,`CGO_ENABLED=0` 下 internal/memory 直接编译失败(实测)。 3. **`go test ./...` 不会碰到 cmd/gui**。该目录是纯 Electron(0 个 .go、 无 go.mod),`./...` 只匹配含 Go 文件的包;只有显式 `go test ./cmd/gui` 才报 "no Go files"。这不是缺陷,是 Go 的包匹配语义 —— 之前把它当 [setup failed] 是误读。 4. **cmd/gui 的 npm test 零依赖**:三个 .mjs 只 import node: 内置模块 (fs/url/path/vm)⇒ 不需要 npm ci、不需要 electron,秒级完成。 5. **测试自足,CI 上不会因缺本地服务而红**:webui 测试用 httptest 与 `127.0.0.1:0`,真实 LLM 测试带 t.Skip 守卫。 6. **action 版本已核实存在**:checkout/setup-go/setup-node/setup-python 均用 v7(经 GitHub API 逐个确认 tag 存在,避免「版本不存在 ⇒ 立刻红」)。 ## 明确不进 CI(依赖真机/密钥/内网,否则只会变 flaky 噪音) deploy-*.sh、waiter 真机(192.168.2.x)、`npm run test-live`(需真 Electron + Xvfb + 真后端)、scripts/kernel-stress/*、需 DEEPSEEK_API_KEY 的真实 LLM 测试。