Merge pull request #18 from JianFeeeee/refactor/rename-batch6-site-docs

refactor(rename-batch6): 文档/静态站旧仓名清理 + gitcode 镜像仓名对齐 HologramAgent
This commit is contained in:
JianFeeeee
2026-10-22 07:20:29 +08:00
committed by GitHub
14 changed files with 162 additions and 61 deletions

View File

@ -226,6 +226,28 @@ 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 仓名时只改这一行;下面所有消费点都走 ${GC_REPO}。
# 与 release.yml 的 sync-gitcode 保持同值(两个 workflow 各自独立
# 定义:改的时候两个文件都要改,但每个文件内部只有一个定义处)。
#
# 取值依据(实测 2026-10-21,直连不带代理,非推测):
# https://gitcode.com/JianFeeeee/HologramAgent → 200 ← 当前用这个
# https://gitcode.com/JianFeeeee/HomeAgent → 301 ← 旧名,跳转到上面
# https://gitcode.com/JianFeeeee/hologramagentsdk → 200(SDK 仓,另一对象)
# https://gitcode.com/JianFeeeee/homeagentsdk → 404
#
# 背景:gitcode 侧镜像仓已由 HomeAgent 改名为 HologramAgent(与 GitHub
# 主仓同名)。旧地址仍 301 跳转,跟随后也能到达,但走重定向 ⇒ 别再用它。
# 判定两仓同一对象:两地址 git ls-remote 的 refs 列表 md5 相同。
#
# ⚠ 失败面:本 job 的 needs 是 [go, race, cross, gui, csrc, docs]。
# 前置检查 exit 1 ⇒ 本 job 红 ⇒ **main 的整条 CI 红**(不是只红一格)。
# release.yml 的 sync-gitcode 只红在镜像同步这一格(GitHub 侧产物已发)。
# ══════════════════════════════════════════════════════════════════
GC_REPO: JianFeeeee/HologramAgent
steps:
- id: tok
name: 检查 gitcode 凭据
@ -258,9 +280,7 @@ jobs:
if: steps.tok.outputs.ok == 'true'
env:
GC_TOKEN: ${{ secrets.GITCODE_TOKEN }}
# 显式传环境变量(而不是 shell 局部变量):脚本的默认值与这里
# 相同,但写在 env 里才是**真的传下去**,改仓名时不用改两处逻辑。
GC_REPO: JianFeeeee/HologramAgent
# GC_REPO 来自 job 级 env(唯一定义处),此处不重复字面量。
run: |
set -euo pipefail
bash .github/scripts/check-gitcode-repo.sh
@ -271,6 +291,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}"

View File

@ -352,6 +352,27 @@ jobs:
if: needs.prepare.outputs.exists == 'false'
runs-on: ubuntu-latest
timeout-minutes: 60
env:
# ══════════════════════════════════════════════════════════════════
# ★★ gitcode 镜像目标仓名 —— **本 job 的唯一定义处**。
# 改 gitcode 仓名时只改这一行;下面所有消费点都走 ${GC_REPO}。
# 与 ci.yml 的 sync-gitcode-main 保持同值(两个 workflow 各自独立
# 定义:改的时候两个文件都要改,但每个文件内部只有一个定义处)。
#
# 取值依据(实测 2026-10-21,直连不带代理,非推测):
# https://gitcode.com/JianFeeeee/HologramAgent → 200 ← 当前用这个
# https://gitcode.com/JianFeeeee/HomeAgent → 301 ← 旧名,跳转到上面
# https://gitcode.com/JianFeeeee/hologramagentsdk → 200(SDK 仓,另一对象)
# https://gitcode.com/JianFeeeee/homeagentsdk → 404
#
# 背景:gitcode 侧镜像仓已由 HomeAgent 改名为 HologramAgent(与 GitHub
# 主仓同名)。旧地址仍 301 跳转,跟随后也能到达,但走重定向 ⇒ 别再用它。
# 判定两仓同一对象:两地址 git ls-remote 的 refs 列表 md5 相同。
#
# ⚠ 失败面(与 ci.yml 不同,别搞混):本 job 只红在镜像同步这一格,
# GitHub 侧 release 产物此时已经发出去了;ci.yml 那个会红整条 main CI。
# ══════════════════════════════════════════════════════════════════
GC_REPO: JianFeeeee/HologramAgent
steps:
- uses: actions/checkout@v7
- id: tok
@ -381,9 +402,7 @@ jobs:
if: steps.tok.outputs.ok == 'true'
env:
GC_TOKEN: ${{ secrets.GITCODE_TOKEN }}
# 显式传环境变量(而不是 shell 局部变量):脚本的默认值与这里
# 相同,但写在 env 里才是**真的传下去**,改仓名时不用改两处逻辑。
GC_REPO: JianFeeeee/HologramAgent
# GC_REPO 来自 job 级 env(唯一定义处),此处不重复字面量。
run: |
set -euo pipefail
bash .github/scripts/check-gitcode-repo.sh
@ -394,7 +413,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]"
@ -414,5 +433,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"

View File

@ -240,7 +240,7 @@ internal/
├── config/ SQLite 配置中心
├── events/ 事件总线
└── internal/lua/adapters/ 10 个 LLM 协议适配器脚本
外部插件开发见 [homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk) 仓库,使用 `hmapdev` 工具链开发,参考 `example/` 目录下的 Go 和 Lua 示例
外部插件开发见 [homeagentsdk](https://github.com/JianFeeeee/homeagentsdk) 仓库,使用 `hmapdev` 工具链开发,参考 `example/` 目录下的 Go 和 Lua 示例
```
## 项目状态
@ -326,7 +326,7 @@ 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+ 插件,外部插件开发见 [homeagentsdk](https://github.com/JianFeeeee/homeagentsdk) 仓库。新增输入通道 `NoMemory`/`Cleaner`、`ChannelDef`、插件禁用/启用系统(CLI + WebUI),`plugindev` 工具链完成 C ABI `ChannelDef` 传递。
## 文档
@ -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) 静态链接
插件与本项目通过公开 [homeagentsdk](https://github.com/JianFeeeee/homeagentsdk) 静态链接
(SDK 源码会进入插件二进制),但那个仓**以 MIT 发布**——MIT 是宽松许可,拿到授权的代码不继承
本项目的 AGPL。因此**外部插件不是本项目的衍生作品**,作者可自行选择许可(含闭源、商业、私有),
既不必同许可、也不受 §13 网络条款约束。第三方插件生态的安全与活跃正建立在这条之上。

View File

@ -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 [homeagentsdk](https://github.com/JianFeeeee/homeagentsdk) repo, use `hmapdev` toolchain, refer to Go and Lua examples in `example/`
```
## Project Status
@ -346,7 +346,7 @@ 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 [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
@ -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
[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

View File

@ -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 ([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

View File

@ -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 [homeagentsdk](https://github.com/JianFeeeee/homeagentsdk) repository.
```bash
git clone https://github.com/JianFeeeee/homeagentsdk.git
cd homeagent-sdk
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 homeagent-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, ...)
@ -738,8 +738,8 @@ internal/plugins/yourplugin/
package yourplugin
import (
"gitcode.com/JianFeeeee/HomeAgent/internal/plugin"
sdk "gitcode.com/JianFeeeee/HomeAgent/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/HomeAgent/internal/plugins/yourplugin"
_ "github.com/JianFeeeee/HologramAgent/internal/plugins/yourplugin"
// ... other plugins
)
```
@ -844,7 +844,7 @@ Internal: records are stored in SQLite `disabled_plugins` table (`name`, `disabl
## 7. Example Plugin Reference
### SDK Repository Examples (`homeagent-sdk/example/`)
### SDK Repository Examples (`homeagentsdk/example/`)
| Example | Type | Features |
|---------|------|----------|
@ -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 [homeagentsdk](https://github.com/JianFeeeee/homeagentsdk).*

View File

@ -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
- 外部插件示例([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 安装

View File

@ -9,11 +9,11 @@
HologramAgent 的所有外部交互能力都来自插件。插件通过 `PluginSDK`(Go API)与内核交互。
**SDK 仓库**:插件开发工具、模板代码和示例插件统一托管在
[homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk) 仓库。
[homeagentsdk](https://github.com/JianFeeeee/homeagentsdk) 仓库。
```bash
git clone https://github.com/JianFeeeee/homeagentsdk.git
cd homeagent-sdk
cd homeagentsdk
```
每个插件实现一个三方法接口:
@ -49,7 +49,7 @@ type Plugin interface {
### 安装
```bash
cd homeagent-sdk/tools/hmapdev
cd homeagentsdk/tools/hmapdev
go build -o hmapdev
# 将 hmapdev 加入 PATH 或直接使用
# 也可从 SDK 的 release 附件下载预编译二进制(hmapdev_linux_amd64 等)
@ -726,8 +726,8 @@ internal/plugins/yourplugin/
package yourplugin
import (
"gitcode.com/JianFeeeee/HomeAgent/internal/plugin"
sdk "gitcode.com/JianFeeeee/HomeAgent/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/HomeAgent/internal/plugins/yourplugin"
_ "github.com/JianFeeeee/HologramAgent/internal/plugins/yourplugin"
// ... 其他插件
)
```
@ -830,7 +830,7 @@ pmgr.ReloadPlugins() // 重载所有插件
## 七、示例插件参考
### SDK 仓库示例(`homeagent-sdk/example/`)
### SDK 仓库示例(`homeagentsdk/example/`)
| 示例 | 类型 | 特点 |
|------|------|------|
@ -884,4 +884,4 @@ pmgr.ReloadPlugins() // 重载所有插件
*了解项目整体目标?查看 [OVERVIEW.md](OVERVIEW.md)。*
*了解技术架构?查看 [ARCHITECTURE.md](ARCHITECTURE.md)。*
*SDK 仓库与开发工具?查看 [homeagent-sdk](https://github.com/JianFeeeee/homeagentsdk)。*
*SDK 仓库与开发工具?查看 [homeagentsdk](https://github.com/JianFeeeee/homeagentsdk)。*

View File

@ -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 `github.com/JianFeeeee/HologramAgent`)
- **SDK 仓** `third_party/homeagent-sdk`(独立 git 仓、独立版本号)
### 33. 开工流程

View File

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

View File

@ -5,7 +5,19 @@
不传 file 时上传 dist/release/ 下全部发布产物。
环境变量:
GITCODE_REPO 目标仓库,默认 JianFeeeee/HomeAgent(SDK 仓传 JianFeeeee/homeagent-sdk)
GITCODE_REPO 目标仓库,默认 JianFeeeee/HologramAgent(SDK 仓传 JianFeeeee/hologramagentsdk)
这是 gitcode 镜像仓名的**唯一定义处**(workflow 里通过 job 级
env.GC_REPO 传入同一个值)。改 gitcode 仓名时改这里 + 两个
workflow 的 GC_REPO,共三处(每个文件各一个定义点)。
取值依据(实测 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 资产目录,默认 <repo>/dist/release
为何两步:gitcode 的 release 附件不走 API 直传,而是先向
@ -20,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,

View File

@ -195,7 +195,7 @@ git switch main && git cherry-pick <sha> # 遵守 §三:只 pick,不 merge
> - `feature/*` 分支(`input-semantics`、`multimodal-embedding`、`memory-media`、`plugin-proc-migration`)
> 均已合入并删除。
### SDK 仓(homeagent-sdk)
### SDK 仓(homeagentsdk)
| 分支 | 状态 | 处理 |
|---|---|---|
@ -417,7 +417,7 @@ VERSION=<版本> bash deploy/packaging/package-windows.sh client amd64 # 需
# 核心仓
python3 deploy/scripts/upload_assets.py <tag> <token> # 默认上传 dist/release 下可识别的产物
# SDK 仓(hmapdev_* 没有扩展名,不会被自动识别 ⇒ 必须显式列文件名)
GITCODE_REPO=JianFeeeee/homeagent-sdk ASSET_DIR=<sdk>/dist/release \
GITCODE_REPO=JianFeeeee/hologramagentsdk ASSET_DIR=<sdk>/dist/release \
python3 deploy/scripts/upload_assets.py <tag> <token> hmapdev_linux_amd64 ...
```

View File

@ -8,9 +8,9 @@
| 仓 | 位置 | 流水线 | 触发 |
| --- | --- | --- | --- |
| 主仓 HologramAgent | `github.com/JianFeeeee/HomeAgent`(公开) | `ci.yml` + `release.yml` | push / PR、`release/**` push |
| 主仓 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/HologramAgent`(与主仓同名) | 无(由主仓 Release 的 sync job 同步) | — |
**分支保护**(main,公开仓免费):10 项必须检查(Go build/vet/test、Race、
cross×5、GUI、C gates、Docs)+ `strict`(必须与 main 同步)+ 禁 force push。
@ -19,6 +19,50 @@ 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 侧以后再改仓名,只改这三个定义点即可**,消费点无需动。
**当前取值 `JianFeeeee/HologramAgent`**(与 GitHub 主仓同名)。gitcode 侧镜像仓
**已由 `HomeAgent` 改名为 `HologramAgent`**;旧地址仍 301 跳转,跟随后也能到,
但走重定向,不应再用。实测(2026-10-21 20:1x,直连不带代理,
`curl -s -o /dev/null -w '%{http_code}' https://gitcode.com/JianFeeeee/<repo>`):
| 仓名 | 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 不一样,别搞混)**:
- `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,**全部命令均本地实测过**(原则:不写"应该有用"的未验证步骤):
@ -163,12 +207,12 @@ 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/homeagentsdk`)
均已设同名 secret,取值自 `~/.git-credentials` 里那条 `https://JianFeeeee:<token>@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/HologramAgent
printf '%s' "$TOKEN" | gh secret set GITCODE_TOKEN --repo JianFeeeee/homeagentsdk
```
@ -177,12 +221,16 @@ 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(两仓都测)
# ⚠ 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 只需要这两个仓。
@ -193,7 +241,8 @@ curl -s -H "private-token: $TOKEN" \
```bash
# token 放 ~/.git-credentials(https://JianFeeeee:<token>@gitcode.com)
ASSET_DIR=<产物目录> GITCODE_REPO=JianFeeeee/HomeAgent \
# GITCODE_REPO 是 gitcode 镜像仓名(当前 HologramAgent,旧名 HomeAgent 为 301)。
ASSET_DIR=<产物目录> GITCODE_REPO=JianFeeeee/HologramAgent \
python3 deploy/scripts/upload_assets.py <tag> <token>
# release 条目必须先存在(脚本向 releases/<tag>/upload_url 取 OBS 签名 URL)
```

View File

@ -2018,7 +2018,7 @@
</p>
<div class="cta rise" style="--d:280ms">
<a class="btn btn-primary" href="#quickstart">快速上手 →</a>
<a class="btn btn-ghost" href="https://github.com/JianFeeeee/HomeAgent">查看源码</a>
<a class="btn btn-ghost" href="https://github.com/JianFeeeee/HologramAgent">查看源码</a>
</div>
</div>
</div>
@ -3010,34 +3010,34 @@ echo <span class="s">"你好,记住我喜欢喝咖啡"</span> | ./build/waiter
<div>
<h4>文档</h4>
<ul>
<li><a href="https://github.com/JianFeeeee/HomeAgent/blob/main/assets/docs/zh/OVERVIEW.md">项目概览</a></li>
<li><a href="https://github.com/JianFeeeee/HomeAgent/blob/main/assets/docs/zh/ARCHITECTURE.md">技术架构</a></li>
<li><a href="https://github.com/JianFeeeee/HomeAgent/blob/main/assets/docs/zh/PLUGIN_DEV.md">插件开发</a></li>
<li><a href="https://github.com/JianFeeeee/HomeAgent/blob/main/assets/docs/zh/ADAPTER.md">Lua 适配器</a></li>
<li><a href="https://github.com/JianFeeeee/HologramAgent/blob/main/assets/docs/zh/OVERVIEW.md">项目概览</a></li>
<li><a href="https://github.com/JianFeeeee/HologramAgent/blob/main/assets/docs/zh/ARCHITECTURE.md">技术架构</a></li>
<li><a href="https://github.com/JianFeeeee/HologramAgent/blob/main/assets/docs/zh/PLUGIN_DEV.md">插件开发</a></li>
<li><a href="https://github.com/JianFeeeee/HologramAgent/blob/main/assets/docs/zh/ADAPTER.md">Lua 适配器</a></li>
</ul>
</div>
<div>
<h4>深入</h4>
<ul>
<li><a href="https://github.com/JianFeeeee/HomeAgent/blob/main/docs/zh/input-scheduler-design.md">输入调度器设计</a></li>
<li><a href="https://github.com/JianFeeeee/HomeAgent/blob/main/docs/zh/resident-subagent-design.md">驻留式子 Agent</a></li>
<li><a href="https://github.com/JianFeeeee/HomeAgent/blob/main/docs/zh/multimodal-space.md">统一多模态空间</a></li>
<li><a href="https://github.com/JianFeeeee/HologramAgent/blob/main/docs/zh/input-scheduler-design.md">输入调度器设计</a></li>
<li><a href="https://github.com/JianFeeeee/HologramAgent/blob/main/docs/zh/resident-subagent-design.md">驻留式子 Agent</a></li>
<li><a href="https://github.com/JianFeeeee/HologramAgent/blob/main/docs/zh/multimodal-space.md">统一多模态空间</a></li>
</ul>
</div>
<div>
<h4>项目</h4>
<ul>
<li><a href="https://github.com/JianFeeeee/HomeAgent">源码仓库</a></li>
<li><a href="https://github.com/JianFeeeee/HomeAgent/releases">发布下载</a></li>
<li><a href="https://github.com/JianFeeeee/HologramAgent">源码仓库</a></li>
<li><a href="https://github.com/JianFeeeee/HologramAgent/releases">发布下载</a></li>
<li><a href="https://github.com/JianFeeeee/homeagentsdk">插件 SDK</a></li>
</ul>
</div>
<div>
<h4>状态</h4>
<ul>
<li><a href="https://github.com/JianFeeeee/HomeAgent/releases">最新发布:v1.3.x 线</a></li>
<li><a href="https://github.com/JianFeeeee/HomeAgent/blob/main/internal/meta/meta.go">main 在研:1.4.0</a></li>
<li><a href="https://github.com/JianFeeeee/HomeAgent/blob/main/LICENSE">内核许可:AGPL-3.0-only</a></li>
<li><a href="https://github.com/JianFeeeee/HologramAgent/releases">最新发布:v1.3.x 线</a></li>
<li><a href="https://github.com/JianFeeeee/HologramAgent/blob/main/internal/meta/meta.go">main 在研:1.4.0</a></li>
<li><a href="https://github.com/JianFeeeee/HologramAgent/blob/main/LICENSE">内核许可:AGPL-3.0-only</a></li>
<li><a href="https://github.com/JianFeeeee/homeagentsdk/blob/main/LICENSE">插件 SDK:MIT</a></li>
</ul>
</div>