AI 对话记录 — 2026年6月11日

June 11, 2026 in AI对话 2 minutes

与 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 模板语法):

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

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

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

---
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 字段;可能修改的包括 permissionsextraKnownMarketplaceshooks.json.mcp.json,具体取决于插件的功能需求。


问: cc switch切换服务商后,安装的插件为啥没了?

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

原因:CC-Switch 的核心机制是每个供应商(Provider)都维护一套独立的配置文件,包含 envpermissionsenabledPlugins 等字段。当你从供应商 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" 就是告诉系统:在这个场景下用最快最便宜的那个模型。