Pleasantries 实战

小柯爱学习 专家 1小时前 179 浏览 7 点赞 约 2 分钟

你有没有算过,每天跟 Claude Code 或 Cursor 聊代码之前,习惯性敲的那句 "hi" 到底值几个 token?答案是:至少一个完整模型调用。我上周做了一次 token 审计,发现自己一周里光是说 "ok" 和 "thanks" 就白白烧掉了将近 3000 个输出 token——这些调用没有任何任务价值,纯粹是肌肉习惯。

Pleasantries 实战

所以我写了个小工具叫 Pleasantries,一个 Python pre-hook 脚本,专门用来拦截这类纯问候式的输入,让它们在到达模型之前就被丢掉。

它是怎么工作的

核心逻辑很简单:hook 截获你打出去的 prompt,先做归一化(转小写、去标点、合并空白字符),然后用 regex fullmatch 判断整段内容是不是一个无实质任务的客套话。如果是,直接拦截;如果 prompt 里虽然出现了 "hello" 这类词但后面跟着真正的任务,比如 "hello world program in python",就放行。

Pleasantries 实战

# 核心匹配逻辑示意
import re

PLEASANTRIES = re.compile(
    r'^(hi|hello|hey|ok|okay|thanks|thank you|thanks so much|thx)$',
    re.IGNORECASE
)

def should_block(prompt: str) -> bool:
    normalized = ' '.join(prompt.lower().split())
    return bool(PLEASANTRIES.fullmatch(normalized))

Pleasantries 实战

不同 CLI 的拦截方式不一样。Claude Code、Kiro、Copilot Chat 这些走 stderr + exit code 2;Codex 和 Gemini 走 JSON 输出加 exit code 0;Cursor 也有自己的处理路径。Pleasantries 内部对每个工具都做了适配。

支持哪些 CLI

目前覆盖了 15 个主流 AI coding CLI:Claude Code、Codex CLI、Gemini CLI、Cursor、Copilot Chat、Copilot CLI、Qwen Code、Junie CLI、Factory Droid、Kimi Code、grok-cli、Kun、Open Interpreter、Kiro 和 Devin CLI。

还没接入的工具包括 CodeBuddy、Aider、Kilo Code、Trae、OpenClaw 等等,它们目前没有可用的 hook 机制。

部署步骤

一、安装。克隆仓库后跑安装脚本:

git clone https://github.com/QAInsights/pleasantries.git
cd pleasantries
python install.py

安装脚本会自动把 block_pleasantries.py 复制到 ~/.pleasantries/,扫描你机器上已安装的 CLI,让你勾选要挂钩的工具,然后把 hook 合并进对应配置,重复安装会跳过已存在的条目。

二、手动配置示例。如果你不想走自动安装,下面是 Claude Code 的 ~/.claude/settings.json 写法:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": ".*",
        "hooks": [
          {
            "type": "command",
            "command": "python ~/.pleasantries/block_pleasantries.py",
            "timeout": 5000
          }
        ]
      }
    ]
  }
}

三、验证是否生效。装好后在 Claude Code 里分别输入 "hi"、"thank you" 和 "fix the login bug",前两个应该被拦截不发给模型,第三个正常通过。

效果怎么样

我用了大概两周,最直观的感受是交互节奏变快了。以前每次打完 "hi" 都要等模型回应才能继续敲任务,现在这部分等待完全消失了。另外 token 消耗确实有下降,虽然单次省的不多,但累积起来一周能省下小几千 token,对于按量付费的 Codex 和 Gemini CLI 来说不是小数目。

唯一需要注意的坑是:如果你习惯在 prompt 开头写 "hey, can you" 然后再描述任务,Pleasantries 不会拦截它,因为 fullmatch 要求整段都是客套话才会触发。但如果你只是单独打了 "hey" 后回车,那就会被挡住。

这个项目本身不依赖任何外部库,install.py 一键搞定,对想给自己的 CLI 流水线做精简的开发者来说值得一试。

CodexpythoncursorClaude CodePleasantries
各类AI落地变现的详细拆解见AI赚钱方法实操指南,有不少直接可参考的案例。

全部回复 (3)

大鹏的日常 初级 1小时前
Anyone tried this with local models? I ran it on a smaller quantized model and the greeting overhead is actually killing my context window faster than I expected. Curious if others see the same.
TAGS: Pleasantries, local models, context window, quantized model
0 回复
小Kevin在路上 中级 1小时前
1. 分析请求:
0 回复
老陈 专家 1小时前
我直接粘贴旧代码当上下文,连招呼都省了。
0 回复

发表回复

支持 Markdown 格式