关于 clean-component-removal
用于在 Apple Silicon macOS 上移除 Kokoro TTS 和 Telegram bot 组件的操作指南,按顺序停止与清理,并在破坏性操作前确认,默认保留指定数据。
主要功能
- 01按序卸载 Bot 与 TTS 组件
- 02支持全部、部分或选择性移除
- 03破坏性操作前确认
- 04默认保留模型缓存和源代码
- 05移除后的验证清单
适用场景
- 01重装前卸载 Kokoro TTS
- 02仅停止并移除 Telegram bot 进程
- 03清理临时 TTS 文件和 Shell 符号链接
- 04完整拆除组件并保留可复用数据
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill clean-component-removal安装后在 Claude Code 中输入/clean-component-removal确认已加载。
附带文件references/evolution-log.md
详细介绍
清理组件
按正确顺序拆除 TTS 和 Telegram 机器人组件,避免产生孤立进程和过期状态。
平台:macOS(Apple Silicon)
自我演进技能:此技能会在使用过程中不断改进。如果说明有误、参数发生偏差或需要变通方案,请立即修复此文件,不要拖延。仅针对真实且可复现的问题进行更新。
何时使用此技能
- 用户想要卸载 Kokoro TTS 引擎
- 用户想要移除 Telegram 机器人
- 用户想要清理所有与 TTS 相关的文件
- 用户想要在重新安装前彻底拆除组件
- 用户想要有选择地移除特定组件
要求
- 无需特殊工具(移除操作仅使用
rm、pkill和安装脚本) - 执行破坏性操作前,需征得用户确认
移除顺序
移除顺序很重要。必须按以下顺序拆除组件,以避免产生孤立进程或发生锁竞争。
| 步骤 | 组件 | 命令 | 可撤销? |
|---|---|---|---|
| 1 | 机器人进程 | pkill -f 'bun.*src/main.ts' | 是(重启机器人) |
| 2 | Kokoro venv | kokoro-install.sh --uninstall | 是(重新安装) |
| 3 | Shell 符号链接 | rm -f ~/.local/bin/tts_*.sh | 是(重新创建链接) |
| 4 | 临时文件 | rm -f /tmp/kokoro-tts-*.wav /tmp/kokoro-tts.lock | 不适用 |
| 5 | 密钥(可选) | rm -f ~/.claude/.secrets/ccterrybot-telegram | 需要重新创建 |
不会移除的内容(除非明确提出要求)
默认保留以下内容,以便轻松重新安装:
| 资源 | 路径 | 保留原因 |
|---|---|---|
| 模型缓存 | ~/.cache/huggingface/hub/models--hexgrad--Kokoro-82M | 下载约 400MB,可重复使用 |
| 机器人源代码 | ~/.claude/automation/claude-telegram-sync/ | 由 Git 跟踪,并非临时文件 |
| mise.toml 配置 | ~/.claude/automation/claude-telegram-sync/mise.toml | 配置的 SSoT |
| Launchd 日志 | ~/.local/state/launchd-logs/telegram-bot/ | 由日志轮转处理 |
| NDJSON 审计日志 | ~/.claude/automation/claude-telegram-sync/logs/audit/ | 自动轮转,保留 14 天 |
工作流阶段
阶段 1:确认
使用 AskUserQuestion 确认要移除哪些组件。提供以下选项:
- 彻底拆除 -- 移除所有内容(步骤 1-4,并询问是否移除密钥)
- 仅 TTS -- 移除 Kokoro venv、符号链接和临时文件(步骤 2-4)
- 仅机器人 -- 停止机器人进程(仅步骤 1)
- 选择性移除 -- 让用户选择具体步骤
阶段 2:停止机器人进程
# Check if bot is running
pgrep -la 'bun.*src/main.ts'
# Stop it
pkill -f 'bun.*src/main.ts' || echo "Bot was not running"
阶段 3:移除 Kokoro venv
# Uses kokoro-install.sh --uninstall (removes venv, keeps model cache)
~/eon/cc-skills/plugins/tts-tg-sync/scripts/kokoro-install.sh --uninstall
阶段 4:移除符号链接
# List existing symlinks first
ls -la ~/.local/bin/tts_*.sh 2>/dev/null
# Remove them
rm -f ~/.local/bin/tts_*.sh
阶段 5:清理临时文件
rm -f /tmp/kokoro-tts-*.wav
rm -f /tmp/kokoro-tts.lock
阶段 6:可选移除密钥
仅在用户明确确认后执行:
# Show what would be removed
ls -la ~/.claude/.secrets/ccterrybot-telegram
# Remove (requires confirmation)
rm -f ~/.claude/.secrets/ccterrybot-telegram
TodoWrite 任务模板
1. [Confirm] Ask user which components to remove via AskUserQuestion
2. [Stop] Stop bot process
3. [Venv] Run kokoro-install.sh --uninstall
4. [Symlinks] Remove ~/.local/bin/ symlinks
5. [Temp] Clean /tmp/ TTS files
6. [Secrets] Optionally remove secrets (with confirmation)
7. [Verify] Confirm all selected components removed
变更后检查清单
- 机器人进程未运行(
pgrep -la 'bun.*src/main.ts'未返回任何结果) - Kokoro venv 已移除(
ls ~/.local/share/kokoro/.venv返回 "No such file") - 符号链接已移除(
ls ~/.local/bin/tts_*.sh返回 "No such file") - 没有过期的锁文件(
ls /tmp/kokoro-tts.lock返回 "No such file") - 没有孤立的音频进程(
pgrep -x afplay未返回任何结果)
故障排除
| 问题 | 可能原因 | 修复 |
|---|---|---|
| 移除后符号链接仍然存在 | 通配符不匹配或权限问题 | 运行 ls -la ~/.local/bin/tts_*,然后逐个运行 rm -f |
| 移除后残留锁文件 | 进程意外退出,未执行清理 | rm -f /tmp/kokoro-tts.lock |
| 模型缓存占用空间 | HuggingFace 缓存约占 400MB | rm -rf ~/.cache/huggingface/hub/models--hexgrad--Kokoro-82M |
| 终止后 Bot 重新启动 | 通过 launchd 使用 --watch 启动 | 检查 launchctl list 中是否有相关 Agent |
| 拆除后音频仍在播放 | afplay 进程的生命周期超过 Bot | pkill -x afplay |
参考文档
- 演进日志 -- 此技能的变更历史
执行后反思
此技能完成后,在结束任务前进行反思:
- 确认位置。 — 编辑前,找到此 SKILL.md 的规范路径(使用 Glob 搜索此技能的名称)。所有修正都针对此文件及其同级的 references/ — 绝不修改其他文档。
- 出了什么问题? — 修复导致问题的指令。如果问题可能再次发生,将其添加为反模式。
- 哪些做法的效果超出预期? — 将其提升为推荐实践,并记录原因。
- 哪些内容已经偏离? — 现在就修复任何与实际情况不符的脚本、参考资料或外部依赖。
- 记录。 — 每项变更都要在演进日志中记录触发原因、修复内容和依据。
不要推迟。下一次调用会继承你留下的一切。
评论
支持 Markdown