JohnXu22786/snippet-expander
JohnXu22786★ 0TypeScript最后同步: 2026-08-16
Steno - dsh plugin: inline #tag shorthand expansion before send (multi-library, aliases, {{variables}}, recursion guards)
README 摘要
Steno — dsh 消息内联短标签展开插件 输入 tag ,消息发送前自动替换为片段库中配置好的全文。把高频指令写一次,以后一条短标签搞定。 特性 - 即时展开 :用户在消息中写 标签 , message.beforeSend 钩子在发送前完成替换。 - 多片段库 :任意多个 YAML 库文件,按配置顺序加载,先者优先;库间同名自动告警。 - 别名 :一个片段可挂多个触发名( aliases )。 - 变量占位符 :正文支持 {{name}} 与 {{name:默认值}} ,可由宿主传入变量值。 - 递归组合 :片段正文可以引用其他 标签 ,层层展开;内置循环检测、深度上限、次数上限三重防护。 - 代码保护 :围栏代码块与行内代码中的 tag 不会被误展开。 - 库管理 :提供 steno.save / steno.remove 工具与 CLI,片段库可在线编辑并持久化。 - 搜索预览 : steno.search 按相关度检索片段;CLI dsh-steno preview 可预览完整展开结果。 - 自包含 :仅一个运行时依赖(js-yaml),Node ≥ 22.18 即可运行,无外部服务。 快速开始 编辑 /.dsh/steno/core.yaml ,加入片段: 在消息中写 careful 即可。片段库支持两个自动发现位置(都可被显式配置覆盖): 位置 路径 项目级 /.dsh/steno/ .yaml 用户级 /.dsh/steno/ .yaml 不依赖自动发现时,可用环境变量 DSH STENO LIBRARIES (分号分隔的路径列表)或宿主传入的 libraries 配置。 片段库格式 片段库是 YAML 文件,顶层一个映射, entries 为片段列表: 字段规则: - tag :字母开头(含中文等 Unicode 字母),可含字母/数字/ / - ,最长 64 字符;查找时大小写不敏感。 - aliases :单字符串或字符串列表,规则同 tag 。 - body :字符串、多行字符串(YAML 块标量)或字符串数组(按行拼接)。 - 同一库内重复 tag 或非法字段会整体报错(报错信息列明所有问题);跨库重复取先加载者,后者告警但不阻断。 注意:通过工具/CLI 编辑库文件时,文件会被重新序列化(格式规范化,注释丢失)。 手工编辑不受影响,任何时刻都可直接改 YAML。 匹配规则 - 触发符为 + 标签名; 前不能紧贴 ASCII 字母/数字/ / - / 或反斜杠(避免 foo tag 、 tag )。 - 中文等无空格语言中 tag 紧贴中文是合法用法(如 请 专注模式 )。 - 后必须紧跟字母, 123 、markdown 标题 标题 不会命中。 - 围栏代码块( json { "libraries": [" /.dsh/ste…
在 GitHub 查看完整 README →