xiantong 文档

图标

为源、技能和状态配置图标

xiantong 支持在源、技能和状态上使用图标。图标可以是 emoji、SVG 文件或栅格图像(PNG、JPG)。

标签不会使用图标 —— 它们显示为彩色圆点。有关标签颜色配置,请参阅 颜色

支持的格式#

格式扩展名最适合
SVG.svg可缩放图标,可通过 currentColor 适应主题
PNG.png支持透明度的栅格图标
JPG.jpg, .jpeg照片或复杂艺术图案
EmojiUnicode无需文件即可快速识别

设置图标#

Emoji#

在实体的 config.json 中将 icon 字段设置为任意 Unicode emoji:

{
"icon": "🔧"
}

支持多码点 emoji 和 ZWJ 序列(例如 👨‍💻🇭🇺)。

图标文件#

将图标文件放在实体目录中。xiantong 会自动发现名为 icon.{svg,png,jpg,jpeg} 的文件:

sources/
linear/
config.json
icon.svg ← 自动发现

当存在多种格式时的优先顺序为:SVG > PNG > JPG > JPEG

显式路径#

config.json 中使用相对路径指向特定文件:

{
"icon": "./my-custom-icon.svg"
}

URL(仅限源)#

对于 icon 字段使用 URL 的源,xiantong 会下载该图像到本地 icon.{ext} 文件(最大 50KB)。下载完成后,将使用本地文件进行渲染。

解析优先级#

渲染实体图标时,xiantong 按照以下顺序解析:

  1. Emoji — 如果 icon 字段为 emoji 字符串,则作为文本渲染
  2. 显式路径 — 如果 icon 是相对路径(例如 ./icon.svg),则加载该文件
  3. 自动发现 — 探测实体目录中的 icon.svgicon.pngicon.jpg
  4. 网站图标回退(仅限源)— 从服务 URL(MCP url 或 API baseUrl)解析图标
  5. 回退图标 — 显示通用占位图标

SVG 主题适配#

使用 currentColor 的 SVG 会自动适应当前主题:

<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 2L2 7l10 5 10-5-10-5z" fill="currentColor"/>
</svg>

工作原理:

  • 使用 currentColor 的 SVG 会被识别为可着色 —— 它们继承父上下文的颜色(例如状态图标会采用该状态颜色)
  • 未使用 currentColor 的 SVG 会以其硬编码颜色渲染
  • <svg> 元素没有 fill 属性的 SVG 会自动注入主题前景色

在 SVG 中使用 currentColor,可使图标匹配实体颜色(例如状态)或适应亮/暗模式。

实体特定细节#

#

~/.xiantong/workspaces/{id}/sources/{slug}/
config.json ← "icon": "🔧" or "./icon.svg"
icon.svg ← 自动发现

源具有网站图标回退:如果没有本地图标,xiantong 会从 MCP URL 或 API base URL 解析图标。

技能#

~/.xiantong/workspaces/{id}/skills/{slug}/
SKILL.md
icon.svg ← 自动发现

技能使用相同的自动发现模式。解析出的图标路径会以 iconPath 存储在技能元数据中。

状态#

~/.xiantong/workspaces/{id}/statuses/
config.json ← 含可选 "icon" 字段的状态定义
{status-id}.svg ← 使用状态 ID 命名的图标文件

状态图标使用状态 ID 作为文件名,而不是 icon

statuses/
config.json
in-progress.svg ← 对应状态 id "in-progress" 的图标
done.svg ← 对应状态 id "done" 的图标

图标尺寸#

图标在 UI 中以标准尺寸渲染:

尺寸维度用途
xs14px行内提及、紧凑列表
sm16px侧边栏项、徽章
md20px默认尺寸、列表项
lg24px标题、显著位置
xl28px大型展示

提示#

使用 SVG 以获得最佳效果

SVG 在所有尺寸下都能完美缩放,并可通过 currentColor 适应主题颜色。它们是自定义图标的推荐格式。

保持 SVG 简洁

移除不必要的元数据、编辑器痕迹和内联样式。具有干净 viewBox、带 fill="currentColor" 的路径、且没有 width/height 属性的 SVG 表现最佳。

Emoji 便于快速设置

Emoji 无需文件即可原生渲染。它们非常适合快速入门或当不需要文件图标时使用。

图标未显示?

  • 检查文件是否位于实体类型的正确目录中
  • 确认文件名匹配(源/技能为 icon.svg,状态为 {id}.svg
  • 确保 SVG 内容为有效的 XML
  • 对于 URL 图标,检查文件是否已下载(查看实体目录中的 icon.{ext}