Prismantis:多彩可换肤的 Claude Code Markdown 主题插件
用带框表格、代码高亮、mermaid 图表和复制按钮重新绘制 Claude Code 的回复,内置 15 套主题。
权限
- 读取你的提示词可以看到你输入的内容和对话记录(prompt.* / session.append / session.messages)。
- 修改界面在 Claude Code 界面中绘制内容:横条、面板、状态文字、弹出通知(ui.render / $.ui.*)。
- 添加命令/工具注册新的斜杠命令或工具,供你或 Claude 调用($.command.register / $.tool.register)。
- 实测版本
- v2.1.291
- 最近实测
- 需要
- Claude Code ≥ 2.1.287
- 显示位置
- 对话记录、弹出通知
这个插件能做什么?
Prismantis 是一款 Claude Code Markdown 主题插件,属于社区插件,作者是 Nahum Litvin(NahumLitvin),它用色彩和结构重新绘制对话记录中 Claude 的回复。Markdown 表格会获得彩色表头、带框的单元格和表头下方的双线,并会缩小以适应终端。代码块会获得语言标题、复制按钮,以及支持 24 种语言的 Prism 高亮,shell 代码块会给命令名、参数、字符串和注释分别上色。标记为 mermaid 的代码块会被绘制成彩色字符画:流程图、时序图、状态图、类图和 ER 图,以及来自 xychart-beta 的柱状图和折线图。
它还会重新设计对话记录的其他部分。你自己的提示会绘制在圆角气泡中(也可以是强调色竖条或 V 形箭头)。工具调用会折叠成一行,例如 Ran gh pr view 12 或 Read ~/src/app.ts,并带有一个状态圆点。每轮末尾的页脚会给耗时上色。斜杠命令的输出也会得到同样的 Markdown 渲染。数字、版本号、时长和路径各有自己的颜色,> [!WARNING] 之类的 GitHub 提示框会绘制成彩色框,希伯来语和阿拉伯语文本会从右向左排版,并针对每种终端分别处理。共有 15 套主题外加 mono。README 中写明需要 Claude Code 2.1.287 或更高版本。
演示
录屏中,我们让 Claude 用 Markdown 表格列出四颗内行星及其卫星数量,再附上一行 bash 代码块。加载 prismantis 后,提示被绘制在气泡中,表格带框并有彩色表头,bash 代码块有自己的标签和 copy 按钮,回复则带有 copy、art 和 copy reply 按钮。
安装
使用安装区块中的任意一种方式;它们都直接从作者自己的插件市场安装。在加载了该插件的会话中,下一条回复就会由 prismantis 绘制。对于已经打开的会话,请运行 /reload-plugins。
$ install prismantis
需要 Claude Code ≥ 2.1.287
从作者自己的 marketplace 安装: NahumLitvin/prismantis
1.在 Claude Code 中一行安装
/plugin install prismantis --marketplace NahumLitvin/prismantis粘贴到正在运行的会话中(v2.1.275+)。Claude Code 会先询问是否添加该插件市场。
2.从终端安装
claude plugin marketplace add NahumLitvin/prismantis claude plugin install prismantis@prismantis然后在所有已打开的会话中运行 /reload-plugins。
3.免安装试用
git clone https://github.com/NahumLitvin/prismantis claude --plugin-dir ./prismantis仅在当前会话中加载该插件,不会写入你的设置。
工作原理
hooks/register.tsx 在对话记录的各个组件(AssistantMessage、UserMessage、CommandOutput、ToolGroup、ToolUse 和 TurnDuration)上注册渲染钩子。每个钩子都用插件自带的 Markdown 解析器(位于 hooks/markdown.ts)解析文本,再用 hooks/render.tsx 绘制结果。以下是 hooks/register.tsx 中针对助手回复的钩子:
on('ui.render', { component: 'AssistantMessage' }, ($, e, next) => {
const blocks = parseCached(e.props.text)
if (blocks.length === 0) return next(e)
const el = $.ui.resolve(e)
const { Box, Text } = el
const columns = Math.max(20, (e.viewport?.columns ?? 100) - 4)
// ...
return (
<Box flexDirection="row">
<Box width={2} flexShrink={0}>
<Text color={style.theme.accent}>{e.props.isFirstOfReply ? '●' : ' '}</Text>
</Box>
<Box flexDirection="column" rowGap={1} flexGrow={1}>
{drawMarkdown($, el, style, blocks, columns, /* ... */)}
</Box>
</Box>
)
})没有可解析的内容时,它会回退到 next(e),由 Claude Code 自己绘制这条消息。解析后的块按文本缓存,重绘时不会再次解析。Mermaid 代码块交给内置的一份 beautiful-mermaid ASCII 渲染器处理,比窗口还宽的图表则保留为代码。一个 prompt.submit 钩子会把图表提示附加到在输入框或通过 Remote Control 输入的提示上。插件还新增了一个引擎名词 $.prismantis.markdown,让其他插件也能用用户的 prismantis 主题绘制 Markdown。
自定义
所有选项都在 /config 的 prismantis 下,或者在 ~/.claude/settings.json 的 pluginConfigs 中。主要选项如下:
theme:15 套调色板之一或mono。/prismantis theme <name>可以当场切换。tableStyle:box、rules、grid或minimal。headingStyle:banner、bold、underline或uppercase。promptStyle:bubble、bar、chevron或off。toolStyle:chat、tree-dim、tree-bold或classic。taskStyle:checks、ticks、box或progress。toolRows、mermaid、mermaidAscii、copyButtons、diagramHints、highlightNumbers和highlightPaths用于单独开关各项功能。- 约 20 个颜色槽位(
headingColor、tableHeaderColor、numberColor、pathColor等)接受十六进制、rgb()、ansi256()或颜色名称。
/prismantis copy 复制最后一条回复,/prismantis copy code 复制其中最后一个代码块,无需鼠标。/prismantis demo 会打印一份展示所有元素的样例。
权限与安全
在运行之前,我们读过了插件加载的每一个文件,包括两个内置的打包文件。插件不发出网络请求、不运行命令,也不读取文件。有两点值得了解:
- 之所以适用读取你的提示,是因为一个
prompt.submit钩子会给你输入的每条提示附加一段只给模型看的简短说明(约 190 个 token),描述这个终端能渲染什么。它不会改动你的文字。关闭diagramHints(或mermaid)即可停止。 $.session.messages只由/prismantis copy调用,用来找到最后一条回复。$.config.set只由/prismantis theme调用,用来保存theme选项。$.env.get读取TERM_PROGRAM和TERM等终端变量,以选择合适的从右向左处理方式。
修改界面对应的是重新绘制的对话记录和 "Copied" 通知。添加命令/工具对应的是 /prismantis。hooks/vendor/prism.js 和 hooks/vendor/mermaid-text.js 是 Prism 和 beautiful-mermaid 经过空白压缩的构建产物,由仓库中的 scripts/build-vendor.mjs 生成。插件不会运行这些脚本,也不会安装软件包。claude plugin validate 没有报告任何警告。
- 读取你的提示词
- 可以看到你输入的内容和对话记录(prompt.* / session.append / session.messages)。
- 修改界面
- 在 Claude Code 界面中绘制内容:横条、面板、状态文字、弹出通知(ui.render / $.ui.*)。
- 添加命令/工具
- 注册新的斜杠命令或工具,供你或 Claude 调用($.command.register / $.tool.register)。
兼容性与故障排除
我们在 macOS 上使用 Claude Code 2.1.291 完成了验证,claude plugin test 通过了作者全部 138 个测试。作者在 macOS 的终端中测试过它;桌面应用和 VS Code 应该也能通过同一套插件 API 工作,但尚未人工检查。
- 回复看起来没有变化:检查
claude --version是否为 2.1.287 或更高版本、插件是否在/plugin中启用,以及/config中的enabled是否开启。安装到已打开的会话后,运行/reload-plugins。 - 图表中出现方框或断线:开启
mermaidAscii,它会用+ - |代替制表符来绘制。 - 点击复制按钮没有反应:你的终端可能没有传递点击事件。请改用
/prismantis copy。 - 在浅色背景上颜色看起来不对:选择浅色主题,例如
github-light或catppuccin-latte。
常见问题
- prismantis 会改变 Claude 写的内容吗?
- 它重新绘制已经显示在屏幕上的回复。在 diagramHints 开启时(默认开启),它还会给你输入的每条提示附加一段约 190 个 token 的隐藏说明,告诉模型这里能渲染表格、代码和 mermaid 图表。在 /config 中关闭 diagramHints 即可停止。
- 包含哪些主题?
- 十五套调色板:catppuccin-mocha(默认)、catppuccin-latte、dracula、nord、tokyo-night、gruvbox-dark、gruvbox-light、rose-pine、rose-pine-dawn、everforest、github-dark、github-light、one-dark、solarized-dark 和 solarized-light,另外还有只使用粗体和暗淡效果的 mono。
- 怎样切换主题?
- 运行 /prismantis theme nord,或者在 /config 中 prismantis 下选择一套。该命令会把你的选择保存为插件的 theme 设置。
- 能看到原始回复吗?
- 能。作者的 README 说,在某条回复上按 ctrl+o 即可查看原文;也可以在 /plugin 中停用插件,恢复 Claude Code 自带的渲染器。
- 它会使用网络吗?
- 不会。它内置了 Prism 和 beautiful-mermaid,不发出网络请求、不运行命令,也不读取文件。
# 相关插件
精选Human in the loop
Claude 把只有你能做的事派成任务,放进“我的任务”面板,并在输入框下方计数,直到你处理。
- 面板
- 状态栏
- 弹出通知
- 对话记录
- 拦截工具调用
- 读取你的提示词
- 修改界面
- 添加命令/工具
- 存储数据
已在 v2.1.310 实测
精选Project Sentinel
为长时间运行的 Claude Code 任务提供状态带、上下文交接、提示缓存追踪和权限规则。
- 输入框上方
- 面板
- 加载动画
- 状态栏
- 弹出通知
- 读取文件
- 执行命令
- 调用模型(消耗你的额度)
- 拦截工具调用
- 读取你的提示词
- 修改界面
- 添加命令/工具
- 存储数据
已在 v2.1.296 实测
精选After
Claude Code 的提示词队列:/after 会在当前这一轮结束后运行你的下一个任务,不会干扰正在进行的工作。
- 输入框上方
- 面板
- 弹出通知
- 状态栏
- 调用模型(消耗你的额度)
- 读取你的提示词
- 修改界面
- 添加命令/工具
- 存储数据
已在 v2.1.303 实测
精选ctx-handoff
保持提示缓存不过期,把你教给 Claude 的内容整理成项目笔记,并可在上下文写满时完成交接。
- 输入框上方
- 状态栏
- 弹出通知
- 读取文件
- 写入文件
- 调用模型(消耗你的额度)
- 拦截工具调用
- 读取你的提示词
- 修改界面
- 添加命令/工具
- 存储数据
已在 v2.1.303 实测
更多 计时、待办与站会。