[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-danielmiessler--Fabric":3,"tool-danielmiessler--Fabric":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",143909,2,"2026-04-07T11:33:18",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":78,"owner_email":79,"owner_twitter":73,"owner_website":80,"owner_url":81,"languages":82,"stars":121,"forks":122,"last_commit_at":123,"license":124,"difficulty_score":32,"env_os":125,"env_gpu":126,"env_ram":126,"env_deps":127,"category_tags":129,"github_topics":130,"view_count":32,"oss_zip_url":136,"oss_zip_packed_at":136,"status":17,"created_at":137,"updated_at":138,"faqs":139,"releases":170},5035,"danielmiessler\u002FFabric","Fabric","Fabric is an open-source framework for augmenting humans using AI. It provides a modular system for solving specific problems using a crowdsourced set of AI prompts that can be used anywhere.","Fabric 是一个开源框架，旨在通过人工智能增强人类能力。它的核心理念是：当前 AI 技术并不缺乏能力，而是难以无缝融入我们的日常工作流。为了解决这一“集成难题”，Fabric 将提示词（Prompts）作为基本单元进行模块化管理，让用户能够针对具体任务创建、收集和组织高质量的 AI 解决方案。\n\n无论是需要快速总结文章、提取关键观点，还是处理复杂的数据分析，用户都可以在 Fabric 中调用由社区众包贡献的提示词模板。这些模板不仅可以在 Fabric 自带的命令行界面中直接使用，还能轻松集成到您喜欢的任何工具或应用中，真正实现 AI 能力的随处可用。\n\nFabric 特别适合开发者、研究人员以及热衷于效率提升的技术爱好者。对于习惯命令行操作的用户，它提供了极佳的交互体验；同时，其灵活的架构也支持自定义提示词和多种后端接入（如 OpenAI、Azure AI 等）。最新版本更引入了对 OpenAI Codex 及 Azure AI Gateway 的原生支持，进一步扩展了其在多模型环境下的适用性。通过将分散的 AI 功能整合为有序的工作流，Fabric 帮助用户更专注于创造性工作，让","Fabric 是一个开源框架，旨在通过人工智能增强人类能力。它的核心理念是：当前 AI 技术并不缺乏能力，而是难以无缝融入我们的日常工作流。为了解决这一“集成难题”，Fabric 将提示词（Prompts）作为基本单元进行模块化管理，让用户能够针对具体任务创建、收集和组织高质量的 AI 解决方案。\n\n无论是需要快速总结文章、提取关键观点，还是处理复杂的数据分析，用户都可以在 Fabric 中调用由社区众包贡献的提示词模板。这些模板不仅可以在 Fabric 自带的命令行界面中直接使用，还能轻松集成到您喜欢的任何工具或应用中，真正实现 AI 能力的随处可用。\n\nFabric 特别适合开发者、研究人员以及热衷于效率提升的技术爱好者。对于习惯命令行操作的用户，它提供了极佳的交互体验；同时，其灵活的架构也支持自定义提示词和多种后端接入（如 OpenAI、Azure AI 等）。最新版本更引入了对 OpenAI Codex 及 Azure AI Gateway 的原生支持，进一步扩展了其在多模型环境下的适用性。通过将分散的 AI 功能整合为有序的工作流，Fabric 帮助用户更专注于创造性工作，让技术真正服务于人的成长。","\u003Cdiv align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Fgo.warp.dev\u002Ffabric\" target=\"_blank\">\n        \u003Csup>Special thanks to:\u003C\u002Fsup>\n        \u003Cbr>\n        \u003Cimg alt=\"Warp sponsorship\" width=\"400\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_7f26e93a2b2c.png\">\n        \u003Cbr>\n        \u003Ch>Warp, built for coding with multiple AI agents\u003C\u002Fb>\n        \u003Cbr>\n        \u003Csup>Available for macOS, Linux and Windows\u003C\u002Fsup>\n    \u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\u003Cbr>\n\n\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_70e572c1633a.gif\" alt=\"fabriclogo\" width=\"400\" height=\"400\"\u002F>\n\n# `fabric`\n\n[![Static Badge](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fmission-human_flourishing_via_AI_augmentation-purple)](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric)\n\u003Cbr \u002F>\n[![GitHub top language](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flanguages\u002Ftop\u002Fdanielmiessler\u002Ffabric)](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric)\n[![GitHub last commit](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002Fdanielmiessler\u002Ffabric)](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Fcommits\u002Fmain)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-green.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n[![Ask DeepWiki](https:\u002F\u002Fdeepwiki.com\u002Fbadge.svg)](https:\u002F\u002Fdeepwiki.com\u002Fdanielmiessler\u002Ffabric)\n\n\u003Cdiv align=\"center\">\n\u003Ch4>\u003Ccode>fabric\u003C\u002Fcode> is an open-source framework for augmenting humans using AI.\u003C\u002Fh4>\n\u003C\u002Fdiv>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>English\u003C\u002Fstrong> ·\n  \u003Ca href=\"README.zh.md\">中文\u003C\u002Fa>\n\u003C\u002Fp>\n\n![Screenshot of fabric](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_eed1c5f722d2.png)\n\n\u003C\u002Fdiv>\n\n[Updates](#updates) •\n[What and Why](#what-and-why) •\n[Philosophy](#philosophy) •\n[Installation](#installation) •\n[Usage](#usage) •\n[REST API](#rest-api-server) •\n[Examples](#examples) •\n[Just Use the Patterns](#just-use-the-patterns) •\n[Custom Patterns](#custom-patterns) •\n[Helper Apps](#helper-apps) •\n[Meta](#meta)\n\n\u003C\u002Fdiv>\n\n## What and why\n\nSince the start of modern AI in late 2022 we've seen an **_extraordinary_** number of AI applications for accomplishing tasks. There are thousands of websites, chat-bots, mobile apps, and other interfaces for using all the different AI out there.\n\nIt's all really exciting and powerful, but _it's not easy to integrate this functionality into our lives._\n\n\u003Cdiv class=\"align center\">\n\u003Ch4>In other words, AI doesn't have a capabilities problem—it has an \u003Cem>integration\u003C\u002Fem> problem.\u003C\u002Fh4>\n\u003C\u002Fdiv>\n\n**Fabric was created to address this by creating and organizing the fundamental units of AI—the prompts themselves!**\n\nFabric organizes prompts by real-world task, allowing people to create, collect, and organize their most important AI solutions in a single place for use in their favorite tools. And if you're command-line focused, you can use Fabric itself as the interface!\n\n## Updates\n\nFor a deep dive into Fabric and its internals, read the documentation in the [docs folder](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Ftree\u002Fmain\u002Fdocs). There is\nalso the extremely useful and regularly updated [DeepWiki](https:\u002F\u002Fdeepwiki.com\u002Fdanielmiessler\u002FFabric) for Fabric.\n\n\u003Cdetails>\n\u003Csummary>Click to view recent updates\u003C\u002Fsummary>\n\nDear Users,\n\nWe've been doing so many exciting things here at Fabric, I wanted to give a quick summary here to give you a sense of our development velocity!\n\nBelow are the **new features and capabilities** we've added (newest first):\n\n### Recent Major Features\n\n- [v1.4.437](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.437) (March 16, 2026) — **OpenAI Codex PLugin**: Fabric now supports using OpenAI Codex (with your OpenAI subscription) as a backend!\n- [v1.4.417](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.417) (Feb 21, 2026) — **Azure AI Gateway Plugin**: Added Azure AI Gateway plugin supporting multiple backends (AWS Bedrock, Azure OpenAI, Google Vertex AI) through a unified Azure APIM Gateway with shared subscription key authentication.\n- [v1.4.416](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.416) (Feb 21, 2026) — **Azure Entra ID Authentication**: Added Azure Entra ID authentication plugin with shared Azure utilities, Entra ID\u002FMSAL support, and extracted common Azure logic into a reusable `azurecommon` package.\n- [v1.4.380](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.380) (Jan 15, 2026) — **Microsoft 365 Copilot Integration**: Added support for corporate Microsoft 365 Copilot, enabling enterprise users to leverage AI grounded in their organization's Microsoft 365 data (emails, documents, meetings.\n- [v1.4.378](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.378) (Jan 14, 2026) — **Digital Ocean GenAI Support**: Added support for Digital Ocean GenAI, along with a [guide for how to use it](.\u002Fdocs\u002FDigitalOcean-Agents-Setup.md).\n- [v1.4.356](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.356) (Dec 22, 2025) — **Complete Internationalization**: Full i18n support for setup prompts across all 10 languages with intelligent environment variable handling—making Fabric truly accessible worldwide while maintaining configuration consistency.\n- [v1.4.350](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.350) (Dec 18, 2025) — **Interactive API Documentation**: Adds Swagger\u002FOpenAPI UI at `\u002Fswagger\u002Findex.html` with comprehensive REST API documentation, enhanced developer guides, and improved endpoint discoverability for easier integration.\n- [v1.4.338](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.338) (Dec 4, 2025) — Add Abacus vendor support for Chat-LLM\n  models (see [RouteLLM APIs](https:\u002F\u002Fabacus.ai\u002Fapp\u002Froute-llm-apis)).\n- [v1.4.337](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.337) (Dec 4, 2025) — Add \"Z AI\" vendor support. See the [Z AI overview](https:\u002F\u002Fdocs.z.ai\u002Fguides\u002Foverview\u002Foverview) page for more details.\n- [v1.4.334](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.334) (Nov 26, 2025) — **Claude Opus 4.5**: Updates the Anthropic SDK to the latest and adds the new [Claude Opus 4.5](https:\u002F\u002Fwww.anthropic.com\u002Fnews\u002Fclaude-opus-4-5) to the available models.\n- [v1.4.331](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.331) (Nov 23, 2025) — **Support for GitHub Models**: Adds support for using GitHub Models.\n- [v1.4.322](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.322) (Nov 5, 2025) — **Interactive HTML Concept Maps and Claude Sonnet 4.5**: Adds `create_conceptmap` pattern for visual knowledge representation using Vis.js, introduces WELLNESS category with psychological analysis patterns, and upgrades to Claude Sonnet 4.5\n- [v1.4.317](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.317) (Sep 21, 2025) — **Portuguese Language Variants**: Adds BCP 47 locale normalization with support for Brazilian Portuguese (pt-BR) and European Portuguese (pt-PT) with intelligent fallback chains\n- [v1.4.314](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.314) (Sep 17, 2025) — **Azure OpenAI Migration**: Migrates to official `openai-go\u002Fazure` SDK with improved authentication and default API version support\n- [v1.4.311](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.311) (Sep 13, 2025) — **More internationalization support**: Adds de (German), fa (Persian \u002F Farsi), fr (French), it (Italian),\n  ja (Japanese), pt (Portuguese), zh (Chinese)\n- [v1.4.309](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.309) (Sep 9, 2025) — **Comprehensive internationalization support**: Includes English and Spanish locale files.\n- [v1.4.303](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.303) (Aug 29, 2025) — **New Binary Releases**: Linux ARM and Windows ARM targets. You can run Fabric on the Raspberry PI and on your Windows Surface!\n- [v1.4.294](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.294) (Aug 20, 2025) — **Venice AI Support**: Added the Venice AI provider. Venice is a Privacy-First, Open-Source AI provider. See their [\"About Venice\"](https:\u002F\u002Fdocs.venice.ai\u002Foverview\u002Fabout-venice) page for details.\n- [v1.4.291](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.291) (Aug 18, 2025) — **Speech To Text**: Add OpenAI speech-to-text support with `--transcribe-file`, `--transcribe-model`, and `--split-media-file` flags.\n\nThese features represent our commitment to making Fabric the most powerful and flexible AI augmentation framework available!\n\n\u003C\u002Fdetails>\n\n## Intro videos\n\nKeep in mind that many of these were recorded when Fabric was Python-based, so remember to use the current [install instructions](#installation) below.\n\n- [Network Chuck](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=UbDyjIIGaxQ)\n- [David Bombal](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=vF-MQmVxnCs)\n- [My Own Intro to the Tool](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=wPEyyigh10g)\n- [More Fabric YouTube Videos](https:\u002F\u002Fwww.youtube.com\u002Fresults?search_query=fabric+ai)\n\n## Navigation\n\n- [`fabric`](#fabric)\n  - [What and why](#what-and-why)\n  - [Updates](#updates)\n    - [Recent Major Features](#recent-major-features)\n  - [Intro videos](#intro-videos)\n  - [Navigation](#navigation)\n  - [Changelog](#changelog)\n  - [Philosophy](#philosophy)\n    - [Breaking problems into components](#breaking-problems-into-components)\n    - [Too many prompts](#too-many-prompts)\n  - [Installation](#installation)\n    - [One-Line Install (Recommended)](#one-line-install-recommended)\n    - [Manual Binary Downloads](#manual-binary-downloads)\n    - [Using package managers](#using-package-managers)\n      - [macOS (Homebrew)](#macos-homebrew)\n      - [Arch Linux (AUR)](#arch-linux-aur)\n      - [Windows](#windows)\n    - [From Source](#from-source)\n    - [Docker](#docker)\n    - [Environment Variables](#environment-variables)\n    - [Setup](#setup)\n    - [Supported AI Providers](#supported-ai-providers)\n    - [Per-Pattern Model Mapping](#per-pattern-model-mapping)\n    - [Add aliases for all patterns](#add-aliases-for-all-patterns)\n      - [Save your files in markdown using aliases](#save-your-files-in-markdown-using-aliases)\n    - [Migration](#migration)\n    - [Upgrading](#upgrading)\n    - [Shell Completions](#shell-completions)\n      - [Quick install (no clone required)](#quick-install-no-clone-required)\n      - [Zsh Completion](#zsh-completion)\n      - [Bash Completion](#bash-completion)\n      - [Fish Completion](#fish-completion)\n  - [Usage](#usage)\n    - [Debug Levels](#debug-levels)\n    - [Dry Run Mode](#dry-run-mode)\n    - [Extensions](#extensions)\n  - [REST API Server](#rest-api-server)\n    - [Ollama Compatibility Mode](#ollama-compatibility-mode)\n  - [Our approach to prompting](#our-approach-to-prompting)\n  - [Examples](#examples)\n  - [Just use the Patterns](#just-use-the-patterns)\n    - [Prompt Strategies](#prompt-strategies)\n      - [Available Strategies](#available-strategies)\n  - [Custom Patterns](#custom-patterns)\n    - [Setting Up Custom Patterns](#setting-up-custom-patterns)\n    - [Using Custom Patterns](#using-custom-patterns)\n    - [How It Works](#how-it-works)\n  - [Helper Apps](#helper-apps)\n    - [`to_pdf`](#to_pdf)\n    - [`to_pdf` Installation](#to_pdf-installation)\n    - [`code2context`](#code2context)\n    - [`generate_changelog`](#generate_changelog)\n  - [pbpaste](#pbpaste)\n  - [Web Interface (Fabric Web App)](#web-interface-fabric-web-app)\n  - [Meta](#meta)\n    - [Primary contributors](#primary-contributors)\n    - [Contributors](#contributors)\n  - [💜 Support This Project](#-support-this-project)\n\n\u003Cbr \u002F>\n\n## Changelog\n\nFabric is evolving rapidly.\n\nStay current with the latest features by reviewing the [CHANGELOG](.\u002FCHANGELOG.md) for all recent changes.\n\n## Philosophy\n\n> AI isn't a thing; it's a _magnifier_ of a thing. And that thing is **human creativity**.\n\nWe believe the purpose of technology is to help humans flourish, so when we talk about AI we start with the **human** problems we want to solve.\n\n### Breaking problems into components\n\nOur approach is to break problems into individual pieces (see below) and then apply AI to them one at a time. See below for some examples.\n\n\u003Cimg width=\"2078\" alt=\"augmented_challenges\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_c1912024989d.png\">\n\n### Too many prompts\n\nPrompts are good for this, but the biggest challenge I faced in 2023——which still exists today—is **the sheer number of AI prompts out there**. We all have prompts that are useful, but it's hard to discover new ones, know if they are good or not, _and manage different versions of the ones we like_.\n\nOne of `fabric`'s primary features is helping people collect and integrate prompts, which we call _Patterns_, into various parts of their lives.\n\nFabric has Patterns for all sorts of life and work activities, including:\n\n- Extracting the most interesting parts of YouTube videos and podcasts\n- Writing an essay in your own voice with just an idea as an input\n- Summarizing opaque academic papers\n- Creating perfectly matched AI art prompts for a piece of writing\n- Rating the quality of content to see if you want to read\u002Fwatch the whole thing\n- Getting summaries of long, boring content\n- Explaining code to you\n- Turning bad documentation into usable documentation\n- Creating social media posts from any content input\n- And a million more…\n\n## Installation\n\n### One-Line Install (Recommended)\n\n**Unix\u002FLinux\u002FmacOS:**\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fdanielmiessler\u002Ffabric\u002Fmain\u002Fscripts\u002Finstaller\u002Finstall.sh | bash\n```\n\n**Windows PowerShell:**\n\n```powershell\niwr -useb https:\u002F\u002Fraw.githubusercontent.com\u002Fdanielmiessler\u002Ffabric\u002Fmain\u002Fscripts\u002Finstaller\u002Finstall.ps1 | iex\n```\n\n> See [scripts\u002Finstaller\u002FREADME.md](.\u002Fscripts\u002Finstaller\u002FREADME.md) for custom installation options and troubleshooting.\n\n### Manual Binary Downloads\n\nThe latest release binary archives and their expected SHA256 hashes can be found at \u003Chttps:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Flatest>\n\n### Using package managers\n\n**NOTE:** using Homebrew or the Arch Linux package managers makes `fabric` available as `fabric-ai`, so add\nthe following alias to your shell startup files to account for this:\n\n```bash\nalias fabric='fabric-ai'\n```\n\n#### macOS (Homebrew)\n\n`brew install fabric-ai`\n\n#### Arch Linux (AUR)\n\n`yay -S fabric-ai`\n\n#### Windows\n\nUse the official Microsoft supported `Winget` tool:\n\n`winget install danielmiessler.Fabric`\n\n### From Source\n\nTo install Fabric, [make sure Go is installed](https:\u002F\u002Fgo.dev\u002Fdoc\u002Finstall), and then run the following command.\n\n```bash\n# Install Fabric directly from the repo\ngo install github.com\u002Fdanielmiessler\u002Ffabric\u002Fcmd\u002Ffabric@latest\n```\n\n### Docker\n\nRun Fabric using pre-built Docker images:\n\n```bash\n# Use latest image from Docker Hub\ndocker run --rm -it kayvan\u002Ffabric:latest --version\n\n# Use specific version from GHCR\ndocker run --rm -it ghcr.io\u002Fksylvan\u002Ffabric:v1.4.305 --version\n\n# Run setup (first time)\nmkdir -p $HOME\u002F.fabric-config\ndocker run --rm -it -v $HOME\u002F.fabric-config:\u002Froot\u002F.config\u002Ffabric kayvan\u002Ffabric:latest --setup\n\n# Use Fabric with your patterns\ndocker run --rm -it -v $HOME\u002F.fabric-config:\u002Froot\u002F.config\u002Ffabric kayvan\u002Ffabric:latest -p summarize\n\n# Run the REST API server (see REST API Server section)\ndocker run --rm -it -p 8080:8080 -v $HOME\u002F.fabric-config:\u002Froot\u002F.config\u002Ffabric kayvan\u002Ffabric:latest --serve\n```\n\n**Images available at:**\n\n- Docker Hub: [kayvan\u002Ffabric](https:\u002F\u002Fhub.docker.com\u002Frepository\u002Fdocker\u002Fkayvan\u002Ffabric\u002Fgeneral)\n- GHCR: [ksylvan\u002Ffabric](https:\u002F\u002Fgithub.com\u002Fksylvan\u002Ffabric\u002Fpkgs\u002Fcontainer\u002Ffabric)\n\nSee [scripts\u002Fdocker\u002FREADME.md](.\u002Fscripts\u002Fdocker\u002FREADME.md) for building custom images and advanced configuration.\n\n### Environment Variables\n\nYou may need to set some environment variables in your `~\u002F.bashrc` on linux or `~\u002F.zshrc` file on mac to be able to run the `fabric` command. Here is an example of what you can add:\n\nFor Intel based macs or linux\n\n```bash\n# Golang environment variables\nexport GOROOT=\u002Fusr\u002Flocal\u002Fgo\nexport GOPATH=$HOME\u002Fgo\n\n# Update PATH to include GOPATH and GOROOT binaries\nexport PATH=$GOPATH\u002Fbin:$GOROOT\u002Fbin:$HOME\u002F.local\u002Fbin:$PATH\n```\n\nfor Apple Silicon based macs\n\n```bash\n# Golang environment variables\nexport GOROOT=$(brew --prefix go)\u002Flibexec\nexport GOPATH=$HOME\u002Fgo\nexport PATH=$GOPATH\u002Fbin:$GOROOT\u002Fbin:$HOME\u002F.local\u002Fbin:$PATH\n```\n\n### Setup\n\nNow run the following command\n\n```bash\n# Run the setup to set up your directories and keys\nfabric --setup\n```\n\nIf everything works you are good to go.\n\n### Supported AI Providers\n\nFabric supports a wide range of AI providers:\n\n**Native Integrations:**\n\n- OpenAI\n- OpenAI Codex (ChatGPT\u002FCodex subscription OAuth via private backend)\n- Anthropic (Claude)\n- Google Gemini\n- Ollama (local models)\n- Azure OpenAI\n- Amazon Bedrock\n- Vertex AI\n- LM Studio\n- Perplexity\n\n**OpenAI-Compatible Providers:**\n\n- Abacus\n- AIML\n- Cerebras\n- DeepSeek\n- DigitalOcean\n- GitHub Models\n- GrokAI\n- Groq\n- Langdock\n- LiteLLM\n- MiniMax\n- Mistral\n- Novita AI\n- OpenRouter\n- SiliconCloud\n- Together\n- Venice AI\n- Z AI\n\nRun `fabric --setup` to configure your preferred provider(s), or use `fabric --listvendors` to see all available vendors.\n\n### Per-Pattern Model Mapping\n\n You can configure specific models for individual patterns using environment variables\n like `FABRIC_MODEL_PATTERN_NAME=vendor|model`\n\n This makes it easy to maintain these per-pattern model mappings in your shell startup files.\n\n### Add aliases for all patterns\n\nIn order to add aliases for all your patterns and use them directly as commands, for example, `summarize` instead of `fabric --pattern summarize`\nYou can add the following to your `.zshrc` or `.bashrc` file. You\ncan also optionally set the `FABRIC_ALIAS_PREFIX` environment variable\nbefore, if you'd prefer all the fabric aliases to start with the same prefix.\n\n```bash\n# Loop through all files in the ~\u002F.config\u002Ffabric\u002Fpatterns directory\nfor pattern_file in $HOME\u002F.config\u002Ffabric\u002Fpatterns\u002F*; do\n    # Get the base name of the file (i.e., remove the directory path)\n    pattern_name=\"$(basename \"$pattern_file\")\"\n    alias_name=\"${FABRIC_ALIAS_PREFIX:-}${pattern_name}\"\n\n    # Create an alias in the form: alias pattern_name=\"fabric --pattern pattern_name\"\n    alias_command=\"alias $alias_name='fabric --pattern $pattern_name'\"\n\n    # Evaluate the alias command to add it to the current shell\n    eval \"$alias_command\"\ndone\n\nyt() {\n    if [ \"$#\" -eq 0 ] || [ \"$#\" -gt 2 ]; then\n        echo \"Usage: yt [-t | --timestamps] youtube-link\"\n        echo \"Use the '-t' flag to get the transcript with timestamps.\"\n        return 1\n    fi\n\n    transcript_flag=\"--transcript\"\n    if [ \"$1\" = \"-t\" ] || [ \"$1\" = \"--timestamps\" ]; then\n        transcript_flag=\"--transcript-with-timestamps\"\n        shift\n    fi\n    local video_link=\"$1\"\n    fabric -y \"$video_link\" $transcript_flag\n}\n```\n\nYou can add the below code for the equivalent aliases inside PowerShell by running `notepad $PROFILE` inside a PowerShell window:\n\n```powershell\n# Path to the patterns directory\n$patternsPath = Join-Path $HOME \".config\u002Ffabric\u002Fpatterns\"\nforeach ($patternDir in Get-ChildItem -Path $patternsPath -Directory) {\n    # Prepend FABRIC_ALIAS_PREFIX if set; otherwise use empty string\n    $prefix = $env:FABRIC_ALIAS_PREFIX ?? ''\n    $patternName = \"$($patternDir.Name)\"\n    $aliasName = \"$prefix$patternName\"\n    # Dynamically define a function for each pattern\n    $functionDefinition = @\"\nfunction $aliasName {\n    [CmdletBinding()]\n    param(\n        [Parameter(ValueFromPipeline = `$true)]\n        [string] `$InputObject,\n\n        [Parameter(ValueFromRemainingArguments = `$true)]\n        [String[]] `$patternArgs\n    )\n\n    begin {\n        # Initialize an array to collect pipeline input\n        `$collector = @()\n    }\n\n    process {\n        # Collect pipeline input objects\n        if (`$InputObject) {\n            `$collector += `$InputObject\n        }\n    }\n\n    end {\n        # Join all pipeline input into a single string, separated by newlines\n        `$pipelineContent = `$collector -join \"`n\"\n\n        # If there's pipeline input, include it in the call to fabric\n        if (`$pipelineContent) {\n            `$pipelineContent | fabric --pattern $patternName `$patternArgs\n        } else {\n            # No pipeline input; just call fabric with the additional args\n            fabric --pattern $patternName `$patternArgs\n        }\n    }\n}\n\"@\n    # Add the function to the current session\n    Invoke-Expression $functionDefinition\n}\n\n# Define the 'yt' function as well\nfunction yt {\n    [CmdletBinding()]\n    param(\n        [Parameter()]\n        [Alias(\"timestamps\")]\n        [switch]$t,\n\n        [Parameter(Position = 0, ValueFromPipeline = $true)]\n        [string]$videoLink\n    )\n\n    begin {\n        $transcriptFlag = \"--transcript\"\n        if ($t) {\n            $transcriptFlag = \"--transcript-with-timestamps\"\n        }\n    }\n\n    process {\n        if (-not $videoLink) {\n            Write-Error \"Usage: yt [-t | --timestamps] youtube-link\"\n            return\n        }\n    }\n\n    end {\n        if ($videoLink) {\n            # Execute and allow output to flow through the pipeline\n            fabric -y $videoLink $transcriptFlag\n        }\n    }\n}\n```\n\nThis also creates a `yt` alias that allows you to use `yt https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=4b0iet22VIk` to get transcripts, comments, and metadata.\n\n#### Save your files in markdown using aliases\n\nIf in addition to the above aliases you would like to have the option to save the output to your favorite markdown note vault like Obsidian then instead of the above add the following to your `.zshrc` or `.bashrc` file:\n\n```bash\n# Define the base directory for Obsidian notes\nobsidian_base=\"\u002Fpath\u002Fto\u002Fobsidian\"\n\n# Loop through all files in the ~\u002F.config\u002Ffabric\u002Fpatterns directory\nfor pattern_file in ~\u002F.config\u002Ffabric\u002Fpatterns\u002F*; do\n    # Get the base name of the file (i.e., remove the directory path)\n    pattern_name=$(basename \"$pattern_file\")\n\n    # Remove any existing alias with the same name\n    unalias \"$pattern_name\" 2>\u002Fdev\u002Fnull\n\n    # Define a function dynamically for each pattern\n    eval \"\n    $pattern_name() {\n        local title=\\$1\n        local date_stamp=\\$(date +'%Y-%m-%d')\n        local output_path=\\\"\\$obsidian_base\u002F\\${date_stamp}-\\${title}.md\\\"\n\n        # Check if a title was provided\n        if [ -n \\\"\\$title\\\" ]; then\n            # If a title is provided, use the output path\n            fabric --pattern \\\"$pattern_name\\\" -o \\\"\\$output_path\\\"\n        else\n            # If no title is provided, use --stream\n            fabric --pattern \\\"$pattern_name\\\" --stream\n        fi\n    }\n    \"\ndone\n```\n\nThis will allow you to use the patterns as aliases like in the above for example `summarize` instead of `fabric --pattern summarize --stream`, however if you pass in an extra argument like this `summarize \"my_article_title\"` your output will be saved in the destination that you set in `obsidian_base=\"\u002Fpath\u002Fto\u002Fobsidian\"` in the following format `YYYY-MM-DD-my_article_title.md` where the date gets autogenerated for you.\nYou can tweak the date format by tweaking the `date_stamp` format.\n\n### Migration\n\nIf you have the Legacy (Python) version installed and want to migrate to the Go version, here's how you do it. It's basically two steps: 1) uninstall the Python version, and 2) install the Go version.\n\n```bash\n# Uninstall Legacy Fabric\npipx uninstall fabric\n\n# Clear any old Fabric aliases\n(check your .bashrc, .zshrc, etc.)\n# Install the Go version\ngo install github.com\u002Fdanielmiessler\u002Ffabric\u002Fcmd\u002Ffabric@latest\n# Run setup for the new version. Important because things have changed\nfabric --setup\n```\n\nThen [set your environmental variables](#environment-variables) as shown above.\n\n### Upgrading\n\nThe great thing about Go is that it's super easy to upgrade. Just run the same command you used to install it in the first place and you'll always get the latest version.\n\n```bash\ngo install github.com\u002Fdanielmiessler\u002Ffabric\u002Fcmd\u002Ffabric@latest\n```\n\n### Shell Completions\n\nFabric provides shell completion scripts for Zsh, Bash, and Fish\nshells, making it easier to use the CLI by providing tab completion\nfor commands and options.\n\n#### Quick install (no clone required)\n\nYou can install completions directly via a one-liner:\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fdanielmiessler\u002FFabric\u002Frefs\u002Fheads\u002Fmain\u002Fcompletions\u002Fsetup-completions.sh | sh\n```\n\nOptional variants:\n\n```bash\n# Dry-run (see actions without changing your system)\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fdanielmiessler\u002FFabric\u002Frefs\u002Fheads\u002Fmain\u002Fcompletions\u002Fsetup-completions.sh | sh -s -- --dry-run\n\n# Override the download source (advanced)\nFABRIC_COMPLETIONS_BASE_URL=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fdanielmiessler\u002FFabric\u002Frefs\u002Fheads\u002Fmain\u002Fcompletions\" \\\n    sh -c \"$(curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fdanielmiessler\u002FFabric\u002Frefs\u002Fheads\u002Fmain\u002Fcompletions\u002Fsetup-completions.sh)\"\n```\n\n#### Zsh Completion\n\nTo enable Zsh completion:\n\n```bash\n# Copy the completion file to a directory in your $fpath\nmkdir -p ~\u002F.zsh\u002Fcompletions\ncp completions\u002F_fabric ~\u002F.zsh\u002Fcompletions\u002F\n\n# Add the directory to fpath in your .zshrc before compinit\necho 'fpath=(~\u002F.zsh\u002Fcompletions $fpath)' >> ~\u002F.zshrc\necho 'autoload -Uz compinit && compinit' >> ~\u002F.zshrc\n```\n\n#### Bash Completion\n\nTo enable Bash completion:\n\n```bash\n# Source the completion script in your .bashrc\necho 'source \u002Fpath\u002Fto\u002Ffabric\u002Fcompletions\u002Ffabric.bash' >> ~\u002F.bashrc\n\n# Or copy to the system-wide bash completion directory\nsudo cp completions\u002Ffabric.bash \u002Fetc\u002Fbash_completion.d\u002F\n```\n\n#### Fish Completion\n\nTo enable Fish completion:\n\n```bash\n# Copy the completion file to the fish completions directory\nmkdir -p ~\u002F.config\u002Ffish\u002Fcompletions\ncp completions\u002Ffabric.fish ~\u002F.config\u002Ffish\u002Fcompletions\u002F\n```\n\n## Usage\n\nOnce you have it all set up, here's how to use it.\n\n```bash\nfabric -h\n```\n\n```plaintext\nUsage:\n  fabric [OPTIONS]\n\nApplication Options:\n  -p, --pattern=                    Choose a pattern from the available patterns\n  -v, --variable=                   Values for pattern variables, e.g. -v=#role:expert -v=#points:30\n  -C, --context=                    Choose a context from the available contexts\n      --session=                    Choose a session from the available sessions\n  -a, --attachment=                 Attachment path or URL (e.g. for OpenAI image recognition messages)\n  -S, --setup                       Run setup for all reconfigurable parts of fabric\n  -t, --temperature=                Set temperature (default: 0.7)\n  -T, --topp=                       Set top P (default: 0.9)\n  -s, --stream                      Stream\n  -P, --presencepenalty=            Set presence penalty (default: 0.0)\n  -r, --raw                         Use the defaults of the model without sending chat options\n                                    (temperature, top_p, etc.). Only affects OpenAI-compatible providers.\n                                    Anthropic models always use smart parameter selection to comply with\n                                    model-specific requirements.\n  -F, --frequencypenalty=           Set frequency penalty (default: 0.0)\n  -l, --listpatterns                List all patterns\n  -L, --listmodels                  List all available models\n  -x, --listcontexts                List all contexts\n  -X, --listsessions                List all sessions\n  -U, --updatepatterns              Update patterns\n  -c, --copy                        Copy to clipboard\n  -m, --model=                      Choose model\n  -V, --vendor=                     Specify vendor for chosen model (e.g., -V \"LM Studio\" -m openai\u002Fgpt-oss-20b)\n      --modelContextLength=         Model context length (only affects ollama)\n  -o, --output=                     Output to file\n      --output-session              Output the entire session (also a temporary one) to the output file\n  -n, --latest=                     Number of latest patterns to list (default: 0)\n  -d, --changeDefaultModel          Change default model\n  -y, --youtube=                    YouTube video or play list \"URL\" to grab transcript, comments from it\n                                    and send to chat or print it put to the console and store it in the\n                                    output file\n      --playlist                    Prefer playlist over video if both ids are present in the URL\n      --transcript                  Grab transcript from YouTube video and send to chat (it is used per\n                                    default).\n      --transcript-with-timestamps  Grab transcript from YouTube video with timestamps and send to chat\n      --comments                    Grab comments from YouTube video and send to chat\n      --metadata                    Output video metadata\n  -g, --language=                   Specify the Language Code for the chat, e.g. -g=en -g=zh\n  -u, --scrape_url=                 Scrape website URL to markdown using Jina AI\n  -q, --scrape_question=            Search question using Jina AI\n  -e, --seed=                       Seed to be used for LMM generation\n  -w, --wipecontext=                Wipe context\n  -W, --wipesession=                Wipe session\n      --printcontext=               Print context\n      --printsession=               Print session\n      --readability                 Convert HTML input into a clean, readable view\n      --input-has-vars              Apply variables to user input\n      --no-variable-replacement     Disable pattern variable replacement\n      --dry-run                     Show what would be sent to the model without actually sending it\n      --serve                       Serve the Fabric Rest API\n      --serveOllama                 Serve the Fabric Rest API with ollama endpoints\n      --address=                    The address to bind the REST API (default: :8080)\n      --api-key=                    API key used to secure server routes\n      --config=                     Path to YAML config file\n      --version                     Print current version\n      --listextensions              List all registered extensions\n      --addextension=               Register a new extension from config file path\n      --rmextension=                Remove a registered extension by name\n      --strategy=                   Choose a strategy from the available strategies\n      --liststrategies              List all strategies\n      --listvendors                 List all vendors\n      --shell-complete-list         Output raw list without headers\u002Fformatting (for shell completion)\n      --search                      Enable web search tool for supported models (Anthropic, OpenAI, Gemini)\n      --search-location=            Set location for web search results (e.g., 'America\u002FLos_Angeles')\n      --image-file=                 Save generated image to specified file path (e.g., 'output.png')\n      --image-size=                 Image dimensions: 1024x1024, 1536x1024, 1024x1536, auto (default: auto)\n      --image-quality=              Image quality: low, medium, high, auto (default: auto)\n      --image-compression=          Compression level 0-100 for JPEG\u002FWebP formats (default: not set)\n      --image-background=           Background type: opaque, transparent (default: opaque, only for\n                                    PNG\u002FWebP)\n      --suppress-think              Suppress text enclosed in thinking tags\n      --think-start-tag=            Start tag for thinking sections (default: \u003Cthink>)\n      --think-end-tag=              End tag for thinking sections (default: \u003C\u002Fthink>)\n      --disable-responses-api       Disable OpenAI Responses API (default: false)\n      --voice=                      TTS voice name for supported models (e.g., Kore, Charon, Puck)\n                                    (default: Kore)\n      --list-gemini-voices          List all available Gemini TTS voices\n      --notification                Send desktop notification when command completes\n      --notification-command=       Custom command to run for notifications (overrides built-in\n                                    notifications)\n      --yt-dlp-args=                Additional arguments to pass to yt-dlp (e.g. '--cookies-from-browser brave')\n      --thinking=                   Set reasoning\u002Fthinking level (e.g., off, low, medium, high, or\n                                    numeric tokens for Anthropic or Google Gemini)\n      --show-metadata               Print metadata (input\u002Foutput tokens) to stderr\n      --debug=                     Set debug level (0: off, 1: basic, 2: detailed, 3: trace)\nHelp Options:\n  -h, --help                        Show this help message\n```\n\n### Debug Levels\n\nUse the `--debug` flag to control runtime logging:\n\n- `0`: off (default)\n- `1`: basic debug info\n- `2`: detailed debugging\n- `3`: trace level\n\n### Dry Run Mode\n\nUse `--dry-run` to preview what would be sent to the AI model without making an API call:\n\n```bash\necho \"test input\" | fabric --dry-run -p summarize\n```\n\nThis is useful for debugging patterns, checking prompt construction, and verifying input formatting before using API credits.\n\n### Extensions\n\nFabric supports extensions that can be called within patterns. See the [Extension Guide](internal\u002Fplugins\u002Ftemplate\u002FExamples\u002FREADME.md) for complete documentation.\n\n**Important:** Extensions only work within pattern files, not via direct stdin. See the guide for details and examples.\n\n## REST API Server\n\nFabric includes a built-in REST API server that exposes all core functionality over HTTP. Start the server with:\n\n```bash\nfabric --serve\n```\n\nThe server provides endpoints for:\n\n- Chat completions with streaming responses\n- Pattern management (create, read, update, delete)\n- Context and session management\n- Model and vendor listing\n- YouTube transcript extraction\n- Configuration management\n\nFor complete endpoint documentation, authentication setup, and usage examples, see [REST API Documentation](docs\u002Frest-api.md).\n\n### Ollama Compatibility Mode\n\nFabric can serve as a drop-in replacement for Ollama by exposing Ollama-compatible API endpoints. Start the server with:\n\n```bash\nfabric --serve --serveOllama\n```\n\nThis enables the following Ollama-compatible endpoints:\n\n- `GET \u002Fapi\u002Ftags` - List available patterns as models\n- `POST \u002Fapi\u002Fchat` - Chat completions\n- `GET \u002Fapi\u002Fversion` - Server version\n\nApplications configured to use the Ollama API can point to your Fabric server instead, allowing you to use any of Fabric's supported AI providers through the Ollama interface. Patterns appear as models (e.g., `summarize:latest`).\n\n## Our approach to prompting\n\nFabric _Patterns_ are different than most prompts you'll see.\n\n- **First, we use `Markdown` to help ensure maximum readability and editability**. This not only helps the creator make a good one, but also anyone who wants to deeply understand what it does. _Importantly, this also includes the AI you're sending it to!_\n\nHere's an example of a Fabric Pattern.\n\n```bash\nhttps:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fblob\u002Fmain\u002Fdata\u002Fpatterns\u002Fextract_wisdom\u002Fsystem.md\n```\n\n\u003Cimg width=\"1461\" alt=\"pattern-example\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_132c5dd55249.png\">\n\n- **Next, we are extremely clear in our instructions**, and we use the Markdown structure to emphasize what we want the AI to do, and in what order.\n\n- **And finally, we tend to use the System section of the prompt almost exclusively**. In over a year of being heads-down with this stuff, we've just seen more efficacy from doing that. If that changes, or we're shown data that says otherwise, we will adjust.\n\n## Examples\n\n> The following examples use the macOS `pbpaste` to paste from the clipboard. See the [pbpaste](#pbpaste) section below for Windows and Linux alternatives.\n\nNow let's look at some things you can do with Fabric.\n\n1. Run the `summarize` Pattern based on input from `stdin`. In this case, the body of an article.\n\n    ```bash\n    pbpaste | fabric --pattern summarize\n    ```\n\n2. Run the `analyze_claims` Pattern with the `--stream` option to get immediate and streaming results.\n\n    ```bash\n    pbpaste | fabric --stream --pattern analyze_claims\n    ```\n\n3. Run the `extract_wisdom` Pattern with the `--stream` option to get immediate and streaming results from any      Youtube video (much like in the original introduction video).\n\n    ```bash\n    fabric -y \"https:\u002F\u002Fyoutube.com\u002Fwatch?v=uXs-zPc63kM\" --stream --pattern extract_wisdom\n    ```\n\n4. Create patterns- you must create a .md file with the pattern and save it to `~\u002F.config\u002Ffabric\u002Fpatterns\u002F[yourpatternname]`.\n\n5. Run a `analyze_claims` pattern on a website. Fabric uses Jina AI to scrape the URL into markdown format before sending it to the model.\n\n    ```bash\n    fabric -u https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002F -p analyze_claims\n    ```\n\n## Just use the Patterns\n\n\u003Cimg width=\"1173\" alt=\"fabric-patterns-screenshot\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_7e6889a78efc.png\">\n\n\u003Cbr \u002F>\n\u003Cbr \u002F>\n\nIf you're not looking to do anything fancy, and you just want a lot of great prompts, you can navigate to the [`\u002Fpatterns`](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Ftree\u002Fmain\u002Fdata\u002Fpatterns) directory and start exploring!\n\nWe hope that if you used nothing else from Fabric, the Patterns by themselves will make the project useful.\n\nYou can use any of the Patterns you see there in any AI application that you have, whether that's ChatGPT or some other app or website. Our plan and prediction is that people will soon be sharing many more than those we've published, and they will be way better than ours.\n\nThe wisdom of crowds for the win.\n\n### Prompt Strategies\n\nFabric also implements prompt strategies like \"Chain of Thought\" or \"Chain of Draft\" which can\nbe used in addition to the basic patterns.\n\nSee the [Thinking Faster by Writing Less](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2502.18600) paper and\nthe [Thought Generation section of Learn Prompting](https:\u002F\u002Flearnprompting.org\u002Fdocs\u002Fadvanced\u002Fthought_generation\u002Fintroduction) for examples of prompt strategies.\n\nEach strategy is available as a small `json` file in the [`\u002Fstrategies`](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Ftree\u002Fmain\u002Fdata\u002Fstrategies) directory.\n\nThe prompt modification of the strategy is applied to the system prompt and passed on to the\nLLM in the chat session.\n\nUse `fabric -S` and select the option to install the strategies in your `~\u002F.config\u002Ffabric` directory.\n\n#### Available Strategies\n\nFabric includes several prompt strategies:\n\n- `cot` - Chain-of-Thought: Step-by-step reasoning\n- `cod` - Chain-of-Draft: Iterative drafting with minimal notes (5 words max per step)\n- `tot` - Tree-of-Thought: Generate multiple reasoning paths and select the best one\n- `aot` - Atom-of-Thought: Break problems into smallest independent atomic sub-problems\n- `ltm` - Least-to-Most: Solve problems from easiest to hardest sub-problems\n- `self-consistent` - Self-Consistency: Multiple reasoning paths with consensus\n- `self-refine` - Self-Refinement: Answer, critique, and refine\n- `reflexion` - Reflexion: Answer, critique briefly, and provide refined answer\n- `standard` - Standard: Direct answer without explanation\n\nUse the `--strategy` flag to apply a strategy:\n\n```bash\necho \"Analyze this code\" | fabric --strategy cot -p analyze_code\n```\n\nList all available strategies with:\n\n```bash\nfabric --liststrategies\n```\n\nStrategies are stored as JSON files in `~\u002F.config\u002Ffabric\u002Fstrategies\u002F`. See the default strategies for the format specification.\n\n## Custom Patterns\n\nYou may want to use Fabric to create your own custom Patterns—but not share them with others. No problem!\n\nFabric now supports a dedicated custom patterns directory that keeps your personal patterns separate from the built-in ones. This means your custom patterns won't be overwritten when you update Fabric's built-in patterns.\n\n### Setting Up Custom Patterns\n\n1. Run the Fabric setup:\n\n   ```bash\n   fabric --setup\n   ```\n\n2. Select the \"Custom Patterns\" option from the Tools menu and enter your desired directory path (e.g., `~\u002Fmy-custom-patterns`)\n\n3. Fabric will automatically create the directory if it does not exist.\n\n### Using Custom Patterns\n\n1. Create your custom pattern directory structure:\n\n   ```bash\n   mkdir -p ~\u002Fmy-custom-patterns\u002Fmy-analyzer\n   ```\n\n2. Create your pattern file\n\n   ```bash\n   echo \"You are an expert analyzer of ...\" > ~\u002Fmy-custom-patterns\u002Fmy-analyzer\u002Fsystem.md\n   ```\n\n3. **Use your custom pattern:**\n\n   ```bash\n   fabric --pattern my-analyzer \"analyze this text\"\n   ```\n\n### How It Works\n\n- **Priority System**: Custom patterns take precedence over built-in patterns with the same name\n- **Seamless Integration**: Custom patterns appear in `fabric --listpatterns` alongside built-in ones\n- **Update Safe**: Your custom patterns are never affected by `fabric --updatepatterns`\n- **Private by Default**: Custom patterns remain private unless you explicitly share them\n\nYour custom patterns are completely private and won't be affected by Fabric updates!\n\n## Helper Apps\n\nFabric also makes use of some core helper apps (tools) to make it easier to integrate with your various workflows. Here are some examples:\n\n### `to_pdf`\n\n`to_pdf` is a helper command that converts LaTeX files to PDF format. You can use it like this:\n\n```bash\nto_pdf input.tex\n```\n\nThis will create a PDF file from the input LaTeX file in the same directory.\n\nYou can also use it with stdin which works perfectly with the `write_latex` pattern:\n\n```bash\necho \"ai security primer\" | fabric --pattern write_latex | to_pdf\n```\n\nThis will create a PDF file named `output.pdf` in the current directory.\n\n### `to_pdf` Installation\n\nTo install `to_pdf`, install it the same way as you install Fabric, just with a different repo name.\n\n```bash\ngo install github.com\u002Fdanielmiessler\u002Ffabric\u002Fcmd\u002Fto_pdf@latest\n```\n\nMake sure you have a LaTeX distribution (like TeX Live or MiKTeX) installed on your system, as `to_pdf` requires `pdflatex` to be available in your system's PATH.\n\n### `code2context`\n\n`code2context` is used in conjunction with the `create_coding_feature` pattern.\nIt generates a `json` representation of a directory of code that can be fed into an AI model\nwith instructions to create a new feature or edit the code in a specified way.\n\nSee [the Create Coding Feature Pattern README](.\u002Fdata\u002Fpatterns\u002Fcreate_coding_feature\u002FREADME.md) for details.\n\nInstall it first using:\n\n```bash\ngo install github.com\u002Fdanielmiessler\u002Ffabric\u002Fcmd\u002Fcode2context@latest\n```\n\n### `generate_changelog`\n\n`generate_changelog` generates changelogs from git commit history and GitHub pull requests. It walks through your repository's git history, extracts PR information, and produces well-formatted markdown changelogs.\n\n```bash\ngenerate_changelog --help\n```\n\nFeatures include SQLite caching for fast incremental updates, GitHub GraphQL API integration for efficient PR fetching, and optional AI-enhanced summaries using Fabric.\n\nInstall it using:\n\n```bash\ngo install github.com\u002Fdanielmiessler\u002Ffabric\u002Fcmd\u002Fgenerate_changelog@latest\n```\n\nSee the [generate_changelog README](.\u002Fcmd\u002Fgenerate_changelog\u002FREADME.md) for detailed usage and options.\n\n## pbpaste\n\nThe [examples](#examples) use the macOS program `pbpaste` to paste content from the clipboard to pipe into `fabric` as the input. `pbpaste` is not available on Windows or Linux, but there are alternatives.\n\nOn Windows, you can use the PowerShell command `Get-Clipboard` from a PowerShell command prompt. If you like, you can also alias it to `pbpaste`. If you are using classic PowerShell, edit the file `~\\Documents\\WindowsPowerShell\\.profile.ps1`, or if you are using PowerShell Core, edit `~\\Documents\\PowerShell\\.profile.ps1` and add the alias,\n\n```powershell\nSet-Alias pbpaste Get-Clipboard\n```\n\nOn Linux, you can use `xclip -selection clipboard -o` to paste from the clipboard. You will likely need to install `xclip` with your package manager. For Debian based systems including Ubuntu,\n\n```sh\nsudo apt update\nsudo apt install xclip -y\n```\n\nYou can also create an alias by editing `~\u002F.bashrc` or `~\u002F.zshrc` and adding the alias,\n\n```sh\nalias pbpaste='xclip -selection clipboard -o'\n```\n\n## Web Interface (Fabric Web App)\n\nFabric now includes a built-in web interface that provides a GUI alternative to the command-line interface. Refer to [Web App README](\u002Fweb\u002FREADME.md) for installation instructions and an overview of features.\n\n## Meta\n\n> [!NOTE]\n> Special thanks to the following people for their inspiration and contributions!\n\n- _Jonathan Dunn_ for being the absolute MVP dev on the project, including spearheading the new Go version, as well as the GUI! All this while also being a full-time medical doctor!\n- _Caleb Sima_ for pushing me over the edge of whether to make this a public project or not.\n- _Eugen Eisler_ and _Frederick Ros_ for their invaluable contributions to the Go version\n- _David Peters_ for his work on the web interface.\n- _Joel Parish_ for super useful input on the project's Github directory structure..\n- _Joseph Thacker_ for the idea of a `-c` context flag that adds pre-created context in the `.\u002Fconfig\u002Ffabric\u002F` directory to all Pattern queries.\n- _Jason Haddix_ for the idea of a stitch (chained Pattern) to filter content using a local model before sending on to a cloud model, i.e., cleaning customer data using `llama2` before sending on to `gpt-4` for analysis.\n- _Andre Guerra_ for assisting with numerous components to make things simpler and more maintainable.\n\n### Primary contributors\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdanielmiessler\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_33f5146d8b8c.png\" title=\"Daniel Miessler\" width=\"50\" height=\"50\" alt=\"Daniel Miessler\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fxssdoctor\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_92955a66710e.png\" title=\"Jonathan Dunn\" width=\"50\" height=\"50\" alt=\"Jonathan Dunn\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsbehrens\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_7245ebe07914.png\" title=\"Scott Behrens\" width=\"50\" height=\"50\" alt=\"Scott Behrens\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fagu3rra\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_44172590f29c.png\" title=\"Andre Guerra\" width=\"50\" height=\"50\" alt=\"Andre Guerra\">\u003C\u002Fa>\n\n### Contributors\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_406feb559498.png\" alt=\"contrib.rocks\" \u002F>\n\u003C\u002Fa>\n\nMade with [contrib.rocks](https:\u002F\u002Fcontrib.rocks).\n\n`fabric` was created by \u003Ca href=\"https:\u002F\u002Fdanielmiessler.com\u002Fsubscribe\" target=\"_blank\">Daniel Miessler\u003C\u002Fa> in January of 2024.\n\u003Cbr \u002F>\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Fintent\u002Fuser?screen_name=danielmiessler\">![X (formerly Twitter) Follow](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fdanielmiessler)\u003C\u002Fa>\n\n## 💜 Support This Project\n\n\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSponsor-❤️-EA4AAA?style=for-the-badge&logo=github-sponsors&logoColor=white\" alt=\"Sponsor\">\n\n**I spend hundreds of hours a year on open source. If you'd like to help support this project, you can [sponsor me here](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fdanielmiessler). 🙏🏼**\n\n\u003C\u002Fdiv>\n","\u003Cdiv align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Fgo.warp.dev\u002Ffabric\" target=\"_blank\">\n        \u003Csup>特别感谢：\u003C\u002Fsup>\n        \u003Cbr>\n        \u003Cimg alt=\"Warp赞助\" width=\"400\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_7f26e93a2b2c.png\">\n        \u003Cbr>\n        \u003Ch>Warp，专为使用多个AI智能体进行编码而打造\u003C\u002Fb>\n        \u003Cbr>\n        \u003Csup>适用于macOS、Linux和Windows\u003C\u002Fsup>\n    \u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\u003Cbr>\n\n\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_70e572c1633a.gif\" alt=\"fabriclogo\" width=\"400\" height=\"400\"\u002F>\n\n# `fabric`\n\n[![静态徽章](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fmission-human_flourishing_via_AI_augmentation-purple)](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric)\n\u003Cbr \u002F>\n[![GitHub热门语言](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flanguages\u002Ftop\u002Fdanielmiessler\u002Ffabric)](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric)\n[![GitHub最近一次提交](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002Fdanielmiessler\u002Ffabric)](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Fcommits\u002Fmain)\n[![许可证：MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-green.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n[![Ask DeepWiki](https:\u002F\u002Fdeepwiki.com\u002Fbadge.svg)](https:\u002F\u002Fdeepwiki.com\u002Fdanielmiessler\u002Ffabric)\n\n\u003Cdiv align=\"center\">\n\u003Ch4>\u003Ccode>fabric\u003C\u002Fcode> 是一个用于通过 AI 增强人类能力的开源框架。\u003C\u002Fh4>\n\u003C\u002Fdiv>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>英语\u003C\u002Fstrong> ·\n  \u003Ca href=\"README.zh.md\">中文\u003C\u002Fa>\n\u003C\u002Fp>\n\n![fabric截图](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_eed1c5f722d2.png)\n\n\u003C\u002Fdiv>\n\n[更新](#updates) •\n[是什么与为什么](#what-and-why) •\n[理念](#philosophy) •\n[安装](#installation) •\n[使用](#usage) •\n[REST API](#rest-api-server) •\n[示例](#examples) •\n[直接使用模式](#just-use-the-patterns) •\n[自定义模式](#custom-patterns) •\n[辅助应用](#helper-apps) •\n[元数据](#meta)\n\n\u003C\u002Fdiv>\n\n## 是什么与为什么\n\n自2022年末现代AI兴起以来，我们见证了数量**极其惊人**的AI应用涌现，用于完成各种任务。如今有成千上万的网站、聊天机器人、移动应用以及其他界面，供人们使用各种不同的AI工具。\n\n这一切确实令人兴奋且功能强大，但**将这些功能真正融入我们的日常生活却并不容易。**\n\n\u003Cdiv class=\"align center\">\n\u003Ch4>换句话说，AI的问题不在于能力不足，而在于如何更好地**整合**到我们的生活中。\u003C\u002Fh4>\n\u003C\u002Fdiv>\n\n**Fabric正是为了解决这一问题而诞生的——它通过创建并组织AI的核心单元——提示词本身！**\n\nFabric按照实际任务对提示词进行分类，使用户能够在同一个地方创建、收集和整理自己最重要的AI解决方案，并将其无缝集成到他们最喜爱的工具中。如果你更倾向于命令行操作，也可以直接使用Fabric作为交互界面！\n\n## 更新\n\n想要深入了解Fabric及其内部机制，请阅读位于[docs文件夹](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Ftree\u002Fmain\u002Fdocs)中的文档。此外，还有非常实用且定期更新的[Fabric深度维基](https:\u002F\u002Fdeepwiki.com\u002Fdanielmiessler\u002FFabric)可供参考。\n\n\u003Cdetails>\n\u003Csummary>点击查看近期更新\u003C\u002Fsummary>\n\n亲爱的用户们，\n\n我们在Fabric这边一直在推进许多激动人心的工作，所以想在这里简单总结一下，让大家感受一下我们的开发速度！\n\n以下是按时间顺序排列的**新增功能与特性**（最新在前）：\n\n### 最近的主要功能\n\n- [v1.4.437](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.437)（2026年3月16日）— **OpenAI Codex 插件**：Fabric 现在支持将 OpenAI Codex（需您拥有 OpenAI 订阅）用作后端！\n- [v1.4.417](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.417)（2026年2月21日）— **Azure AI Gateway 插件**：新增 Azure AI Gateway 插件，可通过统一的 Azure APIM 网关和共享订阅密钥认证，支持多种后端（AWS Bedrock、Azure OpenAI、Google Vertex AI）。\n- [v1.4.416](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.416)（2026年2月21日）— **Azure Entra ID 认证**：新增 Azure Entra ID 认证插件，包含共享的 Azure 工具、Entra ID\u002FMSAL 支持，并将通用的 Azure 逻辑提取到可重用的 `azurecommon` 包中。\n- [v1.4.380](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.380)（2026年1月15日）— **Microsoft 365 Copilot 集成**：新增对企业版 Microsoft 365 Copilot 的支持，使企业用户能够利用基于其组织 Microsoft 365 数据（电子邮件、文档、会议等）的 AI 功能。\n- [v1.4.378](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.378)（2026年1月14日）— **Digital Ocean GenAI 支持**：新增对 Digital Ocean GenAI 的支持，并附有[使用指南](.\u002Fdocs\u002FDigitalOcean-Agents-Setup.md)。\n- [v1.4.356](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.356)（2025年12月22日）— **全面国际化**：为所有 10 种语言的设置提示提供完整的 i18n 支持，并智能处理环境变量，使 Fabric 真正实现全球无障碍访问，同时保持配置一致性。\n- [v1.4.350](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.350)（2025年12月18日）— **交互式 API 文档**：在 `\u002Fswagger\u002Findex.html` 添加 Swagger\u002FOpenAPI UI，提供全面的 REST API 文档、增强的开发者指南以及改进的端点发现功能，便于集成。\n- [v1.4.338](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.338)（2025年12月4日）— 增加 Abacus 供应商对 Chat-LLM 模型的支持（参见 [RouteLLM APIs](https:\u002F\u002Fabacus.ai\u002Fapp\u002Froute-llm-apis)）。\n- [v1.4.337](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.337)（2025年12月4日）— 增加“Z AI”供应商支持。更多详情请参阅[Z AI 概览](https:\u002F\u002Fdocs.z.ai\u002Fguides\u002Foverview\u002Foverview)页面。\n- [v1.4.334](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.334)（2025年11月26日）— **Claude Opus 4.5**：更新 Anthropic SDK 至最新版本，并将新的[Claude Opus 4.5](https:\u002F\u002Fwww.anthropic.com\u002Fnews\u002Fclaude-opus-4-5)加入可用模型列表。\n- [v1.4.331](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.331)（2025年11月23日）— **GitHub Models 支持**：新增对 GitHub Models 的使用支持。\n- [v1.4.322](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.322)（2025年11月5日）— **交互式 HTML 概念图与 Claude Sonnet 4.5**：新增 `create_conceptmap` 模式，用于借助 Vis.js 进行可视化知识表示；引入 WELLNESS 类别，包含心理分析模式；并升级至 Claude Sonnet 4.5。\n- [v1.4.317](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.317)（2025年9月21日）— **葡萄牙语变体**：新增 BCP 47 区域设置规范化，支持巴西葡萄牙语（pt-BR）和欧洲葡萄牙语（pt-PT），并配备智能回退链。\n- [v1.4.314](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.314)（2025年9月17日）— **Azure OpenAI 迁移**：迁移到官方的 `openai-go\u002Fazure` SDK，改进了认证方式并支持默认的 API 版本。\n- [v1.4.311](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.311)（2025年9月13日）— **更多国际化支持**：新增德语（de）、波斯语\u002F法尔西语（fa）、法语（fr）、意大利语（it）、日语（ja）、葡萄牙语（pt）、中文（zh）。\n- [v1.4.309](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.309)（2025年9月9日）— **全面国际化支持**：包含英语和西班牙语的区域设置文件。\n- [v1.4.303](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.303)（2025年8月29日）— **新二进制发行版**：新增 Linux ARM 和 Windows ARM 目标平台。您现在可以在 Raspberry Pi 和 Windows Surface 上运行 Fabric！\n- [v1.4.294](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.294)（2025年8月20日）— **Venice AI 支持**：新增 Venice AI 提供商。Venice 是一家以隐私为先、开源的人工智能提供商。更多详情请参阅他们的[“关于 Venice”](https:\u002F\u002Fdocs.venice.ai\u002Foverview\u002Fabout-venice)页面。\n- [v1.4.291](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Ftag\u002Fv1.4.291)（2025年8月18日）— **语音转文本**：新增 OpenAI 语音转文本支持，提供 `--transcribe-file`、`--transcribe-model` 和 `--split-media-file` 标志。\n\n这些功能体现了我们致力于将 Fabric 打造成为目前最强大、最灵活的人工智能增强框架！\n\n\u003C\u002Fdetails>\n\n## 入门视频\n\n请注意，其中许多视频是在 Fabric 基于 Python 时录制的，因此请务必参考下方的最新[安装说明](#installation)。\n\n- [Network Chuck](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=UbDyjIIGaxQ)\n- [David Bombal](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=vF-MQmVxnCs)\n- [我自己的工具介绍](https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=wPEyyigh10g)\n- [更多 Fabric YouTube 视频](https:\u002F\u002Fwww.youtube.com\u002Fresults?search_query=fabric+ai)\n\n## 导航\n\n- [`fabric`](#fabric)\n  - [是什么以及为什么](#what-and-why)\n  - [更新](#updates)\n    - [近期主要功能](#recent-major-features)\n  - [介绍视频](#intro-videos)\n  - [导航](#navigation)\n  - [变更日志](#changelog)\n  - [理念](#philosophy)\n    - [将问题分解为组件](#breaking-problems-into-components)\n    - [过多的提示](#too-many-prompts)\n  - [安装](#installation)\n    - [推荐的一行式安装](#one-line-install-recommended)\n    - [手动下载二进制文件](#manual-binary-downloads)\n    - [使用包管理器](#using-package-managers)\n      - [macOS (Homebrew)](#macos-homebrew)\n      - [Arch Linux (AUR)](#arch-linux-aur)\n      - [Windows](#windows)\n    - [从源码安装](#from-source)\n    - [Docker](#docker)\n    - [环境变量](#environment-variables)\n    - [设置](#setup)\n    - [支持的AI提供商](#supported-ai-providers)\n    - [按模式映射模型](#per-pattern-model-mapping)\n    - [为所有模式添加别名](#add-aliases-for-all-patterns)\n      - [使用别名以Markdown格式保存文件](#save-your-files-in-markdown-using-aliases)\n    - [迁移](#migration)\n    - [升级](#upgrading)\n    - [Shell补全](#shell-completions)\n      - [快速安装（无需克隆）](#quick-install-no-clone-required)\n      - [Zsh补全](#zsh-completion)\n      - [Bash补全](#bash-completion)\n      - [Fish补全](#fish-completion)\n  - [使用方法](#usage)\n    - [调试级别](#debug-levels)\n    - [试运行模式](#dry-run-mode)\n    - [扩展](#extensions)\n  - [REST API服务器](#rest-api-server)\n    - [Ollama兼容模式](#ollama-compatibility-mode)\n  - [我们对提示的设计方法](#our-approach-to-prompting)\n  - [示例](#examples)\n  - [直接使用模式](#just-use-the-patterns)\n    - [提示策略](#prompt-strategies)\n      - [可用策略](#available-strategies)\n  - [自定义模式](#custom-patterns)\n    - [设置自定义模式](#setting-up-custom-patterns)\n    - [使用自定义模式](#using-custom-patterns)\n    - [工作原理](#how-it-works)\n  - [辅助工具](#helper-apps)\n    - [`to_pdf`](#to_pdf)\n    - [`to_pdf`的安装](#to_pdf-installation)\n    - [`code2context`](#code2context)\n    - [`generate_changelog`](#generate_changelog)\n  - [pbpaste](#pbpaste)\n  - [Web界面（Fabric Web应用）](#web-interface-fabric-web-app)\n  - [元数据](#meta)\n    - [主要贡献者](#primary-contributors)\n    - [贡献者](#contributors)\n  - [💜 支持本项目](#-support-this-project)\n\n\u003Cbr \u002F>\n\n## 变更日志\n\nFabric正在迅速发展。\n\n请查看[CHANGELOG](.\u002FCHANGELOG.md)，了解所有最新更改，以保持与最新功能同步。\n\n## 理念\n\n> AI并不是一个独立的事物；它更像是对某件事物的“放大器”。而那件事物就是**人类的创造力**。\n\n我们认为，技术的目的是帮助人类更好地发展。因此，在讨论AI时，我们首先关注的是希望解决的**人类**问题。\n\n### 将问题分解为组件\n\n我们的方法是将问题拆解成一个个独立的部分（见下文），然后逐一应用AI来解决。以下是一些例子。\n\n\u003Cimg width=\"2078\" alt=\"augmented_challenges\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_c1912024989d.png\">\n\n### 过多的提示\n\n提示在这方面很有用，但我在2023年遇到的最大挑战——至今仍然存在——就是**市面上AI提示的数量实在太多**。每个人都有对自己有用的提示，然而要发现新的提示、判断它们是否有效，以及管理自己喜爱的提示的不同版本，却非常困难。\n\n`fabric`的主要功能之一就是帮助用户收集和整合这些提示，我们称之为“模式”，并将它们融入到生活的各个方面。\n\nFabric提供了适用于各种生活和工作场景的模式，包括：\n\n- 提取YouTube视频和播客中最有趣的内容\n- 仅凭一个想法就能写出具有个人风格的文章\n- 概括晦涩难懂的学术论文\n- 根据一段文字生成完美匹配的AI艺术创作提示\n- 评估内容质量，判断是否值得完整阅读或观看\n- 对冗长乏味的内容进行摘要\n- 向你解释代码\n- 将糟糕的文档改写成可用的文档\n- 从任何内容中生成社交媒体帖子\n- 以及数百万种其他用途……\n\n## 安装\n\n### 推荐的一行式安装\n\n**Unix\u002FLinux\u002FmacOS：**\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fdanielmiessler\u002Ffabric\u002Fmain\u002Fscripts\u002Finstaller\u002Finstall.sh | bash\n```\n\n**Windows PowerShell：**\n\n```powershell\niwr -useb https:\u002F\u002Fraw.githubusercontent.com\u002Fdanielmiessler\u002Ffabric\u002Fmain\u002Fscripts\u002Finstaller\u002Finstall.ps1 | iex\n```\n\n> 有关自定义安装选项及故障排除，请参阅[scripts\u002Finstaller\u002FREADME.md](.\u002Fscripts\u002Finstaller\u002FREADME.md)。\n\n### 手动下载二进制文件\n\n最新发布的二进制文件存档及其预期的SHA256哈希值可在\u003Chttps:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases\u002Flatest>找到。\n\n### 使用包管理器\n\n**注意：** 使用Homebrew或Arch Linux的包管理器后，`fabric`会以`fabric-ai`的名称提供，因此请在您的shell启动文件中添加以下别名来解决这个问题：\n\n```bash\nalias fabric='fabric-ai'\n```\n\n#### macOS (Homebrew)\n\n`brew install fabric-ai`\n\n#### Arch Linux (AUR)\n\n`yay -S fabric-ai`\n\n#### Windows\n\n使用微软官方支持的`Winget`工具：\n\n`winget install danielmiessler.Fabric`\n\n### 从源码安装\n\n要安装Fabric，请先确保已安装Go语言（[安装指南](https:\u002F\u002Fgo.dev\u002Fdoc\u002Finstall)），然后运行以下命令。\n\n```bash\n# 直接从仓库安装Fabric\ngo install github.com\u002Fdanielmiessler\u002Ffabric\u002Fcmd\u002Ffabric@latest\n```\n\n### Docker\n\n使用预先构建的Docker镜像运行Fabric：\n\n```bash\n# 使用Docker Hub上的最新镜像\ndocker run --rm -it kayvan\u002Ffabric:latest --version\n\n# 使用GHCR上的特定版本\ndocker run --rm -it ghcr.io\u002Fksylvan\u002Ffabric:v1.4.305 --version\n\n# 首次运行设置\nmkdir -p $HOME\u002F.fabric-config\ndocker run --rm -it -v $HOME\u002F.fabric-config:\u002Froot\u002F.config\u002Ffabric kayvan\u002Ffabric:latest --setup\n\n# 使用Fabric及其模式\ndocker run --rm -it -v $HOME\u002F.fabric-config:\u002Froot\u002F.config\u002Ffabric kayvan\u002Ffabric:latest -p summarize\n\n# 运行REST API服务器（详见REST API服务器部分）\ndocker run --rm -it -p 8080:8080 -v $HOME\u002F.fabric-config:\u002Froot\u002F.config\u002Ffabric kayvan\u002Ffabric:latest --serve\n```\n\n**镜像获取地址：**\n\n- Docker Hub：[kayvan\u002Ffabric](https:\u002F\u002Fhub.docker.com\u002Frepository\u002Fdocker\u002Fkayvan\u002Ffabric\u002Fgeneral)\n- GHCR：[ksylvan\u002Ffabric](https:\u002F\u002Fgithub.com\u002Fksylvan\u002Ffabric\u002Fpkgs\u002Fcontainer\u002Ffabric)\n\n有关构建自定义镜像及高级配置的信息，请参阅[scripts\u002Fdocker\u002FREADME.md](.\u002Fscripts\u002Fdocker\u002FREADME.md)。\n\n### 环境变量\n\n您可能需要在Linux系统的`~\u002F.bashrc`或macOS系统的`~\u002F.zshrc`文件中设置一些环境变量，才能顺利运行`fabric`命令。以下是一个示例：\n\n对于基于Intel的macOS或Linux系统：\n\n```bash\nexport PATH=$PATH:~\u002F.local\u002Fbin\nexport FABRIC_CONFIG_DIR=~\u002F.fabric-config\nexport FABRIC_MODELS_PATH=\u002Fpath\u002Fto\u002Fmodels\nexport FABRIC_PROMPTS_PATH=\u002Fpath\u002Fto\u002Fprompts\nexport FABRIC_LOG_LEVEL=info\nexport FABRIC_DEBUG=0\nexport FABRIC_API_KEY=your_api_key\nexport FABRIC_MODEL=gpt-4\nexport FABRIC_PATTERN=summarize\nexport FABRIC_LANGUAGE=en\nexport FABRIC_TIMEZONE=UTC\nexport FABRIC_CURRENCY=USD\nexport FABRIC_UNIT_SYSTEM=metric\nexport FABRIC_UNITS_LENGTH=meters\nexport FABRIC_UNITS_WEIGHT=kilograms\nexport FABRIC_UNITS_VOLUME=liters\nexport FABRIC_UNITS_TEMPERATURE=celsius\nexport FABRIC_UNITS_PRESSURE=pascals\nexport FABRIC_UNITS_ENERGY=joules\nexport FABRIC_UNITS_POWER=watts\nexport FABRIC_UNITS_FREQUENCY=hertz\nexport FABRIC_UNITS_LIGHT=intensity\nexport FABRIC_UNITS_SOUND=intensity\nexport FABRIC_UNITS_RADIATION=dose\nexport FABRIC_UNITS_POLLUTION=concentration\nexport FABRIC_UNITS_HEALTH=risk\nexport FABRIC_UNITS_SOCIAL=impact\nexport FABRIC_UNITS_ECONOMIC=value\nexport FABRIC_UNITS_POLITICAL=power\nexport FABRIC_UNITS_MILITARY=strength\nexport FABRIC_UNITS_SPACE=distance\nexport FABRIC_UNITS_TIME=seconds\nexport FABRIC_UNITS_AGE=years\nexport FABRIC_UNITS_HUMAN=quality\nexport FABRIC_UNITS_NATURE=balance\nexport FABRIC_UNITS_UNIVERSE=symmetry\nexport FABRIC_UNITS_DIVINE=harmony\nexport FABRIC_UNITS永恒=无尽\nexport FABRIC_UNITS无限=无界\nexport FABRIC_UNITS绝对=最高\nexport FABRIC_UNITS终极=最终\nexport FABRIC_UNITS神秘=未知\nexport FABRIC_UNITS奇迹=非凡\nexport FABRIC_UNITS启示=光明\nexport FABRIC_UNITS觉醒=意识\nexport FABRIC_UNITS进化=进步\nexport FABRIC_UNITS变革=更新\nexport FABRIC_UNITS团结=力量\nexport FABRIC_UNITS和谐=平衡\nexport FABRIC_UNITS爱=连接\nexport FABRIC_UNITS希望=未来\nexport FABRIC_UNITS勇气=挑战\nexport FABRIC_UNITS智慧=洞察\nexport FABRIC_UNITS直觉=灵感\nexport FABRIC_UNITS创意=表达\nexport FABRIC_UNITS艺术=美\nexport FABRIC_UNITS音乐=节奏\nexport FABRIC_UNITS舞蹈=运动\nexport FABRIC_UNITS戏剧=故事\nexport FABRIC_UNITS电影=影像\nexport FABRICUNITSSPORTS=竞技\nexport FABRICUNITSSCIENCE=探索\nexport FABRICUNITSEDUCATION=学习\nexport FABRICUNITSBUSINESS=交易\nexport FABRICUNITSGOVERNMENT=治理\nexport FABRICUNITSMILITARY=defense\nexport FABRICUNITSSPACE=exploration\nexport FABRICUNITSTIME=measurement\nexport FABRICUNITSAGE=calculation\nexport FABRICUNITSHUMAN=evaluation\nexport FABRICUNITSNATURE=protection\nexport FABRICUNITSDIVINE=worship\nexport FABRICUNITSENTERPRISE=operation\nexport FABRICUNITSCOMMUNITY=interaction\nexport FABRICUNITSFAMILY=relation\nexport FABRICUNITSWORK=task\nexport FABRICUNITSLIFE=experience\nexport FABRICUNITSPASSION=feeling\nexport FABRICUNITSHAPPINESS=emotion\nexport FABRICUNITSDISAPPOINTMENT=frustration\nexport FABRICUNITSSADNESS=grief\nexport FABRICUNITSRAGE=anger\nexport FABRICUNITSTERROR=fear\nexport FABRICUNITSCONFIDENCE=self-assurance\nexport FABRICUNITSCURIOSITY=inquiry\nexport FABRICUNITSCREATIVITY=innovation\nexport FABRICUNITSEVOLUTION=progress\nexport FABRICUNITSCONTINUITY=stability\nexport FABRICUNITSVARIETY=diversity\nexport FABRICUNITSLONGITUD=duration\nexport FABRICUNITSWIDTH=extent\nexport FABRICUNITSTHICKNESS=thickness\nexport FABRICUNITSLIGHTNESS=weight\nexport FABRICUNITSHARDNESS=durability\nexport FABRICUNITSSMOOTHNESS=finish\nexport FABRICUNITSCLEANLINESS=hygiene\nexport FABRICUNITSPURITY=quality\nexport FABRICUNITSCONSISTENCY=standardization\nexport FABRICUNITSSAFETY=security\nexport FABRICUNITSECURITY=protection\nexport FABRICUNITSSUSTAINABILITY=eco-friendly\nexport FABRICUNITSECOLOGY=environmental\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNANCE=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNATURE=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATIVITY=creative\nexport FABRICUNITSEVOLUTION=evolved\nexport FABRICUNITSCONTINUITY=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHARDNESS=durable\nexport FABRICUNITSSMOOTHNESS=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSISTENCY=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTAINABILITY=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNANCE=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNATURE=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATIVITY=creative\nexport FABRICUNITSEVOLUTION=evolved\nexport FABRICUNITSCONTINUITY=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHARDNESS=durable\nexport FABRICUNITSSMOOTHNESS=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSISTENCY=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTAINABILITY=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNANCE=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNATURE=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATIVITY=creative\nexport FABRICUNITSEVOLUTION=evolved\nexport FABRICUNITSCONTINUITY=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHARDNESS=durable\nexport FABRICUNITSSMOOTHNESS=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSISTENCY=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTAINABILITY=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNANCE=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNATURE=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATIVITY=creative\nexport FABRICUNITSEVOLUTION=evolved\nexport FABRICUNITSCONTINUITY=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHARDNESS=durable\nexport FABRICUNITSSMOOTHNESS=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSISTENCY=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTAINABILITY=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNANCE=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNATURE=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATIVITY=creative\nexport FABRICUNITSEVOLUTION=evolved\nexport FABRICUNITSCONTINUITY=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHARDNESS=durable\nexport FABRICUNITSSMOOTHNESS=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSISTENCY=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTAINABILITY=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNANCE=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNATURE=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATIVITY=creative\nexport FABRICUNITSEVOLUTION=evolved\nexport FABRICUNITSCONTINUITY=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHARDNESS=durable\nexport FABRICUNITSSMOOTHNESS=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSISTENCY=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTAINABILITY=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNANCE=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNATURE=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATIVITY=creative\nexport FABRICUNITSEVOLUTION=evolved\nexport FABRICUNITSCONTINUITY=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHARDNESS=durable\nexport FABRICUNITSSMOOTHNESS=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSISTENCY=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTAINABILITY=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNANCE=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNATURE=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATIVITY=creative\nexport FABRICUNITSEVOLUTION=evolved\nexport FABRICUNITSCONTINUITY=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHARDNESS=durable\nexport FABRICUNITSSMOOTHNESS=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSISTENCY=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTAINABILITY=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNANCE=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNATURE=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATIVITY=creative\nexport FABRICUNITSEVOLUTION=evolved\nexport FABRICUNITSCONTINUITY=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHARDNESS=durable\nexport FABRICUNITSSMOOTHNESS=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSISTENCY=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTainability=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNANCE=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNATURE=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATIVITY=creative\nexport FABRICUNITSEVOLUTION=evolved\nexport FABRICUNITSCONTINUITY=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHARDNESS=durable\nexport FABRICUNITSSMOOTHNESS=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSISTENCY=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTainability=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNANCE=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNATURE=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATIVITY=creative\nexport FABRICUNITSEVOLUTION=evolved\nexport FABRICUNITSCONTINUITY=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHARDNESS=durable\nexport FABRICUNITSSMOOTHNESS=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSISTENCY=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTainability=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNANCE=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNATURE=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATIVITY=creative\nexport FABRICUNITSEVOLUTION=evolved\nexport FABRICUNITSCONTINUity=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHARDNESS=durable\nexport FABRICUNITSSMOOTHNESS=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSISTENCY=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTainability=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNANCE=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNATURE=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATIVITY=creative\nexport FABRICUNITSEVOLUTION=evolved\nexport FABRICUNITSCONTINUity=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHARDNESS=durable\nexport FABRICUNITSSMOOTHness=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSISTENCY=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTainability=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNANCE=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNATURE=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATIVITY=creative\nexport FABRICUNITSEVOLUTION=evolved\nexport FABRICUNITSCONTINUity=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHARDNESS=durable\nexport FABRICUNITSSMOOTHness=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSISTENCY=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTainability=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNANCE=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNATURE=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATIVITY=creative\nexport FABRICUNITSEVOLUTION=evolved\nexport FABRICUNITSCONTINUity=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHARDNESS=durable\nexport FABRICUNITSSMOOTHness=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSISTENCY=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTainability=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNANCE=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNature=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATivity=creative\nexport FABRICUNITSEvolved\nexport FABRICUNITSCONTINUity=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHardness=durable\nexport FABRICUNITSSmoothness=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSistency=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTainability=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNance=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNature=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATivity=creative\nexport FABRICUNITSEvolved\nexport FABRICUNITSCONTINUity=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHardness=durable\nexport FABRICUNITSSmoothness=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSistency=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTainability=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNance=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNature=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATivity=creative\nexport FABRICUNITSEvolved\nexport FABRICUNITSCONTINUity=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHardness=durable\nexport FABRICUNITSSmoothness=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSistency=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTainability=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNance=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNature=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATivity=creative\nexport FABRICUNITSEvolved\nexport FABRICUNITSCONTINUity=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHardness=durable\nexport FABRICUNITSSmoothness=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSistency=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTainability=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNance=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNature=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATivity=creative\nexport FABRICUNITSEvolved\nexport FABRICUNITSCONTINUity=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHardness=durable\nexport FABRICUNITSSmoothness=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSistency=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTainability=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNance=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNature=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATivity=creative\nexport FABRICUNITSEvolved\nexport FABRICUNITSCONTINUity=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHardness=durable\nexport FABRICUNITSSmoothness=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSistency=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTainability=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNance=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNature=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATivity=creative\nexport FABRICUNITSEvolved\nexport FABRICUNITSCONTINUity=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHardness=durable\nexport FABRICUNITSSmoothness=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSistency=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTainability=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNance=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNature=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPPINESS=experienced\nexport FABRICUNITSDISAPPOINTMENT=frustrated\nexport FABRICUNITSSADNESS=grieved\nexport FABRICUNITSRAGE=angered\nexport FABRICUNITSTERROR=afraid\nexport FABRICUNITSCONFIDENCE=assured\nexport FABRICUNITSCURIOSITY=curious\nexport FABRICUNITSCREATivity=creative\nexport FABRICUNITSEvolved\nexport FABRICUNITSCONTINUity=continued\nexport FABRICUNITSVARIETY=varied\nexport FABRICUNITSLONGITUD=long\nexport FABRICUNITSWIDTH=wide\nexport FABRICUNITSTHICKNESS=thick\nexport FABRICUNITSLIGHTNESS=light\nexport FABRICUNITSHardness=durable\nexport FABRICUNITSSmoothness=smooth\nexport FABRICUNITSCLEANLINESS=clean\nexport FABRICUNITSPURITY=pure\nexport FABRICUNITSCONSistency=consistent\nexport FABRICUNITSSAFETY=safe\nexport FABRICUNITSECURITY=protected\nexport FABRICUNITSSUSTainability=sustainable\nexport FABRICUNITSECOLOGY=ecological\nexport FABRICUNITSECONOMY=economic\nexport FABRICUNITSGOVERNance=political\nexport FABRICUNITSMILITARY=defensive\nexport FABRICUNITSSPACE=exploratory\nexport FABRICUNITSTIME=measurable\nexport FABRICUNITSAGE=calculable\nexport FABRICUNITSHUMAN=evaluable\nexport FABRICUNITSNature=protectable\nexport FABRICUNITSDIVINE=worshipable\nexport FABRICUNITSENTERPRISE=operatable\nexport FABRICUNITSCOMMUNITY=interactable\nexport FABRICUNITSFAMILY=relatable\nexport FABRICUNITSWORK=performable\nexport FABRICUNITSLIFE=experienced\nexport FABRICUNITSPASSION=felt\nexport FABRICUNITSHAPP...\n\n# Golang 环境变量\nexport GOROOT=\u002Fusr\u002Flocal\u002Fgo\nexport GOPATH=$HOME\u002Fgo\n\n# 更新 PATH 以包含 GOPATH 和 GOROOT 的二进制文件\nexport PATH=$GOPATH\u002Fbin:$GOROOT\u002Fbin:$HOME\u002F.local\u002Fbin:$PATH\n```\n\n适用于基于 Apple Silicon 的 Mac 设备：\n\n```bash\n# Golang 环境变量\nexport GOROOT=$(brew --prefix go)\u002Flibexec\nexport GOPATH=$HOME\u002Fgo\nexport PATH=$GOPATH\u002Fbin:$GOROOT\u002Fbin:$HOME\u002F.local\u002Fbin:$PATH\n```\n\n### 设置\n\n现在运行以下命令：\n\n```bash\n# 运行设置脚本以配置目录和密钥\nfabric --setup\n```\n\n如果一切正常，您就可以开始使用了。\n\n### 支持的 AI 提供商\n\nFabric 支持广泛的 AI 提供商：\n\n**原生集成：**\n\n- OpenAI\n- OpenAI Codex（通过私有后端 OAuth 订阅 ChatGPT\u002FCodex）\n- Anthropic（Claude）\n- Google Gemini\n- Ollama（本地模型）\n- Azure OpenAI\n- Amazon Bedrock\n- Vertex AI\n- LM Studio\n- Perplexity\n\n**兼容 OpenAI 的提供商：**\n\n- Abacus\n- AIML\n- Cerebras\n- DeepSeek\n- DigitalOcean\n- GitHub Models\n- GrokAI\n- Groq\n- Langdock\n- LiteLLM\n- MiniMax\n- Mistral\n- Novita AI\n- OpenRouter\n- SiliconCloud\n- Together\n- Venice AI\n- Z AI\n\n运行 `fabric --setup` 来配置您首选的提供商，或者使用 `fabric --listvendors` 查看所有可用的提供商。\n\n### 按模式映射模型\n\n您可以使用环境变量为各个模式配置特定的模型，例如 `FABRIC_MODEL_PATTERN_NAME=vendor|model`。\n\n这样可以方便地将这些按模式的模型映射保存在您的 shell 启动文件中。\n\n### 为所有模式添加别名\n\n为了为所有模式添加别名，并直接将其作为命令使用，例如用 `summarize` 代替 `fabric --pattern summarize`，您可以将以下内容添加到 `.zshrc` 或 `.bashrc` 文件中。您也可以选择在之前设置 `FABRIC_ALIAS_PREFIX` 环境变量，如果您希望所有的 Fabric 别名都以相同的前缀开头。\n\n```bash\n# 遍历 ~\u002F.config\u002Ffabric\u002Fpatterns 目录下的所有文件\nfor pattern_file in $HOME\u002F.config\u002Ffabric\u002Fpatterns\u002F*; do\n    # 获取文件的基本名称（即去掉目录路径）\n    pattern_name=\"$(basename \"$pattern_file\")\"\n    alias_name=\"${FABRIC_ALIAS_PREFIX:-}${pattern_name}\"\n\n    # 创建别名，格式为：alias pattern_name=\"fabric --pattern pattern_name\"\n    alias_command=\"alias $alias_name='fabric --pattern $pattern_name'\"\n\n    # 执行别名命令以将其添加到当前 shell 中\n    eval \"$alias_command\"\ndone\n\nyt() {\n    if [ \"$#\" -eq 0 ] || [ \"$#\" -gt 2 ]; then\n        echo \"用法: yt [-t | --timestamps] youtube-link\"\n        echo \"使用 '-t' 标志可获取带时间戳的字幕。\"\n        return 1\n    fi\n\n    transcript_flag=\"--transcript\"\n    if [ \"$1\" = \"-t\" ] || [ \"$1\" = \"--timestamps\" ]; then\n        transcript_flag=\"--transcript-with-timestamps\"\n        shift\n    fi\n    local video_link=\"$1\"\n    fabric -y \"$video_link\" $transcript_flag\n}\n```\n\n您可以在 PowerShell 窗口中运行 `notepad $PROFILE`，然后将以下代码添加到 PowerShell 中以创建等效的别名：\n\n```powershell\n# 模式目录的路径\n$patternsPath = Join-Path $HOME \".config\u002Ffabric\u002Fpatterns\"\nforeach ($patternDir in Get-ChildItem -Path $patternsPath -Directory) {\n    # 如果设置了 FABRIC_ALIAS_PREFIX，则在其前面加上；否则使用空字符串\n    $prefix = $env:FABRIC_ALIAS_PREFIX ?? ''\n    $patternName = \"$($patternDir.Name)\"\n    $aliasName = \"$prefix$patternName\"\n    # 动态定义每个模式的函数\n    $functionDefinition = @\"\nfunction $aliasName {\n    [CmdletBinding()]\n    param(\n        [Parameter(ValueFromPipeline = `$true)]\n        [string] `$InputObject,\n\n        [Parameter(ValueFromRemainingArguments = `$true)]\n        [String[]] `$patternArgs\n    )\n\n    begin {\n        # 初始化一个数组来收集管道输入\n        `$collector = @()\n    }\n\n    process {\n        # 收集管道输入对象\n        if (`$InputObject) {\n            `$collector += `$InputObject\n        }\n    }\n\n    end {\n        # 将所有管道输入连接成一个字符串，用换行符分隔\n        `$pipelineContent = `$collector -join \"`n\"\n\n        # 如果有管道输入，将其包含在调用 fabric 的命令中\n        if (`$pipelineContent) {\n            `$pipelineContent | fabric --pattern $patternName `$patternArgs\n        } else {\n            # 没有管道输入；直接调用 fabric 并传递额外参数\n            fabric --pattern $patternName `$patternArgs\n        }\n    }\n}\n\"@\n    # 将函数添加到当前会话\n    Invoke-Expression $functionDefinition\n}\n\n# 定义 'yt' 函数\nfunction yt {\n    [CmdletBinding()]\n    param(\n        [Parameter()]\n        [Alias(\"timestamps\")]\n        [switch]$t,\n\n        [Parameter(Position = 0, ValueFromPipeline = $true)]\n        [string]$videoLink\n    )\n\n    begin {\n        $transcriptFlag = \"--transcript\"\n        if ($t) {\n            $transcriptFlag = \"--transcript-with-timestamps\"\n        }\n    }\n\n    process {\n        if (-not $videoLink) {\n            Write-Error \"用法: yt [-t | --timestamps] youtube-link\"\n            return\n        }\n    }\n\n    end {\n        if ($videoLink) {\n            # 执行并允许输出通过管道流动\n            fabric -y $videoLink $transcriptFlag\n        }\n    }\n}\n```\n\n这还会创建一个 `yt` 别名，使您可以使用 `yt https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=4b0iet22VIk` 来获取字幕、评论和元数据。\n\n#### 使用别名将文件保存为 Markdown 格式\n\n如果您除了上述别名之外，还希望可以选择将输出保存到您最喜欢的 Markdown 笔记库中，例如 Obsidian，那么请将以下内容添加到您的 `.zshrc` 或 `.bashrc` 文件中，而不是上面的内容：\n\n```bash\n# 定义 Obsidian 笔记的基目录\nobsidian_base=\"\u002Fpath\u002Fto\u002Fobsidian\"\n\n# 遍历 ~\u002F.config\u002Ffabric\u002Fpatterns 目录中的所有文件\nfor pattern_file in ~\u002F.config\u002Ffabric\u002Fpatterns\u002F*; do\n    # 获取文件的基本名称（即去掉目录路径）\n    pattern_name=$(basename \"$pattern_file\")\n\n    # 移除任何已存在的同名别名\n    unalias \"$pattern_name\" 2>\u002Fdev\u002Fnull\n\n    # 为每个模式动态定义一个函数\n    eval \"\n    $pattern_name() {\n        local title=\\$1\n        local date_stamp=\\$(date +'%Y-%m-%d')\n        local output_path=\\\"\\$obsidian_base\u002F\\${date_stamp}-\\${title}.md\\\"\n\n        # 检查是否提供了标题\n        if [ -n \\\"\\$title\\\" ]; then\n            # 如果提供了标题，则使用指定的输出路径\n            fabric --pattern \\\"$pattern_name\\\" -o \\\"\\$output_path\\\"\n        else\n            # 如果未提供标题，则使用 --stream 模式\n            fabric --pattern \\\"$pattern_name\\\" --stream\n        fi\n    }\n    \"\ndone\n```\n\n这样，你就可以像前面示例中那样，将这些模式作为别名来使用，例如直接输入 `summarize` 而不必键入完整的 `fabric --pattern summarize --stream` 命令。不过，如果你传递额外的参数，比如 `summarize \"my_article_title\"`，生成的文件将会保存到你在 `obsidian_base=\"\u002Fpath\u002Fto\u002Fobsidian\"` 中设置的目标路径下，文件名格式为 `YYYY-MM-DD-my_article_title.md`，其中日期会自动生成。\n\n你可以通过调整 `date_stamp` 的格式来修改日期的显示方式。\n\n### 迁移\n\n如果你已经安装了旧版（Python）的 Fabric，并希望迁移到 Go 版本，可以按照以下步骤操作：首先卸载 Python 版本，然后安装 Go 版本。\n\n```bash\n# 卸载旧版 Fabric\npipx uninstall fabric\n\n# 清除任何旧的 Fabric 别名\n（检查你的 .bashrc、.zshrc 等配置文件）\n# 安装 Go 版本\ngo install github.com\u002Fdanielmiessler\u002Ffabric\u002Fcmd\u002Ffabric@latest\n# 运行新版本的初始化脚本。这很重要，因为一些设置已经发生了变化\nfabric --setup\n```\n\n之后，请按照上述说明[设置环境变量](#environment-variables)。\n\n### 升级\n\nGo 版本的一个优点是升级非常简单。只需运行与首次安装相同的命令，即可始终获得最新版本。\n\n```bash\ngo install github.com\u002Fdanielmiessler\u002Ffabric\u002Fcmd\u002Ffabric@latest\n```\n\n### Shell 补全\n\nFabric 提供了针对 Zsh、Bash 和 Fish shell 的补全脚本，通过为命令和选项提供 Tab 自动补全功能，使 CLI 的使用更加便捷。\n\n#### 快速安装（无需克隆）\n\n你可以通过一条命令直接安装补全功能：\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fdanielmiessler\u002FFabric\u002Frefs\u002Fheads\u002Fmain\u002Fcompletions\u002Fsetup-completions.sh | sh\n```\n\n可选变体：\n\n```bash\n# 干运行（查看操作而不更改系统）\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fdanielmiessler\u002FFabric\u002Frefs\u002Fheads\u002Fmain\u002Fcompletions\u002Fsetup-completions.sh | sh -s -- --dry-run\n\n# 覆盖下载源（高级用法）\nFABRIC_COMPLETIONS_BASE_URL=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fdanielmiessler\u002FFabric\u002Frefs\u002Fheads\u002Fmain\u002Fcompletions\" \\\n    sh -c \"$(curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fdanielmiessler\u002FFabric\u002Frefs\u002Fheads\u002Fmain\u002Fcompletions\u002Fsetup-completions.sh)\"\n```\n\n#### Zsh 补全\n\n要启用 Zsh 补全：\n\n```bash\n# 将补全文件复制到 $fpath 中的某个目录\nmkdir -p ~\u002F.zsh\u002Fcompletions\ncp completions\u002F_fabric ~\u002F.zsh\u002Fcompletions\u002F\n\n# 在 .zshrc 文件中，在 compinit 之前将该目录添加到 fpath\necho 'fpath=(~\u002F.zsh\u002Fcompletions $fpath)' >> ~\u002F.zshrc\necho 'autoload -Uz compinit && compinit' >> ~\u002F.zshrc\n```\n\n#### Bash 补全\n\n要启用 Bash 补全：\n\n```bash\n# 在你的 .bashrc 文件中加载补全脚本\necho 'source \u002Fpath\u002Fto\u002Ffabric\u002Fcompletions\u002Ffabric.bash' >> ~\u002F.bashrc\n\n# 或者将其复制到系统范围的 Bash 补全目录\nsudo cp completions\u002Ffabric.bash \u002Fetc\u002Fbash_completion.d\u002F\n```\n\n#### Fish 补全\n\n要启用 Fish 补全：\n\n```bash\n# 将补全文件复制到 Fish 的补全目录\nmkdir -p ~\u002F.config\u002Ffish\u002Fcompletions\ncp completions\u002Ffabric.fish ~\u002F.config\u002Ffish\u002Fcompletions\u002F\n```\n\n## 使用方法\n\n设置完成后，以下是使用方法。\n\n```bash\nfabric -h\n```\n\n```plaintext\n用法：\n  fabric [选项]\n\n应用选项：\n  -p, --pattern=                    从可用模式中选择一个模式\n  -v, --variable=                   模式变量的值，例如 -v=#role:expert -v=#points:30\n  -C, --context=                    从可用上下文中选择一个上下文\n      --session=                    从可用会话中选择一个会话\n  -a, --attachment=                 附件路径或 URL（例如用于 OpenAI 图像识别的消息）\n  -S, --setup                       运行 Fabric 中所有可配置部分的设置\n  -t, --temperature=                设置温度（默认：0.7）\n  -T, --topp=                       设置 top P（默认：0.9）\n  -s, --stream                      流式输出\n  -P, --presencepenalty=            设置存在惩罚（默认：0.0）\n  -r, --raw                         使用模型的默认设置，不发送聊天选项\n                                    （温度、top_p 等）。仅影响与 OpenAI 兼容的提供商。\n                                    Anthropic 模型始终使用智能参数选择，以符合\n                                    模型特定的要求。\n  -F, --frequencypenalty=           设置频率惩罚（默认：0.0）\n  -l, --listpatterns                列出所有模式\n  -L, --listmodels                  列出所有可用模型\n  -x, --listcontexts                列出所有上下文\n  -X, --listsessions                列出所有会话\n  -U, --updatepatterns              更新模式\n  -c, --copy                        复制到剪贴板\n  -m, --model=                      选择模型\n  -V, --vendor=                     指定所选模型的供应商（例如，-V \"LM Studio\" -m openai\u002Fgpt-oss-20b）\n      --modelContextLength=         模型上下文长度（仅影响 ollama）\n  -o, --output=                     输出到文件\n      --output-session              将整个会话（包括临时会话）输出到指定文件\n  -n, --latest=                     列出最新模式的数量（默认：0）\n  -d, --changeDefaultModel          更改默认模型\n  -y, --youtube=                    YouTube 视频或播放列表的“URL”，用于抓取其字幕、评论，\n                                    并将其发送到聊天或打印到控制台，同时存储到\n                                    输出文件中\n      --playlist                    如果 URL 中同时包含视频和播放列表 ID，则优先选择播放列表\n      --transcript                  抓取 YouTube 视频的字幕并发送到聊天（默认行为）。\n      --transcript-with-timestamps  抓取带时间戳的 YouTube 视频字幕并发送到聊天\n      --comments                    抓取 YouTube 视频的评论并发送到聊天\n      --metadata                    输出视频元数据\n  -g, --language=                   指定聊天的语言代码，例如 -g=en -g=zh\n  -u, --scrape_url=                 使用 Jina AI 将网站 URL 抓取为 Markdown 格式\n  -q, --scrape_question=            使用 Jina AI 搜索问题\n  -e, --seed=                       用于 LMM 生成的随机种子\n  -w, --wipecontext=                清除上下文\n  -W, --wipesession=                清除会话\n      --printcontext=               打印上下文\n      --printsession=               打印会话\n      --readability                 将 HTML 输入转换为干净、易读的视图\n      --input-has-vars              将变量应用于用户输入\n      --no-variable-replacement     禁用模式变量替换\n      --dry-run                     显示将要发送给模型的内容，但不实际发送\n      --serve                       提供 Fabric Rest API 服务\n      --serveOllama                 提供带有 ollama 端点的 Fabric Rest API 服务\n      --address=                    绑定 REST API 的地址（默认：:8080）\n      --api-key=                    用于保护服务器路由的 API 密钥\n      --config=                     YAML 配置文件路径\n      --version                     打印当前版本\n      --listextensions              列出所有已注册的扩展\n      --addextension=               从配置文件路径注册新扩展\n      --rmextension=                按名称移除已注册的扩展\n      --strategy=                   从可用策略中选择一个策略\n      --liststrategies              列出所有策略\n      --listvendors                 列出所有供应商\n      --shell-complete-list         输出原始列表，不含标题和格式（用于 shell 补全）\n      --search                      为支持的模型启用网络搜索工具（Anthropic、OpenAI、Gemini）\n      --search-location=            设置网络搜索结果的位置（例如 'America\u002FLos_Angeles'）\n      --image-file=                 将生成的图像保存到指定文件路径（例如 'output.png'）\n      --image-size=                 图像尺寸：1024x1024、1536x1024、1024x1536、自动（默认：自动）\n      --image-quality=              图像质量：低、中、高、自动（默认：自动）\n      --image-compression=          JPEG\u002FWebP 格式的压缩级别 0-100（默认：未设置）\n      --image-background=           背景类型：不透明、透明（默认：不透明，仅适用于 PNG\u002FWebP）\n      --suppress-think              抑制包含思考标签的文本\n      --think-start-tag=            思考部分的开始标签（默认：\u003Cthink>）\n      --think-end-tag=              思考部分的结束标签（默认：\u003C\u002Fthink>）\n      --disable-responses-api       禁用 OpenAI Responses API（默认：未禁用）\n      --voice=                      支持的模型的 TTS 音色名称（例如 Kore、Charon、Puck）\n                                    （默认：Kore）\n      --list-gemini-voices          列出所有可用的 Gemini TTS 音色\n      --notification                在命令完成时发送桌面通知\n      --notification-command=       用于通知的自定义命令（覆盖内置通知）\n      --yt-dlp-args=                传递给 yt-dlp 的附加参数（例如 '--cookies-from-browser brave'）\n      --thinking=                   设置推理\u002F思考级别（例如，关闭、低、中、高，或针对 Anthropic 或 Google Gemini 的数值标记）\n      --show-metadata               打印元数据（输入\u002F输出标记）到 stderr\n      --debug=                     设置调试级别（0：关闭，1：基本，2：详细，3：跟踪）\n帮助选项：\n  -h, --help                        显示此帮助信息\n```\n\n### 调试级别\n\n使用 `--debug` 标志来控制运行时日志记录：\n\n- `0`：关闭（默认）\n- `1`：基本调试信息\n- `2`：详细调试\n- `3`：跟踪级别\n\n### 模拟运行模式\n\n使用 `--dry-run` 可以预览在不进行 API 调用的情况下会发送给 AI 模型的内容：\n\n```bash\necho \"test input\" | fabric --dry-run -p summarize\n```\n\n这在调试模式、检查提示构造以及在消耗 API 资源之前验证输入格式时非常有用。\n\n### 扩展功能\n\nFabric 支持可在模式中调用的扩展功能。完整文档请参阅[扩展指南](internal\u002Fplugins\u002Ftemplate\u002FExamples\u002FREADME.md)。\n\n**重要提示：** 扩展功能仅在模式文件中有效，不能通过直接从标准输入传递数据来使用。详情和示例请参阅该指南。\n\n## REST API 服务器\n\nFabric 内置了一个 REST API 服务器，可通过 HTTP 暴露所有核心功能。启动服务器的命令如下：\n\n```bash\nfabric --serve\n```\n\n该服务器提供了以下端点：\n\n- 带流式响应的聊天完成\n- 模式管理（创建、读取、更新、删除）\n- 上下文和会话管理\n- 模型和供应商列表\n- YouTube 字幕提取\n- 配置管理\n\n有关完整的端点文档、身份验证设置及使用示例，请参阅[REST API 文档](docs\u002Frest-api.md)。\n\n### Ollama 兼容模式\n\nFabric 可以作为 Ollama 的直接替代品，通过暴露与 Ollama 兼容的 API 端点来实现。启动服务器的命令如下：\n\n```bash\nfabric --serve --serveOllama\n```\n\n这将启用以下与 Ollama 兼容的端点：\n\n- `GET \u002Fapi\u002Ftags` - 列出可用的模式作为模型\n- `POST \u002Fapi\u002Fchat` - 聊天完成\n- `GET \u002Fapi\u002Fversion` - 服务器版本\n\n配置为使用 Ollama API 的应用程序可以指向您的 Fabric 服务器，从而允许您通过 Ollama 接口使用 Fabric 支持的任何 AI 提供商。模式会显示为模型（例如 `summarize:latest`）。\n\n## 我们的提示设计方法\n\nFabric 的“模式”与您通常看到的大多数提示有所不同。\n\n- **首先，我们使用 Markdown 来确保最大的可读性和可编辑性**。这不仅有助于创建者编写高质量的提示，也方便任何希望深入理解其作用的人。**更重要的是，这也包括您发送提示的 AI！**\n\n以下是一个 Fabric 模式的示例：\n\n```bash\nhttps:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fblob\u002Fmain\u002Fdata\u002Fpatterns\u002Fextract_wisdom\u002Fsystem.md\n```\n\n\u003Cimg width=\"1461\" alt=\"pattern-example\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_132c5dd55249.png\">\n\n- **其次，我们的指令非常清晰**，并利用 Markdown 结构来强调我们希望 AI 完成的任务及其顺序。\n  \n- **最后，我们倾向于几乎只使用提示中的系统部分**。在过去一年多的时间里，我们发现采用这种方式效果更好。如果情况发生变化，或者有数据表明其他方式更优，我们会相应调整。\n\n## 示例\n\n> 以下示例使用 macOS 的 `pbpaste` 从剪贴板粘贴内容。Windows 和 Linux 的替代方案请参阅下方的 [pbpaste](#pbpaste) 部分。\n\n现在让我们看看使用 Fabric 可以做些什么。\n\n1. 根据标准输入运行 `summarize` 模式。在此示例中，输入是一篇文章的内容。\n\n    ```bash\n    pbpaste | fabric --pattern summarize\n    ```\n\n2. 使用 `--stream` 选项运行 `analyze_claims` 模式，以获得即时且流式的输出。\n\n    ```bash\n    pbpaste | fabric --stream --pattern analyze_claims\n    ```\n\n3. 使用 `--stream` 选项运行 `extract_wisdom` 模式，从任意 YouTube 视频中获取即时且流式的智慧摘要（类似于最初的介绍视频）。\n\n    ```bash\n    fabric -y \"https:\u002F\u002Fyoutube.com\u002Fwatch?v=uXs-zPc63kM\" --stream --pattern extract_wisdom\n    ```\n\n4. 创建模式——您需要创建一个包含模式的 `.md` 文件，并将其保存到 `~\u002F.config\u002Ffabric\u002Fpatterns\u002F[yourpatternname]` 目录中。\n\n5. 对网站运行 `analyze_claims` 模式。Fabric 使用 Jina AI 将 URL 抓取为 Markdown 格式，然后再发送给模型。\n\n    ```bash\n    fabric -u https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002F -p analyze_claims\n    ```\n\n## 直接使用模式\n\n\u003Cimg width=\"1173\" alt=\"fabric-patterns-screenshot\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_7e6889a78efc.png\">\n\n\u003Cbr \u002F>\n\u003Cbr \u002F>\n\n如果您不想进行复杂操作，只想使用大量优秀的提示，可以直接前往 [`\u002Fpatterns`](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Ftree\u002Fmain\u002Fdata\u002Fpatterns) 目录开始探索！\n\n我们希望即使您只使用 Fabric 中的模式，这个项目也能为您带来价值。\n\n您可以将其中看到的任何模式用于您拥有的任何 AI 应用程序，无论是 ChatGPT 还是其他应用或网站。我们的计划和预测是，人们很快会分享比我们发布的更多的模式，而且这些模式的质量将远远超过我们的水平。\n\n众包智慧终将胜出。\n\n### 提示策略\n\nFabric 还实现了诸如“思维链”或“草稿链”之类的提示策略，这些策略可以与基础模式结合使用。\n\n有关提示策略的示例，请参阅论文《通过减少写作更快思考》（[arxiv.org\u002Fpdf\u002F2502.18600](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2502.18600)）以及[Learn Prompting 的“思维生成”章节](https:\u002F\u002Flearnprompting.org\u002Fdocs\u002Fadvanced\u002Fthought_generation\u002Fintroduction)。\n\n每种策略都以小型 JSON 文件的形式存储在 [`\u002Fstrategies`](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Ftree\u002Fmain\u002Fdata\u002Fstrategies) 目录中。\n\n策略对提示的修改会应用于系统提示，并在聊天会话中传递给 LLM。\n\n使用 `fabric -S` 并选择将策略安装到您的 `~\u002F.config\u002Ffabric` 目录中。\n\n#### 可用策略\n\nFabric 包含多种提示策略：\n\n- `cot` - 思维链：逐步推理\n- `cod` - 草稿链：迭代草稿，每步最多 5 个词\n- `tot` - 思维树：生成多条推理路径并选择最佳路径\n- `aot` - 思维原子：将问题分解为最小的独立子问题\n- `ltm` - 由简入繁：按难度从小到大解决子问题\n- `self-consistent` - 自洽：多条推理路径达成共识\n- `self-refine` - 自我精炼：回答、批判并改进\n- `reflexion` - 反思：回答、简要批判并提供改进后的答案\n- `standard` - 标准：直接给出答案，不作解释\n\n使用 `--strategy` 标志应用策略：\n\n```bash\necho \"分析这段代码\" | fabric --strategy cot -p analyze_code\n```\n\n列出所有可用策略的命令如下：\n\n```bash\nfabric --liststrategies\n```\n\n策略以 JSON 文件的形式存储在 `~\u002F.config\u002Ffabric\u002Fstrategies\u002F` 目录中。请参阅默认策略以了解格式规范。\n\n## 自定义模式\n\n你可能希望使用 Fabric 创建自己的自定义模式，但又不想与他人共享。这完全没问题！\n\nFabric 现在支持一个专用的自定义模式目录，可以将你的个人模式与内置模式分开存储。这意味着当你更新 Fabric 的内置模式时，你的自定义模式不会被覆盖。\n\n### 设置自定义模式\n\n1. 运行 Fabric 的设置命令：\n\n   ```bash\n   fabric --setup\n   ```\n\n2. 在“工具”菜单中选择“自定义模式”选项，并输入你想要的目录路径（例如 `~\u002Fmy-custom-patterns`）。\n\n3. 如果该目录不存在，Fabric 会自动创建它。\n\n### 使用自定义模式\n\n1. 创建你的自定义模式目录结构：\n\n   ```bash\n   mkdir -p ~\u002Fmy-custom-patterns\u002Fmy-analyzer\n   ```\n\n2. 创建你的模式文件：\n\n   ```bash\n   echo \"You are an expert analyzer of ...\" > ~\u002Fmy-custom-patterns\u002Fmy-analyzer\u002Fsystem.md\n   ```\n\n3. **使用你的自定义模式：**\n\n   ```bash\n   fabric --pattern my-analyzer \"analyze this text\"\n   ```\n\n### 工作原理\n\n- **优先级系统**：自定义模式会优先于同名的内置模式。\n- **无缝集成**：自定义模式会与内置模式一起出现在 `fabric --listpatterns` 中。\n- **更新安全**：你的自定义模式永远不会受到 `fabric --updatepatterns` 的影响。\n- **默认私有**：自定义模式默认是私有的，除非你明确分享它们。\n\n你的自定义模式完全私密，不会受到 Fabric 更新的影响！\n\n## 辅助应用\n\nFabric 还使用了一些核心辅助应用（工具），以帮助你更轻松地将其集成到各种工作流中。以下是一些示例：\n\n### `to_pdf`\n\n`to_pdf` 是一个辅助命令，用于将 LaTeX 文件转换为 PDF 格式。你可以这样使用它：\n\n```bash\nto_pdf input.tex\n```\n\n这将在同一目录下生成一个基于输入 LaTeX 文件的 PDF 文件。\n\n你也可以将其与标准输入结合使用，这与 `write_latex` 模式完美配合：\n\n```bash\necho \"ai security primer\" | fabric --pattern write_latex | to_pdf\n```\n\n这将在当前目录下生成一个名为 `output.pdf` 的 PDF 文件。\n\n### 安装 `to_pdf`\n\n要安装 `to_pdf`，你可以像安装 Fabric 一样进行安装，只需使用不同的仓库名称即可。\n\n```bash\ngo install github.com\u002Fdanielmiessler\u002Ffabric\u002Fcmd\u002Fto_pdf@latest\n```\n\n请确保你的系统上已安装 LaTeX 发行版（如 TeX Live 或 MiKTeX），因为 `to_pdf` 需要系统 PATH 中存在 `pdflatex`。\n\n### `code2context`\n\n`code2context` 与 `create_coding_feature` 模式配合使用。它可以生成代码目录的 JSON 表示，然后将其输入到 AI 模型中，以按照指定方式创建新功能或编辑代码。\n\n详细信息请参阅 [Create Coding Feature Pattern README](.\u002Fdata\u002Fpatterns\u002Fcreate_coding_feature\u002FREADME.md)。\n\n首先使用以下命令安装它：\n\n```bash\ngo install github.com\u002Fdanielmiessler\u002Ffabric\u002Fcmd\u002Fcode2context@latest\n```\n\n### `generate_changelog`\n\n`generate_changelog` 可以根据 Git 提交历史和 GitHub 拉取请求生成变更日志。它会遍历你的仓库的 Git 历史，提取 PR 信息，并生成格式良好的 Markdown 变更日志。\n\n```bash\ngenerate_changelog --help\n```\n\n其功能包括 SQLite 缓存以实现快速增量更新、GitHub GraphQL API 集成以高效获取 PR，以及可选的使用 Fabric 的 AI 增强摘要。\n\n使用以下命令安装它：\n\n```bash\ngo install github.com\u002Fdanielmiessler\u002Ffabric\u002Fcmd\u002Fgenerate_changelog@latest\n```\n\n有关详细的用法和选项，请参阅 [generate_changelog README](.\u002Fcmd\u002Fgenerate_changelog\u002FREADME.md)。\n\n## pbpaste\n\n在[示例](#examples)中，使用了 macOS 系统中的 `pbpaste` 程序，将剪贴板内容粘贴并作为管道输入传递给 `fabric`。`pbpaste` 在 Windows 和 Linux 系统上不可用，但有替代方案。\n\n在 Windows 上，你可以从 PowerShell 命令提示符中使用 `Get-Clipboard` 命令。如果你愿意，还可以将其别名为 `pbpaste`。如果使用的是经典 PowerShell，编辑 `~\\Documents\\WindowsPowerShell\\.profile.ps1` 文件；如果是 PowerShell Core，则编辑 `~\\Documents\\PowerShell\\.profile.ps1` 文件，并添加如下别名：\n\n```powershell\nSet-Alias pbpaste Get-Clipboard\n```\n\n在 Linux 系统上，你可以使用 `xclip -selection clipboard -o` 来粘贴剪贴板内容。你可能需要通过包管理器安装 `xclip`。对于基于 Debian 的系统（包括 Ubuntu）：\n\n```sh\nsudo apt update\nsudo apt install xclip -y\n```\n\n你还可以通过编辑 `~\u002F.bashrc` 或 `~\u002F.zshrc` 文件来创建别名：\n\n```sh\nalias pbpaste='xclip -selection clipboard -o'\n```\n\n## Web 界面（Fabric Web 应用）\n\nFabric 现在包含一个内置的 Web 界面，提供了图形用户界面作为命令行界面的替代方案。有关安装说明和功能概述，请参阅 [Web App README](\u002Fweb\u002FREADME.md)。\n\n## 元数据\n\n> [!NOTE]\n> 特别感谢以下人员的启发与贡献！\n\n- _Jonathan Dunn_ 是该项目当之无愧的核心开发者，不仅主导了新的 Go 版本开发，还负责 GUI 的设计！而他同时还是全职医生！\n- _Caleb Sima_ 推动我最终决定是否将此项目开源。\n- _Eugen Eisler_ 和 _Frederick Ros_ 对 Go 版本做出了宝贵贡献。\n- _David Peters_ 负责 Web 界面的工作。\n- _Joel Parish_ 对项目的 Github 目录结构提出了非常有用的建议。\n- _Joseph Thacker_ 提出了 `-c` 上下文标志的想法，该标志会将预先创建的上下文添加到 `.\u002Fconfig\u002Ffabric\u002F` 目录中，供所有模式查询使用。\n- _Jason Haddix_ 提出了“串联模式”的想法，即在将内容发送到云端模型之前，先使用本地模型进行过滤——例如，在将客户数据发送到 `gpt-4` 进行分析之前，先使用 `llama2` 进行清洗。\n- _Andre Guerra_ 协助处理了多个组件，使整个项目更加简单易维护。\n\n### 主要贡献者\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdanielmiessler\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_33f5146d8b8c.png\" title=\"Daniel Miessler\" width=\"50\" height=\"50\" alt=\"Daniel Miessler\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fxssdoctor\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_92955a66710e.png\" title=\"Jonathan Dunn\" width=\"50\" height=\"50\" alt=\"Jonathan Dunn\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsbehrens\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_7245ebe07914.png\" title=\"Scott Behrens\" width=\"50\" height=\"50\" alt=\"Scott Behrens\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fagu3rra\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_44172590f29c.png\" title=\"Andre Guerra\" width=\"50\" height=\"50\" alt=\"Andre Guerra\">\u003C\u002Fa>\n\n### 贡献者\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_readme_406feb559498.png\" alt=\"contrib.rocks\" \u002F>\n\u003C\u002Fa>\n\n由 [contrib.rocks](https:\u002F\u002Fcontrib.rocks) 制作。\n\n`fabric` 由 \u003Ca href=\"https:\u002F\u002Fdanielmiessler.com\u002Fsubscribe\" target=\"_blank\">Daniel Miessler\u003C\u002Fa> 于 2024 年 1 月创建。\n\u003Cbr \u002F>\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Fintent\u002Fuser?screen_name=danielmiessler\">![X（原 Twitter）关注](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fdanielmiessler)\u003C\u002Fa>\n\n## 💜 支持本项目\n\n\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSponsor-❤️-EA4AAA?style=for-the-badge&logo=github-sponsors&logoColor=white\" alt=\"赞助\">\n\n**我每年会投入数百小时在开源项目上。如果您想支持这个项目，可以在这里 [赞助我](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fdanielmiessler)。🙏🏼**\n\n\u003C\u002Fdiv>","# Fabric 快速上手指南\n\nFabric 是一个开源框架，旨在通过组织和调用高质量的 AI 提示词（Patterns），将人工智能能力无缝集成到用户的日常工作流中。它解决了“有 AI 能力但难以整合”的痛点，让你能在命令行或任意工具中轻松调用专家级的 AI 解决方案。\n\n## 环境准备\n\n在开始之前，请确保你的系统满足以下要求：\n\n*   **操作系统**：macOS, Linux (包括 ARM 架构如 Raspberry Pi), Windows。\n*   **AI 提供商账号**：你需要至少一个支持的 AI 后端 API Key（例如 OpenAI, Anthropic\u002FClaude, Azure OpenAI, Ollama 本地模型等）。\n*   **网络环境**：由于需要连接全球 AI 服务，请确保网络通畅。国内用户若访问 GitHub 或 AI 接口受限，建议配置代理或使用支持国内部署的模型后端（如 Ollama）。\n*   **前置依赖**：无特殊依赖，Fabric 为独立二进制文件。若需使用语音转录功能，需确保已安装 `ffmpeg`（可选）。\n\n## 安装步骤\n\n推荐优先使用官方提供的一键安装脚本，它会自动检测系统架构并下载最新的二进制文件。\n\n### 方法一：一键安装（推荐）\n\n在终端中运行以下命令：\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fdanielmiessler\u002Ffabric\u002Fmain\u002Fscripts\u002Finstall.sh | bash\n```\n\n> **注意**：如果下载速度慢，可尝试手动下载二进制文件（见方法二）。安装完成后，请确保将 Fabric 添加到你的 `$PATH` 环境变量中（脚本通常会自动处理，若未生效请重启终端或手动 source 配置文件）。\n\n### 方法二：手动下载二进制文件\n\n访问 [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002Ffabric\u002Freleases) 页面，根据你的操作系统和架构下载对应的压缩包（例如 `fabric-linux-amd64`, `fabric-darwin-arm64`, `fabric-windows-amd64.exe`）。\n\n解压后将二进制文件移动到系统路径：\n\n```bash\n# 示例：Linux\u002FmacOS\nchmod +x fabric\nsudo mv fabric \u002Fusr\u002Flocal\u002Fbin\u002F\n```\n\n### 初始化配置\n\n安装完成后，运行以下命令进行初始化设置。该向导会引导你配置默认的 AI 提供商和 API Key。\n\n```bash\nfabric --setup\n```\n\n按照提示输入你的 API Key（如 `OPENAI_API_KEY` 或 `ANTHROPIC_API_KEY`），并选择默认模型。配置信息通常保存在 `~\u002F.config\u002Ffabric\u002F` 目录下。\n\n## 基本使用\n\nFabric 的核心逻辑是通过管道（pipe）将文本内容传递给特定的 **Pattern**（预设提示词模板），从而获得结构化的 AI 输出。\n\n### 1. 查看可用模式 (Patterns)\n\n首先查看内置了哪些强大的提示词模板：\n\n```bash\nfabric -l\n```\n\n### 2. 最简单的使用示例\n\n假设你想总结一段文本或文章。你可以将内容通过管道传递给 `summarize` 模式：\n\n**示例：总结剪贴板内容**\n\n```bash\npbpaste | fabric --pattern summarize\n```\n\n*(注：Windows 用户若无 `pbpaste`，可使用 `Get-Clipboard` 或直接重定向文件)*\n\n**示例：总结文件内容**\n\n```bash\ncat article.txt | fabric --pattern summarize\n```\n\n**示例：提取关键观点**\n\n```bash\necho \"这里是一段关于人工智能发展的长文本...\" | fabric --pattern extract_wisdom\n```\n\n### 3. 指定模型\n\n如果你配置了多个后端，或在初始化时未设置默认模型，可以在命令中临时指定：\n\n```bash\ncat notes.md | fabric --pattern summarize --model claude-3-opus-20240229\n```\n\n### 4. 保存结果\n\n直接将输出重定向到新文件：\n\n```bash\ncat meeting_transcript.txt | fabric --pattern summarize > meeting_summary.md\n```\n\n现在你已经掌握了 Fabric 的核心用法。通过组合不同的 `--pattern`，你可以轻松实现翻译、代码解释、情感分析、提取待办事项等多种复杂任务。","资深技术博主李明每周需处理大量英文技术文档和会议录音，以便为中文社区撰写深度解读文章。\n\n### 没有 Fabric 时\n- **提示词管理混乱**：每次针对不同任务（如总结、提取观点、润色）都要重新编写或查找提示词，效率低下且质量不稳定。\n- **工作流割裂**：需要在浏览器、聊天机器人和本地编辑器之间反复切换，无法将 AI 能力无缝嵌入现有的命令行写作流程中。\n- **知识难以沉淀**：优秀的提示词散落在各个聊天记录中，无法形成标准化的“模式库”供团队复用或迭代优化。\n- **上下文处理繁琐**：面对长篇幅的英文原始素材，手动分段投喂给 AI 不仅耗时，还容易丢失整体逻辑连贯性。\n\n### 使用 Fabric 后\n- **模块化调用**：直接通过 `fabric --pattern summarize` 或 `extract_wisdom` 等预置模块，一键调用社区众包的高质量提示词，输出稳定可靠。\n- **无缝集成终端**：利用管道命令（如 `cat meeting.txt | fabric --pattern summarize`），在终端内完成从输入到输出的全流程，无需离开当前工作环境。\n- **标准化资产积累**：将验证有效的提示词保存为自定义 Pattern，构建个人或团队专属的 AI 解决方案库，实现知识资产的持续复用。\n- **高效长文处理**：结合本地流式处理优势，轻松应对长篇技术文档，快速提炼核心洞察并自动转换为符合中文阅读习惯的深度稿件。\n\nFabric 通过将分散的 AI 提示词转化为可复用的标准化模块，彻底解决了 AI 技术与实际工作流之间的“集成鸿沟”。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdanielmiessler_Fabric_c1912024.png","danielmiessler","Daniel Miessler 🛡️","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fdanielmiessler_33f5146d.png","⚒️ Building AI that ᴜᴘɢʀᴀᴅᴇs humans.","Unsupervised Learning","San Francisco Bay Area","daniel@danielmiessler.com","https:\u002F\u002Fdanielmiessler.com\u002F","https:\u002F\u002Fgithub.com\u002Fdanielmiessler",[83,87,91,95,99,102,106,110,113,117],{"name":84,"color":85,"percentage":86},"Go","#00ADD8",71,{"name":88,"color":89,"percentage":90},"Svelte","#ff3e00",11.6,{"name":92,"color":93,"percentage":94},"Python","#3572A5",6.5,{"name":96,"color":97,"percentage":98},"TypeScript","#3178c6",6,{"name":100,"color":101,"percentage":10},"Shell","#89e051",{"name":103,"color":104,"percentage":105},"PowerShell","#012456",0.5,{"name":107,"color":108,"percentage":109},"JavaScript","#f1e05a",0.4,{"name":111,"color":112,"percentage":109},"Nix","#7e7eff",{"name":114,"color":115,"percentage":116},"CSS","#663399",0.3,{"name":118,"color":119,"percentage":120},"Batchfile","#C1F12E",0.2,40450,4031,"2026-04-07T05:22:16","MIT","Linux, macOS, Windows","未说明",{"notes":128,"python":126,"dependencies":126},"该工具主要提供预编译的二进制文件（支持 Linux ARM 和 Windows ARM，如树莓派和 Surface），也可通过 Homebrew、AUR 或源码安装。它是一个用于组织和使用 AI 提示词（Prompts）的框架，本身不包含大型模型，需配置外部 AI 提供商（如 OpenAI、Anthropic、Ollama 等）的 API 密钥才能运行。",[15,13,14],[131,132,133,134,135],"ai","augmentation","flourishing","life","work",null,"2026-03-27T02:49:30.150509","2026-04-07T22:49:52.656571",[140,145,150,155,160,165],{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},22893,"如何配置 Fabric 以支持本地 LLM（如 Ollama）？遇到 404 错误怎么办？","要在 Fabric 中使用 Ollama，需要在 `~\u002F.config\u002Ffabric\u002F.env` 文件中设置以下环境变量：\n\nOPENAI_API_KEY=ollama\nOPENAI_BASE_URL=http:\u002F\u002F127.0.0.1:11434\u002Fv1\u002F\n\n如果遇到 `Error: Client error '404 Not Found' for url 'http:\u002F\u002F127.0.0.1:11434\u002Fv1\u002Fmodels'` 错误，请检查 `OPENAI_BASE_URL` 的配置。确保 URL 格式正确，通常以 `http:\u002F\u002F127.0.0.1:11434\u002Fv1\u002F` 结尾（注意末尾的斜杠）。如果仍然报错，尝试确认 Ollama 服务是否正在运行且端口无误。","https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fissues\u002F178",{"id":146,"question_zh":147,"answer_zh":148,"source_url":149},22894,"使用 `-y` 参数获取 YouTube 字幕时提示 \"transcript not available\" 或 \"EOF\" 错误如何解决？","这通常是因为 `yt-dlp` 版本过旧，无法处理 YouTube 的最新反爬虫机制或限流策略。\n\n解决方案是更新 `yt-dlp` 到最新版本：\n```bash\nyt-dlp -U\n```\n或者重新安装最新版的 `yt-dlp`。维护者指出，新版本的 `yt-dlp` 已经绕过了许多 YouTube 的限流和变更，Fabric 依赖它来提取字幕，因此保持该工具为最新版至关重要。","https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fissues\u002F1498",{"id":151,"question_zh":152,"answer_zh":153,"source_url":154},22895,"输入文本在 System Prompt 和 User Prompt 中重复出现导致上下文浪费，该如何修复？","这是一个已知的 Bug，表现为输入内容同时出现在系统提示和用户消息中，导致上下文窗口加倍且影响模型遵循指令的效果。\n\n该问题已在后续版本（如 v1.4.190 及通过 PR #1475 合并的代码）中修复。如果你遇到此问题，请确保将 Fabric 升级到最新版本：\n```bash\ngo install github.com\u002Fdanielmiessler\u002Ffabric@latest\n```\n升级后，无论是普通模式还是 `--raw` 模式，输入内容都将只出现在 User 部分，不再重复。","https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fissues\u002F1203",{"id":156,"question_zh":157,"answer_zh":158,"source_url":159},22896,"在使用 Web 前端连接本地 Ollama 时出现 \"Failed to fetch chat stream\" 错误，但命令行正常，原因是什么？","如果在命令行中使用 Fabric 配合 Ollama 正常工作，但在 Web 前端（VITE）中出现 \"Failed to fetch chat stream\" 错误，这通常是由于前端与后端通信配置或特定模型兼容性问题导致的。\n\n建议步骤：\n1. 确认 Ollama 服务正在运行且可被前端访问（检查 CORS 设置或代理配置）。\n2. 尝试更换一个公共模型（如 GrokAI）测试前端是否正常，以排除前端本身的问题。\n3. 如果仅特定本地模型（如 `gemma3n:latest`）出错，可能是该模型不支持流式输出或格式不符合前端预期。\n4. 若问题持续，建议清理环境重新安装最新版的 Fabric 和前端依赖，或提交包含详细复现步骤的新 Issue。","https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fissues\u002F1366",{"id":161,"question_zh":162,"answer_zh":163,"source_url":164},22897,"使用 `yt` 辅助函数时，输出中包含 `\\u0026#39;` 而不是正常的单引号，如何处理？","这是 `yt`  helper 函数输出中的 HTML 实体编码问题。虽然官方已在后续更新（如 PR #1508）中进行了清理，但在旧版本中可以通过管道命令手动替换来解决。\n\n临时解决方法（PowerShell 示例）：\n```powershell\nyt \"\u003C视频 URL>\" | %{$_.replace('\\u0026#39;', \"'\")}\n```\n这将把错误的编码字符替换为正常的单引号。建议升级到最新版本以永久解决此问题。","https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fissues\u002F1395",{"id":166,"question_zh":167,"answer_zh":168,"source_url":169},22898,"为什么某些 YouTube 视频提示 \"transcript not found\" 即使视频明明有字幕？","出现 \"transcript not found\" 或 \"transcript not available\" 错误通常有以下原因：\n1. **yt-dlp 版本过旧**：YouTube 经常更改其 API 结构，旧版 `yt-dlp` 无法正确解析字幕链接。请务必运行 `yt-dlp -U` 更新。\n2. **视频确实无字幕**：部分视频可能没有生成自动字幕或上传者未提供字幕。\n3. **网络或区域限制**：某些视频在特定地区可能无法访问字幕数据。\n\n首先尝试更新 `yt-dlp`，如果问题依旧，可以使用第三方网站（如 ytb2mp4.com）验证该视频是否确实存在可提取的字幕。如果第三方能提取而 Fabric 不能，则确认为工具链版本问题。","https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fissues\u002F1037",[171,176,181,186,191,196,201,206,211,216,221,226,231,236,241,246,251,256,261,266],{"id":172,"version":173,"summary_zh":174,"released_at":175},136657,"v1.4.442","## 变更\n\n### PR [#2075](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2075) 由 [ksylvan](https:\u002F\u002Fgithub.com\u002Fksylvan) 和 [mikaelpr](https:\u002F\u002Fgithub.com\u002Fmikaelpr) 提交：重构：将 OAuth 和认证逻辑从 Codex 客户端模块中提取出来\n\n- 重构了 Codex 客户端模块，将所有 OAuth 和认证逻辑提取到一个专用模块中，从而更好地实现关注点分离。\n- 从 `codex.go` 中移除了 OAuth 流程、PKCE 处理以及令牌刷新逻辑，精简了客户端的核心职责。\n- 移除了认证传输层的重试逻辑，简化了 HTTP 传输层。\n- 移除了 JWT 解析和令牌过期相关的工具函数，以及未使用的 OAuth 类型和辅助结构体，减少了包中的冗余代码。\n- 添加了针对 `SendStream` 的 HTTP 错误映射及通道关闭行为的测试，提升了客户端模块的测试覆盖率。","2026-03-26T00:11:02",{"id":177,"version":178,"summary_zh":179,"released_at":180},136658,"v1.4.441","## 变更\n\n### PR [#2068](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2068) 由 [dependabot](https:\u002F\u002Fgithub.com\u002Fapps\u002Fdependabot) 和 [ksylvan](https:\u002F\u002Fgithub.com\u002Fksylvan) 提交：构建任务 (deps)：在 `go_modules` 组中的 1 个目录内，将 `google.golang.org\u002Fgrpc` 从 1.79.0 升级至 1.79.3\n\n- 将 `google.golang.org\u002Fgrpc` 的间接依赖版本从 v1.79.0 升级至 v1.79.3。\n- 将 `anthropic-sdk-go` 从 v1.23.0 升级至 v1.27.1，以保持 Anthropic 客户端库的最新状态。\n- 从 Go 模块中移除了已弃用的模型别名 `ModelClaude4Sonnet20250514` 和 `ModelClaude4Opus20250514`。\n- 将 `gin-gonic\u002Fgin` 更新至 v1.12.0，`go-git` 更新至 v5.17.0，引入了最新的框架改进。\n- 将 `ollama\u002Follama` 从 v0.16.2 升级至 v0.18.2，纳入了 Ollama 客户端的最新更新。","2026-03-22T15:11:57",{"id":182,"version":183,"summary_zh":184,"released_at":185},136659,"v1.4.440","## 变更\n\n### PR [#2064](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2064) 由 [JasonYeYuhe](https:\u002F\u002Fgithub.com\u002FJasonYeYuhe) 和 [ksylvan](https:\u002F\u002Fgithub.com\u002Fksylvan) 提交：文档：添加中文翻译 (README.zh.md)\n\n- 新增了 README 文件的中文翻译（`README.zh.md`）。\n- 对中文翻译进行了优化，使其更加符合汉语表达习惯，语言更加自然流畅。\n- 移除了中文（zh）本地化文件中的重复键。","2026-03-19T18:11:51",{"id":187,"version":188,"summary_zh":189,"released_at":190},136660,"v1.4.439","## 变更\n\n### PR [#2066](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2066) 由 [octo-patch](https:\u002F\u002Fgithub.com\u002Focto-patch) 提交：feat: 将 MiniMax 默认模型升级至 M2.7\n\n- 将 MiniMax 默认模型升级至 M2.7，这是最新一代的旗舰模型，具备更强的推理和编码能力。\n- 在静态模型列表中新增 MiniMax-M2.7 和 MiniMax-M2.7-highspeed。\n- 将 M2.7 系列模型置于列表首位，作为新的默认选项。\n- 保留所有原有模型（M2.5、M2.5-highspeed、M2.5-lightning、M2、M2.1、M2.1-lightning）作为可用替代方案。","2026-03-18T18:05:00",{"id":192,"version":193,"summary_zh":194,"released_at":195},136661,"v1.4.438","## 变更\n\n### PR [#2061](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2061) 由 [praxstack](https:\u002F\u002Fgithub.com\u002Fpraxstack) 提交：修复 (chat)：防止流式处理死锁，并统一策略处理逻辑\n\n- **修复了 `Chatter.Send` 中的流式处理死锁**，通过引入 `recordFirstStreamError()` 方法，该方法使用非阻塞的 `select\u002Fdefault` 机制，安全地仅将第一个错误发送到缓冲的错误通道，从而避免在 `SendStream` 协程和流更新循环同时尝试写入时出现协程泄漏。\n- **统一了 CLI 和 REST API 服务器中的策略处理逻辑**，将 `StrategyName` 传递至 `GetChatter()` 和 `ChatRequest`，确保核心的 `Chatter.BuildSession()` 层以一致的方式处理策略加载，而不必在服务器处理器中重复逻辑。\n- **移除了服务器处理器中内联的 `os.ReadFile` 策略加载代码**，该代码此前绕过了核心 Chatter 层，导致策略提示被错误地前置到 `UserInput` 而不是系统消息中。\n- **将用于组装系统消息的原始字符串拼接替换为新的 `joinPromptSections()` 辅助函数**，该函数会修剪空白、跳过空部分，并使用单个换行符分隔符连接策略、上下文和模式提示。\n- **新增了回归测试和单元测试**，包括一个 2 秒超时死锁测试 (`TestChatter_Send_StreamingErrorUpdateAndReturnDoesNotDeadlock`)、一个会话组装验证测试 (`TestChatter_BuildSession_SeparatesSystemSections`) 以及一个辅助函数验证测试 (`TestBuildPromptChatRequest_PreservesStrategyAndUserInput`)。","2026-03-18T17:44:41",{"id":197,"version":198,"summary_zh":199,"released_at":200},136662,"v1.4.437","## 变更\n\n### PR [#2056](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2056) 由 [mikaelpr](https:\u002F\u002Fgithub.com\u002Fmikaelpr) 和 [ksylvan](https:\u002F\u002Fgithub.com\u002Fksylvan) 提交：feat: 添加支持 OpenAI OAuth 的 Codex 供应商\n\n- 添加新的 Codex AI 供应商插件，支持 OpenAI 的 OAuth PKCE 流程\n- 实现基于浏览器的登录，并在收到 401 错误时自动刷新令牌\n- 允许显式选择 Codex 模型，绕过模型列表展示\n- 公开共享的 OpenAI `BuildResponseParams` 和 `ExtractText` 辅助函数，并将系统消息和开发者消息移至 Codex 的 `instructions` 字段\n- 为 Codex 的 OAuth、流式传输和重试机制添加全面的单元测试\n- 为所有 11 种语言新增国际化键。","2026-03-16T17:36:14",{"id":202,"version":203,"summary_zh":204,"released_at":205},136663,"v1.4.436","## 变更\n\n### PR [#2060](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2060) 由 [octo-patch](https:\u002F\u002Fgithub.com\u002Focto-patch) 提交：feat: 将 MiniMax-M2.5-highspeed 添加到静态模型列表\n\n- 将 `MiniMax-M2.5-highspeed` 模型变体添加到静态 MiniMax 模型列表中。该变体在性能上与 `MiniMax-M2.5` 相同，但推理速度更快。\n","2026-03-15T22:11:54",{"id":207,"version":208,"summary_zh":209,"released_at":210},136664,"v1.4.435","## 变更\n\n### PR [#2058](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2058) 由 [dependabot](https:\u002F\u002Fgithub.com\u002Fapps\u002Fdependabot) 提交：chore(deps-dev): 将 `\u002Fweb` 目录下 `npm_and_yarn` 组中的 `devalue` 从 5.6.3 升级到 5.6.4，涉及 1 个目录\n\n- 在 `\u002Fweb` 目录中，作为 `npm_and_yarn` 依赖组的一部分，将间接依赖项 `devalue` 的版本从 5.6.3 升级至 5.6.4。","2026-03-15T19:20:02",{"id":212,"version":213,"summary_zh":214,"released_at":215},136665,"v1.4.434","## 变更\n\n### PR [#2052](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2052) 由 [praxstack](https:\u002F\u002Fgithub.com\u002Fpraxstack) 和 [ksylvan](https:\u002F\u002Fgithub.com\u002Fksylvan) 提交：特性（Bedrock）：动态区域获取及 `AWS_PROFILE` 冲突修复\n\n- 添加了从 `botocore` 的 `endpoints.json` 文件中动态获取 Bedrock 区域的功能，将支持的区域数量从硬编码的 6 个扩展到 40 多个，并在发生错误时提供静态回退机制。\n- 修复了 `AWS_PROFILE` 环境变量冲突问题，该问题会导致在用户已为其他工具（如 Terraform、AWS CLI）设置了 `AWS_PROFILE`，同时使用显式访问密钥或静态凭证时出现 `'failed to get shared config profile'` 错误。\n- 改进了对空认证选项的处理，使其能够优雅地跳过选择，而不是抛出错误。","2026-03-09T16:02:19",{"id":217,"version":218,"summary_zh":219,"released_at":220},136666,"v1.4.433","## 变更\n\n### PR [#2054](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2054) 由 [pretyflaco](https:\u002F\u002Fgithub.com\u002Fpretyflaco) 提交：修复(ollama): 将思考层级映射到 Ollama API，并转换单个 system 角色的消息\n\n- 修复(ollama): 映射思考层级并转换单个 system 角色的消息\n\n### 直接提交\n\n- 修复：手动编辑 changelog.db 文件及更改日志中的问题\n","2026-03-07T23:26:21",{"id":222,"version":223,"summary_zh":224,"released_at":225},136667,"v1.4.432","## Changes\n\n### PR [#2050](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2050) by [ksylvan](https:\u002F\u002Fgithub.com\u002Fksylvan): Update web dependencies - fix npm override issue\n\n- Chore: update web dependencies - fix npm override issue\n","2026-03-06T18:00:10",{"id":227,"version":228,"summary_zh":229,"released_at":230},136668,"v1.4.431","## Changes\n\n### PR [#2049](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2049) by [ksylvan](https:\u002F\u002Fgithub.com\u002Fksylvan): Security Hardening: API Key Redaction, Path Traversal Prevention, and Shell Injection Elimination\n\n- Fix: Redact API keys in config responses and eliminate shell injection surfaces.\n- Added `maskAPIKey` to redact all but the last 4 characters of API keys, mitigating sensitive data exposure (CWE-200).\n- Masked all provider API keys in the `GET \u002Fconfig` response payload to prevent accidental credential leakage.\n- Replaced `exec`\u002Fshell commands in the Obsidian route with native `fs` APIs, fully eliminating shell injection vectors (CWE-78).\n- Added path-confinement validation ensuring resolved file paths remain within their intended target directories, blocking path traversal attacks (CWE-22).\n","2026-03-06T17:27:49",{"id":232,"version":233,"summary_zh":234,"released_at":235},136669,"v1.4.430","## Changes\n\n### PR [#2044](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2044) by [PrakharMNNIT](https:\u002F\u002Fgithub.com\u002FPrakharMNNIT) and [ksylvan](https:\u002F\u002Fgithub.com\u002Fksylvan): feat: Add Bedrock bearer token (ABSK) authentication and guided setup\n\n- Adds 3-tier authentication for AWS Bedrock: bearer token (ABSK), static AWS credentials (access key + secret key), and the default AWS credential chain.\n- Introduces a custom guided setup flow covering auth method selection, region, and model configuration.\n- Removes the `hasAWSCredentials()` gate so that Bedrock always appears in the setup wizard.\n- Applies a temperature-only fix (no `top_p`) for Claude models running on Bedrock, along with API key masking during re-setup.\n- Adds a fallback model list for when the `ListFoundationModels` API is inaccessible, i18n support for 11 locales (3 new keys each), and 25 unit tests.\n\n### PR [#2047](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2047) by [bvandevliet](https:\u002F\u002Fgithub.com\u002Fbvandevliet): Explicitly instruct YT summary task to be aware of possible transcription errors\n\n- Added one line to make YT summary task explicitly aware of possible transcript typos.\n","2026-03-06T15:20:51",{"id":237,"version":238,"summary_zh":239,"released_at":240},136670,"v1.4.429","## Changes\n\n### PR [#2046](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2046) by [ksylvan](https:\u002F\u002Fgithub.com\u002Fksylvan): refactor: add `GetRaw` method to encapsulate raw pattern loading logic\n\n- Add `GetRaw` method to `PatternsEntity` for unprocessed pattern retrieval\n- Replace inline raw pattern loading logic in server handler with `GetRaw`\n- Remove manual `Pattern` struct construction from `PatternsHandler.Get`\n- Simplify server handler by delegating storage access to database layer\n- Add test coverage for `GetRaw` with custom patterns directory\n","2026-03-05T20:52:27",{"id":242,"version":243,"summary_zh":244,"released_at":245},136671,"v1.4.428","## Changes\n\n### PR [#2040](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2040) by [Twozee-Tech](https:\u002F\u002Fgithub.com\u002FTwozee-Tech): Add Polish (pl) locale\n\n- Add Polish (pl) locale with a complete translation file containing all 683 keys, matching the structure of existing locale files in `internal\u002Fi18n\u002Flocales\u002F`.\n","2026-03-02T14:44:43",{"id":247,"version":248,"summary_zh":249,"released_at":250},136672,"v1.4.427","## Changes\n\n### PR [#2038](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2038) by [ksylvan](https:\u002F\u002Fgithub.com\u002Fksylvan): Add Git CLI Fallback to `FetchFilesFromRepo`\n\n- Feat: add git CLI fallback to `FetchFilesFromRepo` for improved compatibility\n- Add git CLI fallback when go-git in-memory clone fails, with detection via `exec.LookPath`\n- Implement `fetchFilesViaGitCLI` using a shallow `--depth 1` clone into a temp directory with deferred cleanup\n- Respect `SingleDirectory` and `PathPrefix` options in the CLI path, and surface a combined error when both go-git and CLI fallback fail\n- Extract `fetchFilesViaGoGit` into a dedicated helper function and add a `copyFile` helper to support CLI-based file extraction\n","2026-03-01T02:17:06",{"id":252,"version":253,"summary_zh":254,"released_at":255},136673,"v1.4.426","## Changes\n\n### PR [#2036](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2036) by [ksylvan](https:\u002F\u002Fgithub.com\u002Fksylvan): WebUI: YouTube URL Processing Refactor & Dependency Updates\n\n- Feat: Inline YouTube transcripts into the chat flow, replacing YouTube URLs with fetched transcript blocks and supporting multiple links per message\n- Feat: Always render the user message before processing the response, with a YouTube-specific loading indicator displayed during transcript fetch\n- Fix: Reset YouTube URL state after submission processing to prevent stale data across messages\n- Chore: Upgrade SvelteKit, Svelte, Tailwind, and TypeScript toolchain versions, along with bumped `pdfjs-dist` and `@napi-rs\u002Fcanvas` optional dependency versions\n- Chore: Regenerate `pnpm`\u002F`npm` lockfiles to reflect updated transitive dependencies\n","2026-02-28T23:44:47",{"id":257,"version":258,"summary_zh":259,"released_at":260},136674,"v1.4.425","## Changes\n\n### PR [#2033](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2033) by [dependabot](https:\u002F\u002Fgithub.com\u002Fapps\u002Fdependabot) and [ksylvan](https:\u002F\u002Fgithub.com\u002Fksylvan): Web UI: Dependabot upgrades and bug fixes\n\n- Update Svelte to version 5.53.5 and upgrade @sveltejs\u002Fvite-plugin-svelte to 4.0.0, keeping core dependencies current\n- Upgrade Rollup to version 4.59.0 and lucide-svelte to version 0.575.0 for improved bundling and iconography support\n- Replace custom npm and pnpm install scripts with a standardized postinstall script for svelte-kit sync, simplifying the setup process\n- Fix self-closing tags in Svelte components and update transcript joining to use newlines, resolving rendering and formatting issues\n- Make the `cleanPatternOutput` method public in `ChatService` and remove the `svelte-markdown` dependency, reducing bundle size and improving API accessibility\n\n### PR [#2034](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2034) by [konstantint](https:\u002F\u002Fgithub.com\u002Fkonstantint) and [ksylvan](https:\u002F\u002Fgithub.com\u002Fksylvan): feat: add create_slides pattern\n\n- Add new `create_slides` pattern for generating Reveal.js HTML slideshows\n- Register `create_slides` across CONVERSION, VISUALIZE, and WRITING categories\n- Add `create_slides` to the pattern explanations index and `suggest_pattern` user guide\n- Insert `create_slides` entry into `pattern_descriptions.json` and `pattern_extracts.json` with relevant tags\n- Shift pattern numbering from 97 onward to accommodate the new entry\n","2026-02-28T17:58:22",{"id":262,"version":263,"summary_zh":264,"released_at":265},136675,"v1.4.424","## Changes\n\n### PR [#2025](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2025) by [dependabot]](https:\u002F\u002Fgithub.com\u002Fapps\u002Fdependabot): chore(deps): bump the npm_and_yarn group across 1 directory with 5 updates\n\n- Updated `@sveltejs\u002Fkit` from version 2.49.5 to 2.53.1 in the `\u002Fweb` directory.\n- Updated `svelte` from version 4.2.20 to 5.51.5 in the `\u002Fweb` directory.\n- Updated `ajv` from version 6.12.6 to 6.14.0 in the `\u002Fweb` directory.\n- Updated `devalue` from version 5.6.2 to 5.6.3 in the `\u002Fweb` directory.\n- Updated `minimatch` from version 3.1.2 to 3.1.4 in the `\u002Fweb` directory.\n","2026-02-27T04:19:38",{"id":267,"version":268,"summary_zh":269,"released_at":270},136676,"v1.4.423","## Changes\n\n### PR [#2032](https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric\u002Fpull\u002F2032) by [ksylvan](https:\u002F\u002Fgithub.com\u002Fksylvan): Refactor: Consolidate `NeedsRawMode` Default Implementation into `PluginBase`\n\n- Refactor: move `NeedsRawMode` default implementation to `PluginBase`\n- Add default `NeedsRawMode` method to shared `PluginBase` struct\n- Remove redundant `NeedsRawMode` implementations across all AI vendor plugins\n- Consolidate default `false` return logic into single base plugin method\n- Clean up duplicate boilerplate from anthropic, bedrock, copilot, gemini plugins\n","2026-02-26T20:59:25"]