mirror of
https://gitcode.com/JianFeeeee/homeagent-sdk.git
synced 2026-10-31 14:27:30 +00:00
## 背景 `example/commondev/rawfile/.gitignore` 写着 `*`:rawfile 里是随包资源 (可能是上百兆 node/pi 二进制),进版本库会让克隆变慢、每次升级产生 巨型 diff。**这是设计意图**,不是疏忽。 但代价很具体: 本地打包 → 包里 571 个 runtime 条目(工作区已备好资源)→ 冒烟通过 CI 打包 → 包里 0 个 runtime 条目(干净克隆没有资源) → 插件起不来 而两次构建的**日志都写着"成功"**。这类"本地绿、别处坏"我们吃过一次: TestHmapdevTemplateImplementsAllPluginMgrMethods 读了 gitignore 的文件, 本地绿、CI 红。 本次尤其危险:interrupt 的实现**同时**落在 sidecar.mjs(已进库)和 rawfile/runtime/*/sidecar.mjs(未进库)两处。只改前者,判据全绿、 包里的 sidecar 却还是旧的 —— 取消能力在发布版里根本不存在。 ## 判据做什么 不能要求 rawfile/ 必须有内容(干净克隆本来就没有)。但可以: · 有内容时,每个 CLI 目录必须有 sidecar.mjs 或 driver.json · pi/zcode 的 sidecar **必须**支持 interrupt · 没有内容时,用 t.Logf **大声说明**"此状态下打出的包不含 sidecar", 让这件事出现在测试输出里,而不是静默 ## 变异 删掉 rawfile/runtime/pi/sidecar.mjs 的 interrupt case → 判据报"打包后 commondev_agent_interrupt 会失效(源码改了但资源没同步)"
commondev
commondev plugin
Build
hmapdev build
Channels
入站与出站是分开登记的两件事:
| 方向 | API | 用途 |
|---|---|---|
| 入站 inputch | RegisterInputChannel(name, def) | 声明「谁会往这个通道注入输入」。凡是用 InjectText/InjectInput/InjectInterrupt*(source, "", ...) 注入的通道名都要登记** |
| 出站 output | RegisterOutputChannel(name, caps, desc, def, handler) | 声明 output_send__ 的回复发给谁;handler 收到 {payload,type,meta} |
def(ChannelDef)描述该通道在记忆计算层的行为:NoMemory: true = 该通道输入不进记忆; Cleaner = 计算层清洗后再向量化/提关键词(原文不改)。
只登记出站通道、却用同名通道注入输入时,内核会兜底登记同名 inputch 并在日志里告警。 兜底只为兼容老插件 —— 请显式登记,让「这是入站通道」成为插件的明确意图。
Install
Upload the .hmap file through the Plugin Manager API.