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

@ -54,7 +54,7 @@ VERSION := $(META_VERSION)dev$(if $(filter --dirty,$(shell git status --porcelai
endif endif
COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown") COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
BUILD_TIME ?= $(shell date -u '+%Y-%m-%dT%H:%M:%SZ') BUILD_TIME ?= $(shell date -u '+%Y-%m-%dT%H:%M:%SZ')
LDFLAGS = -X gitcode.com/JianFeeeee/HomeAgent/internal/meta.Version=$(VERSION) -X gitcode.com/JianFeeeee/HomeAgent/internal/meta.Commit=$(COMMIT) -X gitcode.com/JianFeeeee/HomeAgent/internal/meta.BuildTime=$(BUILD_TIME) LDFLAGS = -X github.com/JianFeeeee/HomeAgent/internal/meta.Version=$(VERSION) -X github.com/JianFeeeee/HomeAgent/internal/meta.Commit=$(COMMIT) -X github.com/JianFeeeee/HomeAgent/internal/meta.BuildTime=$(BUILD_TIME)
all: build build-cli all: build build-cli

View File

@ -101,5 +101,5 @@ Code is in the project root, implemented in Go.
Core functionality is operational. Plugin system and SDK are ready for independent external plugin development. Core functionality is operational. Plugin system and SDK are ready for independent external plugin development.
- Built-in plugins: webui / cli / timer / cmd / mcp / agentcli / healthcheck / pluginmgr / clawhubadapter / files / cfgmgr - Built-in plugins: webui / cli / timer / cmd / mcp / agentcli / healthcheck / pluginmgr / clawhubadapter / files / cfgmgr
- External plugin examples ([homeagent-sdk](https://gitcode.com/JianFeeeee/homeagent-sdk) repo `example/`, both Go and Lua types): qq / files / a2a / ai_image / bili / browser / calendar / editdoc / memo / music / ocr / rss / sanitizer / weather / luademo - External plugin examples ([homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk) repo `example/`, both Go and Lua types): qq / files / a2a / ai_image / bili / browser / calendar / editdoc / memo / music / ocr / rss / sanitizer / weather / luademo
- Distribution: `.hmap` plugin package format, installable via WebUI - Distribution: `.hmap` plugin package format, installable via WebUI

View File

@ -8,10 +8,10 @@
All external interaction capabilities of HomeAgent comes from plugins. Plugins interact with the kernel through `PluginSDK` (Go API). All external interaction capabilities of HomeAgent comes from plugins. Plugins interact with the kernel through `PluginSDK` (Go API).
**SDK Repository**: Plugin development tools, template code, and example plugins are hosted in the [homeagent-sdk](https://gitcode.com/JianFeeeee/homeagent-sdk) repository. **SDK Repository**: Plugin development tools, template code, and example plugins are hosted in the [homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk) repository.
```bash ```bash
git clone https://gitcode.com/JianFeeeee/homeagent-sdk.git git clone https://github.com/JianFeeeee/homeagentsdk.git
cd homeagent-sdk cd homeagent-sdk
``` ```
@ -252,7 +252,7 @@ curl -X POST http://127.0.0.1:8080/api/v1/plugins \
```go ```go
package main package main
import "gitcode.com/JianFeeeee/homeagent-sdk/sdk" import "github.com/JianFeeeee/homeagentsdk/sdk"
type Plugin struct { type Plugin struct {
name string name string
@ -452,7 +452,7 @@ Parameters: `name` (route key), `caps` (1=text/2=rich/4=file/8=image), `desc`, `
#### Event Subscription #### Event Subscription
```go ```go
import "gitcode.com/JianFeeeee/homeagent-sdk/sdk" import "github.com/JianFeeeee/homeagentsdk/sdk"
unsub := s.Events().Subscribe(sdk.EventToolCall, func(evt *sdk.Event) { unsub := s.Events().Subscribe(sdk.EventToolCall, func(evt *sdk.Event) {
log.Printf("Tool was called: %v", evt.Payload) log.Printf("Tool was called: %v", evt.Payload)
@ -809,27 +809,27 @@ Internal: records are stored in SQLite `disabled_plugins` table (`name`, `disabl
| Example | Type | Features | | Example | Type | Features |
|---------|------|----------| |---------|------|----------|
| [weather](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/weather) | Go | Weather queries (wttr.in); demonstrates NoMemory/Cleaner/stage hooks/channels/text memory | | [weather](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/weather) | Go | Weather queries (wttr.in); demonstrates NoMemory/Cleaner/stage hooks/channels/text memory |
| [luademo](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/luademo) | Lua | Full-featured Lua example covering the whole v0.8.0 Lua SDK surface | | [luademo](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/luademo) | Lua | Full-featured Lua example covering the whole v0.8.0 Lua SDK surface |
| [qq](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/qq) | Go | NapCat OneBot integration, 20 tools, full input/output channel wiring | | [qq](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/qq) | Go | NapCat OneBot integration, 20 tools, full input/output channel wiring |
| [memo](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/memo) | Go | Memo management, PreAction injection + timed interrupt dual reminder | | [memo](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/memo) | Go | Memo management, PreAction injection + timed interrupt dual reminder |
| [files](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/files) | Go | File system operations, 4 write modes, sandbox isolation | | [files](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/files) | Go | File system operations, 4 write modes, sandbox isolation |
| [browser](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/browser) | Go | Web search + HTTP fetch (SSRF) + Chromium render (merged from web/webfetch) | | [browser](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/browser) | Go | Web search + HTTP fetch (SSRF) + Chromium render (merged from web/webfetch) |
| [bili](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/bili) | Go | Bilibili video download (yt-dlp) | | [bili](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/bili) | Go | Bilibili video download (yt-dlp) |
| [editdoc](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/editdoc) | Go | Office document editing and format conversion | | [editdoc](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/editdoc) | Go | Office document editing and format conversion |
| [a2a](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/a2a) | Go | Agent-to-Agent protocol | | [a2a](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/a2a) | Go | Agent-to-Agent protocol |
| [ocr](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/ocr) | Go | Offline text recognition (Tesseract) | | [ocr](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/ocr) | Go | Offline text recognition (Tesseract) |
| [sanitizer](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/sanitizer) | Go | Output sanitizer filter | | [sanitizer](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/sanitizer) | Go | Output sanitizer filter |
| [calendar](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/calendar) | Go | Calendar management | | [calendar](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/calendar) | Go | Calendar management |
| [rss](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/rss) | Go | RSS subscriptions | | [rss](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/rss) | Go | RSS subscriptions |
| [ai_image](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/ai_image) | Go | AI image generation | | [ai_image](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/ai_image) | Go | AI image generation |
| [music](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/music) | Go | Music playback | | [music](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/music) | Go | Music playback |
| [vikunja](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/vikunja) | Go | Vikunja task management (projects/tasks/labels CRUD) | | [vikunja](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/vikunja) | Go | Vikunja task management (projects/tasks/labels CRUD) |
| [vanblog](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/vanblog) | Go | VanBlog publishing and management | | [vanblog](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/vanblog) | Go | VanBlog publishing and management |
| [deepsearch](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/deepsearch) | Go | Multi-round deep search (progressive focus + cited summary) | | [deepsearch](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/deepsearch) | Go | Multi-round deep search (progressive focus + cited summary) |
| [acp](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/acp) | Go | Agent Client Protocol (external editors/IDEs drive this agent) | | [acp](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/acp) | Go | Agent Client Protocol (external editors/IDEs drive this agent) |
| [recoverydiag](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/recoverydiag) | Go | Five-part fault diagnosis (triage / sqlite check / log signatures / diff / ranked conclusions); core plugin of failback mode | | [recoverydiag](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/recoverydiag) | Go | Five-part fault diagnosis (triage / sqlite check / log signatures / diff / ranked conclusions); core plugin of failback mode |
| [plugindev](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/plugindev) | Go | Plugin scaffolding: generate, build, install — lets the agent develop plugins itself | | [plugindev](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/plugindev) | Go | Plugin scaffolding: generate, build, install — lets the agent develop plugins itself |
### Built-in Plugins ### Built-in Plugins
@ -843,4 +843,4 @@ Internal: records are stored in SQLite `disabled_plugins` table (`name`, `disabl
*Want to understand the project goals? See [OVERVIEW.md](OVERVIEW.md).* *Want to understand the project goals? See [OVERVIEW.md](OVERVIEW.md).*
*Want to understand the architecture? See [ARCHITECTURE.md](ARCHITECTURE.md).* *Want to understand the architecture? See [ARCHITECTURE.md](ARCHITECTURE.md).*
*SDK repository and development tools? See [homeagent-sdk](https://gitcode.com/JianFeeeee/homeagent-sdk).* *SDK repository and development tools? See [homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk).*

View File

@ -94,5 +94,5 @@ HomeAgent 是一个持续运行的个人智能 Agent 框架。
核心功能已可运行。插件系统和 SDK 已就绪,可独立开发外部插件。 核心功能已可运行。插件系统和 SDK 已就绪,可独立开发外部插件。
- 内置插件:webui / cli / timer / cmd / mcp / agentcli / healthcheck / pluginmgr / clawhubadapter / files / cfgmgr - 内置插件:webui / cli / timer / cmd / mcp / agentcli / healthcheck / pluginmgr / clawhubadapter / files / cfgmgr
- 外部插件示例([homeagent-sdk](https://gitcode.com/JianFeeeee/homeagent-sdk) 仓库 `example/`,含 Go 和 Lua 两种类型):qq / files / a2a / ai_image / bili / browser / calendar / editdoc / memo / music / ocr / rss / sanitizer / weather / luademo - 外部插件示例([homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk) 仓库 `example/`,含 Go 和 Lua 两种类型):qq / files / a2a / ai_image / bili / browser / calendar / editdoc / memo / music / ocr / rss / sanitizer / weather / luademo
- 打包分发:`.hmap` 插件包格式,通过 WebUI 安装 - 打包分发:`.hmap` 插件包格式,通过 WebUI 安装

View File

@ -9,10 +9,10 @@
HomeAgent 的所有外部交互能力都来自插件。插件通过 `PluginSDK`(Go API)与内核交互。 HomeAgent 的所有外部交互能力都来自插件。插件通过 `PluginSDK`(Go API)与内核交互。
**SDK 仓库**:插件开发工具、模板代码和示例插件统一托管在 **SDK 仓库**:插件开发工具、模板代码和示例插件统一托管在
[homeagent-sdk](https://gitcode.com/JianFeeeee/homeagent-sdk) 仓库。 [homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk) 仓库。
```bash ```bash
git clone https://gitcode.com/JianFeeeee/homeagent-sdk.git git clone https://github.com/JianFeeeee/homeagentsdk.git
cd homeagent-sdk cd homeagent-sdk
``` ```
@ -250,7 +250,7 @@ curl -X POST http://127.0.0.1:8080/api/v1/plugins \
```go ```go
package main package main
import "gitcode.com/JianFeeeee/homeagent-sdk/sdk" import "github.com/JianFeeeee/homeagentsdk/sdk"
type Plugin struct { type Plugin struct {
name string name string
@ -445,7 +445,7 @@ s.RegisterOutputChannel("email", 1, "邮件发送", sdk.ChannelDef{
#### 事件订阅 #### 事件订阅
```go ```go
import "gitcode.com/JianFeeeee/homeagent-sdk/sdk" import "github.com/JianFeeeee/homeagentsdk/sdk"
unsub := s.Events().Subscribe(sdk.EventToolCall, func(evt *sdk.Event) { unsub := s.Events().Subscribe(sdk.EventToolCall, func(evt *sdk.Event) {
log.Printf("工具被调用: %v", evt.Payload) log.Printf("工具被调用: %v", evt.Payload)
@ -800,27 +800,27 @@ pmgr.ReloadPlugins() // 重载所有插件
| 示例 | 类型 | 特点 | | 示例 | 类型 | 特点 |
|------|------|------| |------|------|------|
| [weather](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/weather) | Go | 天气查询(wttr.in),演示 NoMemory/Cleaner/阶段钩子/通道/文本记忆 | | [weather](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/weather) | Go | 天气查询(wttr.in),演示 NoMemory/Cleaner/阶段钩子/通道/文本记忆 |
| [luademo](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/luademo) | Lua | Lua 全功能示例,覆盖 v0.8.0 Lua SDK 全部 API 面 | | [luademo](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/luademo) | Lua | Lua 全功能示例,覆盖 v0.8.0 Lua SDK 全部 API 面 |
| [qq](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/qq) | Go | NapCat OneBot 对接,20 个工具,输入/输出通道完整对接 | | [qq](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/qq) | Go | NapCat OneBot 对接,20 个工具,输入/输出通道完整对接 |
| [memo](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/memo) | Go | 备忘管理,PreAction 注入 + 定时打断双提醒 | | [memo](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/memo) | Go | 备忘管理,PreAction 注入 + 定时打断双提醒 |
| [files](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/files) | Go | 文件系统操作,4 种写入模式,沙箱隔离 | | [files](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/files) | Go | 文件系统操作,4 种写入模式,沙箱隔离 |
| [browser](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/browser) | Go | 网络搜索、网页抓取(SSRF)、浏览器渲染(合并自 web/webfetch) | | [browser](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/browser) | Go | 网络搜索、网页抓取(SSRF)、浏览器渲染(合并自 web/webfetch) |
| [bili](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/bili) | Go | B 站视频下载(yt-dlp) | | [bili](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/bili) | Go | B 站视频下载(yt-dlp) |
| [editdoc](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/editdoc) | Go | Office 文档编辑与格式转换 | | [editdoc](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/editdoc) | Go | Office 文档编辑与格式转换 |
| [a2a](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/a2a) | Go | Agent-to-Agent 协议 | | [a2a](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/a2a) | Go | Agent-to-Agent 协议 |
| [ocr](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/ocr) | Go | 离线文字识别(Tesseract) | | [ocr](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/ocr) | Go | 离线文字识别(Tesseract) |
| [sanitizer](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/sanitizer) | Go | 输出清洗过滤器 | | [sanitizer](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/sanitizer) | Go | 输出清洗过滤器 |
| [calendar](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/calendar) | Go | 日历管理 | | [calendar](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/calendar) | Go | 日历管理 |
| [rss](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/rss) | Go | RSS 订阅 | | [rss](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/rss) | Go | RSS 订阅 |
| [ai_image](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/ai_image) | Go | AI 图片生成 | | [ai_image](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/ai_image) | Go | AI 图片生成 |
| [music](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/music) | Go | 音乐播放 | | [music](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/music) | Go | 音乐播放 |
| [vikunja](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/vikunja) | Go | Vikunja 任务管理对接(项目/任务/标签 CRUD) | | [vikunja](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/vikunja) | Go | Vikunja 任务管理对接(项目/任务/标签 CRUD) |
| [vanblog](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/vanblog) | Go | VanBlog 博客发布与管理 | | [vanblog](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/vanblog) | Go | VanBlog 博客发布与管理 |
| [deepsearch](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/deepsearch) | Go | 多轮深度检索(逐层聚焦 + 引用汇总) | | [deepsearch](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/deepsearch) | Go | 多轮深度检索(逐层聚焦 + 引用汇总) |
| [acp](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/acp) | Go | Agent Client Protocol 对接(外部编辑器/IDE 驱动本 agent) | | [acp](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/acp) | Go | Agent Client Protocol 对接(外部编辑器/IDE 驱动本 agent) |
| [recoverydiag](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/recoverydiag) | Go | 故障诊断五件套(分诊/sqlite 校验/日志签名/diff/结论排序),failback 模式的核心插件 | | [recoverydiag](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/recoverydiag) | Go | 故障诊断五件套(分诊/sqlite 校验/日志签名/diff/结论排序),failback 模式的核心插件 |
| [plugindev](https://gitcode.com/JianFeeeee/homeagent-sdk/tree/main/example/plugindev) | Go | 插件脚手架:生成工程、构建、安装,供 agent 自助开发插件 | | [plugindev](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/plugindev) | Go | 插件脚手架:生成工程、构建、安装,供 agent 自助开发插件 |
### 内置插件 ### 内置插件
@ -834,4 +834,4 @@ pmgr.ReloadPlugins() // 重载所有插件
*了解项目整体目标?查看 [OVERVIEW.md](OVERVIEW.md)。* *了解项目整体目标?查看 [OVERVIEW.md](OVERVIEW.md)。*
*了解技术架构?查看 [ARCHITECTURE.md](ARCHITECTURE.md)。* *了解技术架构?查看 [ARCHITECTURE.md](ARCHITECTURE.md)。*
*SDK 仓库与开发工具?查看 [homeagent-sdk](https://gitcode.com/JianFeeeee/homeagent-sdk)。* *SDK 仓库与开发工具?查看 [homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk)。*

View File

@ -2,7 +2,7 @@
"name": "homeagent-gui", "name": "homeagent-gui",
"version": "1.4.0", "version": "1.4.0",
"author": "JianFeeeee <jianfeeeee@homeagent.local>", "author": "JianFeeeee <jianfeeeee@homeagent.local>",
"homepage": "https://gitcode.com/JianFeeeee/HomeAgent", "homepage": "https://github.com/JianFeeeee/HomeAgent",
"description": "HomeAgent Desktop GUI - Multi-connection management dashboard", "description": "HomeAgent Desktop GUI - Multi-connection management dashboard",
"main": "main.js", "main": "main.js",
"scripts": { "scripts": {

View File

@ -20,7 +20,7 @@ import (
"fmt" "fmt"
"os" "os"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
) )
func main() { func main() {

View File

@ -43,13 +43,13 @@ import (
"os" "os"
"time" "time"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/distill" "github.com/JianFeeeee/HomeAgent/internal/memory/distill"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/vector" "github.com/JianFeeeee/HomeAgent/internal/memory/vector"
"gitcode.com/JianFeeeee/HomeAgent/pkg/embedding" "github.com/JianFeeeee/HomeAgent/pkg/embedding"
"gitcode.com/JianFeeeee/HomeAgent/pkg/generation" "github.com/JianFeeeee/HomeAgent/pkg/generation"
_ "gitcode.com/JianFeeeee/HomeAgent/providers/chineseclip" _ "github.com/JianFeeeee/HomeAgent/providers/chineseclip"
_ "gitcode.com/JianFeeeee/HomeAgent/providers/ollama" _ "github.com/JianFeeeee/HomeAgent/providers/ollama"
) )
func main() { func main() {

View File

@ -30,11 +30,11 @@ import (
"os" "os"
"time" "time"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/vector" "github.com/JianFeeeee/HomeAgent/internal/memory/vector"
"gitcode.com/JianFeeeee/HomeAgent/pkg/embedding" "github.com/JianFeeeee/HomeAgent/pkg/embedding"
_ "gitcode.com/JianFeeeee/HomeAgent/providers/chineseclip" _ "github.com/JianFeeeee/HomeAgent/providers/chineseclip"
_ "gitcode.com/JianFeeeee/HomeAgent/providers/qwen3vl" _ "github.com/JianFeeeee/HomeAgent/providers/qwen3vl"
) )
func main() { func main() {

View File

@ -31,7 +31,7 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"gitcode.com/JianFeeeee/HomeAgent/internal/knowledge" "github.com/JianFeeeee/HomeAgent/internal/knowledge"
) )
func main() { func main() {

View File

@ -13,12 +13,12 @@ import (
"path/filepath" "path/filepath"
"time" "time"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
internalConfig "gitcode.com/JianFeeeee/HomeAgent/internal/config" internalConfig "github.com/JianFeeeee/HomeAgent/internal/config"
luaVM "gitcode.com/JianFeeeee/HomeAgent/internal/lua" luaVM "github.com/JianFeeeee/HomeAgent/internal/lua"
"gitcode.com/JianFeeeee/HomeAgent/internal/recovery" "github.com/JianFeeeee/HomeAgent/internal/recovery"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
"gitcode.com/JianFeeeee/HomeAgent/internal/system" "github.com/JianFeeeee/HomeAgent/internal/system"
) )
// runFailbackRecovery 在 failback worker 内执行 L1 恢复梯子: // runFailbackRecovery 在 failback worker 内执行 L1 恢复梯子:

View File

@ -19,11 +19,11 @@ import (
"syscall" "syscall"
"time" "time"
internalConfig "gitcode.com/JianFeeeee/HomeAgent/internal/config" internalConfig "github.com/JianFeeeee/HomeAgent/internal/config"
"gitcode.com/JianFeeeee/HomeAgent/internal/ipc" "github.com/JianFeeeee/HomeAgent/internal/ipc"
"gitcode.com/JianFeeeee/HomeAgent/internal/recovery" "github.com/JianFeeeee/HomeAgent/internal/recovery"
"gitcode.com/JianFeeeee/HomeAgent/internal/system" "github.com/JianFeeeee/HomeAgent/internal/system"
"gitcode.com/JianFeeeee/HomeAgent/internal/tracker" "github.com/JianFeeeee/HomeAgent/internal/tracker"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
) )

View File

@ -9,9 +9,9 @@ import (
"log" "log"
"os" "os"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
internalConfig "gitcode.com/JianFeeeee/HomeAgent/internal/config" internalConfig "github.com/JianFeeeee/HomeAgent/internal/config"
luaVM "gitcode.com/JianFeeeee/HomeAgent/internal/lua" luaVM "github.com/JianFeeeee/HomeAgent/internal/lua"
) )
// runGuard 桩:guard 父守护模式仅支持 Linux,其余平台打印提示并退出。 // runGuard 桩:guard 父守护模式仅支持 Linux,其余平台打印提示并退出。

View File

@ -6,24 +6,24 @@ import (
"path/filepath" "path/filepath"
"strings" "strings"
internalConfig "gitcode.com/JianFeeeee/HomeAgent/internal/config" internalConfig "github.com/JianFeeeee/HomeAgent/internal/config"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/internal/meta" "github.com/JianFeeeee/HomeAgent/internal/meta"
_ "gitcode.com/JianFeeeee/HomeAgent/internal/plugins" _ "github.com/JianFeeeee/HomeAgent/internal/plugins"
_ "gitcode.com/JianFeeeee/HomeAgent/internal/plugins/clawhubadapter" _ "github.com/JianFeeeee/HomeAgent/internal/plugins/clawhubadapter"
cli "gitcode.com/JianFeeeee/HomeAgent/internal/plugins/cli" cli "github.com/JianFeeeee/HomeAgent/internal/plugins/cli"
_ "gitcode.com/JianFeeeee/HomeAgent/internal/plugins/healthcheck" _ "github.com/JianFeeeee/HomeAgent/internal/plugins/healthcheck"
_ "gitcode.com/JianFeeeee/HomeAgent/internal/plugins/kbtree" _ "github.com/JianFeeeee/HomeAgent/internal/plugins/kbtree"
_ "gitcode.com/JianFeeeee/HomeAgent/internal/plugins/pluginmgr" _ "github.com/JianFeeeee/HomeAgent/internal/plugins/pluginmgr"
webui "gitcode.com/JianFeeeee/HomeAgent/internal/plugins/webui" webui "github.com/JianFeeeee/HomeAgent/internal/plugins/webui"
// 空白导入内置 provider:它们各自在 init 里注册到 pkg/embedding。 // 空白导入内置 provider:它们各自在 init 里注册到 pkg/embedding。
// 想把核心换成自己的模型,只需替换这一行(或另建一个发行版 main)。 // 想把核心换成自己的模型,只需替换这一行(或另建一个发行版 main)。
_ "gitcode.com/JianFeeeee/HomeAgent/providers/chineseclip" _ "github.com/JianFeeeee/HomeAgent/providers/chineseclip"
_ "gitcode.com/JianFeeeee/HomeAgent/providers/qwen3vl" _ "github.com/JianFeeeee/HomeAgent/providers/qwen3vl"
// 生成侧 provider(蒸馏拆三元组)。与上面两个向量 provider 各自独立注册: // 生成侧 provider(蒸馏拆三元组)。与上面两个向量 provider 各自独立注册:
// 核心只依赖 pkg/generation 的接口,按配置 Open("ollama")。 // 核心只依赖 pkg/generation 的接口,按配置 Open("ollama")。
_ "gitcode.com/JianFeeeee/HomeAgent/providers/ollama" _ "github.com/JianFeeeee/HomeAgent/providers/ollama"
) )
// main 是 worker 进程的启动序列。 // main 是 worker 进程的启动序列。

View File

@ -22,7 +22,7 @@ import (
"fmt" "fmt"
"log" "log"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
) )
func main() { func main() {

View File

@ -15,7 +15,7 @@ import (
"sync" "sync"
"time" "time"
"gitcode.com/JianFeeeee/HomeAgent/internal/devicebridge/client" "github.com/JianFeeeee/HomeAgent/internal/devicebridge/client"
) )
// ===== WebSocket 帧编码/解码(RFC 6455) ===== // ===== WebSocket 帧编码/解码(RFC 6455) =====

View File

@ -14,7 +14,7 @@ import (
"syscall" "syscall"
"time" "time"
"gitcode.com/JianFeeeee/HomeAgent/internal/devicebridge/client" "github.com/JianFeeeee/HomeAgent/internal/devicebridge/client"
) )
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------

View File

@ -14,8 +14,8 @@ import (
"strings" "strings"
"time" "time"
"gitcode.com/JianFeeeee/HomeAgent/internal/devicebridge/client" "github.com/JianFeeeee/HomeAgent/internal/devicebridge/client"
"gitcode.com/JianFeeeee/HomeAgent/internal/meta" "github.com/JianFeeeee/HomeAgent/internal/meta"
) )
// ===== 设备桥管理 ===== // ===== 设备桥管理 =====

View File

@ -12,7 +12,7 @@ import (
"syscall" "syscall"
"time" "time"
"gitcode.com/JianFeeeee/HomeAgent/internal/meta" "github.com/JianFeeeee/HomeAgent/internal/meta"
) )
const ( const (

6
go.mod
View File

@ -1,4 +1,4 @@
module gitcode.com/JianFeeeee/HomeAgent module github.com/JianFeeeee/HomeAgent
go 1.25.0 go 1.25.0
@ -13,7 +13,7 @@ require github.com/yanyiwu/gojieba v1.4.7
require github.com/yalue/onnxruntime_go v1.13.0 require github.com/yalue/onnxruntime_go v1.13.0
require ( require (
gitcode.com/JianFeeeee/homeagent-sdk v0.9.2 github.com/JianFeeeee/homeagentsdk v0.9.2
github.com/charmbracelet/bubbles v1.0.0 github.com/charmbracelet/bubbles v1.0.0
github.com/charmbracelet/bubbletea v1.3.10 github.com/charmbracelet/bubbletea v1.3.10
github.com/charmbracelet/lipgloss v1.1.0 github.com/charmbracelet/lipgloss v1.1.0
@ -43,4 +43,4 @@ require (
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
) )
replace gitcode.com/JianFeeeee/homeagent-sdk => ./third_party/homeagent-sdk replace github.com/JianFeeeee/homeagentsdk => ./third_party/homeagent-sdk

View File

@ -16,7 +16,7 @@ import (
"sync" "sync"
"time" "time"
luaVM "gitcode.com/JianFeeeee/HomeAgent/internal/lua" luaVM "github.com/JianFeeeee/HomeAgent/internal/lua"
) )
// ContentBlock 定义多模态内容块,用于图片/音频等非文本输入。 // ContentBlock 定义多模态内容块,用于图片/音频等非文本输入。

View File

@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
luaVM "gitcode.com/JianFeeeee/HomeAgent/internal/lua" luaVM "github.com/JianFeeeee/HomeAgent/internal/lua"
) )
func TestQuickChatWithRealKey(t *testing.T) { func TestQuickChatWithRealKey(t *testing.T) {

View File

@ -7,20 +7,20 @@ import (
"sync" "sync"
"time" "time"
agentPkg "gitcode.com/JianFeeeee/HomeAgent/internal/agent" agentPkg "github.com/JianFeeeee/HomeAgent/internal/agent"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/events" "github.com/JianFeeeee/HomeAgent/internal/events"
"gitcode.com/JianFeeeee/HomeAgent/internal/knowledge" "github.com/JianFeeeee/HomeAgent/internal/knowledge"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/document" "github.com/JianFeeeee/HomeAgent/internal/memory/document"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/media" "github.com/JianFeeeee/HomeAgent/internal/memory/media"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/social" "github.com/JianFeeeee/HomeAgent/internal/memory/social"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/text" "github.com/JianFeeeee/HomeAgent/internal/memory/text"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/vector" "github.com/JianFeeeee/HomeAgent/internal/memory/vector"
"gitcode.com/JianFeeeee/HomeAgent/internal/plugin" "github.com/JianFeeeee/HomeAgent/internal/plugin"
"gitcode.com/JianFeeeee/HomeAgent/internal/tracker" "github.com/JianFeeeee/HomeAgent/internal/tracker"
"gitcode.com/JianFeeeee/HomeAgent/pkg/types" "github.com/JianFeeeee/HomeAgent/pkg/types"
) )
// ContextEvent 和 RelevanceContext 定义在 context.go // ContextEvent 和 RelevanceContext 定义在 context.go

View File

@ -3,7 +3,7 @@ package core
import ( import (
"testing" "testing"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/document" "github.com/JianFeeeee/HomeAgent/internal/memory/document"
) )
func TestEntitySimilarity(t *testing.T) { func TestEntitySimilarity(t *testing.T) {

View File

@ -3,8 +3,8 @@ package core
import ( import (
"testing" "testing"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/document" "github.com/JianFeeeee/HomeAgent/internal/memory/document"
) )
func needJieba() bool { func needJieba() bool {

View File

@ -4,8 +4,8 @@ import (
"strings" "strings"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
type mockOutputDevice struct { type mockOutputDevice struct {

View File

@ -5,8 +5,8 @@ import (
"strconv" "strconv"
"strings" "strings"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
// 阶段 1c:按 ToolDef.Parameters 预校验。 // 阶段 1c:按 ToolDef.Parameters 预校验。

View File

@ -4,9 +4,9 @@ import (
"strings" "strings"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
// 阶段 1c:按 ToolDef.Parameters 预校验,在**分派之前**拦下坏参数。 // 阶段 1c:按 ToolDef.Parameters 预校验,在**分派之前**拦下坏参数。

View File

@ -3,8 +3,8 @@ package core
import ( import (
"strings" "strings"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
// 本文件实现内核侧对"内置工具注册面"(方案 B)的注入。 // 本文件实现内核侧对"内置工具注册面"(方案 B)的注入。

View File

@ -4,7 +4,7 @@ import (
"strings" "strings"
"testing" "testing"
"gitcode.com/JianFeeeee/HomeAgent/internal/knowledge" "github.com/JianFeeeee/HomeAgent/internal/knowledge"
) )
// 阶段 B:内置工具注册进 ToolAPI 面。 // 阶段 B:内置工具注册进 ToolAPI 面。

View File

@ -11,10 +11,10 @@ import (
"sync" "sync"
"time" "time"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/document" "github.com/JianFeeeee/HomeAgent/internal/memory/document"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/vector" "github.com/JianFeeeee/HomeAgent/internal/memory/vector"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
type ToolResultItem struct { type ToolResultItem struct {

View File

@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
) )
func newTestCtx() *RelevanceContext { func newTestCtx() *RelevanceContext {

View File

@ -3,8 +3,8 @@ package core
import ( import (
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
) )
// 这组判据把「上下文管理的阈值」从硬编码变成可配置,并守住两条纪律: // 这组判据把「上下文管理的阈值」从硬编码变成可配置,并守住两条纪律:
// //

View File

@ -6,8 +6,8 @@ import (
"sort" "sort"
"strings" "strings"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/document" "github.com/JianFeeeee/HomeAgent/internal/memory/document"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/media" "github.com/JianFeeeee/HomeAgent/internal/memory/media"
) )
// CrossModalHit 是跨模态检索融合后的一条候选。 // CrossModalHit 是跨模态检索融合后的一条候选。

View File

@ -8,8 +8,8 @@ import (
"strings" "strings"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
// registerFakeDevice 注册一台假设备,带一个"需要 device_id 的指令类工具"和一个无参枚举工具。 // registerFakeDevice 注册一台假设备,带一个"需要 device_id 的指令类工具"和一个无参枚举工具。

View File

@ -7,11 +7,11 @@ import (
"strings" "strings"
"time" "time"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/document" "github.com/JianFeeeee/HomeAgent/internal/memory/document"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/vector" "github.com/JianFeeeee/HomeAgent/internal/memory/vector"
"gitcode.com/JianFeeeee/HomeAgent/internal/nlp" "github.com/JianFeeeee/HomeAgent/internal/nlp"
) )
type ConsolidationTask struct { type ConsolidationTask struct {

View File

@ -5,8 +5,8 @@ import (
"fmt" "fmt"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
// 这组判据走**真实调度循环**(a.Start + 经 channel 注入 + 等 ResponseCh), // 这组判据走**真实调度循环**(a.Start + 经 channel 注入 + 等 ResponseCh),

View File

@ -3,9 +3,9 @@ package core
import ( import (
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
// 这组判据针对一个「发了但没人收到」的缺陷: // 这组判据针对一个「发了但没人收到」的缺陷:

View File

@ -6,11 +6,11 @@ import (
"runtime/debug" "runtime/debug"
"time" "time"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/events" "github.com/JianFeeeee/HomeAgent/internal/events"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk" pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
) )
// eventLoop 已由 scheduler.go 的 schedulerLoop 取代(M2)。 // eventLoop 已由 scheduler.go 的 schedulerLoop 取代(M2)。

View File

@ -4,7 +4,7 @@ import (
"strings" "strings"
"testing" "testing"
"gitcode.com/JianFeeeee/HomeAgent/internal/sdk" "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
func TestExecuteGetPluginTools(tmp *testing.T) { func TestExecuteGetPluginTools(tmp *testing.T) {

View File

@ -5,8 +5,8 @@ import (
"log" "log"
"strings" "strings"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/document" "github.com/JianFeeeee/HomeAgent/internal/memory/document"
) )
// L3 图库的媒体绑定。 // L3 图库的媒体绑定。

View File

@ -8,9 +8,9 @@ import (
"testing" "testing"
"time" "time"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/document" "github.com/JianFeeeee/HomeAgent/internal/memory/document"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/media" "github.com/JianFeeeee/HomeAgent/internal/memory/media"
) )
// L3 图库媒体绑定测试。 // L3 图库媒体绑定测试。

View File

@ -15,8 +15,8 @@ import (
"sort" "sort"
"strings" "strings"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
func (a *Agent) executeInputChannels(tc agentAPI.ToolCall) string { func (a *Agent) executeInputChannels(tc agentAPI.ToolCall) string {

View File

@ -9,8 +9,8 @@ import (
"strings" "strings"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
func inputChToolCall(args map[string]interface{}) agentAPI.ToolCall { func inputChToolCall(args map[string]interface{}) agentAPI.ToolCall {

View File

@ -3,7 +3,7 @@ package core
import ( import (
"log" "log"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
// routeInputByOwner 实现**输入路由**:inputch 是最基本的输入路由单位, // routeInputByOwner 实现**输入路由**:inputch 是最基本的输入路由单位,

View File

@ -4,7 +4,7 @@ import (
"path/filepath" "path/filepath"
"testing" "testing"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
// 输入路由是**独占**的:inputch 划给子之后,该通道的输入只流向子,父不再收到。 // 输入路由是**独占**的:inputch 划给子之后,该通道的输入只流向子,父不再收到。

View File

@ -5,12 +5,12 @@ import (
"strings" "strings"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/document" "github.com/JianFeeeee/HomeAgent/internal/memory/document"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/media" "github.com/JianFeeeee/HomeAgent/internal/memory/media"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk" pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
) )
// 统一输入主干(processInput / resolveInput / injectedBlocks)与 // 统一输入主干(processInput / resolveInput / injectedBlocks)与

View File

@ -21,9 +21,9 @@ import (
"strings" "strings"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
) )
// newLightAgent 构造一个轻量内核 agent(驻留子形态):有 LightMemory,没有整理面。 // newLightAgent 构造一个轻量内核 agent(驻留子形态):有 LightMemory,没有整理面。

View File

@ -39,13 +39,13 @@ import (
"testing" "testing"
"time" "time"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
luaVM "gitcode.com/JianFeeeee/HomeAgent/internal/lua" luaVM "github.com/JianFeeeee/HomeAgent/internal/lua"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/document" "github.com/JianFeeeee/HomeAgent/internal/memory/document"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/media" "github.com/JianFeeeee/HomeAgent/internal/memory/media"
"gitcode.com/JianFeeeee/HomeAgent/pkg/types" "github.com/JianFeeeee/HomeAgent/pkg/types"
) )
// liveCfg 是调用方通过环境变量显式提供的 LLM 源配置。 // liveCfg 是调用方通过环境变量显式提供的 LLM 源配置。

View File

@ -6,8 +6,8 @@ import (
"sync" "sync"
"sync/atomic" "sync/atomic"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/vector" "github.com/JianFeeeee/HomeAgent/internal/memory/vector"
) )
// 媒体与记忆块的生命周期辅助。 // 媒体与记忆块的生命周期辅助。

View File

@ -7,10 +7,10 @@ import (
"strings" "strings"
"testing" "testing"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/document" "github.com/JianFeeeee/HomeAgent/internal/memory/document"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/media" "github.com/JianFeeeee/HomeAgent/internal/memory/media"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/vector" "github.com/JianFeeeee/HomeAgent/internal/memory/vector"
) )
// 媒体与记忆块的生命周期测试。 // 媒体与记忆块的生命周期测试。

View File

@ -7,9 +7,9 @@ import (
"sync/atomic" "sync/atomic"
"time" "time"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/media" "github.com/JianFeeeee/HomeAgent/internal/memory/media"
) )
// blockSeq 保证块 ID 全局唯一(Graph memory_blocks 以 id 为主键)。 // blockSeq 保证块 ID 全局唯一(Graph memory_blocks 以 id 为主键)。

View File

@ -7,10 +7,10 @@ import (
"testing" "testing"
"time" "time"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/document" "github.com/JianFeeeee/HomeAgent/internal/memory/document"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/media" "github.com/JianFeeeee/HomeAgent/internal/memory/media"
) )
// 媒体记忆接线测试:验证媒体从对话进入 CAS、挂到 L0 事件、 // 媒体记忆接线测试:验证媒体从对话进入 CAS、挂到 L0 事件、

View File

@ -6,10 +6,10 @@ import (
"strings" "strings"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/pkg/types" "github.com/JianFeeeee/HomeAgent/pkg/types"
) )
// TestMemoryCommitReportsRealCounts 钉住「memory_commit 如实报告写入量」。 // TestMemoryCommitReportsRealCounts 钉住「memory_commit 如实报告写入量」。

View File

@ -18,7 +18,7 @@ package core
// 而 `a.memory`(整理面)保持 nil —— 既有的 22 处 `if a.memory != nil` 关卡 // 而 `a.memory`(整理面)保持 nil —— 既有的 22 处 `if a.memory != nil` 关卡
// 会自动把整理面全部禁掉,不需要写"每个方法都返回错误"的受限包装。 // 会自动把整理面全部禁掉,不需要写"每个方法都返回错误"的受限包装。
import "gitcode.com/JianFeeeee/HomeAgent/internal/memory" import "github.com/JianFeeeee/HomeAgent/internal/memory"
// isLightKernel 报告本 agent 是不是**轻量内核**(驻留子)。 // isLightKernel 报告本 agent 是不是**轻量内核**(驻留子)。
// //

View File

@ -5,9 +5,9 @@ import (
"strconv" "strconv"
"time" "time"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk" pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
) )
// sceneKeysFor 推导本轮输入的**当前场景**。 // sceneKeysFor 推导本轮输入的**当前场景**。

View File

@ -6,8 +6,8 @@ import (
"testing" "testing"
"time" "time"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory/document" "github.com/JianFeeeee/HomeAgent/internal/memory/document"
) )
// memoryPass 是「裁剪」与「召回」的唯一入口:两根正交轴,但共用同一份 query。 // memoryPass 是「裁剪」与「召回」的唯一入口:两根正交轴,但共用同一份 query。

View File

@ -7,7 +7,7 @@ import (
"strings" "strings"
"time" "time"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
) )
// 多模态回退链:主模型看不到图/听不到音频时,改用一个声明了 vision/audio // 多模态回退链:主模型看不到图/听不到音频时,改用一个声明了 vision/audio

View File

@ -5,8 +5,8 @@ import (
"strings" "strings"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
"gitcode.com/JianFeeeee/HomeAgent/pkg/types" "github.com/JianFeeeee/HomeAgent/pkg/types"
) )
// stubProvider 是一个可声明多模态能力的假 provider。 // stubProvider 是一个可声明多模态能力的假 provider。

View File

@ -118,7 +118,7 @@ func TestKernelHasNoMediaFileReading(t *testing.T) {
func TestMediaToolsRegisteredByPlugin(t *testing.T) { func TestMediaToolsRegisteredByPlugin(t *testing.T) {
// 插件侧的注册清单在 internal/plugins/multimodal/plugin.go。 // 插件侧的注册清单在 internal/plugins/multimodal/plugin.go。
// 这里只做**跨包引用检查**(core 包不该 import multimodal,那是反向依赖)。 // 这里只做**跨包引用检查**(core 包不该 import multimodal,那是反向依赖)。
if strings.Contains(kernelSourceDump(t), `"gitcode.com/JianFeeeee/HomeAgent/internal/plugins/multimodal"`) { if strings.Contains(kernelSourceDump(t), `"github.com/JianFeeeee/HomeAgent/internal/plugins/multimodal"`) {
t.Error("core 反向 import 了 multimodal 插件 —— " + t.Error("core 反向 import 了 multimodal 插件 —— " +
"工具由插件注册进 StageHost,核心不应知道插件实现") "工具由插件注册进 StageHost,核心不应知道插件实现")
} }

View File

@ -24,7 +24,7 @@ import (
"runtime/debug" "runtime/debug"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
// OffloadOptions 是自动转投的判定与执行参数。 // OffloadOptions 是自动转投的判定与执行参数。

View File

@ -6,9 +6,9 @@ import (
"testing" "testing"
"time" "time"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
) )
// newRootWithoutSchedulerLoop 造一个**不启动后台循环**的根 agent。 // newRootWithoutSchedulerLoop 造一个**不启动后台循环**的根 agent。

View File

@ -4,9 +4,9 @@ import (
"fmt" "fmt"
"strings" "strings"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
func (a *Agent) executeOutputSendTool(tc agentAPI.ToolCall) string { func (a *Agent) executeOutputSendTool(tc agentAPI.ToolCall) string {

View File

@ -14,8 +14,8 @@ import (
"strings" "strings"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
// registerFakeOutput 注册一个假的输出通道(device 通道)。 // registerFakeOutput 注册一个假的输出通道(device 通道)。

View File

@ -4,7 +4,7 @@ import (
"strings" "strings"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
) )
// 设计口径:输出是 agent 的**主动调用** —— 收到一次输入后,可以往任意(已授权的) // 设计口径:输出是 agent 的**主动调用** —— 收到一次输入后,可以往任意(已授权的)

View File

@ -5,7 +5,7 @@ import (
"fmt" "fmt"
"log" "log"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
) )
// 上下文超页(context overflow)处理。 // 上下文超页(context overflow)处理。

View File

@ -6,8 +6,8 @@ import (
"sync" "sync"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
// ── 测试替身 ── // ── 测试替身 ──

View File

@ -8,9 +8,9 @@ import (
"testing" "testing"
"time" "time"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
// 阶段 2d:批次调度与保序。 // 阶段 2d:批次调度与保序。

View File

@ -4,7 +4,7 @@ import (
"fmt" "fmt"
"strings" "strings"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
) )
// PersonaStore 是人格设定的读写面。 // PersonaStore 是人格设定的读写面。

View File

@ -4,8 +4,8 @@ import (
"strings" "strings"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
// newTestAgent 造一个最小可用的 Agent(buildToolDefs 要求 io 非 nil)。 // newTestAgent 造一个最小可用的 Agent(buildToolDefs 要求 io 非 nil)。

View File

@ -4,8 +4,8 @@ import (
"strings" "strings"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
// get_plugin_tools 必须是**完整**的服务(2026-05-05 修) // get_plugin_tools 必须是**完整**的服务(2026-05-05 修)

View File

@ -4,7 +4,7 @@ import (
"testing" "testing"
"time" "time"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
// 抢占日志必须能说出**受害者是谁**(来源 + 类别 + 级别)。 // 抢占日志必须能说出**受害者是谁**(来源 + 类别 + 级别)。

View File

@ -10,9 +10,9 @@ import (
"sort" "sort"
"strings" "strings"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
"gitcode.com/JianFeeeee/HomeAgent/internal/events" "github.com/JianFeeeee/HomeAgent/internal/events"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
// continuationPlaceholder 是工具轮之后补的 user 占位内容。 // continuationPlaceholder 是工具轮之后补的 user 占位内容。

View File

@ -4,8 +4,8 @@ import (
"strings" "strings"
"testing" "testing"
"gitcode.com/JianFeeeee/HomeAgent/internal/meta" "github.com/JianFeeeee/HomeAgent/internal/meta"
sdkmeta "gitcode.com/JianFeeeee/homeagent-sdk/meta" sdkmeta "github.com/JianFeeeee/homeagentsdk/meta"
) )
func TestExpandPromptVars(t *testing.T) { func TestExpandPromptVars(t *testing.T) {

View File

@ -3,8 +3,8 @@ package core
import ( import (
"testing" "testing"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk" pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
) )
// 这一组测试锁死「默认不裁剪」这条语义。 // 这一组测试锁死「默认不裁剪」这条语义。

View File

@ -3,7 +3,7 @@ package core
import ( import (
"testing" "testing"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
// ContextPolicy=prune 的查询向量必须取**清洗后**的有效内容。 // ContextPolicy=prune 的查询向量必须取**清洗后**的有效内容。

View File

@ -5,10 +5,10 @@ import (
"strings" "strings"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk" pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
) )
// 这一组测试锁死「默认召回、可显式关闭」这条语义。 // 这一组测试锁死「默认召回、可显式关闭」这条语义。

View File

@ -22,9 +22,9 @@ import (
"sync" "sync"
"time" "time"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
"gitcode.com/JianFeeeee/HomeAgent/pkg/types" "github.com/JianFeeeee/HomeAgent/pkg/types"
) )
// InputchRecord 是 inputch 处理表的一条记录(子持有,父 pull)。 // InputchRecord 是 inputch 处理表的一条记录(子持有,父 pull)。

View File

@ -5,8 +5,8 @@ import (
"strings" "strings"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
// outputTestDevice 是最小的输出通道替身(io 里输出通道就是 Device)。 // outputTestDevice 是最小的输出通道替身(io 里输出通道就是 Device)。

View File

@ -15,9 +15,9 @@ import (
"testing" "testing"
"time" "time"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
) )
// newRootWith 造一个带完整图记忆的父 agent,并指定它(以及它的驻留子)用的 provider。 // newRootWith 造一个带完整图记忆的父 agent,并指定它(以及它的驻留子)用的 provider。

View File

@ -11,9 +11,9 @@ import (
"path/filepath" "path/filepath"
"strings" "strings"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
) )
func strArg(tc agentAPI.ToolCall, key string) string { func strArg(tc agentAPI.ToolCall, key string) string {

View File

@ -4,8 +4,8 @@ import (
"strings" "strings"
"testing" "testing"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/memory" "github.com/JianFeeeee/HomeAgent/internal/memory"
) )
// TestSceneKeysFor 钉住当前场景的推导优先级: // TestSceneKeysFor 钉住当前场景的推导优先级:

View File

@ -17,7 +17,7 @@ package core
import ( import (
"testing" "testing"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
// TestSceneKeysMerged_NoDuplicates 声明路与涌现路的并集不得有重复。 // TestSceneKeysMerged_NoDuplicates 声明路与涌现路的并集不得有重复。

View File

@ -14,8 +14,8 @@ package core
import ( import (
"testing" "testing"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
pubsdk "gitcode.com/JianFeeeee/homeagent-sdk/sdk" pubsdk "github.com/JianFeeeee/homeagentsdk/sdk"
) )
func scenePolicyNoneEvent() *agentIO.InputEvent { func scenePolicyNoneEvent() *agentIO.InputEvent {

View File

@ -40,9 +40,9 @@ import (
"sync/atomic" "sync/atomic"
"time" "time"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/events" "github.com/JianFeeeee/HomeAgent/internal/events"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
// Level 是**中断**的优先级,由内核预定义四级。 // Level 是**中断**的优先级,由内核预定义四级。

View File

@ -12,9 +12,9 @@ import (
"testing" "testing"
"time" "time"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
// P5/P6:工具执行期间到达的高优先级中断不得立即抢占;必须等工具返回后的安全点。 // P5/P6:工具执行期间到达的高优先级中断不得立即抢占;必须等工具返回后的安全点。

View File

@ -18,9 +18,9 @@ import (
"testing" "testing"
"time" "time"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/events" "github.com/JianFeeeee/HomeAgent/internal/events"
) )
// countingProvider 只统计调用次数,永远成功。 // countingProvider 只统计调用次数,永远成功。

View File

@ -13,10 +13,10 @@ import (
"testing" "testing"
"time" "time"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/plugin" "github.com/JianFeeeee/HomeAgent/internal/plugin"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
// 非内核级来源声明 L4 必须被夹到 L3;内核级来源(内置插件)可用到 L4。 // 非内核级来源声明 L4 必须被夹到 L3;内核级来源(内置插件)可用到 L4。

View File

@ -14,8 +14,8 @@ import (
"testing" "testing"
"time" "time"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
// preemptProvider 第 1 次 Chat 阻塞直到 ctx 取消;第 2 次起返回脚本。 // preemptProvider 第 1 次 Chat 阻塞直到 ctx 取消;第 2 次起返回脚本。

View File

@ -19,8 +19,8 @@ import (
"testing" "testing"
"time" "time"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
// 被冷却拦成入队的中断,在冷却期满后的第一个安全点必须被重新武装。 // 被冷却拦成入队的中断,在冷却期满后的第一个安全点必须被重新武装。

View File

@ -11,8 +11,8 @@ import (
"testing" "testing"
"time" "time"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
// cancelAwareProvider 第一次调用进入后阻塞,直到 ctx 取消;记录是否被取消。 // cancelAwareProvider 第一次调用进入后阻塞,直到 ctx 取消;记录是否被取消。

View File

@ -15,7 +15,7 @@ import (
"testing" "testing"
"time" "time"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
) )
// nestingProvider 第 1、2 次调用阻塞到 ctx 取消;第 3 次起按脚本返回。 // nestingProvider 第 1、2 次调用阻塞到 ctx 取消;第 3 次起按脚本返回。

View File

@ -23,11 +23,11 @@ import (
"testing" "testing"
"time" "time"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/events" "github.com/JianFeeeee/HomeAgent/internal/events"
"gitcode.com/JianFeeeee/HomeAgent/internal/plugin" "github.com/JianFeeeee/HomeAgent/internal/plugin"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
// fixedDelayProvider 返回固定内容,并在被取消时立刻返回 ctx.Err()。 // fixedDelayProvider 返回固定内容,并在被取消时立刻返回 ctx.Err()。

View File

@ -8,8 +8,8 @@ import (
"fmt" "fmt"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
) )
// 新模型的选择顺序:immediate → 中断队列 L4→L1 → 栈顶(与队头比级别) → 排队 FIFO。 // 新模型的选择顺序:immediate → 中断队列 L4→L1 → 栈顶(与队头比级别) → 排队 FIFO。

View File

@ -5,7 +5,7 @@ import (
"strings" "strings"
"testing" "testing"
agentAPI "gitcode.com/JianFeeeee/HomeAgent/internal/agent/api" agentAPI "github.com/JianFeeeee/HomeAgent/internal/agent/api"
) )
// child_result 必须幂等——这是 "任务已结束但核心循环不结束" 的根因修复。 // child_result 必须幂等——这是 "任务已结束但核心循环不结束" 的根因修复。

View File

@ -6,9 +6,9 @@ import (
"runtime/debug" "runtime/debug"
"time" "time"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
"gitcode.com/JianFeeeee/HomeAgent/internal/events" "github.com/JianFeeeee/HomeAgent/internal/events"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
func (a *Agent) runStage(stage sdk.Stage, ctx *sdk.StageContext) bool { func (a *Agent) runStage(stage sdk.Stage, ctx *sdk.StageContext) bool {

View File

@ -6,8 +6,8 @@ import (
"runtime/debug" "runtime/debug"
"sync" "sync"
agentIO "gitcode.com/JianFeeeee/HomeAgent/internal/agent/io" agentIO "github.com/JianFeeeee/HomeAgent/internal/agent/io"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
type StageHost struct { type StageHost struct {

View File

@ -3,7 +3,7 @@ package core
import ( import (
"testing" "testing"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
// stage handler 必须能按插件成组摘除。 // stage handler 必须能按插件成组摘除。

View File

@ -5,7 +5,7 @@ import (
"sync/atomic" "sync/atomic"
"testing" "testing"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
func TestStageHostRegisterTool(t *testing.T) { func TestStageHostRegisterTool(t *testing.T) {

View File

@ -4,7 +4,7 @@ import (
"sync" "sync"
"testing" "testing"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" sdk "github.com/JianFeeeee/HomeAgent/internal/sdk"
) )
// 无拷贝查询必须与 ToolDef(...).字段 **完全等价**。 // 无拷贝查询必须与 ToolDef(...).字段 **完全等价**。

Some files were not shown because too many files have changed in this diff Show More