代码语言
选择后全站课程跟随

附录:mini-cc 完整代码与速查表

7,597 字 · 预计阅读 22 分钟

这份附录有四样东西:怎么运行 mini-cc、一张数字速查表、完整代码、继续练手的题目。

懒得跟着每一节拼的话,直接复制这里的代码就能用。


一、怎么运行

从环境准备到启动 mini-cc

bash
# Python 3.9 以上,零依赖:不用装任何包

# 方式一:Anthropic(Claude)
export ANTHROPIC_API_KEY=你的密钥

# 方式二:DeepSeek(国产、便宜,不需要 Claude key)
export MINI_CC_API=deepseek
export DEEPSEEK_API_KEY=你的密钥

# 可选:换模型、用兼容 Anthropic 接口的第三方服务
export MINI_CC_MODEL=deepseek-reasoner
export ANTHROPIC_BASE_URL=https://...

# 在一个练习目录里运行
cd mini-cc-lab
python /你的路径/mini_cc.py

⚠️ mini-cc 能执行任意 shell 命令、改任意文件。请在专门的练习目录里运行。

它会读哪些文件

文件 作用 在哪节
~/.claude/CLAUDE.md,以及从根目录到当前目录每一层的 CLAUDE.md、.claude/CLAUDE.md、CLAUDE.local.md 项目说明 第6节
~/.claude/skills/*/SKILL.md、.claude/skills/*/SKILL.md Skill 第7节
~/.claude/agents/*.md、.claude/agents/*.md 自定义子代理 第12节
.mini-cc/settings.json 权限、Hook、MCP、插件 第4、8、9、10节

前三类和 Claude Code 共用,你已有的配置可以直接拿来用。设置单独放在 .mini-cc/ 下,免得和你真正的 Claude Code 配置互相影响。

一份完整的 settings.json

mini-cc 的设置集中在独立配置目录

json
{
  "permissions": {
    "allow": ["Bash(ls *)", "Bash(git status*)", "mcp__shop__read_query"],
    "ask": ["Bash(git push *)"],
    "deny": ["Read(./.env)", "Bash(*.env*)", "mcp__shop__write_query"]
  },
  "hooks": {
    "PreToolUse": [
      {"matcher": "Bash", "hooks": [{"type": "command", "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/block-push.sh"}]}
    ]
  },
  "mcpServers": {
    "shop": {"command": "uvx", "args": ["--with", "mcp<2", "mcp-server-sqlite", "--db-path", "./shop.db"]}
  },
  "plugins": ["./my-plugin"]
}

这份是把各节的例子拼在一起,用不到的部分直接删掉,路径按你的实际情况改。比如没有 block-push.sh 却留着那条 Hook,每次调用 Bash 都会提示一次 Hook 出错(不会阻断)。

交互命令

命令 作用 在哪节
/clear 开新会话:清空历史,重新读 CLAUDE.md,退出计划模式,清空待办 第2、5、6节
/context 看上次请求占了多少上下文、缓存命中多少、加载了哪些 CLAUDE.md 和 Skill 第5节起
/技能名 参数 手动调用一个 Skill 第7节
/compact 要求 手动压缩,可以带上要保留什么 第11节
/plan 进入或退出计划模式 第12节
/exit 退出 第2节
Ctrl+C 打断当前任务 第2节

二、数字速查表

书里出现的数字,集中放在这里。Claude Code 更新很快,这些数字随时可能变;改书的时候只改这一张表,再全文搜一下就行。

源码版本:CCB commit ______  官方文档核对日期:______  系统提示词查阅日期:2026-10-11

数字 含义 源码里的名字 / 出处 在哪节
3 次 输出被截断后,最多补几次「接着写」 max_output_tokens_recovery 第2节
10 个 只读工具最多并行几个 toolOrchestration.ts 第3节
2 的 N 次方 静态区每多一个 if,缓存变体翻倍 prompts.ts 注释 第5节
约 2 万 token 某个设置每切换一次就失效的缓存 prompts.ts 注释 第5节
2026-08-31 在这天及之后注册的账号,改过 thinking 块之前的内容会报 400 官方文档 第5节
5 层 @ 引入最多嵌套几层 MAX_INCLUDE_DEPTH 第6节
40,000 字符 单个 CLAUDE.md 超过就警告(不截断) MAX_MEMORY_CHARACTER_COUNT 第6节
200 行 / 25KB MEMORY.md 超过就截断 第6节
50 亿~150 亿 token / 周 Explore 不带 CLAUDE.md 省下的量(3400 多万次调用) runAgent.ts 注释 第6节
1% Skill 目录占上下文窗口的比例 SKILL_BUDGET_CONTEXT_PERCENT 第7节
4 字符 1 token 折算多少字符 CHARS_PER_TOKEN 第7节
1,536 字符 单条 Skill 描述上限(v2.1.117 从 250 提高) MAX_LISTING_DESC_CHARS 第7节
20 字符 平分之后每条描述少于这个数,就只留名字 formatCommandsWithinBudget() 第7节
2,048 字符 MCP 工具描述上限 client.ts 第8节
25,000 token MCP 工具输出上限(MAX_MCP_OUTPUT_TOKENS 可调) mcpValidation.ts 第8节
10,000 token MCP 输出超过就在界面上警告 第8节
10% ENABLE_TOOL_SEARCH=auto 时,工具定义超过上下文的这个比例才延迟加载 官方文档 第8节
10 分钟 命令型 Hook 默认超时 TOOL_HOOK_EXECUTION_TIMEOUT_MS 第9节
10 轮 多久没更新待办就提醒 todo_reminders 第11节
50,000 字符 单个工具结果超过就落盘 toolLimits.ts 第11节
200,000 字符 一条消息里并行工具结果的总量上限 toolLimits.ts 第11节
2KB 落盘后给模型的预览长度 toolResultStorage.ts 第11节
60 分钟 / 最近 5 个 微压缩的触发条件 / 保留几个工具结果 microcompact 第11节
20,000 token 给压缩摘要预留的输出空间(p99.99 是 17,387) autoCompact.ts 第11节
13,000 token 压缩线的缓冲 autoCompact.ts 第11节
167K(约 83%) 200K 窗口的自动压缩线 autoCompact.ts 第11节
3 次 自动压缩连续失败几次就熔断 autoCompact.ts 第11节
5 个 × 5,000 token 压缩后放回最近读过的文件 compact.ts 第11节
5,000 / 25,000 token 压缩后每个 Skill / 所有 Skill 的重新注入上限 POST_COMPACT_* 第7、11节
0.01% → 2.79% 换到 Sonnet 4.6 后,压缩时乱调工具的比例 compact/prompt.ts 注释 第11节

mini-cc 用到的模型名:claude-opus-5-5(默认)、claude-sonnet-5-5、claude-haiku-5-5。


三、源码文件索引

Claude Code 源码 讲什么 mini-cc 里对应的函数 在哪节
src/query.ts Agent loop agent_loop()、repair_after_interrupt() 第2节
src/Tool.ts 工具接口 make_tool() 第3节
src/services/tools/toolExecution.ts 七道关 execute_tool()、validate_input() 第3节
src/services/tools/toolOrchestration.ts 只读并行 run_tools() 第3节
FileEditTool 先读后改 check_fresh()、remember_read() 第3节
src/utils/permissions/permissions.ts 权限流程表 check_permission()、match_rule() 第4节
src/tools.ts deny 整个工具就删掉 setup() 第4节
src/constants/prompts.ts 系统提示词分区 build_system_prompt()、STATIC_PROMPT 第5、13节
src/context.ts、src/utils/api.ts user context get_user_context()、prepend_user_context() 第5节
src/utils/claudemd.ts CLAUDE.md get_memory_files()、process_memory_file()、get_claude_mds() 第6节
src/skills/loadSkillsDir.ts、SkillTool/ Skill load_skills()、skill_listing()、run_skill() 第7节
src/services/mcp/ MCP MCPClient、load_mcp_tools()、call_mcp_tool() 第8节
src/utils/hooks.ts、toolHooks.ts Hook run_hooks() 第9节
src/utils/plugins/ 插件 load_plugin() 第10节
src/utils/toolResultStorage.ts 大结果落盘 apply_tool_result_budget() 第11节
src/utils/attachments.ts 附件和提醒 todo_reminder() 第5、11节
src/services/compact/ 压缩 compact() 第11节
AgentTool/ 子代理 run_agent()、load_agents()、make_agent_tool() 第12节

四、完整代码

完整代码由多个可理解模块拼成

保存为 mini_cc.py。每一段都标了在哪一节加入、对应 Claude Code 源码里的哪个文件。

本文是会员内容

全文 7,597 字,已试读约 19%。 开通专业版可阅读全文,并解锁全部课程与后续更新。

开通专业版

支持 7 天无理由退款 · 早鸟期前 500 名自动升级永久卡

已经是最后一节了上一节