前言¶
在 DSH 里跑长回合的 AI 会话时,很多人会开着 Infuse 看剧或看电影。回合结束、工具审批、或 Agent 向你提问的瞬间,剧情往往还在走,容易错过关键情节。常见做法是手动切窗口、点暂停,既打断操作又容易忘。下面介绍的 DSH Infuse 伴侣(lunanfo/dsh-infuse-companion)在 DSH 侧监听会话事件,仅在 Infuse 确实处于播放状态时自动触发暂停,并在左侧栏提供状态面板与一键恢复,把「看剧」和「审 AI」拆成可预期的两步。
这是什么¶
lunanfo/dsh-infuse-companion 是维护者 lunanfo 发布的 DSH 插件,分类为工作流。它解决的核心问题:当 AI 会话需要你审阅、审批或回答时,自动暂停正在播放的 Infuse,避免剧情被无声跳过。插件附带左侧栏「Infuse 伴侣」入口、实时播放信息与可独立开关的自动暂停规则;Host 侧还提供同名 Agent 工具 infuse_companion,与 UI 共用一套逻辑。
核心功能¶
面板与控制¶
- 左侧栏入口与主面板:展示当前剧集/电影、播放进度(按本地时钟逐秒平滑推进)、PID,以及辅助功能与菜单项状态。
- 自动暂停后,面板顶部出现横幅;审完 AI 回复可点「看完了,恢复播放」继续看剧。
- 自动暂停记录:每次触发会记下原因、会话标题、暂停位置与时间。
三种自动暂停时机(可单独开关)¶
- AI 会话回合完成(
turn/end)。 - 需要工具/权限/计划审批(
approval/request、user-questions/request中 approval/plan-review 类 intent)。 - AI 调用
ask_user_question向你提问。
行为约束¶
- 仅主会话:默认忽略后台子代理的回合结束(
onlyRootSessions),减少看剧被打断;需要子代理也暂停时可关闭该项。 - 安全暂停:暂停前通过 Infuse 本地 Now Playing 读取状态,仅当
state === "playing"才触发;不把已暂停误当成播放,也不抢占窗口焦点。 - 冷却:
cooldownSeconds(默认 3 秒)避免连续触发。
Agent 工具¶
工具名 infuse_companion,子命令包括:status、pause、resume、toggle、configure、simulate_trigger、clear_history。
环境要求¶
- macOS(依赖
ApplicationServices辅助功能控制 Infuse 菜单)。 - Infuse for macOS 需正在运行。
- Xcode Command Line Tools(
xcode-select --install):首次使用会编译bin/infuse-ax;已编译的 arm64 二进制可自行放入bin/以跳过编译。 - DSH 0.2.x(需
plugin_manager与 Web GUI)。
首次使用需为 DSH 授予 macOS「辅助功能」权限。
安装与启用¶
插件以当前 DSH 进程权限运行,安装前建议浏览 GitHub 仓库 源码与 MIT 许可证。代码版本 1.0.0(package.json)。
方式一:本地目录(开发调试)¶
plugin_manager install_bundle target=/Users/<you>/githubcode/dsh/infuse-companion
方式二:从 GitHub 安装¶
plugin_manager install_bundle target=github:<your-github-user>/dsh-infuse-companion
也可在 DSH 中让 Agent 执行上述安装(需 plugin_manager 工具权限)。安装后左侧栏应出现「Infuse 伴侣」;图标或文案未刷新时,刷新页面或重启 DSH。
配置¶
配置写入 profile 的 cordis.patch.yml,也可在面板中开关并由 config editor 持久化:
- id: infuse-companion
name: '@local/dsh-infuse-companion'
config:
enabled: true # 自动暂停总开关
pauseOnTurnComplete: true # AI 回合完成时暂停
pauseOnApprovalNeeded: true # 需要审批时暂停
pauseOnQuestionAsked: true # AI 提问时暂停
onlyRootSessions: true # 仅主会话,忽略子代理
cooldownSeconds: 3 # 触发冷却,避免连续暂停
工作原理(简述)¶
- Host 监听 DSH 事件:
session/event(turn/end,跳过用户手动停止)、approval/request、user-questions/request。 - 触发时确认 Infuse 在运行,经本地 Now Playing HTTP(
_infuse-np._tcp→/nowplaying)读取真实播放状态。 - 仅
playing时调用插件自带的 Swift 辅助程序bin/infuse-ax,用AXPress切换 Infuse「播放/暂停」菜单项,不激活窗口。 - 暂停后约 360ms 复核状态,写记录并在面板提示恢复。
- 面板经鉴权路由
/infuse-companion/api与 Host 通信。
典型用法¶
- 在 macOS 上安装并启用插件,打开 Infuse 正常播放。
- 在 DSH 中开启 AI 会话;当回合结束、弹出审批或 Agent 提问时,若正在播放应自动暂停。
- 在左侧栏「Infuse 伴侣」查看进度与 PID,按需手动暂停/恢复或调整三项自动暂停开关。
- 审阅结束后点横幅「看完了,恢复播放」,或让 Agent 调用
infuse_companion的resume。
调试规则时可使用 simulate_trigger;需要清空历史时用 clear_history。
适用场景与注意¶
适合谁:在 Mac 上用 DSH 做智能体开发、且习惯边用 Infuse 边看本地媒体的用户;希望审批与提问时少漏剧情的场景。
限制(来自 README):
- 仅 macOS;暂停依赖 Infuse 上报的播放状态,接口异常时插件会跳过而不是盲按。
- 暂停实现为切换播放/暂停键,与 Infuse 状态强相关。
- 面板进度为本地时钟插值;在 Infuse 内拖动进度条后会重新对齐。
- 插件图标使用 Infuse 官方视觉元素仅供个人本地展示;公开发布需替换美术或取得授权。本插件与 Firecore / Infuse 无官方关联。
社区目录 SkillHub 插件页 与 GitHub 为独立信息源,与 DeepSeek / 幻方无官方从属关系;DSH 生态思路是「一切皆插件」,按需从目录或仓库安装即可。
结尾¶
DSH Infuse 伴侣把「AI 要你介入」和「Infuse 正在播」对齐成可配置的工作流:事件驱动、先读状态再暂停、面板一键恢复。若你符合 macOS + Infuse + DSH 0.2.x 的组合,可按上文 plugin_manager install_bundle 安装并在 cordis.patch.yml 或面板中微调规则。
- 目录页:https://www.skillhub.cn/plugins/lunanfo/dsh-infuse-companion
- GitHub:https://github.com/lunanfo/dsh-infuse-companion