SuperAPI AI 工具集

ardoise

智能体与模型

查看项目

更新于 10-16 06:39

技能介绍

Ardoise 是一个让 Claude 在“空白石板”状态下运行的工具。它启动的 Claude 只能看到自身的训练权重和内置技能,不会加载 CLAUDE.md、自定义技能、hooks、插件或项目上下文,就像餐厅里被擦干净的 ardoise(石板)一样。

用途

Ardoise 主要用于需要“无上下文污染”的 Claude 测试场景,包括:

  • 插件测试:验证 claude plugin install 在默认 ~/.claude 环境下是否正常工作。
  • 设计研究:观察一个 Claude 会自然产生哪些动词、模式或命名。
  • 技能评估:检验一个“天真”的 Claude 能否在首次阅读时理解 SKILL.md。
  • 评估基线:作为 A/B 测试中“无技能”的对照组。
  • 隔离测试:验证某个提示词在没有你的生态上下文时是否仍然有效。
  • 冷启动批评:获取不受你既有约定影响的反馈。

主要能力

Ardoise 提供两种运行模式:

  • 交互模式(默认):打开 Claude 的 TUI,呈现一个全新用户会看到的样子。适合手动测试插件安装、引导流程,以及“新用户会经历什么”这类问题。
  • 打印模式(-p):运行 claude -p,适合自动化或脚本化使用,例如问卷调查、评估、冷启动批评。

使用方式

脚本位于 trousse 插件中。首先解析路径:

SCRIPT="${CLAUDE_PLUGIN_ROOT}/scripts/ardoise.sh"

如果调用上下文中未设置 CLAUDE_PLUGIN_ROOT,则使用回退方案:

[ -x "$SCRIPT" ] || SCRIPT=$(find ~/.claude/plugins/cache -path "/trousse//scripts/ardoise.sh" 2>/dev/null | sort -r | head -1)

回退方案使用 sort -r | head -1,在存在多个缓存副本时优先选择最高版本。

交互模式(默认):

"$SCRIPT" # 在 /tmp 中打开 TUI "$SCRIPT" ~/some/project # 在指定目录中打开 TUI

打印模式:

"$SCRIPT" -p "What is the best way to structure a CLI?" "$SCRIPT" -p --max-turns 1 "Reply with only: hello" echo "Design a work tracker" | "$SCRIPT" -p --stdin --max-turns 1

从 Claude Code 中调用(OuterClaude 调用 InnerClaude):

在 Bash 工具调用中:

"$SCRIPT" -p --max-turns 1 "Your prompt here"

env -i 清理会移除 CLAUDECODE=1,因此内层 Claude 不知道自己被嵌套,不会产生启动阻力。

工作原理

Ardoise 通过三种跨平台(POSIX)机制实现隔离:

  • env -i:阻止所有继承的环境变量,包括 CLAUDECODE=1(嵌套检测)。
  • HOME=<tmpdir>,仅保留精简的 claude.json 和凭据:阻止 CLAUDE.md、settings.json、hooks、技能、插件、MCP 配置。
  • cd /tmp(或指定目录):阻止项目 CLAUDE.md、git 仓库上下文、本地 .claude/ 目录。

此外,以下环境变量用于抑制噪音:

  • CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY=1:无调查弹窗。
  • CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1:无遥测。
  • CLAUDE_CODE_DISABLE_AUTO_MEMORY=1:无自动记忆文件。
  • ENABLE_CLAUDEAI_MCP_SERVERS=false:无内置 Gmail/Calendar MCP。

claude.json 从真实文件复制(保留引导状态和功能标志),但会剥离项目数据、技能使用记录和市场自动安装信息。

Ardoise Claude 能看到什么

  • 全局 CLAUDE.md:不可见
  • 项目 CLAUDE.md:不可见
  • 自定义技能(插件缓存):不可见
  • 内置技能(simplify、loop、claude-api):可见——已编译进 Claude Code
  • Hooks:不可见
  • MCP 服务器:不可见
  • 插件:不可见
  • 宿主文件系统:可见——这是上下文隔离,不是安全沙箱

关键发现:~/.claude.json 符号链接

Claude Code 从 $HOME/.claude.json(HOME 根目录下的符号链接)读取配置,而不是直接从 $HOME/.claude/claude.json 读取。如果临时 HOME 中没有这个符号链接,Claude 会把每次启动都当作全新启动并显示引导向导。脚本会自动创建这个符号链接。

与其他技能组合

  • skill-forge:评估基线——在不加载技能的情况下运行提示词,进行 A/B 对比。

反模式

  • 使用 Agent/Task 工具进行“天真”测试:子代理会继承完整的父上下文。应通过 Bash 工具使用此脚本。
  • 传递 --system-prompt 并假设已隔离:CLAUDE.md 仍会加载。应使用 ardoise.sh。
  • 使用 --allowed-tools "" 实现无工具模式:模型会浪费轮次尝试使用工具。应传递 --tools ""。
  • 挂载真实的 HOME:上下文会泄漏。应让脚本处理 HOME。
  • 忘记 ~/.claude.json 符号链接:每次都会出现引导向导。脚本会自动处理。

限制

Ardoise 是上下文隔离,不是安全沙箱。它无法阻止启动的 Claude 在知道路径的情况下读取宿主文件。如需安全隔离,请使用容器。此外,它不适用于测试你自己的技能是否正常工作——那种场景需要加载上下文,而不是剥离上下文。