Back to skills
SKILL.md
Night Shift
ASecurityUnattended overnight runs: while the user sleeps or is away for hours, the agent works through a written to-do list on its own — self-paced /loop wake-ups, one item at a time, sub-agents for the legwork, evidence and a commit for every 'done', the most conservative default for anything it would have to ask about, and a five-part report in the morning. 夜间无人值班:用户睡觉或离开几个小时,让 agent 按一份待办清单自己推进——/loop 自定节奏、一次一项、子代理分工、每项有证据和提交、要拍板的事先用最保守的默认值、早上交五段式报告。用户说「我要睡了 / 出门几小时,你自己接着做」「挂一晚上」「夜间值班」时使用。
- 75 stars
- 0 votes
- 0 copies
- 0 views
- Added November 7, 2026
Works with
Security analysis
100/100Pro scans all 2 files and shows the line behind each finding
npx -y skills add Cynthia-wlan9509/offline-game-revival --skill night-shift --agent claude-codeAre you the author of Night Shift?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/cynthia-wlan9509-night-shift)---
name: night-shift
description: "Unattended overnight runs: while the user sleeps or is away for hours, the agent works through a written to-do list on its own — self-paced /loop wake-ups, one item at a time, sub-agents for the legwork, evidence and a commit for every 'done', the most conservative default for anything it would have to ask about, and a five-part report in the morning. 夜间无人值班:用户睡觉或离开几个小时,让 agent 按一份待办清单自己推进——/loop 自定节奏、一次一项、子代理分工、每项有证据和提交、要拍板的事先用最保守的默认值、早上交五段式报告。用户说「我要睡了 / 出门几小时,你自己接着做」「挂一晚上」「夜间值班」时使用。"
metadata:
short-description: 夜间无人值班推进待办
---
# 夜间值班(Night Shift)
用户要睡觉或离开几个小时,想让 agent 在没人回答问题的情况下,自己把一份待办清单往前推。这套机制在 case C(一个停服手游的离线化项目)上跑过两整晚:开跑前人做两分钟检查,之后 agent 自己醒来、干活、记账、停下、写报告。
值班的人不叫醒老板,但每一笔都记在账上。
它不绑定游戏项目。只要有一份待办清单、每项能自动验证(测试、模拟器、截图、日志),就能用。
## 怎么开始
1. 把 [`templates/NIGHT-RUN.md`](templates/NIGHT-RUN.md) 复制进项目(建议 `docs/NIGHT-RUN.md`),把所有 `<占位>` 填掉,尤其是「绝对不做」一节。
2. 人过一遍下面的「开跑前检查」。
3. 在项目的会话里输入,**不给间隔**,让 agent 自己定节奏:
```
/loop 读 docs/NIGHT-RUN.md 并严格按它执行;每次醒来都重新读一遍它
```
之后不用管,回来看 `docs/NIGHT-REPORT.md`。
`NIGHT-RUN.md` 是指令本身。运行时 agent 自己写三个状态文件:`NIGHT-PLAN.md`(计划表,每项一行带状态)、`NIGHT-LOG.md`(一行一件事,带时间)、`NIGHT-REPORT.md`(停止前写的报告)。每次醒来都从这些文件恢复进度,不靠对话记忆,所以上下文被压缩也不会丢进度。
## 开跑前人做的检查(两分钟)
- **权限模式是 auto。** 不是的话,一个确认框就能把整晚卡死。
- **主会话模型**用平时的主力模型,不用最贵那档:整晚大部分是体力活和等待,最强模型的判断优势体现不出来,额度却烧得最快。子代理用便宜的:scout 用最便宜的,worker 用中档。
- **设备**:测试设备开着、在线;别的项目或用户自己在用的设备拔掉,或者在 `NIGHT-RUN.md` 里写明不许碰。
- **电源**:电脑插电。防睡眠 agent 自己会调,但合盖之类的操作要人自己避免。
- **git 基线**:项目最好已经是 git 仓库、工作区干净;不是的话 agent 第一次醒来会 init 并做基线提交,之后每晚都有能回退的点。
## 机制
**每次醒来的固定步骤**(按顺序,不跳):
1. 读 PLAN 和 LOG 最后几十行,弄清上次做到哪;查有没有子会话、子代理或后台命令还在跑。只读 PLAN 引用到的文档章节,不重读大文件。
2. 调 keep-awake,防止电脑睡眠。
3. 查额度。低于阈值(默认 15%)就只做收尾。
4. 查设备在线;不在线按 `NIGHT-RUN.md` 写的办法拉起,两次不行就只做不需要设备的事。
5. 看本地时间,过了截止时间就进停止流程。
**第一次醒来**:建基线(需要时 `git init`、写 `.gitignore`、基线提交),在 LOG 第一行记下开始时间、额度、基线哈希和设备;再从项目的状态文档生成 PLAN。每项写:优先级、做什么、完成标准(状态真的变了,而且重启后还对)、涉及文件、验证方式。排序:先验证「已写未验证」的,再做收益大且独立的新东西,依赖外部条件的放最后。
**执行规则**:
- 一次只开一项,PLAN 里同时只有一项 in_progress。
- 按分工派活:大范围搜索、读长日志、通读反编译产物给 scout;规格已定的实现、补测试、批量改表给 worker;主会话只做判断、定规格、收货和上设备验证。几次工具调用能做完的小活自己做,不拆。
- 派活要写全:目标、背景(文件和行号)、只许改哪些文件、完成标准、交付格式、时限。收货时自己重跑测试、抽查 diff、确认没越界改文件;子代理说「完成了」不算数。
- 并行会话最多两个,只给互不依赖、文件不重叠的实现项。构建脚本、补丁入口、存档结构和这几个状态文件只有主会话能改。
- 验收必须有证据:截图、日志片段或存档 diff,放进 `<证据目录>/<日期>/<事项>/`,路径写进 LOG。没证据就写「已实现,待验证」。
- 同一项连续失败两次,或在它上面耗了一小时,就标 blocked,LOG 里写现象、日志路径和猜测,换下一项。不在一个坑里转圈。
- 每完成一项提交一次,提交信息写清验证状态;新踩的坑追加到项目的坑记录。
- 省上下文:长输出先落盘再让 scout 摘要;大文件不整读;给子会话的 brief 自己写全,不写「见上文」。
- 需要用户拍板的事(资源来源、数值取舍、砍不砍功能、账号和协议):选最保守的默认值继续,记进报告的「待你决定」,不停下来等。
**绝对不做**:模板里是一张按项目填空的清单。至少要写:不碰哪些设备、不用哪些清数据或卸载类命令、哪些目录不许删、不 push 不发布不上传、不改系统设置、子会话上限和不许用的模型、不写「应该没问题」。改用户自己的数据之前先备份,确认备份在了再动。
**停止条件**(任一满足就停 loop):PLAN 全部 done 或 blocked;额度低于阈值;连续三次醒来没有任何事项状态变化;到了截止时间。
**报告**五段,每段要短:
1. 已验证:事项、证据路径、提交哈希
2. 已实现未验证:为什么没验上
3. 阻塞:现象、日志路径、猜测、建议用户怎么查
4. 待你决定:每条写出用了哪个默认值、备选是什么
5. 额度消耗、回来能直接用的产物路径、所有子会话和子代理的名字与状态
**醒来间隔与 noop**:有子会话、子代理或后台命令在跑时,只定一个 1200 秒左右的兜底唤醒,主要靠它们的完成通知叫醒;没有在跑的,做完一项马上做下一项,不为「看一眼」而醒。每次调 `ScheduleWakeup` 都如实填 noop:有事项状态变化才填 false。连续的 noop 会在界面上折叠成一串,用户一眼就能看出它在空转。
## 依赖的环境
下面这些都是 Claude Code 桌面版提供的能力。换到别的环境时缺哪个,按表里的办法退化。
| 能力 | 用来做什么 | 缺了怎么办 |
|---|---|---|
| `/loop`,不给间隔 | agent 自己决定下次什么时候醒 | 用固定间隔(如 `/loop 20m …`),或外部定时任务定时发同一句提示 |
| `ScheduleWakeup` | 安排下次醒来、标 noop、停止循环 | 同上;要停时在 PLAN 顶部写 `stopped`,之后每次醒来读到就直接结束 |
| `request_keep_awake` | 防止电脑睡眠 | 开跑前人手动关掉睡眠 |
| `get_usage` | 查剩余额度、决定是否收尾 | 开跑前人看一眼额度,在 `NIGHT-RUN.md` 里用「最晚几点 / 最多几项」代替额度阈值 |
| `start_session` | 开并行会话 | 退化成子代理 |
纯命令行版本里不能开并行会话:把并行实现项交给后台跑的 worker 子代理,其余规则不变(文件不重叠、最多两个、brief 写全、收货自己验)。另外,从自动唤醒的回合里开会话可能被应用拒绝;case C 两晚实际都只用了子代理。被拒一次就直接退化,不要反复重试。
## 两晚跑出来的经验
- **子代理会卡住。** 一个 scout 跑了 `cat > 文件` 却没给输入,一直在等标准输入;一个 worker 早上 8 点多开工、下午 1 点才交,中间多半在空等。每次醒来查一遍后台任务,超过时限的停掉;主会话手里已经有上下文的活,自己做更快。
- **开始时就记额度。** 第一晚开头没记,早上报告算不出这一晚用了多少。
- **用了用户自己的数据就要还原。** 测试时换掉了用户的存档:先备份、记哈希,停止前逐字节还原,再释放共用设备的登记。
- **用户中途改规矩要落到文件里。** 用户半夜醒来说「手机也可以用」「继续,别停」,就在 PLAN 里加一个带时间的新段落,原话照抄;不要自己推断「那别的应该也可以」。
- **随机点击压测(Android `monkey`)要限定包名,并关掉轨迹球和导航键事件**:`-p <包名> --pct-trackball 0 --pct-nav 0 --pct-majornav 0 --pct-anyevent 0`。模拟器上这些事件会触发系统语音搜索,没有应用接手,把系统进程弄崩,看起来像游戏闪退。
- **「已验证」只放有证据的。** 证据目录按事项编号,报告里直接给路径,用户早上能一项项点开看。
## 效果(case C)
- 第一晚 4 小时 25 分钟:模拟器上验证了 11 项,每项都有截图或日志和一次提交;派了 5 个 worker;结束时 5 小时额度窗口显示用了 51%。
- 另一晚在模拟器上跑随机点击压测,两轮各 3000 次,0 闪退。
Files in this skill
- SKILL.md
- templates/NIGHT-RUN.md
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.