dsh-session-superagent:会话级主理鱼,盯仓库有动静就唤醒 DSH

前言

在 DeepSeek Harness(DSH)里开一条会话处理 GitHub 上的 issue 和 PR,常见做法是人工盯着仓库,或另起 webhook、独立 agent 实例。前者费注意力,后者往往还要单独配凭证、预设和 PTC 模式。dsh-session-superagent 把「盯」和「办」绑在同一条会话上:轮询仓库变化,有值得处理的事项就用 Agent.followup() 唤醒当前会话;具体怎么修、怎么回,交给仓库里的 AGENTS.md。凭证走已登录的 gh CLI,不进模型上下文,API 返回统一脱敏。

下面介绍插件定位、能力边界、安装方式,以及一次典型运行长什么样。

这是什么

  • 名称:dsh-session-superagent(npm 包名相同)
  • 维护者:MYCF711
  • 分类:工作流(社区目录 skillhub.cn)
  • 当前版本:0.9.166(MIT)
  • 一句话:给一个 DSH 会话装上「主理鱼」——轮询 issue/PR,有动静叫醒本会话;醒来后按 AGENTS.md 主动推进,不需要独立实例或另建 agent 预设。

插件以当前 DSH 进程权限运行;安装前建议在 GitHub 阅读源码与 LICENSE,确认符合你的安全策略。

核心功能

读 GitHub 与凭证隔离

通过 github / repo_here 工具调用 API。token 由插件经 gh CLI 取得,不进入 workspace、不交给模型;输出经 redact() 处理(如 ghp_*、github_pat_*、PEM、Authorization 头)。写操作(POST/PATCH/PUT/DELETE)必须显式传 confirm: true,否则拒绝。

盯仓库与唤醒

工具 作用
watch_start / watch_status / watch_stop 登记 watcher,30–3600 秒轮询;有变化且会话 idle 时注入 followup
watch_ack 处理完打「主理鱼:已处理」标签(可自动创建),避免重复叫醒;支持 numbers: "12,13" 批量
filters 可按标签、指派人收窄;默认跳过机器人、草稿 PR、已关闭条目
batchLimit / maxWakesPerHour 单次最多铺开条数(默认 5,1–20);每小时唤醒上限(默认 6,1–60),可在面板「触发」页修改
activeHours 例如 09:00-23:00 才唤醒,支持跨夜 22:00-06:00
isolated 唤醒前开一次性 git worktree,改副本、推 zhuli/* 分支,不动主工作区;旧副本超过 3 天回收

唤醒链路:

GitHub 有新动态 → watcher 轮询 → Agent.followup(消息) → 会话跑一轮
                                     ↑ 空闲时才注入

watcher 状态写在 ~/.dsh/state/session-superagent/watchers.json;宿主重启后从该文件恢复。

界面与限流

  • 输入框下方同一行最左端:总卫星环(绿=主理中,琥珀=暂停,红=轮询失败);中间栏有「主理鱼」标签页(总览 / 判定 / 触发 / 设置)。
  • 除单条 watcher 的 maxWakesPerHour 外,还有会话级 12 次/小时(跨所有守累计)和 3 分钟冷却(主要吸收本机刚操作过的条目)。三层均为滑动窗口,不是整点重置。

环境要求

  • DSH ≥ 0.2.1-rc.5
  • Node ≥ 22.19(宿主自带)
  • 已登录的 gh CLI

安装与启用

DSH 插件需装进 profile,仅 npm i 不会让 DSH 加载(dsh.bundle.patch 由 profile 安装流程读取)。

# 默认 profile
dsh plugin install dsh-session-superagent

# 指定 profile / 锁定版本
dsh plugin --profile desktop add dsh-session-superagent@latest

也可在应用内插件市场搜索安装。客户机器升级:

dsh plugin --profile <profile> add dsh-session-superagent@latest

本地以目录 file: 安装时,新增文件需执行 pnpm run sync:profile,否则重启后可能整体不挂载。服务端改动需重启 DSH 宿主才生效(面板在版本不一致时会提示)。

典型用法

先做环境:gh auth login 确保 CLI 可用;在目标仓库准备好 AGENTS.md,写清 issue/PR 的处理规则。

  1. 在当前会话中调用 watch_start,登记要守的仓库与轮询间隔、过滤条件等。
  2. 在仓库新建或更新 issue/PR(或等待他人提交)。
  3. 轮询命中后,会话收到形如 【主理鱼】owner/name 有 N 条新动态:… 的消息;模型按 AGENTS.md 判断是修 bug、回评论、开 PR 还是提问。
  4. 处理完成后写回 GitHub;需要避免重复叫醒时调用 watch_ack。

排查「多久会被叫醒」可运行仓库内脚本(需本地有插件源码时):

node scripts/explain-latency.mjs

只读工具 watch_status、watch_doctor、watch_trace 支持 format: 'json',便于脚本集成;写工具成功/失败看返回里的 ok 字段。

适用场景与注意

适合:你已经在 DSH 里用会话维护某个 GitHub 仓库,希望有 issue/PR 动态时自动叫醒同一会话按项目规则干活,又不想把 token 塞进 prompt。

注意:

  • 依赖 轮询,延迟下限约等于轮询间隔,不是 webhook 实时推送。
  • 凭证失效时需重新 gh auth login;轮询会退避,不会自行恢复登录。
  • 同一会话可同时守多个仓库,但同一时刻只处理一批;多仓库同时有动静会按限流排队。
  • 开启 isolated 会在仓库下留 .dsh-zhuli/ worktree(默认最多 5 个,约等于工作树体积);目录会写入 .git/info/exclude,一般不污染 git status。
  • 两个会话守同一仓库且改同一文件同一区域,合并时可能出现 git 冲突,属正常语义。

社区插件目录与 DeepSeek / 幻方无官方从属关系;星标与 fork 数以 GitHub 页面为准(截至资料抓取时仓库为 1 star、1 fork)。

结尾

dsh-session-superagent 把 GitHub 仓库监听和 DSH 会话执行叠在一起:凭证留在插件侧,唤醒消息只通报「有新动态」,行为由 AGENTS.md 定调。若要进一步看 0.9 面向使用者的变更,可读仓库内 docs/whats-new-0.9.md。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜