Repository navigation
Releases
v1.78.0
群管理指令修好了:群主、管理员、号主发的指令不再没反应;只是看看的,群友也能用。
为什么「明明是管理员、发了没反应」:
- 号主在账号上亲手发的「欢迎 …」整条被跳过。号主与机器人共用一个 QQ 号时,入群欢迎为了不理机器人自己的回声,把这个号发的所有消息都挡在指令之外,号主怎么发都没反应。现在只跳过回声,亲手发的照常当指令
- 只认消息上带的身份。潜水清理、自动回复、违禁词、加精、奶龙纠正只看消息里实现端顺手给的身份,可实现端说不准时会写成普通成员(知弦 0.50 起干脆不带),真管理员就被当成群友、静默不理。现在消息上没说是管理时,按成员身份正经问一次(有缓存,同一个人十分钟内只问一回),入群欢迎原本就是这么做的
- 插件关着。指令没人接就什么也不回,看上去像坏了。现在号主(与 ctl.admins)发关着的插件的指令,会回一句「入群欢迎没开,发 /ctl on welcome 打开」
只看不动手的,群友也能用(踢人、禁言、提醒、放行、改设置仍只给群主、管理员与号主):
- 入群欢迎:「欢迎」看本群设置(口令模式的口令不给看)、「欢迎 记录」看验证留档;预览、放行、清除留档仍要管理员
- 潜水清理:「潜水」「潜水 60」看名单、「潜水 进度」「潜水 记录」「潜水 豁免」(只看名单)。群友查名单三分钟一次,且查到的不记作本群名单——「潜水 踢 1-20」按的序号仍是管理员自己查的那份,不会被群友换掉
- 自动回复:「自动回复」列表、「自动回复 看 <编号>」「自动回复 试 <一句话>」
- 奶龙的「记录」「测」本来就谁都能用
- 违禁词仍只给管理员看:把词表发在群里,等于机器人自己把违禁词说一遍
- 群友在潜水清理、入群欢迎里发了要管理员的指令(带前缀的「潜水 踢」「欢迎 放行」),回一句要谁来,不再没反应
老版本直接 acumen update 即可,不用改配置。本轮跑了全部单元测试,没有真机测。
v1.77.0
入群欢迎里的群名回来了,而且不用等。
为什么只显示群号:入群通知里的群名靠不住——老版本知弦不带,新版本(0.48.2 起)也只在它手边记着这个群的名字时才带;1.76.0 起为了不延迟,欢迎词只用到 {group} 时又不再去问 guild.get,于是缺了就只能拿群号顶上。
现在 acumen 自己维护一份群目录(每个账号加入的群叫什么、有多少人):
- 连上实现端时翻一遍
guild.list把群名记全;之后每条群消息顺手核对,群改名(guild-updated)立刻换上,退群(guild-removed、账号被移出)删掉;离线期间退了的群,下次连上翻完名单时清掉 - 群人数随进群、退群事件加减;记了超过半小时的,下次用到时在后台问一次
guild.get校正,不等它 - 落盘在
data/satori/guilds.json,重启后第一个进群的人就能看到群名 - 欢迎、验证、送别、提醒、超时各条提示里的
{group}都直接查这份目录,一个请求都不发;只有从没见过的群(刚加的新群)才限时问一次,问的结果记下,下次不用再问 - 自动回复的
{group}、潜水清理名单的标题、对话房间里给模型的群名也改查这份目录,不再每次现问 - 配合知弦 0.54.0(
guild.list/guild.get带上人数,需重启手机):连上时就记下每个群的人数,{member_count}也不用现问;原先知弦根本不给人数,这一项总是空的。没升知弦也照常工作,只是人数要等第一次用到时问 - 老版本直接
acumen update即可,不用改配置
v1.76.1
复查 1.76.0 的入群欢迎后补的两处:
- 「任意消息」模式下判断新人有没有说过话,原先在登记待验证名单之前。他的话恰好落在这两步之间时,两边会互相看漏,又会让他补一句。现在登记之后再看(消息那边是先记发言、再查名单),他的话落在哪个时刻都认得出
- 欢迎发送的工夫里他刚好算过时,那条欢迎原先没人负责撤回;现在照
join.recall_seconds照常撤 - 配套的知弦 0.53.3:重拉成员表改到后台,不再占着共用的定时线程;「A 邀请 B 加入了群聊」认的是 B,不再 @ 到邀请人
v1.76.0
入群欢迎不再等:人一进群就欢迎,只写了 {at} 的欢迎词有号码就发,一个查询都不问。
为什么会「说了五句才欢迎」:大头在实现端。知弦收到的入群通知只带新人的 uid,刚进群的人常常一时换不出 QQ 号,这条通知就被丢掉、等很慢的成员列表回调补发——新人往往已经说了好几句,acumen 这边才知道有人进群。知弦 0.53.1 / 0.53.2 改成:灰条带号码就直接用,换不出就挂起补发(立刻重拉成员表;新人先开口就在他那条消息之前补发),需要重启手机后生效。
acumen 这边的改动:
- 去掉合并欢迎(
join.merge_seconds)。合并要让新人在窗口里干等,等的工夫里一开口还会先收到「验证通过」、过一阵才来欢迎。旧配置里的这一项启动时自动删掉,合并提醒(verify.remind_merge_seconds)不受影响 - 资料按需取:昵称、群人数只在文案(含自定义占位符)里真用到
{name}{member_count}时才查,而且限时;没用到就不问。待验证名单里要用的昵称等欢迎发出去之后再在后台补。验证通过、答错、送别、超时这几条提示同样按需——原先「验证通过」每次都要先等一次群资料查询,且不限时 - 账号身份(罚不罚得动人)有缓存时直接用;没缓存时最多等 0.6 秒(原 2.5 秒),等不到照常发验证,处罚前再核一次
- 验证说明发出前说的话不算答错,也不回「还不对」。「说任意一句话」或早就知道口令的,悄悄算过:欢迎里不再附验证说明,也不先冒一句「验证通过」
- 入群事件比他的话晚到时(实现端认人慢了一拍),任意消息模式下他进群前 5 分钟内在群里说过话就直接算过,不用再补一句
- 本轮只跑了入群欢迎的 12 个单元测试,没有真机测进群
v1.75.0
搭话的人格多了一层「心思」:每轮开口之前,它先给自己写一行内心状态,再回话。
- 六个格子:场景(眼前是什么场面)、对话对象、动作(这会儿在干什么:只是看着、刚说完一句在等回应、边忙别的边瞄一眼)、状态(精神头)、心情(情绪,不是评价)、想法(心里最实的那句)。写成
[心]{…}一行,排在消息前面 - 这一行只给自己看:发送前被剥掉,不进群、不占条数;用了工具的那一轮也一样。模型偶尔把它抄进要发的消息里时,发送前的检查会拦下这一条并要求重写
- 落盘到
data/ambient/mind.json(每个群、每个私聊各一份),下一轮摆在群聊记录后面。它记得「我刚才对这件事是这么想的」,同一个人不会每轮重新做一次;半天前的念头不再摆出来 - 不是每次多调一次模型:就跟正文一起写,成本是每轮多几十个字的输出。判定那一步看不到这份心思——它只看要不要接这句话,不该被上一轮的念头带着走
- 判定那次看到的精神头(
mood_enabled)照旧;两件事分工不同:那是算出来的,这是它自己写的 - 新配置项
[ambient] mind_enabled,默认开;关掉就不再要求写,也不再摆出上一轮的 - 本轮跑了 267 个单元测试(含心思的解析:单行、缩进过的 JSON、写坏的记号、中文键、尖括号),没有为验证去调模型接口
v1.74.0
「供应商与模型」里加了 Magpie 那种测试:真发一句试试。
- 一家(或中转站)的连接卡片下面挑一个模型,点「发一句」,用它发一句「你好」、最多回 16 个 token,报回了什么、用了多久、花了几个 token。比「测试连接」多证明一件事:这个模型这把钥匙真能聊——额度没用完、模型名没写错、没被下线;失败时把接口给的原因原样带回来(额度不足、模型不存在、没开通……)
- 它会花一点点额度,所以只在亲手点的时候发:页面从不自动调它,按钮旁边照实写着。「测试连接」仍然只读
GET /models、不花钱 - 模型会先思考的(如 DeepSeek Flash)十几个 token 可能都花在思考上,这时写「接通了,没轮到正文」,照样算通
- 新增控制台接口
/api/oai/ping;没有新增配置项。本轮只对 DeepSeek 真发了一句(52 个 token)验证
v1.73.0
「供应商与模型」弹窗照 Magpie 的思路重做:一叠页面代替一长串折叠条,挑一家只要贴一把密钥,模型是一张勾选清单,每家都看得到「谁在用它」。
- 推入式导航:总览 → 一家 → 返回(HIG 的做法),Esc 与安卓返回键先退一层再关;换页有方向的滑入,减弱动态效果时不动。总览只有一个焦点——默认模型那一块,点进去是可搜索的单选表,按供应商分组、标出推荐,点一下即生效并退回
- 添加像 Magpie:认得的十几家按「国内厂商 / 聚合平台 / 海外厂商 / 本机服务」分组;挑一家只要贴密钥(旁边就是「去申请」),按「添加」之前什么都不存。添加时用这把密钥读一次
/models验一验:被拒就不存,拉到的模型列表当场就能勾。自己的中转站填地址与密钥,名字按域名自动起 - 测试连接:报延迟与模型数(「连接正常:312 ms,接口给了 86 个模型」)。只读
GET /models——Magpie 的测试会真发一句话,这里刻意不学,额度留给回群友。添加前也能拿还没保存的地址与密钥先测一下;第一次打开一家时自动拉一次列表 - 模型是勾选清单:默认全选、跟随接口(新出的模型自动出现);勾掉哪个就变成手选。能筛选、全选 / 全不选只作用于筛出来的那几个;手打接口没列的 id 也行。改动先攒着,底边一条「改了 N 处」再一次保存,返回或关闭时有未保存的改动会先问。手选里接口已经没有的模型会标出来
- 谁在用它:每家列出默认模型(及几间房跟着)、写死了它的房间、画图 / 写歌 / 拍片;删除前的确认里也写明会影响哪些地方
- 状态不只靠颜色:每家行尾是「就绪 / 缺密钥 / 缺地址」药丸,首字方块按名字取五档低彩色相;保存键只在真改了什么时可按
- 后端:
/api/oai/models改为测试连接(可带未保存的api_base/api_key,返回ms),/api/oai/provider换密钥时先验;/api/oai多了uses、available与供应商的kind。没有新增配置项 - 本轮跑了 oai 面板的单元测试与无头浏览器里的界面走查(窄屏与宽屏、深浅色),唯一出网的是 DeepSeek 的
GET /models,没有调用对话接口
v1.72.0
供应商与模型有了自己的界面:控制台「插件 → 智能对话」里点「配置供应商与模型」,一个弹窗改完接入,不必再翻 [oai.providers] 的原始表格。
- 一家一格:认得的十几家列成一张表,点一下就加;自己的中转站起个名字、填地址与密钥即可。每家一行状态点——绿 = 接上了、黄 = 缺密钥、灰 = 还没地址;插件页的摘要卡同时给出默认模型、默认接口与「几家就绪」
- 密钥只写不读:页面只知道「设没设」「来自配置还是环境变量」,永远不回显值;输入框留空表示不动它,存好之后框自动清空。密钥仍只落在本机
config.toml - 模型可以手挑:一家的模型列成一串,点 ✕ 少一枚、手打 id 回车加一枚;「拉取模型列表」只读
GET /models,不计费也不消耗对话额度。手选过就以手选为准,/%与画图、写歌、挑片的模型匹配都按这一份;点「恢复跟随接口列表」回到自动,刷新也不会把手选的那份冲掉 - 默认接口与默认模型都在同一个弹窗里:中转站的地址与密钥和
oai <地址> <密钥>是同一份数据;默认模型按供应商分组选,写的是[oai] agent_default_model,房间下一句就跟着换 - 配置新增
[oai.providers.<名字>].models(裸模型 id 列表,留空跟随接口);控制台映射表里也能看到这一格 - 新增控制台接口
/api/oai、/api/oai/provider、/api/oai/provider/remove、/api/oai/models、/api/oai/default、/api/oai/endpoint,写入一律走ctl那条事务 - 本轮跑了单元测试(260 个)与无头浏览器里的界面走查(加供应商、增删模型、换默认模型、拉取失败提示、两种宽度无横向溢出),没有为验证去调模型接口
v1.71.0
配合知弦 0.53.0:群管理与账号资料补齐的那一批能力,管家和搭话当天就能用上,不必再绕 capability 猜参数。
- 批量踢人与禁言:
mute/kick改成user_ids,一次最多点 20 个人(一伙广告号同时开口时不必一个个来);逐人过闸——群主、管理员、号主照样不罚,每人各记一笔管理账 - 群设置:
settings改入群方式(任何人 / 需要验证 / 不允许 / 答题审核 / 答对即可)、入群问题与答案、群介绍、发言频率、能不能被搜到、允不允许邀请;只改带了的项,什么都不带就读当前值 - 转让与解散:
transfer要confirm:true,destroy要再写一遍群号才动手——不可撤销的事多一道手 - 群详情与名册:
satori_group新增what=detail(人数与上限、群主、建群时间、我的身份、入群方式与发言频率这些设置)、what=members(名册一页,带身份、群等级、进群时间与最后发言时刻,谁潜水一眼看得出)、what=member(一个人:名册身份再接一份资料)、what=requests(还没处理的好友申请、入群申请与群邀请) - 账号资料:
profile一次改昵称 / 签名 / 性别 / 生日;status改在线状态(在线、离开、隐身、忙碌、Q我吧、请勿打扰) - 资料卡点赞回来了:知弦 0.53.0 用裸 SSO 通道重做了点赞,这里补上
like(1–20 次);从前因为按不动把这条从两端删掉的事不会再发生 - 跨会话转发与名片卡:
forward_to把已有消息原样转发到别的群或私聊(只替号主与本群群主、管理员办);send多了contact元素,能把一个群或一个人当名片卡推出去 - 好友申请也能批:
approve在本群加群申请之外接上好友申请(request_id 从what=requests来);私聊的动作表补上账号那几件与好友审批,群管理仍然只对群 - 收手的地方:重启与清缓存这类运维动作不再从聊天能力走——一句「重启试试」不该由模型按下真开关,号主在控制台或知弦模块里做
- 提示词、搭话 skill 与工具说明同步补上这些能力;本轮只跑了单元测试(257 个),没有为验证去调模型接口
v1.70.0
配合知弦 0.52.0:管家大人听得懂语音、读得到群荣誉榜,知弦新增的转发、名片卡等能力也能直接用上。
- 语音转文字:搭话收到群友的语音时,借 QQ 自带的「转文字」听写(知弦
internal/voice_to_text),窗口里写成「[语音:…]」,不再只知道「有人发了条语音」。最多等 15 秒,听不出照旧是「[语音]」;实现端不支持(老知弦、微信)时记一笔,不再每条都问 - 群荣誉榜:
satori_group新增what=honors,龙王、群聊之火、群聊炽焰、冒尖小春笋、快乐源泉各是谁、连了几天,群友问「谁是龙王」直接查,不占动作额度 - 知弦 0.52.0 的原生转发、名片卡、收藏表情、待处理申请都写在它的能力目录里,
satori_action的capability查得到,不用等 acumen 发版 - 群文件列表的上传时间随知弦 0.52.0 修正后能显示出来了(从前内核把它放错了字段)
- 没有新增配置项;本轮只跑了单元测试,没有为验证去调模型接口