chore(module): Go module 路径随托管地迁移 gitcode → github

## 背景

仓库早已迁移到 GitHub(`github.com/JianFeeeee/HomeAgent`,CI/CD 都在那边跑),
gitcode 保留为**国内只读镜像**(`ci.yml` 的 sync-gitcode-main 快进推送)。
但 go.mod 的 module 路径一直是 `gitcode.com/JianFeeeee/...` —— 既与权威源
不符,`meta.SourceURL`(AGPL §13 的源码提供入口)也指向镜像而非实际运行的代码。

## 关键区分(这是本次改动安全的前提)

两个 module 是**不同**的,影响面差一个数量级:

| module | 谁依赖 | 改它的后果 |
|---|---|---|
| `.../HomeAgent`(主仓) | **只有主仓自己** | 内部重构,零外部影响 |
| `.../homeagent-sdk`(SDK 仓) | 主仓 49 文件 + 所有外部插件 | 需重编插件 |

★ 实测确认:**插件不 import 主仓 module**(`strings qq/plugin.bin | grep HomeAgent` = 0),
只依赖 SDK 仓。而插件与内核的边界是 **RPC 方法名字符串**
(`plugin.init` / `tool.invoke`…,见 proc/protocol.go),**与 Go module 名无关**。
⇒ module 改名**不改变任何 wire 协议**,现网已装的插件照常运行。

SDK 的 GitHub 仓名是 `homeagentsdk`(无连字符),module 路径必须与之精确匹配,
否则 `go get` 会因路径不符失败,故取 `github.com/JianFeeeee/homeagentsdk`。

## 改动

- `go.mod` / `go.sum`:两个 module 路径 + require/replace
- 277 个 Go 文件 + Makefile + 打包脚本的 import 与 ldflags 路径
- SDK 仓 `meta.CoreModule`、`tools/hmapdev` 的 module 声明与工程模板
- 对外文档/链接的仓库地址(README、PLUGIN_DEV、OVERVIEW 等)

## 明确**保留** gitcode 的地方(镜像机制,不能动)

- `GITCODE_TOKEN`、`GC_URL="…@gitcode.com"`(CI 同步 job)
- `gitcode.com/api/v5/...`(release 附件上传)
- git remote `gitcode`(镜像拉取/推送)
- `docs/zh/ci-cd-runbook.md`(整篇讲镜像运维)

## 验证

- `go build ./...` / `go vet ./...` 绿
- `go test ./... -count=1` → 48 包 ok / 0 FAIL
- hmapdev 工具链编译通过(`third_party/homeagent-sdk/tools/hmapdev`)
- 全仓残留检查:module 形态的 `gitcode.com/JianFeeeee` = 0
- 镜像机制抽验:GC_URL / @gitcode / api/v5 / remote 均完好

## 顺带修正

`hmapdev/templates.go` 的注释此前写「gitcode 的模块不在 proxy.golang.org 上」——
module 已迁 GitHub,该论断不再成立。改为如实说明**为何仍默认 replace 到本机 SDK**:
离线可构建、避免版本漂移、内网可用。理由与托管地无关,故 replace 保留。
This commit is contained in:
JianFeeeee
2026-10-08 10:39:54 +08:00
parent 476e1b1296
commit 6d38a164eb
305 changed files with 729 additions and 724 deletions

View File

@ -7,7 +7,7 @@ import (
"strings"
"testing"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// 子进程架构的性能基准(Part 6.6 验收项)。

View File

@ -5,7 +5,7 @@ import (
"encoding/json"
"fmt"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// coreHandler 把插件发来的 RPC 调用路由到内核 PluginSDK。

View File

@ -3,9 +3,9 @@ package proc
import (
"encoding/json"
"fmt"
"gitcode.com/JianFeeeee/HomeAgent/internal/knowledge"
"github.com/JianFeeeee/HomeAgent/internal/knowledge"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// handleGraphMemory 处理图记忆(实体/关系):recall / commit / introspect / merge / purge。

View File

@ -4,7 +4,7 @@ import (
"encoding/json"
"fmt"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// handleRegister 处理注册面:工具 / stage / 输出通道 / 插件 API / 入站通道。

View File

@ -4,7 +4,7 @@ import (
"encoding/json"
"fmt"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// handlePluginMgr 处理插件管理:reloadOne / listLoaded / isDisabled。

View File

@ -7,7 +7,7 @@ import (
"strings"
"testing"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// 端到端:用**真实 hmapdev 模板**编译的插件,经内核 proc 通道加载运行。
@ -25,7 +25,7 @@ const e2ePluginSource = `package main
import (
"strings"
sdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
sdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
type e2ePlugin struct{ name string }
@ -148,8 +148,8 @@ func buildPluginWithRealTemplate(t *testing.T, businessCode string) string {
}
mustWriteFile(t, filepath.Join(dir, "go.mod"),
"module e2eplugin\n\ngo 1.25\n\n"+
"require gitcode.com/JianFeeeee/homeagent-sdk v0.9.2\n\n"+
"replace gitcode.com/JianFeeeee/homeagent-sdk => "+sdkPath+"\n")
"require github.com/JianFeeeee/homeagentsdk v0.9.2\n\n"+
"replace github.com/JianFeeeee/homeagentsdk => "+sdkPath+"\n")
bin := filepath.Join(dir, "plugin.bin")
cmd := exec.Command("go", "build", "-o", bin, ".")
@ -241,7 +241,7 @@ func TestE2E_RealTemplatePluginFullLifecycle(t *testing.T) {
func TestE2E_RealTemplateReadOnlyPluginDoesNotOverwrite(t *testing.T) {
const readerSource = `package main
import sdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
import sdk "github.com/JianFeeeee/homeagentsdk/sdk"
type readerPlugin struct{ name string }

View File

@ -8,7 +8,7 @@ import (
"sync/atomic"
"time"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// ---- 事件类型编码(编译时确定,与 pubsdk.EventType 一一对应)----

View File

@ -45,7 +45,7 @@ import (
"os/exec"
"time"
sdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
sdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
type gcPlugin struct{ name string }
@ -378,7 +378,7 @@ import (
"syscall"
"time"
sdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
sdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
type gcPlugin struct{ name string }

View File

@ -7,7 +7,7 @@ import (
"sync"
"sync/atomic"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// Host 持有**被全部子进程插件共享的统一内存区域**,是共享数据面的

View File

@ -4,7 +4,7 @@ import (
"sync/atomic"
"testing"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// stubSubscriber 是最小 EvtRingSubscriber 实现,用于验证「关停时统一退订」。

View File

@ -5,7 +5,7 @@ import (
"sync/atomic"
"testing"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// 本文件是 2026-09-04 06:56:18 线上 crash 的回归测试。

View File

@ -8,7 +8,7 @@ import (
"sync"
"sync/atomic"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// Plugin 是 registry 可加载的子进程插件,与内置插件同构的启停接口。

View File

@ -3,12 +3,12 @@ package proc
import (
"encoding/json"
"fmt"
"gitcode.com/JianFeeeee/HomeAgent/internal/knowledge"
"github.com/JianFeeeee/HomeAgent/internal/knowledge"
"strings"
"sync"
"testing"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// 端到端验证:内核 RunStage 并发扇出 → 真实子进程插件经共享内存读改写 → 结果回读。

View File

@ -9,7 +9,7 @@ package proc
import (
"testing"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
func TestClampExternalPriority_RejectsL4(t *testing.T) {

View File

@ -15,7 +15,7 @@ import (
"syscall"
"time"
"gitcode.com/JianFeeeee/HomeAgent/internal/meta"
"github.com/JianFeeeee/HomeAgent/internal/meta"
)
// Process 管理一个外部插件子进程:spawn / 双向 JSON-RPC / 优雅停止 / 崩溃检测。

View File

@ -22,7 +22,7 @@ import (
"strings"
"testing"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// profileCtx 构造一组「接近真实」的 StageContext。

View File

@ -6,7 +6,7 @@ import (
"sync"
"testing"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// 本文件验证共享内存 stage 并发的正确性——**整个迁移最关键的一环**(§4.4 风险 3.4)。

View File

@ -4,7 +4,7 @@ import (
"encoding/json"
"fmt"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// StageContext 的跨进程编解码(§3.3 数据面 / §3.4 SDK 封装全部复杂度)。

View File

@ -7,7 +7,7 @@ import (
"sync"
"time"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// stage 执行:把内核的 RunStage 并发扇出接到共享段(§3.4,风险 3.4 的落点)。

View File

@ -6,7 +6,7 @@ import (
"testing"
"time"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// qq 插件「重复申请 stage 锁」的生产诊断与修复(2026-10-07)

View File

@ -6,7 +6,7 @@ import (
"testing"
"time"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
)
// 流式输出压测(§4.3 标记「风险高」的那一项)。