awesome-tui-design:用Markdown设计文档驱动AI构建终端界面

news2026/5/10 5:36:14
1. 项目概述当AI遇上终端界面设计如果你和我一样是个常年泡在终端里的开发者肯定有过这样的体验想用AI助手比如Cursor、Claude Code或者GitHub Copilot Chat快速搭建一个命令行工具的原型但每次描述界面时都头疼不已。“我想要一个类似Lazygit那样的侧边栏颜色要Dracula主题的紫色状态栏用绿色高亮……” 这种描述不仅费时而且AI理解起来也容易偏差生成的结果往往需要反复调整。这正是awesome-tui-design这个项目要解决的痛点。它不是一个SDK也不是一个框架而是一个精心整理的“设计说明书”仓库。简单来说它把那些广受欢迎的终端用户界面TUI应用比如Lazygit、k9s、btop以及流行的配色方案如Dracula、Nord、Catppuccin它们的视觉设计语言——包括颜色代码、边框样式、字符图标、甚至动画帧——都提取并标准化成了一份份名为DESIGN.md的Markdown文件。它的核心价值在于为“AI驱动的终端应用开发”提供了一个可被机器精确理解的“设计交接文档”。你不再需要向AI进行冗长且模糊的自然语言描述只需在项目里放一份DESIGN.md然后告诉你的AI编程助手“照着这个设计文档给我建一个终端界面。” 整个过程变得清晰、可重复极大地提升了人机协作的效率和产出质量。无论你是想快速原型一个内部工具还是希望统一团队多个CLI工具的设计风格这个项目都提供了一个极其优雅的解决方案。2. 核心设计思路与方案选型解析2.1 为什么是DESIGN.md而不是配置文件或SDK在深入使用awesome-tui-design后我理解其选择DESIGN.md作为载体背后有非常务实和前瞻性的考量。首先降低使用门槛和心智负担。配置文件如JSON、YAML、TOML虽然机器友好但对人类阅读和编写并不直观尤其是涉及颜色、布局描述时。而Markdown是开发者最熟悉的文档格式之一可读性极强。项目中的DESIGN.md文件结构清晰用标题、列表、代码块和注释就能完整定义一套设计系统开发者打开一看就懂甚至能手动微调。其次实现与AI工作流的无缝集成。当前主流的AI编程助手如Cursor、Claude Code对Markdown文件的解析和支持已经非常成熟。它们能自然地“阅读”和理解DESIGN.md中的内容。当你将指令和设计文档一同提供给AI时它能够将文档中的设计约束如主色调#bd93f9、边框字符┌─┐直接应用到生成的代码中。相比之下让AI去解析并理解一个自定义格式的配置文件或者调用一个特定SDK的API其复杂度和不确定性要高得多。最后追求极致的轻量化和无依赖。DESIGN.md只是一个文本文件不引入任何运行时依赖。你的项目不需要引入额外的设计库或解析器。设计信息被“编译”进了最终由AI生成的、基于具体TUI框架如Bubble Tea、Ratatui的源代码中。这种“一次解释终身受用”的方式保证了最终产出的应用是干净、独立的。注意这里说的“设计”主要指视觉设计系统颜色、字体、边框、图标不包含复杂的交互逻辑或组件行为。交互逻辑仍然需要你在给AI的提示词中或通过后续迭代来定义。2.2 “从源码中研究”的价值超越简单的色板这是awesome-tui-design区别于普通“配色方案合集”的关键。很多类似项目只是简单地列出一些颜色十六进制码。但一个优秀的TUI设计远不止于此。项目维护者实际上是扮演了“设计考古学家”的角色。他们会深入目标TUI应用如Lazygit的源代码通常是Go代码中定义样式常量的部分去提取最准确、最完整的设计元素精确的颜色值不是“大概的紫色”而是源码中明确定义的ActiveBorderColor #5fff87。这确保了复现的准确性。边框和字符集终端界面大量使用Unicode制表符和块元素字符来绘制边框、线条。源码中会定义使用单线─│┌┐└┘、双线═║╔╗╚╝还是混合线框。布局比例与间距通过分析UI组件的初始化代码可以推断出侧边栏宽度占比、面板之间的间距等布局信息。动态元素比如btop中那些用Braille点阵字符⠁⠂⠄…绘制的动态图表样式或者Claude Code中那个精致的ASCII艺术思考动画· ✢ ✳ ✶ ✻ ✽序列。这些细节是灵魂所在普通色板根本不会涉及。这种“源码级”的还原使得产出的DESIGN.md具有极高的保真度和实用性。当你基于它生成新应用时得到的视觉风格才能和原版应用“神似”而不仅仅是“色似”。2.3 主题分类的逻辑场景化与通用性并存浏览项目的主题列表你会发现它被精心分为了几个类别这反映了设计的不同来源和用途AI Agent CLIs如Claude Code、Codex CLI、Gemini CLI。这类主题代表了最前沿的AI原生工具设计趋势特点是色彩明快、有独特的动态指示器如思考动画、渐变旋转器并且交互状态通过颜色语义区分得非常清晰例如等待输入、运行中、错误。如果你想开发一个AI助手类CLI从这里找灵感最合适。Popular TUI Applications如Lazygit、k9s、btop。这是经过大规模用户检验的、功能复杂的生产级工具设计。它们的设计通常更注重信息密度、可读性和操作效率。例如k9s用高对比度的黑底青蓝色来突出选中行Lazygit用不同颜色的边框来区分活跃面板。研究这些设计能学到如何组织复杂的终端界面。Color Schemes如Dracula、Nord、Catppuccin。这是更通用、更纯粹的设计语言。它们提供了一套完整、和谐的色彩体系可以应用到任何类型的TUI上。如果你已经有一个功能成型的CLI工具只是想给它换一套专业、美观的皮肤直接使用这类主题是最快的方式。这种分类方式让用户能快速定位到自己所需的设计风格类型无论是追求功能实用性、AI现代感还是视觉美观性。3. 深度使用指南从下载到集成3.1 如何选择并获取一个设计主题面对16个数量还在增长精心制作的主题第一步是做出选择。我的建议是根据你的项目类型来决策开发AI辅助工具或聊天式CLI优先考虑Claude Code或Gemini CLI。它们的暖色调和动态元素能让界面感觉更“生动”和“友好”符合AI交互的调性。开发系统管理、运维监控工具btop或k9s的主题是绝佳选择。它们的信息可视化方式图表、状态颜色编码非常专业适合展示实时数据。开发通用工具或追求经典美观Dracula、Nord或Catppuccin这类经过时间检验的配色方案永远不会错。它们对比度适中长时间使用不伤眼且社区认可度高。选定主题后获取DESIGN.md文件非常简单。项目推荐使用curl命令直接下载这是最干净的方式避免克隆整个仓库。# 例如为你的项目注入Dracula主题 curl -o DESIGN.md https://raw.githubusercontent.com/cola-runner/awesome-tui-design/master/designs/dracula/DESIGN.md执行后你的项目根目录下就会出现一个DESIGN.md文件。我强烈建议你立即打开这个文件浏览一遍。你会发现它不仅仅是一堆颜色代码其结构非常清晰# Theme: Dracula for TUI ## Colors - Primary: #bd93f9 (Purple) - Background: #282a36 (Dark blue-gray) - Foreground: #f8f8f2 (Cream) - Selection: #44475a (Light gray-blue) - Comment: #6272a4 (Gray-blue) - Cyan: #8be9fd - Green: #50fa7b - Orange: #ffb86c - Pink: #ff79c6 - Red: #ff5555 - Yellow: #f1fa8c ## Borders Box-drawing - Border style: Single-line (┌ ─ ┐ │ └ ┘) - Active border color: #50fa7b (Green) - Inactive border color: #6272a4 (Gray-blue) ## Typography - Default weight: Normal - Highlight weight: Bold - Status labels: Bold Primary color ...通过阅读你能快速理解这套设计语言的核心构成这也有助于你在后续与AI沟通时能提出更精确的微调要求。3.2 与AI助手协作的最佳实践有了DESIGN.md下一步就是让它和AI助手一起工作。这里有些技巧能让你事半功倍。基础指令 在你的AI编程助手以Cursor为例的聊天框中可以输入请参考本项目根目录下的 DESIGN.md 文件为我创建一个简单的系统监控仪表盘TUI。需要展示CPU、内存、磁盘的使用率并用进度条可视化。AI通常是Claude 3.5 Sonnet或GPT-4会主动去读取DESIGN.md并尝试应用其中的颜色、边框等样式来生成代码比如使用Bubble Tea框架。进阶技巧提供上下文与约束指定框架如果你有偏好的TUI库一定要在指令中说明。例如“使用Ratatui库并遵循DESIGN.md的设计创建一个TODO列表应用。” 这能引导AI生成更准确、可运行的代码。组合设计元素你可以手动编辑DESIGN.md进行微调或混合。比如你喜欢Nord的配色但更喜欢Lazygit的粗体活动边框样式。你可以将Nord.md中的颜色部分复制出来再手动修改边框样式部分的描述。然后告诉AI“请主要采用这个修改后的DESIGN.md但状态提示符的动画可以参考Claude Code主题里的样式。” AI通常能理解这种组合指令。迭代与调试第一版生成的结果可能不完美。不要重新开始而是应该进行“对话式调试”。你可以指出问题“进度条的颜色不是DESIGN.md中定义的绿色(#50fa7b)请修正。” 或者 “两个面板之间的边框消失了请确保使用单线边框并应用正确的颜色。” AI会根据你的反馈和DESIGN.md的约束进行修正。实操心得在项目初期我建议先让AI生成一个非常简单的、只有一个组件的界面比如一个带边框的文本框。这样可以快速验证DESIGN.md是否被正确读取和应用避免在复杂界面出错时难以排查。3.3 本地预览与调试工具的使用项目贴心地提供了Python预览脚本这对于决策和调试来说是个神器。你不需要等到AI生成完整代码后才看到效果。环境准备 确保你的系统有Python3然后进入克隆的仓库目录或者把preview文件夹复制到你的地方。git clone https://github.com/cola-runner/awesome-tui-design.git cd awesome-tui-design预览单个主题python3 preview/preview.py designs/dracula/DESIGN.md这个命令会在你的终端里渲染出一个模拟的TUI界面直观地展示该主题的颜色、边框、文本样式等核心元素。这比单纯看Markdown文件直观太多了。列出所有主题python3 preview/preview.py --list当你记不清主题名字时这个命令可以快速列出所有可用的设计。生成HTML画廊python3 preview/gallery.py这个脚本会生成一个gallery.html文件在浏览器中打开你可以同时看到所有主题的视觉预览截图就像项目README顶部的图片那样。这对于向团队展示、对比不同设计风格特别有用。注意事项预览工具使用的是简单的终端字符渲染它可能无法100%还原所有动态效果如流畅的动画但对于静态样式颜色、边框、布局的评估已经足够。它的主要目的是辅助选择而非完全替代在真实TUI框架中的测试。4. 创建与贡献你自己的设计主题4.1 逆向工程从心仪的TUI应用中提取设计如果你发现某个常用的TUI工具不在列表中完全可以自己动手为其创建一份DESIGN.md并贡献给社区。这个过程就像一次有趣的“代码考古”。第一步确定目标与工具选择你熟悉且设计优秀的TUI应用。准备好代码阅读工具如VS Code with Go/ Rust插件因为很多TUI是Go/Rust写的以及一个能显示颜色取值的工具如系统自带的数码测色计或gpick等软件。第二步定位设计相关的源码寻找常量定义文件在项目源码中通常会有名为colors.go,theme.go,styles.rs,constants.py的文件这里集中定义了颜色、边框等样式常量。搜索颜色代码在代码库中全局搜索十六进制颜色码正则表达式如#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})或RGB函数调用如tcell.NewRGBColor(135, 95, 255)。查找UI组件初始化查看主UI文件或组件文件看边框字符是如何设置的例如border.SetBorderChars(‘┌’, ‘─’, ‘┐’, ‘│’, ‘└’, ‘─’, ‘┘’, ‘│’)。第三步提取与归纳将找到的颜色、字符、布局参数记录下来。你需要判断哪些是主色、背景色、前景色、成功/警告/错误色。观察UI的交互状态激活、禁用、选中、悬停记录每种状态对应的样式变化。第四步套用模板格式化项目提供了TEMPLATE.md文件这是一个结构化的空白模板。将你提取的信息分门别类地填入对应章节## Colors: 列出所有颜色及其用途。## Borders Box-drawing: 描述边框样式、使用的Unicode字符。## Typography: 说明字重、样式如粗体用于标题。## Layout: 记录常见的间距、边距、面板比例。## Dynamic Elements: 描述动画序列、加载指示器等。一个真实的提取示例简化版 假设我正在研究一个虚构的mycli工具。在ui/colors.go中找到const ( PrimaryColor #FF6B6B // Coral Red BgColor #2D3047 // Dark Navy TextColor #E0E0E0 // Light Gray SuccessColor #4ECDC4 // Tiffany Blue )在ui/layout.go中看到边框设置border.Border lipgloss.NormalBorder() border.BorderForeground lipgloss.Color(PrimaryColor)这表明它使用了Bubble Tea的默认边框通常是单线样式在ui/spinner.go中发现一个动画帧数组frames []string{⠋, ⠙, ⠹, ⠸, ⠼, ⠴, ⠦, ⠧, ⠇, ⠏}根据以上信息我就可以开始填写TEMPLATE.md了。4.2 遵循贡献规范确保设计质量提取信息后在提交Pull Request之前请务必阅读项目的CONTRIBUTING.md文件。根据我的经验以下几点是维护者最看重的准确性至上所有信息必须源自可查证的源代码。不要凭视觉感觉猜测颜色值一定要用取色工具从实际运行的界面中验证或者直接引用源码中的常量。在DESIGN.md中最好用注释标明某个值来源于哪个文件的哪一行。完整性尽量涵盖设计系统的所有方面。不要只提供颜色边框、间距、动态元素同样重要。一个完整的主题能让使用者获得更好的复现效果。符合模板结构严格按照TEMPLATE.md的章节结构来组织内容。这保证了所有主题格式统一便于AI解析和用户阅读。你可以增加额外的章节但不要删除或随意重命名核心章节。提供预览在提交PR前务必使用项目自带的preview.py脚本测试你的DESIGN.md确保渲染效果符合预期。如果可能附上一张在真实终端中运行原版应用和基于你的DESIGN.md生成的模拟界面的对比截图这极具说服力。清晰的描述在DESIGN.md的开头用一两句话简要描述这个主题的来源和风格特点例如“源自 tmux 的默认配色以绿色为主调强调清晰度和低干扰。”。5. 实战案例用DESIGN.md驱动AI构建一个天气CLI让我们通过一个完整的、循序渐进的例子来看看如何将awesome-tui-design的理念付诸实践。我们的目标是创建一个能在终端里显示当前天气和预报的简单CLI工具。5.1 项目初始化与设计选定首先创建一个新的项目目录并初始化这里以Go项目为例使用Bubble Tea框架mkdir weather-tui cd weather-tui go mod init github.com/yourname/weather-tui go get github.com/charmbracelet/bubbletea go get github.com/charmbracelet/lipgloss接下来选择设计主题。我想要一个干净、清晰带有一些科技感的界面。Nord主题的北极冷色调和结构化边框很符合我的想象。下载它的设计文件curl -o DESIGN.md https://raw.githubusercontent.com/cola-runner/awesome-tui-design/master/designs/nord/DESIGN.md现在我的项目根目录下有了go.mod,go.sum和DESIGN.md三个文件。DESIGN.md就是我们的“设计蓝图”。5.2 与AI协作生成核心代码打开你的AI编程助手这里以Cursor的Chat模式为例我将输入以下提示词。注意我提供了非常明确的上下文、框架要求和功能描述我正在开发一个Go语言编写的终端天气应用使用Bubble Tea和LipGloss库。项目根目录下有一个 DESIGN.md 文件它定义了Nord主题的视觉风格。 请阅读这个设计文件并为我创建主程序文件 main.go。这个应用需要 1. 有一个主窗口顶部显示当前城市例如“Beijing”和更新时间。 2. 中间主要区域显示当前天气温度、天气状况如“Sunny”、湿度和风速。 3. 底部显示未来三天的天气预报概要横向排列。 4. 整体布局和颜色如背景色、文字色、边框色、高亮色必须严格遵循 DESIGN.md 中的Nord主题规范。 5. 使用 DESIGN.md 中定义的边框字符来绘制面板边框。 数据部分可以先使用硬编码的模拟数据。请专注于实现UI布局和样式。AIClaude在分析提示词和读取DESIGN.md后生成了如下代码框架。我截取其中的样式定义和核心UI结构部分// main.go (由AI生成经人工整理) package main import ( fmt strings github.com/charmbracelet/bubbletea github.com/charmbracelet/lipgloss ) // 从 DESIGN.md 中提取的 Nord 主题颜色 var ( // 颜色定义 - 严格对应 DESIGN.md nordPolarNight0 lipgloss.Color(#2E3440) // 背景 nordPolarNight2 lipgloss.Color(#434C5E) // 边框/次要背景 nordSnowStorm0 lipgloss.Color(#D8DEE9) // 前景/文本 nordFrost0 lipgloss.Color(#8FBCBB) // 青色 - 用于标签 nordFrost1 lipgloss.Color(#88C0D0) // 淡蓝 - 用于高亮 nordFrost2 lipgloss.Color(#81A1C1) // 蓝色 - 用于标题 nordAurora0 lipgloss.Color(#BF616A) // 红色 - 错误/警告 nordAurora1 lipgloss.Color(#D08770) // 橙色 nordAurora2 lipgloss.Color(#EBCB8B) // 黄色 nordAurora3 lipgloss.Color(#A3BE8C) // 绿色 - 成功/正数 nordAurora4 lipgloss.Color(#B48EAD) // 紫色 ) // 样式定义 var ( docStyle lipgloss.NewStyle().Padding(1, 2).Background(nordPolarNight0).Foreground(nordSnowStorm0) titleStyle lipgloss.NewStyle().Foreground(nordFrost2).Bold(true).Padding(0, 1) borderStyle lipgloss.NewStyle().BorderStyle(lipgloss.NormalBorder()).BorderForeground(nordPolarNight2) // 使用Nord定义的边框色 currentTempStyle lipgloss.NewStyle().Foreground(nordFrost1).Bold(true).MarginTop(1) labelStyle lipgloss.NewStyle().Foreground(nordFrost0) valueStyle lipgloss.NewStyle().Foreground(nordSnowStorm0) forecastDayStyle lipgloss.NewStyle().Foreground(nordFrost2).Align(lipgloss.Center).Padding(0, 1) ) type model struct { city string currentTemp string condition string humidity string windSpeed string forecast []forecastDay } type forecastDay struct { day string temp string cond string } func (m model) Init() tea.Cmd { return nil } func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { switch msg : msg.(type) { case tea.KeyMsg: switch msg.String() { case q, ctrlc: return m, tea.Quit } } return m, nil } func (m model) View() string { // 顶部标题栏 title : titleStyle.Render(fmt.Sprintf(️ Weather in %s, m.city)) updateTime : titleStyle.Copy().Foreground(nordPolarNight2).Render(Updated just now) header : lipgloss.JoinHorizontal(lipgloss.Center, title, strings.Repeat( , 20), updateTime) // 简单布局 // 当前天气面板 - 应用边框样式 currentWeather : borderStyle.Render( lipgloss.JoinVertical(lipgloss.Left, currentTempStyle.Render(m.currentTemp), lipgloss.NewStyle().MarginTop(1).Render(m.condition), lipgloss.JoinHorizontal(lipgloss.Top, labelStyle.Render(Humidity: )valueStyle.Render(m.humidity), labelStyle.Render( Wind: )valueStyle.Render(m.windSpeed), ), ), ) // 预报面板 forecastViews : []string{} for _, f : range m.forecast { dayBox : borderStyle.Copy().Width(20).Render( lipgloss.JoinVertical(lipgloss.Center, forecastDayStyle.Render(f.day), lipgloss.NewStyle().Foreground(nordFrost1).Bold(true).Render(f.temp), lipgloss.NewStyle().MarginTop(1).Render(f.cond), ), ) forecastViews append(forecastViews, dayBox) } forecastRow : lipgloss.JoinHorizontal(lipgloss.Top, forecastViews...) // 组合所有部分 ui : lipgloss.JoinVertical(lipgloss.Left, header, currentWeather, forecastRow, ) return docStyle.Render(ui) } func main() { // 模拟数据 m : model{ city: Beijing, currentTemp: 22°C, condition: Sunny, humidity: 65%, windSpeed: 12 km/h, forecast: []forecastDay{ {Tue, 24°/18°, ☀️ Sunny}, {Wed, 20°/15°, ⛅ Partly Cloudy}, {Thu, 19°/14°, ️ Light Rain}, }, } p : tea.NewProgram(m, tea.WithAltScreen()) if _, err : p.Run(); err ! nil { panic(err) } }5.3 迭代优化与设计微调第一版代码已经不错但我觉得边框可以更突出一些而且想用Nord主题中提到的Aurora状态色如绿色来高亮“良好”的天气状况。我检查DESIGN.md发现里面有Success/Good: nordAurora3 (#A3BE8C)的定义。于是我给AI新的指令很好现在请做两处优化 1. 将当前天气面板的边框从 NormalBorder 改为 RoundedBorder让角落更圆润同时保持边框颜色不变。 2. 当天气状况是“Sunny”时用 nordAurora3绿色来渲染这个文本表示好天气。其他状况保持原样。AI根据指令修改了borderStyle并增加了条件渲染逻辑。我运行go run main.go一个遵循Nord设计语言、布局清晰的天气CLI就呈现在终端里了。整个过程我几乎没有手动编写样式代码只是通过自然语言和一份设计文档进行驱动。6. 常见问题、排查技巧与生态展望6.1 使用过程中可能遇到的问题及解决思路即使有DESIGN.md和AI的帮助开发过程中仍可能遇到一些小麻烦。以下是我总结的一些常见问题及解决方法问题现象可能原因排查与解决思路AI生成的界面颜色不对1. AI未正确读取DESIGN.md。2.DESIGN.md中的颜色格式与TUI库不兼容。1.确认文件路径确保DESIGN.md在项目根目录且AI对话的上下文包含当前项目。在Cursor中可以尝试用符号显式引用该文件。2.检查颜色格式Bubble Tea/LipGloss 支持#RRGGBB格式。确保DESIGN.md中的颜色值与此一致。如果是其他库可能需要RGB或颜色名称。边框没有显示或显示为乱码1. 终端字体不支持Unicode制表符。2. TUI库的边框样式设置错误。1.更换终端字体使用支持Powerline或Nerd Fonts的等宽字体如MesloLGS NF、FiraCode NF。2.验证边框字符在DESIGN.md中明确指定了边框字符如┌─┐但AI可能使用了库的默认值。在提示词中强调“请使用DESIGN.md中Borders Box-drawing章节定义的精确字符”。布局错乱元素重叠或位置不对AI对布局逻辑的理解有偏差或者DESIGN.md中的布局描述不够具体。1.提供更详细的布局描述在给AI的指令中用更结构化的语言描述布局例如“使用垂直布局顶部占1行中部占5行底部占2行。中部内部使用水平布局分为左右两栏比例是3:2。”2.分步构建不要一次性要求生成完整UI。先让AI生成一个带边框的容器再逐步添加内部元素。动态效果如旋转器没有实现DESIGN.md只描述了动画的帧序列但AI可能没有生成控制动画状态的逻辑如定时器。1.明确要求实现动画在提示词中写明“请实现一个旋转加载指示器使用DESIGN.md中Dynamic Elements部分定义的帧序列并确保它每秒更新4帧。”2.手动实现或后续迭代对于复杂动画首次生成后可以要求AI专门编写一个独立的Spinner组件再集成进去。6.2 设计系统的维护与扩展思考awesome-tui-design项目本身也是一个优秀的设计系统实践。随着使用深入我对其生态发展有一些观察和建议版本化与快照TUI应用本身会更新其设计也可能变化。考虑为每个主题的DESIGN.md标注其提取自源项目的哪个Commit或版本号这样可以追溯和复现。未来甚至可以提供同一主题不同版本的“快照”。交互模式库目前专注于视觉设计。可以进一步扩展尝试定义一些标准的“交互模式”例如“一个可过滤的列表应如何表现”、“确认对话框的标准布局是什么”。虽然实现更复杂但能为AI生成更复杂的交互逻辑提供指引。工具链集成可以开发IDE插件或命令行工具实现“一键应用主题”。例如一个工具能读取DESIGN.md并自动为当前目录下的Bubble Tea或Ratatui项目生成或更新对应的样式常量Go/Rust文件将设计直接“编译”成代码框架。设计验证测试建立一套简单的可视化测试套件确保提交的新主题DESIGN.md能够被预览脚本正确渲染并且核心颜色对比度满足无障碍访问的最低标准。这个项目的巧妙之处在于它用最简单通用的格式Markdown在最需要标准化的环节AI与人的设计沟通架起了一座桥梁。它降低了终端界面设计的门槛让开发者能更专注于工具的功能和逻辑而将视觉一致性交给可重复、可验证的设计文档。随着AI编程助手的日益强大这类“机器可读的设计规范”的价值只会越来越大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2599739.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…