dsh-when
Parses natural-language relative time (e.g. "in 2 hours") into ISO timestamps, fail-fast.
zhijiangtang
@zhijiangtang
⬇ 2
★ 0
main
安装
dsh plugin --profile web add github:zhijiangtang/dsh-when
需要可复现安装时,可在仓库后追加 #commit 固定提交。
Parses natural-language relative time (e.g. "in 2 hours") into ISO timestamps, fail-fast.
该插件未提供要点说明,请参考仓库 README。
deepseek-harnessdsh-plugin
- 安装并启动 DeepSeek Harness:
npx @deepseek-ai/dsh web - 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
- 用 dsh plugins list 确认已安装,必要时重启 Harness 生效
插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。
| 代码仓库 | github.com/zhijiangtang/dsh-when |
| 许可证 | MIT |
| 主要语言 | main |
| 下载量 | 2 |
| GitHub 星标 | 0 |
| 最近推送 | 2026-08-16 |
| 收录日期 | 2026-09-19 |
| 分类 | 工具与能力 |
事实信息来自公开插件目录快照(2026-10-01),介绍文案由本站再加工。
以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。
# dsh-when
DSH 插件:把**中文自然语言相对时间短语**解析成 **ISO 时间戳**,注册一个 `when` 工具。纯 ESM、零依赖、无构建。
## 安装
```sh
dsh plugin --profile add file:./plugins/dsh-when
# 或 npm 发布后:dsh plugin --profile add dsh-when
```
安装后组合层挂载 `when` 工具(`when` 层 id)。
## 工具:`when`
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `text` | string | 是 | 自然语言时间短语,如 `明天 9 点`、`2 小时后`、`下周一 9 点`、`18:30` 或 ISO 8601 |
| `tz` | string | 否 | IANA 时区名(如 `Asia/Shanghai`、`UTC`),默认本地时区;无效时区返回规范错误 |
| `now` | string | 否 | ISO 8601 基准时间,默认当前时间 |
返回规范值:`{ ok, text, iso, local, relativeSeconds, matchedPattern, errors }`
- `iso`:UTC ISO 8601 字符串(带 `Z`)。
- `local`:目标时区本地 ISO 字符串(带 `±HH:MM` 偏移)。
- `relativeSeconds`:目标时刻相对 `now` 的秒数(目标 − now,可为负)。
- `matchedPattern`:命中的模式名(`day-offset` / `duration` / `weekday` / `clock-time` / `iso`)。
- 失败时 `ok:false`,`iso/local/relativeSeconds/matchedPattern` 为 `null`,`errors` 给出原因。
## 支持短语表
| 模式名 | 短语 | 说明 |
|---|---|---|
| `day-offset` | 今天 / 明天 / 后天 `[HH:MM\|HH点\|上午\|下午\|中午\|晚上]` | 上午=9 点、下午=15 点、中午=12 点、晚上=20 点;缺时间默认 9 点 |
| `duration` | `N` 分钟后 / 小时后 / 天后 / 周后 | `N` = 阿拉伯数字或中文数字「一到十」 |
| `weekday` | 下周X / 周X `[HH:MM\|HH点]` | 本周已过的周 X 自动取下周;缺时间默认 9 点 |
| `clock-time` | `HH:MM` | 纯时刻 = 今天该时刻,已过则明天 |
| `iso` | ISO 8601 | `2026-08-16T09:00:00`、`2026-08-16T09:00Z`、带 `±HH:MM` 偏移、或纯日期(按 00:00 解释) |
## 「fail-fast 不猜语义」原则
本工具**只解析明确支持的短语**。任何无法识别的输入(例如 `随便什么`、`明天上午9点` 这种超出短语表的组合)都会返回 `ok:false`,并在 `errors` 中给出完整支持列表提示——**绝不根据模糊语义“猜”一个时间**,避免给下游(调度、提醒)埋下错误时间的隐患。
## 与 dsh-cron-parse 配套场景
- `dsh-cron-parse` 解析 **cron 表达式**(结构化、周期性规则)并预览未来运行时刻。
- `dsh-when` 解析**一次性自然语言相对时间**(“明天 9 点”“2 小时后”)得到具体时刻。
- 两者互补:cron 表达周期性计划,`when` 表达单次时刻;`when` 的产物(ISO 时刻)可直接作为 `dsh-scheduler` 之类调度插件的一次性触发点。
## 自检
挂载时自动执行 4 条自检(明天 9 点 / 2 小时后 / 下周一 9 点 / 不支持短语),证据行输出到日志,前缀 `[dsh-when]`。
## 局限
- 仅支持上表列出的短语形态,不支持“半小时后”“上午 9 点 30 分”等组合或口语化表述(fail-fast)。
- ISO 无时区信息时按 `tz`(默认本地)墙钟解释;带 `Z`/偏移时按绝对时刻透传。
- 夏令时切换瞬间的歧义/重复墙钟时刻按定点迭代的某一侧解释(与 dsh-cron-parse 一致)。
## License
MIT
数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。