🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

悬浮球语音桥 Hyfwdnmd666/dsh-ai-ball

DeepSeek Harness
Hyfwdnmd66623 天前有提交已提供中文文档扫描:含敏感能力

让智能体通过悬浮球说话、做表情并读取你的输入

30.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/13 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Hyfwdnmd666/dsh-ai-ball
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/10/31·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 23 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-ai-ball(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/13 04:27:19

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令
查看扫描证据(共 1 处,展示前 1 条)
  • 执行外部命令来自配置/变量
    lib/index.js:733
    const child = spawn(cmd, {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 悬浮球语音播报
  • 情绪表情展示
  • 面板聆听输入

DSH 插件:用 ai-ball 悬浮球给智能体一张嘴(说话、情绪、面板、聆听)。

README

由 DeepSeek 最新模型翻译生成
dsh-ai-ball 给智能体一张嘴:让它通过 ai-ball 那颗悬浮球说话、做表情、听你打字。 ai-ball 是一个 Windows 悬浮球 —— 它把自己追加到 monologue.log 的文字逐字「说」出来、按 status.json 里的 mood 变色、把你打进输入框的话追加到 input.log。 球本身是哑的,它只认文件。 所以这个插件很薄:它不去操作球的窗口,也不 spawn Python,它只写球已经在看的那些文件。 这也是为什么任何进程都能当球的「大脑」。 你需要什么 1. ai-ball 本体(一个 Python 3.10+ 的目录,里面有 ball.py) 2. 把它跑起来(双击 start.bat,或 python ball.py) 插件本身不包含球,也不会替你安装它。 安装 dsh plugin --profile web add link:/path/to/dsh-ai-ball 或者从市场里装。
展开完整文档(README 剩余 1 节)
dsh-ai-ball

给智能体一张嘴:让它通过 ai-ball 那颗悬浮球说话、做表情、听你打字。

ai-ball 是一个 Windows 悬浮球 —— 它把自己追加到 monologue.log 的文字逐字「说」出来、按 status.json 里的 mood 变色、把你打进输入框的话追加到 input.log。
球本身是哑的,它只认文件。

所以这个插件很薄:它不去操作球的窗口,也不 spawn Python,它只写球已经在看的那些文件。
这也是为什么任何进程都能当球的「大脑」。

你需要什么

1. ai-ball 本体(一个 Python 3.10+ 的目录,里面有 ball.py)
2. 把它跑起来(双击 start.bat,或 python ball.py)

插件本身不包含球,也不会替你安装它。

安装

dsh plugin --profile web add link:/path/to/dsh-ai-ball

或者从市场里装。

配置

挂在 profile 的 cordis.patch.yml 里:

- id: dsh-ai-ball
name: dsh-ai-ball
config:
ballDir: C:\tools\ai-ball # 必填:放着 ball.py 的那个目录 startCommand: C:\tools\ai-ball\start.bat # 可选:ball_launch 用 cps: 50 # 可选:球的打字速度,用来估算 wait heartbeatMs: 3000 # 可选:心跳间隔,必须小于球那边的 stale_s files: # 可选:和球自己的 config.json 对齐 monologue: monologue.log input: input.log status: status.json

也可以走环境变量 AIBALL_DIR / AIBALL_START。

ballDir 故意没有默认值。 猜别人把球解压到哪儿了,正是插件往错目录里写文件的方式 ——所以它宁可报一个说清楚哪里不对的错。

六个工具

| 工具 | 作用 |
| ball_say | 说话。追加到 monologue.log,球逐字念出来。clear=true 先清屏 |
| ball_mood | 改球的脸:idle / thinking / nervous / smug / broken |
| ball_panel | 显示 / 收起独白面板 |
| ball_listen | 读你在球里打的字(input.log),只返回新的 |
| ball_status | 报告接线情况:文件大小、最后说了什么、心跳多旧、有没有在心跳 |
| ball_launch | 按配置的 startCommand 把球拉起来 |

两个会让你浪费一下午的坑

1. 心跳不是可选项 —— 插件会自己接管它

球把过期的心跳读成「大脑死了」并渲染成灰色,而那会盖掉 mood。

所以 ball_mood 不只是写一次 mood:它同时启动一个心跳,在插件加载期间一直刷。
这有两个后果:

- 第一次调 ball_mood 之后,球就再也不会因为你没在做事而变灰了(这是对的:插件活着 = harness 活着)
- 插件被卸载/重载时心跳会停(挂在 cordis 的 dispose 上,不会泄漏定时器)

一个只写一次 mood、不管心跳的实现,看起来像成功了,然后 20 秒后静默失效。

2. 如果 brain.py 在跑,它每三秒会把你的 mood 踩回 idle

brain.py 每隔几秒重写整个 status.json(心跳是它的)。
两个写者抢同一个文件,后写的赢。

想自己拥有球的脸,在 brain.json 里设:

{ "write_mood": false }

那样它只刷心跳,文件里现有的 mood 原样保留 —— 两个写者就能共存了。

3. ball_panel 为什么带一个序号

status.json 里的 panel 不是「当前该是什么状态」,是一条命令,panel_seq 是它的序号。
球只在序号变化时动一次。

不这么做的话,插件每几秒重写一次文件,就等于和你抢面板开关:你收起面板,它下一拍又打开。

带序号之后:

- 你手动开关面板一直算数(插件没改变主意,序号没变)
- 插件改变主意时把序号加一,球再执行一次
- 每次调 ball_panel 都是新请求(序号加一),所以「你关掉了,我要它再显示」是有效的,不会变成空操作

(球那边没有 panel_seq 的 panel 一律不执行 —— 没有序号就无法区分「你刚关掉」和「它一直这么说」,照做就是抢开关。)

ball_listen 为什么不会切坏中文

读游标按字节记,而且只推进到最后一个换行。

写入方可能被撞见写到一半:游标如果按字符算、或者用替换字符解码尾部,那半个 UTF-8 序列会变成 U+FFFD 并且永久留在游标后面 —— 内容就再也读不出来了。
停在最后一个换行,残缺的尾巴下次会重新读一遍,这是简单正确的做法。

(同一个 bug、同一个修法,ai-ball 的 Python 侧也有一份。)

它不做的事

- 不判断球在不在跑。 ball_status 报的是文件状态,不是窗口状态 —— 严格来说,一个没在跑的球和一个在跑但没人写的球,看起来是一样的。
- 不会只启动一颗球。 ball_launch 是只写的,重复调用会得到两颗球。
- 不渲染 Markdown。 球是嘴,不是文档。强调 会原样显示出来。
- 不会替你记住要开面板。 ball_say 不会自动显示面板 —— 面板收着的时候它照样写成功,只是没人看得见。要保证被看到,先 ball_panel(true)。

许可

MIT
预览分享卡片长什么样 ↓Hyfwdnmd666/dsh-ai-ball
分享 · DeepSeek Harness Hub
Hyfwdnmd666/dsh-ai-ball

让智能体通过悬浮球说话、做表情并读取你的输入

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部