diff --git a/README.md b/README.md index d1577f0..e551686 100644 --- a/README.md +++ b/README.md @@ -193,6 +193,8 @@ internal/ ## 项目状态 +**v1.0.1** — 多模态 bugfix。插件 ABI/协议未变,1.0.0 编出的 `plugin.bin` 无需重编。修三类缺陷:(1)**看图假成功**——媒体块挂在 tool message 上不被模型当作可视内容(实测同一张图:tool message 0/3 读到、独立 user message 3/3),改为另起一条紧随其后的 user message 承载,落实插件文案一直在说的「注入后续对话」;(2)**新增多模态能力声明与回退链**——`core.llm.sources..vision/.audio` 声明源能否真正处理媒体(网关会静默剥离 `image_url` 后仍返回 200,带图与不带图 prompt_tokens 完全相同),不支持时自动走视觉源转写成文字,并落实了 `core.input_processing.image.fallback_provider` 这批早已注册却从未被读取的配置项;(3)**`see_video` 帧数语义反了**——`fps=1/N` 是频率不是数量,20s 视频请求 10 帧只得 2 帧、请求 1 帧反得 20 帧,改为 `ffprobe` 取时长 + `fps=N/时长` + `-frames:v` 硬封顶。 + **v1.0.0** — 外部插件从 C ABI 动态库迁移到**子进程 + 共享内存**。首个不再加载 `.so`/`.dll` 的版本,与 0.9.x 不兼容(存量插件须用新版 `plugindev` 重编为 `plugin.bin`,**业务代码零改动**)。消除 6 类此前在生产造成故障的缺陷:热重载失效(`DF_1_NODELETE` 让 `dlclose` 成 no-op)、崩溃隔离缺失(插件 panic 带崩 homed)、stage lost update(副本模型丢失 35.8~36.8%)、cgo 超时不可中断(线程线性泄漏)、`output_send` 假成功(模型收到「已发送」而消息未送达)、Windows 能力断层(只见 3 个 stage 字段且无法写回)。三面通信:stdio JSON-RPC(控制)+ 共享内存段(数据)+ 事件环(通知);权限梯度显式化为三道闸。RPC 往返 p50 24.1µs,崩溃到恢复 <1s。 **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 退场。** @@ -218,7 +220,7 @@ internal/ | **client** | waiter + 桌面 GUI | 连接远程 HomeAgent | - Linux:`.deb`(amd64/arm64)、`.rpm`(x86_64)、`.tar.gz` -- Windows:`HomeAgent_v1.0.0_{Full,Server,Client}_win64.exe`(NSIS 安装向导) +- Windows:`HomeAgent_v1.0.1_{Full,Server,Client}_win64.exe`(NSIS 安装向导) - 免安装:`homeagent-bin-_.tar.gz`(含 homed/waiter/initconfig) - 校验:`SHA256SUMS` diff --git a/README_EN.md b/README_EN.md index afecc8f..a1831be 100644 --- a/README_EN.md +++ b/README_EN.md @@ -179,6 +179,8 @@ External plugin development: see [homeagent-sdk](https://gitcode.com/JianFeeeee/ ## Project Status +**v1.0.1** — Multimodal bugfix. The plugin ABI/protocol is unchanged, so `plugin.bin` artifacts built for 1.0.0 need no rebuild. Three defects fixed: (1) **vision silently failing**—media blocks attached to a tool message are not treated as viewable content by the model (measured on one image: 0/3 read from a tool message, 3/3 from a standalone user message); media now rides its own user message placed immediately after, which is what the plugin's own wording ("injected into the following conversation") always claimed; (2) **new multimodal capability declaration + fallback chain**—`core.llm.sources..vision/.audio` declares whether a source can genuinely process media (a gateway may strip `image_url` and still return 200, with identical prompt_tokens with and without the image); when it cannot, media is transcribed to text via a vision-capable source, finally wiring up the long-registered but never-read `core.input_processing.image.fallback_provider` settings; (3) **`see_video` frame-count semantics were inverted**—`fps=1/N` is a *rate*, not a count, so a 20s video yielded 2 frames when 10 were requested and 20 frames when 1 was requested; now `ffprobe` measures duration and the filter becomes `fps=N/duration` with `-frames:v` as a hard cap. + **v1.0.0** — External plugins moved from C ABI shared libraries to **subprocess + shared memory**. The first release that no longer loads `.so`/`.dll`, and it is incompatible with 0.9.x (existing plugins must be rebuilt into `plugin.bin` with the new `plugindev`, though **business code needs zero changes**). Eliminates 6 classes of defects that had caused production incidents: hot-reload silently failing (`DF_1_NODELETE` making `dlclose` a no-op), no crash isolation (a plugin panic took down homed), stage lost updates (35.8~36.8% loss under the copy model), uncancellable cgo timeouts (linear OS-thread leaks), `output_send` reporting false success (the model was told "sent" while the message never went out), and Windows capability degradation (only 3 stage fields visible, no write-back). Three communication planes: stdio JSON-RPC (control) + shared memory segment (data) + event ring (notification); the privilege gradient is now enforced by three explicit gates. RPC round-trip p50 24.1µs; crash-to-recovery under 1s. **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.** @@ -204,7 +206,7 @@ External plugin development: see [homeagent-sdk](https://gitcode.com/JianFeeeee/ | **client** | waiter + desktop GUI | Connecting to a remote HomeAgent | - Linux: `.deb` (amd64/arm64), `.rpm` (x86_64), `.tar.gz` -- Windows: `HomeAgent_v1.0.0_{Full,Server,Client}_win64.exe` (NSIS installer) +- Windows: `HomeAgent_v1.0.1_{Full,Server,Client}_win64.exe` (NSIS installer) - Portable: `homeagent-bin-_.tar.gz` (homed/waiter/initconfig) - Verification: `SHA256SUMS` diff --git a/deploy/packaging/installer.nsi b/deploy/packaging/installer.nsi index 3f6bfb8..62d938b 100644 --- a/deploy/packaging/installer.nsi +++ b/deploy/packaging/installer.nsi @@ -14,7 +14,7 @@ # 此前硬编码 0.8.0 而 release 已到 1.0.0,装出来的包在「添加/删除程序」里 # 会显示错误版本(DisplayVersion 也取自这个宏)。 !ifndef PRODUCT_VERSION - !define PRODUCT_VERSION "1.0.0" + !define PRODUCT_VERSION "1.0.1" !endif !if "${VARIANT}" == "full" diff --git a/internal/meta/meta.go b/internal/meta/meta.go index 1d8d464..61378cf 100644 --- a/internal/meta/meta.go +++ b/internal/meta/meta.go @@ -10,7 +10,10 @@ var ( // 1.0.0:外部插件从 C ABI 动态库迁到子进程 + 共享内存。 // 这是首个不再加载 `.so`/`.dll` 的版本,与 0.9.x 不兼容(存量插件必须 // 用新版 plugindev 重编),故跃到主版本号。 - Version = "1.0.0" + // + // 1.0.1:多模态修复。仅内核与内置插件改动,插件 ABI/协议未变, + // 1.0.0 编出的 plugin.bin 无需重编。 + Version = "1.0.1" // Commit 是构建时的 Git commit hash。 Commit = "unknown"