一个给开发者用的 Alfred 工具箱。
它把平时最常用的一批开发小工具收进 Alfred,让你不用切浏览器找在线工具,不用临时写脚本,不用反复复制粘贴网页,直接在 Alfred 里输入命令就能完成哈希、编码解码、JSON 格式化、UUID 生成、Cron 预览、时间戳转换、文本统计、JWT 解码、倒计时提醒等操作。
- 想把常见开发小工具放进 Alfred 的开发者
- 习惯键盘流,想减少打开网页工具站次数的人
- 想持续扩展自己 Alfred Workflow 的维护者
- 导入打包好的 workflow:
Alfred-Dev-Tools-v0.1.4.alfredworkflow - 打开 Alfred
- 直接输入命令,例如:
md5 hello world
sha hello
json {"a":1}
url hello%20world
timer 10m 喝水
默认不加统一前缀,开箱即用。
如果你想给全部命令加前缀,也支持在 workflow 配置里设置 keyword_prefix,比如改成 dv 之后,就会变成:
dvhelpdvpwgdvmd5dvshadvjsondvurldvtimer
输入:
help
会直接展示全部工具、对应作用和示例。
如果你设置了前缀,例如 dv,则总览入口会变成:
dvhelp
| 命令 | 作用 | 示例 |
|---|---|---|
pwg |
生成随机密码 | pwg 10 -_+ |
md5 |
计算 MD5 | md5 hello world |
sha |
计算 SHA 哈希 | sha hello / sha all hello |
| 命令 | 作用 | 示例 |
|---|---|---|
b64 |
Base64 编码与解码 | b64 hello |
json |
JSON 格式化 / 压缩 | json {"a":1} |
url |
URL 编码 / 解码 | url hello world |
html |
HTML 实体转义 / 反转义 | html <div>hello</div> |
jwt |
JWT 解码 | jwt eyJ... |
| 命令 | 作用 | 示例 |
|---|---|---|
uuid |
UUID 生成 | uuid / uuid all |
cron |
查看最近 5 次执行时间 | cron */15 * * * * |
ts |
时间戳与日期互转 | ts 1710505200 |
timer |
倒计时提醒 | timer 10m 喝水 |
| 命令 | 作用 | 示例 |
|---|---|---|
tc |
文本字数统计 | tc hello world |
case |
命名风格转换 | case hello_world |
| 命令 | 作用 | 示例 |
|---|---|---|
sum |
求和计算器,支持 % 取模 |
sum 1 2 3 % 4 |
| 命令 | 作用 | 示例 |
|---|---|---|
sub |
用正则替换剪贴板内容(sed 风格) | sub /hello/HI/ |
下面这部分是标准用法说明。每个命令都给出“命令是什么、怎么输入、返回什么”。
作用: 生成随机密码。
命令格式:
pwg [长度] [特殊符号集合] [count=数量] [nospecial]
使用示例:
pwg
pwg 16
pwg 10 -_+
pwg 24 count=8
pwg 32 nospecial
规则说明:
- 第一个参数是密码长度
- 默认长度是
16 - 默认返回
6条候选密码 - 默认包含内置特殊字符集合
nospecial表示完全不使用特殊字符- 如果你提供一个仅由非字母数字字符组成的参数,它会被当成“允许使用的特殊符号集合”
pwg 10 -_+表示生成 10 位密码,且特殊字符只允许来自-、_、+
作用: 对输入文本计算 MD5 十六进制字符串。
命令格式:
md5 <文本>
使用示例:
md5 hello
md5 123456
md5 hello world
返回结果:
- 一条 MD5 结果
- 回车后直接复制哈希值
作用: 计算常见 SHA 哈希。
支持算法:
sha1sha224sha256sha384sha512all
命令格式:
sha <文本>
sha <算法> <文本>
使用示例:
sha hello
sha sha1 hello
sha sha512 hello
sha all hello
规则说明:
- 不写算法时,默认直接展示全部结果
- 默认顺序是:
sha256、sha512、sha1、sha224、sha384 - 写
all时,也按同样顺序展示全部结果
作用: Base64 编码与解码。
命令格式:
b64 <文本>
使用示例:
b64 hello
b64 aGVsbG8=
规则说明:
- 默认同时返回 Base64 编码结果和解码结果
- 如果输入不是合法 Base64,会显示“解码失败”提示
- 不需要再写
encode或decode
作用: JSON 格式化与压缩。
命令格式:
json <JSON>
json pretty <JSON>
json min <JSON>
使用示例:
json {"a":1,"b":2}
json pretty {"a":1}
json min {"a":1,"b":2}
返回结果:
Pretty JSONMinified JSON
规则说明:
- 默认优先展示格式化结果
- 如果输入不是合法 JSON,会提示错误位置
作用: 同时展示 URL Encode 和 URL Decode 结果。
命令格式:
url <文本>
使用示例:
url hello world
url hello%20world
url name%3Dalfred%20tools
规则说明:
- 不需要区分
urlencode和urldecode - 默认同时返回两种结果
作用: 同时展示 HTML Encode 和 HTML Decode 结果。
命令格式:
html <文本>
使用示例:
html <div class="box">
html <div>hello</div>
规则说明:
- 默认同时返回 Encode 和 Decode 两种结果
- 适合处理 HTML 片段或富文本内容
作用: 生成 UUID。
命令格式:
uuid
uuid all
uuid 1
uuid 4 count=5
规则说明:
- 默认直接等同于
uuid all - 会返回
UUID v1和UUID v4 - 也支持单独指定
v1、v4 - 支持
count=数字
作用: 查看 cron 表达式从当前时间起最近 5 次执行时间。
命令格式:
cron <表达式>
使用示例:
cron */15 * * * *
cron 0 0/15 * * * ?
cron 0 30 9 * * MON-FRI
规则说明:
- 自动识别
Linux crontab和Java cron - 结果中会明确标识类型
- 默认展示“从当前时间起向后计算”的最近 5 次执行
当前支持:
*,-/?
当前暂不支持:
LW#
作用: 时间戳和日期互转。
命令格式:
ts
ts <时间戳>
ts <日期>
使用示例:
ts
ts 1710505200
ts 1710505200000
ts 2026-03-22
ts 2026-03-22 10:30:00
规则说明:
- 不带参数时,显示当前时间、当日 0 点、当前秒级时间戳、当前毫秒级时间戳
- 输入纯数字时,自动识别为秒或毫秒时间戳
- 输入日期时,转换为秒和毫秒时间戳
作用: 文本统计。
命令格式:
tc <文本>
使用示例:
tc hello world
tc 这是一个测试
返回结果:
- 字符数
- 非空白字符数
- 单词数
- 行数
- UTF-8 字节数
- 中文字符数
作用: 命名风格转换。
命令格式:
case <文本>
使用示例:
case hello world
case hello_world
case helloWorld
case HelloWorld
返回结果:
snake_casekebab-casecamelCasePascalCaseCONSTANT_CASEdot.case
作用:
对一组数字求和,支持使用 % 进行取模。
命令格式:
sum <数字...> [% 除数]
使用示例:
sum 1 2 3 4 5
sum 1+2+3+4+5
sum 1, 2, 3
sum 15 % 4
sum 1 2 3 4 5 % 7
sum 1.5 2.5 3
返回结果:
- 求和结果(回车复制)
- 当输入包含
%时,额外返回sum % 除数的取模结果 - 平均值
规则说明:
- 数字之间支持空格、逗号、
+三种分隔方式,可以混用 - 支持负数与小数
%左侧是参与求和的数字列表,右侧是单个除数- 除数为 0 或缺失会给出错误提示,但仍会展示求和结果
- 无法识别的 token 会被忽略,并在副标题中提示
作用: 读取当前剪贴板内容,用正则表达式做一次替换,回车把结果写回剪贴板。
命令格式:
sub <分隔符><pattern><分隔符><replacement>[<分隔符>[flags]]
sub <pattern> <replacement>
使用示例:
sub /hello/HI/
sub /\d+/N/
sub /(\w+)@(\w+)/\2#\1/
sub /HELLO/hi/i
sub |http://|https://|
sub #foo bar#baz#
sub hello HI
返回结果:
- 替换后的完整内容(回车复制)
- 匹配次数、pattern → replacement 摘要
- 原剪贴板内容(回车可复制原文,做二次利用)
- 未匹配时给出提示,剪贴板保持不变
规则说明:
- 使用之前先把要替换的文本复制到剪贴板
- 第一个字符若为
/ | # ~ , @中任意一个,就作为分隔符 - 分隔符不用
/时,pattern / replacement 中可以自然包含/,避免转义 - 若第一个字符不是上述分隔符,则按第一个空格切成
pattern replacement - 支持标准 Python 正则语法与反向引用(
\1、\g<name>) - 支持 flag:
i(忽略大小写)、m(多行)、s(dotall)、x(verbose)、g(全局,默认已开启) - 如果 pattern 非法或替换出错,会展示错误而不改动剪贴板
作用: JWT 解码。
命令格式:
jwt <token>
使用示例:
jwt eyJ...
规则说明:
- 当前只做解码
- 不校验签名
- 会返回 Header、Payload、Claims 摘要、Signature 和原始 JWT
作用: 创建倒计时提醒。
命令格式:
timer <时间> [提醒内容]
使用示例:
timer 10 喝水
timer 10s 起身活动
timer 1h 开会
规则说明:
- 纯数字默认按分钟
s表示秒m表示分钟h表示小时- 默认是
5分钟 - 时间到了会弹窗提醒并响铃
如果你在本地调试,可以统一通过 workflow.py 调度:
python3 workflow.py help ""
python3 workflow.py pwg "10 -_+"
python3 workflow.py md5 "hello world"
python3 workflow.py sha "hello"
python3 workflow.py b64 "aGVsbG8="
python3 workflow.py json '{"name":"dev-tools","stars":1}'
python3 workflow.py url "hello%20world"
python3 workflow.py uuid ""
python3 workflow.py cron "*/15 * * * *"
python3 workflow.py ts ""
python3 workflow.py tc "hello world"
python3 workflow.py case "hello_world"
python3 workflow.py sum "1 2 3 % 4"
python3 workflow.py sub "/hello/HI/"
python3 workflow.py html "<div>hello</div>"
python3 workflow.py jwt "eyJ..."
python3 workflow.py timer --dry-run "10s 喝水"项目内置标准打包脚本:
./scripts/package.sh
./scripts/package.sh v0.1.4脚本会自动:
- 读取或更新
info.plist中的版本号 - 打包生成
.alfredworkflow - 校验
info.plist - 检查包内的
version和webaddress
Alfred-Dev-Tools/
├── info.plist
├── icon.png
├── workflow.py
├── scripts/
├── docs/
└── alfred_dev_tools/
├── alfred.py
├── cli/
└── features/
目录说明:
workflow.py:统一入口,Alfred 通过它分发到具体命令alfred_dev_tools/features/:核心功能逻辑alfred_dev_tools/cli/:命令行与 Alfred 适配层info.plist:Alfred Workflow 配置scripts/package.sh:标准打包脚本docs/GITHUB_DESCRIPTION.md:GitHub 发布与推广文案
- 快捷编辑 ~/.zshrc
- 快捷编辑 .zshrc
- 快捷拷贝ssh公钥
- 快捷拷贝当前目录路径
- 快捷打开终端在当前路径
- Port端口占用查询
- 获取当前主机IP
欢迎大家提需求给我












