需求
设置 → 悬浮窗设置 → 「Agent 监听与接入」目前只有 Codex / WorkBuddy / CodeBuddy / Codeg 四家。希望新增 DSH(DeepSeek Harness),让它出现在这个列表里(显示接入状态 + 监听开关),悬浮窗也能显示 dsh 的会话状态(进行中 / 等待确认 / 完成)。
本次只求状态监听,不涉及账号切换、额度或 Token 统计。
环境
- workbuddy-switch v0.1.55,macOS arm64
- DSH:
dsh CLI 0.1.1-rc.2(npm @deepseek-ai/dsh)、DSH Desktop 0.10.0
- 数据目录:
$DSH_HOME,默认 ~/.dsh
现有实现(已读源码,供参考)
vendor/agent-companion/crates/agent-studio-core/src/settings.rs:pub const SOURCES: [&str; 4] = ["codex", "workbuddy", "codebuddy-ide", "codeg"]
- 内置适配器在
crates/agent-studio-core/src/adapters/{codex,workbuddy,codeg,ide}.rs
adapters/custom/ 已有一套声明式模板接入(docs/custom-agent-hooks.md),但设置页入口尚未开放,且需要目标工具支持「事件触发本机命令 + 把 JSON 写到 stdin」。我在 @deepseek-ai/dsh 包里没找到 hook / 事件回调配置,所以走自定义 Hooks 这条路大概率通不了,得靠内置适配器读 dsh 自己的落盘数据。
可行性线索:DSH 的会话是落盘的(我已只读验证)
$DSH_HOME/sessions/--<normalized-cwd>--/<session-id>/session.jsonl.zstd
- append-only JSONL,默认 zstd 压缩,且是多帧(首帧是可校验 header,后续为追加帧)——按
@deepseek-ai/dsh-session-persistence-jsonl 的说明,解码需要跨帧,不能只解第一帧
- 每个会话目录第一行是 header:
{"type":"session","version":0,"id":"session-<uuid>","createdAt":1786875482740,"cwd":"/path/to/project","delegationDepth":0,"agentPreset":"standard"}
- 注意:会话目录名有两种形态,
session-<uuid> 和裸 <uuid> 都存在,扫描时不能假设有 session- 前缀
- 另有
$DSH_HOME/storages/usage-stats-cache.json、$DSH_HOME/.dsh-usage-ledger.json(如果以后要做用量统计可以用,本次不需要)
事件 → 状态映射(从 dsh 包内提取的事件名)
| DSH 事件 |
对应动作 |
turn/start |
start |
approval/asked |
wait(reason: permission) |
approval/decided |
resume |
turn/end |
finish |
session/disposed、agent/disposed |
close |
辅助字段:项目名可直接取 header 的 cwd 目录名;会话标题可用 session/title;另有 tool/call、tool/result、assistant/chunk、user/message、agent/status 等事件可作辅助判断。
期望
- 「Agent 监听与接入」新增 DSH 一行(图标 + 状态 + 监听开关),交互与现有四家一致
- 悬浮窗能显示 dsh 会话状态,项目名取
cwd 目录名
- dsh 未安装或
$DSH_HOME/sessions 不存在时显示「暂不可用」(与 Codeg 现状一致),不要报错
- 读取保持只读,不要写入/修复 dsh 的会话文件
备注
提之前查过 issue 列表,没有 DSH / DeepSeek / Harness 相关的条目(#123「把 豆包 QODER之类的整合起来」已关闭且正文为空),这条不算重复。谢谢!
需求
设置 → 悬浮窗设置 → 「Agent 监听与接入」目前只有 Codex / WorkBuddy / CodeBuddy / Codeg 四家。希望新增 DSH(DeepSeek Harness),让它出现在这个列表里(显示接入状态 + 监听开关),悬浮窗也能显示 dsh 的会话状态(进行中 / 等待确认 / 完成)。
本次只求状态监听,不涉及账号切换、额度或 Token 统计。
环境
dshCLI0.1.1-rc.2(npm@deepseek-ai/dsh)、DSH Desktop0.10.0$DSH_HOME,默认~/.dsh现有实现(已读源码,供参考)
vendor/agent-companion/crates/agent-studio-core/src/settings.rs:pub const SOURCES: [&str; 4] = ["codex", "workbuddy", "codebuddy-ide", "codeg"]crates/agent-studio-core/src/adapters/{codex,workbuddy,codeg,ide}.rsadapters/custom/已有一套声明式模板接入(docs/custom-agent-hooks.md),但设置页入口尚未开放,且需要目标工具支持「事件触发本机命令 + 把 JSON 写到 stdin」。我在@deepseek-ai/dsh包里没找到 hook / 事件回调配置,所以走自定义 Hooks 这条路大概率通不了,得靠内置适配器读 dsh 自己的落盘数据。可行性线索:DSH 的会话是落盘的(我已只读验证)
@deepseek-ai/dsh-session-persistence-jsonl的说明,解码需要跨帧,不能只解第一帧{"type":"session","version":0,"id":"session-<uuid>","createdAt":1786875482740,"cwd":"/path/to/project","delegationDepth":0,"agentPreset":"standard"}session-<uuid>和裸<uuid>都存在,扫描时不能假设有session-前缀$DSH_HOME/storages/usage-stats-cache.json、$DSH_HOME/.dsh-usage-ledger.json(如果以后要做用量统计可以用,本次不需要)事件 → 状态映射(从 dsh 包内提取的事件名)
turn/startstartapproval/askedwait(reason: permission)approval/decidedresumeturn/endfinishsession/disposed、agent/disposedclose辅助字段:项目名可直接取 header 的
cwd目录名;会话标题可用session/title;另有tool/call、tool/result、assistant/chunk、user/message、agent/status等事件可作辅助判断。期望
cwd目录名$DSH_HOME/sessions不存在时显示「暂不可用」(与 Codeg 现状一致),不要报错备注
提之前查过 issue 列表,没有 DSH / DeepSeek / Harness 相关的条目(#123「把 豆包 QODER之类的整合起来」已关闭且正文为空),这条不算重复。谢谢!