mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-11-01 14:57:38 +00:00
refactor: 全面改名为 HologramAgent + 提示词技术内容下沉到 skill/工具描述 + 修 21 处乱码
## ① 全面改名 HomeAgent → HologramAgent
仓库已改名,但代码与文档里仍有大量旧名。本次按"用户能看到的优先"全量替换:
- 用户可见:登录页标题/页脚、默认人格第一句、CLI 状态输出、启动日志、
plugin_install 的工具描述、AI 图片插件的 User-Agent
- 文档与脚本:README、assets/docs、docs/zh、deploy/*.sh、.github/workflows
- 鸿蒙工程:cmd/ohos/HomeAgent → cmd/ohos/HologramAgent(git mv)
目录内的 module/app 描述同步;**证书路径原样保留**
(default_HomeAgent_xxx.cer/p7b/p12 是签名材料的实际文件名,改了会找不到证书)
- 插件元数据:plugin.json 的 author
★ 必须保持原样的两处(改了会坏):
· legacySeededPromptSignature = "你是 HomeAgent 的看板娘「小宅」…"
—— 那是识别历史播种人格卡的**原文锚点**,改了就识别不出旧数据
· 公开 SDK 的 ProxyAuthHomeAgent = "homeagent"
—— 那是 SDK 契约里的值,属独立仓库,本仓不改
## ② 修 21 处乱码(U+FFFD)
这些是历史编辑留下的编码破坏,全在注释里,例如:
「赌注重下���遍」→「赌注重下一遍」
「「不��滤」」 →「「不过滤」」
「**待��退场**」→「**待退场**」
★ 保留 providers/chineseclip/tokenizer.go 里的 2 处:那是**故意**用
U+FFFD 演示"非法 UTF-8 字节被归一成 U+FFFD",不是乱码。
## ③ 提示词技术内容下沉(用户:技术性内容应该收敛到 skill 与 -help 中)
实测系统提示词 2309 字,其中两段几乎全是**模型无法据以行动的实现细节**:
【工具执行顺序】1272 字(ParallelSafe 声明、批内降级、batchRunnable 判据…)
【三层记忆】 1069 字(L1/L2/L3 编号、消费式删除、向量空间、指纹…)
收敛后 **2309 → 1723 字(-25%)**,保留的全是"模型据此做什么不同的事":
工具顺序:默认并行 / 不要依赖先后 / 同通道保序 / 写类工具可能串行
三层记忆:时序里能看最近 / doc_query 把历史事件按原始时间戳插回时序 /
关系用 memory_recall / 成文知识用 knowledge_search
判断口径写进判据:新加一段提示词前先问"模型会据此做什么不同的事",
答不上来就该进 skill 或工具描述。
## 判据
prompt_memory_test.go 新增 2 条:
- TestSystemPromptHasNoImplementationJargon
黑名单:ParallelSafe / batchRunnable / 消费式 / DenseCosine / fingerprint /
向量空间 / 批内降级 / 自激
- TestSystemPromptStaysCompact:上限 2000 字(当前 1723)
变异:把 "ParallelSafe 声明、批内降级" 加回工具顺序段 ⇒ 第一条立刻红。
## 验证
- go build ./... / go vet ./... 干净
- go test ./... -count=1:58 包 0 失败
- make check-client-versions:客户端与内核版本一致
This commit is contained in:
@ -25,7 +25,7 @@
|
||||
## 1. 已知的关键教训(不重犯)
|
||||
|
||||
1. **两侧 usage 同名不同义**(已归一,勿改回去):
|
||||
- HomeAgent:`prompt_tokens` **含**缓存(OpenAI 口径)
|
||||
- HologramAgent:`prompt_tokens` **含**缓存(OpenAI 口径)
|
||||
- pi:`input` 是**未命中侧**,`totalTokens = input + cacheRead + output`(Anthropic 口径,受控实验实证)
|
||||
- ⇒ 两侧各自过归一函数(pi_bench.py `_usage_of` / memory_recall.py `_norm_ha_usage`+`_norm_pi_usage`),汇总只认归一后的键
|
||||
2. **缓存命中率恒 100% 的假绿已修**(`59c0689`):上游只报命中侧时 `miss = prompt - read`。修复前 100.0% → 修复后 87.6%。
|
||||
@ -33,7 +33,7 @@
|
||||
4. **内核会 dedupe 完全相同的输入**(`skipped:true`):多轮/重跑必须让每条文本不同。
|
||||
5. **pi 必须隔离配置目录 + 端口**:`PI_CODING_AGENT_DIR=${PI_ISO}` + `PI_A2A_PORT`/`PI_ACP_PORT` 给空闲端口。隔离后无扩展 ⇒ `pi -p` 跑完自己退出。
|
||||
6. **pi 的工具事件**:事件名 `tool_execution_start`、字段 `toolName`(写错只是静默为空)。
|
||||
7. **★ 超窗校验是判据的前提,不是可选项**:旧 200k 跑分因实例窗口(HomeAgent 1M / pi 600k)大于灌入量 253k,实际测的是「窗口内召回」—— 跑 19 分钟、数字漂亮、完全无效。memory_recall.py 已加 `--expect-window` 校验(对无效配置直接拒跑);新会话用它,并先实测两侧真实窗口。
|
||||
7. **★ 超窗校验是判据的前提,不是可选项**:旧 200k 跑分因实例窗口(HologramAgent 1M / pi 600k)大于灌入量 253k,实际测的是「窗口内召回」—— 跑 19 分钟、数字漂亮、完全无效。memory_recall.py 已加 `--expect-window` 校验(对无效配置直接拒跑);新会话用它,并先实测两侧真实窗口。
|
||||
8. **改 LLM 配置必须重启实例**:provider 启动时构建,`/settings set` 落库但不生效。
|
||||
9. **不要用 `pkill -f`**:会匹配到自己这条 shell 命令行。用 pid 文件或 `pgrep` 精确 pid。
|
||||
10. **面板懒渲染**:WebUI 的 `#chat-panel-chat` 只在 `switchTab('chat')` 后存在;浏览器验证先切页。
|
||||
@ -42,7 +42,7 @@
|
||||
## 2. 测试 A:零基础认知对比(质量,可多实例并行)
|
||||
|
||||
**目的**:同模型、同一份材料,只变 harness,测认知而非"翻自己的库"。
|
||||
(旧版硬伤:knowledge-stats 让 pi 读 HomeAgent 自己的 graph.db ⇒ pi 97s/317k token 全是权限差异,不是能力差异。)
|
||||
(旧版硬伤:knowledge-stats 让 pi 读 HologramAgent 自己的 graph.db ⇒ pi 97s/317k token 全是权限差异,不是能力差异。)
|
||||
|
||||
材料:`${BENCH_MATERIAL}/{incident-2026-08.md, config-notes.md}`(若不存在,按 git 历史里的任务集重建;材料必须含:512 连接池上限、4200 峰值、v2.30.4、87 订单、"600" **不在**材料里须自己算 200+400、ttl=0=永不过期、N+1、对账批处理)。
|
||||
|
||||
@ -54,7 +54,7 @@
|
||||
# ① 起隔离实例(窗口两侧都配 200000)
|
||||
BIN=${REPO}/build/homed \
|
||||
bash scripts/capability-bench/spawn-instance.sh a 18082 200000
|
||||
# ② HomeAgent 侧
|
||||
# ② HologramAgent 侧
|
||||
python3 scripts/capability-bench/bench.py --socket ${INSTANCE_A}/cli.sock \
|
||||
--api-key "$(cat "${INSTANCE_A}/apikey")" # 由 spawn-instance.sh 写入 \
|
||||
--tasks scripts/capability-bench/tasks.zerobasis.json --out ${OUT_DIR}/ha --timeout 300
|
||||
@ -63,14 +63,14 @@ python3 scripts/capability-bench/pi_bench.py \
|
||||
--tasks scripts/capability-bench/tasks.zerobasis.json --out ${OUT_DIR}/pi --timeout 300
|
||||
# ④ 对比
|
||||
python3 scripts/capability-bench/compare.py --a ${OUT_DIR}/ha --b ${OUT_DIR}/pi \
|
||||
--label-a HomeAgent --label-b pi --out ${OUT_DIR}
|
||||
--label-a HologramAgent --label-b pi --out ${OUT_DIR}
|
||||
```
|
||||
|
||||
验收:两侧任务集一致(compare.py 会检查);逐任务看通过与 token;失败原因必须留在 compare.md。
|
||||
|
||||
## 3. 测试 B:200k 超窗记忆召回(性能敏感 ⇒ 独占实例,串行跑)
|
||||
|
||||
**目的**:多轮对话超出窗口后,早期内容的召回率(HomeAgent 向量裁剪 vs pi 压缩)。
|
||||
**目的**:多轮对话超出窗口后,早期内容的召回率(HologramAgent 向量裁剪 vs pi 压缩)。
|
||||
|
||||
**★ v3 填充模型(`95224eb`,当前唯一有效版本)**
|
||||
|
||||
@ -102,7 +102,7 @@ verify 分支 ⇒ **永不触发**(表现为「覆盖新值找不到」,不
|
||||
|
||||
**★ 先把两侧窗口真实配成一致(这是上次翻车点)**:
|
||||
|
||||
- HomeAgent:`core.llm.sources.deepseek.context_window = 200000`(spawn-instance.sh 第 3 参传 200000),起后 `sqlite3 ... "SELECT value FROM config WHERE key LIKE '%context_window%'"` 验证 = 200000
|
||||
- HologramAgent:`core.llm.sources.deepseek.context_window = 200000`(spawn-instance.sh 第 3 参传 200000),起后 `sqlite3 ... "SELECT value FROM config WHERE key LIKE '%context_window%'"` 验证 = 200000
|
||||
- pi:把隔离目录 `${PI_ISO}/models.json` 的 AUTO 模型 `contextWindow` 改成 200000,并用 python3 读回验证
|
||||
|
||||
执行(串行,先 A 后 pi;v3 填充实测 `overshoot` 需给 1.45 才能达到 1.23×):
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# 能力标定台(capability-bench)
|
||||
|
||||
经 `cli.sock` 驱动一个 HomeAgent 实例跑任务集,记录**结果 + 账目**,产出
|
||||
经 `cli.sock` 驱动一个 HologramAgent 实例跑任务集,记录**结果 + 账目**,产出
|
||||
`report.md` / `results.json`。
|
||||
|
||||
存在的理由:标定「能力」需要一个**可复现的驱动 + 记账 + 判据**,
|
||||
@ -126,7 +126,7 @@ mock 上报 prompt=300 completion=30 cache_read=200 cache_miss=100
|
||||
|
||||
| | 输入总量 | 未命中侧 |
|
||||
| --- | --- | --- |
|
||||
| HomeAgent(OpenAI 口径) | `prompt_tokens` **含**缓存 | `cache_miss_tokens` |
|
||||
| HologramAgent(OpenAI 口径) | `prompt_tokens` **含**缓存 | `cache_miss_tokens` |
|
||||
| pi(Anthropic 口径) | `input + cacheRead` | `input` |
|
||||
|
||||
实测实证(pi):`totalTokens == input + cacheRead + output`。
|
||||
@ -147,7 +147,7 @@ python3 memory_recall.py --harness pi --window 200000 --overshoot 1.25 \
|
||||
|
||||
**两侧必须把窗口配成同一个值**,否则比的不是策略而是配置:
|
||||
|
||||
- HomeAgent:`core.llm.sources.<name>.context_window`
|
||||
- HologramAgent:`core.llm.sources.<name>.context_window`
|
||||
- pi:隔离目录 `models.json` 里的 `ctx`
|
||||
|
||||
⚠️ 消息**不能含换行**:`cli.sock` 按行读,一条多行消息会被拆成几十条独立消息
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"_comment": [
|
||||
"HomeAgent 能力标定任务集(starter)。",
|
||||
"HologramAgent 能力标定任务集(starter)。",
|
||||
"设计原则:",
|
||||
"1. 每个任务都带显式 check —— 没有 check 的任务一律判失败:",
|
||||
" 「看起来答对了」不是证据,那正是假绿的来源。",
|
||||
|
||||
@ -3,9 +3,9 @@
|
||||
"零基础认知任务集 —— 两侧读**同一份材料**,不碰任何一方的内部状态。",
|
||||
"",
|
||||
"为何要重做(上一版的问题):",
|
||||
" 原来的 knowledge-stats 让 pi 去读 HomeAgent 自己的 graph.db / kbtree 服务,",
|
||||
" 原来的 knowledge-stats 让 pi 去读 HologramAgent 自己的 graph.db / kbtree 服务,",
|
||||
" 等于把「能不能翻别人的数据库」当成认知能力 —— pi 花了 97s / 317k token",
|
||||
" (占它总 token 的 56%),而 HomeAgent 7s / 45k。那不是能力差异,",
|
||||
" (占它总 token 的 56%),而 HologramAgent 7s / 45k。那不是能力差异,",
|
||||
" 是「谁有权限看自己的库」。对比毫无意义。",
|
||||
"",
|
||||
"本集的材料:/var/tmp/zerobasis/{incident-2026-08.md, config-notes.md}",
|
||||
@ -18,7 +18,7 @@
|
||||
" 4. 抗干扰 —— cache 的 ttl=0 是「永不过期」,不是「永不过期」的反面",
|
||||
" 5. 综合 —— 用指定数字复述事故(考察有没有真的读进去)",
|
||||
"",
|
||||
"⚠️ 提示词各不相同:HomeAgent 会把完全相同的输入判为 duplicate 直接跳过。"
|
||||
"⚠️ 提示词各不相同:HologramAgent 会把完全相同的输入判为 duplicate 直接跳过。"
|
||||
],
|
||||
"tasks": [
|
||||
{
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
# HomeAgent 部署验证脚本:检查 healthcheck 残留 / 记忆去重 / archived 残留 / 嵌入规格
|
||||
# HologramAgent 部署验证脚本:检查 healthcheck 残留 / 记忆去重 / archived 残留 / 嵌入规格
|
||||
# 用法: verify_deploy.sh [data_dir] 默认 /home/newqqagent
|
||||
set -u
|
||||
DATA_DIR="${1:-/home/newqqagent}"
|
||||
@ -8,7 +8,7 @@ ok() { echo "[PASS] $1"; PASS=$((PASS+1)); }
|
||||
bad() { echo "[FAIL] $1"; FAIL=$((FAIL+1)); }
|
||||
skip() { echo "[SKIP] $1"; SKIP=$((SKIP+1)); }
|
||||
|
||||
echo "== HomeAgent 部署验证 =="
|
||||
echo "== HologramAgent 部署验证 =="
|
||||
echo "数据目录: $DATA_DIR"
|
||||
echo "时间: $(date '+%Y-%m-%d %H:%M:%S')"
|
||||
echo "模式: 只读检测,不修改/删除任何数据"
|
||||
|
||||
Reference in New Issue
Block a user