无人值守跑通宵,早晨收审计简报
28.2/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add liyixuan201211/nightshift该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
装得上吗[实装验证]—
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →数据截至 2026/10/05·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 无人值守长时运行
- 执行前签清单
- 失败自动回滚
让智能体无人值守跑上数小时,早上收到一份审计而非摘要的晨报。开工前先签清单,每一步在执行边界计价,验证失败自动回滚,并报告关卡拒掉了什么。DSH 插件 + 技能,零依赖。
README
由 DeepSeek 最新模型翻译生成nightshift
让智能体无人值守跑上几个小时——早上拿到一份审计报告,而不是一份摘要。
开工前先签一份清单:这次要做什么、用哪些命令证明它做成了、什么绝对不能跑、允许花多少。然后把每条会改状态的命令都包进检查点,验证失败时自动回滚。早上拿到的简报由这次运行自己的日志生成——改了什么、验证了什么、什么没验证,以及撤销这一夜的确切命令。
dsh plugin --profile web add github:liyixuan201211/nightshift
想试不用安装:
npx --yes github:liyixuan201211/nightshift --help
它要解决的问题
这一族的工具各自只回答某一时刻的某个问题——ctx-budget 回答要花多少,blastradius 回答会毁掉什么,deadend 回答以前是不是失败过,mcp-cap 回答服务器能做什么,skillnotary 回答技能可以做什么,rewind 回答怎么找回来。它们全是时间点上的、无状态的。
无人值守的运行两者都不是。人一走,那些检查点前就没人站着了——而跑上几个小时才会暴露的故障,都是安静的那种。漂移:目标变了、预算超了、某一步悄悄失败了、循环空转。没有哪个单点工具在盯着这些。
nightshift 就是盯着这些的那一层。
展开完整文档(README 剩余 1 节)
nightshift
让智能体无人值守跑上几个小时——早上拿到一份审计报告,而不是一份摘要。
开工前先签一份清单:这次要做什么、用哪些命令证明它做成了、什么绝对不能跑、允许花多少。然后把每条会改状态的命令都包进检查点,验证失败时自动回滚。早上拿到的简报由这次运行自己的日志生成——改了什么、验证了什么、什么没验证,以及撤销这一夜的确切命令。
dsh plugin --profile web add github:liyixuan201211/nightshift
想试不用安装:
npx --yes github:liyixuan201211/nightshift --help
它要解决的问题
这一族的工具各自只回答某一时刻的某个问题——ctx-budget 回答要花多少,blastradius 回答会毁掉什么,deadend 回答以前是不是失败过,mcp-cap 回答服务器能做什么,skillnotary 回答技能可以做什么,rewind 回答怎么找回来。它们全是时间点上的、无状态的。
无人值守的运行两者都不是。人一走,那些检查点前就没人站着了——而跑上几个小时才会暴露的故障,都是安静的那种。漂移:目标变了、预算超了、某一步悄悄失败了、循环空转。没有哪个单点工具在盯着这些。
nightshift 就是盯着这些的那一层。 它同时也是这一族手工在做的事情的推广——ctx-budget 自己的说明里就提到,它读的是 mcp-cap 已经产出的 tools/list 转储。
核心就一个想法
清单是你还醒着时签下的合同。简报是对这份合同的审计。
nightshift init --root ~/work \
--objective "finish the auth refactor and get the suite green" \
--deliverable "npm test passes" \
--accept "tests=npm test" \
--accept "types=npx tsc --noEmit" \
--forbid "git push" \
--command "npm run build"
nightshift preflight --root ~/work # may I start?
nightshift step --root ~/work --verify "npm test" -- npm run build
nightshift acceptance --root ~/work
nightshift brief --root ~/work
声明的东西里只有两项能强制执行,而这正是重点:acceptance[] 是一串 shell 命令,所以「做完了」是退出码,不是一句声明;forbidden[] 在执行前就匹配,所以规则是道闸门,不是事后验尸。目标没有验收检查,简报就会写 unclear,而且是认真的。
简报里有什么
简报是日志的渲染,绝不是凭记忆写的摘要。正是这个方向让它值得一读:
- 背后没有事件支撑的声明,不可能出现
- 声明了却从没跑过的验收检查,报成未运行,而不是略过
- 成功从未被验证过的步骤,报成未验证——这和「通过」是两回事
- 闸门拒绝的每一个动作都会列出,因为一份只讲运行做了什么的报告,看不出闸门到底有没有开过火
- 不可用的工具会被点名,并带上数量(5/6 family tools)
- 基线快照 id,以及用来撤销这一夜的准确 rewind undo 命令行
它的最终结论只有一个词:verified、failed、incomplete、recovered、nothing-done、refused 或 unclear。
关卡挨着动作,而不是挨着会话
preflight 判定的是某次运行声明的命令。但一个步骤可以运行任何东西,而无人值守的运行有数小时的时间可以改变主意。所以同样的判定在每次执行时都会再跑一遍:
1. 禁用模式 —— 常驻指令,最先匹配,永远无法绕过
2. 不可逆等级 —— 由 blastradius 定价,从退出码读取(lost → 终局,costly → 可恢复,safe → 双向,其他 → 未知)
3. 宵禁 —— 超过 --curfew-minutes 后,不得启动新的单向动作(双向动作仍然允许:早上 6 点拒绝保存文件,比宵禁所防的那种失败更糟)
4. 等级策略 —— manifest 自己的开关
拒绝意味着命令没有运行,什么都没改。
两个工具之间一次真实的分歧
blastradius 把这种情况判为 lost:
{ "recoverability": "lost",
"why": "not inside a git repository, so nothing can restore it",
"samples": ["data.txt"], "verdict": "lost" }
它的意思是 git 无法恢复它。但 rewind 存在的意义恰恰是恢复git 从未跟踪过的文件,有 git 没 git 都行 —— 所以对于受保护根目录内的路径,稍后取的那个检查点确实能恢复它。
只信其中一个工具都是错的:信 blastradius,几乎每次真实重构都会被拒;信快照,就会把 rm -rf ~/something-else 当成可恢复,而快照从未覆盖过它。所以 nightshift 用 blastradius 自己的 samples 来判定:
| 有风险的路径 | 结果 |
| 全部在受保护根目录内 | 降级为 one_way_recoverable —— 警告,放行 |
| 有任何一条在根目录外 | 保持 one_way_terminal —— 拒绝 |
| 检查结果没有点名任何路径 | 保持 one_way_terminal —— 拒绝 |
最后一行是刻意的:分不清,永远不算升级。
拒绝启动是一项特性
当某次运行会不可恢复时,preflight 退出码为 4,什么都不启动。常见原因是 rewind 不可用 —— 一次没有回头路的无人值守运行,正是它断然拒绝的那件事。 去修根因;没有任何 flag 能绕过它。
退出码就是契约
| 退出码 | 含义 |
| 0 | ok |
| 1 | error |
| 2 | usage error |
| 3 | attention —— preflight 警告,或某个步骤失败并被回滚 |
| 4 | refused —— 什么都没做,这是故意的 |
| 5 | degraded —— 跑了,但有些检查做不了 |
| 6 | nothing —— 无事可做 |
-q 抑制输出,但从不抑制退出码。
关于它与兄弟组件接缝处的说明
- --exclude .nightshift 不是可选项。 nightshift 保留自己的日志 rewind 保护的目录内,所以每次 rewind 调用都会带上这个排除项。没有它,日志会弄脏自己的快照,rewind status 就永远不会是干净的。(已测试。)
- 退出码要翻译,不能直接信。 3 在 ctx-budget 里表示 OVER_BUDGET,在 blastradius 里表示 LOST,在 deadend 里表示 DRIFT,在 mcp-cap 里表示 CHANGED,在 rewind 里表示「目录树有差异」。每个工具的方言都是 src/tools.js 里的数据,可以按次运行覆盖,nightshift tools 会打印这张表。
- unverifiable 不等于 ok。 只要命令不在 blastradius 的词汇表里,它就退出 5;它的 JSON 说 "verdict": "none",意思是「我没法给你分析」。把这个字符串读成「没有风险」,就会放行 curl … | sh,所以 nightshift 依据退出码判断,只把 verdict 当作佐证。
- 「没有定价」记为 info,绝不算通过。 blastradius 只懂破坏性命令,所以给 touch 定价,合法地返回「我无法告诉你」。每次都把它升级成警告,会让操作员学会忽略警告——所以它出现在简报里,但不抬高判定。(onUnpriced,默认 ignore。)
诚实的局限
- 它不决定做什么。 它只让一次运行守住已经决定的事。
- 它不是调度器。 它不会自己醒来;得有东西驱动它。
- 它不是沙箱。 它用 blastradius 预测,用 rewind 恢复;它不做隔离。
- 它什么都不拉取。 除非传入 --allow-npx,否则没有 npx 回退。解析是本地行为:--tools-dir、$NIGHTSHIFT_TOOLS_DIR、配置的搜索路径,或 PATH。
- 简报的质量取决于验收检查。 没有 oracle,就没有验证——简报会如实说明,而不是暗示相反。
设计
架构、退出码归一化表,以及「被拒绝的运行不得留下快照」这条排序规则背后的推理,见 DESIGN.md。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
liyixuan201211/nightshift
无人值守跑通宵,早晨收审计简报
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,826已汉化DSH
72.2
花束设计alchaincyf/huashu-design
一句话生成网页、原型、PPT 与信息图等可交付设计
★ 28,638已汉化DSH
71.7
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。