diff --git a/.gitignore b/.gitignore index 638faef2..6d125731 100644 --- a/.gitignore +++ b/.gitignore @@ -25,30 +25,30 @@ cmd/gui/dist/ # SDK 工具链 — 核心仓不追踪 # # 外部插件与工具链维护在独立 SDK 仓(决策 sdk_repo_only), -# 本仓经 go.mod 的 replace => ./third_party/homeagent-sdk 引用。 +# 本仓经 go.mod 的 replace => ./third_party/hologramagentsdk 引用。 # example/ 下已跟踪的 21 个文件(10 个示例的 plg.json + plugin.go, # 加 qq/plugin_test.go)早于本规则, # 靠「已跟踪文件不受 .gitignore 影响」保留——这是有意的,不要「修」。 -third_party/homeagent-sdk/bin/ -third_party/homeagent-sdk/tools/ -third_party/homeagent-sdk/package/ -third_party/homeagent-sdk/scripts/ +third_party/hologramagentsdk/bin/ +third_party/hologramagentsdk/tools/ +third_party/hologramagentsdk/package/ +third_party/hologramagentsdk/scripts/ # skills/ 是 SDK 仓的 skill 源(hmapdev skill install 的来源), # 与 tools/、docs/ 同理属 SDK 仓自治范围,不进本仓。 -third_party/homeagent-sdk/skills/ +third_party/hologramagentsdk/skills/ # .github/ 同理:SDK 仓的 workflow 由 SDK 仓自己管(它在那边被跟踪), # 本仓不参与构建,不需要在这边重复一份。 -third_party/homeagent-sdk/.github/ -third_party/homeagent-sdk/.gitignore -third_party/homeagent-sdk/README* -third_party/homeagent-sdk/example/ +third_party/hologramagentsdk/.github/ +third_party/hologramagentsdk/.gitignore +third_party/hologramagentsdk/README* +third_party/hologramagentsdk/example/ # 文档站(mkdocs.yml + docs/ + 生成器)属于 SDK 仓,与 README* / tools/ 同理。 # 注意 docs/ 带前导路径限定,够精确:本仓自己的 docs/ 不受影响。 -third_party/homeagent-sdk/docs/ -third_party/homeagent-sdk/mkdocs.yml -third_party/homeagent-sdk/site_build/ +third_party/hologramagentsdk/docs/ +third_party/hologramagentsdk/mkdocs.yml +third_party/hologramagentsdk/site_build/ # 主题覆盖目录(只覆盖 footer.html,补备案号)——同属文档站。 -third_party/homeagent-sdk/overrides/ +third_party/hologramagentsdk/overrides/ .codegraph/ # codegraph 本地索引配置(含嵌套 SDK 仓放行,仅本地生效) diff --git a/assets/docs/zh/ARCHITECTURE.md b/assets/docs/zh/ARCHITECTURE.md index 0d9f65a5..1f70aaad 100644 --- a/assets/docs/zh/ARCHITECTURE.md +++ b/assets/docs/zh/ARCHITECTURE.md @@ -494,7 +494,7 @@ Lua 脚本插件加载:`internal/plugin/` → gopher-lua 解释器执行 `main **只有必须使用内部 SDK 能力(公开 SDK 没有的接口面)的插件,才留在编译期内置清单。** -内部 SDK(`internal/sdk`)比公开 SDK(third_party/homeagent-sdk)多出一批 +内部 SDK(`internal/sdk`)比公开 SDK(third_party/hologramagentsdk)多出一批 **不对外授予**的能力面:`TrackerAPI` / `StatusAPI` / `SupervisorAPI` / `AdapterAPI` / `SelftestAPI` / `ToolAPI`,以及 **`Publish` (事件发布)**。外部插件走 proc 桥的收窄能力集,这些接口在类型层就不存在 diff --git a/assets/skills/commondev-discipline/SKILL.md b/assets/skills/commondev-discipline/SKILL.md index ba5353e3..161aa7e5 100644 --- a/assets/skills/commondev-discipline/SKILL.md +++ b/assets/skills/commondev-discipline/SKILL.md @@ -553,7 +553,7 @@ hmapdev sdk list # 本机已装的所有 SDK 版本 ``` - 核心仓 `/home/program/TrueAgent`(Go module `github.com/JianFeeeee/HologramAgent`) -- **SDK 仓** `third_party/homeagent-sdk`(独立 git 仓、独立版本号) +- **SDK 仓** `third_party/hologramagentsdk`(独立 git 仓、独立版本号) ### 33. 开工流程 @@ -846,10 +846,10 @@ pi 进程、sidecar、ssh 会话、workdir(含凭据残留检查)一个不 | 内容 | 路径 | |---|---| -| SDK 源码 | `third_party/homeagent-sdk/sdk/` | -| **可运行的示例插件** | `third_party/homeagent-sdk/example/`(a2a / acp / qq / plugindev…) | -| 能力边界 | `third_party/homeagent-sdk/docs/guide/capability-boundary.md` | -| 并发声明 | `third_party/homeagent-sdk/docs/guide/parallel-tool-declaration.md` | +| SDK 源码 | `third_party/hologramagentsdk/sdk/` | +| **可运行的示例插件** | `third_party/hologramagentsdk/example/`(a2a / acp / qq / plugindev…) | +| 能力边界 | `third_party/hologramagentsdk/docs/guide/capability-boundary.md` | +| 并发声明 | `third_party/hologramagentsdk/docs/guide/parallel-tool-declaration.md` | | 部署手册 | `docs/zh/deploy-runbook.md` | | sidecar 参考实现 | `internal/plugins/clawhubadapter/sidecar.go` | diff --git a/csrc/include/ha_codec.h b/csrc/include/ha_codec.h index c385644c..0fcf7f43 100644 --- a/csrc/include/ha_codec.h +++ b/csrc/include/ha_codec.h @@ -6,7 +6,7 @@ * * ============================ 接口冻结声明 ============================ * 本头文件是对外契约。函数签名、语义、返回值一经发布即为冻结接口, - * 修改必须走大版本流程(与 third_party/homeagent-sdk 同一冻结标准)。 + * 修改必须走大版本流程(与 third_party/hologramagentsdk 同一冻结标准)。 * * 设计约束(见 docs/zh/c-core/llm-orchestration-c.md §四): * 1. 只吃 const char* + **显式长度**,出数值/字节偏移 —— 不回调 Go、 diff --git a/deploy/packaging/package-linux.sh b/deploy/packaging/package-linux.sh index 48d995c7..6c74d7b5 100644 --- a/deploy/packaging/package-linux.sh +++ b/deploy/packaging/package-linux.sh @@ -93,11 +93,11 @@ echo "Arch: $ARCH" echo "" # ---- prepare go.mod for Linux build: point SDK replace at the in-repo SDK ---- -# SDK 仓库(含工具链/示例)以嵌套 git 仓库形式维护在 third_party/homeagent-sdk, +# SDK 仓库(含工具链/示例)以嵌套 git 仓库形式维护在 third_party/hologramagentsdk, # 打包直接用该目录,不再 clone 到 /tmp。 prepare_gomod() { local gomod="$PROJECT_ROOT/go.mod" - local sdk_local="$PROJECT_ROOT/third_party/homeagent-sdk" + local sdk_local="$PROJECT_ROOT/third_party/hologramagentsdk" local sdk_clone="/tmp/homeagent-sdk" local patched=0 @@ -442,7 +442,7 @@ stage_variant() { if [ -z "$hv" ]; then # 退而求其次:从 SDK 源码现编一个(CGO 无关,快) echo " [hmapdev] build/ 下没有 hmapdev,尝试现编..." - ( cd "$PROJECT_ROOT/third_party/homeagent-sdk/tools/hmapdev" && \ + ( cd "$PROJECT_ROOT/third_party/hologramagentsdk/tools/hmapdev" && \ CGO_ENABLED=0 go build -trimpath -o "$BUILD_DIR/hmapdev" . ) || { echo "ERROR: 无法获得 hmapdev(插件工具链),拒绝打包。" >&2 return 1; } @@ -459,7 +459,7 @@ stage_variant() { # 「装完即可离线构建插件」,且版本与内核严格同源(防版本漂移)。 stage_sdk() { local staging="$1" - local sdk_src="$PROJECT_ROOT/third_party/homeagent-sdk" + local sdk_src="$PROJECT_ROOT/third_party/hologramagentsdk" local sdk_dst="$staging/usr/lib/hologram/sdk" [ -d "$sdk_src" ] || { echo "ERROR: 找不到 SDK 源码 $sdk_src" >&2; return 1; } mkdir -p "$sdk_dst" diff --git a/deploy/scripts/deploy-sdk-site.sh b/deploy/scripts/deploy-sdk-site.sh index 05eb9c15..93d982db 100755 --- a/deploy/scripts/deploy-sdk-site.sh +++ b/deploy/scripts/deploy-sdk-site.sh @@ -30,7 +30,7 @@ set -euo pipefail -SDK_DIR=${REPO}/third_party/homeagent-sdk +SDK_DIR=${REPO}/third_party/hologramagentsdk BUILD_DIR="$SDK_DIR/site_build" HOST=192.168.2.106 SSH="ssh -n -o BatchMode=yes -o ConnectTimeout=10 -o StrictHostKeyChecking=no admin@$HOST" diff --git a/docs/git-branching.md b/docs/git-branching.md index 54124835..61c0a97d 100644 --- a/docs/git-branching.md +++ b/docs/git-branching.md @@ -7,7 +7,7 @@ > 生效:2026-08-31,2026-09-04 修订(三级发布通道 + 单条发布分支),2026-09-06 修订(SDK 仓版本语义与发版联动,见 §七),2026-09-13 修订(发布线路牌随 patch 推进 + 版本号不得固化落库)。 -> 适用:**本仓(HologramAgent)与 third_party/homeagent-sdk(SDK 仓)**——两仓协作时分支策略必须一致,本规范两仓同用。 +> 适用:**本仓(HologramAgent)与 third_party/hologramagentsdk(SDK 仓)**——两仓协作时分支策略必须一致,本规范两仓同用。 > 核心原则一句话:**main 唯一长命、永远可部署;一切新工作在特性分支;一个中版本一条发布分支,alpha/beta/正式由 tag 区分;hotfix 只进发布分支并 cherry-pick 回 main。** --- @@ -50,7 +50,7 @@ main ──────────────── E ──────── - **main 的 `internal/meta.Version` 始终是下一个未发布版本**,不随 patch 发布变动。 - 合入门禁(**单人直推也遵守**,不强制 PR 但强制验证): - `make test` 全绿 - - 涉及插件/工具链时:接口冻结检查 `git diff third_party/homeagent-sdk/sdk/` 为空 + - 涉及插件/工具链时:接口冻结检查 `git diff third_party/hologramagentsdk/sdk/` 为空 - `go vet ./...` 无新增告警 ### 2. `feature/xxx`(新特性/修复) @@ -265,7 +265,7 @@ git switch main && git cherry-pick # 遵守 §三:只 pick,不 merge 6. 健康检查:版本号、插件清单无缺失、`/api/v1/status`、一次真实对话、`fatal error` 计数为 0 - **改造期间现网不得部署 main 或 feature 的中间态**——只有发版才用发布分支的 tag。 - alpha/beta tag 的产物**不上现网**(现网是 24/7 服务,预发布通道的存在就是为了不拿它冒险)。 -- 涉及 SDK 仓时:主仓 `go.mod` 的 `replace => ./third_party/homeagent-sdk` 指向本地 vendored 副本, +- 涉及 SDK 仓时:主仓 `go.mod` 的 `replace => ./third_party/hologramagentsdk` 指向本地 vendored 副本, 发版前确认 vendored SDK 与 SDK 仓 release tag 一致(**两仓中版本对齐是第一优先级**,见 §七)。 - **客户端版本必须与内核同步**(GUI / 鸿蒙 / waiter 同一个号,当前皆为 `internal/meta.Version`): 内核版本是唯一事实源,客户端不得各写一个。拉齐用 `make sync-client-versions`, @@ -308,14 +308,14 @@ git checkout feature/xxx && git cherry-pick
# 公开 SDK 接口改动(feature,不是 hotfix):先进 main,再 pick 到发布分支 git checkout -b feature/sdk-xxx main -# ... 改 third_party/homeagent-sdk/sdk/ 与内核桥接层 ... +# ... 改 third_party/hologramagentsdk/sdk/ 与内核桥接层 ... git checkout main && git merge --no-ff feature/sdk-xxx git checkout release/v1.1.x git cherry-pick # 只挑改动,不挑 main 的版本号 git commit -am "chore(release): bump v1.1.1" # 发布分支自己的版本号 git tag -a v1.1.1 -m "..." # SDK 仓同步(仅在核心打正式 tag 时,见 §七.2/§七.3) -cd third_party/homeagent-sdk +cd third_party/hologramagentsdk git checkout -b release/v1.1.x main git commit -am "chore(release): SDK 1.1.0(1.1.x 线全程共用)" git tag -a v1.1.0 -m "..." @@ -329,14 +329,14 @@ git branch -d release/v1.0.x # tag 已保存历史, ## 六、本规范与「接口冻结」约束的关系 > **接口冻结已到期(v1.1.x 起)**。冻结是**迁移期**的约束——它要保的是 -> 「换运行模型不动业务代码」,靠 `git diff third_party/homeagent-sdk/sdk/` 为空来守。 +> 「换运行模型不动业务代码」,靠 `git diff third_party/hologramagentsdk/sdk/` 为空来守。 > 迁移完成(v1.0.0 上生产)后该约束按时失效,取而代之的是 §八的三条演进规则。 > 本节保留历史条款,但**不再作为合回门禁**。 -- ~~feature 分支合回 main 的门禁(`git diff third_party/homeagent-sdk/sdk/` 为空)~~ +- ~~feature 分支合回 main 的门禁(`git diff third_party/hologramagentsdk/sdk/` 为空)~~ —— **已失效**。现改为:公开接口的改动必须满足 §八(只增不减、签名不改、模板接线)。 - `internal/sdk` **不受冻结约束**,可自由扩展(此条仍成立); - 公开 SDK 接口指 `third_party/homeagent-sdk/sdk/`。 + 公开 SDK 接口指 `third_party/hologramagentsdk/sdk/`。 - **公开接口的改动本身是 feature,不是发布准备**:它必须走 `feature/xxx` → 合回 main 的路径, 再 cherry-pick 到发布分支。不允许把接口新增当成"发布分支上的 bug 修复"直接提交进 release ——发布分支冻结功能(§2.3),接口是最典型的功能面。 @@ -367,7 +367,7 @@ git branch -d release/v1.0.x # tag 已保存历史, 插件开发者会照着一个还会变的接口写代码——**那是无效开发**。接口没定就没有可依赖的契约, 发出去的版本号是一个假承诺。 - 这条约束的对象是 **SDK 仓的发版动作**,不是核心二进制里有没有 SDK 代码。 - 主仓 `go.mod` 用 `replace => ./third_party/homeagent-sdk`,任何核心构建都必然含 vendored + 主仓 `go.mod` 用 `replace => ./third_party/hologramagentsdk`,任何核心构建都必然含 vendored SDK 源码,这是构建机制决定的,不在本条约束范围内。 ### 3. 正式发布时 SDK 随核心一起发 @@ -474,7 +474,7 @@ GITCODE_REPO=JianFeeeee/hologramagentsdk ASSET_DIR=/dist/release \ > 本节原在《外部插件接口不变矩阵》(迁移期临时文档,已随迁移完成删除)§九。 > 那份文档记的是**迁移期**的约束("换运行模型不动业务代码",靠 -> `git diff third_party/homeagent-sdk/sdk/` 为空来守)。迁移完成后该约束**到期**—— +> `git diff third_party/hologramagentsdk/sdk/` 为空来守)。迁移完成后该约束**到期**—— > 继续冻结等于让 SDK 永远停在迁移那天的能力面,多模态这类功能永远到不了插件手上。 > 取代它的是下面三条更弱、但仍然硬的规则。 diff --git a/docs/zh/c-core/llm-orchestration-c.md b/docs/zh/c-core/llm-orchestration-c.md index 9f8451ac..6f3a45da 100644 --- a/docs/zh/c-core/llm-orchestration-c.md +++ b/docs/zh/c-core/llm-orchestration-c.md @@ -38,7 +38,7 @@ go env: CC=gcc CGO_ENABLED=1 GOOS=linux GOARCH=amd64 ### 2.2 已有纯 C 先例,可直接复用 -`third_party/homeagent-sdk/remotedevice/` 是一个**零外部依赖**的纯 C 库 +`third_party/hologramagentsdk/remotedevice/` 是一个**零外部依赖**的纯 C 库 (1320 行),已含可复用组件: | 文件 | 行数 | 能力 | @@ -270,7 +270,7 @@ C 化的正确性**不能靠「跑起来没崩」**,必须有可复现的对 | 打包脚本 | ✅ 不再需带 `.a`(编源码,无外部产物依赖)| 扩张到多文件 C 实现时重评 | **仍未决(需 jianf 拍板)**: -1. C 实现放**主仓 `csrc/`** 还是 **SDK `third_party/homeagent-sdk/`**? +1. C 实现放**主仓 `csrc/`** 还是 **SDK `third_party/hologramagentsdk/`**? - 当前已在主仓 `csrc/`;若 SDK 侧也要复用,需定同步机制 - 放 SDK:天然跨端复用,但要走 SDK 冻结与大版本流程 2. `ha_json.c` 是**复用**(从 remotedevice 复制/提为公共)还是**新写**? diff --git a/docs/zh/ci-cd-runbook.md b/docs/zh/ci-cd-runbook.md index 21f400c8..2cffd3d2 100644 --- a/docs/zh/ci-cd-runbook.md +++ b/docs/zh/ci-cd-runbook.md @@ -251,7 +251,7 @@ ASSET_DIR=<产物目录> GITCODE_REPO=JianFeeeee/HologramAgent \ # release 条目必须先存在(脚本向 releases//upload_url 取 OBS 签名 URL) ``` -## 4. SDK 仓(third_party/homeagent-sdk) +## 4. SDK 仓(third_party/hologramagentsdk) 与主仓同构,差异: diff --git a/docs/zh/commondev-agent-runtime-design.md b/docs/zh/commondev-agent-runtime-design.md index ccda863b..df322814 100644 --- a/docs/zh/commondev-agent-runtime-design.md +++ b/docs/zh/commondev-agent-runtime-design.md @@ -14,7 +14,7 @@ > - **[风险]** = 已知会让整套机制失效的点 > > 撰写时间:2026-10-13。事实基线:TrueAgent `/home/program/TrueAgent`, -> 生产实例 `/home/newqqagent`,SDK 仓 `third_party/homeagent-sdk`。 +> 生产实例 `/home/newqqagent`,SDK 仓 `third_party/hologramagentsdk`。 --- @@ -873,7 +873,7 @@ pi -p --session-dir /tmp/sd-store --session-id sd-01 "…" ls /root/.pi/agent/sessions/ | grep -i sd-test # 期望无结果 # §1.3 可接入面 -grep -n "func (s \*PluginSDK) RegisterInputChannel" third_party/homeagent-sdk/sdk/plugin.go +grep -n "func (s \*PluginSDK) RegisterInputChannel" third_party/hologramagentsdk/sdk/plugin.go grep -rn "resident_agents" internal/plugin/proc/ # 期望无结果 ⇒ 插件调不到 # §2.4 L4 归属 diff --git a/docs/zh/commondev-design.md b/docs/zh/commondev-design.md index a1806039..3c392d1f 100644 --- a/docs/zh/commondev-design.md +++ b/docs/zh/commondev-design.md @@ -124,7 +124,7 @@ | 事实 | 证据/位置 | |---|---| -| 已有 `plugindev` 示例插件,含 `plugindev_status/init/build/sdk/projects` | `third_party/homeagent-sdk/example/plugindev/` | +| 已有 `plugindev` 示例插件,含 `plugindev_status/init/build/sdk/projects` | `third_party/hologramagentsdk/example/plugindev/` | | 插件数据目录 API | `sdk.Settings().DataDir()`(`internal/sdk/settings_impl.go:24`) | | `hmapdev` 工具链已装 | `/usr/local/bin/hmapdev` | | SDK 无 HTTP/exec 能力面,但插件是编译型 Go,可自行 `os/exec` | `internal/sdk/plugin.go` 方法清单 | @@ -895,7 +895,7 @@ cd /tmp/probe-a && pi -p --provider <可用provider> --model <可用model> \ # §3.4 a2a/acp 无 cwd grep -n "agent_url\|query\|session_id" \ - /home/program/TrueAgent/third_party/homeagent-sdk/example/a2a/plugin.go + /home/program/TrueAgent/third_party/hologramagentsdk/example/a2a/plugin.go grep -n "cwd" /root/.pi/agent/extensions/pi-acp/index.ts # 期望无结果 # §3.5 端口归属 @@ -1039,7 +1039,7 @@ grep -n "phase,omitempty" cmd/waiter/state.go # 判据匹配的是 复现命令: ```bash -cd third_party/homeagent-sdk/example/commondev +cd third_party/hologramagentsdk/example/commondev K=$(sqlite3 /home/newqqagent/config.db "select value from config where key='core.llm.api_key';") HA_E2E_LLM=1 HA_E2E_API_KEY="$K" HA_E2E_REAL_DB=/home/newqqagent/config.db \ go test -count=1 ./... diff --git a/docs/zh/deploy-runbook.md b/docs/zh/deploy-runbook.md index fc824e2d..4996aca1 100644 --- a/docs/zh/deploy-runbook.md +++ b/docs/zh/deploy-runbook.md @@ -404,7 +404,7 @@ stage handler 入口自动加锁 + 锁不可重入所致,**插件侧问题** | 站 | 本地源 | 线上位置 | 构建 | | --- | --- | --- | --- | -| SDK 文档站 | `third_party/homeagent-sdk/site_build/` | `/vol1/docker/navi-data/sites/sdk` | 需 `tools/apidoc/build.sh`(§5.3 坑①) | +| SDK 文档站 | `third_party/hologramagentsdk/site_build/` | `/vol1/docker/navi-data/sites/sdk` | 需 `tools/apidoc/build.sh`(§5.3 坑①) | | introduce | `site/`(排除 `README.md`) | `/vol1/docker/navi-data/sites/introduce` | 零构建,源即产物 | 两站部署在**同一台** 106 的同一 `sites/` 目录下。 @@ -465,7 +465,7 @@ find grep sed sort tr wc head tail stat file 改完 SDK 文档的完整流程: ```bash -cd third_party/homeagent-sdk +cd third_party/hologramagentsdk # 1) 在 docs/guide/ 写文档 # 2) 在 mkdocs.yml 的 nav 里登记 ← 漏了这步站点里找不到 # 3) 重新生成(含 docs/api/* 与 llms.txt 同步) diff --git a/docs/zh/input-scheduler-design.md b/docs/zh/input-scheduler-design.md index b97a6cc9..51202fbc 100644 --- a/docs/zh/input-scheduler-design.md +++ b/docs/zh/input-scheduler-design.md @@ -32,7 +32,7 @@ > 分支:`feature/input-semantics` > 状态:**设计稿 v1**(待确认项见 §12,未确认处按 §12 的「默认取值」推进) > 影响面:`internal/agent/core`、`internal/agent/io`、`internal/sdk`(**仅内部**) -> 公开 SDK:**v1 不改**(`third_party/homeagent-sdk/sdk/` diff 必须保持为 0,理由见 §13) +> 公开 SDK:**v1 不改**(`third_party/hologramagentsdk/sdk/` diff 必须保持为 0,理由见 §13) --- diff --git a/docs/zh/kernel-modularization-design.md b/docs/zh/kernel-modularization-design.md index 25fa4c77..135e6c00 100644 --- a/docs/zh/kernel-modularization-design.md +++ b/docs/zh/kernel-modularization-design.md @@ -661,7 +661,7 @@ loadOne(name): #### 2.6.7.5 SDK 兼容性:一个必须记住的**例外** 本轮给公开 SDK 的 `PluginMgrAPI` 新增 3 个方法。按 SDK 的版本纪律 -(`third_party/homeagent-sdk/docs/versions.md`),"插件调用、内核实现"的 +(`third_party/hologramagentsdk/docs/versions.md`),"插件调用、内核实现"的 新增属**纯追加** ⇒ 存量插件不需要改、也不需要重编。 **但这次有一个例外,必须记住**: diff --git a/docs/zh/legacy-issues.md b/docs/zh/legacy-issues.md index 4acd9035..025eaeda 100644 --- a/docs/zh/legacy-issues.md +++ b/docs/zh/legacy-issues.md @@ -142,7 +142,7 @@ PluginContext(独立身份,共享管道)。 **证据**: - `internal/plugin/proc/plugin.go:134`(`Spawn`,逐插件起进程) -- manifest 无 `worker_group` 键(`third_party/homeagent-sdk/example/a2a/plugin.json` +- manifest 无 `worker_group` 键(`third_party/hologramagentsdk/example/a2a/plugin.json` 的键集合为 `author/description/entry/name/name_en/name_zh/platforms/tags/version`) **子任务**: @@ -196,7 +196,7 @@ PluginContext(独立身份,共享管道)。 **证据**: - `internal/plugin/proc/capability.go:149-150`(subscribe/unsubscribe 已授权) - `internal/plugin/proc/corehandler.go:46-58`(`EvtRingSubscriber` 接口) -- `third_party/homeagent-sdk/example/` 下 21 个 example 中无事件订阅样例 +- `third_party/hologramagentsdk/example/` 下 21 个 example 中无事件订阅样例 **子任务**: 1. 写一个订阅 `stage` / `tool_call` 事件的 example 插件,跑真实负载 @@ -503,7 +503,7 @@ SDK 的 `remotedevice/src/ha_json.c`(368 行)经实测有**三个对协议 1. **C 实现放哪里 → 留在主仓 `csrc/`。** 用户澄清:C 实现本来就是**替换**内核的 Go 实现(`csrc/` 是唯一权威源,Go 侧符号链接 + cgo 绑定,`codec_pure.go` 已降级为黄金对照的规格基准)。SDK 从头到尾**未被触碰** - (`git diff main -- third_party/homeagent-sdk/sdk/` = 0 行)。 + (`git diff main -- third_party/hologramagentsdk/sdk/` = 0 行)。 所谓「进 SDK」只对**跨端复用**(鸿蒙/嵌入式/C SDK 也想调同一份实现)才有意义, 而它们并不调用内核编解码层 ⇒ 该问题**关闭**,不作为待办。 2. **`ha_json.c` 复用还是新写 → 新写。** 见上(三个致命缺陷 + 架构正交)。 @@ -515,7 +515,7 @@ SDK 的 `remotedevice/src/ha_json.c`(368 行)经实测有**三个对协议 `docs/zh/c-core/llm-orchestration-c.md`)。基础设施门禁已建成(见上)。 下阶段扩大前,**三处需 jianf 拍板**(建议已附,见上): -1. **C 实现放主仓 `csrc/` 还是 SDK `third_party/homeagent-sdk/`?** +1. **C 实现放主仓 `csrc/` 还是 SDK `third_party/hologramagentsdk/`?** - 当前已在主仓 `csrc/`(`ha_codec.{c,h}` 是权威源,Go 侧符号链接过去) - 若 SDK / 鸿蒙 / C SDK 侧也要复用,需定同步机制;搬进 SDK 则要走 SDK 冻结流程 2. **`ha_json.c` 复用还是新写?**(复用会动 SDK 目录结构) diff --git a/docs/zh/toolcall-contract-and-sequence-design.md b/docs/zh/toolcall-contract-and-sequence-design.md index 928b5380..76d180ce 100644 --- a/docs/zh/toolcall-contract-and-sequence-design.md +++ b/docs/zh/toolcall-contract-and-sequence-design.md @@ -772,7 +772,7 @@ if ret, err := parent.ExecuteTool(name, args); err == nil { 且注释明写"main 上此值始终是**下一个未发布中版本**"; - 仓内**无 `release/v1.4.x` 分支**,最新 tag 是 `v1.3.12` ⇒ 1.4.0 这一中版本**尚未发布**,正是承接本次改动的那个版本; -- SDK `meta.Version` 同为 `1.4.0`(`third_party/homeagent-sdk/meta/meta.go`), +- SDK `meta.Version` 同为 `1.4.0`(`third_party/hologramagentsdk/meta/meta.go`), 两仓中版本已对齐 ⇒ **本次无需再次对齐动作**。 ⇒ 动作只是把 `SDKCompatibleVersion`(`internal/meta/meta.go:54`)从 `1.3.0` diff --git a/go.mod b/go.mod index 7e47d4af..49e755c0 100644 --- a/go.mod +++ b/go.mod @@ -51,4 +51,4 @@ require ( // (报 `used for two different module paths`)。所以主仓**所有** import 都已 // 统一改为新名,旧的 homeagentsdk 路径不再保留。 -replace github.com/JianFeeeee/hologramagentsdk => ./third_party/homeagent-sdk +replace github.com/JianFeeeee/hologramagentsdk => ./third_party/hologramagentsdk diff --git a/internal/agent/api/ha_codec.h b/internal/agent/api/ha_codec.h deleted file mode 120000 index bcb54a1d..00000000 --- a/internal/agent/api/ha_codec.h +++ /dev/null @@ -1 +0,0 @@ -../../../csrc/include/ha_codec.h \ No newline at end of file diff --git a/internal/agent/api/ha_codec.h b/internal/agent/api/ha_codec.h new file mode 100644 index 00000000..0fcf7f43 --- /dev/null +++ b/internal/agent/api/ha_codec.h @@ -0,0 +1,97 @@ +#ifndef HA_CODEC_H +#define HA_CODEC_H + +/* + * ha_codec — HomeAgent 内核编解码层(C 实现) + * + * ============================ 接口冻结声明 ============================ + * 本头文件是对外契约。函数签名、语义、返回值一经发布即为冻结接口, + * 修改必须走大版本流程(与 third_party/hologramagentsdk 同一冻结标准)。 + * + * 设计约束(见 docs/zh/c-core/llm-orchestration-c.md §四): + * 1. 只吃 const char* + **显式长度**,出数值/字节偏移 —— 不回调 Go、 + * 不传 Go 指针、不要求 NUL 结尾 + * 2. **不 malloc**:不需要出参缓冲区,需要「结果」时返回字节偏移/长度, + * 由调用方在自己的缓冲上切片(零拷贝) + * 3. 无状态、纯函数、线程安全(不写全局可变状态) + * + * 当前覆盖:L1 协议编解码层中的纯计算部分(第一个最小切片)。 + * + * ============================ 为什么签名带长度 ============================ + * 初版签名用 `const char*` 隐含「NUL 结尾」,于是每次调用都要: + * Go `C.CString` 分配+拷贝一遍 → C `strlen` 再扫一遍。 + * 实测这部分开销占单次调用的 80% 以上(cgo 边界本身仅 ~30ns, + * 而初版 ModelContextWindow 实测 175ns)。 + * 改为「指针 + 长度」后,Go 侧用 unsafe.StringData 直接传底层数组, + * 零分配零拷贝。这是设计约束第 1 条的字面要求。 + */ + +#include + +#include "ha_abi.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ==================== ABI 自述(供 Go 侧与日志核对) ==================== */ + +/* 返回 HA_CODEC_ABI_VERSION(major*1000 + minor)。 + * + * 存在的意义:Go 侧不该靠 `#include` 宏做版本断言(cgo 头文件里的宏在 + * 预处理后不可见),而要**运行期/测试期**能问 C 侧「你自称什么版本」。 + * 由 codec_cgo.go 绑定、codec_abiversion_test.go 与 C 侧宏三方比对。 */ +int ha_codec_abi_version(void); + +/* ==================== 模型上下文窗口推断 ==================== */ + +/* 无法从模型名推断时的哨兵值(与 Go 侧一致)。 + * + * 为什么返回哨兵而不是直接给兜底值:调用方需要区分「真推断出了」与 + * 「推断不出、只能兜底」——后者要打一行日志(窗口被低估必须可见), + * 并提示部署方用 per-source context_window 显式声明。 + * 若 C 侧直接返回兜底值,调用方就永远分不清这两种情况。 */ +#define HA_CODEC_CONTEXT_WINDOW_UNKNOWN (-1) + +/* 由模型名推断最大上下文窗口(token 数);推断不出返回 + * HA_CODEC_CONTEXT_WINDOW_UNKNOWN。 + * + * model 为 UTF-8 字节序列,**不需要 NUL 结尾**;model_len 是字节数。 + * model 为 NULL 或 model_len 为 0 时返回 UNKNOWN。 + * + * 匹配大小写不敏感(仅对 ASCII 字母做折叠;非 ASCII 字节按原样比较, + * 与 Go 侧对模型名的实际输入一致)。 + * + * 语义必须与 Go 侧 modelContextWindowPure 逐值一致(黄金对照测试钉死)。 */ +int ha_codec_model_context_window(const char *model, size_t model_len); + +/* ==================== token 估算与截断 ==================== */ + +/* 粗略估算 token 数。 + * + * 规则(与 Go 侧 EstimateTokens 一致):保守取 max(1, runeCount * 2)。 + * 按 UTF-8 **字符数**(rune)计,不是字节数。 + * text 为 NULL 或 text_len 为 0 返回 0。 + * + * 非法 UTF-8 序列按 Go 的 utf8 解码语义处理(每字节一个 rune), + * 保证与 Go 侧逐值一致。 */ +int ha_codec_estimate_tokens(const char *text, size_t text_len); + +/* 按 token 预算计算「应保留的字节数」。 + * + * ★ 返回的是**字节数**而非字符串:截断结果必然是输入的前缀, + * 调用方直接在自己的缓冲上切片即可(零拷贝、无出参缓冲区、无 malloc)。 + * + * 语义与 Go 侧 TruncateByTokens 一致:从开头保留 maxTokens/2 个 rune; + * 未超预算时返回 text_len(即整串)。 + * max_tokens <= 0 或 text 为 NULL/text_len 为 0 时返回 0。 + * + * 返回值保证 <= text_len。 */ +size_t ha_codec_truncate_by_tokens(const char *text, size_t text_len, + int max_tokens); + +#ifdef __cplusplus +} +#endif + +#endif /* HA_CODEC_H */ diff --git a/internal/kernelmod/all/facilities_sync_test.go b/internal/kernelmod/all/facilities_sync_test.go index 6531f807..3cc533ed 100644 --- a/internal/kernelmod/all/facilities_sync_test.go +++ b/internal/kernelmod/all/facilities_sync_test.go @@ -7,7 +7,7 @@ package all // 设施名同时存在于**两处**,且必须逐字一致: // // 内核:internal/kernelmod/facilities.go (模块 Provides 用) -// SDK:third_party/homeagent-sdk/sdk/facilities.go (插件声明用) +// SDK:third_party/hologramagentsdk/sdk/facilities.go (插件声明用) // // 它们**不能合并**:SDK 是独立发布的模块(外部插件依赖它), // 而内核的 internal 规则又禁止内部包被外部 import。 @@ -67,7 +67,7 @@ func extractFacilities(t *testing.T, path string) map[string]string { func TestFacilityNamesMatchPublicSDK(t *testing.T) { kernel := extractFacilities(t, filepath.Join("..", "facilities.go")) sdk := extractFacilities(t, filepath.Join("..", "..", "..", - "third_party", "homeagent-sdk", "sdk", "facilities.go")) + "third_party", "hologramagentsdk", "sdk", "facilities.go")) kernelVals := map[string]string{} // 值 → 内核常量名 for name, v := range kernel { diff --git a/internal/meta/vendored_sdk_test.go b/internal/meta/vendored_sdk_test.go index 2448a768..1c721774 100644 --- a/internal/meta/vendored_sdk_test.go +++ b/internal/meta/vendored_sdk_test.go @@ -23,7 +23,7 @@ import ( // 工作树里可能因为 vendoring 或本地试验而临时存在,那不算回归。 // vendoredSDKRoot 是 vendored SDK 在主仓里的位置。 -const vendoredSDKRoot = "third_party/homeagent-sdk" +const vendoredSDKRoot = "third_party/hologramagentsdk" // repoRoot 返回主仓根目录(本测试包在 internal/meta/,往上是两层)。 func repoRoot(t *testing.T) string { @@ -85,7 +85,7 @@ func TestVendoredSDKKeepsRequiredPackages(t *testing.T) { "meta", // 版本号:主仓与 SDK 版本一致性检查 "meta/meta.go", // ★ 不列 tools/hmapdev/yaegi:.gitignore 第 33 行忽略了 - // third_party/homeagent-sdk/tools/,它从来没被跟踪过。 + // third_party/hologramagentsdk/tools/,它从来没被跟踪过。 // 而 grep 到的 yaegi 引用是 **SDK 仓自己的文件**在互相 import // (tools/hmapdev/yaegi/interp.go → .../mocksdk),不是主仓依赖。 // 我第一版把它当主仓依赖写进来,判据直接假红。 diff --git a/internal/plugin/builtin_skill.go b/internal/plugin/builtin_skill.go index eaa34b3d..3322ae6d 100644 --- a/internal/plugin/builtin_skill.go +++ b/internal/plugin/builtin_skill.go @@ -23,7 +23,7 @@ package plugin // ## 来源 // // 源码树里约定 `<插件源码目录>/skill//SKILL.md`(与 SDK 示例 -// third_party/homeagent-sdk/example/editdoc/skill/office-tools 一致)。 +// third_party/hologramagentsdk/example/editdoc/skill/office-tools 一致)。 // 但内置插件是**编译期内置**,运行时没有源码树,所以 SKILL 正文必须 // 编进二进制(见各插件包里的 embed),由插件通过 SkillProvider 暴露。 // diff --git a/internal/plugin/lua_surface_test.go b/internal/plugin/lua_surface_test.go index 08122243..4cb9364c 100644 --- a/internal/plugin/lua_surface_test.go +++ b/internal/plugin/lua_surface_test.go @@ -17,15 +17,15 @@ import ( // 三份 sdk.lua(内核内嵌 / 工具链模板 / 项目副本)历史上各自漂移过, // 表现为「mock 里有的 API,内核运行时是 nil」这类静默失配。 // 事实源是 SDK 仓的 sdk/lua/sdk.lua,内核副本由 -// third_party/homeagent-sdk/scripts/sync-lua-sdk.sh 同步。 +// third_party/hologramagentsdk/scripts/sync-lua-sdk.sh 同步。 func TestLuaSDKMockSingleSource(t *testing.T) { - canonical, err := os.ReadFile(filepath.Join("..", "..", "third_party", "homeagent-sdk", "sdk", "lua", "sdk.lua")) + canonical, err := os.ReadFile(filepath.Join("..", "..", "third_party", "hologramagentsdk", "sdk", "lua", "sdk.lua")) if err != nil { t.Skipf("SDK repo canonical sdk.lua not available: %v", err) } if string(canonical) != luaSDK.SDKSource { t.Fatal("内核内嵌 sdk.lua 与 SDK 仓 sdk/lua/sdk.lua 不一致;" + - "请跑 third_party/homeagent-sdk/scripts/sync-lua-sdk.sh") + "请跑 third_party/hologramagentsdk/scripts/sync-lua-sdk.sh") } } diff --git a/internal/plugin/proc/bridge_sync_test.go b/internal/plugin/proc/bridge_sync_test.go index bf39348c..594dee12 100644 --- a/internal/plugin/proc/bridge_sync_test.go +++ b/internal/plugin/proc/bridge_sync_test.go @@ -62,7 +62,7 @@ func publishedPluginMgrMethods(t *testing.T, sdkPath string) []string { // 这挡住了"SDK 加了方法但忘记登记能力" ⇒ 那种方法会被按 CapCore 放行, // 或者直接"未知 method"。 func TestBridgeCoversEveryPublishedPluginMgrMethod(t *testing.T) { - sdkPath := filepath.Join("..", "..", "..", "third_party", "homeagent-sdk", "sdk", "plugin.go") + sdkPath := filepath.Join("..", "..", "..", "third_party", "hologramagentsdk", "sdk", "plugin.go") methods := publishedPluginMgrMethods(t, sdkPath) // SDK 方法名 → proc method 值(命名约定:StopPlugin → plugin.mgrStop) @@ -160,16 +160,16 @@ func TestBridgeDispatchesEveryPluginMethod(t *testing.T) { // 漏 ⇒ 新生成的 plugin.bin **编译不过**(procPluginMgr 不满足接口)。 // 这是最晚才发现的一环(编译期才报,且只在用户执行 hmapdev build 时暴露)。 func TestHmapdevTemplateImplementsAllPluginMgrMethods(t *testing.T) { - sdkPath := filepath.Join("..", "..", "..", "third_party", "homeagent-sdk", "sdk", "plugin.go") + sdkPath := filepath.Join("..", "..", "..", "third_party", "hologramagentsdk", "sdk", "plugin.go") methods := publishedPluginMgrMethods(t, sdkPath) - tmplPath := filepath.Join("..", "..", "..", "third_party", "homeagent-sdk", + tmplPath := filepath.Join("..", "..", "..", "third_party", "hologramagentsdk", "tools", "hmapdev", "templates", "proc_main.go.tmpl") src, err := os.ReadFile(tmplPath) if err != nil { // ★ 文件缺失必须 **skip 而不是 fail**(2026-10-17 CI 实测): // - // `third_party/homeagent-sdk/tools/` 在 .gitignore 里(SDK 仓自治, + // `third_party/hologramagentsdk/tools/` 在 .gitignore 里(SDK 仓自治, // 本仓不跟踪)。所以: // · 本机(完整 SDK 检出)有该文件 ⇒ 判据能跑 // · CI(只 checkout 本仓)没有该文件 ⇒ 原本 Fatalf ⇒ **CI 必红** @@ -178,7 +178,7 @@ func TestHmapdevTemplateImplementsAllPluginMgrMethods(t *testing.T) { // "Go build / vet / test" 和 "Build linux/amd64" 双红,把 PR 卡住。 // // skip 不是放弃检查:跨仓一致性由 **SDK 仓自己的判据**守着 - // (third_party/homeagent-sdk/tools/hmapdev/scaffold_stdout_test.go + // (third_party/hologramagentsdk/tools/hmapdev/scaffold_stdout_test.go // 等),那边是模板的真实归属地。本判据在本机开发时仍然生效。 t.Skipf("跳过:SDK 仓的 tools/ 不在本仓跟踪范围(.gitignore),"+ "跨仓一致性由 SDK 仓判据守护。缺文件: %v", err) diff --git a/internal/plugin/proc/e2e_template_test.go b/internal/plugin/proc/e2e_template_test.go index d279d709..57443df5 100644 --- a/internal/plugin/proc/e2e_template_test.go +++ b/internal/plugin/proc/e2e_template_test.go @@ -125,10 +125,10 @@ func buildPluginWithRealTemplate(t *testing.T, businessCode string) string { // 工具链在 SDK 1.2.0 起改名 hmapdev(原 plugindev)。两个目录都接受: // 旧检出(软链或旧版 SDK 仓)仍能跑本测试,新检出走新路径。 tmplDir := filepath.Join("..", "..", "..", - "third_party", "homeagent-sdk", "tools", "hmapdev", "templates") + "third_party", "hologramagentsdk", "tools", "hmapdev", "templates") if _, err := os.Stat(tmplDir); err != nil { tmplDir = filepath.Join("..", "..", "..", - "third_party", "homeagent-sdk", "tools", "plugindev", "templates") + "third_party", "hologramagentsdk", "tools", "plugindev", "templates") } dir := t.TempDir() @@ -142,7 +142,7 @@ func buildPluginWithRealTemplate(t *testing.T, businessCode string) string { mustWriteFile(t, filepath.Join(dir, rt.out), string(data)) } - sdkPath, err := filepath.Abs(filepath.Join("..", "..", "..", "third_party", "homeagent-sdk")) + sdkPath, err := filepath.Abs(filepath.Join("..", "..", "..", "third_party", "hologramagentsdk")) if err != nil { t.Fatalf("解析 SDK 路径: %v", err) } diff --git a/internal/plugins/all.go b/internal/plugins/all.go index 35b388d0..6d46b685 100644 --- a/internal/plugins/all.go +++ b/internal/plugins/all.go @@ -23,7 +23,7 @@ package plugins // // ## 判定标准:只有「必须用内部 SDK 能力」的才留在本清单(2026-10-19) // -// 内部 SDK(internal/sdk)比公开 SDK(third_party/homeagent-sdk/sdk) +// 内部 SDK(internal/sdk)比公开 SDK(third_party/hologramagentsdk/sdk) // 多出一批**不对外授予**的能力面。外部插件用的是 proc 桥的收窄能力集, // 这些接口在类型层就不存在(见 internal/plugin/proc/capability.go 的 // withheldCapabilities)。所以: diff --git a/internal/plugins/real_plugin_smoke_test.go b/internal/plugins/real_plugin_smoke_test.go index 157b41d9..1b5f0dea 100644 --- a/internal/plugins/real_plugin_smoke_test.go +++ b/internal/plugins/real_plugin_smoke_test.go @@ -71,7 +71,7 @@ func hostExecutableKind(path string) (string, bool) { // realPluginDir 返回某个 example 插件的 linux 产物路径。 func realPluginBinary(t *testing.T, name string) string { t.Helper() - root, err := filepath.Abs(filepath.Join("..", "..", "third_party", "homeagent-sdk", "example", name)) + root, err := filepath.Abs(filepath.Join("..", "..", "third_party", "hologramagentsdk", "example", name)) if err != nil { t.Fatalf("解析插件目录: %v", err) } diff --git a/internal/sdk/knowledge.go b/internal/sdk/knowledge.go index ea73f203..eb5c23c1 100644 --- a/internal/sdk/knowledge.go +++ b/internal/sdk/knowledge.go @@ -8,8 +8,8 @@ import ( // KnowledgeAPI 是内置插件使用的全量知识库接口。 // // 为什么不把多模态加进 pubsdk.KnowledgeAPI:那会改动 -// third_party/homeagent-sdk/sdk/ 的公开契约,而发布纪律要求 -// `git diff main -- third_party/homeagent-sdk/sdk/` 恒为 0 +// third_party/hologramagentsdk/sdk/ 的公开契约,而发布纪律要求 +// `git diff main -- third_party/hologramagentsdk/sdk/` 恒为 0 // (改动它等于一次 major bump + 完整的外部发版流程)。 // internal/sdk 明确不受此约束("内部实现自由"),且这里本来就是 // "内核侧接口 = 公共接口 + 内置插件额外能力" 的既有范式 diff --git a/internal/sdk/security_impl.go b/internal/sdk/security_impl.go index ca09d925..d72d6465 100644 --- a/internal/sdk/security_impl.go +++ b/internal/sdk/security_impl.go @@ -88,6 +88,7 @@ func (s *securityImpl) DeclareProfile(p pubsdk.SecurityProfile) error { }, SensitiveWords: p.SensitiveWords, ToolSensitiveWords: p.ToolSensitiveWords, + DetectInjection: p.DetectInjection, }); err != nil { return fmt.Errorf("security: declare profile %q: %w", name, err) } diff --git a/internal/security/profile.go b/internal/security/profile.go index 89d8e5a7..57a1e9ce 100644 --- a/internal/security/profile.go +++ b/internal/security/profile.go @@ -52,6 +52,16 @@ type Profile struct { // key 是工具名模式(支持尾部 `*`),value 是该工具额外追加的词。 // 语义**追加不覆盖** —— 见 SDK 侧同名字段的说明。 ToolSensitiveWords map[string][]string + // DetectInjection 让这一档开启内置的**提示词注入迹象**识别。 + // + // 与 SensitiveWords 的分工:敏感词是插件给的**数据**(它知道自己的 + // 哪些词敏感),注入迹象是内核内置的**形态**规则(ignore previous / + // 角色劫持 / 索要系统提示 / 伪造更高优先级)。 + // + // ★ 默认 false:失败即静默。注入识别会命中"扮演""你现在是"这类 + // 正常对话词,对所有插件默认开启会让常识对话充满误报; + // 由插件按自己的内容形态显式声明。 + DetectInjection bool // DisableNetwork 在这一档内禁止网络意图。 DisableNetwork bool // Sandbox 覆盖沙箱约束(零值 = 沿用全局)。 diff --git a/internal/security/runtime.go b/internal/security/runtime.go index cb38d9c5..0547cd4c 100644 --- a/internal/security/runtime.go +++ b/internal/security/runtime.go @@ -407,6 +407,10 @@ func (r *Runtime) effectiveContentForTool(profileName, toolName string) ContentP if ok && len(prof.SensitiveWords) > 0 { p.SensitiveWords = append(append([]string{}, p.SensitiveWords...), prof.SensitiveWords...) } + // 注入迹象:档位可为本轮显式开启(默认 false,理由见 Profile.DetectInjection)。 + if ok && prof.DetectInjection { + p.DetectInjection = true + } // 工具级追加(在整轮词表之上)。toolName 为空或档位没声明该工具 ⇒ 零影响。 if ok && toolName != "" && len(prof.ToolSensitiveWords) > 0 { for pattern, words := range prof.ToolSensitiveWords { diff --git a/scripts/make-package.sh b/scripts/make-package.sh index 8bd560e0..7ef73d72 100755 --- a/scripts/make-package.sh +++ b/scripts/make-package.sh @@ -29,7 +29,7 @@ make build-cli >/dev/null CGO_ENABLED=0 go build -o "$ROOT/build/homed-upgrade" ./cmd/homed-upgrade/ # hmapdev 来自 SDK 仓 if [ ! -x "$ROOT/build/hmapdev" ]; then - (cd third_party/homeagent-sdk/tools/hmapdev && go build -o "$ROOT/build/hmapdev" .) + (cd third_party/hologramagentsdk/tools/hmapdev && go build -o "$ROOT/build/hmapdev" .) fi echo "== 组装 $NAME ==" @@ -41,7 +41,7 @@ install -m 0755 "$ROOT/build/waiter" "$OUT/bin/waiter" install -m 0755 "$ROOT/build/hmapdev" "$OUT/bin/hmapdev" install -m 0755 "$ROOT/build/homed-upgrade" "$OUT/bin/homed-upgrade" # 只带 SDK 源码,排除构建产物。 -SDK_SRC=third_party/homeagent-sdk +SDK_SRC=third_party/hologramagentsdk mkdir -p "$OUT/sdk" (cd "$SDK_SRC" && tar -cf - \ --exclude='./example/*/rawfile' \ diff --git a/scripts/migrate-plugins-to-org.sh b/scripts/migrate-plugins-to-org.sh index d2358225..c784d175 100755 --- a/scripts/migrate-plugins-to-org.sh +++ b/scripts/migrate-plugins-to-org.sh @@ -42,7 +42,7 @@ for arg in "$@"; do done ROOT="$(cd "$(dirname "$0")/.." && pwd)" -EXAMPLES="$ROOT/third_party/homeagent-sdk/example" +EXAMPLES="$ROOT/third_party/hologramagentsdk/example" GH_ORG="${GH_ORG:-HologramAgent}" TOKEN="${GH_ORG_TOKEN:-}" diff --git a/third_party/homeagent-sdk/LICENSE b/third_party/hologramagentsdk/LICENSE similarity index 100% rename from third_party/homeagent-sdk/LICENSE rename to third_party/hologramagentsdk/LICENSE diff --git a/third_party/homeagent-sdk/go.mod b/third_party/hologramagentsdk/go.mod similarity index 100% rename from third_party/homeagent-sdk/go.mod rename to third_party/hologramagentsdk/go.mod diff --git a/third_party/homeagent-sdk/meta/meta.go b/third_party/hologramagentsdk/meta/meta.go similarity index 100% rename from third_party/homeagent-sdk/meta/meta.go rename to third_party/hologramagentsdk/meta/meta.go diff --git a/third_party/homeagent-sdk/meta/meta_module_test.go b/third_party/hologramagentsdk/meta/meta_module_test.go similarity index 100% rename from third_party/homeagent-sdk/meta/meta_module_test.go rename to third_party/hologramagentsdk/meta/meta_module_test.go diff --git a/third_party/homeagent-sdk/sdk/autostart.go b/third_party/hologramagentsdk/sdk/autostart.go similarity index 100% rename from third_party/homeagent-sdk/sdk/autostart.go rename to third_party/hologramagentsdk/sdk/autostart.go diff --git a/third_party/homeagent-sdk/sdk/events.go b/third_party/hologramagentsdk/sdk/events.go similarity index 100% rename from third_party/homeagent-sdk/sdk/events.go rename to third_party/hologramagentsdk/sdk/events.go diff --git a/third_party/homeagent-sdk/sdk/facilities.go b/third_party/hologramagentsdk/sdk/facilities.go similarity index 100% rename from third_party/homeagent-sdk/sdk/facilities.go rename to third_party/hologramagentsdk/sdk/facilities.go diff --git a/third_party/homeagent-sdk/sdk/kernel.go b/third_party/hologramagentsdk/sdk/kernel.go similarity index 100% rename from third_party/homeagent-sdk/sdk/kernel.go rename to third_party/hologramagentsdk/sdk/kernel.go diff --git a/third_party/homeagent-sdk/sdk/knowledge.go b/third_party/hologramagentsdk/sdk/knowledge.go similarity index 100% rename from third_party/homeagent-sdk/sdk/knowledge.go rename to third_party/hologramagentsdk/sdk/knowledge.go diff --git a/third_party/homeagent-sdk/sdk/llm.go b/third_party/hologramagentsdk/sdk/llm.go similarity index 100% rename from third_party/homeagent-sdk/sdk/llm.go rename to third_party/hologramagentsdk/sdk/llm.go diff --git a/third_party/homeagent-sdk/sdk/lua/sdk.lua b/third_party/hologramagentsdk/sdk/lua/sdk.lua similarity index 100% rename from third_party/homeagent-sdk/sdk/lua/sdk.lua rename to third_party/hologramagentsdk/sdk/lua/sdk.lua diff --git a/third_party/homeagent-sdk/sdk/memory.go b/third_party/hologramagentsdk/sdk/memory.go similarity index 100% rename from third_party/homeagent-sdk/sdk/memory.go rename to third_party/hologramagentsdk/sdk/memory.go diff --git a/third_party/homeagent-sdk/sdk/plugin.go b/third_party/hologramagentsdk/sdk/plugin.go similarity index 100% rename from third_party/homeagent-sdk/sdk/plugin.go rename to third_party/hologramagentsdk/sdk/plugin.go diff --git a/third_party/homeagent-sdk/sdk/plugin_test.go b/third_party/hologramagentsdk/sdk/plugin_test.go similarity index 100% rename from third_party/homeagent-sdk/sdk/plugin_test.go rename to third_party/hologramagentsdk/sdk/plugin_test.go diff --git a/third_party/homeagent-sdk/sdk/proxy.go b/third_party/hologramagentsdk/sdk/proxy.go similarity index 100% rename from third_party/homeagent-sdk/sdk/proxy.go rename to third_party/hologramagentsdk/sdk/proxy.go diff --git a/third_party/homeagent-sdk/sdk/proxy_test.go b/third_party/hologramagentsdk/sdk/proxy_test.go similarity index 100% rename from third_party/homeagent-sdk/sdk/proxy_test.go rename to third_party/hologramagentsdk/sdk/proxy_test.go diff --git a/third_party/homeagent-sdk/sdk/rawfiles.go b/third_party/hologramagentsdk/sdk/rawfiles.go similarity index 100% rename from third_party/homeagent-sdk/sdk/rawfiles.go rename to third_party/hologramagentsdk/sdk/rawfiles.go diff --git a/third_party/homeagent-sdk/sdk/secrets.go b/third_party/hologramagentsdk/sdk/secrets.go similarity index 100% rename from third_party/homeagent-sdk/sdk/secrets.go rename to third_party/hologramagentsdk/sdk/secrets.go diff --git a/third_party/homeagent-sdk/sdk/security.go b/third_party/hologramagentsdk/sdk/security.go similarity index 89% rename from third_party/homeagent-sdk/sdk/security.go rename to third_party/hologramagentsdk/sdk/security.go index 6257bc8b..82822524 100644 --- a/third_party/homeagent-sdk/sdk/security.go +++ b/third_party/hologramagentsdk/sdk/security.go @@ -114,4 +114,16 @@ type SecurityProfile struct { // "qq_get_*": {"客户名单"}, // } ToolSensitiveWords map[string][]string + + // DetectInjection 开启内核内置的**提示词注入迹象**识别。 + // + // 与 ToolSensitiveWords 的分工:词表是插件给的**数据**(它知道自己的 + // 哪些词敏感),注入迹象是内核内置的**形态**规则(ignore previous / + // 角色劫持 / 索要系统提示 / 伪造更高优先级)。 + // + // ★ 默认 false:注入识别会命中"扮演""你现在是"这类正常对话词, + // 默认开启会让常识对话充满误报 —— 由插件按自己的内容形态显式声明。 + // + // ★ 当前处置是 B 档:命中只**标记并警示**,不阻断。 + DetectInjection bool } diff --git a/third_party/homeagent-sdk/sdk/settings.go b/third_party/hologramagentsdk/sdk/settings.go similarity index 100% rename from third_party/homeagent-sdk/sdk/settings.go rename to third_party/hologramagentsdk/sdk/settings.go diff --git a/third_party/homeagent-sdk/sdk/stress_test.go b/third_party/hologramagentsdk/sdk/stress_test.go similarity index 100% rename from third_party/homeagent-sdk/sdk/stress_test.go rename to third_party/hologramagentsdk/sdk/stress_test.go