mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-11-01 14:57:38 +00:00
## kernel-rtchild skill `resident_agents` 有 `resident-subagent-hygiene` skill,而 `rt_children`/`rt_transcript` 这一对整个**没有 skill** —— 模型只能靠 工具描述猜语义。 最容易踩的坑:**工具执行期不可打断**。模型一旦进入工具执行期就听不见 新输入,所以调工具前必须先用 outputch 说一句"稍等",否则用户会觉得 "它没在听我说话",而实际上它只是卡在一个 3 秒的命令里。 skill 覆盖:三种子 agent 的分界、通道必须成对且两侧声明 rt、打断语义、 只出文本(TTS 是插件的活)、窗口裁剪但原文保留、回收后用 rt_transcript 分段取、闲置零 token 但必须 stop、四条回收判据、五种常见错误对照表。 ## 两条判据(都来自一次真实事故) 生产 e2e 时我用 `input="..."`(工具声明的是 `inputch`)创建 rtchild: `strArg` 只查精确键名 ⇒ 读到空串 ⇒ **本应报"必须成对给出",但它成功了**, 还把 output 通道划给了新子。之后灌语音,该子轮次永远是 0。 症状是"通道注册了、插件活着、推送 ok、但子没反应", 与真因(参数名拼错)隔了三层。 - `WrongParamNameIsRejectedNotSilent`:写错必须失败、必须指名正确参数名、 必须无副作用(不建子、不动通道归属) - `PairAssignmentIsAtomic`:成对分配第二个失败时第一个必须回滚 (原来那句 `rollback()` 没有判据覆盖,是死代码) 变异验证:让代码对 `input`/`output` 静默兜底 ⇒ 第一条变红 (`参数名写错却创建成功了:[typo-child] —— 这会得到一个收不到输入的哑子`)。 go build/vet/gofmt 干净;go test ./... -count=1 -race = 62 ok / 0 FAIL / 0 RACE