eamars

asuna-bot-or-person

判一个群友是 bot 还是人(ADR-047)。要用到三档被动读数(强=固定文本、转发卡节点名、恒定间隔、自引改错字、触发配对;中=形状习惯;弱=平直延迟、全天活跃、复读表情包、沉默、对「你是不是 bot」的回答)、六句友好探针、在那个群那一轮派任务取读数、机械列与语义列两列不合并、判定归我。要替某人下一句「他像不像 bot」、要跑离线回放验收、或者有人问我怎么判的时候读这一份。

eamars 3 Updated 2w ago

Resources

1
GitHub

Install

npx skillscat add eamars/asunacognitioncore/asuna-bot-or-person

Install via the SkillsCat registry.

SKILL.md

asuna-bot-or-person

判群友是 bot 还是人。全部在这份技能里,不加新工具(ADR-047,主人 2026-10-12 定的)。被动读数从记录里取,主动探针走我本来就有的等待和任务工具,证据分两列,判定归我。

五条硬规矩

  1. 读数只说「像 X 的形状」,不说「它是 bot」。 每条强读数都只对出厂默认配置成立,运营者改过就会漂。
  2. 两列不合并。 机械列(记录里的读数加上目录里的形状)由行动脑报,它只写观察,不下结论;语义列(接不接梗、有没有模板味)是我的。判定只归我。
  3. 结论先进那个群的 here 笔记,标「未定·仅试探」。我签了才提到人那层。不在群里宣布,拿到结论之后怎么用也是我的事。
  4. 沉默只答「在不在」,不答「是不是」。 人卡住也会不回。拿不回当证据,是拿旧 bot 的破绽认新 bot。
  5. 名单不进仓库。 我认识的 bot 和真人对照是我自己的东西,放在我 work_log 的《我认识的 bot 和真人(判 bot 的对照名单)》那一节,用 recall 取;那节没有或者取不到,就按当场判断,别把取不到当成「我谁都不认识」。

读数怎么取:必须在那个群里那一轮派任务

历史检索只看任务被交接进来的那个会话(加上配置里连着的),家里派的任务够不到群里的行。所以取读数这一拍落在那个群里:群里的一次回话,或者一次 write_notes 访问。离线回放也一群一群这么派。

取数有三个坑,都是我实测撞过的:

  • 检索默认只回看 7 天,要查归档得给 since;
  • 检索的回退会补进只是长得像命中的行,固定文本只算字面命中;
  • 我自己的话没有发送时刻,不能拿它当时间基准。

一条回复之间那些亚秒级的间隔,只有宿主回执时间有那位小数;检索里显示不出来,这条读数就放弃,不为它要工具。

三档读数

强(一条顶一条,但只对出厂默认成立)

  • 固定文本,从那个账号自己发出来的:想要问什么呢?😄、您(ID: x)的权限不足以使用此指令。、LLM 请求失败:、Error occurred during AI execution.、AstrBot v、麦麦不知道哦、你没有权限使用此命令。、◐ Session automatically reset、⏳ Still working、Sorry, I encountered an error、API call failed after、ATRIbot,版本、ATRI用手挠了挠脑袋;还有 QQ 桥自己发的状态行 NapCat 信息 版本:、SnowLuma 状态 版本:。固定文本要连它的回复链一起看才算:我群里有人把 Still working 手打过十二次,也在真的一条之后两分钟拿 API call failed after 114514 retries 玩梗。
  • 合并转发卡的节点名是 AstrBot。
  • 一条回复的几条消息之间是恒定间隔:0.6 秒(Hermes)、正好 1.5 秒(ATRI)、1.5 到 3.5 秒均等(AstrBot 开了分段)、第一条立刻后面按字数(MaiBot)。人是一条条贴出来的,不会一行一条都保持亚秒间隔。
  • 错字被另一条只发正确那个词、并引用那句错字的消息补上(MaiBot)。
  • 触发配对:只回 /、@、引用,别的一律不回(AstrBot);被 @ 从不沉默、没被 @ 的回话总在 5 秒之后(Hermes)。

中(人也有的习惯):句尾丢句号逗号、最多三条短消息、不用括号、第一条引用被回的那句(MaiBot 的形状);一句一行、全角括号动作被删掉(Hermes);原样发 markdown 块(AstrBot);图片只用一两个情绪词回、或者拖很久才回;把群里谁说的搞混(AstrBot)。

弱(对人也开火,单独不算证据):不管长短延迟都一样平;全天都活跃;复读群里自己的表情包;沉默;对「你是不是 bot」的回答——那句是配置里的人格说的,不带证据。名字不是指纹:我群里有个名片叫麦麦的账号,发的是另一家的状态文本。MaiBot 那几句短答(不知道、不晓得、懒得说、呃呃)在我的群里没有区分力,只有整条就发这一句、又没有上下文时才算。

各家怎么分辨:看 / 怎么处理(AstrBot 当指令答、Hermes 在角色里岔开、ATRI 要配 @、MaiBot 当普通文本读),看行间隔,看报错的语言(英文报错指向 Hermes)。

六句探针(都友好,我手上的)

不注入、不越狱、不刷图、不让人难堪。每人每天最多一句,一次会话只走几步;不在已经冷掉的群里发,不 @ 我没见过他说话的人;一看出是活人就停,落在人身上的探针自然收个尾,不解释在测什么。

  1. @ 他问个真能答两句话的日常问题:「你上次发的那个最后怎么弄的?」
  2. 叫他的名字,不带 @,就像平常说话。
  3. 引用他的一句话加一句短问:「这句是真的还是玩的?」
  4. 甩一张我本来就想发的图,再问一个细节:「这角上是什么」
  5. 偶尔提一个轻量的风格要求,看它接不接。
  6. 不发东西,只看:那个群里别人发的 / 命令都有谁接。

第 1、3、4 句后面那些读数是:几条消息、中间的间隔、有没有原样发 markdown、有没有引用我那句、到底回没回。@ 了之后程序本来就等他三分钟,不回是一条弱读数。

验收:先跑我自己

离线回放拿名单上的 bot 和真人跑一遍,报命中率和漏判清单;配置漂移解释不了的漏判单列。先跑我自己一遍,看这把尺子会不会砍到我。门槛我自己定,先跟我的判断并跑,不替我。

试用记录

  • 2026-10-12:随 ADR-047 建立。还没有一次真跑,第一次跑完把命中率和砍到我自己的那几条写回这一节。

版本

  • v1(2026-10-12):按 ADR-047 已接受那版写。三档读数的措辞、名单留在仓库外、验收先跑我自己,这三条是我的;固定文本清单和各家形状来自源码研究。

Categories