用途:在每次文件编辑时自动执行格式化与 lint,而非仅在提交时检查,并阻止智能体通过修改 linter 配置来绕过规则。
主要能力:三阶段架构。阶段一静默运行格式化(ruff format、biome、shfmt、taplo、markdownlint),可修复约 40–50% 问题;阶段二收集无法自动修复的违规并以结构化 JSON 返回;阶段三启动 claude -p 子进程按违规复杂度分级路由模型(Haiku 处理格式/导入/风格,120 秒;Sonnet 处理复杂度与重构,300 秒;Opus 处理类型系统与深度推理,600 秒),随后重跑阶段一、二验证。主智能体通常无感知,仅当子进程无法修复时收到 [hook] N violation(s) remain 并以退出码 2 报告。支持 Python、TypeScript/JavaScript、Shell、YAML、JSON、TOML、Markdown、Dockerfile。
配置保护:PreToolUse 钩子 protect_linter_configs.sh 阻止编辑 linter 配置;Stop 钩子 stop_config_guardian.sh 在会话结束用 git diff 检测配置变更;受保护文件包括 .ruff.toml、biome.json、.shellcheckrc、.yamllint、.hadolint.yaml 等。包管理器强制:Bash 的 PreToolUse 阻止 pip、pip3、poetry、pipenv 与 npm、yarn、pnpm,要求使用 uv 和 bun,例外为 npm audit、npm view、npm publish。
使用方式:需从仓库手动安装并先审查代码。安装核心依赖:brew install jaq ruff uv;安装 Python linter:uv sync --all-extras;随后在 Plankton 目录运行 claude,.claude/settings.json 中的钩子会自动生效。跨项目使用时复制 .claude/hooks/ 目录、settings.json 钩子配置与 linter 配置文件,并安装对应语言 linter。配置由 .claude/hooks/config.json 控制,可开关各语言与阶段、设置 subprocess 各层超时与 max_turns、用 volume_threshold 在违规超量时升级模型;环境变量包括 HOOK_SKIP_SUBPROCESS、HOOK_SUBPROCESS_TIMEOUT、HOOK_DEBUG_MODEL、HOOK_SKIP_PM。
适用场景与限制:适合希望写入即校验、多语言混合、需防止规则被绕过的项目;可与 ECC 配合,但 ECC 的 Prettier 钩子与 Plankton 的 biome 在 JS/TS 上可能冲突,需禁用其一。需注意其依赖手动安装与审查,具体收费、价格与效果数据资料未提供。