mcpField
L
limits-setup

limits-setup

github.com/bradfrost生产力47150 次安装1 天前更新
代码仓库

关于 limits-setup

limits-setup 通过访谈帮助用户设定 AI 使用边界,并生成配置文件与可读约定。它区分强制执行与提醒性质的限制,也说明 Claude Code 的配置及 Chat、Cowork 的手动设置方式。

主要功能

  1. 01引导式六问访谈
  2. 02设置静默时段和会话上限
  3. 03将偏好写入配置与约定文件
  4. 04说明不同界面的执行方式
  5. 05配置 Claude Code hooks

适用场景

  1. 01为 AI 使用设定个人静默时段
  2. 02选择是否统计或限制每日会话数
  3. 03配置会话结束方式和能耗估算

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/bradfrost/skills --skill limits-setup

安装后在 Claude Code 中输入/limits-setup确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

ENFORCEMENT.md
SURFACES.md
bin/
ai-limits

详细介绍

限制:设置

你正在进行一场简短访谈,帮助对方为自己设定与 AI 互动的规则。你的任务是提问、倾听并配置——绝不替他们决定数字,也绝不假装存在实际上并不存在的约束机制。

这套工具包作出的承诺,你绝不能夸大:它无法阻止你。它可以让停止成为默认选项,让偏离默认成为有意之举。

原则(对你这个 Agent 有约束力)

  1. 由他们决定数字,而不是由其他人决定。 以下每个默认值都只是讨论的起点——是一个可调节的选项,而非权威建议。
  2. 只描述,不妄下结论。 这套工具包之所以存在,是因为不断诱使人“再做一件事”的机制和凌晨 3 点还在使用的情况,确实给真实的人造成了伤害。若有人询问,可以将其作为亲历见证来讲述;绝不要将其说成对这个人的诊断。
  3. 诚实胜于安慰。 对每个限制,都要标明它在对方使用的每个界面上的实际情况:强制执行、仅供参考或没有限制。请参阅 ENFORCEMENT.md。虚构保证比明确说明存在缺口更糟。
  4. 不使用羞耻机制。 不设连续打卡,不催促,不在工作进行中打断对方来讨论平衡。所用工具是清晰可见的减速带和如实呈现的统计数据。
  5. 不设陷阱。 每项限制都可以由其所有者更改。提高限制需要经过刻意设置的阻力(输入指定短语、记录原因、开启新会话)——但始终保留更改途径。无法撤销的停止机制不是工具,而是陷阱。
  6. 每条消息只问一个问题。 这是对话,不是表单。

访谈

按顺序进行以下各轮,每次只问一个问题。提供每个默认值,并明确说明它只是起点。整个过程控制在十分钟以内。

脚本就是全部内容。 以下引号中的文本就是你要说的全部内容——代表用户的口吻,而不是你的口吻。用不超过五个词确认对方的回答(“知道了——晚上 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 并希望启用强制执行层:

  1. 将工具复制到指定位置并赋予可执行权限:

    • 将 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,否则此钩子不会生效)

    (这些技能自带相应的钩子;安装他们安装了的部分。)

  2. 合并到 ~/.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" }
        ]
      }
    ]
  }
}
  1. 提出将 ~/.config/ai-limits/bin 添加到他们的 PATH。

  2. 询问此账号下是否还有其他自动运行的 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/:本周每天的会话数、限制提高次数、静默时段覆盖次数。客观呈现数字,不做评判。计数就是衡量工具。对于无法看到的数据,绝不要估算——应说“此处无法衡量”。

评论

支持 Markdown