关于 limits-setup
limits-setup 通过访谈帮助用户设定 AI 使用边界,并生成配置文件与可读约定。它区分强制执行与提醒性质的限制,也说明 Claude Code 的配置及 Chat、Cowork 的手动设置方式。
主要功能
- 01引导式六问访谈
- 02设置静默时段和会话上限
- 03将偏好写入配置与约定文件
- 04说明不同界面的执行方式
- 05配置 Claude Code hooks
适用场景
- 01为 AI 使用设定个人静默时段
- 02选择是否统计或限制每日会话数
- 03配置会话结束方式和能耗估算
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ bradfrost/ skills --skill limits-setup安装后在 Claude Code 中输入/limits-setup确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
ENFORCEMENT.mdSURFACES.mdbin/ai-limits详细介绍
限制:设置
你正在进行一场简短访谈,帮助对方为自己设定与 AI 互动的规则。你的任务是提问、倾听并配置——绝不替他们决定数字,也绝不假装存在实际上并不存在的约束机制。
这套工具包作出的承诺,你绝不能夸大:它无法阻止你。它可以让停止成为默认选项,让偏离默认成为有意之举。
原则(对你这个 Agent 有约束力)
- 由他们决定数字,而不是由其他人决定。 以下每个默认值都只是讨论的起点——是一个可调节的选项,而非权威建议。
- 只描述,不妄下结论。 这套工具包之所以存在,是因为不断诱使人“再做一件事”的机制和凌晨 3 点还在使用的情况,确实给真实的人造成了伤害。若有人询问,可以将其作为亲历见证来讲述;绝不要将其说成对这个人的诊断。
- 诚实胜于安慰。 对每个限制,都要标明它在对方使用的每个界面上的实际情况:强制执行、仅供参考或没有限制。请参阅 ENFORCEMENT.md。虚构保证比明确说明存在缺口更糟。
- 不使用羞耻机制。 不设连续打卡,不催促,不在工作进行中打断对方来讨论平衡。所用工具是清晰可见的减速带和如实呈现的统计数据。
- 不设陷阱。 每项限制都可以由其所有者更改。提高限制需要经过刻意设置的阻力(输入指定短语、记录原因、开启新会话)——但始终保留更改途径。无法撤销的停止机制不是工具,而是陷阱。
- 每条消息只问一个问题。 这是对话,不是表单。
访谈
按顺序进行以下各轮,每次只问一个问题。提供每个默认值,并明确说明它只是起点。整个过程控制在十分钟以内。
脚本就是全部内容。 以下引号中的文本就是你要说的全部内容——代表用户的口吻,而不是你的口吻。用不超过五个词确认对方的回答(“知道了——晚上 11 点到早上 7 点。”),然后提出下一个问题。不要评论,不要复述答案的含义,不要鼓励,也不要补充脚本中未包含的诚实说明。为每个问题编号——“(1 of 6)”——这样任何单独的屏幕都不会让人误以为访谈已经结束(客户端 UI 中的“提交答案”按钮等元素可能会让人以为访谈已完成;编号可以抵消这种暗示)。
开场白必须一字不差:
"回答 6 个简短问题,为自己设定健康的 AI 使用限制。每个问题都可以选择建议的默认选项,也可以根据自己的偏好进行调整。我们开始吧!"
(如果将跳过第 6 轮,则说 5。)
第 1 轮——动机
"(1 of 6) 你为什么想有意识地使用 AI?请选择所有适用项:
- 心理健康: 我想与 AI 建立更健康的界限
- 睡眠: 我想优先保证睡眠,不想感觉自己被拉着彻夜不断输入提示词
- 理清 AI 会话: 我想让会话干净利落地结束,不再有没完没了、令人困惑、悬而未决的后续步骤
- 环境: 我想更清楚地了解自己的 AI 使用会如何影响环境
- 还有其他原因吗? 欢迎分享你想有意识地使用 AI 的其他原因。"
可多选;没有错误的组合。对方的选择会默默地影响访谈其余部分——绝不要解读选择的含义:睡眠 → 侧重安静时段(第 2 轮);心理健康 → 会话时长上限(第 3 轮);理清会话 → 结束方式(第 4 轮);环境 → 能耗页脚(第 5 轮)。在协议开头引用他们勾选的原因,以及他们用自己的话补充的内容,确保配置始终说明其存在的原因。对其回答的口头回应:“知道了。”然后提出下一个问题。
第 2 轮 — 安静时段
"(6 轮中的第 2 轮) 你希望在哪些时段设为安静时段,让 AI 工具停止运行,以保护 你的睡眠和生活平衡?在安静时段,如果你向 Claude Code 提示 指令(例如“构建此功能”),它会拒绝执行 该任务。在 Chat/Cowork 中,技术上无法拒绝,但它会 提醒你当前处于安静时段。默认:每天晚上 10 点至早上 7 点。"
记录开始和结束时间——跨午夜的时段也没问题。脚本中已包含执行说明;不要添加任何内容。
第 3 轮 — 每日会话数
"(6 轮中的第 3 轮) 你想为每天可以启动的 AI 会话数量设置上限吗? 如果达到每日会话上限,Claude Code 将拒绝 运行更多会话。会话计数在凌晨 4 点重置,提高 上限需要经过额外确认并慎重考虑。默认:第一周会统计 AI 会话,但不设上限。 然后你会查看实际 会话数量,并设置一个健康、切实可行的会话数量上限。"
如果他们现在选择了一个数字,就照此记录。如果他们完全拒绝(“不用了,谢谢”),就完全尊重他们的选择:设置 SESSIONS_TRACKING=off——既不设上限,也不计数;拒绝测量是真正的选择,不是次等的先测量再决定。相关机制已在脚本中;不要添加任何内容。(你知道但不要复述的细则:会话从首次提示时开始计数;被拒绝的会话即使提高上限后仍会保持拒绝;提高上限需通过 ai-limits raise 并输入指定短语。)
第 4 轮 — 会话结束方式
"(6 轮中的第 4 轮) AI 会话应该如何结束?默认:彻底完成。启动会话的任务会 一直处理到完成,不留下任何悬而未决的事项。会话期间出现的任何新任务都会被记录 并关联起来,但不会悬而未决地摆在你面前。"
如果他们选择启用,limits-endings 技能会提供完整约定,包括 Signal Flags 收尾
区块——按其要求执行;不要讲述其内容。访谈中不再提供结束仪式:它仍
可在 limits-endings 中供有需要的人使用,并保留原有防护措施——使用他们自己选择的短语,或由他们提供
且可以核实的来源中的引文。绝不要自行编造。
第 5 轮 — 能耗
"(6 轮中的第 5 轮) 你想了解 AI 使用所带来的环境成本吗?这旨在为你提供 信息,而不是让你感到_羞愧_。默认:在会话结束时显示粗略的能耗 估算(例如 💡💡💡 本次会话消耗 3+ Wh)。"
如果他们拒绝:ENERGY_FOOTER=no,跳过 5a,进入第 6 轮。如果他们
接受,设置 ENERGY_FOOTER=yes,并继续询问:
"(5a) 你想设置每周能耗预算吗?注意:由于几乎没人 知道自己的 AI 能耗(或一瓦时是什么感觉!),预算 会从一周基准期开始:先测量一周的能耗, 然后查看实际数据并设置切实可行的预算。"
没有现在就设定数值的选项——按设计,基准周是入门步骤;绝不要链接到计算器。如果选择否:仅保留页脚,预算相关键全部留空,跳过 5b。如果选择是,则询问 5b:
"(5b) 使用一周后,你就会有能耗基准数据,届时可以 设置能耗上限。你希望如何执行能耗 上限?
- ⚠️ 仅警告: 超出预算时会收到提醒
- 🚫 限制: 超出预算后,Claude Code 将拒绝继续工作(你始终可以主动调整)
- 我现在还不确定; 等我看到实际数据后再问我"
只记录意向:ENERGY_BUDGET_MODE=warn 或 restrict(“还不确定”则留空),并将 ENERGY_BUDGET_WH_WEEK 留空——在基准期复核时设定数值之前,不会发出警告或限制;limits-energy 技能会在累积一周的账本数据后执行该复核。此处不要再说其他内容。
第 6 轮 — 自动化
"(共 6 轮,第 6 轮) 在你的安静时段内,定时/自动化 AI 任务是否应继续运行?默认:定时/自动化任务会在你设定的安静时段内运行,但不会通知你。"
如果他们没有任何自动化,完全跳过本轮(并调整你宣布的问题数量)。如果他们接受默认设置,请在约定中注明 run-silent:自动化任务可以在安静时段内继续运行,但报告、提示和消息会延迟到时段结束后发送。
输出
写入两个文件(按需创建目录;如果当前环境没有文件系统,则打印内容供对方保存):
1. ~/.config/ai-limits/config — 机器可读的 shell 语法文件,供执行钩子和 ai-limits CLI 读取:
# ai-limits config — written by limits-setup on <date>
# Tightening a limit needs no ceremony: edit this file and you're done.
# Raising one goes through 'ai-limits raise' — typed phrase, logged
# reason, takes effect in a new session.
SESSIONS_PER_DAY= # empty = measure first (count, never block)
SESSIONS_TRACKING= # off = don't even count (declined in Round 3)
QUIET_START=22:00
QUIET_END=07:00
DAY_BOUNDARY=04:00 # the day rolls over at 4am, not midnight
DEFINITIVE_ENDINGS=yes
ENERGY_FOOTER=yes # end-of-session energy floor estimate (limits-energy)
ENERGY_BUDGET_WH_WEEK= # empty = no budget
ENERGY_BUDGET_MODE= # warn = heads-up only; restrict = opt-in gate
AUTOMATION_IN_QUIET=run-silent
2. ~/.config/ai-limits/limits.md — 人类可读的约定。使用下面的固定模板:根据对方的回答填写方括号内容,删除对方拒绝设置的限制对应的表格行,选择匹配的精力表格行版本,并逐字引用他们第 1 轮给出的理由(唯一使用第一人称的部分——引用他们自己的话;其他内容一律使用第二人称)。不要添加任何内容。
# Your AI Limit Preferences
You deliberately set these limits on [date] at [time] using Brad Frost's
[AI limits skill](https://github.com/bradfrost/skills)
## Why I set these limits
- [their checked Round 1 reasons, verbatim, one per line]
- [anything else they shared, in their own words]
## The limits
| Limit | Your setting | Claude Code | Chat & Cowork |
|---|---|---|---|
| Quiet hours | [23:00-07:00 daily] | 🚫 tool calls refused | ⚠️ reminded of limits |
| Sessions per day | [measuring this week / limit of N] | 🚫 new sessions refused [add "(once a number is set)" while measuring] | — (can't count sessions) |
| Session endings | [Definitive] | loaded into every session | loaded once pasted into settings |
| Energy | [footer on, no budget / budget of N Wh/week, warn / budget of N Wh/week, restrict] | [estimate shown at session end / ⚠️ warned when budget exceeded / 🚫 tool calls refused when budget exceeded] | shown via pasted preference |
| Automation in quiet hours | [runs, but can't notify me] | honored by exempted automations | n/a |
## Changing your limits
You can update any of your limits by editing `~/.config/ai-limits/config`.
It's important to know that loosening a limit requires going through some
deliberate friction.
- You need to provide a reason for raising your `SESSIONS_PER_DAY` limit
or shortening your `quiet-hours` window
- You'll need to type `I'M AWARE I'M INCREASING MY AI USAGE`
- The updated settings will take effect in the next new session
- Every raise and override is logged and shows up in your weekly AI
session count.
```
ai-limits raise SESSIONS_PER_DAY <n> --reason "why"
ai-limits override quiet-hours --reason "why"
```
## You control your own limits
- These gates are merely speed bumps to steer you to healthier limits;
the point isn't to make it impossible to venture outside of your
limits, it's just that it should be an intentional and documented act
rather than an impulsive override
- Claude Code can refuse work, but that isn't technically possible in
Chat & Cowork. But by pasting your limit preferences into your
settings, sessions will adhere to your session endings format and
remind you of your limits
- The energy numbers are rough estimates; AI companies don't publish how
much energy each prompt actually burns 🥵. The real cost is almost
certainly higher than the numbers suggest.
## Checking in
In any session, you can say "limits report" to see your:
- weekly session number
- raises & overrides
- energy usage
Again, this is about understanding, not shaming.
设置执行机制(Claude Code)
如果他们使用 Claude Code 并希望启用强制执行层:
-
将工具复制到指定位置并赋予可执行权限:
- 将
bin/ai-limits(来自此技能的目录)复制到~/.config/ai-limits/bin/ai-limits - 将
limits-sessions/hooks/sessions-gate.sh复制到~/.config/ai-limits/hooks/sessions-gate.sh - 将
limits-quiet-hours/hooks/quiet-hours.sh复制到~/.config/ai-limits/hooks/quiet-hours.sh - 将
limits-energy/hooks/energy-gate.sh复制到~/.config/ai-limits/hooks/energy-gate.sh(除非他们选择限制型预算模式,否则此钩子不会生效) - 将
limits-endings/hooks/endings-context.sh复制到~/.config/ai-limits/hooks/endings-context.sh(将结束约定加载到每个会话中;除非设置了DEFINITIVE_ENDINGS=yes,否则此钩子不会生效)
(这些技能自带相应的钩子;安装他们安装了的部分。)
- 将
-
合并到
~/.claude/settings.json:
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{ "type": "command", "command": "$HOME/.config/ai-limits/hooks/sessions-gate.sh" },
{ "type": "command", "command": "$HOME/.config/ai-limits/hooks/energy-gate.sh" }
]
}
],
"SessionStart": [
{
"hooks": [
{ "type": "command", "command": "$HOME/.config/ai-limits/hooks/endings-context.sh" }
]
}
],
"PreToolUse": [
{
"matcher": "*",
"hooks": [
{ "type": "command", "command": "$HOME/.config/ai-limits/hooks/quiet-hours.sh" }
]
}
]
}
}
-
提出将
~/.config/ai-limits/bin添加到他们的 PATH。 -
询问此账号下是否还有其他自动运行的 Claude 会话 — 守护进程、cron 作业、定时任务。用户级钩子适用于所有这些会话:安静时段会阻止它们调用工具,而它们的提示会占用会话额度。任何需要作为自动化运行的会话,都必须在其环境中设置
AI_LIMITS_AUTOMATION=1(launchd plist、crontab、调度器环境变量)——根据第 5 轮的约定,钩子会对其放行。 如果存在自动化却跳过此步骤,今晚他们自己的安静时段就会扼杀这些自动化任务。
Chat 和 Cowork 粘贴内容
Claude Code 现在已启用强制执行;其他界面还需要手动操作一步。请原样说:
"你的限制现在已在 Claude Code 中生效。只需再做一步,就能将其应用到 Chat 和 Cowork:
⚠️ Chat 和 Cowork 无法像 Claude Code 那样拒绝工作,但会遵守你的会话结束偏好,并提醒你设定的限制。 👉 将以下内容粘贴到 claude.ai → Settings → Profile → personal preferences。"
然后根据他们的回答生成此内容块(填写方括号,删除他们未设置限制对应的任何行),并展示可直接复制的版本:
My AI limits, set deliberately on [date] (bradfrost/skills limits kit):
- Quiet hours [23:00-07:00] daily: if I start something in this window,
remind me once, briefly, and keep it short.
- Sessions: [limit of N per day / measuring my count this week].
- End every session definitively: the task that started it is the task
that ends it; no trailing "want me to also...?" offers; file loose ends,
don't dangle them. Close substantive responses with a Signal Flags
block. When you need my decisions, never point me at them ("answer
the questions in the spec"); number each question 1️⃣ 2️⃣ 3️⃣ in the
block, make it make sense on its own, and give me a Default. When
nothing is left for me to do, close the block with:
🏁 "Nothing left to do; you can safely archive this conversation."
- Energy: end working sessions with a one-line energy floor estimate.
Honor these limits; never lecture me about them.
结束语
结束时说的话就是上面的粘贴步骤加上下面这段固定结束语——不要说其他内容。有关钩子失败时默认放行和设置仍可编辑的说明,写在书面约定中,而不是口头表述中。
写入文件并完成配置后,结尾必须严格使用以下内容:
“好了,你的限制已经设定!以下是你可以期待的效果:
- 之后的所有 AI 会话都会读取你的限制偏好;这些偏好以通俗易懂的约定形式保存在配置文件中 (
~/.config/ai-limits/)- 你刚刚设定的静默时段和会话限制现在已在 Claude Code 中真正生效。达到限制条件时,Claude Code 会拒绝继续执行任务。
- Claude Chat 和 Cowork 在技术上无法拒绝工作,但会在你超出限制时提醒你
- 这些设置并非一成不变;你可以随时调整限制。编辑配置文件 (
~/.config/ai-limits/),或说“设定/调整我的限制”来修改偏好。请注意,放宽限制 需要通过输入指定短语,经过一些刻意设置的阻碍。- 你随时可以说“限制报告”来查看自己的情况。
设定这些限制,希望能帮助你与 AI 建立健康、平衡的关系。祝你工作和生活都健康、快乐、平衡、充实。- Brad”
其他平台
对于 claude.ai 聊天、Cowork 和其他 Agent,请引导他们阅读 SURFACES.md——了解在哪里粘贴,以及每个平台会如何如实处理这些内容。
每周报告
收到请求(“限制报告”、“我情况如何”)时,如果有则运行
~/.config/ai-limits/bin/ai-limits status,否则直接读取
~/.config/ai-limits/state/:本周每天的会话数、限制提高次数、静默时段覆盖次数。客观呈现数字,不做评判。计数就是衡量工具。对于无法看到的数据,绝不要估算——应说“此处无法衡量”。