Playful Hint
一个“程序员的贴心搭子型”提示弹窗插件:不打扰、不过度说教,在合适的时间给你一条轻松俏皮的小提醒。
开源地址:https://github.com/shixindea/playful-hint
你会得到什么
- 随机触发:按随机间隔(默认 15–120 分钟)弹出提示
- 定时段触发:在指定时段(默认 17:00–18:00)弹出更契合场景的提示(每天最多一次)
- 手动触发:命令面板 / 快捷键 / 状态栏按钮,随时来一条
- 可选大模型文案:读取本地
llm_config.json 生成个性化提示;失败自动降级到内置文案
- 交互记录:记录提示展示与关闭 / 稍后,便于后续优化策略
安装
- VS Code 扩展市场:搜索
Playful Hint 安装
- 本地安装:下载
.vsix 后,在 VS Code 里执行 “Extensions: Install from VSIX...”
快速开始
手动触发
- 命令:
Playful Hint: Show Hint
- 默认快捷键:
- Windows/Linux:
Ctrl+Alt+H
- macOS:
Cmd+Alt+H
- 状态栏按钮:右下角
提示(可在设置里关闭)
自动触发
插件启动后会自动开启:
- 随机间隔触发
- 指定时段触发(默认 17:00–18:00)
你可以在 VS Code 设置中搜索 Playful Hint 进行调整。
展示方式(Display Mode)
你可以把提示展示成不同“打扰程度”的形态(默认是通知弹窗):
notification:右下角通知弹窗(默认)
statusBar:状态栏提示(会自动隐藏;点击后可选择“知道啦 / 稍后”)
editorTooltip:编辑器顶部的悬浮提示(会自动隐藏;包含“知道啦 / 稍后”链接)
panelActive:在当前标签页打开面板展示
panelBeside:在右侧新标签页打开面板展示
配置项(Settings)
在 VS Code 设置中搜索 Playful Hint,可用配置包括(对应 package.json 的 playfulHint.*):
playfulHint.enableRandom:启用随机触发
playfulHint.randomMinMinutes:随机触发最小间隔(分钟,默认 15)
playfulHint.randomMaxMinutes:随机触发最大间隔(分钟,默认 120)
playfulHint.enableTimeRange:启用定时段触发
playfulHint.timeRangeStartHour:定时段开始小时(0–23,默认 17)
playfulHint.timeRangeEndHour:定时段结束小时(0–24,默认 18)
playfulHint.enableStatusBarButton:显示右下角状态栏按钮
playfulHint.snoozeOptionsMinutes:“稍后”按钮的分钟选项(默认 [5, 15, 30])
playfulHint.displayMode:提示展示方式(见上方 Display Mode,默认 notification)
playfulHint.statusBarAutoHideSeconds:状态栏提示自动隐藏秒数(默认 20)
playfulHint.editorTooltipAutoHideSeconds:编辑器悬浮提示自动隐藏秒数(默认 20)
playfulHint.llmConfigPath:可选,指定 llm_config.json 路径(默认取第一个工作区根目录)
大模型配置(llm_config.json)
重要说明
llm_config.json 已加入 .gitignore,请把真实密钥保留在本地,不要提交到版本库
- 如果不配置 / 配置错误 / 请求失败,插件会自动使用内置文案,不会阻塞弹窗
apiKey 为空或无效会返回认证错误(例如:AuthenticationError: the API key ... is missing or invalid)
Ark Responses 接口示例(与你的 curl 对齐)
在工作区根目录创建 llm_config.json(或通过 playfulHint.llmConfigPath 指定路径):
{
"apiBaseUrl": "https://ark.cn-beijing.volces.com",
"apiKey": "YOUR_ARK_API_KEY",
"apiType": "arkResponses",
"model": "glm-4-7-251222",
"chatCompletionsPath": "/api/v3/responses",
"requestTimeoutMs": 10000,
"temperature": 0.9,
"maxTokens": 120
}
弹窗交互
知道啦:关闭提示
稍后(N 分钟):进入 snooze,在这段时间内不会再弹出提示(包含手动触发)
交互数据记录
插件会把交互事件以 JSON Lines 形式写到扩展的 globalStorage 目录下(路径因系统而异):
interaction_log.json(每行一条事件)
常见问题
1)一直使用内置文案,没有走大模型
- 检查工作区根目录是否存在
llm_config.json,或设置了 playfulHint.llmConfigPath
- 检查
apiBaseUrl / chatCompletionsPath 是否正确(Ark Responses 默认是 /api/v3/responses)
- 检查
apiKey 是否有效(无效会返回 AuthenticationError)
2)想临时只用手动触发
在设置里关闭:
playfulHint.enableRandom
playfulHint.enableTimeRange
3)提示太打扰 / 太安静
- 更“轻”:把
playfulHint.displayMode 改成 statusBar 或 editorTooltip
- 更“少”:调大
playfulHint.randomMinMinutes / playfulHint.randomMaxMinutes,或关闭随机触发
- 更“刚好”:调
playfulHint.timeRangeStartHour / playfulHint.timeRangeEndHour 到你的固定休息时间