前言¶
在 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;
- 带来源标识的
automationmessage 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 创建¶
- 打开一个已连接目标 workspace 的 Session。
- 从侧栏打开「自动化」,或在 Chat 与 Trajectory 旁选择它;新建对话页为空白时,先开始对话。
- 填写可独立理解的任务、schedule、IANA 时区、model target 与 permission boundary。
- 正式依赖定时运行前,先点「立即运行」,检查结果 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。