From 37b8c266754d43699172e5dabfdc0146bb8dd686 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Wed, 21 Oct 2026 19:22:02 +0800 Subject: [PATCH 1/7] =?UTF-8?q?refactor(docs):=20=E6=89=B96a=20=E6=B8=85?= =?UTF-8?q?=E7=90=86=E4=BB=8B=E7=BB=8D=E7=AB=99=E4=B8=8E=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E7=9A=84=E6=97=A7=E4=BB=93=E5=90=8D/=E6=97=A7=E9=93=BE?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 改名 HomeAgent → HologramAgent 后,介绍站与仓内文档仍指向旧仓地址、旧站点 域名,点击即 404 / 落回旧站。本批只动文档与静态站,代码零改动。 映射(严格按主管给定的唯一权威口径): - github.com/JianFeeeee/HomeAgent → .../HologramAgent(含 /blob /releases /tree) - github.com/JianFeeeee/homeagentsdk → .../HologramAgent-sdk - introduce.homeagent.jianfgit.xyz → introduce.hologramagent.jianfgit.xyz - sdk.homeagent.jianfgit.xyz → sdk.hologramagent.jianfgit.xyz - 品牌名/链接文本 homeagent-sdk → HologramAgent-sdk(含 `cd homeagent-sdk` 克隆后的本地目录名,跟随新仓名) 改动面(12 个文件,138 行,纯替换无逻辑变更): - site/index.html 36 处:13 处主仓链接 + 23 处 SDK 仓链接(22 个 example/ 与 LICENSE、仓库首页) - README.md / README_EN.md 各 12 处(9 处 URL + 3 处链接文本) - assets/docs/{zh,en}/PLUGIN_DEV.md 各 34 处、OVERVIEW.md 各 2 处 - docs/zh/ci-cd-runbook.md 9 处、docs/zh/deploy-runbook.md 2 处(站点域名) - deploy/scripts/deploy-sdk-site.sh 5 处(注释里的 server_name + 3 处 curl 探活地址,否则改完站脚本仍在验旧域名) - docs/git-branching.md 2 处、assets/skills/commondev-discipline/SKILL.md 1 处 (gitcode module 路径) 刻意不动(动了会坏): - 真实目录 third_party/homeagent-sdk(只改 URL 里的 homeagentsdk) - go.mod 的 module / replace、所有 .go import(module 仍是 github.com/JianFeeeee/HologramAgent,SDK 仍 homeagentsdk) - deploy/packaging/package-linux.sh 里的 `replace github.com/JianFeeeee/ homeagentsdk` 与 clone URL —— 它必须与未改动的 go.mod 逐字一致,属代码非文档 - 数据目录 ~/.homeagent、二进制 homed、产物名 hologramagent_*、 插件名 homeagent-mail-bridge - systemd 相关行(homeagent.service / systemctl / journalctl)—— 待上级确认, 本批不动,清单见汇报 - docs/api/*.md(首行「请勿手改」,生成型) 判据(含变异验证): - 三条旧串 grep 全仓清零;third_party/homeagent-sdk 目录仍在 - site/index.html 标签配平(HEAD/WORK 双跑)+ section 数 13→13 未减 - 变异:分别还原 deploy-sdk-site.sh:206、site/index.html:3041、README.md:243、 ci-cd-runbook.md:11 各一处,以及删一个 ,判据均按预期报红 - go build ./... 通过(仅把 TMPDIR 指到 /var/tmp 规避 /tmp tmpfs 满,仓内文件无关) 未执行任何线上动作:不 push、不开 PR、不重命名 GitHub 仓。注意 SDK 仓在 GitHub 侧目前仍叫 homeagentsdk,本批把文档指向 HologramAgent-sdk 是「改名 在路上」,该仓改名完成前这批 SDK 链接会 404。 --- README.md | 18 +++--- README_EN.md | 18 +++--- assets/docs/en/OVERVIEW.md | 2 +- assets/docs/en/PLUGIN_DEV.md | 64 +++++++++--------- assets/docs/zh/OVERVIEW.md | 2 +- assets/docs/zh/PLUGIN_DEV.md | 64 +++++++++--------- assets/skills/commondev-discipline/SKILL.md | 2 +- deploy/scripts/deploy-sdk-site.sh | 10 +-- docs/git-branching.md | 4 +- docs/zh/ci-cd-runbook.md | 16 ++--- docs/zh/deploy-runbook.md | 4 +- site/index.html | 72 ++++++++++----------- 12 files changed, 138 insertions(+), 138 deletions(-) diff --git a/README.md b/README.md index 908c6388..72394580 100644 --- a/README.md +++ b/README.md @@ -240,7 +240,7 @@ internal/ ├── config/ SQLite 配置中心 ├── events/ 事件总线 └── internal/lua/adapters/ 10 个 LLM 协议适配器脚本 -外部插件开发见 [homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk) 仓库,使用 `hmapdev` 工具链开发,参考 `example/` 目录下的 Go 和 Lua 示例 +外部插件开发见 [HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) 仓库,使用 `hmapdev` 工具链开发,参考 `example/` 目录下的 Go 和 Lua 示例 ``` ## 项目状态 @@ -318,7 +318,7 @@ internal/ > inline/small **30.4µs**、frame/small 51.5µs、inline/large 767µs、frame/large 398µs。 > 保留原文不修改,以免伪造历史。 -**v1.1.1** — 多模态贯通**插件边界**。v1.1.0 让记忆系统支持了二进制多媒体节点,但那条链路只对内核自己开放;本版打通到插件与模型。公开 SDK 新增媒体字段与三个媒体注入接口(配套 [SDK v1.1.0](https://github.com/JianFeeeee/homeagentsdk/tree/v1.1.0),整条 1.1.x 线共用),内核实现对应四个 RPC。桥接层此前在**静默裁字段**:插件交进来的 `Confidence`/类型/`SentenceText` 全被丢弃、`Doc` 只留三个字段、`Remove` 不解引用(媒体永久算「被引用」,GC 收不掉)。`processTextInput`/`processMediaInput` 归一成一条 `processInput`,媒体路径由此获得它一直缺的去重、`no_memory`、通道 `Cleaner`、中断语义、`EventRawInput`。修掉三处真实缺陷:**用户发的图从来没出现在 WebUI 聊天记录里**(媒体路径发布 map 而订阅方断言 string)、**`memory_commit` 的 `sentence_text` 从未暴露给模型**(而它是媒体绑定链的必经环节)、**`PluginSDK` 两处并发竞态**(`-race` 实测 11 处,插件重载瞬间偶发 nil 解引用崩溃)。 +**v1.1.1** — 多模态贯通**插件边界**。v1.1.0 让记忆系统支持了二进制多媒体节点,但那条链路只对内核自己开放;本版打通到插件与模型。公开 SDK 新增媒体字段与三个媒体注入接口(配套 [SDK v1.1.0](https://github.com/JianFeeeee/HologramAgent-sdk/tree/v1.1.0),整条 1.1.x 线共用),内核实现对应四个 RPC。桥接层此前在**静默裁字段**:插件交进来的 `Confidence`/类型/`SentenceText` 全被丢弃、`Doc` 只留三个字段、`Remove` 不解引用(媒体永久算「被引用」,GC 收不掉)。`processTextInput`/`processMediaInput` 归一成一条 `processInput`,媒体路径由此获得它一直缺的去重、`no_memory`、通道 `Cleaner`、中断语义、`EventRawInput`。修掉三处真实缺陷:**用户发的图从来没出现在 WebUI 聊天记录里**(媒体路径发布 map 而订阅方断言 string)、**`memory_commit` 的 `sentence_text` 从未暴露给模型**(而它是媒体绑定链的必经环节)、**`PluginSDK` 两处并发竞态**(`-race` 实测 11 处,插件重载瞬间偶发 nil 解引用崩溃)。 **v1.1.0** — 记忆系统支持**二进制多媒体节点**。内容寻址媒体存储(CAS + SQLite 元数据 + 磁盘 blob,`Get` always 重校 digest),贯通 L0(上下文事件)/L2(文档)/L3(图谱句子)三层,引用计数式 GC(有引用者绝不删)。视觉模型生成的描述文本是持久语义记忆,blob 只是可被容量 GC 淘汰的缓存。 @@ -326,16 +326,16 @@ internal/ **v0.9.0** — C ABI v2:外部插件 Stage 回调支持写回(`invoke_stage` 增加 result 输出,插件可在 OnInput/AfterToolcall/PostAction 修改 RawMessage/LLMText/ToolResults 等并同步回内核),ABI 版本随内核 minor 对齐(v0.9.x → ABIVersion=2,`version_min=1` 向后兼容旧插件)。同步修复工具循环 zen 兼容补位误伤首轮 system 上下文的问题。配套 SDK 提供增强版 sanitizer 示例(坏 UTF-8/U+FFFD/ANSI 转义全链路清洗)。**该 ABI 已随 v1.0.0 退场。** -**v0.8.0** — 核心可用,插件系统增强。内置 20+ 插件,外部插件开发见 [homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk) 仓库。新增输入通道 `NoMemory`/`Cleaner`、`ChannelDef`、插件禁用/启用系统(CLI + WebUI),`plugindev` 工具链完成 C ABI `ChannelDef` 传递。 +**v0.8.0** — 核心可用,插件系统增强。内置 20+ 插件,外部插件开发见 [HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) 仓库。新增输入通道 `NoMemory`/`Cleaner`、`ChannelDef`、插件禁用/启用系统(CLI + WebUI),`plugindev` 工具链完成 C ABI `ChannelDef` 传递。 ## 文档 **在线文档**: -- 介绍站(项目总览): -- 插件 SDK 文档(快速开始 / API 参考 / 指南 / 示例): - —— 面向 agent 的纯文本入口:[`llms.txt`](https://sdk.homeagent.jianfgit.xyz/llms.txt) / - [`llms-full.txt`](https://sdk.homeagent.jianfgit.xyz/llms-full.txt) +- 介绍站(项目总览): +- 插件 SDK 文档(快速开始 / API 参考 / 指南 / 示例): + —— 面向 agent 的纯文本入口:[`llms.txt`](https://sdk.hologramagent.jianfgit.xyz/llms.txt) / + [`llms-full.txt`](https://sdk.hologramagent.jianfgit.xyz/llms-full.txt) **仓内文档**(随代码版本走): @@ -347,7 +347,7 @@ internal/ ## 下载 -[Releases](https://github.com/JianFeeeee/HomeAgent/releases) 提供三种变体: +[Releases](https://github.com/JianFeeeee/HologramAgent/releases) 提供三种变体: | 变体 | 内容 | 适用 | | --- | --- | --- | @@ -385,7 +385,7 @@ make install # 安装到系统 **通过网络提供服务时也要向使用者提供源码**(§13 Remote Network Interaction)。 即:任何人把改过的 HologramAgent 对外提供网络服务,都必须让该服务的使用者拿到改动后的源码。 -插件与本项目通过公开 [homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk) 静态链接 +插件与本项目通过公开 [HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) 静态链接 (SDK 源码会进入插件二进制),但那个仓**以 MIT 发布**——MIT 是宽松许可,拿到授权的代码不继承 本项目的 AGPL。因此**外部插件不是本项目的衍生作品**,作者可自行选择许可(含闭源、商业、私有), 既不必同许可、也不受 §13 网络条款约束。第三方插件生态的安全与活跃正建立在这条之上。 diff --git a/README_EN.md b/README_EN.md index 99fa5c32..a6363c77 100644 --- a/README_EN.md +++ b/README_EN.md @@ -221,7 +221,7 @@ internal/ ├── config/ SQLite config center ├── events/ Event bus └── internal/lua/adapters/ 10 LLM protocol adapter scripts -External plugin development: see [homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk) repo, use `hmapdev` toolchain, refer to Go and Lua examples in `example/` +External plugin development: see [HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) repo, use `hmapdev` toolchain, refer to Go and Lua examples in `example/` ``` ## Project Status @@ -323,7 +323,7 @@ External plugin development: see [homeagent-sdk](https://github.com/JianFeeeee/h **v1.1.1** — Multimodal reaches the **plugin boundary**. v1.1.0 gave the memory system binary multimedia nodes, but that path was open only to the kernel itself; this release opens it to plugins and the model. The public SDK gains media fields and three media injection methods -(paired with [SDK v1.1.0](https://github.com/JianFeeeee/homeagentsdk/tree/v1.1.0), +(paired with [SDK v1.1.0](https://github.com/JianFeeeee/HologramAgent-sdk/tree/v1.1.0), shared by the whole 1.1.x line), and the kernel implements the four matching RPCs. The bridge layer had been **silently dropping fields**: `Confidence`/types/`SentenceText` handed in by a plugin were discarded, `Doc` kept only three fields, and `Remove` never released references @@ -346,16 +346,16 @@ semantic memory; the blob is only a cache that capacity GC may evict. **v0.9.0** — C ABI v2: external plugin Stage callbacks can now write back (`invoke_stage` gained a result out-param; plugins may mutate RawMessage/LLMText/ToolResults etc. in OnInput/AfterToolcall/PostAction and have them synced to the core). ABI version now tracks core minor releases (v0.9.x → ABIVersion=2, `version_min=1` keeps old plugins loadable). Also fixes the tool-loop zen-compat placeholder that wrongly fired on first-turn system context tail. The SDK ships an enhanced sanitizer example (bad-UTF-8 / U+FFFD / ANSI-escape scrub across the whole pipeline). **This ABI retired with v1.0.0.** -**v0.8.0** — Core is functional, plugin system enhanced. 20+ built-in plugins. External plugin development via [homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk) repo. Added input channel `NoMemory`/`Cleaner`, `ChannelDef`, plugin disable/enable system (CLI + WebUI), `plugindev` toolchain C ABI `ChannelDef` support. +**v0.8.0** — Core is functional, plugin system enhanced. 20+ built-in plugins. External plugin development via [HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) repo. Added input channel `NoMemory`/`Cleaner`, `ChannelDef`, plugin disable/enable system (CLI + WebUI), `plugindev` toolchain C ABI `ChannelDef` support. ## Documentation **Online docs**: -- Introduction site (project overview): -- Plugin SDK docs (getting started / API reference / guides / examples): - — agent-friendly plain text: [`llms.txt`](https://sdk.homeagent.jianfgit.xyz/llms.txt) / - [`llms-full.txt`](https://sdk.homeagent.jianfgit.xyz/llms-full.txt) +- Introduction site (project overview): +- Plugin SDK docs (getting started / API reference / guides / examples): + — agent-friendly plain text: [`llms.txt`](https://sdk.hologramagent.jianfgit.xyz/llms.txt) / + [`llms-full.txt`](https://sdk.hologramagent.jianfgit.xyz/llms-full.txt) **In-repo docs** (versioned with the code): @@ -367,7 +367,7 @@ semantic memory; the blob is only a cache that capacity GC may evict. ## Downloads -[Releases](https://github.com/JianFeeeee/HomeAgent/releases) ship three variants: +[Releases](https://github.com/JianFeeeee/HologramAgent/releases) ship three variants: | Variant | Contents | For | | --- | --- | --- | @@ -408,7 +408,7 @@ with it over a network** (§13, Remote Network Interaction). Anyone running a mo as a network service therefore has to make the modified source available to that service's users. Plugins are **statically linked** against this project through the public -[homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk) (the SDK source ends up inside the +[HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) (the SDK source ends up inside the plugin binary), but that repository is released under **MIT** — a permissive license, so code received under it does **not** inherit this project's AGPL. External plugins are therefore **not derivative works of this project**: authors pick their own license (closed-source, commercial or diff --git a/assets/docs/en/OVERVIEW.md b/assets/docs/en/OVERVIEW.md index 7dce0fce..9ed5d5ec 100644 --- a/assets/docs/en/OVERVIEW.md +++ b/assets/docs/en/OVERVIEW.md @@ -111,5 +111,5 @@ Core functionality is operational. Plugin system and SDK are ready for independe - Built-in plugins (13): webui / cli / agentcli / cfgmgr / healthcheck / kbtree / multimodal / pluginmgr / clawhubadapter / remotedevice / skillmgr / seemedia / seq - Criterion: **a plugin stays built-in only if it requires internal-SDK-only capabilities**; everything else ships as an .hmap external plugin (see ARCHITECTURE) -- 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 +- External plugin examples ([HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) 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 diff --git a/assets/docs/en/PLUGIN_DEV.md b/assets/docs/en/PLUGIN_DEV.md index a32e3245..e4726a8e 100644 --- a/assets/docs/en/PLUGIN_DEV.md +++ b/assets/docs/en/PLUGIN_DEV.md @@ -8,11 +8,11 @@ All external interaction capabilities of HologramAgent 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://github.com/JianFeeeee/homeagentsdk) repository. +**SDK Repository**: Plugin development tools, template code, and example plugins are hosted in the [HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) repository. ```bash -git clone https://github.com/JianFeeeee/homeagentsdk.git -cd homeagent-sdk +git clone https://github.com/JianFeeeee/HologramAgent-sdk.git +cd HologramAgent-sdk ``` Each plugin implements a three-method interface: @@ -48,7 +48,7 @@ plugin types, and producing `.hmap` plugin bundles (the tool is named after that ### Installation ```bash -cd homeagent-sdk/tools/hmapdev +cd HologramAgent-sdk/tools/hmapdev go build -o hmapdev # Add hmapdev to PATH or use directly # Prebuilt binaries also ship as release assets (hmapdev_linux_amd64, ...) @@ -252,7 +252,7 @@ curl -X POST http://127.0.0.1:8080/api/v1/plugins \ ```go package main -import "github.com/JianFeeeee/homeagentsdk/sdk" +import "github.com/JianFeeeee/HologramAgent-sdk/sdk" type Plugin struct { name string @@ -452,7 +452,7 @@ Parameters: `name` (route key), `caps` (1=text/2=rich/4=file/8=image), `desc`, ` #### Event Subscription ```go -import "github.com/JianFeeeee/homeagentsdk/sdk" +import "github.com/JianFeeeee/HologramAgent-sdk/sdk" unsub := s.Events().Subscribe(sdk.EventToolCall, func(evt *sdk.Event) { log.Printf("Tool was called: %v", evt.Payload) @@ -738,8 +738,8 @@ internal/plugins/yourplugin/ package yourplugin import ( - "gitcode.com/JianFeeeee/HomeAgent/internal/plugin" - sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" + "gitcode.com/JianFeeeee/HologramAgent/internal/plugin" + sdk "gitcode.com/JianFeeeee/HologramAgent/internal/sdk" ) func init() { @@ -777,7 +777,7 @@ Add blank import in `internal/plugins/all.go`: package plugins import ( - _ "gitcode.com/JianFeeeee/HomeAgent/internal/plugins/yourplugin" + _ "gitcode.com/JianFeeeee/HologramAgent/internal/plugins/yourplugin" // ... other plugins ) ``` @@ -844,31 +844,31 @@ Internal: records are stored in SQLite `disabled_plugins` table (`name`, `disabl ## 7. Example Plugin Reference -### SDK Repository Examples (`homeagent-sdk/example/`) +### SDK Repository Examples (`HologramAgent-sdk/example/`) | Example | Type | Features | |---------|------|----------| -| [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://github.com/JianFeeeee/homeagentsdk/tree/main/example/luademo) | Lua | Full-featured Lua example covering the whole v0.8.0 Lua SDK surface | -| [qq](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/qq) | Go | NapCat OneBot integration, 24 tools, full input/output channel wiring | -| [memo](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/memo) | Go | Memo management, PreAction injection + timed interrupt dual reminder | -| [files](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/files) | Go | File system operations, 4 write modes, sandbox isolation | -| [browser](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/browser) | Go | Web search + HTTP fetch (SSRF) + Chromium render (merged from web/webfetch) | -| [bili](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/bili) | Go | Bilibili video download (yt-dlp) | -| [editdoc](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/editdoc) | Go | Office document editing and format conversion | -| [a2a](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/a2a) | Go | Agent-to-Agent protocol | -| [ocr](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/ocr) | Go | Offline text recognition (Tesseract) | -| [sanitizer](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/sanitizer) | Go | Output sanitizer filter | -| [calendar](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/calendar) | Go | Calendar management | -| [rss](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/rss) | Go | RSS subscriptions | -| [ai_image](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/ai_image) | Go | AI image generation | -| [music](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/music) | Go | Music playback | -| [vikunja](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/vikunja) | Go | Vikunja task management (projects/tasks/labels CRUD) | -| [vanblog](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/vanblog) | Go | VanBlog publishing and management | -| [deepsearch](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/deepsearch) | Go | Multi-round deep search (progressive focus + cited summary) | -| [acp](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/acp) | Go | Agent Client Protocol (external editors/IDEs drive this agent) | -| [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://github.com/JianFeeeee/homeagentsdk/tree/main/example/plugindev) | Go | Plugin scaffolding: generate, build, install — lets the agent develop plugins itself | +| [weather](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/weather) | Go | Weather queries (wttr.in); demonstrates NoMemory/Cleaner/stage hooks/channels/text memory | +| [luademo](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/luademo) | Lua | Full-featured Lua example covering the whole v0.8.0 Lua SDK surface | +| [qq](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/qq) | Go | NapCat OneBot integration, 24 tools, full input/output channel wiring | +| [memo](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/memo) | Go | Memo management, PreAction injection + timed interrupt dual reminder | +| [files](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/files) | Go | File system operations, 4 write modes, sandbox isolation | +| [browser](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/browser) | Go | Web search + HTTP fetch (SSRF) + Chromium render (merged from web/webfetch) | +| [bili](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/bili) | Go | Bilibili video download (yt-dlp) | +| [editdoc](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/editdoc) | Go | Office document editing and format conversion | +| [a2a](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/a2a) | Go | Agent-to-Agent protocol | +| [ocr](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/ocr) | Go | Offline text recognition (Tesseract) | +| [sanitizer](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/sanitizer) | Go | Output sanitizer filter | +| [calendar](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/calendar) | Go | Calendar management | +| [rss](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/rss) | Go | RSS subscriptions | +| [ai_image](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/ai_image) | Go | AI image generation | +| [music](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/music) | Go | Music playback | +| [vikunja](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/vikunja) | Go | Vikunja task management (projects/tasks/labels CRUD) | +| [vanblog](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/vanblog) | Go | VanBlog publishing and management | +| [deepsearch](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/deepsearch) | Go | Multi-round deep search (progressive focus + cited summary) | +| [acp](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/acp) | Go | Agent Client Protocol (external editors/IDEs drive this agent) | +| [recoverydiag](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/recoverydiag) | Go | Five-part fault diagnosis (triage / sqlite check / log signatures / diff / ranked conclusions); core plugin of failback mode | +| [plugindev](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/plugindev) | Go | Plugin scaffolding: generate, build, install — lets the agent develop plugins itself | ### Built-in Plugins @@ -903,4 +903,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 architecture? See [ARCHITECTURE.md](ARCHITECTURE.md).* -*SDK repository and development tools? See [homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk).* +*SDK repository and development tools? See [HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk).* diff --git a/assets/docs/zh/OVERVIEW.md b/assets/docs/zh/OVERVIEW.md index 2621112b..85d2f209 100644 --- a/assets/docs/zh/OVERVIEW.md +++ b/assets/docs/zh/OVERVIEW.md @@ -101,5 +101,5 @@ CLI 需要终端面板时,**订阅事件总线**(`EventTerminalOutput` + `Ev - 内置插件(13 个):webui / cli / agentcli / cfgmgr / healthcheck / kbtree / multimodal / pluginmgr / clawhubadapter / remotedevice / skillmgr / seemedia / seq - 判定标准:**只有必须使用内部 SDK 能力(公开 SDK 没有的接口面)的插件才内置**,其余一律外置为 .hmap 插件(详见 ARCHITECTURE「内置插件的判定标准」) -- 外部插件示例([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 +- 外部插件示例([HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) 仓库 `example/`,含 Go 和 Lua 两种类型):qq / files / a2a / ai_image / bili / browser / calendar / editdoc / memo / music / ocr / rss / sanitizer / weather / luademo - 打包分发:`.hmap` 插件包格式,通过 WebUI 安装 diff --git a/assets/docs/zh/PLUGIN_DEV.md b/assets/docs/zh/PLUGIN_DEV.md index f728847b..2a41fdf9 100644 --- a/assets/docs/zh/PLUGIN_DEV.md +++ b/assets/docs/zh/PLUGIN_DEV.md @@ -9,11 +9,11 @@ HologramAgent 的所有外部交互能力都来自插件。插件通过 `PluginSDK`(Go API)与内核交互。 **SDK 仓库**:插件开发工具、模板代码和示例插件统一托管在 -[homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk) 仓库。 +[HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) 仓库。 ```bash -git clone https://github.com/JianFeeeee/homeagentsdk.git -cd homeagent-sdk +git clone https://github.com/JianFeeeee/HologramAgent-sdk.git +cd HologramAgent-sdk ``` 每个插件实现一个三方法接口: @@ -49,7 +49,7 @@ type Plugin interface { ### 安装 ```bash -cd homeagent-sdk/tools/hmapdev +cd HologramAgent-sdk/tools/hmapdev go build -o hmapdev # 将 hmapdev 加入 PATH 或直接使用 # 也可从 SDK 的 release 附件下载预编译二进制(hmapdev_linux_amd64 等) @@ -250,7 +250,7 @@ curl -X POST http://127.0.0.1:8080/api/v1/plugins \ ```go package main -import "github.com/JianFeeeee/homeagentsdk/sdk" +import "github.com/JianFeeeee/HologramAgent-sdk/sdk" type Plugin struct { name string @@ -445,7 +445,7 @@ s.RegisterOutputChannel("email", 1, "邮件发送", sdk.ChannelDef{ #### 事件订阅 ```go -import "github.com/JianFeeeee/homeagentsdk/sdk" +import "github.com/JianFeeeee/HologramAgent-sdk/sdk" unsub := s.Events().Subscribe(sdk.EventToolCall, func(evt *sdk.Event) { log.Printf("工具被调用: %v", evt.Payload) @@ -726,8 +726,8 @@ internal/plugins/yourplugin/ package yourplugin import ( - "gitcode.com/JianFeeeee/HomeAgent/internal/plugin" - sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk" + "gitcode.com/JianFeeeee/HologramAgent/internal/plugin" + sdk "gitcode.com/JianFeeeee/HologramAgent/internal/sdk" ) func init() { @@ -765,7 +765,7 @@ func (p *Plugin) Stop() error { package plugins import ( - _ "gitcode.com/JianFeeeee/HomeAgent/internal/plugins/yourplugin" + _ "gitcode.com/JianFeeeee/HologramAgent/internal/plugins/yourplugin" // ... 其他插件 ) ``` @@ -830,31 +830,31 @@ pmgr.ReloadPlugins() // 重载所有插件 ## 七、示例插件参考 -### SDK 仓库示例(`homeagent-sdk/example/`) +### SDK 仓库示例(`HologramAgent-sdk/example/`) | 示例 | 类型 | 特点 | |------|------|------| -| [weather](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/weather) | Go | 天气查询(wttr.in),演示 NoMemory/Cleaner/阶段钩子/通道/文本记忆 | -| [luademo](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/luademo) | Lua | Lua 全功能示例,覆盖 v0.8.0 Lua SDK 全部 API 面 | -| [qq](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/qq) | Go | NapCat OneBot 对接,24 个工具,输入/输出通道完整对接 | -| [memo](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/memo) | Go | 备忘管理,PreAction 注入 + 定时打断双提醒 | -| [files](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/files) | Go | 文件系统操作,4 种写入模式,沙箱隔离 | -| [browser](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/browser) | Go | 网络搜索、网页抓取(SSRF)、浏览器渲染(合并自 web/webfetch) | -| [bili](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/bili) | Go | B 站视频下载(yt-dlp) | -| [editdoc](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/editdoc) | Go | Office 文档编辑与格式转换 | -| [a2a](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/a2a) | Go | Agent-to-Agent 协议 | -| [ocr](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/ocr) | Go | 离线文字识别(Tesseract) | -| [sanitizer](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/sanitizer) | Go | 输出清洗过滤器 | -| [calendar](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/calendar) | Go | 日历管理 | -| [rss](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/rss) | Go | RSS 订阅 | -| [ai_image](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/ai_image) | Go | AI 图片生成 | -| [music](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/music) | Go | 音乐播放 | -| [vikunja](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/vikunja) | Go | Vikunja 任务管理对接(项目/任务/标签 CRUD) | -| [vanblog](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/vanblog) | Go | VanBlog 博客发布与管理 | -| [deepsearch](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/deepsearch) | Go | 多轮深度检索(逐层聚焦 + 引用汇总) | -| [acp](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/acp) | Go | Agent Client Protocol 对接(外部编辑器/IDE 驱动本 agent) | -| [recoverydiag](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/recoverydiag) | Go | 故障诊断五件套(分诊/sqlite 校验/日志签名/diff/结论排序),failback 模式的核心插件 | -| [plugindev](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/plugindev) | Go | 插件脚手架:生成工程、构建、安装,供 agent 自助开发插件 | +| [weather](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/weather) | Go | 天气查询(wttr.in),演示 NoMemory/Cleaner/阶段钩子/通道/文本记忆 | +| [luademo](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/luademo) | Lua | Lua 全功能示例,覆盖 v0.8.0 Lua SDK 全部 API 面 | +| [qq](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/qq) | Go | NapCat OneBot 对接,24 个工具,输入/输出通道完整对接 | +| [memo](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/memo) | Go | 备忘管理,PreAction 注入 + 定时打断双提醒 | +| [files](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/files) | Go | 文件系统操作,4 种写入模式,沙箱隔离 | +| [browser](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/browser) | Go | 网络搜索、网页抓取(SSRF)、浏览器渲染(合并自 web/webfetch) | +| [bili](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/bili) | Go | B 站视频下载(yt-dlp) | +| [editdoc](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/editdoc) | Go | Office 文档编辑与格式转换 | +| [a2a](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/a2a) | Go | Agent-to-Agent 协议 | +| [ocr](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/ocr) | Go | 离线文字识别(Tesseract) | +| [sanitizer](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/sanitizer) | Go | 输出清洗过滤器 | +| [calendar](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/calendar) | Go | 日历管理 | +| [rss](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/rss) | Go | RSS 订阅 | +| [ai_image](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/ai_image) | Go | AI 图片生成 | +| [music](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/music) | Go | 音乐播放 | +| [vikunja](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/vikunja) | Go | Vikunja 任务管理对接(项目/任务/标签 CRUD) | +| [vanblog](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/vanblog) | Go | VanBlog 博客发布与管理 | +| [deepsearch](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/deepsearch) | Go | 多轮深度检索(逐层聚焦 + 引用汇总) | +| [acp](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/acp) | Go | Agent Client Protocol 对接(外部编辑器/IDE 驱动本 agent) | +| [recoverydiag](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/recoverydiag) | Go | 故障诊断五件套(分诊/sqlite 校验/日志签名/diff/结论排序),failback 模式的核心插件 | +| [plugindev](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/plugindev) | Go | 插件脚手架:生成工程、构建、安装,供 agent 自助开发插件 | ### 内置插件 @@ -884,4 +884,4 @@ pmgr.ReloadPlugins() // 重载所有插件 *了解项目整体目标?查看 [OVERVIEW.md](OVERVIEW.md)。* *了解技术架构?查看 [ARCHITECTURE.md](ARCHITECTURE.md)。* -*SDK 仓库与开发工具?查看 [homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk)。* +*SDK 仓库与开发工具?查看 [HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk)。* diff --git a/assets/skills/commondev-discipline/SKILL.md b/assets/skills/commondev-discipline/SKILL.md index 9d665310..8d7cd187 100644 --- a/assets/skills/commondev-discipline/SKILL.md +++ b/assets/skills/commondev-discipline/SKILL.md @@ -552,7 +552,7 @@ hmapdev sdk current # 当前活跃 SDK 版本(★ 动手前必看) hmapdev sdk list # 本机已装的所有 SDK 版本 ``` -- 核心仓 `/home/program/TrueAgent`(Go module `gitcode.com/JianFeeeee/HomeAgent`) +- 核心仓 `/home/program/TrueAgent`(Go module `gitcode.com/JianFeeeee/HologramAgent`) - **SDK 仓** `third_party/homeagent-sdk`(独立 git 仓、独立版本号) ### 33. 开工流程 diff --git a/deploy/scripts/deploy-sdk-site.sh b/deploy/scripts/deploy-sdk-site.sh index 05eb9c15..44e1015b 100755 --- a/deploy/scripts/deploy-sdk-site.sh +++ b/deploy/scripts/deploy-sdk-site.sh @@ -1,11 +1,11 @@ #!/usr/bin/env bash -# SDK 文档站一键构建 + 部署(sdk.homeagent.jianfgit.xyz) +# SDK 文档站一键构建 + 部署(sdk.hologramagent.jianfgit.xyz) # # 链路(全部实测确认,写在这里免得下次再摸一遍): # 本机 192.168.2.60 # └─ nginx stream 按 ssl_preread SNI 把 443 透传 → 192.168.2.106:3080 # └─ navi 容器内的 nginx(不是 portal-nginx,那个已 Exited 两周) -# └─ server_name sdk.homeagent.jianfgit.xyz → root /app/data/sites/sdk +# └─ server_name sdk.hologramagent.jianfgit.xyz → root /app/data/sites/sdk # └─ 宿主对应 /vol1/docker/navi-data/sites/sdk # # 两个容易踩的坑: @@ -121,7 +121,7 @@ do_deploy_introduce() { info "回滚点: $SITES/.intro-bak-$TS" local code - code=$(curl -s -o /dev/null -m 10 -w '%{http_code}' -k https://introduce.homeagent.jianfgit.xyz/) + code=$(curl -s -o /dev/null -m 10 -w '%{http_code}' -k https://introduce.hologramagent.jianfgit.xyz/) info "首页 http=$code(introduce 配了 try_files 回落,404 才是异常)" if "$DIFF" -q <(intro_local_md5) <(intro_remote_md5) >/dev/null 2>&1; then info "✓ introduce 线上与本机源逐字节一致" @@ -203,11 +203,11 @@ do_deploy() { say "4/4 验证" # 静态文件换完 nginx 直接吃新文件,不需要 reload。 local code - code=$(curl -s -o /dev/null -m 10 -w '%{http_code}' -k https://sdk.homeagent.jianfgit.xyz/) + code=$(curl -s -o /dev/null -m 10 -w '%{http_code}' -k https://sdk.hologramagent.jianfgit.xyz/) info "首页 http=$code" for p in guide/scene-memory/ guide/parallel-tool-declaration/ llms.txt llms-full.txt; do printf ' %-34s ' "$p" - curl -s -o /dev/null -m 10 -w 'http=%{http_code}\n' -k "https://sdk.homeagent.jianfgit.xyz/$p" + curl -s -o /dev/null -m 10 -w 'http=%{http_code}\n' -k "https://sdk.hologramagent.jianfgit.xyz/$p" done if "$DIFF" -q <(local_md5) <(remote_md5) >/dev/null 2>&1; then info "✓ 线上与本地产物逐字节一致" diff --git a/docs/git-branching.md b/docs/git-branching.md index c1fa8fd4..f907313d 100644 --- a/docs/git-branching.md +++ b/docs/git-branching.md @@ -195,7 +195,7 @@ git switch main && git cherry-pick # 遵守 §三:只 pick,不 merge > - `feature/*` 分支(`input-semantics`、`multimodal-embedding`、`memory-media`、`plugin-proc-migration`) > 均已合入并删除。 -### SDK 仓(homeagent-sdk) +### SDK 仓(HologramAgent-sdk) | 分支 | 状态 | 处理 | |---|---|---| @@ -417,7 +417,7 @@ VERSION=<版本> bash deploy/packaging/package-windows.sh client amd64 # 需 # 核心仓 python3 deploy/scripts/upload_assets.py # 默认上传 dist/release 下可识别的产物 # SDK 仓(hmapdev_* 没有扩展名,不会被自动识别 ⇒ 必须显式列文件名) -GITCODE_REPO=JianFeeeee/homeagent-sdk ASSET_DIR=/dist/release \ +GITCODE_REPO=JianFeeeee/HologramAgent-sdk ASSET_DIR=/dist/release \ python3 deploy/scripts/upload_assets.py hmapdev_linux_amd64 ... ``` diff --git a/docs/zh/ci-cd-runbook.md b/docs/zh/ci-cd-runbook.md index 7ae50570..0dadcd11 100644 --- a/docs/zh/ci-cd-runbook.md +++ b/docs/zh/ci-cd-runbook.md @@ -8,8 +8,8 @@ | 仓 | 位置 | 流水线 | 触发 | | --- | --- | --- | --- | -| 主仓 HologramAgent | `github.com/JianFeeeee/HomeAgent`(公开) | `ci.yml` + `release.yml` | push / PR、`release/**` push | -| SDK 仓 homeagentsdk | `github.com/JianFeeeee/homeagentsdk`(公开) | `release.yml` | `release/**` push | +| 主仓 HologramAgent | `github.com/JianFeeeee/HologramAgent`(公开) | `ci.yml` + `release.yml` | push / PR、`release/**` push | +| SDK 仓 homeagentsdk | `github.com/JianFeeeee/HologramAgent-sdk`(公开) | `release.yml` | `release/**` push | | gitcode 镜像 | 同名仓库 | 无(由主仓 Release 的 sync job 同步) | — | **分支保护**(main,公开仓免费):10 项必须检查(Go build/vet/test、Race、 @@ -163,13 +163,13 @@ tar 写 stdout 收到 EPIPE ⇒ pipefail 判失败。**包越大越易触发** CI 的 sync job 需要仓库 secret `GITCODE_TOKEN`;**未配置时该 job 显式跳过** (不阻断 GitHub 侧发布)。 -**2026-09-29 已配置**:两仓(`JianFeeeee/HomeAgent`、`JianFeeeee/homeagentsdk`) +**2026-09-29 已配置**:两仓(`JianFeeeee/HologramAgent`、`JianFeeeee/HologramAgent-sdk`) 均已设同名 secret,取值自 `~/.git-credentials` 里那条 `https://JianFeeeee:@gitcode.com`。 配置方式(经 stdin 传入,避免 token 出现在进程列表): ```bash -printf '%s' "$TOKEN" | gh secret set GITCODE_TOKEN --repo JianFeeeee/HomeAgent -printf '%s' "$TOKEN" | gh secret set GITCODE_TOKEN --repo JianFeeeee/homeagentsdk +printf '%s' "$TOKEN" | gh secret set GITCODE_TOKEN --repo JianFeeeee/HologramAgent +printf '%s' "$TOKEN" | gh secret set GITCODE_TOKEN --repo JianFeeeee/HologramAgent-sdk ``` 验收:sync job 只在**新版本**发版时运行(`prepare.outputs.exists == 'false'`), @@ -177,12 +177,12 @@ printf '%s' "$TOKEN" | gh secret set GITCODE_TOKEN --repo JianFeeeee/homeagentsd ```bash # ① secret 存在 -gh secret list --repo JianFeeeee/HomeAgent | grep GITCODE_TOKEN +gh secret list --repo JianFeeeee/HologramAgent | grep GITCODE_TOKEN # ② token 有效 curl -s "https://gitcode.com/api/v5/user?access_token=$TOKEN" # ③ job 用的 private-token 头可读 release(两仓都测) curl -s -H "private-token: $TOKEN" \ - "https://gitcode.com/api/v5/repos/JianFeeeee/HomeAgent/releases/tags/v1.3.13" + "https://gitcode.com/api/v5/repos/JianFeeeee/HologramAgent/releases/tags/v1.3.13" ``` ★ **token 是宽范围的个人令牌**(可读 92 仓/48 私有、有写权限),而 CI 只需要这两个仓。 @@ -193,7 +193,7 @@ curl -s -H "private-token: $TOKEN" \ ```bash # token 放 ~/.git-credentials(https://JianFeeeee:@gitcode.com) -ASSET_DIR=<产物目录> GITCODE_REPO=JianFeeeee/HomeAgent \ +ASSET_DIR=<产物目录> GITCODE_REPO=JianFeeeee/HologramAgent \ python3 deploy/scripts/upload_assets.py # release 条目必须先存在(脚本向 releases//upload_url 取 OBS 签名 URL) ``` diff --git a/docs/zh/deploy-runbook.md b/docs/zh/deploy-runbook.md index b7e41030..73f2fe45 100644 --- a/docs/zh/deploy-runbook.md +++ b/docs/zh/deploy-runbook.md @@ -398,7 +398,7 @@ bash deploy/scripts/deploy-sdk-site.sh --rollback .sdk-bak-<时间戳> # 回滚 本机 192.168.2.60 └─ nginx stream 按 ssl_preread SNI 把 443 透传 → 192.168.2.106:3080 └─ navi 容器内的 nginx(**不是** portal-nginx,那个已 Exited 两周) - └─ server_name sdk.homeagent.jianfgit.xyz → root /app/data/sites/sdk + └─ server_name sdk.hologramagent.jianfgit.xyz → root /app/data/sites/sdk └─ 宿主对应 /vol1/docker/navi-data/sites/sdk ``` @@ -447,7 +447,7 @@ bash deploy/scripts/deploy-sdk-site.sh 验证线上是否真的可访问(**别只看本地产物**): ```bash -curl -s -o /dev/null -m 10 -w '%{http_code}\n' -k https://sdk.homeagent.jianfgit.xyz/guide/<新文档>/ +curl -s -o /dev/null -m 10 -w '%{http_code}\n' -k https://sdk.hologramagent.jianfgit.xyz/guide/<新文档>/ ``` ### 5.5 回滚点 diff --git a/site/index.html b/site/index.html index 130af6de..c1c4c13a 100644 --- a/site/index.html +++ b/site/index.html @@ -2018,7 +2018,7 @@

@@ -2823,37 +2823,37 @@ echo "你好,记住我喜欢喝咖啡" | ./build/waiter
a2av1.3.1

Agent 间通信。对外起 HTTP 服务暴露 /agent-card 与 /a2a(JSON-RPC)供他人发现与调用;对内提供工具去问别的 Agent。把监听地址设为空即只出站、不开端口。

- SDKexample/a2a↗ + SDKexample/a2a↗
acpv1.2.1

Agent Client Protocol 通信插件:充当 ACP 服务端接受其他 Agent 的任务请求,同时提供客户端工具向远程 ACP Agent(如 opencode)发起会话并读取回复

- SDKexample/acp↗ + SDKexample/acp↗
biliv1.2.0

B站视频下载。需系统装 yt-dlp。不指定格式时先返回可用清晰度列表,选定后再下载;输出目录有路径校验,拒绝写成系统目录。

- SDKexample/bili↗ + SDKexample/bili↗
browserv2.4.1

统一浏览器插件:搜索、HTTP抓取(quick)、无头渲染(normal)、交互式浏览器(interactive/CDP)

- SDKexample/browser↗ + SDKexample/browser↗
calendarv1.1.0

日历事件管理,支持提醒和重复事件

- SDKexample/calendar↗ + SDKexample/calendar↗
deepsearchv1.1.2

为 agent 提供真正的联网信息检索:本地 SearXNG 聚合多引擎(返回标题/URL/摘要/时间),支持新闻、时间范围、指定引擎;并提供网页正文抽取与「搜索+读前K篇」的深检索

- SDKexample/deepsearch↗ + SDKexample/deepsearch↗
editdocv2.0.0

全能办公插件:新建/读取/编辑/转换 docx·xlsx·pptx·md·csv·txt(基于 python-docx / openpyxl / python-pptx / soffice / pandoc)

- SDKexample/editdoc↗ + SDKexample/editdoc↗

公开仓中的 example 仍是 v1.0.0;v2.0.0 全能版源码尚未公开。

@@ -2869,72 +2869,72 @@ echo "你好,记住我喜欢喝咖啡" | ./build/waiter
memov1.1.0

待办与备忘录刻意分两类:待办每 5 分钟检查未完成数、有则注入提醒;备忘录纯记事不提醒。混成一类要么天天弹、要么被忘掉。

- SDKexample/memo↗ + SDKexample/memo↗
musicv0.1.0

搜歌与查歌词(网易云公开接口)。只读:不下载音频、不落文件。两段式用法 —— 先搜到歌曲 ID,再按 ID 取词。

- SDKexample/music↗ + SDKexample/music↗
ocrv1.0.0

图片文字识别。需系统装 tesseract(中文另需 chi_sim 语言包)。支持 URL 或 base64 输入,临时文件识别后自动清理。

- SDKexample/ocr↗ + SDKexample/ocr↗
plugindevv1.0.0

把 hmapdev 工具链封装成 Agent 可调用的工具:脚手架生成插件工程、构建打包 .hmap、管理 SDK 版本。配合 plugin_install 即可让 Agent 自己做完「新建插件 → 构建 → 安装」全流程。

- SDKexample/plugindev↗ + SDKexample/plugindev↗
qqv1.4.1

经 NapCat 桥接 QQ:20 个工具覆盖消息、群/好友、文件传输。带权限模型 —— 身份绑在「帧」上而非插件全局(中断抢占恢复后不会丢身份),多来源合并取权限交集,敏感工具按前缀一律拒绝非所有者。

- SDKexample/qq↗ + SDKexample/qq↗
recoverydiagv0.2.0

快速检查/崩溃取证工具集:diag_triage(退出码/信号/存活粗分)、diag_db(config.db 完整性 + LLM 源解析校验)、diag_log_scan(日志签名命中)、diag_delta(last-good 快照 vs 现状 diff)、diag_loc(正交综合定位)。全部返回结论而非原文,确定性、不消耗 LLM token,供 guard / failback 恢复决策使用。

- SDKexample/recoverydiag↗ + SDKexample/recoverydiag↗
rssv1.1.0

RSS/Atom 订阅监控。按间隔轮询,发现新条目即以中断注入告知 agent;订阅时记下历史条目,所以订一个源不会把旧文章全推一遍。

- SDKexample/rss↗ + SDKexample/rss↗
sanitizerv0.1.0

在三个阶段清洗文本:坏 UTF-8 / U+FFFD / ANSI 转义(会被模型复读)与 LLM 输出里的工具调用残留。不注册工具,只挂钩子。

- SDKexample/sanitizer↗ + SDKexample/sanitizer↗
vanblogv1.0.0

管理 VanBlog 开源博客系统:文章的增删改查、分类标签管理、草稿发布、备份导出等

- SDKexample/vanblog↗ + SDKexample/vanblog↗
vikunjav1.0.1

Vikunja 待办/任务管理:任务增删改查、项目与看板桶、标签、指派、评论、关联、附件、保存筛选器、团队与分享、通知、订阅、Webhook、时间跟踪、数据导入、实例管理;并附通用 API 直通工具兜底

- SDKexample/vikunja↗ + SDKexample/vikunja↗
weatherv1.0.0

查实时天气与预报(wttr.in,无需 API Key)。可设默认城市;结果标记为不进记忆计算 —— 天气是易变数据,反复写进记忆只会挤占预算。

- SDKexample/weather↗ + SDKexample/weather↗
ai_imagev1.3.0

文生图:按文字提示生成图片,下载到本地并返回文件路径(可直接被多模态链路读取)。

- SDKexample/ai_image↗ + SDKexample/ai_image↗
filesv1.0.0

沙箱文件操作:读写与编辑文件,全部操作限制在沙箱目录内(读取/写入/编辑/列目录)。

- SDKexample/files↗ + SDKexample/files↗
luademov0.1.0

Lua 插件全功能示例:工具(no_memory / cleaner)、阶段钩子、通道、数据类 API —— 想用 Lua 写插件,从这个例子抄起。

- SDKexample/luademo↗ + SDKexample/luademo↗
@@ -3010,35 +3010,35 @@ echo "你好,记住我喜欢喝咖啡" | ./build/waiter From 228fae252d02755e752cdad935aca93014935f60 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Wed, 21 Oct 2026 19:25:05 +0800 Subject: [PATCH 2/7] =?UTF-8?q?fix(docs):=20=E5=9B=9E=E9=80=80=20PLUGIN=5F?= =?UTF-8?q?DEV=20=E7=9A=84=20SDK=20import=20=E7=A4=BA=E4=BE=8B=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E4=BF=AE=E6=AD=A3=20upload=5Fassets/gui=20homepage=20?= =?UTF-8?q?=E7=9A=84=E4=BB=93=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 上一批 37b8c26 把文档里 4 处 Go import 示例改成了 `github.com/JianFeeeee/HologramAgent-sdk/sdk`,但该 module 路径并不存在: 主仓 go.mod:16 仍是 `github.com/JianFeeeee/homeagentsdk v0.9.2`,:46 replace 目标未变,third_party/homeagent-sdk/go.mod 首行仍是 `module github.com/JianFeeeee/homeagentsdk`,GitHub 上 HologramAgent-sdk 与 hologramagentsdk 均 404。照着文档抄这行 import 会直接 module not found, 比不改更坏。本次回退成真实可编译的 homeagentsdk。 改动: - assets/docs/{zh,en}/PLUGIN_DEV.md 各 2 处(zh:253、448;en:255、455) import 路径回退为 github.com/JianFeeeee/homeagentsdk/sdk。该行附近未加任何 「已改名」说明——等 SDK 仓真改名、主仓 go.mod 与第三方 module 一起改时 再统一处理,属另一批。全仓已无 HologramAgent-sdk/sdk 形态。 - deploy/scripts/upload_assets.py:8、:23 默认目标仓 JianFeeeee/HomeAgent → JianFeeeee/HologramAgent(主仓确已改名,HomeAgent 在 GitHub 上 301)。:8 括号里「SDK 仓传 JianFeeeee/homeagent-sdk」按要求保留。 - cmd/gui/package.json:5 homepage 元数据同步为 HologramAgent;该文件仅此 1 行变更,name/author/description 等其它字段未动。 保留不动(已获确认属正确形态): - go.mod 两行与 deploy/packaging/package-linux.sh 六处 homeagentsdk (必须与 go.mod 逐字一致) - internal/**/*.go 的 74 处真实依赖 import - deploy/packaging/packaging_test.go:99,101 对 gitcode.com/JianFeeeee/HomeAgent 的反向断言(它断言 build.sh 不得使用历史路径) - internal/plugins/webui 三处注释里的 homeagent.jianfgit.xyz(历史实测记录) - cd HologramAgent-sdk / clone ...HologramAgent-sdk.git(操作指令目录名与 URL, 非 import 路径) 判据:7 条正向(含「文档 import 路径必须与 go.mod 的 SDK module 同源」); 变异 4 次均按预期报红——分别还原 zh:253 import、upload_assets.py:23 默认值、 gui homepage、以及把 packaging_test.go 反向断言那两行也改名。 go build ./... 通过,go test ./deploy/packaging/ 通过。 --- assets/docs/en/PLUGIN_DEV.md | 4 ++-- assets/docs/zh/PLUGIN_DEV.md | 4 ++-- cmd/gui/package.json | 2 +- deploy/scripts/upload_assets.py | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/assets/docs/en/PLUGIN_DEV.md b/assets/docs/en/PLUGIN_DEV.md index e4726a8e..c860fce3 100644 --- a/assets/docs/en/PLUGIN_DEV.md +++ b/assets/docs/en/PLUGIN_DEV.md @@ -252,7 +252,7 @@ curl -X POST http://127.0.0.1:8080/api/v1/plugins \ ```go package main -import "github.com/JianFeeeee/HologramAgent-sdk/sdk" +import "github.com/JianFeeeee/homeagentsdk/sdk" type Plugin struct { name string @@ -452,7 +452,7 @@ Parameters: `name` (route key), `caps` (1=text/2=rich/4=file/8=image), `desc`, ` #### Event Subscription ```go -import "github.com/JianFeeeee/HologramAgent-sdk/sdk" +import "github.com/JianFeeeee/homeagentsdk/sdk" unsub := s.Events().Subscribe(sdk.EventToolCall, func(evt *sdk.Event) { log.Printf("Tool was called: %v", evt.Payload) diff --git a/assets/docs/zh/PLUGIN_DEV.md b/assets/docs/zh/PLUGIN_DEV.md index 2a41fdf9..b4d181d4 100644 --- a/assets/docs/zh/PLUGIN_DEV.md +++ b/assets/docs/zh/PLUGIN_DEV.md @@ -250,7 +250,7 @@ curl -X POST http://127.0.0.1:8080/api/v1/plugins \ ```go package main -import "github.com/JianFeeeee/HologramAgent-sdk/sdk" +import "github.com/JianFeeeee/homeagentsdk/sdk" type Plugin struct { name string @@ -445,7 +445,7 @@ s.RegisterOutputChannel("email", 1, "邮件发送", sdk.ChannelDef{ #### 事件订阅 ```go -import "github.com/JianFeeeee/HologramAgent-sdk/sdk" +import "github.com/JianFeeeee/homeagentsdk/sdk" unsub := s.Events().Subscribe(sdk.EventToolCall, func(evt *sdk.Event) { log.Printf("工具被调用: %v", evt.Payload) diff --git a/cmd/gui/package.json b/cmd/gui/package.json index a4aa3f82..7059aa34 100644 --- a/cmd/gui/package.json +++ b/cmd/gui/package.json @@ -2,7 +2,7 @@ "name": "homeagent-gui", "version": "1.4.0", "author": "JianFeeeee ", - "homepage": "https://github.com/JianFeeeee/HomeAgent", + "homepage": "https://github.com/JianFeeeee/HologramAgent", "description": "HomeAgent Desktop GUI - Multi-connection management dashboard", "main": "main.js", "scripts": { diff --git a/deploy/scripts/upload_assets.py b/deploy/scripts/upload_assets.py index 1e8211ef..c5896830 100755 --- a/deploy/scripts/upload_assets.py +++ b/deploy/scripts/upload_assets.py @@ -5,7 +5,7 @@ 不传 file 时上传 dist/release/ 下全部发布产物。 环境变量: - GITCODE_REPO 目标仓库,默认 JianFeeeee/HomeAgent(SDK 仓传 JianFeeeee/homeagent-sdk) + GITCODE_REPO 目标仓库,默认 JianFeeeee/HologramAgent(SDK 仓传 JianFeeeee/homeagent-sdk) ASSET_DIR 资产目录,默认 /dist/release 为何两步:gitcode 的 release 附件不走 API 直传,而是先向 @@ -20,7 +20,7 @@ import urllib.error import urllib.parse import urllib.request -REPO = os.environ.get("GITCODE_REPO", "JianFeeeee/HomeAgent") +REPO = os.environ.get("GITCODE_REPO", "JianFeeeee/HologramAgent") API = "https://gitcode.com/api/v5/repos" # 发布产物后缀。注意 Windows 安装器是 HomeAgent_v*_win64.exe, From ee2b7d7bac0f0287c6685ecb2804369d0400f833 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Wed, 21 Oct 2026 19:36:53 +0800 Subject: [PATCH 3/7] =?UTF-8?q?fix(docs,site):=20=E5=9B=9E=E9=80=80?= =?UTF-8?q?=E4=B8=8A=E4=B8=80=E6=89=B9=E9=94=99=E8=AF=AF=E5=8F=A3=E5=BE=84?= =?UTF-8?q?=20=E2=80=94=E2=80=94=20SDK=20=E4=BB=93=E5=90=8D=E4=B8=8E?= =?UTF-8?q?=E7=AB=99=E7=82=B9=E5=9F=9F=E5=90=8D=E6=94=B9=E5=9B=9E=E5=AE=9E?= =?UTF-8?q?=E9=99=85=E6=B4=BB=E9=93=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 上一批(37b8c26 / 228fae2)把文档与站点里的 SDK 仓名统一改成了 `JianFeeeee/HologramAgent-sdk`、把站点域名改成了 `*.hologramagent.jianfgit.xyz`, 前提「本机无外网、无法验证」是错的。实测外网通畅,两处改动都是真实死链,本批全部回退。 ## 一、SDK 仓名 HologramAgent-sdk → homeagentsdk(104 处) | 文件 | 处数 | |---|---| | site/index.html | 23 | | README.md | 7 | | README_EN.md | 7 | | assets/docs/zh/PLUGIN_DEV.md | 29 | | assets/docs/en/PLUGIN_DEV.md | 29 | | assets/docs/zh/OVERVIEW.md | 2 | | assets/docs/en/OVERVIEW.md | 2 | | docs/git-branching.md | 2 | | docs/zh/ci-cd-runbook.md | 3 | | **合计** | **104** | 含 `.git` 形态与 `cd homeagentsdk` 目录名。PLUGIN_DEV.md 里原本就是 `import "github.com/JianFeeeee/homeagentsdk/sdk"` 的两处示例(zh 253/448、en 255/455) 与 6a 前基线逐行 diff 无差异,未被改动成第三种形态。 ## 二、站点域名 hologramagent.jianfgit.xyz → homeagent.jianfgit.xyz(15 处) | 文件 | 处数 | |---|---| | README.md | 4 | | README_EN.md | 4 | | docs/zh/deploy-runbook.md | 2 | | deploy/scripts/deploy-sdk-site.sh | 5 | | **合计** | **15** | deploy-sdk-site.sh 只改探活/注释里的域名,nginx 语义(SNI 透传、 server_name → root 的链路描述)未变。 ## 三、明确未动 - go.mod 两行、third_party/homeagent-sdk 路径、internal/**/*.go 的 import —— 零改动 - deploy/scripts/upload_assets.py:23 默认值 `JianFeeeee/HologramAgent` 保留(主仓确已改名) - cmd/gui/package.json homepage 保留 HologramAgent(GitHub 200) - docs/git-branching.md:420 的 GITCODE_REPO 改为 `JianFeeeee/homeagent-sdk`: gitcode 上只有 homeagent-sdk(200) 与 HomeAgent(200),HologramAgent-sdk 与 HologramAgent 在 gitcode 均为 404 ## 四、实测证据(curl -L -o /dev/null -m 25 -w '%{http_code}') GitHub 侧(经 http://127.0.0.1:7890 出口): 200 https://github.com/JianFeeeee/homeagentsdk ← 回退目标,活链 200 https://github.com/JianFeeeee/HologramAgent ← 主仓,确已改名 404 https://github.com/JianFeeeee/HologramAgent-sdk ← 上一批写成这个,死链 404 https://github.com/JianFeeeee/homeagent-sdk ← 不是这个名字 200 https://github.com/JianFeeeee/HomeAgent ← 301 → HologramAgent 深链抽查(回退后全部 200): 200 .../homeagentsdk/tree/main/example/weather 200 .../homeagentsdk/tree/main/example/plugindev 200 .../homeagentsdk/tree/main/example/luademo 200 .../homeagentsdk/blob/main/LICENSE 200 .../homeagentsdk/tree/v1.1.0 站点域名(直连,不走代理): 200 https://sdk.homeagent.jianfgit.xyz/ ← 回退目标,已部署 200 https://introduce.homeagent.jianfgit.xyz/ 200 https://sdk.homeagent.jianfgit.xyz/llms.txt 200 https://sdk.homeagent.jianfgit.xyz/llms-full.txt 404 https://sdk.hologramagent.jianfgit.xyz/ ← 上一批写成这个,未部署 新子域 404 的原因不是网络:证书是 CN=*.jianfgit.xyz 通配符可用, 但 nginx 里没有 hologramagent 的 server_name,站点根本没部署。 gitcode 侧(决定 §三 那行的连字符形态): 200 https://gitcode.com/JianFeeeee/homeagent-sdk 200 https://gitcode.com/JianFeeeee/HomeAgent 404 https://gitcode.com/JianFeeeee/HologramAgent-sdk 404 https://gitcode.com/JianFeeeee/HologramAgent ## 五、验收 1. 全仓 `HologramAgent-sdk` 计数 = 0(.md/.html/.py/.sh/.yml/.yaml/.txt/.json/.go/.mod/.sum) 2. 全仓 `hologramagent.jianfgit.xyz` 计数 = 0 3. site/index.html 23 条 SDK 链接全指向 homeagentsdk,0 条指向 HologramAgent-sdk 4. curl -L 三条必测均 200(见 §四) 5. `TMPDIR=/home/newqqagent/tmpbuild6 go build ./...` 退出码 0 (/tmp 已 98% 满,用独立 TMPDIR 避开 No space left on device) 6. git status 干净;11 个改动文件全为 .md/.html/.sh,零 .go 改动 --- README.md | 16 ++++----- README_EN.md | 16 ++++----- assets/docs/en/OVERVIEW.md | 2 +- assets/docs/en/PLUGIN_DEV.md | 54 +++++++++++++++---------------- assets/docs/zh/OVERVIEW.md | 2 +- assets/docs/zh/PLUGIN_DEV.md | 54 +++++++++++++++---------------- deploy/scripts/deploy-sdk-site.sh | 10 +++--- docs/git-branching.md | 4 +-- docs/zh/ci-cd-runbook.md | 6 ++-- docs/zh/deploy-runbook.md | 4 +-- site/index.html | 46 +++++++++++++------------- 11 files changed, 107 insertions(+), 107 deletions(-) diff --git a/README.md b/README.md index 72394580..f929346b 100644 --- a/README.md +++ b/README.md @@ -240,7 +240,7 @@ internal/ ├── config/ SQLite 配置中心 ├── events/ 事件总线 └── internal/lua/adapters/ 10 个 LLM 协议适配器脚本 -外部插件开发见 [HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) 仓库,使用 `hmapdev` 工具链开发,参考 `example/` 目录下的 Go 和 Lua 示例 +外部插件开发见 [homeagentsdk](https://github.com/JianFeeeee/homeagentsdk) 仓库,使用 `hmapdev` 工具链开发,参考 `example/` 目录下的 Go 和 Lua 示例 ``` ## 项目状态 @@ -318,7 +318,7 @@ internal/ > inline/small **30.4µs**、frame/small 51.5µs、inline/large 767µs、frame/large 398µs。 > 保留原文不修改,以免伪造历史。 -**v1.1.1** — 多模态贯通**插件边界**。v1.1.0 让记忆系统支持了二进制多媒体节点,但那条链路只对内核自己开放;本版打通到插件与模型。公开 SDK 新增媒体字段与三个媒体注入接口(配套 [SDK v1.1.0](https://github.com/JianFeeeee/HologramAgent-sdk/tree/v1.1.0),整条 1.1.x 线共用),内核实现对应四个 RPC。桥接层此前在**静默裁字段**:插件交进来的 `Confidence`/类型/`SentenceText` 全被丢弃、`Doc` 只留三个字段、`Remove` 不解引用(媒体永久算「被引用」,GC 收不掉)。`processTextInput`/`processMediaInput` 归一成一条 `processInput`,媒体路径由此获得它一直缺的去重、`no_memory`、通道 `Cleaner`、中断语义、`EventRawInput`。修掉三处真实缺陷:**用户发的图从来没出现在 WebUI 聊天记录里**(媒体路径发布 map 而订阅方断言 string)、**`memory_commit` 的 `sentence_text` 从未暴露给模型**(而它是媒体绑定链的必经环节)、**`PluginSDK` 两处并发竞态**(`-race` 实测 11 处,插件重载瞬间偶发 nil 解引用崩溃)。 +**v1.1.1** — 多模态贯通**插件边界**。v1.1.0 让记忆系统支持了二进制多媒体节点,但那条链路只对内核自己开放;本版打通到插件与模型。公开 SDK 新增媒体字段与三个媒体注入接口(配套 [SDK v1.1.0](https://github.com/JianFeeeee/homeagentsdk/tree/v1.1.0),整条 1.1.x 线共用),内核实现对应四个 RPC。桥接层此前在**静默裁字段**:插件交进来的 `Confidence`/类型/`SentenceText` 全被丢弃、`Doc` 只留三个字段、`Remove` 不解引用(媒体永久算「被引用」,GC 收不掉)。`processTextInput`/`processMediaInput` 归一成一条 `processInput`,媒体路径由此获得它一直缺的去重、`no_memory`、通道 `Cleaner`、中断语义、`EventRawInput`。修掉三处真实缺陷:**用户发的图从来没出现在 WebUI 聊天记录里**(媒体路径发布 map 而订阅方断言 string)、**`memory_commit` 的 `sentence_text` 从未暴露给模型**(而它是媒体绑定链的必经环节)、**`PluginSDK` 两处并发竞态**(`-race` 实测 11 处,插件重载瞬间偶发 nil 解引用崩溃)。 **v1.1.0** — 记忆系统支持**二进制多媒体节点**。内容寻址媒体存储(CAS + SQLite 元数据 + 磁盘 blob,`Get` always 重校 digest),贯通 L0(上下文事件)/L2(文档)/L3(图谱句子)三层,引用计数式 GC(有引用者绝不删)。视觉模型生成的描述文本是持久语义记忆,blob 只是可被容量 GC 淘汰的缓存。 @@ -326,16 +326,16 @@ internal/ **v0.9.0** — C ABI v2:外部插件 Stage 回调支持写回(`invoke_stage` 增加 result 输出,插件可在 OnInput/AfterToolcall/PostAction 修改 RawMessage/LLMText/ToolResults 等并同步回内核),ABI 版本随内核 minor 对齐(v0.9.x → ABIVersion=2,`version_min=1` 向后兼容旧插件)。同步修复工具循环 zen 兼容补位误伤首轮 system 上下文的问题。配套 SDK 提供增强版 sanitizer 示例(坏 UTF-8/U+FFFD/ANSI 转义全链路清洗)。**该 ABI 已随 v1.0.0 退场。** -**v0.8.0** — 核心可用,插件系统增强。内置 20+ 插件,外部插件开发见 [HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) 仓库。新增输入通道 `NoMemory`/`Cleaner`、`ChannelDef`、插件禁用/启用系统(CLI + WebUI),`plugindev` 工具链完成 C ABI `ChannelDef` 传递。 +**v0.8.0** — 核心可用,插件系统增强。内置 20+ 插件,外部插件开发见 [homeagentsdk](https://github.com/JianFeeeee/homeagentsdk) 仓库。新增输入通道 `NoMemory`/`Cleaner`、`ChannelDef`、插件禁用/启用系统(CLI + WebUI),`plugindev` 工具链完成 C ABI `ChannelDef` 传递。 ## 文档 **在线文档**: -- 介绍站(项目总览): -- 插件 SDK 文档(快速开始 / API 参考 / 指南 / 示例): - —— 面向 agent 的纯文本入口:[`llms.txt`](https://sdk.hologramagent.jianfgit.xyz/llms.txt) / - [`llms-full.txt`](https://sdk.hologramagent.jianfgit.xyz/llms-full.txt) +- 介绍站(项目总览): +- 插件 SDK 文档(快速开始 / API 参考 / 指南 / 示例): + —— 面向 agent 的纯文本入口:[`llms.txt`](https://sdk.homeagent.jianfgit.xyz/llms.txt) / + [`llms-full.txt`](https://sdk.homeagent.jianfgit.xyz/llms-full.txt) **仓内文档**(随代码版本走): @@ -385,7 +385,7 @@ make install # 安装到系统 **通过网络提供服务时也要向使用者提供源码**(§13 Remote Network Interaction)。 即:任何人把改过的 HologramAgent 对外提供网络服务,都必须让该服务的使用者拿到改动后的源码。 -插件与本项目通过公开 [HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) 静态链接 +插件与本项目通过公开 [homeagentsdk](https://github.com/JianFeeeee/homeagentsdk) 静态链接 (SDK 源码会进入插件二进制),但那个仓**以 MIT 发布**——MIT 是宽松许可,拿到授权的代码不继承 本项目的 AGPL。因此**外部插件不是本项目的衍生作品**,作者可自行选择许可(含闭源、商业、私有), 既不必同许可、也不受 §13 网络条款约束。第三方插件生态的安全与活跃正建立在这条之上。 diff --git a/README_EN.md b/README_EN.md index a6363c77..223d2a68 100644 --- a/README_EN.md +++ b/README_EN.md @@ -221,7 +221,7 @@ internal/ ├── config/ SQLite config center ├── events/ Event bus └── internal/lua/adapters/ 10 LLM protocol adapter scripts -External plugin development: see [HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) repo, use `hmapdev` toolchain, refer to Go and Lua examples in `example/` +External plugin development: see [homeagentsdk](https://github.com/JianFeeeee/homeagentsdk) repo, use `hmapdev` toolchain, refer to Go and Lua examples in `example/` ``` ## Project Status @@ -323,7 +323,7 @@ External plugin development: see [HologramAgent-sdk](https://github.com/JianFeee **v1.1.1** — Multimodal reaches the **plugin boundary**. v1.1.0 gave the memory system binary multimedia nodes, but that path was open only to the kernel itself; this release opens it to plugins and the model. The public SDK gains media fields and three media injection methods -(paired with [SDK v1.1.0](https://github.com/JianFeeeee/HologramAgent-sdk/tree/v1.1.0), +(paired with [SDK v1.1.0](https://github.com/JianFeeeee/homeagentsdk/tree/v1.1.0), shared by the whole 1.1.x line), and the kernel implements the four matching RPCs. The bridge layer had been **silently dropping fields**: `Confidence`/types/`SentenceText` handed in by a plugin were discarded, `Doc` kept only three fields, and `Remove` never released references @@ -346,16 +346,16 @@ semantic memory; the blob is only a cache that capacity GC may evict. **v0.9.0** — C ABI v2: external plugin Stage callbacks can now write back (`invoke_stage` gained a result out-param; plugins may mutate RawMessage/LLMText/ToolResults etc. in OnInput/AfterToolcall/PostAction and have them synced to the core). ABI version now tracks core minor releases (v0.9.x → ABIVersion=2, `version_min=1` keeps old plugins loadable). Also fixes the tool-loop zen-compat placeholder that wrongly fired on first-turn system context tail. The SDK ships an enhanced sanitizer example (bad-UTF-8 / U+FFFD / ANSI-escape scrub across the whole pipeline). **This ABI retired with v1.0.0.** -**v0.8.0** — Core is functional, plugin system enhanced. 20+ built-in plugins. External plugin development via [HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) repo. Added input channel `NoMemory`/`Cleaner`, `ChannelDef`, plugin disable/enable system (CLI + WebUI), `plugindev` toolchain C ABI `ChannelDef` support. +**v0.8.0** — Core is functional, plugin system enhanced. 20+ built-in plugins. External plugin development via [homeagentsdk](https://github.com/JianFeeeee/homeagentsdk) repo. Added input channel `NoMemory`/`Cleaner`, `ChannelDef`, plugin disable/enable system (CLI + WebUI), `plugindev` toolchain C ABI `ChannelDef` support. ## Documentation **Online docs**: -- Introduction site (project overview): -- Plugin SDK docs (getting started / API reference / guides / examples): - — agent-friendly plain text: [`llms.txt`](https://sdk.hologramagent.jianfgit.xyz/llms.txt) / - [`llms-full.txt`](https://sdk.hologramagent.jianfgit.xyz/llms-full.txt) +- Introduction site (project overview): +- Plugin SDK docs (getting started / API reference / guides / examples): + — agent-friendly plain text: [`llms.txt`](https://sdk.homeagent.jianfgit.xyz/llms.txt) / + [`llms-full.txt`](https://sdk.homeagent.jianfgit.xyz/llms-full.txt) **In-repo docs** (versioned with the code): @@ -408,7 +408,7 @@ with it over a network** (§13, Remote Network Interaction). Anyone running a mo as a network service therefore has to make the modified source available to that service's users. Plugins are **statically linked** against this project through the public -[HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) (the SDK source ends up inside the +[homeagentsdk](https://github.com/JianFeeeee/homeagentsdk) (the SDK source ends up inside the plugin binary), but that repository is released under **MIT** — a permissive license, so code received under it does **not** inherit this project's AGPL. External plugins are therefore **not derivative works of this project**: authors pick their own license (closed-source, commercial or diff --git a/assets/docs/en/OVERVIEW.md b/assets/docs/en/OVERVIEW.md index 9ed5d5ec..b05375a0 100644 --- a/assets/docs/en/OVERVIEW.md +++ b/assets/docs/en/OVERVIEW.md @@ -111,5 +111,5 @@ Core functionality is operational. Plugin system and SDK are ready for independe - Built-in plugins (13): webui / cli / agentcli / cfgmgr / healthcheck / kbtree / multimodal / pluginmgr / clawhubadapter / remotedevice / skillmgr / seemedia / seq - Criterion: **a plugin stays built-in only if it requires internal-SDK-only capabilities**; everything else ships as an .hmap external plugin (see ARCHITECTURE) -- External plugin examples ([HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-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 ([homeagentsdk](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 diff --git a/assets/docs/en/PLUGIN_DEV.md b/assets/docs/en/PLUGIN_DEV.md index c860fce3..d5436a74 100644 --- a/assets/docs/en/PLUGIN_DEV.md +++ b/assets/docs/en/PLUGIN_DEV.md @@ -8,11 +8,11 @@ All external interaction capabilities of HologramAgent 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 [HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) repository. +**SDK Repository**: Plugin development tools, template code, and example plugins are hosted in the [homeagentsdk](https://github.com/JianFeeeee/homeagentsdk) repository. ```bash -git clone https://github.com/JianFeeeee/HologramAgent-sdk.git -cd HologramAgent-sdk +git clone https://github.com/JianFeeeee/homeagentsdk.git +cd homeagentsdk ``` Each plugin implements a three-method interface: @@ -48,7 +48,7 @@ plugin types, and producing `.hmap` plugin bundles (the tool is named after that ### Installation ```bash -cd HologramAgent-sdk/tools/hmapdev +cd homeagentsdk/tools/hmapdev go build -o hmapdev # Add hmapdev to PATH or use directly # Prebuilt binaries also ship as release assets (hmapdev_linux_amd64, ...) @@ -844,31 +844,31 @@ Internal: records are stored in SQLite `disabled_plugins` table (`name`, `disabl ## 7. Example Plugin Reference -### SDK Repository Examples (`HologramAgent-sdk/example/`) +### SDK Repository Examples (`homeagentsdk/example/`) | Example | Type | Features | |---------|------|----------| -| [weather](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/weather) | Go | Weather queries (wttr.in); demonstrates NoMemory/Cleaner/stage hooks/channels/text memory | -| [luademo](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/luademo) | Lua | Full-featured Lua example covering the whole v0.8.0 Lua SDK surface | -| [qq](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/qq) | Go | NapCat OneBot integration, 24 tools, full input/output channel wiring | -| [memo](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/memo) | Go | Memo management, PreAction injection + timed interrupt dual reminder | -| [files](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/files) | Go | File system operations, 4 write modes, sandbox isolation | -| [browser](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/browser) | Go | Web search + HTTP fetch (SSRF) + Chromium render (merged from web/webfetch) | -| [bili](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/bili) | Go | Bilibili video download (yt-dlp) | -| [editdoc](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/editdoc) | Go | Office document editing and format conversion | -| [a2a](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/a2a) | Go | Agent-to-Agent protocol | -| [ocr](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/ocr) | Go | Offline text recognition (Tesseract) | -| [sanitizer](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/sanitizer) | Go | Output sanitizer filter | -| [calendar](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/calendar) | Go | Calendar management | -| [rss](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/rss) | Go | RSS subscriptions | -| [ai_image](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/ai_image) | Go | AI image generation | -| [music](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/music) | Go | Music playback | -| [vikunja](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/vikunja) | Go | Vikunja task management (projects/tasks/labels CRUD) | -| [vanblog](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/vanblog) | Go | VanBlog publishing and management | -| [deepsearch](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/deepsearch) | Go | Multi-round deep search (progressive focus + cited summary) | -| [acp](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/acp) | Go | Agent Client Protocol (external editors/IDEs drive this agent) | -| [recoverydiag](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/recoverydiag) | Go | Five-part fault diagnosis (triage / sqlite check / log signatures / diff / ranked conclusions); core plugin of failback mode | -| [plugindev](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/plugindev) | Go | Plugin scaffolding: generate, build, install — lets the agent develop plugins itself | +| [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://github.com/JianFeeeee/homeagentsdk/tree/main/example/luademo) | Lua | Full-featured Lua example covering the whole v0.8.0 Lua SDK surface | +| [qq](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/qq) | Go | NapCat OneBot integration, 24 tools, full input/output channel wiring | +| [memo](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/memo) | Go | Memo management, PreAction injection + timed interrupt dual reminder | +| [files](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/files) | Go | File system operations, 4 write modes, sandbox isolation | +| [browser](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/browser) | Go | Web search + HTTP fetch (SSRF) + Chromium render (merged from web/webfetch) | +| [bili](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/bili) | Go | Bilibili video download (yt-dlp) | +| [editdoc](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/editdoc) | Go | Office document editing and format conversion | +| [a2a](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/a2a) | Go | Agent-to-Agent protocol | +| [ocr](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/ocr) | Go | Offline text recognition (Tesseract) | +| [sanitizer](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/sanitizer) | Go | Output sanitizer filter | +| [calendar](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/calendar) | Go | Calendar management | +| [rss](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/rss) | Go | RSS subscriptions | +| [ai_image](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/ai_image) | Go | AI image generation | +| [music](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/music) | Go | Music playback | +| [vikunja](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/vikunja) | Go | Vikunja task management (projects/tasks/labels CRUD) | +| [vanblog](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/vanblog) | Go | VanBlog publishing and management | +| [deepsearch](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/deepsearch) | Go | Multi-round deep search (progressive focus + cited summary) | +| [acp](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/acp) | Go | Agent Client Protocol (external editors/IDEs drive this agent) | +| [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://github.com/JianFeeeee/homeagentsdk/tree/main/example/plugindev) | Go | Plugin scaffolding: generate, build, install — lets the agent develop plugins itself | ### Built-in Plugins @@ -903,4 +903,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 architecture? See [ARCHITECTURE.md](ARCHITECTURE.md).* -*SDK repository and development tools? See [HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk).* +*SDK repository and development tools? See [homeagentsdk](https://github.com/JianFeeeee/homeagentsdk).* diff --git a/assets/docs/zh/OVERVIEW.md b/assets/docs/zh/OVERVIEW.md index 85d2f209..2c0a767a 100644 --- a/assets/docs/zh/OVERVIEW.md +++ b/assets/docs/zh/OVERVIEW.md @@ -101,5 +101,5 @@ CLI 需要终端面板时,**订阅事件总线**(`EventTerminalOutput` + `Ev - 内置插件(13 个):webui / cli / agentcli / cfgmgr / healthcheck / kbtree / multimodal / pluginmgr / clawhubadapter / remotedevice / skillmgr / seemedia / seq - 判定标准:**只有必须使用内部 SDK 能力(公开 SDK 没有的接口面)的插件才内置**,其余一律外置为 .hmap 插件(详见 ARCHITECTURE「内置插件的判定标准」) -- 外部插件示例([HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) 仓库 `example/`,含 Go 和 Lua 两种类型):qq / files / a2a / ai_image / bili / browser / calendar / editdoc / memo / music / ocr / rss / sanitizer / weather / luademo +- 外部插件示例([homeagentsdk](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 安装 diff --git a/assets/docs/zh/PLUGIN_DEV.md b/assets/docs/zh/PLUGIN_DEV.md index b4d181d4..e3897747 100644 --- a/assets/docs/zh/PLUGIN_DEV.md +++ b/assets/docs/zh/PLUGIN_DEV.md @@ -9,11 +9,11 @@ HologramAgent 的所有外部交互能力都来自插件。插件通过 `PluginSDK`(Go API)与内核交互。 **SDK 仓库**:插件开发工具、模板代码和示例插件统一托管在 -[HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk) 仓库。 +[homeagentsdk](https://github.com/JianFeeeee/homeagentsdk) 仓库。 ```bash -git clone https://github.com/JianFeeeee/HologramAgent-sdk.git -cd HologramAgent-sdk +git clone https://github.com/JianFeeeee/homeagentsdk.git +cd homeagentsdk ``` 每个插件实现一个三方法接口: @@ -49,7 +49,7 @@ type Plugin interface { ### 安装 ```bash -cd HologramAgent-sdk/tools/hmapdev +cd homeagentsdk/tools/hmapdev go build -o hmapdev # 将 hmapdev 加入 PATH 或直接使用 # 也可从 SDK 的 release 附件下载预编译二进制(hmapdev_linux_amd64 等) @@ -830,31 +830,31 @@ pmgr.ReloadPlugins() // 重载所有插件 ## 七、示例插件参考 -### SDK 仓库示例(`HologramAgent-sdk/example/`) +### SDK 仓库示例(`homeagentsdk/example/`) | 示例 | 类型 | 特点 | |------|------|------| -| [weather](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/weather) | Go | 天气查询(wttr.in),演示 NoMemory/Cleaner/阶段钩子/通道/文本记忆 | -| [luademo](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/luademo) | Lua | Lua 全功能示例,覆盖 v0.8.0 Lua SDK 全部 API 面 | -| [qq](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/qq) | Go | NapCat OneBot 对接,24 个工具,输入/输出通道完整对接 | -| [memo](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/memo) | Go | 备忘管理,PreAction 注入 + 定时打断双提醒 | -| [files](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/files) | Go | 文件系统操作,4 种写入模式,沙箱隔离 | -| [browser](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/browser) | Go | 网络搜索、网页抓取(SSRF)、浏览器渲染(合并自 web/webfetch) | -| [bili](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/bili) | Go | B 站视频下载(yt-dlp) | -| [editdoc](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/editdoc) | Go | Office 文档编辑与格式转换 | -| [a2a](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/a2a) | Go | Agent-to-Agent 协议 | -| [ocr](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/ocr) | Go | 离线文字识别(Tesseract) | -| [sanitizer](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/sanitizer) | Go | 输出清洗过滤器 | -| [calendar](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/calendar) | Go | 日历管理 | -| [rss](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/rss) | Go | RSS 订阅 | -| [ai_image](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/ai_image) | Go | AI 图片生成 | -| [music](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/music) | Go | 音乐播放 | -| [vikunja](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/vikunja) | Go | Vikunja 任务管理对接(项目/任务/标签 CRUD) | -| [vanblog](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/vanblog) | Go | VanBlog 博客发布与管理 | -| [deepsearch](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/deepsearch) | Go | 多轮深度检索(逐层聚焦 + 引用汇总) | -| [acp](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/acp) | Go | Agent Client Protocol 对接(外部编辑器/IDE 驱动本 agent) | -| [recoverydiag](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/recoverydiag) | Go | 故障诊断五件套(分诊/sqlite 校验/日志签名/diff/结论排序),failback 模式的核心插件 | -| [plugindev](https://github.com/JianFeeeee/HologramAgent-sdk/tree/main/example/plugindev) | Go | 插件脚手架:生成工程、构建、安装,供 agent 自助开发插件 | +| [weather](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/weather) | Go | 天气查询(wttr.in),演示 NoMemory/Cleaner/阶段钩子/通道/文本记忆 | +| [luademo](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/luademo) | Lua | Lua 全功能示例,覆盖 v0.8.0 Lua SDK 全部 API 面 | +| [qq](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/qq) | Go | NapCat OneBot 对接,24 个工具,输入/输出通道完整对接 | +| [memo](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/memo) | Go | 备忘管理,PreAction 注入 + 定时打断双提醒 | +| [files](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/files) | Go | 文件系统操作,4 种写入模式,沙箱隔离 | +| [browser](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/browser) | Go | 网络搜索、网页抓取(SSRF)、浏览器渲染(合并自 web/webfetch) | +| [bili](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/bili) | Go | B 站视频下载(yt-dlp) | +| [editdoc](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/editdoc) | Go | Office 文档编辑与格式转换 | +| [a2a](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/a2a) | Go | Agent-to-Agent 协议 | +| [ocr](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/ocr) | Go | 离线文字识别(Tesseract) | +| [sanitizer](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/sanitizer) | Go | 输出清洗过滤器 | +| [calendar](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/calendar) | Go | 日历管理 | +| [rss](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/rss) | Go | RSS 订阅 | +| [ai_image](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/ai_image) | Go | AI 图片生成 | +| [music](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/music) | Go | 音乐播放 | +| [vikunja](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/vikunja) | Go | Vikunja 任务管理对接(项目/任务/标签 CRUD) | +| [vanblog](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/vanblog) | Go | VanBlog 博客发布与管理 | +| [deepsearch](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/deepsearch) | Go | 多轮深度检索(逐层聚焦 + 引用汇总) | +| [acp](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/acp) | Go | Agent Client Protocol 对接(外部编辑器/IDE 驱动本 agent) | +| [recoverydiag](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/recoverydiag) | Go | 故障诊断五件套(分诊/sqlite 校验/日志签名/diff/结论排序),failback 模式的核心插件 | +| [plugindev](https://github.com/JianFeeeee/homeagentsdk/tree/main/example/plugindev) | Go | 插件脚手架:生成工程、构建、安装,供 agent 自助开发插件 | ### 内置插件 @@ -884,4 +884,4 @@ pmgr.ReloadPlugins() // 重载所有插件 *了解项目整体目标?查看 [OVERVIEW.md](OVERVIEW.md)。* *了解技术架构?查看 [ARCHITECTURE.md](ARCHITECTURE.md)。* -*SDK 仓库与开发工具?查看 [HologramAgent-sdk](https://github.com/JianFeeeee/HologramAgent-sdk)。* +*SDK 仓库与开发工具?查看 [homeagentsdk](https://github.com/JianFeeeee/homeagentsdk)。* diff --git a/deploy/scripts/deploy-sdk-site.sh b/deploy/scripts/deploy-sdk-site.sh index 44e1015b..05eb9c15 100755 --- a/deploy/scripts/deploy-sdk-site.sh +++ b/deploy/scripts/deploy-sdk-site.sh @@ -1,11 +1,11 @@ #!/usr/bin/env bash -# SDK 文档站一键构建 + 部署(sdk.hologramagent.jianfgit.xyz) +# SDK 文档站一键构建 + 部署(sdk.homeagent.jianfgit.xyz) # # 链路(全部实测确认,写在这里免得下次再摸一遍): # 本机 192.168.2.60 # └─ nginx stream 按 ssl_preread SNI 把 443 透传 → 192.168.2.106:3080 # └─ navi 容器内的 nginx(不是 portal-nginx,那个已 Exited 两周) -# └─ server_name sdk.hologramagent.jianfgit.xyz → root /app/data/sites/sdk +# └─ server_name sdk.homeagent.jianfgit.xyz → root /app/data/sites/sdk # └─ 宿主对应 /vol1/docker/navi-data/sites/sdk # # 两个容易踩的坑: @@ -121,7 +121,7 @@ do_deploy_introduce() { info "回滚点: $SITES/.intro-bak-$TS" local code - code=$(curl -s -o /dev/null -m 10 -w '%{http_code}' -k https://introduce.hologramagent.jianfgit.xyz/) + code=$(curl -s -o /dev/null -m 10 -w '%{http_code}' -k https://introduce.homeagent.jianfgit.xyz/) info "首页 http=$code(introduce 配了 try_files 回落,404 才是异常)" if "$DIFF" -q <(intro_local_md5) <(intro_remote_md5) >/dev/null 2>&1; then info "✓ introduce 线上与本机源逐字节一致" @@ -203,11 +203,11 @@ do_deploy() { say "4/4 验证" # 静态文件换完 nginx 直接吃新文件,不需要 reload。 local code - code=$(curl -s -o /dev/null -m 10 -w '%{http_code}' -k https://sdk.hologramagent.jianfgit.xyz/) + code=$(curl -s -o /dev/null -m 10 -w '%{http_code}' -k https://sdk.homeagent.jianfgit.xyz/) info "首页 http=$code" for p in guide/scene-memory/ guide/parallel-tool-declaration/ llms.txt llms-full.txt; do printf ' %-34s ' "$p" - curl -s -o /dev/null -m 10 -w 'http=%{http_code}\n' -k "https://sdk.hologramagent.jianfgit.xyz/$p" + curl -s -o /dev/null -m 10 -w 'http=%{http_code}\n' -k "https://sdk.homeagent.jianfgit.xyz/$p" done if "$DIFF" -q <(local_md5) <(remote_md5) >/dev/null 2>&1; then info "✓ 线上与本地产物逐字节一致" diff --git a/docs/git-branching.md b/docs/git-branching.md index f907313d..18b74dda 100644 --- a/docs/git-branching.md +++ b/docs/git-branching.md @@ -195,7 +195,7 @@ git switch main && git cherry-pick # 遵守 §三:只 pick,不 merge > - `feature/*` 分支(`input-semantics`、`multimodal-embedding`、`memory-media`、`plugin-proc-migration`) > 均已合入并删除。 -### SDK 仓(HologramAgent-sdk) +### SDK 仓(homeagentsdk) | 分支 | 状态 | 处理 | |---|---|---| @@ -417,7 +417,7 @@ VERSION=<版本> bash deploy/packaging/package-windows.sh client amd64 # 需 # 核心仓 python3 deploy/scripts/upload_assets.py # 默认上传 dist/release 下可识别的产物 # SDK 仓(hmapdev_* 没有扩展名,不会被自动识别 ⇒ 必须显式列文件名) -GITCODE_REPO=JianFeeeee/HologramAgent-sdk ASSET_DIR=/dist/release \ +GITCODE_REPO=JianFeeeee/homeagent-sdk ASSET_DIR=/dist/release \ python3 deploy/scripts/upload_assets.py hmapdev_linux_amd64 ... ``` diff --git a/docs/zh/ci-cd-runbook.md b/docs/zh/ci-cd-runbook.md index 0dadcd11..d019172a 100644 --- a/docs/zh/ci-cd-runbook.md +++ b/docs/zh/ci-cd-runbook.md @@ -9,7 +9,7 @@ | 仓 | 位置 | 流水线 | 触发 | | --- | --- | --- | --- | | 主仓 HologramAgent | `github.com/JianFeeeee/HologramAgent`(公开) | `ci.yml` + `release.yml` | push / PR、`release/**` push | -| SDK 仓 homeagentsdk | `github.com/JianFeeeee/HologramAgent-sdk`(公开) | `release.yml` | `release/**` push | +| SDK 仓 homeagentsdk | `github.com/JianFeeeee/homeagentsdk`(公开) | `release.yml` | `release/**` push | | gitcode 镜像 | 同名仓库 | 无(由主仓 Release 的 sync job 同步) | — | **分支保护**(main,公开仓免费):10 项必须检查(Go build/vet/test、Race、 @@ -163,13 +163,13 @@ tar 写 stdout 收到 EPIPE ⇒ pipefail 判失败。**包越大越易触发** CI 的 sync job 需要仓库 secret `GITCODE_TOKEN`;**未配置时该 job 显式跳过** (不阻断 GitHub 侧发布)。 -**2026-09-29 已配置**:两仓(`JianFeeeee/HologramAgent`、`JianFeeeee/HologramAgent-sdk`) +**2026-09-29 已配置**:两仓(`JianFeeeee/HologramAgent`、`JianFeeeee/homeagentsdk`) 均已设同名 secret,取值自 `~/.git-credentials` 里那条 `https://JianFeeeee:@gitcode.com`。 配置方式(经 stdin 传入,避免 token 出现在进程列表): ```bash printf '%s' "$TOKEN" | gh secret set GITCODE_TOKEN --repo JianFeeeee/HologramAgent -printf '%s' "$TOKEN" | gh secret set GITCODE_TOKEN --repo JianFeeeee/HologramAgent-sdk +printf '%s' "$TOKEN" | gh secret set GITCODE_TOKEN --repo JianFeeeee/homeagentsdk ``` 验收:sync job 只在**新版本**发版时运行(`prepare.outputs.exists == 'false'`), diff --git a/docs/zh/deploy-runbook.md b/docs/zh/deploy-runbook.md index 73f2fe45..b7e41030 100644 --- a/docs/zh/deploy-runbook.md +++ b/docs/zh/deploy-runbook.md @@ -398,7 +398,7 @@ bash deploy/scripts/deploy-sdk-site.sh --rollback .sdk-bak-<时间戳> # 回滚 本机 192.168.2.60 └─ nginx stream 按 ssl_preread SNI 把 443 透传 → 192.168.2.106:3080 └─ navi 容器内的 nginx(**不是** portal-nginx,那个已 Exited 两周) - └─ server_name sdk.hologramagent.jianfgit.xyz → root /app/data/sites/sdk + └─ server_name sdk.homeagent.jianfgit.xyz → root /app/data/sites/sdk └─ 宿主对应 /vol1/docker/navi-data/sites/sdk ``` @@ -447,7 +447,7 @@ bash deploy/scripts/deploy-sdk-site.sh 验证线上是否真的可访问(**别只看本地产物**): ```bash -curl -s -o /dev/null -m 10 -w '%{http_code}\n' -k https://sdk.hologramagent.jianfgit.xyz/guide/<新文档>/ +curl -s -o /dev/null -m 10 -w '%{http_code}\n' -k https://sdk.homeagent.jianfgit.xyz/guide/<新文档>/ ``` ### 5.5 回滚点 diff --git a/site/index.html b/site/index.html index c1c4c13a..0130a5c7 100644 --- a/site/index.html +++ b/site/index.html @@ -2823,37 +2823,37 @@ echo "你好,记住我喜欢喝咖啡" | ./build/waiter
a2av1.3.1

Agent 间通信。对外起 HTTP 服务暴露 /agent-card 与 /a2a(JSON-RPC)供他人发现与调用;对内提供工具去问别的 Agent。把监听地址设为空即只出站、不开端口。

- SDKexample/a2a↗ + SDKexample/a2a↗
acpv1.2.1

Agent Client Protocol 通信插件:充当 ACP 服务端接受其他 Agent 的任务请求,同时提供客户端工具向远程 ACP Agent(如 opencode)发起会话并读取回复

- SDKexample/acp↗ + SDKexample/acp↗
biliv1.2.0

B站视频下载。需系统装 yt-dlp。不指定格式时先返回可用清晰度列表,选定后再下载;输出目录有路径校验,拒绝写成系统目录。

- SDKexample/bili↗ + SDKexample/bili↗
browserv2.4.1

统一浏览器插件:搜索、HTTP抓取(quick)、无头渲染(normal)、交互式浏览器(interactive/CDP)

- SDKexample/browser↗ + SDKexample/browser↗
calendarv1.1.0

日历事件管理,支持提醒和重复事件

- SDKexample/calendar↗ + SDKexample/calendar↗
deepsearchv1.1.2

为 agent 提供真正的联网信息检索:本地 SearXNG 聚合多引擎(返回标题/URL/摘要/时间),支持新闻、时间范围、指定引擎;并提供网页正文抽取与「搜索+读前K篇」的深检索

- SDKexample/deepsearch↗ + SDKexample/deepsearch↗
editdocv2.0.0

全能办公插件:新建/读取/编辑/转换 docx·xlsx·pptx·md·csv·txt(基于 python-docx / openpyxl / python-pptx / soffice / pandoc)

- SDKexample/editdoc↗ + SDKexample/editdoc↗

公开仓中的 example 仍是 v1.0.0;v2.0.0 全能版源码尚未公开。

@@ -2869,72 +2869,72 @@ echo "你好,记住我喜欢喝咖啡" | ./build/waiter
memov1.1.0

待办与备忘录刻意分两类:待办每 5 分钟检查未完成数、有则注入提醒;备忘录纯记事不提醒。混成一类要么天天弹、要么被忘掉。

- SDKexample/memo↗ + SDKexample/memo↗
musicv0.1.0

搜歌与查歌词(网易云公开接口)。只读:不下载音频、不落文件。两段式用法 —— 先搜到歌曲 ID,再按 ID 取词。

- SDKexample/music↗ + SDKexample/music↗
ocrv1.0.0

图片文字识别。需系统装 tesseract(中文另需 chi_sim 语言包)。支持 URL 或 base64 输入,临时文件识别后自动清理。

- SDKexample/ocr↗ + SDKexample/ocr↗
plugindevv1.0.0

把 hmapdev 工具链封装成 Agent 可调用的工具:脚手架生成插件工程、构建打包 .hmap、管理 SDK 版本。配合 plugin_install 即可让 Agent 自己做完「新建插件 → 构建 → 安装」全流程。

- SDKexample/plugindev↗ + SDKexample/plugindev↗
qqv1.4.1

经 NapCat 桥接 QQ:20 个工具覆盖消息、群/好友、文件传输。带权限模型 —— 身份绑在「帧」上而非插件全局(中断抢占恢复后不会丢身份),多来源合并取权限交集,敏感工具按前缀一律拒绝非所有者。

- SDKexample/qq↗ + SDKexample/qq↗
recoverydiagv0.2.0

快速检查/崩溃取证工具集:diag_triage(退出码/信号/存活粗分)、diag_db(config.db 完整性 + LLM 源解析校验)、diag_log_scan(日志签名命中)、diag_delta(last-good 快照 vs 现状 diff)、diag_loc(正交综合定位)。全部返回结论而非原文,确定性、不消耗 LLM token,供 guard / failback 恢复决策使用。

- SDKexample/recoverydiag↗ + SDKexample/recoverydiag↗
rssv1.1.0

RSS/Atom 订阅监控。按间隔轮询,发现新条目即以中断注入告知 agent;订阅时记下历史条目,所以订一个源不会把旧文章全推一遍。

- SDKexample/rss↗ + SDKexample/rss↗
sanitizerv0.1.0

在三个阶段清洗文本:坏 UTF-8 / U+FFFD / ANSI 转义(会被模型复读)与 LLM 输出里的工具调用残留。不注册工具,只挂钩子。

- SDKexample/sanitizer↗ + SDKexample/sanitizer↗
vanblogv1.0.0

管理 VanBlog 开源博客系统:文章的增删改查、分类标签管理、草稿发布、备份导出等

- SDKexample/vanblog↗ + SDKexample/vanblog↗
vikunjav1.0.1

Vikunja 待办/任务管理:任务增删改查、项目与看板桶、标签、指派、评论、关联、附件、保存筛选器、团队与分享、通知、订阅、Webhook、时间跟踪、数据导入、实例管理;并附通用 API 直通工具兜底

- SDKexample/vikunja↗ + SDKexample/vikunja↗
weatherv1.0.0

查实时天气与预报(wttr.in,无需 API Key)。可设默认城市;结果标记为不进记忆计算 —— 天气是易变数据,反复写进记忆只会挤占预算。

- SDKexample/weather↗ + SDKexample/weather↗
ai_imagev1.3.0

文生图:按文字提示生成图片,下载到本地并返回文件路径(可直接被多模态链路读取)。

- SDKexample/ai_image↗ + SDKexample/ai_image↗
filesv1.0.0

沙箱文件操作:读写与编辑文件,全部操作限制在沙箱目录内(读取/写入/编辑/列目录)。

- SDKexample/files↗ + SDKexample/files↗
luademov0.1.0

Lua 插件全功能示例:工具(no_memory / cleaner)、阶段钩子、通道、数据类 API —— 想用 Lua 写插件,从这个例子抄起。

- SDKexample/luademo↗ + SDKexample/luademo↗
@@ -3029,7 +3029,7 @@ echo "你好,记住我喜欢喝咖啡" | ./build/waiter
@@ -3038,7 +3038,7 @@ echo "你好,记住我喜欢喝咖啡" | ./build/waiter
  • 最新发布:v1.3.x 线
  • main 在研:1.4.0
  • 内核许可:AGPL-3.0-only
  • -
  • 插件 SDK:MIT
  • +
  • 插件 SDK:MIT
  • From aafd971b7a751d8a0aa2d7ad2e7b8449da2e8971 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Wed, 21 Oct 2026 19:42:28 +0800 Subject: [PATCH 4/7] =?UTF-8?q?fix(docs):=20PLUGIN=5FDEV=20=E4=B8=8E=20SKI?= =?UTF-8?q?LL=20=E7=9A=84=20module=20=E8=B7=AF=E5=BE=84=20host=20=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=20github?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/docs/en/PLUGIN_DEV.md | 6 +++--- assets/docs/zh/PLUGIN_DEV.md | 6 +++--- assets/skills/commondev-discipline/SKILL.md | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/assets/docs/en/PLUGIN_DEV.md b/assets/docs/en/PLUGIN_DEV.md index d5436a74..6b7973a8 100644 --- a/assets/docs/en/PLUGIN_DEV.md +++ b/assets/docs/en/PLUGIN_DEV.md @@ -738,8 +738,8 @@ internal/plugins/yourplugin/ package yourplugin import ( - "gitcode.com/JianFeeeee/HologramAgent/internal/plugin" - sdk "gitcode.com/JianFeeeee/HologramAgent/internal/sdk" + "github.com/JianFeeeee/HologramAgent/internal/plugin" + sdk "github.com/JianFeeeee/HologramAgent/internal/sdk" ) func init() { @@ -777,7 +777,7 @@ Add blank import in `internal/plugins/all.go`: package plugins import ( - _ "gitcode.com/JianFeeeee/HologramAgent/internal/plugins/yourplugin" + _ "github.com/JianFeeeee/HologramAgent/internal/plugins/yourplugin" // ... other plugins ) ``` diff --git a/assets/docs/zh/PLUGIN_DEV.md b/assets/docs/zh/PLUGIN_DEV.md index e3897747..1a3f1579 100644 --- a/assets/docs/zh/PLUGIN_DEV.md +++ b/assets/docs/zh/PLUGIN_DEV.md @@ -726,8 +726,8 @@ internal/plugins/yourplugin/ package yourplugin import ( - "gitcode.com/JianFeeeee/HologramAgent/internal/plugin" - sdk "gitcode.com/JianFeeeee/HologramAgent/internal/sdk" + "github.com/JianFeeeee/HologramAgent/internal/plugin" + sdk "github.com/JianFeeeee/HologramAgent/internal/sdk" ) func init() { @@ -765,7 +765,7 @@ func (p *Plugin) Stop() error { package plugins import ( - _ "gitcode.com/JianFeeeee/HologramAgent/internal/plugins/yourplugin" + _ "github.com/JianFeeeee/HologramAgent/internal/plugins/yourplugin" // ... 其他插件 ) ``` diff --git a/assets/skills/commondev-discipline/SKILL.md b/assets/skills/commondev-discipline/SKILL.md index 8d7cd187..952bff6f 100644 --- a/assets/skills/commondev-discipline/SKILL.md +++ b/assets/skills/commondev-discipline/SKILL.md @@ -552,7 +552,7 @@ hmapdev sdk current # 当前活跃 SDK 版本(★ 动手前必看) hmapdev sdk list # 本机已装的所有 SDK 版本 ``` -- 核心仓 `/home/program/TrueAgent`(Go module `gitcode.com/JianFeeeee/HologramAgent`) +- 核心仓 `/home/program/TrueAgent`(Go module `github.com/JianFeeeee/HologramAgent`) - **SDK 仓** `third_party/homeagent-sdk`(独立 git 仓、独立版本号) ### 33. 开工流程 From dbb787a65860314f3053dd353f5489561bb89b91 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Wed, 21 Oct 2026 19:55:59 +0800 Subject: [PATCH 5/7] =?UTF-8?q?refactor(ci,docs):=20gitcode=20=E9=95=9C?= =?UTF-8?q?=E5=83=8F=E4=BB=93=E5=90=8D=E6=94=B6=E4=B8=BA=E5=8D=95=E4=B8=80?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E7=82=B9=EF=BC=8C=E5=8F=96=E5=80=BC=20HomeAg?= =?UTF-8?q?ent=EF=BC=88=E5=AE=9E=E6=B5=8B=20200=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit gitcode 镜像目标仓名此前在 3 个文件里各写死多份字面量,改名时要遍改且极 易漏(漏一处 = 一个静默死链,而且失败面在 release 里只有一格)。本批只做 「收成单点」,不改任何取值、不碰代码。 三个定义点(每个文件恰好 1 处,消费点全部走变量): 1. .github/workflows/ci.yml → job `sync-gitcode-main` 的 env.GC_REPO:232 消费点 2 处命令行:git ls-remote 探测、git push main。 2. .github/workflows/release.yml → job `sync-gitcode` 的 env.GC_REPO:375 消费点 4 处命令行:git ls-remote 探测、push tag、POST /releases、 upload_assets.py 的 GITCODE_REPO 传入。 (两个 workflow 是独立文件,不能共享 env,故各自一处定义。) 3. deploy/scripts/upload_assets.py → os.environ.get("GITCODE_REPO", ...) 默认值。 手工跑脚本时的兜底,与两个 workflow 同值。 为什么取值 JianFeeeee/HomeAgent 而不是 HologramAgent: GitHub 主仓已改名 HologramAgent,但 **gitcode 侧镜像仓没有跟着改名**。 curl 直连实测(2026-10-21): https://gitcode.com/JianFeeeee/HomeAgent → 200 ← 当前取值 https://gitcode.com/JianFeeeee/HologramAgent → 404 指向 HologramAgent 会让每次发版/推 main 都在镜像同步这步红掉,且国内镜像 停止更新。 两个 job 的失败面不同(容易搞混,此处写明): - release.yml 的 sync-gitcode:needs [prepare, publish]。探测 exit 1 ⇒ **只红「镜像同步」这一格**;GitHub 侧 release 产物已经发出去了。 - ci.yml 的 sync-gitcode-main:needs [go, race, cross, gui, csrc, docs] 全绿 后才跑。探测 exit 1 ⇒ **main 的整条 CI 红**(不是一格)。 所以仓名写错的真实后果是「必红一格 + 国内镜像不更新」,不是「发不出包」。 何时切回 HologramAgent:等 gitcode 上把镜像仓真正改名/新建成功、 https://gitcode.com/JianFeeeee/HologramAgent 返回 200 之后, **只改上面这三行**即可,两个 workflow 的消费点与 runbook 均无需再动。 docs/zh/ci-cd-runbook.md 同步三节:单点化表格(定义处/消费点)、当前取值与 200/404 实测依据、两个 job 的失败面差异;并把 §3.4 的 curl 验活地址与 upload_assets 手工调用示例同步到 HomeAgent(原写法是已 404 的死链)。 判据(含变异,全部实跑): - 两个 workflow 可被 yaml.safe_load 解析;每个 jobs[..].env.GC_REPO 恰好 1 处 - 每个 step 的 run 块抽出来喂 bash -n,全部无语法错 - 可执行形态里的 gitcode 目标仓名不含 HologramAgent(注释行豁免) - 变异:把任一 GC_REPO 定义改回 HologramAgent、或把某消费点还原成字面量, 判据均报红 - 零代码改动:git status 无 .go/.lua/go.mod/go.sum;go build ./... 通过 --- .github/workflows/ci.yml | 28 ++++++++++++++++++++++-- .github/workflows/release.yml | 27 ++++++++++++++++++++--- deploy/scripts/upload_assets.py | 10 +++++++-- docs/zh/ci-cd-runbook.md | 38 ++++++++++++++++++++++++++++++--- 4 files changed, 93 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 554bb80b..792598fa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -226,6 +226,29 @@ jobs: needs: [go, race, cross, gui, csrc, docs] if: github.ref == 'refs/heads/main' && github.event_name == 'push' timeout-minutes: 10 + env: + # ══════════════════════════════════════════════════════════════════ + # ★★ gitcode 镜像目标仓名 —— **本 job 的唯一定义处**。 + # 改 gitcode 仓名时只改这一行;下面推 main 的消费点走 ${GC_REPO}。 + # 与 release.yml 的 sync-gitcode 保持同值(两处各自独立定义, + # 因为它们是不同的 workflow —— 改的时候两个文件都要改,但每个 + # 文件内部只有一个定义处)。 + # + # 取值依据(实测 2026-10-21,curl 直连,非推测): + # https://gitcode.com/JianFeeeee/HomeAgent → 200 ← 当前用这个 + # https://gitcode.com/JianFeeeee/HologramAgent → 404 + # + # 背景:GitHub 主仓已改名 HologramAgent,gitcode 侧镜像仓未改名。 + # + # ⚠ 失败面(与 release.yml 不同,别搞混): + # 本 job 的 needs 是 [go, race, cross, gui, csrc, docs]。前置检查 + # exit 1 ⇒ 本 job 红 ⇒ **main 的整条 CI 红**(不是只红一格)。 + # 而 release.yml 的 sync-gitcode 只红在镜像同步这一格,GitHub 侧 + # release 产物已经发出去了。 + # + # 何时改回 HologramAgent:gitcode 上仓真正存在且返回 200 后,只改这一行。 + # ══════════════════════════════════════════════════════════════════ + GC_REPO: JianFeeeee/HomeAgent steps: - id: tok name: 检查 gitcode 凭据 @@ -253,7 +276,7 @@ jobs: run: | set -euo pipefail GC_URL="https://JianFeeeee:${GC_TOKEN}@gitcode.com" - GC_REPO="JianFeeeee/HologramAgent" + # GC_REPO 来自 job 级 env(唯一定义处),此处不重复字面量。 # 用 ls-remote 探测:与后面那次 push 走同一个 URL、同一套凭据, # 比另调一次 API 更贴近真实失败面。 if out=$(GIT_TERMINAL_PROMPT=0 git ls-remote --heads \ @@ -295,6 +318,7 @@ jobs: run: | set -euo pipefail GC_URL="https://JianFeeeee:${GC_TOKEN}@gitcode.com" - git push "${GC_URL}/JianFeeeee/HologramAgent.git" \ + # GC_REPO 来自 job 级 env(唯一定义处),此处不重复字面量。 + git push "${GC_URL}/${GC_REPO}.git" \ "refs/heads/main:refs/heads/main" echo " gitcode/main 已快进到 ${GITHUB_SHA}" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9652ccbb..b083db55 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -352,6 +352,27 @@ jobs: if: needs.prepare.outputs.exists == 'false' runs-on: ubuntu-latest timeout-minutes: 60 + env: + # ══════════════════════════════════════════════════════════════════ + # ★★ gitcode 镜像目标仓名 —— **本 job 的唯一定义处**。 + # 改 gitcode 仓名时只改这一行;下面所有消费点都走 ${GC_REPO}。 + # + # 取值依据(实测 2026-10-21,curl 直连,非推测): + # https://gitcode.com/JianFeeeee/HomeAgent → 200 ← 当前用这个 + # https://gitcode.com/JianFeeeee/HologramAgent → 404 + # https://gitcode.com/JianFeeeee/homeagent-sdk → 200 + # https://gitcode.com/JianFeeeee/hologramagentsdk → 200 + # https://gitcode.com/JianFeeeee/homeagentsdk → 404 + # + # 背景:GitHub 主仓已由 HomeAgent 改名为 HologramAgent,但 **gitcode 侧 + # 的镜像仓没有跟着改名**,gitcode 上 HologramAgent 仍是 404。因此这里 + # 必须指向仍然存在的 HomeAgent,否则每次发版都会红在镜像同步这一格。 + # + # 何时改回 HologramAgent:在 gitcode 上把镜像仓真正改名/新建成功、 + # 且 https://gitcode.com/JianFeeeee/HologramAgent 返回 200 之后, + # **只改这一行**即可,无需再动其他文件。 + # ══════════════════════════════════════════════════════════════════ + GC_REPO: JianFeeeee/HomeAgent steps: - uses: actions/checkout@v7 - id: tok @@ -379,7 +400,7 @@ jobs: run: | set -euo pipefail GC_URL="https://JianFeeeee:${GC_TOKEN}@gitcode.com" - GC_REPO="JianFeeeee/HologramAgent" + # GC_REPO 来自 job 级 env(唯一定义处),此处不重复字面量。 if out=$(GIT_TERMINAL_PROMPT=0 git ls-remote --heads \ "${GC_URL}/${GC_REPO}.git" 2>&1); then echo " 目标仓可访问:gitcode.com/${GC_REPO}" @@ -419,7 +440,7 @@ jobs: TAG: ${{ needs.prepare.outputs.tag }} run: | set -euo pipefail - GC_REPO="JianFeeeee/HologramAgent" + # GC_REPO 来自 job 级 env(唯一定义处),此处不重复字面量。 GC_URL="https://JianFeeeee:${GC_TOKEN}@gitcode.com" # 1) 推 tag(附件上传前 release 条目必须先存在) git config user.name "github-actions[bot]" @@ -439,5 +460,5 @@ jobs: # 不传文件名时它扫描 ASSET_DIR 并按后缀识别发布产物 —— 这里正合适 # (.deb/.tar.gz/SHA256SUMS 都在白名单里)。 # 不要传 "./x" 或 "dist/x":那会拼成 dist/dist/x。 - ASSET_DIR=. GITCODE_REPO=JianFeeeee/HologramAgent \ + ASSET_DIR=. GITCODE_REPO="${GC_REPO}" \ python3 ../deploy/scripts/upload_assets.py "$TAG" "$GC_TOKEN" diff --git a/deploy/scripts/upload_assets.py b/deploy/scripts/upload_assets.py index c5896830..163e1f13 100755 --- a/deploy/scripts/upload_assets.py +++ b/deploy/scripts/upload_assets.py @@ -5,7 +5,13 @@ 不传 file 时上传 dist/release/ 下全部发布产物。 环境变量: - GITCODE_REPO 目标仓库,默认 JianFeeeee/HologramAgent(SDK 仓传 JianFeeeee/homeagent-sdk) + GITCODE_REPO 目标仓库,默认 JianFeeeee/HomeAgent(SDK 仓传 JianFeeeee/homeagent-sdk) + 这是 gitcode 镜像仓名的**唯一定义处**(workflow 里通过 job 级 + env.GC_REPO 传入同一个值)。改 gitcode 仓名时改这里 + 两个 + workflow 的 GC_REPO,共三处(每个文件各一个定义点)。 + 取值依据(实测 2026-10-21):gitcode 上 JianFeeeee/HomeAgent + 返回 200,JianFeeeee/HologramAgent 返回 404 —— GitHub 主仓 + 已改名 HologramAgent,但 gitcode 侧镜像仓未跟着改。 ASSET_DIR 资产目录,默认 /dist/release 为何两步:gitcode 的 release 附件不走 API 直传,而是先向 @@ -20,7 +26,7 @@ import urllib.error import urllib.parse import urllib.request -REPO = os.environ.get("GITCODE_REPO", "JianFeeeee/HologramAgent") +REPO = os.environ.get("GITCODE_REPO", "JianFeeeee/HomeAgent") API = "https://gitcode.com/api/v5/repos" # 发布产物后缀。注意 Windows 安装器是 HomeAgent_v*_win64.exe, diff --git a/docs/zh/ci-cd-runbook.md b/docs/zh/ci-cd-runbook.md index d019172a..c7f629c0 100644 --- a/docs/zh/ci-cd-runbook.md +++ b/docs/zh/ci-cd-runbook.md @@ -10,7 +10,7 @@ | --- | --- | --- | --- | | 主仓 HologramAgent | `github.com/JianFeeeee/HologramAgent`(公开) | `ci.yml` + `release.yml` | push / PR、`release/**` push | | SDK 仓 homeagentsdk | `github.com/JianFeeeee/homeagentsdk`(公开) | `release.yml` | `release/**` push | -| gitcode 镜像 | 同名仓库 | 无(由主仓 Release 的 sync job 同步) | — | +| gitcode 镜像 | `gitcode.com/JianFeeeee/HomeAgent`(**不与主仓同名**) | 无(由主仓 Release 的 sync job 同步) | — | **分支保护**(main,公开仓免费):10 项必须检查(Go build/vet/test、Race、 cross×5、GUI、C gates、Docs)+ `strict`(必须与 main 同步)+ 禁 force push。 @@ -19,6 +19,34 @@ cross×5、GUI、C gates、Docs)+ `strict`(必须与 main 同步)+ 禁 for **gitcode 的角色**:只读镜像(git push 同步)。Release 附件由 sync job 自动 补传,或手工跑 `deploy/scripts/upload_assets.py`(见 §3.4)。 +**gitcode 仓名的单点化**(2026-10-21 加):gitcode 镜像目标仓名曾在多处写死, +改名时要遍改且易漏(漏一处就是一个小死链)。现在收继到**每文件一个定义处**, +消费点全部走变量: + +| 定义处 | 形式 | 消费点 | +| --- | --- | --- | +| `.github/workflows/release.yml` | `env.GC_REPO`(job 级) | `${GC_REPO}` ×4 | +| `.github/workflows/ci.yml` | `env.GC_REPO`(job 级) | `${GC_REPO}` ×2 | +| `deploy/scripts/upload_assets.py` | `GITCODE_REPO` 环境变量默认值 | 脚本自身 | + +两个 workflow 是独立 workflow,因此各自一个定义(不能跨文件共享 env)。 +**gitcode 侧真正把仓改名成 HologramAgent 之后,只改这三个定义点即可**。 + +**当前取值 `JianFeeeee/HomeAgent`**,而不是 `HologramAgent`。实测(2026-10-21, +curl 直连):`gitcode.com/JianFeeeee/HomeAgent` → **200**, +`gitcode.com/JianFeeeee/HologramAgent` → **404**。GitHub 主仓已改名, +gitcode 侧镜像仓没跟着改。指向 HologramAgent 会让每次发版都红在镜像同步。 + +**失败面(两个 job 不一样,别搞混)**: + +- `release.yml` 的 `sync-gitcode`:`needs: [prepare, publish]`。前置检查 `exit 1` + ⇒ **只红镜像同步这一格**;GitHub 侧 release 产物已经发出去了。 +- `ci.yml` 的 `sync-gitcode-main`:`needs` 全绿(go/race/cross/gui/csrc/docs)后才跑。 + 前置检查 `exit 1` ⇒ 该 job 红 ⇒ **main 的整条 CI 红**。 + +所以仓名写错的实际后果是「每次 release/main CI 必红一格 + 国内镜像不更新」, +**不是**「发不出包」。 + ## 1. CI(ci.yml)—— 每次推送到 main / release/** / PR 都跑 六个 job,**全部命令均本地实测过**(原则:不写"应该有用"的未验证步骤): @@ -181,8 +209,11 @@ gh secret list --repo JianFeeeee/HologramAgent | grep GITCODE_TOKEN # ② token 有效 curl -s "https://gitcode.com/api/v5/user?access_token=$TOKEN" # ③ job 用的 private-token 头可读 release(两仓都测) +# ⚠ gitcode 侧主仓镜像名是 HomeAgent(不是 HologramAgent)—— +# 实测 2026-10-21:/repos/JianFeeeee/HomeAgent→400(带 token 可读)、 +# /repos/JianFeeeee/HologramAgent→404。写成 HologramAgent 是死链。 curl -s -H "private-token: $TOKEN" \ - "https://gitcode.com/api/v5/repos/JianFeeeee/HologramAgent/releases/tags/v1.3.13" + "https://gitcode.com/api/v5/repos/JianFeeeee/HomeAgent/releases/tags/v1.3.13" ``` ★ **token 是宽范围的个人令牌**(可读 92 仓/48 私有、有写权限),而 CI 只需要这两个仓。 @@ -193,7 +224,8 @@ curl -s -H "private-token: $TOKEN" \ ```bash # token 放 ~/.git-credentials(https://JianFeeeee:@gitcode.com) -ASSET_DIR=<产物目录> GITCODE_REPO=JianFeeeee/HologramAgent \ +# GITCODE_REPO 是 gitcode 镜像仓名(当前 HomeAgent),与 GitHub 侧仓名无关。 +ASSET_DIR=<产物目录> GITCODE_REPO=JianFeeeee/HomeAgent \ python3 deploy/scripts/upload_assets.py # release 条目必须先存在(脚本向 releases//upload_url 取 OBS 签名 URL) ``` From ffe9bc2cff96d0ab4db8991f36a9498da579ca7e Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Wed, 21 Oct 2026 20:15:41 +0800 Subject: [PATCH 6/7] =?UTF-8?q?refactor(ci,docs):=20gitcode=20=E9=95=9C?= =?UTF-8?q?=E5=83=8F=E4=BB=93=E6=94=B9=E5=90=8D=20HomeAgent=E2=86=92Hologr?= =?UTF-8?q?amAgent=EF=BC=8C=E5=AE=9A=E4=B9=89=E7=82=B9=E5=8F=96=E5=80=BC?= =?UTF-8?q?=E5=AF=B9=E9=BD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit gitcode 侧镜像仓已完成改名,旧名 HomeAgent 变成 301 跳转,真仓是 HologramAgent。dbb787a 里三处 GC_REPO 定义点仍取旧名(命中 301),本批只 改取值与说明,**不改变 dbb787a 已建立的「每个文件恰一个定义点」结构**, 不引入任何新字面量。 实测(2026-10-21 20:1x,直连不带代理,非推测): $ curl -s -o /dev/null -w '%{http_code}' https://gitcode.com/JianFeeeee/ HologramAgent → 200 ← 当前取值 HomeAgent → 301 ← 旧名,跳转到 HologramAgent homeagent-sdk → 200(SDK 仓,另一对象) hologramagentsdk → 200(SDK 仓,另一对象) homeagentsdk → 404 HologramAgent-sdk → 404 「301 不是另一个仓,就是同一仓改名」的判定依据:两个地址 `git ls-remote` 得到的 refs 列表 md5 相同(同一组分支与 SHA),且 curl 页面 title 一致。 三个定义点(各文件恰好 1 处,消费点全部走变量,本次只改这三行的取值): 1. .github/workflows/ci.yml job sync-gitcode-main 的 env.GC_REPO 2. .github/workflows/release.yml job sync-gitcode 的 env.GC_REPO 3. deploy/scripts/upload_assets.py 的 os.environ.get("GITCODE_REPO", ...) 默认值 消费点未动:ci.yml 2 处、release.yml 4 处命令行,仍全部是 ${GC_REPO}。 注释同步改准(原来把 301 的仓写成「200 ← 当前用这个」,是错的): - 两个 workflow 的取值依据清单换成上面六个仓的现状,注明实测时间与 curl 命令 - 明确 HomeAgent = 301 跳转、HologramAgent = 当前取值 - 「以后再改名只改这三行」的说明保留 docs/zh/ci-cd-runbook.md 同步: - 总览表 gitcode 镜像改为 HologramAgent(与主仓同名) - 「当前取值」段与六仓实测表、301 判定依据 - API 侧口径也改准:/api/v5/repos/JianFeeeee/{HomeAgent,HologramAgent} 不带 token 均 400(需鉴权,非仓不存在);/releases/tags/v1.3.13 两名字均 200 且响应体一致。旧文档写「HologramAgent→404 是死链」已不成立。 - §3.3 curl 验活地址、§3.4 手工上传示例的 GITCODE_REPO 同步为新值 判据(正向 14 项 + 变异 11 条,全部实跑): - 两个 workflow yaml.safe_load 解析通过;每个 env.GC_REPO 恰好 1 处 - 三处定义点取值完全一致(P4);消费点计数 ci=2/release=4(P6) - P8 改为「不带 -L 的 200」:这正是本次误判的根因——之前用 curl -L 测, 301 跟随后也是 200,把「旧名跳转」误读成「旧名是真仓、新名 404」 - 变异 M11「三处一致改回旧名 HomeAgent」只被 P8 抓住(P4 仍绿), 证明该判据能单独区分「一致但指向 301 旧名」 - 所有 step run 块过 bash -n(30 个 run 块,0 错) - gitcode 作 import host 残留 0;工作区无 .go/.lua/go.mod/go.sum 变更 零代码改动:packaging_test.go 里「禁止历史模块路径」的反向断言未动, third_party 未动,systemd 相关行未动。 --- .github/workflows/ci.yml | 23 +++++++++++++----- .github/workflows/release.yml | 27 ++++++++++++---------- deploy/scripts/upload_assets.py | 16 +++++++++---- docs/zh/ci-cd-runbook.md | 41 +++++++++++++++++++++++---------- 4 files changed, 72 insertions(+), 35 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 792598fa..eac1218a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -234,11 +234,21 @@ jobs: # 因为它们是不同的 workflow —— 改的时候两个文件都要改,但每个 # 文件内部只有一个定义处)。 # - # 取值依据(实测 2026-10-21,curl 直连,非推测): - # https://gitcode.com/JianFeeeee/HomeAgent → 200 ← 当前用这个 - # https://gitcode.com/JianFeeeee/HologramAgent → 404 + # 取值依据(实测 2026-10-21 20:1x,直连不带代理,非推测): + # $ curl -s -o /dev/null -w '%{http_code}' \ + # https://gitcode.com/JianFeeeee/ # - # 背景:GitHub 主仓已改名 HologramAgent,gitcode 侧镜像仓未改名。 + # https://gitcode.com/JianFeeeee/HologramAgent → 200 ← 当前用这个 + # https://gitcode.com/JianFeeeee/HomeAgent → 301 ← 旧名,跳转到上面 + # https://gitcode.com/JianFeeeee/homeagent-sdk → 200(SDK 仓,另一对象) + # https://gitcode.com/JianFeeeee/hologramagentsdk → 200(SDK 仓,另一对象) + # https://gitcode.com/JianFeeeee/homeagentsdk → 404 + # https://gitcode.com/JianFeeeee/HologramAgent-sdk → 404 + # + # 背景:gitcode 侧镜像仓已由 HomeAgent 改名为 HologramAgent(与 GitHub + # 主仓同名)。旧地址 HomeAgent 仍 301 跳转,跟随后也能到达,但走重定向 + # ⇒ 别再用它(git 侧会多一跳,且改名前的旧名随时可能被彻底释放)。 + # 判定两仓同一对象:两地址 git ls-remote 的 refs 列表 md5 相同。 # # ⚠ 失败面(与 release.yml 不同,别搞混): # 本 job 的 needs 是 [go, race, cross, gui, csrc, docs]。前置检查 @@ -246,9 +256,10 @@ jobs: # 而 release.yml 的 sync-gitcode 只红在镜像同步这一格,GitHub 侧 # release 产物已经发出去了。 # - # 何时改回 HologramAgent:gitcode 上仓真正存在且返回 200 后,只改这一行。 + # 以后再改名:gitcode 侧仓名一变,只改这一行(+ release.yml 与 + # upload_assets.py 各一行,共三个定义点)。 # ══════════════════════════════════════════════════════════════════ - GC_REPO: JianFeeeee/HomeAgent + GC_REPO: JianFeeeee/HologramAgent steps: - id: tok name: 检查 gitcode 凭据 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b083db55..cc7999e3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -357,22 +357,25 @@ jobs: # ★★ gitcode 镜像目标仓名 —— **本 job 的唯一定义处**。 # 改 gitcode 仓名时只改这一行;下面所有消费点都走 ${GC_REPO}。 # - # 取值依据(实测 2026-10-21,curl 直连,非推测): - # https://gitcode.com/JianFeeeee/HomeAgent → 200 ← 当前用这个 - # https://gitcode.com/JianFeeeee/HologramAgent → 404 - # https://gitcode.com/JianFeeeee/homeagent-sdk → 200 - # https://gitcode.com/JianFeeeee/hologramagentsdk → 200 + # 取值依据(实测 2026-10-21 20:1x,直连不带代理,非推测): + # $ curl -s -o /dev/null -w '%{http_code}' \ + # https://gitcode.com/JianFeeeee/ + # + # https://gitcode.com/JianFeeeee/HologramAgent → 200 ← 当前用这个 + # https://gitcode.com/JianFeeeee/HomeAgent → 301 ← 旧名,跳转到上面 + # https://gitcode.com/JianFeeeee/homeagent-sdk → 200(SDK 仓,另一对象) + # https://gitcode.com/JianFeeeee/hologramagentsdk → 200(SDK 仓,另一对象) # https://gitcode.com/JianFeeeee/homeagentsdk → 404 + # https://gitcode.com/JianFeeeee/HologramAgent-sdk → 404 # - # 背景:GitHub 主仓已由 HomeAgent 改名为 HologramAgent,但 **gitcode 侧 - # 的镜像仓没有跟着改名**,gitcode 上 HologramAgent 仍是 404。因此这里 - # 必须指向仍然存在的 HomeAgent,否则每次发版都会红在镜像同步这一格。 + # 背景:gitcode 侧镜像仓已由 HomeAgent 改名为 HologramAgent(与 GitHub + # 主仓同名)。旧地址 HomeAgent 仍 301 跳转,跟随后也能到达,但走重定向 + # ⇒ 别再用它。下面几处消费点(ls-remote 探测、push tag、POST /releases、 + # upload_assets 的 GITCODE_REPO)全部走 ${GC_REPO},因此只改本行即可。 # - # 何时改回 HologramAgent:在 gitcode 上把镜像仓真正改名/新建成功、 - # 且 https://gitcode.com/JianFeeeee/HologramAgent 返回 200 之后, - # **只改这一行**即可,无需再动其他文件。 + # 以后再改名:只改这一行(+ ci.yml 与 upload_assets.py 各一行,共三个定义点)。 # ══════════════════════════════════════════════════════════════════ - GC_REPO: JianFeeeee/HomeAgent + GC_REPO: JianFeeeee/HologramAgent steps: - uses: actions/checkout@v7 - id: tok diff --git a/deploy/scripts/upload_assets.py b/deploy/scripts/upload_assets.py index 163e1f13..6a11b13a 100755 --- a/deploy/scripts/upload_assets.py +++ b/deploy/scripts/upload_assets.py @@ -5,13 +5,19 @@ 不传 file 时上传 dist/release/ 下全部发布产物。 环境变量: - GITCODE_REPO 目标仓库,默认 JianFeeeee/HomeAgent(SDK 仓传 JianFeeeee/homeagent-sdk) + GITCODE_REPO 目标仓库,默认 JianFeeeee/HologramAgent(SDK 仓传 JianFeeeee/homeagent-sdk) 这是 gitcode 镜像仓名的**唯一定义处**(workflow 里通过 job 级 env.GC_REPO 传入同一个值)。改 gitcode 仓名时改这里 + 两个 workflow 的 GC_REPO,共三处(每个文件各一个定义点)。 - 取值依据(实测 2026-10-21):gitcode 上 JianFeeeee/HomeAgent - 返回 200,JianFeeeee/HologramAgent 返回 404 —— GitHub 主仓 - 已改名 HologramAgent,但 gitcode 侧镜像仓未跟着改。 + 取值依据(实测 2026-10-21 20:1x,直连不带代理): + JianFeeeee/HologramAgent → 200 ← 当前取值 + JianFeeeee/HomeAgent → 301 ← 旧名,跳转到上面 + JianFeeeee/homeagent-sdk → 200(SDK 仓,另一对象) + JianFeeeee/hologramagentsdk → 200(SDK 仓,另一对象) + JianFeeeee/homeagentsdk → 404 + JianFeeeee/HologramAgent-sdk → 404 + gitcode 侧镜像仓已由 HomeAgent 改名为 HologramAgent(与 GitHub + 主仓同名),旧地址仍 301,别再写旧名。 ASSET_DIR 资产目录,默认 /dist/release 为何两步:gitcode 的 release 附件不走 API 直传,而是先向 @@ -26,7 +32,7 @@ import urllib.error import urllib.parse import urllib.request -REPO = os.environ.get("GITCODE_REPO", "JianFeeeee/HomeAgent") +REPO = os.environ.get("GITCODE_REPO", "JianFeeeee/HologramAgent") API = "https://gitcode.com/api/v5/repos" # 发布产物后缀。注意 Windows 安装器是 HomeAgent_v*_win64.exe, diff --git a/docs/zh/ci-cd-runbook.md b/docs/zh/ci-cd-runbook.md index c7f629c0..11fe0c69 100644 --- a/docs/zh/ci-cd-runbook.md +++ b/docs/zh/ci-cd-runbook.md @@ -10,7 +10,7 @@ | --- | --- | --- | --- | | 主仓 HologramAgent | `github.com/JianFeeeee/HologramAgent`(公开) | `ci.yml` + `release.yml` | push / PR、`release/**` push | | SDK 仓 homeagentsdk | `github.com/JianFeeeee/homeagentsdk`(公开) | `release.yml` | `release/**` push | -| gitcode 镜像 | `gitcode.com/JianFeeeee/HomeAgent`(**不与主仓同名**) | 无(由主仓 Release 的 sync job 同步) | — | +| gitcode 镜像 | `gitcode.com/JianFeeeee/HologramAgent`(与主仓同名) | 无(由主仓 Release 的 sync job 同步) | — | **分支保护**(main,公开仓免费):10 项必须检查(Go build/vet/test、Race、 cross×5、GUI、C gates、Docs)+ `strict`(必须与 main 同步)+ 禁 force push。 @@ -30,12 +30,28 @@ cross×5、GUI、C gates、Docs)+ `strict`(必须与 main 同步)+ 禁 for | `deploy/scripts/upload_assets.py` | `GITCODE_REPO` 环境变量默认值 | 脚本自身 | 两个 workflow 是独立 workflow,因此各自一个定义(不能跨文件共享 env)。 -**gitcode 侧真正把仓改名成 HologramAgent 之后,只改这三个定义点即可**。 +**gitcode 侧以后再改仓名,只改这三个定义点即可**,消费点无需动。 -**当前取值 `JianFeeeee/HomeAgent`**,而不是 `HologramAgent`。实测(2026-10-21, -curl 直连):`gitcode.com/JianFeeeee/HomeAgent` → **200**, -`gitcode.com/JianFeeeee/HologramAgent` → **404**。GitHub 主仓已改名, -gitcode 侧镜像仓没跟着改。指向 HologramAgent 会让每次发版都红在镜像同步。 +**当前取值 `JianFeeeee/HologramAgent`**(与 GitHub 主仓同名)。gitcode 侧镜像仓 +**已由 `HomeAgent` 改名为 `HologramAgent`**;旧地址仍 301 跳转,跟随后也能到, +但走重定向,不应再用。实测(2026-10-21 20:1x,直连不带代理, +`curl -s -o /dev/null -w '%{http_code}' https://gitcode.com/JianFeeeee/`): + +| 仓名 | HTTP | 说明 | +| --- | --- | --- | +| `HologramAgent` | **200** | 当前取值(主仓镜像) | +| `HomeAgent` | 301 | 旧名,跳转到 `HologramAgent` | +| `homeagent-sdk` | 200 | SDK 仓,另一对象 | +| `hologramagentsdk` | 200 | SDK 仓,另一对象 | +| `homeagentsdk` | 404 | 不存在 | +| `HologramAgent-sdk` | 404 | 不存在 | + +判定「301 不是另一个仓、就是同一仓改名」的依据:两个地址 `git ls-remote` +得到的 refs 列表 md5 相同(同一组分支与 SHA)。 + +API 侧同样兼容两个名字:`/api/v5/repos/JianFeeeee/{HomeAgent,HologramAgent}` +不带 token 都返回 **400**(需要鉴权,不是仓不存在), +`/releases/tags/v1.3.13` 都返回 **200** 且响应体一致。 **失败面(两个 job 不一样,别搞混)**: @@ -209,11 +225,12 @@ gh secret list --repo JianFeeeee/HologramAgent | grep GITCODE_TOKEN # ② token 有效 curl -s "https://gitcode.com/api/v5/user?access_token=$TOKEN" # ③ job 用的 private-token 头可读 release(两仓都测) -# ⚠ gitcode 侧主仓镜像名是 HomeAgent(不是 HologramAgent)—— -# 实测 2026-10-21:/repos/JianFeeeee/HomeAgent→400(带 token 可读)、 -# /repos/JianFeeeee/HologramAgent→404。写成 HologramAgent 是死链。 +# ⚠ gitcode 侧主仓镜像现已改名为 HologramAgent(与 GitHub 同名), +# 旧名 HomeAgent 仍 301 跳转。实测 2026-10-21 20:1x(直连不带代理): +# /api/v5/repos/JianFeeeee/{HomeAgent,HologramAgent} 不带 token 均 400 +# (需鉴权,非仓不存在);/releases/tags/v1.3.13 两名字均 200 且响应一致。 curl -s -H "private-token: $TOKEN" \ - "https://gitcode.com/api/v5/repos/JianFeeeee/HomeAgent/releases/tags/v1.3.13" + "https://gitcode.com/api/v5/repos/JianFeeeee/HologramAgent/releases/tags/v1.3.13" ``` ★ **token 是宽范围的个人令牌**(可读 92 仓/48 私有、有写权限),而 CI 只需要这两个仓。 @@ -224,8 +241,8 @@ curl -s -H "private-token: $TOKEN" \ ```bash # token 放 ~/.git-credentials(https://JianFeeeee:@gitcode.com) -# GITCODE_REPO 是 gitcode 镜像仓名(当前 HomeAgent),与 GitHub 侧仓名无关。 -ASSET_DIR=<产物目录> GITCODE_REPO=JianFeeeee/HomeAgent \ +# GITCODE_REPO 是 gitcode 镜像仓名(当前 HologramAgent,旧名 HomeAgent 为 301)。 +ASSET_DIR=<产物目录> GITCODE_REPO=JianFeeeee/HologramAgent \ python3 deploy/scripts/upload_assets.py # release 条目必须先存在(脚本向 releases//upload_url 取 OBS 签名 URL) ``` From a3ab6e5cfa10382e982bfd3cc0e7370fb04a7e33 Mon Sep 17 00:00:00 2001 From: supervisor Date: Wed, 21 Oct 2026 20:18:30 +0800 Subject: [PATCH 7/7] =?UTF-8?q?docs(deploy):=20SDK=20=E9=95=9C=E5=83=8F?= =?UTF-8?q?=E4=BB=93=E7=A4=BA=E4=BE=8B=E7=BB=9F=E4=B8=80=E4=B8=BA=20hologr?= =?UTF-8?q?amagentsdk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit upload_assets.py docstring 与 docs/git-branching.md 的上传示例里,SDK 仓 仍写 homeagent-sdk;按已定口径(SDK 仓名 hologramagentsdk,gitcode/GitHub 两侧均 200 实测)统一,避免与 sdk-docs 线合并后出现两种说法。 纯注释/文档改动,零代码逻辑变更。 --- deploy/scripts/upload_assets.py | 2 +- docs/git-branching.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/scripts/upload_assets.py b/deploy/scripts/upload_assets.py index 6a11b13a..d6c05971 100755 --- a/deploy/scripts/upload_assets.py +++ b/deploy/scripts/upload_assets.py @@ -5,7 +5,7 @@ 不传 file 时上传 dist/release/ 下全部发布产物。 环境变量: - GITCODE_REPO 目标仓库,默认 JianFeeeee/HologramAgent(SDK 仓传 JianFeeeee/homeagent-sdk) + GITCODE_REPO 目标仓库,默认 JianFeeeee/HologramAgent(SDK 仓传 JianFeeeee/hologramagentsdk) 这是 gitcode 镜像仓名的**唯一定义处**(workflow 里通过 job 级 env.GC_REPO 传入同一个值)。改 gitcode 仓名时改这里 + 两个 workflow 的 GC_REPO,共三处(每个文件各一个定义点)。 diff --git a/docs/git-branching.md b/docs/git-branching.md index 18b74dda..dfb4e4c7 100644 --- a/docs/git-branching.md +++ b/docs/git-branching.md @@ -417,7 +417,7 @@ VERSION=<版本> bash deploy/packaging/package-windows.sh client amd64 # 需 # 核心仓 python3 deploy/scripts/upload_assets.py # 默认上传 dist/release 下可识别的产物 # SDK 仓(hmapdev_* 没有扩展名,不会被自动识别 ⇒ 必须显式列文件名) -GITCODE_REPO=JianFeeeee/homeagent-sdk ASSET_DIR=/dist/release \ +GITCODE_REPO=JianFeeeee/hologramagentsdk ASSET_DIR=/dist/release \ python3 deploy/scripts/upload_assets.py hmapdev_linux_amd64 ... ```