diff --git a/site/README.md b/site/README.md index 91ee23a5..469a36d7 100644 --- a/site/README.md +++ b/site/README.md @@ -152,9 +152,19 @@ print(d.get('name'), d.get('version'), d.get('description','')[:60])"; done ## 改内容前请核对事实 -页面上的数字都是**实测值**。**注意「在跑插件 36」是加载总数** -(16 内置 + 20 外部),不是"外部插件数" —— 早期版本写成「36 外部插件」是错的, -已更正。改动前建议重新取一遍: +页面上的数字都是**实测值**,不是估算。**「在跑插件」是加载总数,不是外部插件数** +—— 早期版本写成「36 外部插件」是错的。 + +2026-10-31 重新核对(生产日志 `homed_2026-10-31_10-05-16.log`): + +| 页面项 | 原值 | 实测 | 说明 | +|---|---|---|---| +| 在跑插件 | 36 | **30** | 插件迁移到 org 后外部插件减少 | +| 可用工具 | 340 | **285** | | +| Go 代码行 | 109k | **240k** | 原核对命令漏排除 `build/`,反而少算了 | +| LLM 适配器 | 9 | 9 ✓ | `server.lua` 是网关脚本不算厂商适配器 | + +改动前建议重新取一遍: ```bash # 在跑插件(以日志里实际 loaded 的为准,比数目录可靠) @@ -164,9 +174,13 @@ grep -h '\[plugin\] loaded:' $(ls -t ${HA_DATA}/log/homed_*.log | head -1) \ # 工具数(同上,日志里注册后的真实值) grep -ohE '[0-9]+ tools' $(ls -t ${HA_DATA}/log/homed_*.log | head -1) | tail -1 -# Go 代码行(排除第三方与鸿蒙工程) +# Go 代码行(排除第三方、鸿蒙工程、以及 build/dist 里的打包副本) +# ★ 必须排除 build/ 与 dist/:那里有打包进去的 SDK 副本,会把数字翻倍 +# (实测不排除时 516549 行,排除后 240056 行) find . -name '*.go' -not -path './.git/*' -not -path './.go/*' \ - -not -path './third_party/*' -not -path './cmd/ohos/*' | xargs cat | wc -l + -not -path './third_party/*' -not -path './cmd/ohos/*' \ + -not -path './build/*' -not -path './dist/*' -not -path './site_build/*' \ + -not -path './package/*' | xargs cat | wc -l # LLM 适配器(注意 server.lua 是网关脚本,不是厂商适配器,故为 9) ls internal/lua/adapters/*.lua | xargs -n1 basename diff --git a/site/index.html b/site/index.html index 545c83c6..b60c88b7 100644 --- a/site/index.html +++ b/site/index.html @@ -2028,7 +2028,7 @@
-

真正的 AgentOS,长这样

+

HologramAgent 是什么

隔离、调度、通信、资源。操作系统躲不开的四道题, 这里逐题给答案 —— 且每题都有能测的数字。 @@ -2037,31 +2037,31 @@

隔离 -

崩一个,不赔上全部

+

插件崩溃不影响内核

插件不在内核里,是另一个进程。崩了就把它注册的东西一并摘掉,其余照跑。重启退避 1s / 2s / 3s,5 分钟内第 4 次崩溃则停下等人。

调度 -

拦得住,也接得回

+

中断可以抢占,也能恢复现场

输入分能等与不能等。不能等的可抢占,被打断的现场压栈,稍后原样恢复。L4 内核独占,外部插件声明 L4 会被夹到 L3。

通信 -

三条道,各走各的

-

控制走 stdio,数据走共享内存,通知走事件环。变长内容只传偏移,两边映射到不同地址也能读。实测整段写入 + 读回 3.5µs。

+

三条通信通道各管一类数据

+

控制走 stdio 上的 JSON-RPC,数据走共享内存,通知走事件环。三类流量互不阻塞:大块数据不会把控制信令堵在管道里。控制面往返实测 3.5µs。

资源 -

记忆不会越用越肿

+

记忆会下沉,不会无限堆积

上下文按相关性取舍,最近 10 条恒受保护。低分下沉成文档,冷文档再蒸馏成三元组。有效工作区间上限 60 万 token。

并行 -

同轮的工具,一起跑

+

同轮工具默认串行,声明后才并发

一轮里的多个 tool_call 默认并发,但安全性前置:工具必须在自己的定义里声明并发安全,未声明的一律串行。批内只要有一个不安全,整批降级——不做收益不抵风险的「部分并发」。同通道输出仍严格保序。

@@ -2075,7 +2075,7 @@
01 -

内核零 IO,只碰调度

+

内核不碰 IO

内核不读文件、不发网络、不碰硬件。它只做三件事: 编排、记忆、调度。外面的一切 —— 消息、文件、网络、设备 —— @@ -2221,7 +2221,7 @@

02 -

部署,从未如此便捷

+

部署是拷一个文件

插件是静态编译的单个文件:目标机上没有 Go、没有 libc、 没有容器、没有运行时,拷过去就能跑。 @@ -2264,7 +2264,7 @@

03 -

数据如水,随流,随改,随走

+

大块数据走共享内存,不序列化

控制信令走 stdio,真正的数据走一块共享内存。 变长内容只传一个相对偏移,两边 mmap 到不同地址也能各自解引用。 @@ -2354,7 +2354,7 @@

04 -

轻重缓急,各归其位

+

输入分两类,中断分四级

输入走两条路。排队的没有级别 —— 什么都能插它前面; 中断的带级别 L1–L4,级别高的可以抢占级别低的。 @@ -2456,7 +2456,7 @@

05 -

忙时,有人替你接住

+

积压的消息由驻留子 agent 接手

主 agent 被长任务占住、积压又够多时,内核把这些消息转给一个驻留子 agent。能当场办的就办了; 非等主 agent 不可的,立刻回一句「忙碌中,请稍候」。 @@ -2544,7 +2544,7 @@

-

三层记忆:从「刚才说了什么」到「三年前说过什么」

+

三层记忆:上下文、文档、图数据库

不是一个大向量库包打天下,而是三层各司其职、逐层下沉。 蓝 / 青 / 金三色对应的就是这三层。 @@ -2588,14 +2588,14 @@

-

媒体也是一等节点

+

媒体是记忆节点,不是附件

图片、音频不是附件,而是三层里的一类节点:内容寻址(相同字节只存一份)。 媒体不单独记引用账本 —— 删掉持有它的记忆块才删内容,与文本块同一套规则。

-

图片靠自己的向量被检索

+

图片按自己的向量检索

图像是真正的记忆块,不是「描述文本 + 可淘汰的 blob」。 旧实现靠视觉模型生成的描述当索引,现已弃用 —— @@ -2603,7 +2603,7 @@

-

统一多模态空间

+

文本和图片在同一向量空间

文本与图像落在同一向量空间(默认 Chinese-CLIP): 可以用一句话搜图,也可以用图找记忆。 @@ -2612,7 +2612,7 @@

-

场面涌现:同一场合,记忆自己回来

+

场面识别:同类输入重复出现才成为场面

三层记忆按字面相关性召回——你得说出相近的词才想得起来。 场面记忆补上另一半:按场合召回。同一个场合再次出现, @@ -2620,14 +2620,14 @@

-

没人声明,自己长出来

+

场面可以自行涌现

每轮交互只采集可观察的信号:在哪个通道、跟谁、在用什么工具、聊什么词、什么时段。 这组指纹反复重合时,一场「场面」就自己成形了——不需要人工标注。

-

只发生一次的不算场面

+

重复两次才算一个场面

同类场面出现第二次才被认定会重复。 一次性的交互不建场面,否则图库里会堆满只发生过一次的事, @@ -2635,7 +2635,7 @@

-

参与与否,由插件声明

+

插件声明自己是否参与场面识别

通道可用 ScenePolicy 声明是否参与场面识别(默认参与)。 纯内部信号(内核自循环、心跳)可以显式退出,不在记忆里留下脚印。 @@ -2649,7 +2649,7 @@

-

一条消息进来之后

+

一条消息进来之后发生什么

输入先过调度器,再进处理管道。全程 7 个阶段钩子。

@@ -2753,9 +2753,9 @@
-
36
在跑插件
-
340
可用工具
-
109k
Go 代码行
+
30
在跑插件
+
285
可用工具
+
240k
Go 代码行
9
LLM 适配器
@@ -2764,7 +2764,7 @@
-

跑起来

+

运行

依赖 Go 1.25+ 与 CGo(sqlite3)。内核需 Linux;Windows 上 homed 跑在 WSL2 里,仅需构建 waiter.exe。 @@ -2790,7 +2790,7 @@ echo "你好,记住我喜欢喝咖啡" | ./build/waiter

-

开箱可用的插件

+

可用插件

外部插件经 hmapdev 构建为独立二进制,可单独装卸、热重载。点任意插件看它能做什么。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- SDKexample/editdoc↗ + GitHubHologramAgent/editdoc↗

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

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

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

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

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

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

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

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

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

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

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

- SDKexample/qq↗ + GitHubHologramAgent/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↗ + GitHubHologramAgent/recoverydiag↗
rssv1.1.0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

- SDKexample/luademo↗ + GitHubHologramAgent/luademo↗
@@ -3021,7 +3021,7 @@ echo "你好,记住我喜欢喝咖啡" | ./build/waiter
@@ -3064,7 +3064,7 @@ echo "你好,记住我喜欢喝咖啡" | ./build/waiter