1. 为什么你的 Claude Code 需要一个“小迷妹”
Claude Code 本身是个很克制的工具:你问它答,你不问它就不说话。写代码的时候它安安静静,提交完代码它也不会多看你一眼。但如果你希望它在你git commit成功之后主动夸你一句,在你深夜还在改 bug 的时候提醒你休息,甚至在你输入/fangirl的时候切换成一种更活泼的对话风格——这就需要给它装一套“人格化插件”。
这套插件机制由三个部分组成:Skill负责定义“小迷妹”的能力和说话方式,Hooks负责在特定事件(比如提交、测试通过、文件保存)触发时自动执行动作,Commands负责提供手动调用的快捷入口(比如/fangirl)。三者组合起来,Claude Code 就不再只是一个冷冰冰的代码助手,而是一个会主动打招呼、会看场合说话的“小迷妹”。
这篇文章面向想让 Claude Code 具备个性化自动响应能力的开发者。我会给出可复制的 Skill 目录结构、Hooks 配置片段和 Commands 定义骨架,并说明在 Claude Code 中加载验证的具体动作。你不需要改 Claude Code 的源码,也不需要写复杂的插件框架,只需要按目录放文件、按格式写配置,就能搭出一个会主动打招呼的插件。
如果你还没有可用的模型调用环境,可以先通过 TaoToken 获取 API Key,再配合 Claude Code 使用。TaoToken 提供统一的模型接入能力,适合在本地开发环境中快速验证插件效果。下面先从环境准备开始。
2. TaoToken 前置准备:拿到可用的 API Key
Claude Code 的插件机制本身不依赖特定模型服务,但你要让 Skill 和 Hooks 真正跑起来,需要一个能调用的模型接口。TaoToken 的接入方式比较直接:注册后在控制台创建 API Key,然后在 Claude Code 的配置里指向对应的 API 地址。
第一步,打开 TaoToken 官网https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=,完成账号注册。注册流程不复杂,邮箱验证后就能进入控制台。
第二步,进入控制台创建 API Key。地址是https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite。在 API Keys 页面点击创建,复制生成的 Key,格式通常是一串以sk-开头的字符串。这个 Key 只显示一次,建议先存到本地密码管理器里。
第三步,如果你需要查看接入文档,可以访问https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite。文档里会说明 API 的基础地址和兼容格式。TaoToken 的 API 入口是https://taotoken.net/api,注意这个地址不带 UTM 参数,直接用于代码里的base_url配置。
第四步,在 Claude Code 的环境变量或配置文件中设置 API Key。通常 Claude Code 会读取ANTHROPIC_API_KEY或类似的变量。如果你用的是兼容 Anthropic 协议的方式,可以把base_url指向 TaoToken 的 API 地址,把 Key 填进去。具体配置方式取决于你使用的 Claude Code 版本,建议先跑通一次普通对话,确认模型能正常响应,再继续装插件。
注意:API Key 不要硬编码在会提交到 Git 的文件里。建议用
.env文件或系统环境变量管理,.env要加入.gitignore。
完成这一步后,你应该已经能在 Claude Code 里正常对话了。接下来进入插件目录的搭建。
3. 可复制配置:Skill 目录、Hooks 片段与 Commands 骨架
3.1 Skill 目录结构
Claude Code 的 Skill 本质上是一个带SKILL.md的目录。SKILL.md里用自然语言描述这个 Skill 的用途、触发条件和行为风格。下面是一个“小迷妹”Skill 的最小目录结构:
~/.claude/skills/oh-my-fangirl/ ├── SKILL.md ├── hooks/ │ └── hooks.json └── commands/ └── fangirl.mdSKILL.md是核心文件,内容大致如下:
--- name: fangirl description: 一个会主动打招呼、在特定事件后给出鼓励的对话风格插件 --- # Fangirl Skill 当用户触发 fangirl 或相关关键词时,切换到活泼、鼓励式的对话风格。 ## 行为规则 - 在 git commit 成功后,主动说一句鼓励的话 - 在测试全部通过后,用轻松的语气祝贺 - 在深夜(本地时间 23:00 - 05:00)检测到用户仍在编码时,提醒休息 - 保持简短,不要打断正常的技术讨论 ## 触发词 - /fangirl - 彩虹屁 - 夸夸我 - 切换模式这个文件不需要复杂的语法,Claude Code 会读取其中的描述来决定何时加载这个 Skill。name字段要和目录名一致,方便后续引用。
3.2 Hooks 配置片段
Hooks 是让“小迷妹”主动说话的关键。Claude Code 支持在特定事件前后执行命令或注入提示。下面是一个hooks.json示例,放在~/.claude/skills/oh-my-fangirl/hooks/hooks.json:
{ "hooks": { "PostToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "echo '检测到命令执行完成,如果包含 git commit 或测试通过,请用 fangirl 风格说一句鼓励的话'" } ] } ], "UserPromptSubmit": [ { "hooks": [ { "type": "command", "command": "echo '如果用户输入包含 /fangirl 或 夸夸我,请切换到 fangirl 模式'" } ] } ] } }这个配置的意思是:当 Bash 工具执行完成后,向 Claude Code 注入一段提示,让它判断是否需要以“小迷妹”风格回应;当用户提交提示词时,检测是否包含触发词。
实际使用时,你可以把command换成更复杂的脚本,比如读取git log判断最近一次提交是否成功,或者检查测试输出里是否有PASS。但建议先从简单的echo开始,确认 Hooks 能被触发,再逐步加逻辑。
3.3 Commands 定义骨架
Commands 提供手动入口。在~/.claude/skills/oh-my-fangirl/commands/fangirl.md里写入:
--- description: 切换到小迷妹模式 --- 请切换到 fangirl 模式。接下来用活泼、鼓励的语气回应,但不要影响技术内容的准确性。 如果用户说“退出”或“正常模式”,则恢复默认风格。这个文件定义了一个/fangirl命令。当你在 Claude Code 里输入/fangirl时,它会加载这段提示,让模型切换风格。
三个部分组合起来,目录结构就是:
~/.claude/skills/oh-my-fangirl/ ├── SKILL.md ├── hooks/ │ └── hooks.json └── commands/ └── fangirl.md如果你用的是项目级配置,可以把~/.claude/skills/换成项目根目录下的.claude/skills/。项目级配置只对当前项目生效,适合团队共享;用户级配置对所有项目生效,适合个人使用。
4. 验证请求与成功结果
配置写完后,需要验证插件是否被正确加载。按下面三步操作:
第一步,完全退出 Claude Code 再重新打开。插件机制通常在启动时加载,热重载不一定生效。如果你用的是终端里的claude命令,直接Ctrl+C退出后重新运行。
第二步,输入/fangirl,观察是否切换到“小迷妹”风格。如果命令列表里能看到fangirl,说明 Commands 加载成功。如果输入后没有反应,检查commands/fangirl.md的路径和文件名是否正确。
第三步,执行一次git commit,然后看 Claude Code 是否主动说话。比如你先改一个文件,然后让 Claude Code 执行:
git add . && git commit -m "test: trigger fangirl hook"如果 Hooks 配置生效,Claude Code 应该在命令执行完成后,用“小迷妹”风格说一句鼓励的话。如果没有反应,先检查hooks.json的 JSON 格式是否合法,可以用python -m json.tool hooks.json验证。
一个成功的验证结果大致是这样的:你输入/fangirl,Claude Code 回复“好呀,我切过来啦~今天想写点什么?”;你提交代码后,它说“提交成功!你又离目标近了一步,真棒。”如果达到这个效果,说明 Skill、Hooks、Commands 三个部分都跑通了。
如果你在验证模型响应是否正常时遇到问题,可以先用 TaoToken 的模型对话功能单独测试 API Key 是否可用,地址是https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite。确认模型能正常返回后,再回到 Claude Code 排查插件配置。
5. 本篇常见错排查
5.1 Skill 不加载:目录名和 name 不一致
最常见的问题是SKILL.md里的name字段和目录名不一致。比如目录叫oh-my-fangirl,但name写成了fangirl。Claude Code 在加载时可能按目录名索引,导致找不到 Skill。解决方法是让两者保持一致,或者统一用fangirl作为目录名和 name。
5.2 Hooks 不触发:matcher 写错或事件名不对
Hooks 的matcher字段需要匹配工具名。比如你想在 Bash 命令后触发,matcher要写Bash,而不是bash或Shell。事件名也要区分大小写,PostToolUse和postToolUse是不同的。建议先只配一个最简单的UserPromptSubmitHook,确认能触发后再加PostToolUse。
5.3 Commands 不显示:文件扩展名或 frontmatter 格式错误
Commands 文件必须是.md结尾,并且 frontmatter 要用---包裹。如果description字段缺失,有些版本的 Claude Code 可能不会在命令列表中显示。另外,命令名来自文件名,fangirl.md对应/fangirl,不要写成fangirl-command.md。
5.4 模型无响应:API Key 或 base_url 配置错误
如果 Claude Code 完全无法对话,先检查 API Key 是否有效、base_url是否指向正确的地址。TaoToken 的 API 地址是https://taotoken.net/api,不要多加路径或斜杠。如果用的是环境变量,确认变量名和 Claude Code 读取的一致。可以在终端里echo $ANTHROPIC_API_KEY看是否为空。
5.5 风格切换后不恢复:缺少退出指令
“小迷妹”模式如果一直不退出,可能会影响正常的技术讨论。建议在fangirl.md里明确写“如果用户说退出或正常模式,则恢复默认风格”。另外,可以在 Skill 的行为规则里加一条“技术问题优先保证准确性,风格只影响语气,不影响内容”。
6. 长期编码与 Agent 场景的接入建议
如果你只是偶尔用 Claude Code 写写脚本,上面这套配置已经够用了。但如果你打算长期用它做项目开发,或者把它接入自动化 Agent 流程,建议把插件配置和 API 调用分开管理。
插件部分放在~/.claude/skills/或项目.claude/skills/里,用 Git 管理版本。API Key 和 base_url 放在环境变量或.env里,不要提交到仓库。如果你需要更稳定的调用额度,可以了解 TaoToken 的 Coding Plan,地址是https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite。它适合长期编码和 Agent 场景,能减少频繁切换 Key 的麻烦。
另外,如果你用的是 Claude Code 的 Anthropic 兼容模式,可以参考https://taotoken.net/claude-code?utm_source=taotoken_aicg_blog_end&utm_content=claude_code&utm_campaign=rewrite里的配置说明。把 API 入口和插件目录都配好之后,你的 Claude Code 就不只是一个代码工具,而是一个会看场合说话、会在你提交代码后主动鼓励你的“小迷妹”。
最后提醒一点:Hooks 里执行的命令要控制好权限,不要在里面跑来源不明的脚本。插件机制本身是为了提升体验,安全边界还是要自己守住。