dsh-automation:在全新 Agent Session 中按计划运行 Coding 任务

前言

在 DeepSeek Harness(DSH)里做开发,常见两类「稍后执行」的需求:一类是在当前对话里设个提醒,过一会儿回到同一条 Session 继续;另一类是让一份完整的 Coding 任务在固定时间或间隔里独立跑完,并且能查清每次用了什么配置、结果如何。

DSH Core Schedule 面向前者。若你需要后者——每次在全新 root Agent 与 Session 中执行已保存任务、留下可审计的运行记录——社区插件 titanwings/dsh-automation(GitHub 约 78 stars)提供了一条专门的工作流路径。下面按安装、配置与使用顺序介绍。

这是什么

titanwings/dsh-automation 由维护者 titanwings 发布,分类为工作流,当前版本 0.1.7,MIT 许可。插件把「完整任务 + 运行计划 + 权限边界」绑定在一起:用户或 Agent 在 DSH Web 或对话中创建、管理定时规则;每次真正 dispatch 的 occurrence 都会在全新 Session 中启动,不继承来源对话的历史,并写入持久的 run history。

与 DSH Core Schedule 的对比如下:

DSH Core Schedule dsh-automation
执行上下文 回到同一个 live Agent 创建全新的 root Agent 与 Session
输入 已有上下文中的 follow-up 已保存、可独立理解的完整任务
范围 当前 Session Log 一个 canonical DSH workspace
历史 对话事件 Definition revision 与 durable run record
最适合 Reminder、同对话继续处理 重复或单次的独立 Coding 任务

若任务依赖未写出的对话历史、中途必须等待人工批准,或应由文件、HTTP、进程状态而非时间触发,目前还不适合做成 automation。

核心功能

一个控制面,两种入口

DSH Web: 从侧栏或对话里的「自动化」Tab 打开控制面,可创建规则、暂停或恢复、立即运行、删除,并查看最近运行。新建对话页仍为空白时,侧栏会提示先开始对话,避免静默失效。

符合条件的 root Agent: 用自然语言描述需求即可。插件提供六个 scoped tools,Agent 只能管理自己当前工作区内的 automation,不能越界操作其他 workspace。

不需要单独维护 bot、daemon UI 或第三方 scheduler。

可读的运行计划

支持单次、固定间隔、每天和每周。每天与每周规则使用 IANA 时区;表单输入会规范化为经过校验的 RFC 5545 RRULE 后持久化。间隔调度最短五分钟,第一次运行在一个完整 interval 之后,不会在创建后立即触发。

独立的模型目标

Web 表单可跟随运行时全局模型,也可固定 provider/model 组合;固定时可使用该模型默认推理程度,或选择该模型公布的 effort 值。每次 run 的快照会保留创建时的 model target。

Agent tools 暴露相同字段:创建时省略模型字段会捕获创建 Session 的完整选择;将 providermodel 显式设为 null 则在每次运行时读取当时的全局选择。

干净的执行边界

每个 dispatch 的 occurrence 获得:

  • 新的 Session ID 与 fresh root Agent;
  • 保存的 prompt,而非来源对话历史;
  • 创建时捕获的 workspace、cwd、Agent preset、permission preset 与 model target;
  • 带来源标识的 automation message source(含 automation ID、run ID、scheduled time);
  • 基于真实 DSH turn end 的终端结果,而非仅「消息已送达」。

可解释的运行历史

Run 经历 queuedrunning,最终进入 succeededfailedskippedcancelled。每条记录保留 definition revision、prompt 与 target 快照、计划时间、结果 Session ID、summary 与结构化 error。修改 definition 会递增 revision;删除 definition 不会立刻抹掉 run records。

Agent 侧六个管理工具如下:

Tool 用途
automation_create 创建绑定当前 workspace 的规则,可固定模型与推理程度
automation_list 读取规则、下次 occurrence 与最近历史
automation_update 修改名称、prompt、cadence、model target、permission 或 active/paused 状态
automation_run_now 使用相同边界排队一次手动 occurrence
automation_runs 读取有限数量的 run history、error、summary 与 Session ID
automation_delete 删除 definition,保留 durable run records

当 Agent 创建或扩大未来无人值守工作时,插件会要求人工确认;只读查询与仅暂停规则的更新不增加此步骤。

安装与启用

插件面向 DSH Web profile,要求 Node.js 22.19 或更高版本。官方安装命令如下:

dsh plugin --profile web add github:titanwings/dsh-automation#v0.1.7

安装后重启 dsh web。若从 DSH 源码目录运行,将 dsh 替换为 pnpm dsh。版本 tag 保证可重复部署;使用已审阅的 commit SHA 亦可。

从本地 checkout 安装时,需先 pnpm installpnpm check,再以绝对路径执行 dsh plugin --profile web add /absolute/path/to/dsh-automation。仓库已附带构建完成的 Host 与 Web bundle,Git 安装无需额外构建步骤。

典型用法

从 DSH Web 创建

  1. 打开一个已连接目标 workspace 的 Session。
  2. 从侧栏打开「自动化」,或在 Chat 与 Trajectory 旁选择它;新建对话页为空白时,先开始对话。
  3. 填写可独立理解的任务、schedule、IANA 时区、model target 与 permission boundary。
  4. 正式依赖定时运行前,先点「立即运行」,检查结果 Session 与 run record。

让 Agent 创建规则

安装后,可向 root Agent 发出类似请求:

给当前工作区创建一个只读 automation,名字是「工作日回归分诊」。
每周一到周五 09:30 在 Asia/Shanghai 运行。检查最新本地测试证据,
识别回归并返回简短报告。不要修改文件。

README 中列出的适用场景包括:工作日回归分诊(read-only)、每周仓库健康报告(read-only)、单次延迟验证(read-only)、生成代码刷新(workspace-write)、维护修复窗口(workspace-write)。一条高质量任务应写清目标、证据来源、允许修改的范围、验证方式与停止条件,避免「继续刚才讨论的内容」这类依赖上下文的表述。

可选配置

cordis.patch.yml 提供保守默认值,可在 deployment profile 的 plugin row 中调整:

Option 默认值 含义
maxConcurrentRuns 2 当前 Host 的全局执行容量
runTimeoutMinutes 60 单次 run 的最大 wall-clock 时间
misfireGraceMinutes 15 Host 停机后允许 catch up 的最大延迟
historyLimit 200 每条 automation 持久保留的 terminal runs
archiveRunSessions false 是否从普通会话列表归档 terminal run Session

archiveRunSessions 设为 true 后,terminal run Session 会从普通列表归档,但 Automation 运行历史仍保留 Session ID、summary 与 error。当前 Harness 尚未提供 unarchive API,已归档结果只显示状态,不提供 Session 打开入口。

适用场景与注意

适合谁: 需要重复或单次、可独立表述的 Coding 任务在无人值守下执行,且希望每次运行在明确 workspace 与权限边界内、并留下可复查历史的开发者。

安全边界: Schedule 不是授权。Run 不继承来源对话的 history、inbox、grant 或历史 approval;规则仅支持 read-onlyworkspace-write,不接受无人值守 danger-full-access。每个 fresh Session 的 approval policy 为 never,需要交互式批准的工具会直接失败。Agent tools 绑定调用者的 canonical workspace,fresh Agent 仅允许一组精简的 Coding tools;管理 RPC channel 只接受 loopback authority。启用无人值守写入前,务必先用「立即运行」审阅真实行为。

运行权限: 插件以当前 dsh 进程权限运行,安装前应阅读源码与 MIT 许可证,确认任务描述与 permission boundary 符合你的安全预期。

当前版本边界(0.1): 不提供同 chat heartbeat、raw cron、无人值守 full access、对已有副作用 run 的自动重试、Git worktree 管理、多 workspace target、外部通知,以及外部副作用 exactly-once 保证。任务启动时 DSH Host 必须正在运行;0.1 不是操作系统 daemon,也不协调多 Host 争抢同一 storage directory。

结尾

dsh-automation 把「定时执行独立 Coding 任务」收进 DSH 插件体系:Web 与 Agent 共用一套控制面,每次运行在全新 Session 中完成,历史可查、边界可配。DSH 社区目录 SkillHub(skillhub.cn)收录了该插件条目;完整文档、设计与 issue 见 GitHub 仓库 titanwings/dsh-automation

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

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

小夜