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 的完整选择;将 provider 和 model 显式设为 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 经历 queued、running,最终进入 succeeded、failed、skipped 或 cancelled。每条记录保留 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 install 与 pnpm 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-only 或 workspace-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。

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

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

小夜