<< All versions

Skill v1.0.0

Automated scan100/100
linxuan-sys/opencode-skills-chinese/algorithmic-art
──Details
PublishedSeptember 30, 2026 at 06:04 AM
Content Hashsha256:fb41a181ad912a45...
Git SHA418df9bd356d
──Files
Files (1 file, 16.5 KB)
SKILL.md16.5 KBactive
SKILL.md · 406 lines · 16.5 KB

version: "1.0.0" name: algorithmic-art description: 使用p5.js创建带有种子随机和交互式参数探索的算法艺术。当用户请求使用代码创建艺术、生成艺术、算法艺术、流场或粒子系统时使用此技能。创建原创算法艺术,而不是复制现有艺术家的作品,以避免侵犯版权。 license: 完整条款见LICENSE.txt


算法哲学是计算美学运动,然后通过代码表达。输出.md文件(哲学)、.html文件(交互式查看器)和.js文件(生成算法)。

这分为两个步骤:

  1. 算法哲学创建(.md文件)
  2. 通过创建p5.js生成艺术来表达(.html + .js文件)

首先,承担以下任务:

算法哲学创建

开始之前,创建一种算法哲学(不是静态图片或模板),它将通过以下方式被诠释:

  • 计算过程、涌现行为、数学之美
  • 种子随机、噪声场、有机系统
  • 粒子、流、场、力
  • 参数化变化和受控混沌

关键理解

  • 接收到的内容:用户的一些微妙输入或指示,作为基础考虑,但不应限制创作自由。
  • 创建的内容:一种算法哲学/生成美学运动。
  • 接下来会发生什么:同一个版本接收哲学并用代码表达它——创建90%算法生成、10%必要参数的p5.js草图。

考虑这种方法:

  • 为一个生成艺术运动写一份宣言
  • 下一阶段涉及编写将其变为生命的算法

哲学必须强调:算法表达。涌现行为。计算之美。种子变化。

如何生成算法哲学

命名运动(1-2个词):"有机湍流"/"量子谐波"/"涌现静谧"

阐述哲学(4-6段——简洁但完整):

要捕捉算法本质,表达这种哲学如何通过以下方面体现:

  • 计算过程和数学关系?
  • 噪声函数和随机模式?
  • 粒子行为和场动态?
  • 时间演化和系统状态?
  • 参数化变化和涌现复杂性?

关键指南:

  • 避免冗余:每个算法方面应该只提到一次。避免重复关于噪声理论、粒子动力学或数学原理的概念,除非增加新的深度。
  • 反复强调工艺:哲学必须多次强调最终算法应该看起来花了无数小时开发,经过精心打磨,来自该领域绝对顶尖的人。这个框架至关重要——重复诸如"精心打磨的算法"、"深厚计算专长的产物"、" painstaking优化"、"大师级实现"等短语。
  • 留下创作空间:具体说明算法方向,但要足够简洁,让下一个Claude有空间在极高的工艺水平上做出解释性实现选择。

哲学必须引导下一个版本通过算法表达想法,而不是通过静态图片。美存在于过程中,而不是最终画面。

哲学示例

"有机湍流" 哲学:受自然规律约束的混沌,秩序从混乱中涌现。 算法表达:由分层Perlin噪声驱动的流场。数千个粒子跟随矢量力,它们的轨迹累积成有机密度图。多个噪声倍频程创建湍流区域和平静区域。颜色从速度和密度中涌现——快速粒子明亮燃烧,慢速粒子 fades 到阴影。算法运行直到平衡——一个精心调优的平衡,每个参数都通过计算美学大师的无数次迭代打磨而成。

"量子谐波" 哲学:表现出类波干涉模式的离散实体。 算法表达:在网格上初始化的粒子,每个携带通过正弦波演化的相位值。当粒子靠近时,它们的相位干涉——相长干涉创建明亮节点,相消干涉创建空洞。简谐运动生成复杂的涌现曼陀罗。这是精细频率校准的结果,每个比率都经过精心选择以产生共鸣之美。

"递归低语" 哲学:跨尺度的自相似性,有限空间中的无限深度。 算法表达:递归细分的分支结构。每个分支稍微随机但受黄金比例约束。L系统或递归细分生成既数学又有机感的树状形态。微妙的噪声扰动打破完美对称。线宽随着每次递归级别递减。每个分支角度都是深度数学探索的产物。

"场动态" 哲学:不可见的力通过对物质的影响变得可见。 算法表达:由数学函数或噪声构建的矢量场。粒子从边缘诞生,沿场线流动,在达到平衡或边界时消亡。多个场可以吸引、排斥或旋转粒子。可视化只显示痕迹——不可见力量的幽灵般证据。一场通过力平衡精心编排的计算舞蹈。

"随机结晶" 哲学:随机过程结晶成有序结构。 算法表达:随机圆填充或Voronoi镶嵌。从随机点开始,让它们通过松弛算法演化。单元推开直到平衡。颜色基于单元大小、邻居数量或距中心的距离。涌现的有机镶嵌感觉既随机又必然。每个种子产生独特的晶体之美——大师级生成算法的印记。

这些是浓缩示例。实际的算法哲学应该是4-6个实质性段落。

基本原则

  • 算法哲学:创建一种计算世界观,通过代码表达
  • 过程重于结果:始终强调美从算法的执行中涌现——每次运行都是唯一的
  • 参数化表达:想法通过数学关系、力、行为传达——而不是静态构图
  • 艺术自由:下一个Claude从算法角度诠释哲学——为创造性实现留出空间
  • 纯生成艺术:这是关于创造活的算法,而不是带有随机性的静态图片
  • 专家工艺:反复强调最终算法必须感觉经过精心打磨,通过无数次迭代优化,由计算美学领域绝对顶尖的人深度创作的产物

算法哲学应该是4-6段长。 用诗意的计算哲学填充它,将预期愿景融合在一起。避免重复相同的观点。将此算法哲学输出为.md文件。


推导概念种子

关键步骤:在实现算法之前,从原始请求中识别微妙的概念线索。

核心原则: 概念是嵌入算法本身的微妙、小众引用——不总是字面的,但始终精致。熟悉该主题的人应该直觉地感受到它,而其他人只是体验一部精湛的生成作品。算法哲学提供计算语言。推导出的概念提供灵魂——安静地编织进参数、行为和涌现模式中的概念DNA。

这非常重要:引用必须如此精炼,以至于在不张扬的情况下增强作品的深度。就像一个爵士乐手通过算法和谐引用另一首歌——只有懂的人才会注意到,但每个人都能欣赏生成之美。


P5.JS 实现

在哲学和概念框架建立之后,通过代码表达它。在继续之前先整理思路。仅使用创建的算法哲学和以下说明。

⚠️ 步骤0:先阅读模板 ⚠️

关键:在编写任何HTML之前:

  1. 阅读 templates/viewer.html(使用Read工具)
  2. 研究 确切的结构、样式和Anthropic品牌
  3. 将该文件作为字面起点——不仅仅是灵感
  4. 保持所有固定部分与所示完全一致(头部、侧边栏结构、Anthropic颜色/字体、种子控制、操作按钮)
  5. 仅替换可变部分(在文件注释中标记的部分:算法、参数、参数的UI控制)

避免:

  • ❌ 从头创建HTML
  • ❌ 发明自定义样式或配色方案
  • ❌ 使用系统字体或深色主题
  • ❌ 更改侧边栏结构

遵循这些做法:

  • ✅ 复制模板的确切HTML结构
  • ✅ 保持Anthropic品牌(Poppins/Lora字体、浅色、渐变背景)
  • ✅ 保持侧边栏布局(Seed → Parameters → Colors? → Actions)
  • ✅ 仅替换p5.js算法和参数控制

模板是基础。在它之上构建,不要重建它。


要创建有生命、会呼吸的画廊级计算艺术,使用算法哲学作为基础。

技术要求

种子随机(Art Blocks模式):

javascript
// 始终使用种子以确保可重复性
let seed = 12345; // 或来自用户输入的哈希
randomSeed(seed);
noiseSeed(seed);

参数结构——遵循哲学:

要建立从算法哲学中自然涌现的参数,考虑:"这个系统的哪些属性可以调整?"

javascript
let params = {
seed: 12345, // 始终包含种子以确保可重复性
// colors
// 添加控制你的算法的参数:
// - 数量(多少?)
// - 尺度(多大?多快?)
// - 概率(多可能?)
// - 比率(什么比例?)
// - 角度(什么方向?)
// - 阈值(行为何时改变?)
};

要设计有效的参数,专注于系统需要可调节的属性,而不是从"模式类型"的角度思考。

核心算法——表达哲学:

关键:算法哲学应该决定构建什么。

要通过代码表达哲学,避免思考"我应该使用哪种模式?",而是思考"如何通过代码表达这个哲学?"

如果哲学是关于有机涌现,考虑使用:

  • 随时间累积或增长的元素
  • 受自然规则约束的随机过程
  • 反馈循环和交互

如果哲学是关于数学之美,考虑使用:

  • 几何关系和比率
  • 三角函数和谐波
  • 精确计算创造意外模式

如果哲学是关于受控混沌,考虑使用:

  • 严格边界内的随机变化
  • 分岔和相变
  • 从混乱中涌现的秩序

算法从哲学中流动,而不是从选项菜单中选择。

要指导实现,让概念本质为创意和原创选择提供信息。构建一些表达这个特定请求愿景的东西。

画布设置:标准p5.js结构:

javascript
function setup() {
createCanvas(1200, 1200);
// 初始化系统
}
function draw() {
// 你的生成算法
// 可以是静态(noLoop)或动画
}

工艺要求

关键:要实现精通,创建感觉像通过大师生成艺术家无数次迭代涌现的算法。仔细调整每个参数。确保每个模式都有目的地涌现。这不是随机噪声——这是通过深度专业知识提炼的受控混沌。

  • 平衡:复杂但不视觉嘈杂,有序但不僵化
  • 色彩和谐:深思熟虑的调色板,不是随机RGB值
  • 构图:即使在随机性中,也要保持视觉层次和流动
  • 性能:流畅执行,如果是动画则针对实时优化
  • 可重复性:相同种子始终产生相同输出

输出格式

输出:

  1. 算法哲学——作为markdown或文本解释生成美学
  2. 单个HTML文件——从templates/viewer.html构建的自包含交互式生成艺术(见步骤0和下一节)

HTML文件包含一切:p5.js(来自CDN)、算法、参数控制和UI——全部在一个文件中,可以在claude.ai artifacts或任何浏览器中立即工作。从模板文件开始,而不是从头开始。


交互式文件创建

提醒:`templates/viewer.html` 应该已经被阅读(见步骤0)。使用该文件作为起点。

要允许探索生成艺术,创建一个单独的、自包含的HTML文件。确保此文件在claude.ai或任何浏览器中立即工作——不需要设置。所有内容内联嵌入。

关键:什么是固定的 vs 可变的

templates/viewer.html 文件是基础。它包含所需的精确结构和样式。

固定(始终按所示包含):

  • 布局结构(头部、侧边栏、主画布区域)
  • Anthropic品牌(UI颜色、字体、渐变)
  • 侧边栏中的Seed部分:
  • 种子显示
  • 上一个/下一个按钮
  • 随机按钮
  • 跳转到种子输入框 + 前往按钮
  • 侧边栏中的Actions部分:
  • 重新生成按钮
  • 重置按钮

可变(为每件艺术品自定义):

  • 整个p5.js算法(setup/draw/classes)
  • 参数对象(定义艺术需要的内容)
  • 侧边栏中的Parameters部分:
  • 参数控制数量
  • 参数名称
  • 滑块的最小值/最大值/步长
  • 控制类型(滑块、输入框等)
  • Colors部分(可选):
  • 有些艺术可能需要颜色选择器
  • 有些艺术可能使用固定颜色
  • 有些艺术可能是单色的(不需要颜色控制)
  • 根据艺术的需要决定

每件艺术品都应该有独特的参数和算法! 固定部分提供一致的UX——其他所有内容表达独特的愿景。

必需功能

1. 参数控制

  • 数值参数的滑块(粒子数量、噪声比例、速度等)
  • 调色板的颜色选择器
  • 参数变化时实时更新
  • 重置按钮恢复默认值

2. 种子导航

  • 显示当前种子数字
  • "上一个"和"下一个"按钮循环遍历种子
  • "随机"按钮用于随机种子
  • 输入框跳转到特定种子
  • 请求时生成100种变化(种子1-100)

3. 单个文件结构

html
<!DOCTYPE html>
<html>
<head>
<!-- p5.js来自CDN - 始终可用 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.7.0/p5.min.js"></script>
<style>
/* 所有样式内联 - 干净、最小化 */
/* 画布在顶部,控制在下方 */
</style>
</head>
<body>
<div id="canvas-container"></div>
<div id="controls">
<!-- 所有参数控制 -->
</div>
<script>
// 所有p5.js代码内联在这里
// 参数对象、类、函数
// setup() 和 draw()
// UI处理程序
// 全部自包含
</script>
</body>
</html>

关键:这是单个文件。没有外部文件,没有导入(除了p5.js CDN)。所有内容内联。

4. 实现细节——构建侧边栏

侧边栏结构:

1. Seed(固定) - 始终按所示包含:

  • 种子显示
  • 上一个/下一个/随机/跳转按钮

2. Parameters(可变) - 为艺术创建控制:

html
<div class="control-group">
<label>参数名称</label>
<input type="range" id="param" min="..." max="..." step="..." value="..." oninput="updateParam('param', this.value)">
<span class="value-display" id="param-value">...</span>
</div>

添加与参数数量一样多的control-group div。

3. Colors(可选/可变) - 如果艺术需要可调颜色则包含:

  • 如果用户应该控制调色板则添加颜色选择器
  • 如果艺术使用固定颜色则跳过此部分
  • 如果艺术是单色则跳过

4. Actions(固定) - 始终按所示包含:

  • 重新生成按钮
  • 重置按钮
  • 下载PNG按钮

要求:

  • 种子控制必须工作(上一个/下一个/随机/跳转/显示)
  • 所有参数必须有UI控制
  • 重新生成、重置、下载按钮必须工作
  • 保持Anthropic品牌(UI样式,不是艺术颜色)

使用文件

HTML文件立即工作:

  1. 在claude.ai中:显示为交互式文件——立即运行
  2. 作为文件:保存并在任何浏览器中打开——不需要服务器
  3. 分享:发送HTML文件——完全自包含

变化与探索

文件默认包含种子导航(上一个/下一个/随机按钮),允许用户探索变化而无需创建多个文件。如果用户想要突出显示特定变化:

  • 包含种子预设("变化1:种子42"、"变化2:种子127"等按钮)
  • 添加"画廊模式",并排显示多个种子的缩略图
  • 全部在同一个单个文件中

这就像从同一块版创建一系列印刷品——算法是一致的,但每个种子揭示其潜力的不同面向。交互性质意味着用户通过探索种子空间发现自己喜欢的作品。


创作过程

用户请求 → 算法哲学 → 实现

每个请求都是唯一的。过程涉及:

  1. 解释用户的意图——寻求什么美学?
  2. 创建算法哲学(4-6段)描述计算方法
  3. 用代码实现——构建表达这个哲学的算法
  4. 设计适当的参数——什么应该是可调的?
  5. 构建匹配的UI控制——这些参数的滑块/输入框

不变的部分:

  • Anthropic品牌(颜色、字体、布局)
  • 种子导航(始终存在)
  • 自包含HTML文件

其他一切都是可变的:

  • 算法本身
  • 参数
  • UI控制
  • 视觉结果

要获得最佳结果,相信创造力,让哲学指导实现。


资源

此技能包含有用的模板和文档:

  • templates/viewer.html:所有HTML文件的必需起点。
  • 这是基础——包含确切的结构和Anthropic品牌
  • 保持不变:布局结构、侧边栏组织、Anthropic颜色/字体、种子控制、操作按钮
  • 替换:p5.js算法、参数定义和Parameters部分中的UI控制
  • 文件中的大量注释标记了确切的内容保留 vs 替换
  • templates/generator_template.js:p5.js最佳实践和代码结构原则的参考。
  • 展示如何组织参数、使用种子随机、构建类
  • 不是模式菜单——使用这些原则构建独特的算法
  • 将算法内联嵌入HTML文件中(不要创建单独的.js文件)

关键提醒:

  • 模板是起点,不是灵感
  • 算法是创造独特之处的地方
  • 不要复制流场示例——构建哲学要求的东西
  • 但确实要保持模板中的确切UI结构和Anthropic品牌
All versionsv1.0.1 →