ARTICLE · 1353946
我让WPS灵犀桌宠听懂了我的话
我让WPS桌宠听懂了我的话
大家好,我是墨云轩。
WPS 灵犀的桌宠"金小萌",很多朋友都见过:屏幕角落里一只白色小可爱,会跑会跳,偶尔卖个萌。但看得久了,我心里冒出一个念头——它能不能听懂我说话?我说"向左跑",它就向左跑;我说"投喂",它就开心吃东西;我问"今天天气怎么样",它还能张嘴回答。
这篇文章记录整个过程。比预想的曲折得多:程序写好了,它却时而灵、时而装死,最后一查,凶手居然藏在最想不到的地方。
一、先问一个问题:桌宠有没有"耳朵"?
拿到想法,我没有急着写代码,而是先列了三套方案:
- 探测隐藏接口
——看看官方有没有留下控制入口; - 自研一只语音桌宠
——完全自己画,但少了"官方那只"的灵气; - 模拟鼠标点击
——让它看起来像在动,但脆弱得一塌糊涂。
先走第一条路,结果挖到了宝:桌宠进程在本机悄悄开了一个 MCP 服务(端口写在配置文件里,还带鉴权),里面有 notify、command_send这类接口。换句话说,官方其实留了一扇门。
踩坑一:我一开始想走"捷径",直接往桌宠的数据文件里塞消息。写是写进去了,桌宠纹丝不动。翻了日志才发现——信箱通道压根没启用,真正的通道是 MCP。绕了半天,答案一直在门上写着。
二、给它装上"耳朵":离线语音识别
控制通道打通后,就差"听"了。我选了 Vosk 离线语音识别(中文小模型,约 44MB):不用联网、不花钱、不吃配置,机房的老电脑也能跑。
识别之后是"听得懂",我把指令分成三层:
- 动作层
:「向左跑」「跳个舞」「投喂」→ 直接让金小萌动起来; - 问答层
:「现在几点了」「今天天气怎么样」→ 本地回答,气泡+语音朗读; - 灵犀层
:「小萌问一下,帮我……」→ 转投灵犀对话框,让大模型干活。
这里踩了两个经典坑,一并记录:
踩坑二:Vosk 不支持中文路径。模型放在
E:\灵犀\下死活加载不出来,报错说"文件夹里没有模型文件"——报错和真实原因完全对不上。挪到纯英文目录,秒过。踩坑三:日志里的表情符号会崩程序。输出重定向到文件后,Python 默认用 GBK 编码写日志,一句"✅ 就绪"直接把程序送走。解法:程序开头加
sys.stdout.reconfigure(encoding="utf-8"),一劳永逸。
三、最费心思的:让短句"听得准"
跑通之后新问题来了:「向左跑」「投喂」这几个短词识别率忽高忽低,「现在几点了」被听成「吗问一下现在避免了」。
双识别器 + 拼音模糊匹配:第一层用"限定短语语法"识别器,候选词就那十几个,短句命中率高;一旦返回 [unk] 自动切开放语法兜底;最后加一层拼音模糊匹配——「抓衣衫」和「天气」拼音挺接近,容错能救回来。
另一个暗坑:程序朗读回答时,麦克风会"自听",把回答又识别一遍,陷入复读机循环。修法是三重保险——朗读期间暂停采集、朗读结束后再静默一秒等尾音播完、同一句话 8 秒内不重复回答。
四、真正的悬疑片:它为什么"装死"?
以上都搞定后,程序进入正式服役。然后诡异的事情发生了:它经常无声无息地消失。没有任何报错,没有任何崩溃日志,前一分钟还在好好识别,下一分钟进程就没了。
我做了能想到的所有检查:程序没有重启逻辑、事件日志里没有崩溃记录、换启动方式没用、多开实例互相顶掉……最后做了个对照实验才锁定嫌疑人——电脑里的安全软件"主动防御"。
它把"用户目录下运行的 Python 脚本 + 录音 + 联网"这个组合判定为可疑行为,直接终止进程:不弹窗、不记录、不商量。
把程序目录加入安全软件的信任区 / 白名单,问题立解。加入白名单后连续监测,进程稳定存活,再没消失过。
还有一个隐蔽的坑:电脑重启后,麦克风端点编号会变——原来写死的"麦克风 1"重启用就变成了空通道,录到的全是静音。解法是启动时自动探测:把每个麦克风都试录两秒,算音量,谁响用谁。
五、最终效果
整套程序开机自启、日志可查。现在每天开电脑,它听我指挥跑来跑去——生产力谈不上,但真的很解压。
写在最后
回看整个折腾过程,其实就四句话:
- 先找官方留的门,别硬撬锁
——探测永远排第一; - 识别不准就分层兜底
——语法限定、开放兜底、拼音容错层层接住; - 报错信息不一定说真话
——"找不到模型"可能是路径问题,"没有日志"可能是因为它死得悄无声息; - 程序"装死",先怀疑安全软件
——白名单是本机自动化绕不开的一课。
这次探索让我对"AI Agent 操作本机软件"有了实感:不是科幻,就是一层层排查、试错、拼起来的工程活。
简单试了试,有时还不太灵光!
我是墨云轩,热衷分享办公小技巧,边学习,边分享,每天进步一点点。















































































