# AI 对话记录 — 2026年6月11日与 AI 协作时的一组问答记录，涵盖 Hugo 短代码、搜索、目录、性能优化与 Claude Code 配置。

## 对话内容

**问：** 如何在 Hugo 中创建自定义短代码（Shortcode）？

**答：** 在 Hugo 中创建自定义短代码需要在 `layouts/shortcodes/` 目录下创建 `.html` 文件。例如，如果你想创建一个 `alert` 短代码，可以创建 `layouts/shortcodes/alert.html` 文件，内容包含 HTML 模板逻辑，通过 `.Get` 和 `.Inner` 函数访问参数。

然后在 Markdown 中引用该短代码，Hugo 会在渲染时自动解析并替换为对应的 HTML 输出。

短代码支持命名参数和位置参数，非常灵活。

---

**问：** 如何在 Hugo 静态网站中实现搜索功能？

**答：** Doks 主题内置了搜索功能，它使用 Lunr.js 库进行客户端搜索。搜索是通过扫描所有内容页面并构建搜索索引来实现的。

如果你想自定义搜索，可以：

1. 修改 `config/_default/params.toml` 中的搜索配置
2. 编辑 `assets/js/` 目录中的搜索脚本
3. 调整搜索结果的显示模板

搜索索引在构建时自动生成，你不需要手动维护。

---

**问：** 怎样为博客文章添加目录（Table of Contents）？

**答：** Hugo 可以自动为 Markdown 内容生成目录。你需要在布局模板中使用 `.TableOfContents` 变量。

在 `layouts/blog/single.html` 中添加（注：`{{ }}` 为 Hugo 模板语法）：

```html
{# Hugo 模板代码示例 #}
<aside class="toc">
  <h3>目录</h3>
</aside>
```

具体实现需要使用 Hugo 的模板语法来检查目录是否存在，并动态显示。

为了控制目录深度，可以在 front matter 中配置：

```yaml
---
toc: true
toc_depth: 3
---
```

Doks 主题通常已经内置了目录支持。

---

## 补充对话（第 2 次导入）

**问：** Hugo 的性能优化有哪些最佳实践？

**答：** Hugo 构建速度已经非常快，但你可以通过以下方式进一步优化：

1. 使用 `.hugo_stats.json` 来消除未使用的 CSS
2. 启用缓存（通过资源缓存）
3. 减少图片处理操作，使用外部 CDN
4. 分离内容到多个内容目录，按需构建

---

**问：** 如何在 Hugo 中实现自定义分页？

**答：** Hugo 的分页系统非常灵活。在列表模板中，你可以使用 `.Paginate` 函数来分页内容，然后通过 `.Pager` 访问分页信息。

具体实现可以在列表模板中使用 Hugo 的模板语法来配置分页，支持自定义每页数量。

---

## 补充对话（第 3 次导入）

**问：** 在claude中安装了一个插件，一般会改变哪些配置文件的内容？

**答：** 在 Claude Code 中安装插件后，通常会修改以下几个配置文件的内容：

#### settings.json

这是最核心的配置文件，安装插件后会自动写入以下内容：

- `enabledPlugins`：记录已安装的插件及其启用状态
- `extraKnownMarketplaces`：如果插件来自新添加的 marketplace，会在此注册市场源
- `permissions`：部分插件会要求修改权限配置
- `statusLine`：某些插件（如 claude-hud）会添加状态行配置

#### 配置文件的位置取决于安装 scope

- **user（默认）**：`~/.claude/settings.json`（全局生效，所有项目可用）
- **project**：`.claude/settings.json`（项目级，随仓库共享）
- **local**：`.claude/settings.local.json`（仅本机生效，通常被 gitignore）

#### 其他可能被修改的文件

- **Hooks 配置（hooks.json）**：如果插件包含 `hooks/hooks.json`，会被合并到用户的钩子配置
- **MCP 服务器配置（.mcp.json）**：如果插件声明了 `.mcp.json`，会被添加到用户的 MCP 配置

**总结**：安装一个插件，一定会修改的是 `settings.json` 中的 `enabledPlugins` 字段；可能修改的包括 `permissions`、`extraKnownMarketplaces`、`hooks.json` 和 `.mcp.json`，具体取决于插件的功能需求。

---

**问：** cc switch切换服务商后，安装的插件为啥没了？

**答：** 插件"消失"并不是真的被卸载了，而是因为 CC-Switch 切换供应商时会覆盖 Claude Code 的配置文件，而不同供应商的配置是相互独立的。

**原因**：CC-Switch 的核心机制是每个供应商（Provider）都维护一套独立的配置文件，包含 `env`、`permissions`、`enabledPlugins` 等字段。当你从供应商 A 切换到供应商 B 时，CC-Switch 会把供应商 B 的配置写入 Claude Code 的配置路径，覆盖掉原来的配置。如果供应商 B 的配置中没有 `enabledPlugins` 字段，切换后插件列表就"没了"。

**解决方法**：

1. **使用"通用配置"功能（推荐）**：在 CC-Switch 中进入"编辑供应商"菜单，找到"通用配置面板"，点击"从当前供应商提取"，把插件等通用数据提取到通用配置中。新建/切换供应商时，确保勾选"写入通用配置"
2. **手动补全配置 JSON**：在 CC-Switch 中编辑正在使用的供应商，在配置 JSON 中手动加入 `enabledPlugins` 等字段
3. **从备份恢复**：CC-Switch 会保留最近 10 个版本的配置文件备份，路径为 `~/.cc-switch/backups/`

---

**问：** `"model": "haiku"` 这个配置的意思是什么？

**答：** `"model": "haiku"` 这个配置的意思是**指定使用 Claude Haiku 模型**。

Haiku 是 Anthropic 提供的三大模型系列之一（Opus / Sonnet / Haiku），定位是轻量、快速、低成本的模型，适合处理简单、高频的任务。

#### Claude 三大模型对比

| 模型   | 定位         | 适用场景                     |
| ------ | ------------ | ---------------------------- |
| Opus   | 最强、最贵   | 复杂推理、大型任务           |
| Sonnet | 均衡         | 日常编码主力                 |
| Haiku  | 最快、最便宜 | 简单任务、快速响应、自动评估 |

#### 在 Claude Code 中的实际用途

- **快速操作**：如简单的文件读取、格式化等不需要深度推理的操作
- **/goal 自动评估**：当你使用 `/goal` 功能时，Claude Code 会用 Haiku 模型来检查任务是否完成——它是一个"小裁判"，快速判断当前结果是否满足完成条件
- **节省成本**：在不需要强推理能力的场景下自动降级使用 Haiku，降低 token 消耗

所以简单来说，`"model": "haiku"` 就是告诉系统：在这个场景下用最快最便宜的那个模型。
