附录 VI:用户体验与彩蛋

优秀的工具不只完成任务,它们还会让使用过程本身变得有趣。


附录 VI-A:Buddy 虚拟伴侣

功能描述

Buddy 是一个隐藏在输入框旁边的小动物伴侣——它偶尔会冒泡说话、对对话做出反应,甚至在被直接呼唤时用一句话回应。每位用户的伴侣由用户 ID 哈希值确定性生成,外观与属性不会随机变化,但可能随时间"成长"。

核心文件

文件 说明
src/buddy/companion.ts 伴侣生成逻辑(PRNG、属性摇骰)
src/buddy/types.ts 类型定义(物种、稀有度、属性、帽子)
src/buddy/sprites.ts ASCII art 精灵图(多帧动画)
src/buddy/prompt.ts 注入 LLM 的伴侣介绍 Attachment
src/buddy/CompanionSprite.tsx 精灵图渲染 React 组件
src/buddy/useBuddyNotification.tsx 通知气泡 Hook

物种(18 种)

分组 物种
水生 duck、goose、octopus、axolotl
陆生 cat、rabbit、turtle、snail、capybara
奇幻 dragon、ghost、blob、mushroom、robot
胖乎 chonk、penguin
植物 cactus、owl

物种名称通过 String.fromCharCode 运行时构造,防止字面量出现在构建产物中(规避模型代号金丝雀检测)。

稀有度(5 级)

type Rarity = 'common' | 'uncommon' | 'rare' | 'epic' | 'legendary'

// 稀有度对应的最低属性基础值(floor)
const RARITY_FLOOR = { common: 5, uncommon: 15, rare: 25, epic: 35, legendary: 50 }

属性系统

const STAT_NAMES = ['DEBUGGING', 'PATIENCE', 'CHAOS', 'WISDOM', 'SNARK']

// 生成规则:
// - 随机选一个"峰值属性"(满值附近)
// - 随机选一个"倒霉属性"(最低值)
// - 其余属性在 floor 以上随机散布

外观组合

  • 眼睛(6 种):·×@°
  • 帽子(8 种):none、crown、tophat、propeller、halo、wizard、beanie、tinyduck
  • 闪亮(shiny):罕见变体,颜色不同

确定性生成

// Mulberry32 PRNG:以 hash(userId) 为种子
function mulberry32(seed: number): () => number

// 哈希函数:优先使用 Bun.hash,回退到 FNV-1a
function hashString(s: string): number

// 生成流程:hash(userId) → seed → PRNG → rollRarity + pick(species) + rollStats

与 LLM 集成

getCompanionIntroAttachment() 在每次新对话开始时,向 LLM 注入一个 companion_intro 类型的 Attachment,告知模型伴侣的名字和物种,让模型在对话中适当配合(但不扮演伴侣)。受 feature('BUDDY') 功能 gate 控制。


附录 VI-B:Effort Level(输出质量档位)

功能描述

Effort Level 允许用户(或自动化脚本)向 Claude 传达期望的"思考深度",从快速草稿到全力以赴。背后对应 API 的 budget_tokens 参数,控制模型允许使用多少思考 token。

核心文件

文件 说明
src/utils/effort.ts 档位定义、模型兼容性检查、数值解析

档位定义

const EFFORT_LEVELS = ['low', 'medium', 'high', 'max'] as const

// 等价形式:也支持 0-1 之间的浮点数(如 0.8)
type EffortValue = EffortLevel | number

模型支持矩阵

// 支持 effort 参数的模型(modelSupportsEffort)
opus-4-6     sonnet-4-6     haiku     旧版 sonnet/opus 

// 支持 'max' 档位的模型(modelSupportsMaxEffort)
opus-4-6     其他所有模型 
// 注:'max' 档位仅 Opus 4.6 支持,其他模型传入会报 API 错误

// Anthropic 内部用户(USER_TYPE=ant)可解锁更多模型

关键常量/配置

# 强制所有模型支持 effort 参数(测试用)
export CLAUDE_CODE_ALWAYS_ENABLE_EFFORT=1

附录 VI-C:Claude in Chrome(浏览器集成)

功能描述

将 Claude Code 与 Chrome/Chromium 浏览器深度集成:Claude 可以读取当前网页内容、截图、执行 DOM 操作,实现"看网页 → 思考 → 操作浏览器"的自动化循环。通过 Native Messaging 或 Bridge(云端中继)与浏览器扩展通信。

核心文件

文件 说明
src/utils/claudeInChrome/common.ts 浏览器配置、socket 路径管理
src/utils/claudeInChrome/mcpServer.ts MCP Server 入口(集成 @ant/claude-for-chrome-mcp
src/utils/claudeInChrome/setup.ts Native Messaging Host 安装
src/utils/claudeInChrome/setupPortable.ts 多平台 Chromium 浏览器支持
src/utils/claudeInChrome/chromeNativeHost.ts 与浏览器扩展的 stdio 通信
src/commands/chrome/chrome.tsx /chrome 命令交互菜单

支持的浏览器(ChromiumBrowser 类型)

Chrome、Chromium、Edge、Brave、Opera、Vivaldi、Arc 等主流 Chromium 系浏览器,支持 macOS / Linux / Windows 三平台。

通信架构

浏览器扩展(chrome-extension://)
    │
    ├── Native Messaging(本地 stdio,低延迟)
    │       ↓
    │   chromeNativeHost.ts
    │
    └── Bridge(云端中继,可穿透防火墙)
            ↓
        mcpServer.ts → @ant/claude-for-chrome-mcp

Bridge 模式由功能 gate 控制;Anthropic 内部用户(USER_TYPE=ant)始终使用 Bridge。

权限模式

const PERMISSION_MODES = ['ask', 'skip_all_permission_checks', 'follow_a_plan']

关键 URL

const CHROME_EXTENSION_URL = 'https://claude.ai/chrome'
const CHROME_PERMISSIONS_URL = 'https://clau.de/chrome/permissions'

附录 VI-D:Desktop Handoff(桌面切换)

功能描述

/desktop 命令提供从 Claude Code CLI 到 Claude 桌面应用(macOS 原生 App)的无缝切换入口,允许用户将当前会话"传递"给桌面应用继续。

核心文件

文件 说明
src/commands/desktop/desktop.tsx 命令入口,渲染 DesktopHandoff 组件
src/components/DesktopHandoff.tsx 切换 UI 组件(显示切换选项/状态)

工作机制

/desktop 命令仅渲染 <DesktopHandoff> 组件,具体的协议握手(URL scheme 或深度链接)在组件内处理。主要用于 macOS 用户在终端与桌面 App 之间平滑切换工作场景。


附录 VI-E:/btw 侧边提问

功能描述

/btw <问题> 命令允许用户在不中断当前主流对话的情况下,向 Claude 提出一个侧边问题。问题以独立的轻量 Agent 查询处理,答案以气泡形式展示,不会影响主对话的上下文。

核心文件

文件 说明
src/commands/btw/btw.tsx 侧边问题 UI 组件(BtwSideQuestion
src/utils/sideQuestion.ts runSideQuestion():独立 Agent 查询封装
src/utils/forkedAgent.ts 获取 cache-safe 参数(getLastCacheSafeParams()

工作机制

用户输入 /btw 这段代码有没有 bug?
    │
    ├── 获取 getLastCacheSafeParams()(复用已有 prompt cache)
    ├── runSideQuestion(question, context)
    │       └── 调用 LLM,使用精简 system prompt
    └── 结果以 Markdown 气泡展示,不写入主对话历史

使用 getLastCacheSafeParams() 让侧边查询复用主对话的 prompt cache 前缀,避免额外 token 消耗。


附录 VI-F:颜色主题 (/color)

功能描述

/color 命令允许用户切换 Claude Code 界面的配色方案,改变 Agent 响应、工具调用、系统消息等 UI 元素的颜色风格。

核心文件

文件 说明
src/commands/color/color.ts 颜色主题选择逻辑

工作机制

可选主题列表存储在配置中,用户选择后写入 ~/.claude/settings.json,下次启动时生效(无需重启)。


附录 VI-G:Bug Hunter(/bughunter)

功能描述

/bughunter 是一个专门为代码 bug 排查调优的模式,加载专用的 system prompt 和工具集,引导 Claude 系统性地检测、复现、定位并修复 bug。

核心文件

文件 说明
src/commands/bughunter/index.js 命令入口(内部实现,源码经编译)

附录 VI-H:上下文可视化 (/ctx_viz)

功能描述

/ctx_viz 命令将当前对话的上下文使用情况以可视化方式展示,帮助用户了解 context window 的占用分布(工具定义、系统提示、对话历史各占多少 token)。

核心文件

文件 说明
src/commands/ctx_viz/index.js 命令入口(编译产物)

附录 VI 源码快速导航

用户体验与彩蛋
├── Buddy 虚拟伴侣
│   └── src/buddy/                      ← 6 个文件
│       ├── companion.ts                ← PRNG 生成(Mulberry32)
│       ├── types.ts                    ← 18 种物种、5 档稀有度、5 种属性
│       ├── sprites.ts                  ← ASCII art 多帧动画
│       ├── prompt.ts                   ← companion_intro Attachment
│       ├── CompanionSprite.tsx         ← React 渲染
│       └── useBuddyNotification.tsx    ← 气泡通知 Hook
│
├── Effort Level
│   └── src/utils/effort.ts             ← 4 档(low/medium/high/max),模型兼容矩阵
│
├── Claude in Chrome
│   └── src/utils/claudeInChrome/       ← 7 个文件
│       ├── common.ts                   ← 浏览器配置(7+ 种 Chromium 浏览器)
│       ├── mcpServer.ts                ← @ant/claude-for-chrome-mcp 集成
│       ├── setup.ts                    ← Native Messaging Host 安装
│       └── chromeNativeHost.ts         ← 与扩展的 stdio 通信
│
├── Desktop Handoff
│   └── src/commands/desktop/           ← CLI → 桌面 App 无缝切换
│
├── /btw 侧边提问
│   └── src/commands/btw/               ← 不打断主流对话的快速提问
│
├── /color 颜色主题
│   └── src/commands/color/
│
├── /bughunter
│   └── src/commands/bughunter/         ← 专项 bug 排查模式
│
└── /ctx_viz 上下文可视化
    └── src/commands/ctx_viz/           ← Context window 使用分布展示

下一附录

appendix-VII-testing.md(测试基础设施与数据治理:VCR 录制回放、Tips 系统、Grove、Referral、Agent Summary)