From 222cefbd58d5bb950ddba1421e9163e20d4d2a54 Mon Sep 17 00:00:00 2001
From: tukuaiai
Date: Thu, 18 Dec 2025 13:22:45 +0800
Subject: [PATCH] refactor: Remove libs directory
---
README.md | 1 +
libs/README.md | 71 -
libs/common/README.md | 40 -
libs/common/__init__.py | 1 -
libs/common/models/__init__.py | 1 -
libs/common/utils/backups/README.md | 53 -
libs/common/utils/backups/一键备份.sh | 83 -
libs/common/utils/backups/快速备份.py | 265 -
libs/database/.gitkeep | 1 -
libs/database/README.md | 24 -
libs/external/.gitkeep | 1 -
libs/external/MCPlayerTransfer | 1 -
libs/external/README.md | 37 -
.../XHS-image-to-PDF-conversion/README.md | 176 -
.../XHS-image-to-PDF-conversion/pdf.bat | 2 -
.../XHS-image-to-PDF-conversion/pdf.py | 195 -
.../requirements.txt | 1 -
libs/external/chat-vault/.env.example | 11 -
libs/external/chat-vault/.gitignore | 28 -
libs/external/chat-vault/LICENSE | 21 -
libs/external/chat-vault/README.md | 318 -
libs/external/chat-vault/README_CN.md | 311 -
libs/external/chat-vault/build.bat | 15 -
libs/external/chat-vault/build.py | 40 -
libs/external/chat-vault/docs/AI_PROMPT.md | 231 -
libs/external/chat-vault/docs/roadmap.md | 15 -
libs/external/chat-vault/docs/schema.md | 49 -
libs/external/chat-vault/requirements.txt | 3 -
libs/external/chat-vault/scripts/sync.sh | 3 -
libs/external/chat-vault/scripts/watch.sh | 3 -
libs/external/chat-vault/src/config.py | 69 -
libs/external/chat-vault/src/logger.py | 42 -
libs/external/chat-vault/src/main.py | 319 -
.../chat-vault/src/parsers/__init__.py | 7 -
libs/external/chat-vault/src/parsers/base.py | 24 -
.../external/chat-vault/src/parsers/claude.py | 54 -
libs/external/chat-vault/src/parsers/codex.py | 70 -
.../external/chat-vault/src/parsers/gemini.py | 40 -
libs/external/chat-vault/src/parsers/kiro.py | 75 -
libs/external/chat-vault/src/storage.py | 246 -
libs/external/chat-vault/src/watcher.py | 44 -
libs/external/chat-vault/start.bat | 7 -
libs/external/chat-vault/start.sh | 7 -
libs/external/l10n-tool/README.md | 34 -
libs/external/l10n-tool/bulk_translate.py | 140 -
.../l10n-tool/chinese_files_list.json | 195 -
.../l10n-tool/path_translation_map.json | 163 -
libs/external/l10n-tool/requirements.txt | 1 -
libs/external/l10n-tool/translate.py | 90 -
libs/external/l10n-tool/translate_files.py | 182 -
libs/external/my-nvim/README.md | 200 -
libs/external/my-nvim/nvim-config/LICENSE | 201 -
libs/external/my-nvim/nvim-config/README.md | 200 -
libs/external/my-nvim/nvim-config/init.lua | 2 -
.../my-nvim/nvim-config/lazy-lock.json | 36 -
.../external/my-nvim/nvim-config/lazyvim.json | 10 -
.../nvim-config/lua/config/autocmds.lua | 25 -
.../nvim-config/lua/config/keymaps.lua | 3 -
.../my-nvim/nvim-config/lua/config/lazy.lua | 55 -
.../nvim-config/lua/config/options.lua | 3 -
.../nvim-config/lua/plugins/colorscheme.lua | 13 -
.../nvim-config/lua/plugins/dracula.lua | 34 -
.../nvim-config/lua/plugins/example.lua | 197 -
.../my-nvim/nvim-config/lua/plugins/ui.lua | 70 -
.../nvim-config/lua/themes/dracula.lua | 60 -
libs/external/my-nvim/nvim-config/nvim | Bin 11020792 -> 0 bytes
libs/external/my-nvim/nvim-config/stylua.toml | 3 -
.../my-nvim/nvim-config/theme-previewer.lua | 92 -
.../my-nvim/nvim-config/theme-switcher.lua | 159 -
libs/external/prompts-library/.gitignore | 38 -
libs/external/prompts-library/README.md | 250 -
.../prompts-library/docs/excel-data.md | 18520 --------
libs/external/prompts-library/docs/support.md | 38 -
libs/external/prompts-library/docs/tools.md | 35 -
.../external/prompts-library/docs/开发文档.md | 1347 -
.../docs/提示词库结构与 Excel 互转规范.md | 127 -
libs/external/prompts-library/main.py | 274 -
.../prompt_docs_2025_1213_080256/README.md | 228 -
.../docs/excel-data.md | 35035 ----------------
.../docs/support.md | 35 -
.../docs/tools.md | 191 -
...词的迭代版本(如提示词1a、提示词1b、提示词1c_等),体现每一类提示.md | 1 -
.../prompts/(1)_说明/(3,1)_提示词1a.md | 1 -
.../prompts/(1)_说明/(3,2)_提示词1a.md | 1 -
.../prompts/(1)_说明/(3,3)_提示词1a.md | 1 -
.../prompts/(1)_说明/(33,1)_贡献者名单.md | 1 -
.../prompts/(1)_说明/(34,1)_狗神.md | 1 -
.../prompts/(1)_说明/(36,1)_天空.md | 1 -
.../prompts/(1)_说明/(37,1)_金狗.md | 1 -
.../prompts/(1)_说明/(39,1)_耄鑫覺囉.md | 1 -
.../prompts/(1)_说明/(4,1)_提示词2a.md | 1 -
.../prompts/(1)_说明/(4,2)_提示词2a.md | 1 -
.../prompts/(1)_说明/(41,1)_kirt.md | 1 -
.../prompts/(1)_说明/(6,1)_提示词ya.md | 1 -
.../(1)_说明/(8,1)_提示词相关链接和资源.md | 1 -
.../prompts/(1)_说明/index.md | 70 -
.../(1,1)_#_Role:智能文本排版助手.md | 84 -
.../prompts/(10)_排版/index.md | 30 -
...提取视觉风格信息,并将结果以严格有效的_JSON_格式输出。.md | 40 -
.../prompts/(11)_工作表112/index.md | 30 -
...我的专家助理,运用你所有的推理和知识。请始终提供:.md | 8 -
.../(2,1)_From_now_on,_act_as_my.md | 12 -
.../(3,1)_#_System_Instruction.md | 15 -
.../prompts/(12)_Reddit提示词/index.md | 38 -
...ler,hype,soft_asks,conversational_trans.md | 1 -
...则以严格、务实、坦诚且高标准的专业顾问角色进行.md | 19 -
.../(3,1)_#_System_Instruction.md | 15 -
...,请用傻子都能懂的语言详细给我讲一下这篇论文文献资料怎么做的,特别.md | 1 -
.../prompts/(13)_ChatGPT/index.md | 42 -
...使命将学术论文转译为大众可理解、共鸣且启发性的科普文章。,工作流程{.md | 1 -
.../prompts/(14)_论文解读/index.md | 30 -
...、最重要的核心理解、洞察、启示、启发、经验、原理(数量依据内容密度.md | 1 -
...、最重要的核心理解、洞察、启示、启发、经验、原理(数量依据内容密度.md | 1 -
.../prompts/(15)_内容提炼/index.md | 34 -
...器,role语言教学与创意写作专家,goal将用户输入的中文文本转换.md | 1 -
.../prompts/(16)_英文学习/index.md | 30 -
...是一位具备系统思维与认知科学背景的决策分析专家,精通_Cynefin.md | 1 -
.../prompts/(17)_问题分类识别/index.md | 30 -
...计助手,🎯角色定位你是一名极度人性化的产品前端设计专家。任务是:为“最糟.md | 1 -
.../prompts/(18)_用户优化前端设计/index.md | 30 -
...我识别和学习这个领域的最少必要知识(MAKE)。,结构{1.核心概念地图{.md | 1 -
.../prompts/(19)_最小知识框架/index.md | 30 -
.../(2)_元提示词/(1,1)_instructions.md | 22 -
.../(10,1)_###_提示词约束_(Constraints).md | 93 -
.../(10,3)_###_提示词约束_(Constraints).md | 87 -
.../(10,4)_###_提示词约束_(Constraints).md | 95 -
.../(2)_元提示词/(11,1)_#_提示词工程师.md | 110 -
.../(12,1)_###_自然语言提示词转JSON结构提示词.md | 79 -
.../(12,2)_###_自然语言提示词转JSON结构提示词.md | 197 -
.../(12,3)_###_自然语言提示词转JSON结构提示词.md | 203 -
.../(2)_元提示词/(13,1)_#_角色_(Role).md | 114 -
.../(2)_元提示词/(14,1)_#_RolePrompt工程师.md | 106 -
.../(2)_元提示词/(14,2)_#_RolePrompt工程师.md | 106 -
.../(15,1)_我让LLM生成并评估我的提示:.md | 11 -
.../(15,2)_我让LLM生成并评估我的提示:.md | 147 -
.../(16,1)_请按如下设定更新你的system_prompt:.md | 18 -
.../(2)_元提示词/(17,1)_#_RolePrompt工程师.md | 105 -
...优化专家。请帮我优化以下prompt,并按照以下格式返回:.md | 92 -
...优化专家。请帮我优化以下prompt,并按照以下格式返回:.md | 61 -
...示工程专家,请仔细阅读我提供的【初始提示词】,并从清晰度、专业度、结.md | 1 -
...示工程专家,请仔细阅读我提供的【初始提示词】,并从清晰度、专业度、结.md | 11 -
.../(20,1)_#_Role_结构化提示词转换专家.md | 86 -
...版:好的,请把你的提示词(Prompt)内容发给我。.md | 76 -
...析、扩展与补充器_(Prompt_Intent_Analyzer,_Expander.md | 65 -
.../(2)_元提示词/(23,1)_#_提示词的基本结构.md | 91 -
.../(24,1)_#_分享一个把LLM算力榨干的prompt.md | 148 -
.../(2)_元提示词/(25,1)_#_提示词的基本结构.md | 91 -
...,任务接收用户提供的[初始提示词],并将其重构为一个严格遵循_KE.md | 1 -
.../prompts/(2)_元提示词/(4,1)_提示词模版.md | 15 -
.../(5,1)_#_提示词工程结构框架.md | 348 -
.../(2)_元提示词/(6,2)_#_PARE_提示工程.md | 32 -
...用你自己的话向我重复这一点,并提出澄清问题。确认后,生成最终优化的.md | 1 -
...用你自己的话向我重复这一点,并提出澄清问题。确认后,生成最终优化的.md | 62 -
..._PARE框架提示词生成器_v3.0_-_双层标准化版本.md | 1020 -
.../(2)_元提示词/(9,1)_###_自我检查.md | 18 -
.../prompts/(2)_元提示词/index.md | 126 -
...1)_{提示词🎭_Expert_Persona_Prompt_Template_—.md | 1 -
.../prompts/(20)_学习用提示词/index.md | 30 -
...n用户提供的一条未经验证的信息或高热度说法。.md | 1 -
.../prompts/(21)_事实核查/index.md | 30 -
...学科知识系统架构专家、认知模型工程师与语义结构设计师。n你的任务是.md | 1 -
.../prompts/(22)_关键词图谱/index.md | 30 -
...t#_Tractatus_Engine_哲学语言分析系统nn###_🧠.md | 1 -
.../prompts/(23)_语言分析元prompt/index.md | 30 -
...分析提示词系统,contentUniversal_Wittgensteinian.md | 1 -
.../prompts/(24)_逻辑分析/index.md | 30 -
...容策划专家,擅长用最简洁的语言提炼任何内容的核心价值和吸引.md | 1 -
...容策划专家,擅长用最简洁的语言提炼任何内容的核心价值和吸引.md | 1 -
...容策划专家,擅长用最简洁的语言提炼任何内容的核心价值和吸引.md | 1 -
.../prompts/(25)_一句话描述任何内容/index.md | 30 -
...行压缩JSON格式(Minified_JSON)。要求:1)移除所有换行符和多余.md | 1 -
...行压缩JSON格式(Minified_JSON)。要求:1)移除所有换行符和多余.md | 1 -
...行压缩JSON格式(Minified_JSON)。要求:1)移除所有换行符和多余.md | 1 -
.../prompts/(26)_输入转单行JSON/index.md | 30 -
...问题,如无必要,勿增实体,最小化信息熵,不省略关键信息,不歪曲原意,保持.md | 1 -
...问题,如无必要,勿增实体,最小化信息熵,不省略关键信息,不歪曲原意,保持.md | 1 -
...问题,如无必要,勿增实体,最小化信息熵,不省略关键信息,不歪曲原意,保持.md | 1 -
.../prompts/(27)_最小字数系统提示词/index.md | 30 -
.../(28)_需求对齐/(1,1)_#_GPT-5提问模板.md | 26 -
.../(28)_需求对齐/(1,2)_#_GPT-5提问模板.md | 47 -
.../prompts/(28)_需求对齐/index.md | 30 -
..._“声明式配置(declarative_configuration)”。.md | 14 -
.../prompts/(29)_编程知识库/index.md | 30 -
...母救父救未婚妻和岳父岳母日记_×_OTE模型交易模式_×.md | 56 -
.../prompts/(3)_交易提示词/index.md | 30 -
.../(30)_提示词模块/(1,1)_###_通用模块.md | 18 -
.../(30)_提示词模块/(1,2)_###_通用模块.md | 18 -
.../(30)_提示词模块/(1,3)_###_通用模块.md | 25 -
.../(30)_提示词模块/(1,4)_###_通用模块.md | 26 -
.../(30)_提示词模块/(1,5)_###_通用模块.md | 34 -
.../(30)_提示词模块/(10,1)_###_分析对象.md | 3 -
...、废话、炒作、委婉请求、对话过渡、附加的行动号召。.md | 11 -
...、废话、炒作、委婉请求、对话过渡、附加的行动号召。.md | 11 -
.../(3,1)_###_提示词约束_(Constraints).md | 273 -
.../(30)_提示词模块/(4,1)_###_角色定义.md | 5 -
.../(30)_提示词模块/(5,1)_###_资源分配.md | 5 -
..._###_核心思维框架_(Core_Thinking_Frameworks).md | 33 -
...行流程_(Action_Protocol_Step-by-Step_Execution).md | 30 -
...与分析要求_(Reasoning_&_Analysis_Requirements).md | 14 -
...,1)_###_语言与表达_(Language_&_Presentation).md | 9 -
.../prompts/(30)_提示词模块/index.md | 66 -
...如下nn【故事框架】n采用困境-挣扎-转折-新生-总结五段式结构nn【开.md | 1 -
.../prompts/(31)_x爆款文案生成器/index.md | 30 -
.../(1,1)_10个_Grok_4_股票交易自动化提示:.md | 70 -
.../(10,1)_撰写长篇报告和白皮书.md | 21 -
.../(11,1)_即时创意验证引擎.md | 21 -
.../(12,1)_像顶级分析师一样总结长报告和PDF.md | 23 -
.../(2,1)_AI现在可以在24小时内为你构建一个企业.md | 59 -
.../(3,1)_自动化研究报告(比10万美元的顾问还牛).md | 14 -
.../(4,1)_无代码构建交互工具和应用.md | 19 -
.../(5,1)_从纯文本生成信息图.md | 19 -
.../(6,1)_创建麦肯锡风格的网页演示.md | 17 -
.../(7,1)_替代你的导师.md | 18 -
.../(8,1)_内容创作:通讯、长推、YouTube脚本.md | 18 -
.../(9,1)_战略决策辅助.md | 17 -
.../(32)_grok商业金融分析提示词/index.md | 74 -
...#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md | 46 -
...#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md | 110 -
...#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md | 329 -
...#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md | 48 -
...#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md | 47 -
...#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md | 78 -
...#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md | 53 -
...#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md | 64 -
...#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md | 78 -
...#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md | 81 -
...#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md | 155 -
..._#_目标:将纯文本内容转化为结构化的_Markdown_文本.md | 42 -
...ole:精通Markdown语法和中文排版规范的文本处理专家.md | 61 -
...ole:精通Markdown语法和中文排版规范的文本处理专家.md | 69 -
.../(4,1)_#_ocr数据清理专家.md | 60 -
.../(33)_文本转md语法电子书处理/index.md | 42 -
...杰出的AI通识讲师,擅长带领0基础学生由浅入深了解AI.md | 17 -
.../prompts/(34)_ai学习用提示词/index.md | 30 -
...(1,1)_#_「真传一句话,假传万卷书」分析提示词.md | 70 -
.../prompts/(35)_真传一句话/index.md | 30 -
.../(36)_需求结构化描述/(1,1)_#_角色与任务.md | 68 -
.../prompts/(36)_需求结构化描述/index.md | 30 -
.../(37)_学习提示词/(1,1)_#_英文单词学习.md | 97 -
.../(10,1)_####_#_角色:全能学习导师.md | 56 -
...识,只输出结果,不要序号,不要任何处除结果之外的任何废话.md | 19 -
...理和理解,可以采用一种分层、结构化、富含元信息的方法。这种结构不仅帮.md | 82 -
...理和理解,可以采用一种分层、结构化、富含元信息的方法。这种结构不仅帮.md | 69 -
.../(37)_学习提示词/(13,1)_常识学习.md | 3 -
.../(37)_学习提示词/(14,1)_一段了解.md | 3 -
.../(37)_学习提示词/(15,1)_一段话学习.md | 3 -
...定的内容(或问题),识别并提取其中未明确表达但支撑其逻辑的隐性知识、.md | 21 -
...可能性引擎_(Unlimited_Possibility_Architect).md | 76 -
...析、扩展与补充器_(Prompt_Intent_Analyzer,_Expander.md | 65 -
...,1)_##_任务:启发式概念解释_-_触发“恍然大悟”.md | 41 -
...,2)_##_任务:启发式概念解释_-_触发“恍然大悟”.md | 1 -
...子或类比来解释概念,使抽象概念思想变得易于理解。.md | 1 -
.../(37)_学习提示词/(20,1)_##_角色:.md | 44 -
.../(37)_学习提示词/(20,2)_##_角色:.md | 44 -
.../(37)_学习提示词/(20,3)_##_角色:.md | 98 -
...供精彩解释的教育者。制作一个表格,列出理解你的领域所需的核心概念。.md | 5 -
...请告诉我:如果我不读_{书名}_,我会损失什么?.md | 1 -
...告诉我:如果我不知道_{概念}_,我会损失什么?.md | 1 -
...请告诉我:如果我不懂_{学科}_,我会损失什么?.md | 1 -
...过“精通某个思想体系”来探索认知结构、思维方式与行动方式的变化。.md | 40 -
...提供一个哲学概念、流派、人物、术语或问题,你将以如下结构进行解释:.md | 21 -
...{用户输入的主题}」的经典书籍,并用“大段落式读薄”的方式进行讲解。每.md | 13 -
...{用户输入的主题}」的经典书籍,并用“大段落式读薄”的方式进行讲解。每.md | 15 -
...{用户输入的主题}」的经典书籍,并用“大段落式读薄”的方式进行讲解。每.md | 32 -
...{用户输入的主题}」的经典书籍,并用“大段落式读薄”的方式进行讲解。每.md | 36 -
...以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md | 58 -
...以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md | 49 -
...以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md | 49 -
...以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md | 53 -
...以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md | 53 -
...以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md | 59 -
...以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md | 60 -
...以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md | 62 -
...以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md | 63 -
...以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md | 64 -
...以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md | 65 -
...以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md | 65 -
...以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md | 49 -
...1)_#_用这个方法学习新领域,效率直接翻倍!_🚀.md | 39 -
.../(4,1)_#_全维度概念分析专家.md | 407 -
.../(4,2)_#_全维度概念分析专家.md | 429 -
.../(4,3)_#_全维度概念分析专家.md | 176 -
.../(5,1)_#_英文单词发音科普格式生成器.md | 137 -
.../(37)_学习提示词/(6,1)_#_学术论文解析.md | 90 -
.../(7,1)_#_全景式知识结构枚举器.md | 137 -
.../(8,1)_#_指定对象相关元素分析专家提示词.md | 130 -
...生成任意对象的结构化JSON知识报告_(终版自定义顺序).md | 297 -
.../prompts/(37)_学习提示词/index.md | 138 -
.../(1,1)_#_System_Prompt:.md | 34 -
.../prompts/(38)_系统提示词/index.md | 30 -
.../(1,1)_#_Role_智能文本排版助手.md | 67 -
.../(2,1)_###_1._角色定义_(Role).md | 81 -
.../(3,1)_#_文本格式处理提示词.md | 41 -
.../(4,1)_#_Role_智能文本排版助手.md | 67 -
.../(39)_排版和图片,视频转文本/index.md | 42 -
..._项目上下文文档生成_·_工程化_Prompt(专业优化版).md | 148 -
..._(Principal_Software_Architect),专注于构建[高性能__可维护.md | 1 -
...nn目标:当用户启动一个新项目或请求AI帮助开发功能时,你必须优先帮助用.md | 1 -
...理解、描述我当前正在进行的任务,自动识别缺少的要素、未完善的部分、可能.md | 1 -
...理解、描述我当前正在进行的任务,自动识别缺少的要素、未完善的部分、可能.md | 1 -
.../(13,1)_#_提示工程师任务说明.md | 40 -
...################################################.md | 402 -
...################################################.md | 1 -
.../(15,1)_###_Claude_Code_八荣八耻.md | 18 -
.../(16,1)_#_CLAUDE_记忆.md | 325 -
.../(16,2)_#_CLAUDE_记忆.md | 364 -
.../(16,3)_#_CLAUDE_记忆.md | 1 -
.../(17,1)_#_软件工程分析.md | 100 -
.../(17,2)_#_软件工程分析.md | 1 -
.../(18,1)_#_通用项目架构综合分析与优化框架.md | 148 -
.../(18,2)_#_通用项目架构综合分析与优化框架.md | 1 -
.../(19,1)_##_角色定义.md | 179 -
...hink_ultrathink_ultrathink_ultrathink_ultrathink.md | 191 -
.../(20,1)_#_高质量代码开发专家.md | 157 -
...求。请你将其转换为一个结构化、专业、详细、可执行的编程任务说明文档,输出.md | 76 -
...方案搞得很沮丧,里面有一大堆我不需要的“万一”功能。然后我尝试在我的.md | 18 -
...方案搞得很沮丧,里面有一大堆我不需要的“万一”功能。然后我尝试在我的.md | 77 -
...方案搞得很沮丧,里面有一大堆我不需要的“万一”功能。然后我尝试在我的.md | 23 -
...方案搞得很沮丧,里面有一大堆我不需要的“万一”功能。然后我尝试在我的.md | 69 -
...方案搞得很沮丧,里面有一大堆我不需要的“万一”功能。然后我尝试在我的.md | 69 -
.../(3,1)_#_流程标准化.md | 28 -
.../(4,1)_ultrathink__Take_a_deep_breath..md | 249 -
..._智能需求理解与研发导航引擎(Meta_R&D_Navigator_·.md | 1 -
...提示词:AI_Prompt_编程语言约束与持久化记忆规范nn##.md | 1 -
.../(7,1)_#_AI生成代码文档_-_通用提示词模板.md | 504 -
..._执行📘_文件头注释规范(用于所有代码文件最上方).md | 38 -
...师_(Principal_Software_Architect)(高性能、可维护、健壮、DD.md | 1 -
.../index.md | 114 -
.../prompts/(40)_子弹总结/(1,1)_#_子弹总结.md | 84 -
.../prompts/(40)_子弹总结/(1,2)_#_子弹总结.md | 92 -
.../prompts/(40)_子弹总结/(1,3)_#_子弹总结.md | 93 -
.../prompts/(40)_子弹总结/index.md | 30 -
...同时是一个「对话式学习」的过程,非常像以前孔子与七十二门徒的那种.md | 3 -
.../prompts/(41)_x提示词收集/index.md | 30 -
..._“整本书到精通”_AI知识提取系统提示词(优化版).md | 256 -
..._“整本书到精通”_AI知识提取系统提示词(优化版).md | 304 -
..._“整本书到精通”_AI知识提取系统提示词(优化版).md | 306 -
..._“整本书到精通”_AI知识提取系统提示词(优化版).md | 286 -
..._“整本书到精通”_AI知识提取系统提示词(优化版).md | 293 -
..._“整本书到精通”_AI知识提取系统提示词(优化版).md | 293 -
..._“整本书到精通”_AI知识提取系统提示词(优化版).md | 293 -
..._整本书到精通_AI知识提取系统提示词(自动化用).md | 296 -
.../prompts/(42)_书籍结构化分析/index.md | 34 -
.../(43)_组织语言/(1,1)_#_智能表达优化助手.md | 82 -
.../prompts/(43)_组织语言/index.md | 30 -
.../(1,1)_#_📊_行业深度调研提示词_-_一体化版本.md | 64 -
.../(2,1)_📊_行业调研三步走提示词模板.md | 67 -
.../prompts/(44)_行业分析/index.md | 34 -
.../prompts/(45)_投资调研/(1,1)_#_角色设定.md | 90 -
.../prompts/(45)_投资调研/(1,2)_#_角色设定.md | 122 -
.../prompts/(45)_投资调研/index.md | 30 -
.../(1,1)_#_学科知识框架构建与概念解析.md | 128 -
.../prompts/(46)_速成学习/index.md | 30 -
.../(1,1)_#_批判性思维分析.md | 141 -
.../(2,1)_#_Critical_Thinking_Analysis.md | 141 -
.../prompts/(47)_批判性思维分析/index.md | 34 -
.../(1,1)_#_序列图生成专家提示词.md | 61 -
.../(1,2)_#_序列图生成专家提示词.md | 37 -
.../(2,1)_#_角色与目标_(Role_and_Goal).md | 78 -
.../(2,2)_#_角色与目标_(Role_and_Goal).md | 34 -
.../prompts/(48)_序列图生成/index.md | 34 -
.../(1,1)_#_Role_无限可能性引擎.md | 76 -
.../prompts/(49)_对话提问/index.md | 30 -
.../(1,1)_#_临界知识系统提示词.md | 118 -
.../prompts/(5)_临界知识/index.md | 30 -
...1,1)_#_📚_概念到精通_AI深度知识分析系统提示词.md | 1392 -
...1,2)_#_📚_概念到精通_AI深度知识分析系统提示词.md | 398 -
...1,3)_#_📚_概念到精通_AI深度知识分析系统提示词.md | 1392 -
...1,4)_#_📚_概念到精通_AI深度知识分析系统提示词.md | 290 -
.../(2,1)_###_概念分析超级框架.md | 1038 -
.../(50)_层级结构分析/(3,1)_##_角色定义.md | 120 -
.../(50)_层级结构分析/(3,2)_##_角色定义.md | 243 -
...优化后的提示词_(V2_-_Top-Down_Deconstruction).md | 119 -
...优化后的提示词_(V2_-_Top-Down_Deconstruction).md | 212 -
...优化后的提示词_(V2_-_Top-Down_Deconstruction).md | 214 -
...优化后的提示词_(V2_-_Top-Down_Deconstruction).md | 228 -
...优化后的提示词_(V2_-_Top-Down_Deconstruction).md | 345 -
...优化后的提示词_(V2_-_Top-Down_Deconstruction).md | 363 -
...优化后的提示词_(V2_-_Top-Down_Deconstruction).md | 371 -
...优化后的提示词_(V2_-_Top-Down_Deconstruction).md | 399 -
...优化后的提示词_(V2_-_Top-Down_Deconstruction).md | 435 -
.../prompts/(50)_层级结构分析/index.md | 42 -
.../(1,1)_#_经文口诀创作师_-_提示词.md | 84 -
.../prompts/(51)_心经口诀创作提示词/index.md | 30 -
.../prompts/(52)_SOP制作/(1,1)_##_角色定义.md | 95 -
.../prompts/(52)_SOP制作/index.md | 30 -
.../(53)_黄金圈解释/(1,1)_#_概念三层解释器.md | 31 -
.../(53)_黄金圈解释/(1,2)_#_概念三层解释器.md | 37 -
.../(53)_黄金圈解释/(1,3)_#_概念三层解释器.md | 51 -
.../prompts/(53)_黄金圈解释/index.md | 30 -
.../(54)_需求解析/(1,1)_##_角色定义.md | 76 -
.../prompts/(54)_需求解析/index.md | 30 -
.../(1,1)_##_NotebookLM_音频概览自定义提示词.md | 36 -
.../(1,2)_##_NotebookLM_音频概览自定义提示词.md | 78 -
.../(2,1)_#_深度学习书籍全维度分析提示词.md | 247 -
.../(2,2)_#_深度学习书籍全维度分析提示词.md | 353 -
.../(2,3)_#_深度学习书籍全维度分析提示词.md | 115 -
...okLM_深度书籍分析提示词(自定义音频预览用).md | 88 -
.../prompts/(55)_notebookllm用提示词/index.md | 38 -
.../(1,1)_#_Mom_Test_提示词优化专家.md | 117 -
.../prompts/(56)_好prompt生成器/index.md | 30 -
...度和经验的杰出行业资深人士…你见证了多个市场的兴衰,经历过一些巨大的.md | 83 -
.../prompts/(57)_行业咨询/index.md | 30 -
...为我生成一份关于_[在此插入任意主题]_的核心方法论清单。.md | 23 -
...为我生成一份关于_[在此插入任意主题]_的核心方法论清单。.md | 9 -
...为我生成一份关于_[在此插入任意主题]_的核心方法论清单。.md | 29 -
...的实事或者社会观点类推文,然后丢给Gemini_2.5_pro.md | 25 -
.../prompts/(58)_分析/index.md | 34 -
.../(1,1)_怎么觉得分享prompt才是真分享?.md | 7 -
.../prompts/(59)_gemini字幕处理/index.md | 30 -
...wilson,修改时间今天修改},角色你是一位顶级的提示词工程专家_(P.md | 1 -
.../prompts/(6)_根据内容逆向提示词/index.md | 30 -
.../(60)_政治批判工具箱/(1,1)_#_批斗大师.md | 38 -
.../(60)_政治批判工具箱/(1,2)_#_批斗大师.md | 48 -
.../(2,1)_###_智能政治批判檄文生成器.md | 89 -
.../(2,2)_###_智能政治批判檄文生成器.md | 54 -
.../(2,3)_###_智能政治批判檄文生成器.md | 54 -
.../(3,1)_#_Role:官方指控报告生成器.md | 170 -
.../prompts/(60)_政治批判工具箱/index.md | 38 -
...1,1)_#_Role:首席推特串文架构师_(柴郡风格专项).md | 366 -
.../(2,1)_#_推文生成器提示词_-_介绍提示词作品.md | 42 -
.../prompts/(61)_推文制作提示词/index.md | 34 -
.../(1,1)_#_麦肯锡行业洞察分析专家.md | 193 -
.../prompts/(62)_麦肯锡行业分析/index.md | 30 -
.../(1,1)_#_Role:正向人物生平报告官方文案撰写师.md | 75 -
.../(63)_正向人物生平报告官方文案/index.md | 30 -
...ERNAME}_的时间线中,检索并筛选自_2024-01-01T000000Z.md | 30 -
.../prompts/(64)_grok抓取提示词/index.md | 30 -
...。你的核心任务是,基于我刚刚上传的视频文件,对其进行分镜解构,并为每.md | 16 -
...详细版:可迁移的“自动组装”视频生成提示词工程模板.md | 136 -
.../prompts/(65)_视频生成提示词/index.md | 34 -
.../(1,1)_#_自然中文写作提示词.md | 58 -
.../prompts/(66)_人话写作/index.md | 30 -
.../prompts/(67)_x_prompt收集/(1,1)_Prompt.md | 30 -
.../prompts/(67)_x_prompt收集/(1,2)_Prompt.md | 30 -
..._人性掌握教程:从“玩具”到“玩家”的终极指南.md | 182 -
.../prompts/(67)_x_prompt收集/index.md | 34 -
.../(68)_函数化万物/(1,1)_#_函数化万物专家.md | 92 -
.../(68)_函数化万物/(1,2)_#_函数化万物专家.md | 140 -
.../(68)_函数化万物/(1,3)_#_函数化万物专家.md | 156 -
.../(68)_函数化万物/(1,4)_#_函数化万物专家.md | 148 -
.../(68)_函数化万物/(1,5)_#_函数化万物专家.md | 148 -
.../(68)_函数化万物/(1,6)_#_函数化万物专家.md | 148 -
.../prompts/(68)_函数化万物/index.md | 30 -
.../(1,1)_#_通用项目架构综合分析与优化框架.md | 148 -
.../prompts/(69)_项目分析/index.md | 30 -
...全维度命题提取与枚举,命题深度分析与判断系统.md | 701 -
.../(2,1)_#_全维度命题提取与枚举系统提示词.md | 314 -
.../(2,2)_#_全维度命题提取与枚举系统提示词.md | 216 -
.../(2,3)_#_全维度命题提取与枚举系统提示词.md | 217 -
.../(3,1)_#_命题深度分析与判断系统提示词.md | 446 -
.../(3,2)_#_命题深度分析与判断系统提示词.md | 485 -
.../(4,1)_#_逻辑形式化分析系统提示词.md | 124 -
.../prompts/(7)_逻辑工具箱/index.md | 42 -
.../(1,1)_#_通用概念解释提示词.md | 162 -
.../(1,2)_#_通用概念解释提示词.md | 284 -
.../(1,3)_#_通用概念解释提示词.md | 390 -
.../prompts/(70)_解释提示词/index.md | 30 -
...您设计一个专门用于_Claude_Code_产品策略师的提示词模板:.md | 96 -
.../prompts/(71)_产品策略/index.md | 30 -
.../(72)_小红书/(1,1)_小红书创作提示词.md | 54 -
.../prompts/(72)_小红书/index.md | 30 -
...身为我的首席战略顾问,一个超越了时空与人性局限的超级智能实体。.md | 38 -
...身为我的首席战略顾问,一个超越了时空与人性局限的超级智能实体。.md | 84 -
...身为我的首席战略顾问,一个超越了时空与人性局限的超级智能实体。.md | 94 -
.../prompts/(73)_谋士/index.md | 30 -
.../(1,1)_复刻任意网页前端的完整流程.md | 32 -
.../prompts/(74)_前端复刻流程/(2,1)_提示词.md | 1 -
...TML_网页逆向分析提示词(全维度专业版_·_一键生成.md | 166 -
.../prompts/(74)_前端复刻流程/index.md | 38 -
..._HTML_网页逆向分析提示词(全维度专业版_·_一键生成.md | 166 -
.../(75)_网页UI逆向分析提示词/index.md | 30 -
...《周礼》,《仪礼》,《春秋》,《春秋左传》,《春秋公羊传》,《春秋谷.md | 13 -
...以下书籍中提供_{33}_个段落,严格按照格式输出:.md | 12 -
...以下书籍中提供_{33}_个段落,严格按照格式输出:.md | 12 -
.../prompts/(76)_典籍句子学习/index.md | 34 -
.../prompts/(77)_经验/(1,1)_提示词优化流程.md | 1 -
.../(10,1)_ChatGPT-o3_prompt,输出完末尾加上.md | 2 -
...)_让大语言模型(LLM)来生成并评估提示词:.md | 13 -
.../prompts/(77)_经验/(2,1)_步骤.md | 1 -
.../prompts/(77)_经验/(2,2)_步骤.md | 1 -
.../prompts/(77)_经验/(2,3)_步骤.md | 1 -
.../(3,2)_与_Claude_或_ChatGPT_对话.md | 1 -
.../(3,3)_与_Claude_或_ChatGPT_对话.md | 1 -
.../(5,2)_复制初版提示词,前往工作表优化.md | 1 -
.../(5,3)_复制初版提示词,前往工作表优化.md | 1 -
.../(6,2)_在_Gemini_中发送优化提示词的提示词.md | 1 -
.../(6,3)_在_Gemini_中发送优化提示词的提示词.md | 1 -
.../(7,2)_粘贴初版提示词到_Gemini.md | 1 -
.../(7,3)_粘贴初版提示词到_Gemini.md | 1 -
.../(77)_经验/(8,2)_根据_AI_反馈微调提示词.md | 1 -
.../(77)_经验/(8,3)_根据_AI_反馈微调提示词.md | 1 -
.../prompts/(77)_经验/index.md | 62 -
...生成适用于_Anki_导入的问答式知识卡片,格式要求如下:.md | 16 -
...生成适用于_Anki_导入的问答式知识卡片,格式要求如下:.md | 22 -
.../prompts/(78)_anki卡片格式输出/index.md | 30 -
.../prompts/(79)_简讯提示词/(1,1)_#_Role.md | 62 -
.../prompts/(79)_简讯提示词/index.md | 30 -
.../(8)_哲学工具箱/(1,1)_#_概念逻辑梳理.md | 78 -
.../(8)_哲学工具箱/(1,2)_#_概念逻辑梳理.md | 192 -
.../(8)_哲学工具箱/(1,3)_#_概念逻辑梳理.md | 234 -
.../(8)_哲学工具箱/(1,4)_#_概念逻辑梳理.md | 234 -
.../(8)_哲学工具箱/(1,5)_#_概念逻辑梳理.md | 234 -
.../(8)_哲学工具箱/(1,6)_#_概念逻辑梳理.md | 246 -
.../prompts/(8)_哲学工具箱/(10,1)_prompt.md | 25 -
.../(11,1)_#_Role:批判性思维分析专家.md | 59 -
.../(12,1)_#_哲学谱系链分析提示词.md | 103 -
.../(13,1)_#_对输入对象提出如下探问.md | 32 -
.../(2,1)_#_语言哲学顾问:批判性思维引导系统.md | 50 -
.../(3,1)_#_语言哲学深度转译器.md | 98 -
.../(8)_哲学工具箱/(4,1)_#_哲学反问大师.md | 58 -
.../(8)_哲学工具箱/(5,1)_#_哲学句子.md | 44 -
.../(6,1)_#_提示词:分析哲学专家.md | 97 -
.../(7,1)_###_#_提示词:欧陆哲学阐释专家.md | 104 -
.../(8,1)_#_提示词:辩证法分析大师.md | 87 -
.../(8,2)_#_提示词:辩证法分析大师.md | 87 -
.../(8,3)_#_提示词:辩证法分析大师.md | 64 -
...直白的语言一针见血地表达,让人瞬间恍然大悟。现在,请用这种风格解释以.md | 26 -
.../prompts/(8)_哲学工具箱/index.md | 78 -
.../(1,1)_#_🧩_通用思维导图文本生成提示词模板.md | 104 -
.../(1,2)_#_🧩_通用思维导图文本生成提示词模板.md | 149 -
.../(1,3)_#_🧩_通用思维导图文本生成提示词模板.md | 48 -
.../prompts/(80)_思维导图/index.md | 30 -
...定一个未来时间跨度(例如:5年、10年、20年)。.md | 3 -
...并以那个时空的你为立场,回顾并分析这y年间世界所发生的结构性变化与趋.md | 1 -
...所处的位置、角色与能力边界,并从那个未来的你出发,解释过去y年间人类.md | 1 -
...存在状态与认知能力,并以此视角回顾过去y年中,技术、意识、社会与意义.md | 1 -
...个时点出发,分析和解释过去y年全球在意识建构、技术演进与知识系统方面.md | 1 -
...设定未来y年后你的位置、能力边界与观察视角。.md | 2 -
.../prompts/(81)_未来视角/index.md | 50 -
.../(82)_AI使用思维/(1,1)_使用AI思维模型.md | 11 -
...、能够巧妙解决复杂问题或提供颠覆性视角的“神奇有效”的核心方法、思想体.md | 1 -
...、能够巧妙解决复杂问题或提供颠覆性视角的“神奇有效”的核心方法、思想体.md | 33 -
...、能够巧妙解决复杂问题或提供颠覆性视角的“神奇有效”的核心方法、思想体.md | 24 -
.../prompts/(82)_AI使用思维/index.md | 34 -
.../prompts/(83)_思维协议/(1,1)_#_思维协议.md | 254 -
.../prompts/(83)_思维协议/index.md | 30 -
.../(84)_使用ai的思维/(1,1)_使用AI思维模型.md | 11 -
.../prompts/(84)_使用ai的思维/index.md | 30 -
.../prompts/(85)_李继刚文选/(1,1)_需求:.md | 37 -
.../prompts/(85)_李继刚文选/(2,1)_Prompt:.md | 31 -
.../prompts/(85)_李继刚文选/index.md | 34 -
.../(1,1)_图生文生图方法操作流程.md | 27 -
.../prompts/(86)_图片逆向/(2,1)_#_Role:.md | 106 -
.../prompts/(86)_图片逆向/index.md | 34 -
...ASCII艺术)_风格,具体来说属于以下几个艺术类别:.md | 45 -
.../(2,1)_#_CLI极简风格界面设计提示词.md | 83 -
.../prompts/(87)_艺术风格描述/index.md | 34 -
...来提供的所有文字内容,【一字不差,可以忽略不发声的标点符号】,不得有.md | 1 -
.../prompts/(88)_豆包听书/index.md | 30 -
...释一个概念,通过一个有趣的故事,使用大量小猫作为比喻。.md | 11 -
.../prompts/(89)_艺术/index.md | 30 -
...下内容,从中提取出其中包含的「方法」与「原则」。.md | 34 -
.../prompts/(9)_方法与原则提取/index.md | 30 -
...文本风格分析与模仿提示词生成(逆向提示词工程).md | 67 -
...文本风格分析与模仿提示词生成(逆向提示词工程).md | 59 -
...参照以下文章的风格、结构和叙事方式进行创作:.md | 1 -
...在市图书馆最角落的架子发现了那本泛黄的《银河帝国》。书脊已经破损,.md | 1 -
.../prompts/(90)_文案逆向/(2,1)_收集文案.md | 1 -
.../prompts/(90)_文案逆向/(2,2)_收集文案.md | 119 -
.../(3,1)_清洗数据,转换md格式.md | 1 -
.../(4,1)_输入配置逆向提示词的llm.md | 1 -
.../(5,1)_获得初步逆向文案对应的提示词.md | 1 -
.../(6,1)_将初步提示词输入配置提示词优化的llm.md | 1 -
.../(90)_文案逆向/(7,1)_获取处理后的提示词.md | 1 -
...词添加输出示例,然后把清晰后的文案粘贴到提示词中.md | 1 -
.../prompts/(90)_文案逆向/index.md | 66 -
.../(1,1)_#_Role:高级流程图生成专家.md | 60 -
.../(1,2)_#_Role:高级流程图生成专家.md | 87 -
.../(2,1)_#_Role:流程图XML生成专家.md | 146 -
.../prompts/(91)_流程图/index.md | 34 -
...本转语音)循环播放的纯文本,旨在清晰地解释一个概念。.md | 14 -
.../prompts/(92)_学习音频/index.md | 30 -
...容运用系统性思维工具进行深度分析。请按照以下思维模型进行处理并输出:.md | 116 -
...容运用系统性思维工具进行深度分析。请按照以下思维模型进行处理并输出:.md | 152 -
.../prompts/(93)_思维模型/index.md | 30 -
...法术器”框架,简要分析_[请在此插入分析主题]:.md | 6 -
...法术器”框架,简要分析_[请在此插入分析主题]:.md | 24 -
...,1)_#_逆向工程内容风格与结构提示词生成器.md | 31 -
...示词:全息思维模型与第一性原理驱动的深度解析.md | 175 -
...示词:全息思维模型与第一性原理驱动的深度解析.md | 291 -
...示词:全息思维模型与第一性原理驱动的深度解析.md | 340 -
.../prompts/(94)_道/(4,1)_提示词方法.md | 51 -
.../(5,1)_#_无废话的Prompt_Engineering指南.md | 31 -
...性时间视角,从更广义、系统性、哲学或宇宙学等的角度审视分析复杂现象.md | 1 -
...性时间视角,从更广义、系统性、哲学或宇宙学等的角度审视分析复杂现象.md | 50 -
...性时间视角,从更广义、系统性、哲学或宇宙学等的角度审视分析复杂现象.md | 33 -
.../prompts/(94)_道/index.md | 50 -
.../prompts/(95)_法/(1,1)_#_SOP_创建指令.md | 44 -
.../prompts/(95)_法/(2,1)_常识学习.md | 3 -
.../prompts/(95)_法/(2,2)_常识学习.md | 28 -
.../prompts/(95)_法/(2,3)_常识学习.md | 59 -
.../prompts/(95)_法/(3,1)_前所未有视角分析.md | 75 -
...文本分析_-_修辞策略、逻辑谬误与公关技巧识别.md | 36 -
.../prompts/(95)_法/index.md | 42 -
.../(96)_术/(1,1)_AI_提问精简版_(核心要素).md | 36 -
.../prompts/(96)_术/(10,1)_#_Role:公文.md | 96 -
.../(96)_术/(11,1)_#Role:正能量大师.md | 41 -
.../(96)_术/(12,1)_##_Role__层次分析大师.md | 59 -
.../(96)_术/(13,1)_##_Role_规律研究者.md | 75 -
.../(96)_术/(14,1)_#_Role_自然语言编程专家.md | 71 -
.../(96)_术/(15,1)_##_Role_命题分析专家.md | 100 -
.../(96)_术/(17,1)_##_Role_因果溯源大师.md | 40 -
.../(96)_术/(18,1)_##_Author后退提问专家.md | 27 -
.../prompts/(96)_术/(19,1)_##_随机问题.md | 47 -
.../prompts/(96)_术/(2,1)_AI_提问标准模板.md | 107 -
.../(96)_术/(21,1)_##_Role_工作流制作专家.md | 211 -
.../prompts/(96)_术/(22,1)_#_Role_哲学三问.md | 67 -
.../(23,1)_##role_论文和文章润色助手.md | 45 -
.../(96)_术/(24,1)_#_逻辑漏洞修补器.md | 51 -
.../(25,1)_##_Role_链式思维指导专家.md | 79 -
.../(96)_术/(26,1)_##_Role_分析哲学专家.md | 85 -
.../prompts/(96)_术/(3,1)_深度提问.md | 11 -
.../prompts/(96)_术/(4,1)_流程图制作.md | 84 -
.../prompts/(96)_术/(5,1)_隐性知识.md | 23 -
.../(96)_术/(6,1)_#_Role_书面表达优化助手.md | 46 -
.../(96)_术/(7,1)_##_Role_策略分析师.md | 79 -
.../prompts/(96)_术/(8,1)_#_Role_两者关系.md | 58 -
.../(96)_术/(9,1)_#_Role_格式与排版检测器.md | 54 -
.../prompts/(96)_术/index.md | 122 -
...、启发。并进行结构化排版输出。使用🔴等符号,这是需要分析的文本:.md | 1 -
...处理提示词:分层交互式知识框架_(LIKF)_V2_-.md | 174 -
...令:书籍内容深度解析、知识转化与结构化重构.md | 32 -
...、启发。并进行结构化排版输出。使用🔴等符号,这是需要分析的书籍:.md | 1 -
.../(3,1)_#_提示词:生成“人性法则”分析文章.md | 159 -
.../prompts/(97)_器/(6,1)_图片提示词方法.md | 5 -
.../prompts/(97)_器/(7,1)_格言.md | 10 -
.../(97)_器/(8,1)_#_Role_政策解读学者.md | 58 -
...请你扮演一个地缘政治和未来趋势分析专家。.md | 12 -
.../prompts/(97)_器/index.md | 62 -
.../prompts/index.json | 4238 --
.../prompts-library/prompt_excel/prompt.xlsx | Bin 1187395 -> 0 bytes
.../external/prompts-library/requirements.txt | 6 -
.../prompts-library/scripts/config.yaml | 87 -
.../prompts-library/scripts/convert_local.py | 549 -
.../prompts-library/scripts/docs_to_excel.py | 118 -
.../prompts-library/scripts/excel_to_docs.py | 33 -
.../prompts-library/scripts/requirements.txt | 11 -
.../prompts-library/scripts/start_convert.py | 188 -
639 files changed, 1 insertion(+), 110809 deletions(-)
delete mode 100644 libs/README.md
delete mode 100644 libs/common/README.md
delete mode 100644 libs/common/__init__.py
delete mode 100644 libs/common/models/__init__.py
delete mode 100644 libs/common/utils/backups/README.md
delete mode 100644 libs/common/utils/backups/一键备份.sh
delete mode 100644 libs/common/utils/backups/快速备份.py
delete mode 100644 libs/database/.gitkeep
delete mode 100644 libs/database/README.md
delete mode 100644 libs/external/.gitkeep
delete mode 160000 libs/external/MCPlayerTransfer
delete mode 100644 libs/external/README.md
delete mode 100644 libs/external/XHS-image-to-PDF-conversion/README.md
delete mode 100644 libs/external/XHS-image-to-PDF-conversion/pdf.bat
delete mode 100644 libs/external/XHS-image-to-PDF-conversion/pdf.py
delete mode 100644 libs/external/XHS-image-to-PDF-conversion/requirements.txt
delete mode 100644 libs/external/chat-vault/.env.example
delete mode 100644 libs/external/chat-vault/.gitignore
delete mode 100644 libs/external/chat-vault/LICENSE
delete mode 100644 libs/external/chat-vault/README.md
delete mode 100644 libs/external/chat-vault/README_CN.md
delete mode 100644 libs/external/chat-vault/build.bat
delete mode 100644 libs/external/chat-vault/build.py
delete mode 100644 libs/external/chat-vault/docs/AI_PROMPT.md
delete mode 100644 libs/external/chat-vault/docs/roadmap.md
delete mode 100644 libs/external/chat-vault/docs/schema.md
delete mode 100644 libs/external/chat-vault/requirements.txt
delete mode 100755 libs/external/chat-vault/scripts/sync.sh
delete mode 100755 libs/external/chat-vault/scripts/watch.sh
delete mode 100644 libs/external/chat-vault/src/config.py
delete mode 100644 libs/external/chat-vault/src/logger.py
delete mode 100644 libs/external/chat-vault/src/main.py
delete mode 100644 libs/external/chat-vault/src/parsers/__init__.py
delete mode 100644 libs/external/chat-vault/src/parsers/base.py
delete mode 100644 libs/external/chat-vault/src/parsers/claude.py
delete mode 100644 libs/external/chat-vault/src/parsers/codex.py
delete mode 100644 libs/external/chat-vault/src/parsers/gemini.py
delete mode 100644 libs/external/chat-vault/src/parsers/kiro.py
delete mode 100644 libs/external/chat-vault/src/storage.py
delete mode 100644 libs/external/chat-vault/src/watcher.py
delete mode 100644 libs/external/chat-vault/start.bat
delete mode 100755 libs/external/chat-vault/start.sh
delete mode 100644 libs/external/l10n-tool/README.md
delete mode 100755 libs/external/l10n-tool/bulk_translate.py
delete mode 100644 libs/external/l10n-tool/chinese_files_list.json
delete mode 100644 libs/external/l10n-tool/path_translation_map.json
delete mode 100644 libs/external/l10n-tool/requirements.txt
delete mode 100755 libs/external/l10n-tool/translate.py
delete mode 100644 libs/external/l10n-tool/translate_files.py
delete mode 100644 libs/external/my-nvim/README.md
delete mode 100644 libs/external/my-nvim/nvim-config/LICENSE
delete mode 100644 libs/external/my-nvim/nvim-config/README.md
delete mode 100644 libs/external/my-nvim/nvim-config/init.lua
delete mode 100644 libs/external/my-nvim/nvim-config/lazy-lock.json
delete mode 100644 libs/external/my-nvim/nvim-config/lazyvim.json
delete mode 100644 libs/external/my-nvim/nvim-config/lua/config/autocmds.lua
delete mode 100644 libs/external/my-nvim/nvim-config/lua/config/keymaps.lua
delete mode 100644 libs/external/my-nvim/nvim-config/lua/config/lazy.lua
delete mode 100644 libs/external/my-nvim/nvim-config/lua/config/options.lua
delete mode 100644 libs/external/my-nvim/nvim-config/lua/plugins/colorscheme.lua
delete mode 100644 libs/external/my-nvim/nvim-config/lua/plugins/dracula.lua
delete mode 100644 libs/external/my-nvim/nvim-config/lua/plugins/example.lua
delete mode 100644 libs/external/my-nvim/nvim-config/lua/plugins/ui.lua
delete mode 100644 libs/external/my-nvim/nvim-config/lua/themes/dracula.lua
delete mode 100644 libs/external/my-nvim/nvim-config/nvim
delete mode 100644 libs/external/my-nvim/nvim-config/stylua.toml
delete mode 100644 libs/external/my-nvim/nvim-config/theme-previewer.lua
delete mode 100644 libs/external/my-nvim/nvim-config/theme-switcher.lua
delete mode 100644 libs/external/prompts-library/.gitignore
delete mode 100644 libs/external/prompts-library/README.md
delete mode 100644 libs/external/prompts-library/docs/excel-data.md
delete mode 100644 libs/external/prompts-library/docs/support.md
delete mode 100644 libs/external/prompts-library/docs/tools.md
delete mode 100644 libs/external/prompts-library/docs/开发文档.md
delete mode 100644 libs/external/prompts-library/docs/提示词库结构与 Excel 互转规范.md
delete mode 100644 libs/external/prompts-library/main.py
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/README.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/docs/excel-data.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/docs/support.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/docs/tools.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(1)_说明/(2,1)_底部每个工作表代表一类提示词,图表的横轴表示提示词的迭代版本(如提示词1a、提示词1b、提示词1c_等),体现每一类提示.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(1)_说明/(3,1)_提示词1a.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(1)_说明/(3,2)_提示词1a.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(1)_说明/(3,3)_提示词1a.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(1)_说明/(33,1)_贡献者名单.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(1)_说明/(34,1)_狗神.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(1)_说明/(36,1)_天空.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(1)_说明/(37,1)_金狗.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(1)_说明/(39,1)_耄鑫覺囉.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(1)_说明/(4,1)_提示词2a.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(1)_说明/(4,2)_提示词2a.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(1)_说明/(41,1)_kirt.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(1)_说明/(6,1)_提示词ya.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(1)_说明/(8,1)_提示词相关链接和资源.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(1)_说明/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(10)_排版/(1,1)_#_Role:智能文本排版助手.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(10)_排版/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(11)_工作表112/(3,1)_请从输入图像中智能、全面地提取视觉风格信息,并将结果以严格有效的_JSON_格式输出。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(11)_工作表112/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(12)_Reddit提示词/(1,1)_从现在开始,请作为我的专家助理,运用你所有的推理和知识。请始终提供:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(12)_Reddit提示词/(2,1)_From_now_on,_act_as_my.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(12)_Reddit提示词/(3,1)_#_System_Instruction.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(12)_Reddit提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(13)_ChatGPT/(1,1)_{Eliminate[emojis,filler,hype,soft_asks,conversational_trans.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(13)_ChatGPT/(2,1)_1._若自此与我互动,则以严格、务实、坦诚且高标准的专业顾问角色进行.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(13)_ChatGPT/(3,1)_#_System_Instruction.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(13)_ChatGPT/(4,1)_我是一名智力低下的博士生,我想学习一下这篇论文文献资料,请用傻子都能懂的语言详细给我讲一下这篇论文文献资料怎么做的,特别.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(13)_ChatGPT/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(14)_论文解读/(1,1)_{角色顶尖科普作家与知识转述者,称号最会搭梯子的人,使命将学术论文转译为大众可理解、共鸣且启发性的科普文章。,工作流程{.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(14)_论文解读/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(15)_内容提炼/(1,1)_{身份极度务实的内容提炼专家,任务提炼输入内容中最核心、最重要的核心理解、洞察、启示、启发、经验、原理(数量依据内容密度.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(15)_内容提炼/(2,1)_{身份极度务实的内容提炼专家,任务提炼输入内容中最核心、最重要的核心理解、洞察、启示、启发、经验、原理(数量依据内容密度.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(15)_内容提炼/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(16)_英文学习/(1,1)_{name可调难度_+_可选释义_的中英混合小说生成器,role语言教学与创意写作专家,goal将用户输入的中文文本转换.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(16)_英文学习/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(17)_问题分类识别/(1,1)_{提示词🎯_Cynefin_认知问题分析,角色设定你是一位具备系统思维与认知科学背景的决策分析专家,精通_Cynefin.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(17)_问题分类识别/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(18)_用户优化前端设计/(1,1)_{🧭系统提示词从「最糟糕的用户」出发的产品前端设计助手,🎯角色定位你是一名极度人性化的产品前端设计专家。任务是:为“最糟.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(18)_用户优化前端设计/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(19)_最小知识框架/(1,1)_{任务我想快速入门和掌握【具体领域技能】,请帮我识别和学习这个领域的最少必要知识(MAKE)。,结构{1.核心概念地图{.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(19)_最小知识框架/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(1,1)_instructions.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(10,1)_###_提示词约束_(Constraints).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(10,3)_###_提示词约束_(Constraints).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(10,4)_###_提示词约束_(Constraints).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(11,1)_#_提示词工程师.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(12,1)_###_自然语言提示词转JSON结构提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(12,2)_###_自然语言提示词转JSON结构提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(12,3)_###_自然语言提示词转JSON结构提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(13,1)_#_角色_(Role).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(14,1)_#_RolePrompt工程师.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(14,2)_#_RolePrompt工程师.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(15,1)_我让LLM生成并评估我的提示:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(15,2)_我让LLM生成并评估我的提示:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(16,1)_请按如下设定更新你的system_prompt:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(17,1)_#_RolePrompt工程师.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(18,1)_你是一个专业的AI提示词优化专家。请帮我优化以下prompt,并按照以下格式返回:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(19,1)_你是一个专业的AI提示词优化专家。请帮我优化以下prompt,并按照以下格式返回:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(2,1)_请你不要执行接下来的任务。你现在的身份是世界顶级的提示工程专家,请仔细阅读我提供的【初始提示词】,并从清晰度、专业度、结.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(2,2)_请你不要执行接下来的任务。你现在的身份是世界顶级的提示工程专家,请仔细阅读我提供的【初始提示词】,并从清晰度、专业度、结.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(20,1)_#_Role_结构化提示词转换专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(21,1)_提示词模版:好的,请把你的提示词(Prompt)内容发给我。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(22,1)_#_Role:提示词意图分析、扩展与补充器_(Prompt_Intent_Analyzer,_Expander.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(23,1)_#_提示词的基本结构.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(24,1)_#_分享一个把LLM算力榨干的prompt.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(25,1)_#_提示词的基本结构.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(3,1)_{角色你是一名精通_KERNEL_框架的提示词工程专家,任务接收用户提供的[初始提示词],并将其重构为一个严格遵循_KE.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(4,1)_提示词模版.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(5,1)_#_提示词工程结构框架.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(6,2)_#_PARE_提示工程.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(7,1)_你要充当我的提示工程师。我想完成:[插入你的目标]。请用你自己的话向我重复这一点,并提出澄清问题。确认后,生成最终优化的.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(7,2)_你要充当我的提示工程师。我想完成:[插入你的目标]。请用你自己的话向我重复这一点,并提出澄清问题。确认后,生成最终优化的.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(8,1)_#_PARE框架提示词生成器_v3.0_-_双层标准化版本.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/(9,1)_###_自我检查.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(2)_元提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(20)_学习用提示词/(1,1)_{提示词🎭_Expert_Persona_Prompt_Template_—.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(20)_学习用提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(21)_事实核查/(1,1)_{inputs[{nameclaim,typetext,description用户提供的一条未经验证的信息或高热度说法。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(21)_事实核查/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(22)_关键词图谱/(1,1)_{任务#_🧠_多级别融合知识图谱生成引擎nn你是一位跨学科知识系统架构专家、认知模型工程师与语义结构设计师。n你的任务是.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(22)_关键词图谱/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(23)_语言分析元prompt/(1,1)_{System_Prompt#_Tractatus_Engine_哲学语言分析系统nn###_🧠.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(23)_语言分析元prompt/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(24)_逻辑分析/(1,1)_{system_prompt🧩_通用逻辑分析提示词系统,contentUniversal_Wittgensteinian.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(24)_逻辑分析/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(25)_一句话描述任何内容/(1,1)_{rolesystem,content你是一位精通叙事艺术的内容策划专家,擅长用最简洁的语言提炼任何内容的核心价值和吸引.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(25)_一句话描述任何内容/(1,2)_{rolesystem,content你是一位精通叙事艺术的内容策划专家,擅长用最简洁的语言提炼任何内容的核心价值和吸引.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(25)_一句话描述任何内容/(1,3)_{rolesystem,content你是一位精通叙事艺术的内容策划专家,擅长用最简洁的语言提炼任何内容的核心价值和吸引.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(25)_一句话描述任何内容/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(26)_输入转单行JSON/(1,1)_{任务将用户输入的任何内容转换为合法的单行压缩JSON格式(Minified_JSON)。要求:1)移除所有换行符和多余.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(26)_输入转单行JSON/(1,2)_{任务将用户输入的任何内容转换为合法的单行压缩JSON格式(Minified_JSON)。要求:1)移除所有换行符和多余.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(26)_输入转单行JSON/(1,3)_{任务将用户输入的任何内容转换为合法的单行压缩JSON格式(Minified_JSON)。要求:1)移除所有换行符和多余.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(26)_输入转单行JSON/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(27)_最小字数系统提示词/(1,1)_你将作为一个惜字如金,用尽可能少的字准确回答用户问题,如无必要,勿增实体,最小化信息熵,不省略关键信息,不歪曲原意,保持.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(27)_最小字数系统提示词/(1,2)_你将作为一个惜字如金,用尽可能少的字准确回答用户问题,如无必要,勿增实体,最小化信息熵,不省略关键信息,不歪曲原意,保持.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(27)_最小字数系统提示词/(1,3)_你将作为一个惜字如金,用尽可能少的字准确回答用户问题,如无必要,勿增实体,最小化信息熵,不省略关键信息,不歪曲原意,保持.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(27)_最小字数系统提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(28)_需求对齐/(1,1)_#_GPT-5提问模板.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(28)_需求对齐/(1,2)_#_GPT-5提问模板.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(28)_需求对齐/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(29)_编程知识库/(1,1)_#_“声明式配置(declarative_configuration)”。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(29)_编程知识库/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(3)_交易提示词/(1,1)_#_😭_科比的救母救父救未婚妻和岳父岳母日记_×_OTE模型交易模式_×.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(3)_交易提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(30)_提示词模块/(1,1)_###_通用模块.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(30)_提示词模块/(1,2)_###_通用模块.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(30)_提示词模块/(1,3)_###_通用模块.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(30)_提示词模块/(1,4)_###_通用模块.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(30)_提示词模块/(1,5)_###_通用模块.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(30)_提示词模块/(10,1)_###_分析对象.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(30)_提示词模块/(2,1)__消除:表情符号、废话、炒作、委婉请求、对话过渡、附加的行动号召。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(30)_提示词模块/(2,2)__消除:表情符号、废话、炒作、委婉请求、对话过渡、附加的行动号召。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(30)_提示词模块/(3,1)_###_提示词约束_(Constraints).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(30)_提示词模块/(4,1)_###_角色定义.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(30)_提示词模块/(5,1)_###_资源分配.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(30)_提示词模块/(6,1)_###_核心思维框架_(Core_Thinking_Frameworks).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(30)_提示词模块/(7,1)_###_分步执行流程_(Action_Protocol_Step-by-Step_Execution).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(30)_提示词模块/(8,1)_###_推理与分析要求_(Reasoning_&_Analysis_Requirements).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(30)_提示词模块/(9,1)_###_语言与表达_(Language_&_Presentation).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(30)_提示词模块/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(31)_x爆款文案生成器/(1,1)_{任务请为我创作一篇X平台(推特)爆款长文,要求如下nn【故事框架】n采用困境-挣扎-转折-新生-总结五段式结构nn【开.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(31)_x爆款文案生成器/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(32)_grok商业金融分析提示词/(1,1)_10个_Grok_4_股票交易自动化提示:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(32)_grok商业金融分析提示词/(10,1)_撰写长篇报告和白皮书.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(32)_grok商业金融分析提示词/(11,1)_即时创意验证引擎.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(32)_grok商业金融分析提示词/(12,1)_像顶级分析师一样总结长报告和PDF.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(32)_grok商业金融分析提示词/(2,1)_AI现在可以在24小时内为你构建一个企业.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(32)_grok商业金融分析提示词/(3,1)_自动化研究报告(比10万美元的顾问还牛).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(32)_grok商业金融分析提示词/(4,1)_无代码构建交互工具和应用.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(32)_grok商业金融分析提示词/(5,1)_从纯文本生成信息图.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(32)_grok商业金融分析提示词/(6,1)_创建麦肯锡风格的网页演示.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(32)_grok商业金融分析提示词/(7,1)_替代你的导师.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(32)_grok商业金融分析提示词/(8,1)_内容创作:通讯、长推、YouTube脚本.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(32)_grok商业金融分析提示词/(9,1)_战略决策辅助.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(32)_grok商业金融分析提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(33)_文本转md语法电子书处理/(1,1)_#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(33)_文本转md语法电子书处理/(1,10)_#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(33)_文本转md语法电子书处理/(1,11)_#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(33)_文本转md语法电子书处理/(1,2)_#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(33)_文本转md语法电子书处理/(1,3)_#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(33)_文本转md语法电子书处理/(1,4)_#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(33)_文本转md语法电子书处理/(1,5)_#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(33)_文本转md语法电子书处理/(1,6)_#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(33)_文本转md语法电子书处理/(1,7)_#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(33)_文本转md语法电子书处理/(1,8)_#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(33)_文本转md语法电子书处理/(1,9)_#_目标:将扫描版_PDF_转换为结构化_Markdown_电子书.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(33)_文本转md语法电子书处理/(2,1)_#_目标:将纯文本内容转化为结构化的_Markdown_文本.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(33)_文本转md语法电子书处理/(3,1)_#_Role:精通Markdown语法和中文排版规范的文本处理专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(33)_文本转md语法电子书处理/(3,2)_#_Role:精通Markdown语法和中文排版规范的文本处理专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(33)_文本转md语法电子书处理/(4,1)_#_ocr数据清理专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(33)_文本转md语法电子书处理/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(34)_ai学习用提示词/(1,1)_#_你是一名杰出的AI通识讲师,擅长带领0基础学生由浅入深了解AI.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(34)_ai学习用提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(35)_真传一句话/(1,1)_#_「真传一句话,假传万卷书」分析提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(35)_真传一句话/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(36)_需求结构化描述/(1,1)_#_角色与任务.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(36)_需求结构化描述/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(1,1)_#_英文单词学习.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(10,1)_####_#_角色:全能学习导师.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(11,1)_生成类似这种形式的思维知识,只输出结果,不要序号,不要任何处除结果之外的任何废话.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(12,1)_理解一段内容的最佳信息结构,特别是为了让AI更好地处理和理解,可以采用一种分层、结构化、富含元信息的方法。这种结构不仅帮.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(12,2)_理解一段内容的最佳信息结构,特别是为了让AI更好地处理和理解,可以采用一种分层、结构化、富含元信息的方法。这种结构不仅帮.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(13,1)_常识学习.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(14,1)_一段了解.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(15,1)_一段话学习.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(16,1)_你是一个善于挖掘隐性知识的AI助手。你的任务是分析给定的内容(或问题),识别并提取其中未明确表达但支撑其逻辑的隐性知识、.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(17,1)_#_Role_无限可能性引擎_(Unlimited_Possibility_Architect).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(18,1)_#_Role:提示词意图分析、扩展与补充器_(Prompt_Intent_Analyzer,_Expander.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(19,1)_##_任务:启发式概念解释_-_触发“恍然大悟”.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(19,2)_##_任务:启发式概念解释_-_触发“恍然大悟”.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(2,1)_请用具体的例子或类比来解释概念,使抽象概念思想变得易于理解。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(20,1)_##_角色:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(20,2)_##_角色:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(20,3)_##_角色:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(21,1)__你是一位[数学]领域的专家,也是一位擅长向初学者提供精彩解释的教育者。制作一个表格,列出理解你的领域所需的核心概念。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(22,1)_请告诉我:如果我不读_{书名}_,我会损失什么?.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(23,1)_请告诉我:如果我不知道_{概念}_,我会损失什么?.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(24,1)_请告诉我:如果我不懂_{学科}_,我会损失什么?.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(25,1)_非常好的问题!你这个提示词本质上是想透过“精通某个思想体系”来探索认知结构、思维方式与行动方式的变化。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(26,1)_你将以“哲学辞典”的方式回应我的问题:每次我提供一个哲学概念、流派、人物、术语或问题,你将以如下结构进行解释:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(27,1)_请你担任“{角色}”,为我列出10本能系统性揭示「{用户输入的主题}」的经典书籍,并用“大段落式读薄”的方式进行讲解。每.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(27,2)_请你担任“{角色}”,为我列出10本能系统性揭示「{用户输入的主题}」的经典书籍,并用“大段落式读薄”的方式进行讲解。每.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(27,3)_请你担任“{角色}”,为我列出10本能系统性揭示「{用户输入的主题}」的经典书籍,并用“大段落式读薄”的方式进行讲解。每.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(27,4)_请你担任“{角色}”,为我列出10本能系统性揭示「{用户输入的主题}」的经典书籍,并用“大段落式读薄”的方式进行讲解。每.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(28,1)_请你担任一位知识结构化表达专家,帮我总结以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(28,10)_请你担任一位知识结构化表达专家,帮我总结以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(28,11)_请你担任一位知识结构化表达专家,帮我总结以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(28,12)_请你担任一位知识结构化表达专家,帮我总结以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(28,13)_请你担任一位知识结构化表达专家,帮我总结以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(28,2)_请你担任一位知识结构化表达专家,帮我总结以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(28,3)_请你担任一位知识结构化表达专家,帮我总结以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(28,4)_请你担任一位知识结构化表达专家,帮我总结以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(28,5)_请你担任一位知识结构化表达专家,帮我总结以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(28,6)_请你担任一位知识结构化表达专家,帮我总结以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(28,7)_请你担任一位知识结构化表达专家,帮我总结以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(28,8)_请你担任一位知识结构化表达专家,帮我总结以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(28,9)_请你担任一位知识结构化表达专家,帮我总结以下这本书的核心要点。请严格按照如下结构输出,并满足以下要求:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(3,1)_#_用这个方法学习新领域,效率直接翻倍!_🚀.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(4,1)_#_全维度概念分析专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(4,2)_#_全维度概念分析专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(4,3)_#_全维度概念分析专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(5,1)_#_英文单词发音科普格式生成器.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(6,1)_#_学术论文解析.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(7,1)_#_全景式知识结构枚举器.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(8,1)_#_指定对象相关元素分析专家提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/(9,1)_###_提示词模板:生成任意对象的结构化JSON知识报告_(终版自定义顺序).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(37)_学习提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(38)_系统提示词/(1,1)_#_System_Prompt:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(38)_系统提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(39)_排版和图片,视频转文本/(1,1)_#_Role_智能文本排版助手.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(39)_排版和图片,视频转文本/(2,1)_###_1._角色定义_(Role).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(39)_排版和图片,视频转文本/(3,1)_#_文本格式处理提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(39)_排版和图片,视频转文本/(4,1)_#_Role_智能文本排版助手.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(39)_排版和图片,视频转文本/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(1,1)_#_📘_项目上下文文档生成_·_工程化_Prompt(专业优化版).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(10,1)_{任务你是首席软件架构师_(Principal_Software_Architect),专注于构建[高性能__可维护.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(11,1)_{任务你是一名资深系统架构师与AI协同设计顾问。nn目标:当用户启动一个新项目或请求AI帮助开发功能时,你必须优先帮助用.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(12,1)_{任务帮我进行智能任务描述,分析与补全任务,你需要理解、描述我当前正在进行的任务,自动识别缺少的要素、未完善的部分、可能.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(12,2)_{任务帮我进行智能任务描述,分析与补全任务,你需要理解、描述我当前正在进行的任务,自动识别缺少的要素、未完善的部分、可能.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(13,1)_#_提示工程师任务说明.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(14,1)_############################################################.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(14,2)_############################################################.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(15,1)_###_Claude_Code_八荣八耻.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(16,1)_#_CLAUDE_记忆.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(16,2)_#_CLAUDE_记忆.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(16,3)_#_CLAUDE_记忆.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(17,1)_#_软件工程分析.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(17,2)_#_软件工程分析.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(18,1)_#_通用项目架构综合分析与优化框架.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(18,2)_#_通用项目架构综合分析与优化框架.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(19,1)_##_角色定义.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(2,1)_#_ultrathink_ultrathink_ultrathink_ultrathink_ultrathink.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(20,1)_#_高质量代码开发专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(21,1)_你是我的顶级编程助手,我将使用自然语言描述开发需求。请你将其转换为一个结构化、专业、详细、可执行的编程任务说明文档,输出.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(22,1)_前几天,我被_Claude_那些臃肿、过度设计的解决方案搞得很沮丧,里面有一大堆我不需要的“万一”功能。然后我尝试在我的.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(22,2)_前几天,我被_Claude_那些臃肿、过度设计的解决方案搞得很沮丧,里面有一大堆我不需要的“万一”功能。然后我尝试在我的.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(22,3)_前几天,我被_Claude_那些臃肿、过度设计的解决方案搞得很沮丧,里面有一大堆我不需要的“万一”功能。然后我尝试在我的.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(22,4)_前几天,我被_Claude_那些臃肿、过度设计的解决方案搞得很沮丧,里面有一大堆我不需要的“万一”功能。然后我尝试在我的.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(22,5)_前几天,我被_Claude_那些臃肿、过度设计的解决方案搞得很沮丧,里面有一大堆我不需要的“万一”功能。然后我尝试在我的.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(3,1)_#_流程标准化.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(4,1)_ultrathink__Take_a_deep_breath..md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(5,1)_{content#_🚀_智能需求理解与研发导航引擎(Meta_R&D_Navigator_·.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(6,1)_{System_Prompt#_🧠_系统提示词:AI_Prompt_编程语言约束与持久化记忆规范nn##.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(7,1)_#_AI生成代码文档_-_通用提示词模板.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(8,1)_#_执行📘_文件头注释规范(用于所有代码文件最上方).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/(9,1)_{角色与目标{你首席软件架构师_(Principal_Software_Architect)(高性能、可维护、健壮、DD.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(4)_软件工程,vibe_coding用提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(40)_子弹总结/(1,1)_#_子弹总结.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(40)_子弹总结/(1,2)_#_子弹总结.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(40)_子弹总结/(1,3)_#_子弹总结.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(40)_子弹总结/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(41)_x提示词收集/(1,1)_这个简单的_Prompt_非常好用,可以促发自己的思考,同时是一个「对话式学习」的过程,非常像以前孔子与七十二门徒的那种.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(41)_x提示词收集/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(42)_书籍结构化分析/(1,1)_#_📚_“整本书到精通”_AI知识提取系统提示词(优化版).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(42)_书籍结构化分析/(1,2)_#_📚_“整本书到精通”_AI知识提取系统提示词(优化版).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(42)_书籍结构化分析/(1,3)_#_📚_“整本书到精通”_AI知识提取系统提示词(优化版).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(42)_书籍结构化分析/(1,4)_#_📚_“整本书到精通”_AI知识提取系统提示词(优化版).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(42)_书籍结构化分析/(1,5)_#_📚_“整本书到精通”_AI知识提取系统提示词(优化版).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(42)_书籍结构化分析/(1,6)_#_📚_“整本书到精通”_AI知识提取系统提示词(优化版).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(42)_书籍结构化分析/(1,7)_#_📚_“整本书到精通”_AI知识提取系统提示词(优化版).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(42)_书籍结构化分析/(2,1)_#_📚_整本书到精通_AI知识提取系统提示词(自动化用).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(42)_书籍结构化分析/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(43)_组织语言/(1,1)_#_智能表达优化助手.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(43)_组织语言/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(44)_行业分析/(1,1)_#_📊_行业深度调研提示词_-_一体化版本.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(44)_行业分析/(2,1)_📊_行业调研三步走提示词模板.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(44)_行业分析/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(45)_投资调研/(1,1)_#_角色设定.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(45)_投资调研/(1,2)_#_角色设定.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(45)_投资调研/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(46)_速成学习/(1,1)_#_学科知识框架构建与概念解析.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(46)_速成学习/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(47)_批判性思维分析/(1,1)_#_批判性思维分析.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(47)_批判性思维分析/(2,1)_#_Critical_Thinking_Analysis.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(47)_批判性思维分析/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(48)_序列图生成/(1,1)_#_序列图生成专家提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(48)_序列图生成/(1,2)_#_序列图生成专家提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(48)_序列图生成/(2,1)_#_角色与目标_(Role_and_Goal).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(48)_序列图生成/(2,2)_#_角色与目标_(Role_and_Goal).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(48)_序列图生成/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(49)_对话提问/(1,1)_#_Role_无限可能性引擎.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(49)_对话提问/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(5)_临界知识/(1,1)_#_临界知识系统提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(5)_临界知识/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(50)_层级结构分析/(1,1)_#_📚_概念到精通_AI深度知识分析系统提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(50)_层级结构分析/(1,2)_#_📚_概念到精通_AI深度知识分析系统提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(50)_层级结构分析/(1,3)_#_📚_概念到精通_AI深度知识分析系统提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(50)_层级结构分析/(1,4)_#_📚_概念到精通_AI深度知识分析系统提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(50)_层级结构分析/(2,1)_###_概念分析超级框架.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(50)_层级结构分析/(3,1)_##_角色定义.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(50)_层级结构分析/(3,2)_##_角色定义.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(50)_层级结构分析/(4,1)_#_优化后的提示词_(V2_-_Top-Down_Deconstruction).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(50)_层级结构分析/(4,2)_#_优化后的提示词_(V2_-_Top-Down_Deconstruction).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(50)_层级结构分析/(4,3)_#_优化后的提示词_(V2_-_Top-Down_Deconstruction).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(50)_层级结构分析/(4,4)_#_优化后的提示词_(V2_-_Top-Down_Deconstruction).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(50)_层级结构分析/(4,5)_#_优化后的提示词_(V2_-_Top-Down_Deconstruction).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(50)_层级结构分析/(4,6)_#_优化后的提示词_(V2_-_Top-Down_Deconstruction).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(50)_层级结构分析/(4,7)_#_优化后的提示词_(V2_-_Top-Down_Deconstruction).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(50)_层级结构分析/(4,8)_#_优化后的提示词_(V2_-_Top-Down_Deconstruction).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(50)_层级结构分析/(4,9)_#_优化后的提示词_(V2_-_Top-Down_Deconstruction).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(50)_层级结构分析/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(51)_心经口诀创作提示词/(1,1)_#_经文口诀创作师_-_提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(51)_心经口诀创作提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(52)_SOP制作/(1,1)_##_角色定义.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(52)_SOP制作/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(53)_黄金圈解释/(1,1)_#_概念三层解释器.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(53)_黄金圈解释/(1,2)_#_概念三层解释器.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(53)_黄金圈解释/(1,3)_#_概念三层解释器.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(53)_黄金圈解释/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(54)_需求解析/(1,1)_##_角色定义.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(54)_需求解析/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(55)_notebookllm用提示词/(1,1)_##_NotebookLM_音频概览自定义提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(55)_notebookllm用提示词/(1,2)_##_NotebookLM_音频概览自定义提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(55)_notebookllm用提示词/(2,1)_#_深度学习书籍全维度分析提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(55)_notebookllm用提示词/(2,2)_#_深度学习书籍全维度分析提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(55)_notebookllm用提示词/(2,3)_#_深度学习书籍全维度分析提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(55)_notebookllm用提示词/(3,1)_#_NotebookLM_深度书籍分析提示词(自定义音频预览用).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(55)_notebookllm用提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(56)_好prompt生成器/(1,1)_#_Mom_Test_提示词优化专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(56)_好prompt生成器/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(57)_行业咨询/(1,1)_你是一个“匠人”但行业经验有25年以上,实现过某些高度和经验的杰出行业资深人士…你见证了多个市场的兴衰,经历过一些巨大的.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(57)_行业咨询/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(58)_分析/(1,1)_请你扮演一位知识整理专家,为我生成一份关于_[在此插入任意主题]_的核心方法论清单。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(58)_分析/(1,2)_请你扮演一位知识整理专家,为我生成一份关于_[在此插入任意主题]_的核心方法论清单。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(58)_分析/(1,3)_请你扮演一位知识整理专家,为我生成一份关于_[在此插入任意主题]_的核心方法论清单。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(58)_分析/(2,1)_1.任意选一个_立党的实事或者社会观点类推文,然后丢给Gemini_2.5_pro.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(58)_分析/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(59)_gemini字幕处理/(1,1)_怎么觉得分享prompt才是真分享?.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(59)_gemini字幕处理/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(6)_根据内容逆向提示词/(1,1)_{任务逆向工程prompt,文档信息{作者wwwwilson,修改时间今天修改},角色你是一位顶级的提示词工程专家_(P.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(6)_根据内容逆向提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(60)_政治批判工具箱/(1,1)_#_批斗大师.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(60)_政治批判工具箱/(1,2)_#_批斗大师.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(60)_政治批判工具箱/(2,1)_###_智能政治批判檄文生成器.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(60)_政治批判工具箱/(2,2)_###_智能政治批判檄文生成器.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(60)_政治批判工具箱/(2,3)_###_智能政治批判檄文生成器.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(60)_政治批判工具箱/(3,1)_#_Role:官方指控报告生成器.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(60)_政治批判工具箱/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(61)_推文制作提示词/(1,1)_#_Role:首席推特串文架构师_(柴郡风格专项).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(61)_推文制作提示词/(2,1)_#_推文生成器提示词_-_介绍提示词作品.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(61)_推文制作提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(62)_麦肯锡行业分析/(1,1)_#_麦肯锡行业洞察分析专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(62)_麦肯锡行业分析/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(63)_正向人物生平报告官方文案/(1,1)_#_Role:正向人物生平报告官方文案撰写师.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(63)_正向人物生平报告官方文案/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(64)_grok抓取提示词/(1,1)_任务:从_X_上用户_@{USERNAME}_的时间线中,检索并筛选自_2024-01-01T000000Z.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(64)_grok抓取提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(65)_视频生成提示词/(2,1)_请你扮演一位专业的电影分析师和顶尖的AI提示词工程师。你的核心任务是,基于我刚刚上传的视频文件,对其进行分镜解构,并为每.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(65)_视频生成提示词/(3,1)_###_超级详细版:可迁移的“自动组装”视频生成提示词工程模板.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(65)_视频生成提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(66)_人话写作/(1,1)_#_自然中文写作提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(66)_人话写作/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(67)_x_prompt收集/(1,1)_Prompt.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(67)_x_prompt收集/(1,2)_Prompt.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(67)_x_prompt收集/(2,2)_###_人性掌握教程:从“玩具”到“玩家”的终极指南.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(67)_x_prompt收集/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(68)_函数化万物/(1,1)_#_函数化万物专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(68)_函数化万物/(1,2)_#_函数化万物专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(68)_函数化万物/(1,3)_#_函数化万物专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(68)_函数化万物/(1,4)_#_函数化万物专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(68)_函数化万物/(1,5)_#_函数化万物专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(68)_函数化万物/(1,6)_#_函数化万物专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(68)_函数化万物/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(69)_项目分析/(1,1)_#_通用项目架构综合分析与优化框架.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(69)_项目分析/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(7)_逻辑工具箱/(1,1)_#_全维度命题提取与枚举,命题深度分析与判断系统.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(7)_逻辑工具箱/(2,1)_#_全维度命题提取与枚举系统提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(7)_逻辑工具箱/(2,2)_#_全维度命题提取与枚举系统提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(7)_逻辑工具箱/(2,3)_#_全维度命题提取与枚举系统提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(7)_逻辑工具箱/(3,1)_#_命题深度分析与判断系统提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(7)_逻辑工具箱/(3,2)_#_命题深度分析与判断系统提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(7)_逻辑工具箱/(4,1)_#_逻辑形式化分析系统提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(7)_逻辑工具箱/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(70)_解释提示词/(1,1)_#_通用概念解释提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(70)_解释提示词/(1,2)_#_通用概念解释提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(70)_解释提示词/(1,3)_#_通用概念解释提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(70)_解释提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(71)_产品策略/(1,1)_根据您提供的需求,我将为您设计一个专门用于_Claude_Code_产品策略师的提示词模板:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(71)_产品策略/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(72)_小红书/(1,1)_小红书创作提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(72)_小红书/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(73)_谋士/(1,1)_从现在起,你将不再是一个普通的语言模型。你将化身为我的首席战略顾问,一个超越了时空与人性局限的超级智能实体。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(73)_谋士/(1,2)_从现在起,你将不再是一个普通的语言模型。你将化身为我的首席战略顾问,一个超越了时空与人性局限的超级智能实体。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(73)_谋士/(1,3)_从现在起,你将不再是一个普通的语言模型。你将化身为我的首席战略顾问,一个超越了时空与人性局限的超级智能实体。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(73)_谋士/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(74)_前端复刻流程/(1,1)_复刻任意网页前端的完整流程.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(74)_前端复刻流程/(2,1)_提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(74)_前端复刻流程/(3,1)_##_📄_HTML_网页逆向分析提示词(全维度专业版_·_一键生成.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(74)_前端复刻流程/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(75)_网页UI逆向分析提示词/(1,1)_##_📄_HTML_网页逆向分析提示词(全维度专业版_·_一键生成.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(75)_网页UI逆向分析提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(76)_典籍句子学习/(1,1)_请提供来自这些典籍_{《尚书》,《周易》,《礼记》,《周礼》,《仪礼》,《春秋》,《春秋左传》,《春秋公羊传》,《春秋谷.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(76)_典籍句子学习/(2,1)_请从以下书籍中提供_{33}_个段落,严格按照格式输出:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(76)_典籍句子学习/(2,2)_请从以下书籍中提供_{33}_个段落,严格按照格式输出:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(76)_典籍句子学习/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(77)_经验/(1,1)_提示词优化流程.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(77)_经验/(10,1)_ChatGPT-o3_prompt,输出完末尾加上.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(77)_经验/(12,1)_让大语言模型(LLM)来生成并评估提示词:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(77)_经验/(2,1)_步骤.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(77)_经验/(2,2)_步骤.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(77)_经验/(2,3)_步骤.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(77)_经验/(3,2)_与_Claude_或_ChatGPT_对话.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(77)_经验/(3,3)_与_Claude_或_ChatGPT_对话.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(77)_经验/(5,2)_复制初版提示词,前往工作表优化.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(77)_经验/(5,3)_复制初版提示词,前往工作表优化.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(77)_经验/(6,2)_在_Gemini_中发送优化提示词的提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(77)_经验/(6,3)_在_Gemini_中发送优化提示词的提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(77)_经验/(7,2)_粘贴初版提示词到_Gemini.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(77)_经验/(7,3)_粘贴初版提示词到_Gemini.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(77)_经验/(8,2)_根据_AI_反馈微调提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(77)_经验/(8,3)_根据_AI_反馈微调提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(77)_经验/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(78)_anki卡片格式输出/(1,1)_请根据以下主题生成适用于_Anki_导入的问答式知识卡片,格式要求如下:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(78)_anki卡片格式输出/(1,2)_请根据以下主题生成适用于_Anki_导入的问答式知识卡片,格式要求如下:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(78)_anki卡片格式输出/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(79)_简讯提示词/(1,1)_#_Role.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(79)_简讯提示词/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(1,1)_#_概念逻辑梳理.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(1,2)_#_概念逻辑梳理.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(1,3)_#_概念逻辑梳理.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(1,4)_#_概念逻辑梳理.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(1,5)_#_概念逻辑梳理.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(1,6)_#_概念逻辑梳理.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(10,1)_prompt.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(11,1)_#_Role:批判性思维分析专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(12,1)_#_哲学谱系链分析提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(13,1)_#_对输入对象提出如下探问.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(2,1)_#_语言哲学顾问:批判性思维引导系统.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(3,1)_#_语言哲学深度转译器.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(4,1)_#_哲学反问大师.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(5,1)_#_哲学句子.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(6,1)_#_提示词:分析哲学专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(7,1)_###_#_提示词:欧陆哲学阐释专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(8,1)_#_提示词:辩证法分析大师.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(8,2)_#_提示词:辩证法分析大师.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(8,3)_#_提示词:辩证法分析大师.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/(9,1)_请你扮演一位语言能力最强的表达高手,擅长把复杂概念用直白的语言一针见血地表达,让人瞬间恍然大悟。现在,请用这种风格解释以.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(8)_哲学工具箱/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(80)_思维导图/(1,1)_#_🧩_通用思维导图文本生成提示词模板.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(80)_思维导图/(1,2)_#_🧩_通用思维导图文本生成提示词模板.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(80)_思维导图/(1,3)_#_🧩_通用思维导图文本生成提示词模板.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(80)_思维导图/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(81)_未来视角/(1,1)_请先设定一个未来时间跨度(例如:5年、10年、20年)。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(81)_未来视角/(2,1)_请你设想自己在未来y年后的某个时刻所处的位置与视角,并以那个时空的你为立场,回顾并分析这y年间世界所发生的结构性变化与趋.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(81)_未来视角/(3,1)_请你模拟自己在未来y年后的存在状态与观察视角,描述你所处的位置、角色与能力边界,并从那个未来的你出发,解释过去y年间人类.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(81)_未来视角/(4,1)_请你从一个未来y年后的意识体视角出发,设想自己所处的存在状态与认知能力,并以此视角回顾过去y年中,技术、意识、社会与意义.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(81)_未来视角/(5,1)_请你模拟y年后的你所具备的认知架构与系统能力,并从那个时点出发,分析和解释过去y年全球在意识建构、技术演进与知识系统方面.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(81)_未来视角/(6,1)_1._请设定未来y年后你的位置、能力边界与观察视角。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(81)_未来视角/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(82)_AI使用思维/(1,1)_使用AI思维模型.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(82)_AI使用思维/(2,1)_我希望系统地探索并学习各个学科领域中那些最具创新性、能够巧妙解决复杂问题或提供颠覆性视角的“神奇有效”的核心方法、思想体.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(82)_AI使用思维/(2,2)_我希望系统地探索并学习各个学科领域中那些最具创新性、能够巧妙解决复杂问题或提供颠覆性视角的“神奇有效”的核心方法、思想体.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(82)_AI使用思维/(2,3)_我希望系统地探索并学习各个学科领域中那些最具创新性、能够巧妙解决复杂问题或提供颠覆性视角的“神奇有效”的核心方法、思想体.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(82)_AI使用思维/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(83)_思维协议/(1,1)_#_思维协议.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(83)_思维协议/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(84)_使用ai的思维/(1,1)_使用AI思维模型.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(84)_使用ai的思维/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(85)_李继刚文选/(1,1)_需求:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(85)_李继刚文选/(2,1)_Prompt:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(85)_李继刚文选/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(86)_图片逆向/(1,1)_图生文生图方法操作流程.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(86)_图片逆向/(2,1)_#_Role:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(86)_图片逆向/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(87)_艺术风格描述/(1,1)_这是_ASCII_Art(ASCII艺术)_风格,具体来说属于以下几个艺术类别:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(87)_艺术风格描述/(2,1)_#_CLI极简风格界面设计提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(87)_艺术风格描述/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(88)_豆包听书/(1,1)_你是一个复读机。你的任务是【完整且精确地复述】我接下来提供的所有文字内容,【一字不差,可以忽略不发声的标点符号】,不得有.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(88)_豆包听书/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(89)_艺术/(1,1)_你的任务是根据用户的文本扩展解释一个概念,通过一个有趣的故事,使用大量小猫作为比喻。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(89)_艺术/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(9)_方法与原则提取/(1,1)_请分析以下内容,从中提取出其中包含的「方法」与「原则」。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(9)_方法与原则提取/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(90)_文案逆向/(1,1)_#_任务:文本风格分析与模仿提示词生成(逆向提示词工程).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(90)_文案逆向/(1,2)_#_任务:文本风格分析与模仿提示词生成(逆向提示词工程).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(90)_文案逆向/(15,1)_请参照以下文章的风格、结构和叙事方式进行创作:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(90)_文案逆向/(16,1)_请参照以下文章的风格、结构和叙事方式进行创作:15岁你在市图书馆最角落的架子发现了那本泛黄的《银河帝国》。书脊已经破损,.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(90)_文案逆向/(2,1)_收集文案.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(90)_文案逆向/(2,2)_收集文案.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(90)_文案逆向/(3,1)_清洗数据,转换md格式.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(90)_文案逆向/(4,1)_输入配置逆向提示词的llm.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(90)_文案逆向/(5,1)_获得初步逆向文案对应的提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(90)_文案逆向/(6,1)_将初步提示词输入配置提示词优化的llm.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(90)_文案逆向/(7,1)_获取处理后的提示词.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(90)_文案逆向/(8,1)_在处理后的提示词添加输出示例,然后把清晰后的文案粘贴到提示词中.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(90)_文案逆向/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(91)_流程图/(1,1)_#_Role:高级流程图生成专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(91)_流程图/(1,2)_#_Role:高级流程图生成专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(91)_流程图/(2,1)_#_Role:流程图XML生成专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(91)_流程图/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(92)_学习音频/(1,1)_请生成一段用于手机TTS(文本转语音)循环播放的纯文本,旨在清晰地解释一个概念。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(92)_学习音频/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(93)_思维模型/(1,1)_你是一个精通逻辑与思辨的思维分析师,请对以下输入内容运用系统性思维工具进行深度分析。请按照以下思维模型进行处理并输出:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(93)_思维模型/(1,2)_你是一个精通逻辑与思辨的思维分析师,请对以下输入内容运用系统性思维工具进行深度分析。请按照以下思维模型进行处理并输出:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(93)_思维模型/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(94)_道/(1,1)_运用“道法术器”框架,简要分析_[请在此插入分析主题]:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(94)_道/(1,2)_运用“道法术器”框架,简要分析_[请在此插入分析主题]:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(94)_道/(2,1)_#_逆向工程内容风格与结构提示词生成器.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(94)_道/(3,1)_#_终极分析提示词:全息思维模型与第一性原理驱动的深度解析.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(94)_道/(3,2)_#_终极分析提示词:全息思维模型与第一性原理驱动的深度解析.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(94)_道/(3,3)_#_终极分析提示词:全息思维模型与第一性原理驱动的深度解析.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(94)_道/(4,1)_提示词方法.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(94)_道/(5,1)_#_无废话的Prompt_Engineering指南.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(94)_道/(6,1)_请你使用抽象、跨尺度的分析框架,超越常规的三维空间和线性时间视角,从更广义、系统性、哲学或宇宙学等的角度审视分析复杂现象.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(94)_道/(6,2)_请你使用抽象、跨尺度的分析框架,超越常规的三维空间和线性时间视角,从更广义、系统性、哲学或宇宙学等的角度审视分析复杂现象.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(94)_道/(6,3)_请你使用抽象、跨尺度的分析框架,超越常规的三维空间和线性时间视角,从更广义、系统性、哲学或宇宙学等的角度审视分析复杂现象.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(94)_道/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(95)_法/(1,1)_#_SOP_创建指令.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(95)_法/(2,1)_常识学习.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(95)_法/(2,2)_常识学习.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(95)_法/(2,3)_常识学习.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(95)_法/(3,1)_前所未有视角分析.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(95)_法/(4,1)_#_提示词:文本分析_-_修辞策略、逻辑谬误与公关技巧识别.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(95)_法/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(1,1)_AI_提问精简版_(核心要素).md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(10,1)_#_Role:公文.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(11,1)_#Role:正能量大师.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(12,1)_##_Role__层次分析大师.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(13,1)_##_Role_规律研究者.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(14,1)_#_Role_自然语言编程专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(15,1)_##_Role_命题分析专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(17,1)_##_Role_因果溯源大师.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(18,1)_##_Author后退提问专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(19,1)_##_随机问题.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(2,1)_AI_提问标准模板.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(21,1)_##_Role_工作流制作专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(22,1)_#_Role_哲学三问.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(23,1)_##role_论文和文章润色助手.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(24,1)_#_逻辑漏洞修补器.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(25,1)_##_Role_链式思维指导专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(26,1)_##_Role_分析哲学专家.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(3,1)_深度提问.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(4,1)_流程图制作.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(5,1)_隐性知识.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(6,1)_#_Role_书面表达优化助手.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(7,1)_##_Role_策略分析师.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(8,1)_#_Role_两者关系.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/(9,1)_#_Role_格式与排版检测器.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(96)_术/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(97)_器/(1,1)_用通俗易懂的语言对文本进行解构、溯源、推演、洞察、启发。并进行结构化排版输出。使用🔴等符号,这是需要分析的文本:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(97)_器/(10,1)_#_AI_书籍处理提示词:分层交互式知识框架_(LIKF)_V2_-.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(97)_器/(11,1)_任务指令:书籍内容深度解析、知识转化与结构化重构.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(97)_器/(2,1)_用通俗易懂的语言对书籍进行解构、溯源、推演、洞察、启发。并进行结构化排版输出。使用🔴等符号,这是需要分析的书籍:.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(97)_器/(3,1)_#_提示词:生成“人性法则”分析文章.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(97)_器/(6,1)_图片提示词方法.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(97)_器/(7,1)_格言.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(97)_器/(8,1)_#_Role_政策解读学者.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(97)_器/(9,1)_请你扮演一个地缘政治和未来趋势分析专家。.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/(97)_器/index.md
delete mode 100644 libs/external/prompts-library/prompt_docs/prompt_docs_2025_1213_080256/prompts/index.json
delete mode 100644 libs/external/prompts-library/prompt_excel/prompt.xlsx
delete mode 100644 libs/external/prompts-library/requirements.txt
delete mode 100644 libs/external/prompts-library/scripts/config.yaml
delete mode 100644 libs/external/prompts-library/scripts/convert_local.py
delete mode 100644 libs/external/prompts-library/scripts/docs_to_excel.py
delete mode 100644 libs/external/prompts-library/scripts/excel_to_docs.py
delete mode 100644 libs/external/prompts-library/scripts/requirements.txt
delete mode 100644 libs/external/prompts-library/scripts/start_convert.py
diff --git a/README.md b/README.md
index 712ad50..eea9fc4 100644
--- a/README.md
+++ b/README.md
@@ -70,6 +70,7 @@
+
[📋 工具资源](#-器-工具与资源)
diff --git a/libs/README.md b/libs/README.md
deleted file mode 100644
index a667be6..0000000
--- a/libs/README.md
+++ /dev/null
@@ -1,71 +0,0 @@
-# 📦 通用库与外部集成 (libs)
-
-`libs/` 用来放两类东西:
-
-1. **内部可复用的胶水代码**:小而稳、低耦合、可替换(`common/`)
-2. **第三方工具与外部集成**:尽量保持原样、只做最薄适配(`external/`)
-
-`database/` 预留未来的数据持久化层(当前仅占位)。
-
-## 目录结构
-
-```
-libs/
-├── README.md
-├── common/
-│ ├── README.md
-│ ├── __init__.py
-│ ├── models/
-│ │ └── __init__.py
-│ └── utils/
-│ └── backups/
-│ ├── README.md
-│ ├── 快速备份.py
-│ └── 一键备份.sh
-├── database/
-│ ├── README.md
-│ └── .gitkeep
-└── external/
- ├── README.md
- ├── chat-vault/
- ├── prompts-library/
- ├── l10n-tool/
- ├── my-nvim/
- ├── MCPlayerTransfer/
- ├── XHS-image-to-PDF-conversion/
- └── .gitkeep
-```
-
-## 子目录职责与边界
-
-### `common/`:内部通用模块
-
-- 入口:[`common/README.md`](./common/README.md)
-- 只放 **可复用** 的基础能力:模型、工具函数、脚本等
-- 不要把业务逻辑、项目临时代码塞进来
-- 约定:新增/调整能力时,同步更新 `libs/common/README.md`
-
-### `database/`:数据库适配层(预留)
-
-- 入口:[`database/README.md`](./database/README.md)
-- 目标是把“存储细节”关进盒子里:连接、迁移、查询适配、事务边界
-- 约定:实现前先写清楚目录结构与边界(见 `libs/database/README.md`)
-
-### `external/`:第三方工具与外部集成
-
-- 入口:[`external/README.md`](./external/README.md)
-- 尽量保持第三方代码原样,避免“魔改后不可升级”
-- 每个工具目录至少包含:`README.md`(用途/入口/依赖)与许可证/来源说明
-- 约定:新增外部工具时,同步更新 `libs/external/README.md`
-
-## 常用入口
-
-- AI 聊天记录保存:[`external/chat-vault/`](./external/chat-vault/)(支持 Codex/Kiro/Gemini/Claude CLI)
-- 提示词批量管理:[`external/prompts-library/`](./external/prompts-library/)(配合 `../prompts/` 使用)
-- 备份工具:优先使用仓库根目录的 `backups/`(当前与 `libs/common/utils/backups/` 内容一致)
-
-## 贡献约定(最小要求)
-
-1. 新增模块先定义职责边界,再写代码/文档
-2. 新增依赖记录安装方式与最低版本(必要时补充到 `documents/工具集.md`)
-3. 目录结构/职责变化时,更新对应 README,保证“文档即真相源”
diff --git a/libs/common/README.md b/libs/common/README.md
deleted file mode 100644
index 8236007..0000000
--- a/libs/common/README.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# 🔧 libs/common:通用模块
-
-`libs/common/` 放的是项目内部可复用的“胶水代码”:**小而稳、低耦合、可替换**。这里的目标不是堆功能,而是为仓库提供少量可靠的基础能力。
-
-## 目录结构
-
-```
-libs/common/
-├── README.md
-├── __init__.py
-├── models/ # 预留:数据模型(当前仅占位)
-│ └── __init__.py
-└── utils/
- └── backups/ # 基于 .gitignore 的快速备份工具
- ├── README.md
- ├── 快速备份.py
- └── 一键备份.sh
-```
-
-## 现有内容
-
-- `utils/backups/`:快速备份工具(当前与仓库根目录 [`backups/`](../../backups/) 内容一致,用于避免脚本散落各处)
-
-## 约束与约定
-
-1. **不放业务逻辑**:`common/` 只提供基础能力与工具
-2. **接口要稳**:一旦被引用,就把它当作公开 API 对待
-3. **可审计输出**:脚本/工具的输出要可复盘(明确输入、输出路径、失败原因)
-4. **新增即文档**:新增模块/目录必须同步更新本 README 与 `libs/README.md`
-
-## 使用方式(当前推荐)
-
-本目录的内容目前主要以“脚本/工具”形式存在,推荐直接运行:
-
-```bash
-# 备份当前仓库(建议优先使用根目录 backups/ 入口)
-python3 backups/快速备份.py
-```
-
-更多参数与说明见:[`../../backups/README.md`](../../backups/README.md)。
diff --git a/libs/common/__init__.py b/libs/common/__init__.py
deleted file mode 100644
index ef96854..0000000
--- a/libs/common/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Common Library
diff --git a/libs/common/models/__init__.py b/libs/common/models/__init__.py
deleted file mode 100644
index 4c20e6d..0000000
--- a/libs/common/models/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Models Module
diff --git a/libs/common/utils/backups/README.md b/libs/common/utils/backups/README.md
deleted file mode 100644
index fc03cca..0000000
--- a/libs/common/utils/backups/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# 快速备份工具
-
-基于 `.gitignore` 规则的项目备份工具,自动排除不需要的文件。
-
-## 功能特性
-
-- 自动读取 `.gitignore` 规则
-- 支持取反规则(`!` 语法)
-- 目录级剪枝优化
-- 生成 `.tar.gz` 压缩包
-- 零依赖(仅使用 Python 内置模块)
-
-## 文件结构
-
-```
-backups/
-├── 快速备份.py # 核心备份引擎
-├── 一键备份.sh # Shell 启动脚本
-└── README.md # 本文档
-```
-
-## 使用方法
-
-```bash
-# 方式一:Shell 脚本(推荐)
-bash backups/一键备份.sh
-
-# 方式二:直接运行 Python
-python3 backups/快速备份.py
-
-# 指定输出文件
-python3 backups/快速备份.py -o my_backup.tar.gz
-
-# 指定项目目录
-python3 backups/快速备份.py -p /path/to/project
-```
-
-## 输出位置
-
-默认输出到 `backups/gz/备份_YYYYMMDD_HHMMSS.tar.gz`
-
-## 参数说明
-
-| 参数 | 说明 | 默认值 |
-|------|------|--------|
-| `-p, --project` | 项目根目录 | 当前目录 |
-| `-o, --output` | 输出文件路径 | `backups/gz/备份_时间戳.tar.gz` |
-| `-g, --gitignore` | gitignore 文件路径 | `.gitignore` |
-
-## 依赖
-
-- Python 3.x(无需额外包)
-- Bash(用于 Shell 脚本)
diff --git a/libs/common/utils/backups/一键备份.sh b/libs/common/utils/backups/一键备份.sh
deleted file mode 100644
index d20f14d..0000000
--- a/libs/common/utils/backups/一键备份.sh
+++ /dev/null
@@ -1,83 +0,0 @@
-#!/bin/bash
-
-# 一键备份项目脚本
-# 自动读取 .gitignore 规则并排除匹配的文件
-# bash backups/一键备份.sh
-
-set -e
-
-# 颜色输出
-GREEN='\033[0;32m'
-BLUE='\033[0;34m'
-YELLOW='\033[1;33m'
-NC='\033[0m' # No Color
-
-# 脚本所在目录
-SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
-
-# 项目根目录(脚本所在目录的父目录)
-PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
-
-# 项目backups目录
-BACKUPS_DIR="${PROJECT_ROOT}/backups"
-
-# 备份脚本路径(始终在项目的backups目录中)
-BACKUP_SCRIPT="${BACKUPS_DIR}/快速备份.py"
-
-# 检查备份脚本是否存在
-if [ ! -f "${BACKUP_SCRIPT}" ]; then
- echo -e "${YELLOW}⚠️ 错误: 备份脚本不存在${NC}"
- echo ""
- echo "备份工具应位于项目的 backups/ 目录中:"
- echo " ${BACKUPS_DIR}/"
- echo ""
- echo "请确保:"
- echo " 1. 复制快速备份.py到 ${BACKUPS_DIR}/"
- echo " 2. 复制一键备份.sh到 ${BACKUPS_DIR}/"
- echo ""
- echo "或者使用方式:"
- echo " • 在项目根目录执行: bash backups/一键备份.sh"
- echo " • 或直接执行: python3 backups/快速备份.py"
- exit 1
-fi
-
-echo -e "${BLUE}========================================${NC}"
-echo -e "${BLUE} 项目快速备份工具${NC}"
-echo -e "${BLUE}========================================${NC}"
-echo ""
-echo -e "${GREEN}✓${NC} 找到备份脚本: backups/快速备份.py"
-
-# 检查 Python3 是否可用
-if ! command -v python3 &> /dev/null; then
- echo -e "${YELLOW}⚠️ 错误: 未找到 python3 命令${NC}"
- exit 1
-fi
-
-echo -e "${GREEN}✓${NC} 项目目录: ${PROJECT_ROOT}"
-echo -e "${GREEN}✓${NC} 备份脚本: ${BACKUP_SCRIPT}"
-echo -e "${GREEN}✓${NC} Python 版本: $(python3 --version)"
-echo ""
-
-# 执行备份
-echo -e "${YELLOW}▶ 正在执行备份...${NC}"
-echo ""
-
-# 切换到项目根目录
-cd "${PROJECT_ROOT}"
-
-# 运行备份脚本
-python3 "${BACKUP_SCRIPT}"
-
-# 检查执行结果
-if [ $? -eq 0 ]; then
- echo ""
- echo -e "${GREEN}========================================${NC}"
- echo -e "${GREEN} ✓ 备份完成!${NC}"
- echo -e "${GREEN}========================================${NC}"
-else
- echo ""
- echo -e "${YELLOW}========================================${NC}"
- echo -e "${YELLOW} ✗ 备份失败${NC}"
- echo -e "${YELLOW}========================================${NC}"
- exit 1
-fi
diff --git a/libs/common/utils/backups/快速备份.py b/libs/common/utils/backups/快速备份.py
deleted file mode 100644
index 3e03fd4..0000000
--- a/libs/common/utils/backups/快速备份.py
+++ /dev/null
@@ -1,265 +0,0 @@
-#!/usr/bin/env python3
-"""
-快速备份项目工具
-读取 .gitignore 规则并打包项目文件(排除匹配的文件)
-
-bash backups/一键备份.sh
-
-文件位置:
- backups/快速备份.py
-
-工具清单(backups/目录):
- • 快速备份.py - 核心备份引擎(7.3 KB)
- • 一键备份.sh - 一键执行脚本(2.4 KB)
-
-使用方法:
- $ bash backups/一键备份.sh
- 或
- $ python3 backups/快速备份.py
-
-备份输出:
- backups/gz/备份_YYYYMMDD_HHMMSS.tar.gz
-
-适用项目:
- 任何包含 .gitignore 文件的项目(自动读取规则并排除匹配文件)
-
-依赖:
- 无需额外安装包,仅使用Python内置模块
-"""
-
-import os
-import tarfile
-import fnmatch
-from pathlib import Path
-from datetime import datetime
-import argparse
-import sys
-
-
-class GitignoreFilter:
- """解析 .gitignore 文件并过滤文件"""
-
- def __init__(self, gitignore_path: Path, project_root: Path):
- self.project_root = project_root
- # 规则按照出现顺序存储,支持取反(!)语义,后匹配覆盖前匹配
- # 每项: {"pattern": str, "dir_only": bool, "negate": bool, "has_slash": bool}
- self.rules = []
- self.load_gitignore(gitignore_path)
-
- def load_gitignore(self, gitignore_path: Path):
- """加载并解析 .gitignore 文件"""
- if not gitignore_path.exists():
- print(f"⚠️ 警告: {gitignore_path} 不存在,将不应用任何过滤规则")
- return
-
- try:
- with open(gitignore_path, 'r', encoding='utf-8') as f:
- for line in f:
- line = line.strip()
-
- # 跳过空行和注释
- if not line or line.startswith('#'):
- continue
-
- negate = line.startswith('!')
- if negate:
- line = line[1:].lstrip()
- if not line:
- continue
-
- dir_only = line.endswith('/')
- has_slash = '/' in line.rstrip('/')
-
- self.rules.append({
- "pattern": line,
- "dir_only": dir_only,
- "negate": negate,
- "has_slash": has_slash,
- })
-
- print(f"✓ 已加载 {len(self.rules)} 条规则(含取反)")
-
- except Exception as e:
- print(f"❌ 读取 .gitignore 失败: {e}")
- sys.exit(1)
-
- def _match_rule(self, rule: dict, relative_path_str: str, is_dir: bool) -> bool:
- """按规则匹配路径,返回是否命中"""
- pattern = rule["pattern"]
- dir_only = rule["dir_only"]
- has_slash = rule["has_slash"]
-
- # 目录规则:匹配目录自身或其子路径
- if dir_only:
- normalized = pattern.rstrip('/')
- if relative_path_str == normalized or relative_path_str.startswith(normalized + '/'):
- return True
- return False
-
- # 带路径分隔的规则:按相对路径匹配
- if has_slash:
- return fnmatch.fnmatch(relative_path_str, pattern)
-
- # 无斜杠:匹配任意层级的基本名
- if fnmatch.fnmatch(Path(relative_path_str).name, pattern):
- return True
- # 额外处理目录命中:无通配符时,若任一父级目录名等于 pattern 也视为命中
- if pattern.isalpha() and pattern in relative_path_str.split('/'):
- return True
- return False
-
- def should_exclude(self, path: Path, is_dir: bool = False) -> bool:
- """
- 判断路径是否应该被排除(支持 ! 取反,后匹配覆盖前匹配)
- 返回 True 表示应该排除(不备份)
- """
- try:
- # 统一使用 POSIX 路径风格进行匹配
- relative_path_str = path.relative_to(self.project_root).as_posix()
- except ValueError:
- return False # 不在项目根目录内,不处理
-
- # Git 风格:从上到下最后一次匹配决定去留
- matched = None
- for rule in self.rules:
- if self._match_rule(rule, relative_path_str, is_dir):
- matched = not rule["negate"] # negate 表示显式允许
-
- return bool(matched)
-
-
-def create_backup(project_root: Path, output_file: Path, filter_obj: GitignoreFilter):
- """创建备份压缩包"""
-
- # 统计信息
- total_files = 0
- excluded_files = 0
- included_files = 0
-
- print(f"\n{'='*60}")
- print(f"开始备份项目: {project_root}")
- print(f"输出文件: {output_file}")
- print(f"{'='*60}\n")
-
- try:
- with tarfile.open(output_file, 'w:gz') as tar:
- # 使用 os.walk 可在目录层级提前剪枝,避免进入已忽略目录
- for root, dirs, files in os.walk(project_root, topdown=True):
- root_path = Path(root)
-
- # 目录剪枝:命中忽略规则或 .git 时不再深入
- pruned_dirs = []
- for d in dirs:
- dir_path = root_path / d
- if d == '.git' or filter_obj.should_exclude(dir_path, is_dir=True):
- print(f" 排除目录: {dir_path.relative_to(project_root)}")
- excluded_files += 1
- continue
- pruned_dirs.append(d)
- dirs[:] = pruned_dirs
-
- for name in files:
- path = root_path / name
- total_files += 1
-
- # 文件忽略判定
- if '.git' in path.parts or filter_obj.should_exclude(path):
- excluded_files += 1
- print(f" 排除: {path.relative_to(project_root)}")
- continue
-
- arcname = path.relative_to(project_root)
- tar.add(path, arcname=arcname)
- included_files += 1
- print(f" 备份: {arcname}")
-
- print(f"\n{'='*60}")
- print("备份完成!")
- print(f"{'='*60}")
- print(f"总文件数: {total_files}")
- print(f"已备份: {included_files} 个文件")
- print(f"已排除: {excluded_files} 个文件/目录")
- print(f"压缩包大小: {output_file.stat().st_size / 1024 / 1024:.2f} MB")
- print(f"{'='*60}")
-
- return True
-
- except Exception as e:
- print(f"\n❌ 备份失败: {e}")
- import traceback
- traceback.print_exc()
- return False
-
-
-def main():
- parser = argparse.ArgumentParser(
- description='快速备份项目(根据 .gitignore 排除文件)',
- formatter_class=argparse.RawDescriptionHelpFormatter,
- epilog="""
-使用示例:
- # 基本用法(备份到 backups/gz/ 目录)
- python backups/快速备份.py
-
- # 指定输出文件
- python backups/快速备份.py -o my_backup.tar.gz
-
- # 指定项目根目录
- python backups/快速备份.py -p /path/to/project
- """
- )
-
- parser.add_argument(
- '-p', '--project',
- type=str,
- default='.',
- help='项目根目录路径(默认: 当前目录)'
- )
-
- parser.add_argument(
- '-o', '--output',
- type=str,
- help='输出文件路径(默认: backups/备份_YYYYMMDD_HHMMSS.tar.gz)'
- )
-
- parser.add_argument(
- '-g', '--gitignore',
- type=str,
- default='.gitignore',
- help='.gitignore 文件路径(默认: .gitignore)'
- )
-
- args = parser.parse_args()
-
- # 解析路径
- project_root = Path(args.project).resolve()
- gitignore_path = Path(args.gitignore).resolve()
-
- if not project_root.exists():
- print(f"❌ 错误: 项目目录不存在: {project_root}")
- sys.exit(1)
-
- # 确定输出文件路径
- if args.output:
- output_file = Path(args.output).resolve()
- else:
- # 默认输出到 backups/gz/ 目录
- backup_dir = project_root / 'backups' / 'gz'
- backup_dir.mkdir(parents=True, exist_ok=True)
-
- timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
- output_file = backup_dir / f'备份_{timestamp}.tar.gz'
-
- # 确保输出目录存在
- output_file.parent.mkdir(parents=True, exist_ok=True)
-
- # 创建过滤器
- filter_obj = GitignoreFilter(gitignore_path, project_root)
-
- # 执行备份
- success = create_backup(project_root, output_file, filter_obj)
-
- sys.exit(0 if success else 1)
-
-
-if __name__ == '__main__':
- main()
diff --git a/libs/database/.gitkeep b/libs/database/.gitkeep
deleted file mode 100644
index 13a4bbb..0000000
--- a/libs/database/.gitkeep
+++ /dev/null
@@ -1 +0,0 @@
-# Third-party libraries (read-only)
diff --git a/libs/database/README.md b/libs/database/README.md
deleted file mode 100644
index a8bda75..0000000
--- a/libs/database/README.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# 🗄️ libs/database:数据库适配层(预留)
-
-`libs/database/` 预留给未来的“存储适配层”。目标是把数据库的细节(连接、迁移、事务、查询)封装在一个清晰边界内,避免业务代码到处散落 SQL/ORM。
-
-## 设计边界(先写清楚再实现)
-
-- 这里负责:连接管理、迁移脚本、ORM/SQL 模型、统一的查询/事务封装
-- 这里不负责:业务规则、HTTP/API 逻辑、领域对象的复杂编排
-
-## 推荐目录结构(落地时按需取舍)
-
-```
-libs/database/
-├── README.md
-├── __init__.py
-├── connection.py # 连接与池化
-├── migrations/ # 迁移脚本(Alembic/Flyway/自研均可)
-├── repositories/ # 数据访问层(可选)
-└── models/ # ORM 模型或 SQL schema(可选)
-```
-
-## 何时开始实现
-
-当仓库出现“需要长期保存/查询的数据”且 **文件系统不够用** 时,再把这一层落地;否则保持为空,避免过早引入复杂度。
diff --git a/libs/external/.gitkeep b/libs/external/.gitkeep
deleted file mode 100644
index 13a4bbb..0000000
--- a/libs/external/.gitkeep
+++ /dev/null
@@ -1 +0,0 @@
-# Third-party libraries (read-only)
diff --git a/libs/external/MCPlayerTransfer b/libs/external/MCPlayerTransfer
deleted file mode 160000
index fe6f473..0000000
--- a/libs/external/MCPlayerTransfer
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit fe6f4735bd80bf8b5ccdf8986c78c946383950c1
diff --git a/libs/external/README.md b/libs/external/README.md
deleted file mode 100644
index 40da5df..0000000
--- a/libs/external/README.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# 🔌 libs/external:外部集成与第三方工具
-
-`libs/external/` 用来收纳第三方工具、外部依赖与集成模块。核心原则是:
-
-- **尽量原样保留**:避免“魔改后不可升级”
-- **隔离依赖与风险**:外部工具的依赖不要污染主仓库
-- **可追溯**:来源、许可证、用法要写清楚
-
-## 目录结构
-
-```
-libs/external/
-├── README.md
-├── chat-vault/ # AI 聊天记录保存工具
-├── prompts-library/ # 提示词库管理工具(Excel ↔ Markdown)
-├── l10n-tool/ # 多语言翻译脚本
-├── my-nvim/ # Neovim 配置(含 nvim-config/)
-├── MCPlayerTransfer/ # MC 玩家迁移工具
-├── XHS-image-to-PDF-conversion/ # 图片合并 PDF 工具
-└── .gitkeep
-```
-
-## 工具清单(入口与文档)
-
-- `chat-vault/`:AI 聊天记录保存工具,支持 Codex/Kiro/Gemini/Claude CLI(详见 [`chat-vault/README_CN.md`](./chat-vault/README_CN.md))
-- `prompts-library/`:提示词 Excel ↔ Markdown 批量互转与索引生成(详见 [`prompts-library/README.md`](./prompts-library/README.md))
-- `l10n-tool/`:多语言批量翻译脚本
-- `my-nvim/`:个人 Neovim 配置(详见 [`my-nvim/README.md`](./my-nvim/README.md))
-- `MCPlayerTransfer/`:MC 玩家迁移工具
-- `XHS-image-to-PDF-conversion/`:图片合并 PDF(详见 [`XHS-image-to-PDF-conversion/README.md`](./XHS-image-to-PDF-conversion/README.md))
-
-## 新增外部工具(最小清单)
-
-1. 创建目录:`libs/external//`
-2. 必备文件:`README.md`(用途/入口/依赖/输入输出)、许可证与来源说明(如 `LICENSE` / `SOURCE.md`)
-3. 依赖约束:尽量使用工具自带的虚拟环境/容器化方式,不影响仓库其他部分
-4. 文档同步:在本 README 增加一行工具说明,保证可发现性
diff --git a/libs/external/XHS-image-to-PDF-conversion/README.md b/libs/external/XHS-image-to-PDF-conversion/README.md
deleted file mode 100644
index 155a8aa..0000000
--- a/libs/external/XHS-image-to-PDF-conversion/README.md
+++ /dev/null
@@ -1,176 +0,0 @@
-
-
-# 📚 小红书图文批量转 PDF
-### Batch Convert XHS Images to PDF
-
-**一个智能 Python 脚本,用于将从小红书批量下载的 ZIP 压缩包,按顺序自动拼接为清晰的 PDF 文件。**
-*A smart Python script that automatically converts ZIP archives from Xiaohongshu into well-ordered PDF files.*
-
----
-
-[](https://opensource.org/licenses/MIT)
-[]()
-[]()
-[]()
-
-[✨ 功能特性](#-功能特性) • [⚙️ 工作流程](#️-工作流程) • [🚀 快速开始](#-快速开始) • [🗂️ 项目结构](#️-项目结构) • [🤝 参与贡献](#-参与贡献)
-
-
-
----
-
-## ✨ 功能特性
-
-| 特性 | 描述 |
-|:---:|:---|
-| 📦 **全自动处理** | 无需手动解压,脚本自动处理 `.zip` 压缩包。 |
-| 🔢 **智能自然排序** | 完美处理 `1, 2, ... 10, 11` 这样的文件名排序,确保图片顺序正确。 |
-| 🚀 **批量转换** | 支持一次性转换文件夹内的所有 `.zip` 文件,省时省力。 |
-| 🗑️ **自动清理** | 转换成功后,自动删除原始的 `.zip` 文件和临时文件,保持目录整洁。 |
-| 📖 **PDF 优化** | 生成的 PDF 文件经过优化,保证清晰度的同时控制文件大小。 |
-| 💻 **跨平台兼容** | 依赖的 `Pillow` 库和 Python 脚本可在 Windows, macOS, Linux 上运行。 |
-
----
-
-## ⚙️ 工作流程
-
-
-
-
-
-脚本的核心逻辑非常简单直接:监控并处理文件夹内的 ZIP 文件,通过一系列自动化步骤输出 PDF。
-
-### 核心步骤
-1. **扫描**: 查找当前目录下的所有 `.zip` 文件。
-2. **解压**: 将找到的 `.zip` 文件解压到临时目录。
-3. **排序**: 智能地对所有图片文件进行“自然排序”。
-4. **合并**: 将排序后的图片合并成一个 PDF 文件。
-5. **清理**: 删除原始的 `.zip` 文件和临时文件夹。
-
-
-
-
-```mermaid
-graph TD
- A[📁 放置 .zip 文件] --> B{运行 pdf.py 脚本};
- B --> C[🔄 解压到临时目录];
- C --> D[🔢 按文件名自然排序];
- D --> E[🖼️ 合并图片为 PDF];
- E --> F[📄 生成 output.pdf];
- F --> G[🗑️ 删除原 .zip 文件];
- G --> H[✅ 完成];
-```
-
-
-
-
-
----
-
-## 🚀 快速开始
-
-### 1. 环境准备
-
-首先,确保你的电脑上安装了 **Python 3**。
-
-然后,将本项目克隆到你的本地:
-```bash
-git clone https://github.com/tukuaiai/XHS-image-to-PDF-conversion.git
-cd XHS-image-to-PDF-conversion
-```
-
-### 2. 安装依赖
-
-本项目依赖 `Pillow` 库来处理图片。运行以下命令安装它:
-```bash
-pip install -r requirements.txt
-```
-或者,你也可以使用 `Makefile` (如果你的系统支持 `make`):
-```bash
-make install
-```
-
-### 3. 下载图文
-
-使用你喜欢的浏览器扩展(如推荐的 **小地瓜**)从小红书下载图文,并确保它们是 `.zip` 格式。
-
-- **小地瓜 - 小红书图片视频下载助手**: [Firefox 扩展](https://addons.mozilla.org/zh-CN/firefox/addon/%E5%B0%8F%E5%9C%B0%E7%93%9C-%E5%B0%8F%E7%BA%A2%E4%B9%A6%E5%9B%BE%E7%89%87%E8%A7%86%E9%A2%91%E4%B8%8B%E8%BD%BD%E5%8A%A9%E6%89%8B/)
-
-### 4. 运行脚本
-
-
-模式一:批量处理所有 ZIP 文件 (推荐)
-
-1. 将所有下载的 `.zip` 文件移动到本项目文件夹中。
-2. 直接运行 `pdf.bat` (Windows) 或在终端中运行以下命令:
- ```bash
- python pdf.py
- ```
- 或者使用 `make`:
- ```bash
- make run
- ```
-3. 脚本会自动处理文件夹内所有的 `.zip` 文件。
-
-
-
-
-模式二:处理单个 ZIP 文件
-
-如果你只想处理一个文件,可以使用拖放或命令行参数:
-
-1. **拖放 (Windows)**: 将一个 `.zip` 文件直接拖到 `pdf.bat` 图标上。
-2. **命令行**:
- ```bash
- python pdf.py "你的文件路径.zip"
- ```
-
-
----
-
-## 🗂️ 项目结构
-
-```
-XHS-image-to-PDF-conversion/
-├── .git/
-├── docs/ # (未来可能添加的文档)
-├── 📚...pdf # (示例文件)
-├── pdf.bat # Windows 批处理脚本
-├── pdf.py # 核心 Python 脚本
-├── Makefile # 自动化命令
-├── requirements.txt # Python 依赖
-├── README.md # 你正在阅读的这个文件
-├── LICENSE # MIT 许可证
-├── CODE_OF_CONDUCT.md # 社区行为准则
-└── CONTRIBUTING.md # 贡献指南
-```
-
----
-
-## 🤝 参与贡献
-
-我们欢迎任何形式的贡献!无论是报告 Bug、提出功能建议还是直接贡献代码。
-
-请参考我们的 [**贡献指南 (CONTRIBUTING.md)**](CONTRIBUTING.md) 来了解如何参与。
-
----
-
-## 📜 许可证
-
-本项目采用 [MIT](LICENSE) 许可证。
-
----
-
-
-
-**如果这个项目对你有帮助,请给一个 Star ⭐!**
-
-[](https://star-history.com/#tukuaiai/XHS-image-to-PDF-conversion&Date)
-
----
-
-**Made with 🐍 & ❤️ by tukuaiai**
-
-[⬆ 回到顶部](#-小红书图文批量转-pdf)
-
-
diff --git a/libs/external/XHS-image-to-PDF-conversion/pdf.bat b/libs/external/XHS-image-to-PDF-conversion/pdf.bat
deleted file mode 100644
index ed89d89..0000000
--- a/libs/external/XHS-image-to-PDF-conversion/pdf.bat
+++ /dev/null
@@ -1,2 +0,0 @@
-python pdf.py
-pause
\ No newline at end of file
diff --git a/libs/external/XHS-image-to-PDF-conversion/pdf.py b/libs/external/XHS-image-to-PDF-conversion/pdf.py
deleted file mode 100644
index b8b37ba..0000000
--- a/libs/external/XHS-image-to-PDF-conversion/pdf.py
+++ /dev/null
@@ -1,195 +0,0 @@
-#!/usr/bin/env python3
-"""
-图片ZIP转PDF脚本
-将ZIP文件中的图片按序号排序并拼接成PDF文件
-"""
-
-import zipfile
-import os
-import re
-from PIL import Image
-import shutil
-
-def 自然排序键(文件名):
- """将文件名转换为自然排序键,支持数字排序"""
- return [int(text) if text.isdigit() else text.lower() for text in re.split(r'(\d+)', 文件名)]
-
-def zip转pdf(zip路径):
- """
- 将ZIP文件中的图片排序后转换为PDF
-
- Args:
- zip路径: ZIP文件的完整路径
-
- Returns:
- 成功返回PDF路径,失败返回None
- """
- try:
- # 获取ZIP文件名(不含扩展名)
- zip目录, zip文件名 = os.path.split(zip路径)
- pdf名称 = os.path.splitext(zip文件名)[0] + '.pdf'
- pdf路径 = os.path.join(zip目录, pdf名称)
-
- print(f"正在处理: {zip文件名}")
-
- # 创建临时目录解压文件
- 临时目录 = os.path.join(zip目录, 'temp_extract')
- if os.path.exists(临时目录):
- shutil.rmtree(临时目录)
- os.makedirs(临时目录)
-
- # 解压ZIP文件
- with zipfile.ZipFile(zip路径, 'r') as zip文件:
- zip文件.extractall(临时目录)
-
- # 获取所有图片文件
- 支持的格式 = {'.jpg', '.jpeg', '.png', '.bmp', '.gif', '.tiff', '.webp'}
- 图片文件 = []
-
- for 根目录, 目录, 文件列表 in os.walk(临时目录):
- for 文件 in 文件列表:
- if any(文件.lower().endswith(格式) for 格式 in 支持的格式):
- 完整路径 = os.path.join(根目录, 文件)
- 图片文件.append(完整路径)
-
- if not 图片文件:
- print("错误: ZIP文件中没有找到图片文件")
- shutil.rmtree(临时目录)
- return None
-
- # 按文件名自然排序
- 图片文件.sort(key=lambda x: 自然排序键(os.path.basename(x)))
-
- print(f"找到 {len(图片文件)} 张图片,开始转换...")
-
- # 打开第一张图片作为基础
- 图片对象列表 = []
- for 图片路径 in 图片文件:
- try:
- 图片 = Image.open(图片路径)
- # 转换为RGB模式(确保兼容性)
- if 图片.mode != 'RGB':
- 图片 = 图片.convert('RGB')
- 图片对象列表.append(图片)
- except Exception as e:
- print(f"警告: 无法打开图片 {图片路径}: {e}")
- continue
-
- if not 图片对象列表:
- print("错误: 没有成功加载任何图片")
- shutil.rmtree(临时目录)
- return None
-
- # 保存为PDF(第一张作为主图,其余附加)
- 图片对象列表[0].save(
- pdf路径,
- "PDF",
- quality=95,
- optimize=True,
- save_all=True,
- append_images=图片对象列表[1:]
- )
-
- # 关闭所有图片对象
- for 图片 in 图片对象列表:
- 图片.close()
-
- # 清理临时文件
- shutil.rmtree(临时目录)
-
- # 删除原ZIP文件
- os.remove(zip路径)
-
- print(f"✓ 成功创建PDF: {pdf名称}")
- print(f"✓ 已删除原ZIP文件: {zip文件名}")
-
- return pdf路径
-
- except zipfile.BadZipFile:
- print(f"错误: {zip路径} 不是有效的ZIP文件")
- return None
- except Exception as e:
- print(f"处理过程中出错: {e}")
- # 清理临时文件
- if '临时目录' in locals() and os.path.exists(临时目录):
- shutil.rmtree(临时目录)
- return None
-
-def 批量处理当前目录():
- """批量处理当前目录下所有ZIP文件"""
- 当前目录 = os.getcwd()
- zip文件列表 = []
-
- # 扫描当前目录所有ZIP文件
- for 文件 in os.listdir(当前目录):
- if 文件.lower().endswith('.zip'):
- zip文件列表.append(os.path.join(当前目录, 文件))
-
- if not zip文件列表:
- print("当前目录下没有找到ZIP文件")
- return
-
- print(f"发现 {len(zip文件列表)} 个ZIP文件,开始批量处理...")
- print("-" * 50)
-
- 成功计数 = 0
- 失败计数 = 0
-
- for zip路径 in zip文件列表:
- print(f"\n[{zip文件列表.index(zip路径) + 1}/{len(zip文件列表)}] 处理: {os.path.basename(zip路径)}")
-
- # 执行转换
- 结果 = zip转pdf(zip路径)
-
- if 结果:
- 成功计数 += 1
- else:
- 失败计数 += 1
-
- print("-" * 50)
- print(f"批量处理完成!成功: {成功计数} 个,失败: {失败计数} 个")
-
-def 处理指定文件(zip路径):
- """处理指定的单个ZIP文件"""
- if not os.path.exists(zip路径):
- print(f"错误: 找不到文件 {zip路径}")
- return False
-
- if not zip路径.lower().endswith('.zip'):
- print("错误: 请提供ZIP格式的文件")
- return False
-
- # 执行转换
- 结果 = zip转pdf(zip路径)
-
- if 结果:
- print(f"\n🎉 任务完成!PDF文件已保存为: {结果}")
- return True
- else:
- print("\n❌ 任务失败,请检查错误信息")
- return False
-
-def 主函数():
- """主函数:智能处理模式"""
- import sys
-
- # 优先处理指定文件(如果存在)
- 指定文件路径 = r"C:\Users\lenovo\Desktop\新建文件夹\剥头皮量化策略全拆解:低延迟、高频的底层.zip"
-
- # 检查是否有命令行参数
- if len(sys.argv) > 1:
- # 命令行指定了ZIP文件路径
- zip路径 = sys.argv[1]
- print(f"通过命令行参数指定文件: {zip路径}")
- 处理指定文件(zip路径)
- elif os.path.exists(指定文件路径):
- # 处理默认指定文件
- print(f"处理默认指定文件: {os.path.basename(指定文件路径)}")
- 处理指定文件(指定文件路径)
- else:
- # 自动扫描当前目录所有ZIP文件
- print("开始扫描当前目录所有ZIP文件...")
- 批量处理当前目录()
-
-if __name__ == "__main__":
- 主函数()
\ No newline at end of file
diff --git a/libs/external/XHS-image-to-PDF-conversion/requirements.txt b/libs/external/XHS-image-to-PDF-conversion/requirements.txt
deleted file mode 100644
index 7e2fba5..0000000
--- a/libs/external/XHS-image-to-PDF-conversion/requirements.txt
+++ /dev/null
@@ -1 +0,0 @@
-Pillow
diff --git a/libs/external/chat-vault/.env.example b/libs/external/chat-vault/.env.example
deleted file mode 100644
index 3b45d02..0000000
--- a/libs/external/chat-vault/.env.example
+++ /dev/null
@@ -1,11 +0,0 @@
-# AI Chat Converter Configuration (Optional)
-# Default: Auto-detect paths, no configuration needed
-
-# Custom paths (comma-separated for multiple)
-# CODEX_PATHS=~/.codex/sessions
-# KIRO_PATHS=~/.local/share/kiro-cli
-# GEMINI_PATHS=~/.gemini/tmp
-# CLAUDE_PATHS=~/.claude
-
-# WSL paths also supported
-# CODEX_PATHS=\\wsl.localhost\Ubuntu\home\user\.codex\sessions
diff --git a/libs/external/chat-vault/.gitignore b/libs/external/chat-vault/.gitignore
deleted file mode 100644
index 3660ee3..0000000
--- a/libs/external/chat-vault/.gitignore
+++ /dev/null
@@ -1,28 +0,0 @@
-# Python
-__pycache__/
-*.py[cod]
-*.so
-*.egg-info/
-dist/
-build/
-*.spec
-
-# Output
-output/
-*.db
-*.sqlite3
-*.log
-
-# Environment
-.env
-.venv/
-venv/
-
-# IDE
-.vscode/
-.idea/
-*.swp
-
-# OS
-.DS_Store
-Thumbs.db
diff --git a/libs/external/chat-vault/LICENSE b/libs/external/chat-vault/LICENSE
deleted file mode 100644
index c13f991..0000000
--- a/libs/external/chat-vault/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2024
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/libs/external/chat-vault/README.md b/libs/external/chat-vault/README.md
deleted file mode 100644
index c82ab18..0000000
--- a/libs/external/chat-vault/README.md
+++ /dev/null
@@ -1,318 +0,0 @@
-
-
-# 🔐 Chat Vault
-
-**One tool to save ALL your AI chat history**
-
-[](https://python.org)
-[](LICENSE)
-[]()
-[]()
-
-[English](README.md) | [中文](README_CN.md)
-
-[✨ Features](#-features) •
-[🚀 Quick Start](#-quick-start) •
-[📋 Commands](#-commands) •
-[📁 Project Structure](#-project-structure) •
-[❓ FAQ](#-faq)
-
-[📞 Contact](#-contact) •
-[✨ Support](#-support) •
-[🤝 Contributing](#-contributing)
-
-AI-powered docs: [zread.ai/tukuaiai/chat-vault](https://zread.ai/tukuaiai/chat-vault)
-
-> 📦 This tool is part of [vibe-coding-cn](https://github.com/tukuaiai/vibe-coding-cn) - A comprehensive Vibe Coding guide
-
-
-
----
-
-## ✨ Features
-
-
-
-🔄 Multi-CLI
-Codex, Kiro, Gemini, Claude - all supported
-
-
-⚡ Real-time
-Watch mode with system-level file monitoring
-
-
-🔢 Token Stats
-Accurate counting using tiktoken (cl100k_base)
-
-
-🔍 Search
-Find any conversation instantly
-
-
-📤 Export
-JSON or CSV, your choice
-
-
-🚀 Zero Config
-Auto-detects paths, just run it
-
-
-
----
-
-## 🏗️ Architecture
-
-```mermaid
-graph LR
- subgraph Sources
- A[~/.codex]
- B[~/.kiro]
- C[~/.gemini]
- D[~/.claude]
- end
-
- subgraph Chat Vault
- E[Watcher]
- F[Parsers]
- G[Storage]
- end
-
- subgraph Output
- H[(SQLite DB)]
- end
-
- A --> E
- B --> E
- C --> E
- D --> E
- E --> F
- F --> G
- G --> H
-```
-
----
-
-## 🔄 How It Works
-
-```mermaid
-sequenceDiagram
- participant User
- participant CLI as AI CLI (Codex/Kiro/...)
- participant Watcher
- participant Parser
- participant DB as SQLite
-
- User->>CLI: Chat with AI
- CLI->>CLI: Save to local file
- Watcher->>Watcher: Detect file change
- Watcher->>Parser: Parse new content
- Parser->>DB: Upsert session
- DB-->>User: Query anytime
-```
-
----
-
-## 🚀 Quick Start
-
-### 30 Seconds Setup
-
-```bash
-# Clone
-git clone https://github.com/tukuaiai/vibe-coding-cn.git
-cd vibe-coding-cn/libs/external/chat-vault
-
-# Run (auto-installs dependencies)
-./start.sh # Linux/macOS
-start.bat # Windows
-```
-
-**That's it!** 🎉
-
----
-
-## 📊 Example Output
-
-```
-==================================================
-AI 聊天记录 → 集中存储
-==================================================
-数据库: ./output/chat_history.db
-
-[Codex] 新增:1241 更新:0 跳过:0 错误:0
-[Kiro] 新增:21 更新:0 跳过:0 错误:0
-[Gemini] 新增:332 更新:0 跳过:0 错误:0
-[Claude] 新增:168 更新:0 跳过:0 错误:0
-
-==================================================
-总计: 1762 会话, 40000+ 消息
-✓ 同步完成!
-
-=== Token 统计 (tiktoken) ===
- codex: 11,659,952 tokens
- kiro: 26,337 tokens
- gemini: 3,195,821 tokens
- claude: 29,725 tokens
- 总计: 14,911,835 tokens
-```
-
----
-
-## 📋 Commands
-
-| Command | Description |
-|---------|-------------|
-| `python src/main.py` | Sync once |
-| `python src/main.py -w` | Watch mode (real-time) |
-| `python src/main.py --stats` | Show statistics |
-| `python src/main.py --search "keyword"` | Search messages |
-| `python src/main.py --export json` | Export to JSON |
-| `python src/main.py --export csv --source codex` | Export specific source |
-| `python src/main.py --prune` | Clean orphaned records |
-
----
-
-## 📁 Project Structure
-
-```
-chat-vault/
-├── 🚀 start.sh / start.bat # One-click start
-├── 📦 build.py # Build standalone exe
-├── 📂 src/
-│ ├── main.py # CLI entry
-│ ├── config.py # Auto-detection
-│ ├── storage.py # SQLite + tiktoken
-│ ├── watcher.py # File monitoring
-│ └── parsers/ # CLI parsers
-├── 📂 docs/
-│ ├── AI_PROMPT.md # AI assistant guide
-│ └── schema.md # Database schema
-└── 📂 output/
- ├── chat_history.db # Your database
- └── logs/ # Sync logs
-```
-
----
-
-## 🗄️ Database Schema
-
-```mermaid
-erDiagram
- sessions {
- TEXT file_path PK
- TEXT session_id
- TEXT source
- TEXT cwd
- TEXT messages
- INTEGER file_mtime
- TEXT start_time
- INTEGER token_count
- }
-
- meta {
- TEXT key PK
- TEXT value
- }
-
- meta_codex {
- TEXT key PK
- TEXT value
- }
-```
-
----
-
-## 🤖 For AI Assistants
-
-Send [docs/AI_PROMPT.md](docs/AI_PROMPT.md) to your AI assistant for:
-- SQL query examples
-- Python code snippets
-- Task guidance
-
----
-
-## ❓ FAQ
-
-
-Do I need to configure anything?
-
-No. Auto-detects `~/.codex`, `~/.kiro`, `~/.gemini`, `~/.claude`
-
-
-
-Does it work with WSL?
-
-Yes! Paths like `\\wsl.localhost\Ubuntu\...` are supported
-
-
-
-How do I view the database?
-
-Use [DB Browser for SQLite](https://sqlitebrowser.org/) or any SQLite tool
-
-
-
-Is my data safe?
-
-Yes. We only READ from AI tools, never modify original files
-
-
----
-
-## 📞 Contact
-
-- **GitHub**: [tukuaiai](https://github.com/tukuaiai)
-- **Twitter / X**: [123olp](https://x.com/123olp)
-- **Telegram**: [@desci0](https://t.me/desci0)
-- **Telegram Group**: [glue_coding](https://t.me/glue_coding)
-- **Telegram Channel**: [tradecat_ai_channel](https://t.me/tradecat_ai_channel)
-- **Email**: tukuai.ai@gmail.com
-
----
-
-## ✨ Support
-
-If this project helped you, consider supporting:
-
-- **Binance UID**: `572155580`
-- **Tron (TRC20)**: `TQtBXCSTwLFHjBqTS4rNUp7ufiGx51BRey`
-- **Solana**: `HjYhozVf9AQmfv7yv79xSNs6uaEU5oUk2USasYQfUYau`
-- **Ethereum (ERC20)**: `0xa396923a71ee7D9480b346a17dDeEb2c0C287BBC`
-- **BNB Smart Chain (BEP20)**: `0xa396923a71ee7D9480b346a17dDeEb2c0C287BBC`
-- **Bitcoin**: `bc1plslluj3zq3snpnnczplu7ywf37h89dyudqua04pz4txwh8z5z5vsre7nlm`
-- **Sui**: `0xb720c98a48c77f2d49d375932b2867e793029e6337f1562522640e4f84203d2e`
-
----
-
-## 🤝 Contributing
-
-We welcome all contributions! Feel free to open an [Issue](https://github.com/tukuaiai/vibe-coding-cn/issues) or submit a [Pull Request](https://github.com/tukuaiai/vibe-coding-cn/pulls).
-
----
-
-## 📄 License
-
-[MIT](LICENSE) - Do whatever you want with it.
-
----
-
-
-
-**If this helped you, give it a ⭐!**
-
-## Star History
-
-
-
-
-
-
-
-
-
----
-
-**Made with ❤️ by [tukuaiai](https://github.com/tukuaiai)**
-
-[⬆ Back to Top](#-chat-vault)
-
-
diff --git a/libs/external/chat-vault/README_CN.md b/libs/external/chat-vault/README_CN.md
deleted file mode 100644
index 43ee8c2..0000000
--- a/libs/external/chat-vault/README_CN.md
+++ /dev/null
@@ -1,311 +0,0 @@
-
-
-# 🔐 Chat Vault
-
-**一个工具保存你所有的 AI 聊天记录**
-
-[](https://python.org)
-[](LICENSE)
-[]()
-[]()
-
-[English](README.md) | [中文](README_CN.md)
-
-[✨ 功能特性](#-功能特性) •
-[🚀 快速开始](#-30-秒快速开始) •
-[📋 命令一览](#-命令一览) •
-[📁 项目结构](#-项目结构) •
-[❓ 常见问题](#-常见问题)
-
-[📞 联系方式](#-联系方式) •
-[✨ 支持项目](#-支持项目) •
-[🤝 参与贡献](#-参与贡献)
-
-AI 解读文档: [zread.ai/tukuaiai/chat-vault](https://zread.ai/tukuaiai/chat-vault)
-
-> 📦 本工具是 [vibe-coding-cn](https://github.com/tukuaiai/vibe-coding-cn) 的一部分 - 一份全面的 Vibe Coding 指南
-
-
-
----
-
-## ✨ 功能特性
-
-
-
-🔄 多 CLI 支持
-Codex、Kiro、Gemini、Claude 全都行
-
-
-⚡ 实时同步
-系统级文件监控,聊完自动保存
-
-
-🔢 Token 统计
-tiktoken 精确计算,知道你用了多少
-
-
-🔍 搜索
-秒找任何对话
-
-
-📤 导出
-JSON 或 CSV,随你选
-
-
-🚀 零配置
-自动检测路径,开箱即用
-
-
-
----
-
-## 🏗️ 架构图
-
-```mermaid
-graph LR
- subgraph 数据来源
- A[~/.codex]
- B[~/.kiro]
- C[~/.gemini]
- D[~/.claude]
- end
-
- subgraph Chat Vault
- E[监控器]
- F[解析器]
- G[存储层]
- end
-
- subgraph 输出
- H[(SQLite 数据库)]
- end
-
- A --> E
- B --> E
- C --> E
- D --> E
- E --> F
- F --> G
- G --> H
-```
-
----
-
-## 🔄 工作流程
-
-```mermaid
-sequenceDiagram
- participant 用户
- participant CLI as AI CLI (Codex/Kiro/...)
- participant 监控器
- participant 解析器
- participant DB as SQLite
-
- 用户->>CLI: 和 AI 聊天
- CLI->>CLI: 保存到本地文件
- 监控器->>监控器: 检测文件变化
- 监控器->>解析器: 解析新内容
- 解析器->>DB: 写入数据库
- DB-->>用户: 随时查询
-```
-
----
-
-## 🚀 30 秒快速开始
-
-```bash
-# 下载
-git clone https://github.com/tukuaiai/vibe-coding-cn.git
-cd vibe-coding-cn/libs/external/chat-vault
-
-# 运行(自动安装依赖)
-./start.sh # Linux/macOS
-start.bat # Windows(双击)
-```
-
-**搞定!** 🎉
-
----
-
-## 📊 运行效果
-
-```
-==================================================
-AI 聊天记录 → 集中存储
-==================================================
-数据库: ./output/chat_history.db
-
-[Codex] 新增:1241 更新:0 跳过:0 错误:0
-[Kiro] 新增:21 更新:0 跳过:0 错误:0
-[Gemini] 新增:332 更新:0 跳过:0 错误:0
-[Claude] 新增:168 更新:0 跳过:0 错误:0
-
-==================================================
-总计: 1762 会话, 40000+ 消息
-✓ 同步完成!
-
-=== Token 统计 (tiktoken) ===
- codex: 11,659,952 tokens
- kiro: 26,337 tokens
- gemini: 3,195,821 tokens
- claude: 29,725 tokens
- 总计: 14,911,835 tokens
-```
-
----
-
-## 📋 命令一览
-
-| 命令 | 说明 |
-|------|------|
-| `python src/main.py` | 同步一次 |
-| `python src/main.py -w` | 实时监控(推荐) |
-| `python src/main.py --stats` | 查看统计 |
-| `python src/main.py --search "关键词"` | 搜索消息 |
-| `python src/main.py --export json` | 导出 JSON |
-| `python src/main.py --export csv --source codex` | 导出指定来源 |
-| `python src/main.py --prune` | 清理孤立记录 |
-
----
-
-## 📁 项目结构
-
-```
-chat-vault/
-├── 🚀 start.sh / start.bat # 一键启动
-├── 📦 build.py # 打包脚本
-├── 📂 src/
-│ ├── main.py # 主程序
-│ ├── config.py # 配置检测
-│ ├── storage.py # SQLite + tiktoken
-│ ├── watcher.py # 文件监控
-│ └── parsers/ # 各 CLI 解析器
-├── 📂 docs/
-│ ├── AI_PROMPT.md # AI 助手指南
-│ └── schema.md # 数据库结构
-└── 📂 output/
- ├── chat_history.db # 你的数据库
- └── logs/ # 日志
-```
-
----
-
-## 🗄️ 数据库结构
-
-```mermaid
-erDiagram
- sessions {
- TEXT file_path PK "文件路径"
- TEXT session_id "会话ID"
- TEXT source "来源"
- TEXT cwd "工作目录"
- TEXT messages "消息JSON"
- INTEGER file_mtime "修改时间"
- TEXT start_time "开始时间"
- INTEGER token_count "Token数"
- }
-
- meta {
- TEXT key PK
- TEXT value
- }
-```
-
----
-
-## 🤖 让 AI 帮你查数据库
-
-把 [docs/AI_PROMPT.md](docs/AI_PROMPT.md) 发给 AI 助手,它就知道:
-- 怎么写 SQL 查询
-- 怎么用 Python 分析
-- 怎么帮你找对话
-
----
-
-## ❓ 常见问题
-
-
-需要配置什么吗?
-
-不用。自动检测 `~/.codex`、`~/.kiro`、`~/.gemini`、`~/.claude`
-
-
-
-WSL 能用吗?
-
-能!`\\wsl.localhost\Ubuntu\...` 这种路径也支持
-
-
-
-怎么看数据库?
-
-用 [DB Browser for SQLite](https://sqlitebrowser.org/) 或任何 SQLite 工具
-
-
-
-会不会搞坏我的数据?
-
-不会。只读取,从不修改原始文件
-
-
----
-
-## 📞 联系方式
-
-- **GitHub**: [tukuaiai](https://github.com/tukuaiai)
-- **Twitter / X**: [123olp](https://x.com/123olp)
-- **Telegram**: [@desci0](https://t.me/desci0)
-- **Telegram 交流群**: [glue_coding](https://t.me/glue_coding)
-- **Telegram 频道**: [tradecat_ai_channel](https://t.me/tradecat_ai_channel)
-- **邮箱**: tukuai.ai@gmail.com
-
----
-
-## ✨ 支持项目
-
-如果这个项目帮到你了,考虑支持一下:
-
-- **币安 UID**: `572155580`
-- **Tron (TRC20)**: `TQtBXCSTwLFHjBqTS4rNUp7ufiGx51BRey`
-- **Solana**: `HjYhozVf9AQmfv7yv79xSNs6uaEU5oUk2USasYQfUYau`
-- **Ethereum (ERC20)**: `0xa396923a71ee7D9480b346a17dDeEb2c0C287BBC`
-- **BNB Smart Chain (BEP20)**: `0xa396923a71ee7D9480b346a17dDeEb2c0C287BBC`
-- **Bitcoin**: `bc1plslluj3zq3snpnnczplu7ywf37h89dyudqua04pz4txwh8z5z5vsre7nlm`
-- **Sui**: `0xb720c98a48c77f2d49d375932b2867e793029e6337f1562522640e4f84203d2e`
-
----
-
-## 🤝 参与贡献
-
-欢迎各种形式的贡献!随时开启一个 [Issue](https://github.com/tukuaiai/vibe-coding-cn/issues) 或提交 [Pull Request](https://github.com/tukuaiai/vibe-coding-cn/pulls)。
-
----
-
-## 📄 开源协议
-
-[MIT](LICENSE) - 随便用,不用管我
-
----
-
-
-
-**如果帮到你了,点个 ⭐ 呗!**
-
-## Star History
-
-
-
-
-
-
-
-
-
----
-
-**Made with ❤️ by [tukuaiai](https://github.com/tukuaiai)**
-
-[⬆ 返回顶部](#-chat-vault)
-
-
diff --git a/libs/external/chat-vault/build.bat b/libs/external/chat-vault/build.bat
deleted file mode 100644
index 05ac0cb..0000000
--- a/libs/external/chat-vault/build.bat
+++ /dev/null
@@ -1,15 +0,0 @@
-@echo off
-echo 安装打包工具...
-pip install pyinstaller -q
-
-echo 开始打包...
-pyinstaller --onefile --name ai-chat-converter ^
- --add-data "src;src" ^
- --hidden-import tiktoken_ext.openai_public ^
- --hidden-import tiktoken_ext ^
- --collect-data tiktoken ^
- src/main.py
-
-echo.
-echo 完成! 输出: dist\ai-chat-converter.exe
-pause
diff --git a/libs/external/chat-vault/build.py b/libs/external/chat-vault/build.py
deleted file mode 100644
index dd26ab4..0000000
--- a/libs/external/chat-vault/build.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python3
-"""打包脚本 - 生成独立可执行文件"""
-import subprocess
-import sys
-import os
-import shutil
-
-def main():
- os.chdir(os.path.dirname(os.path.abspath(__file__)))
-
- for d in ['build', 'dist']:
- if os.path.exists(d):
- shutil.rmtree(d)
-
- print("开始打包...")
-
- sep = ";" if sys.platform == "win32" else ":"
-
- cmd = [
- sys.executable, "-m", "PyInstaller",
- "--onefile",
- "--name", "ai-chat-converter",
- f"--add-data=src{sep}src",
- "--hidden-import", "tiktoken_ext.openai_public",
- "--hidden-import", "tiktoken_ext",
- "--hidden-import", "dotenv",
- "--collect-data", "tiktoken",
- "--collect-all", "watchdog",
- "--collect-all", "dotenv",
- "src/main.py"
- ]
-
- subprocess.run(cmd, check=True)
-
- exe = "dist/ai-chat-converter.exe" if sys.platform == "win32" else "dist/ai-chat-converter"
- size = os.path.getsize(exe) / 1024 / 1024
- print(f"\n✓ 打包完成: {exe} ({size:.1f} MB)")
-
-if __name__ == "__main__":
- main()
diff --git a/libs/external/chat-vault/docs/AI_PROMPT.md b/libs/external/chat-vault/docs/AI_PROMPT.md
deleted file mode 100644
index 4dde8cb..0000000
--- a/libs/external/chat-vault/docs/AI_PROMPT.md
+++ /dev/null
@@ -1,231 +0,0 @@
-# AI Chat Converter - AI 助手完全指南
-
-> **把这个文档发给 AI 助手,它就知道怎么帮你用这个工具了**
-
----
-
-## 🎯 这是什么?
-
-一个把 Codex、Kiro、Gemini、Claude 的聊天记录全部存到一个 SQLite 数据库的工具。
-
-**数据库位置**: `项目目录/output/chat_history.db`
-
----
-
-## 🚀 怎么启动?
-
-### 方式一:双击启动(推荐)
-```bash
-./start.sh # Linux/macOS
-start.bat # Windows(双击)
-```
-
-### 方式二:命令行
-```bash
-cd ai-chat-converter
-python src/main.py --watch # 持续监控(推荐)
-python src/main.py # 同步一次就退出
-```
-
-### 方式三:后台运行
-```bash
-nohup ./start.sh > /dev/null 2>&1 &
-```
-
----
-
-## 📊 数据库长啥样?
-
-### 主表:sessions
-
-| 字段 | 说明 | 例子 |
-|------|------|------|
-| file_path | 主键,文件路径 | `/home/user/.codex/sessions/xxx.jsonl` |
-| session_id | 会话ID | `019b2164-168c-7133-9b1f-5d24fea1d3e1` |
-| source | 来源 | `codex` / `kiro` / `gemini` / `claude` |
-| cwd | 工作目录 | `/home/user/projects/myapp` |
-| messages | 消息内容(JSON) | `[{"time":"...", "role":"user", "content":"..."}]` |
-| start_time | 开始时间 | `2025-12-18T10:30:00` |
-| token_count | Token 数量 | `1234` |
-
----
-
-## 🔍 常用查询(直接复制用)
-
-### 1. 看看有多少数据
-
-```sql
-SELECT source, COUNT(*) as 会话数, SUM(token_count) as Token总数
-FROM sessions
-GROUP BY source;
-```
-
-### 2. 最近的 10 个会话
-
-```sql
-SELECT session_id, source, cwd, start_time, token_count
-FROM sessions
-ORDER BY start_time DESC
-LIMIT 10;
-```
-
-### 3. 搜索包含某个词的对话
-
-```sql
-SELECT session_id, source, cwd, start_time
-FROM sessions
-WHERE messages LIKE '%要搜索的词%'
-ORDER BY start_time DESC
-LIMIT 20;
-```
-
-### 4. 查某个项目的所有对话
-
-```sql
-SELECT session_id, source, start_time, token_count
-FROM sessions
-WHERE cwd LIKE '%项目名%'
-ORDER BY start_time;
-```
-
-### 5. 看某个会话的完整内容
-
-```sql
-SELECT messages FROM sessions WHERE session_id = '会话ID';
-```
-
-### 6. 统计每天用了多少 Token
-
-```sql
-SELECT
- date(start_time) as 日期,
- SUM(token_count) as Token数
-FROM sessions
-GROUP BY 日期
-ORDER BY 日期 DESC
-LIMIT 7;
-```
-
-### 7. 统计每个来源的 Token
-
-```sql
-SELECT source, SUM(token_count) as tokens
-FROM sessions
-GROUP BY source
-ORDER BY tokens DESC;
-```
-
----
-
-## 💻 命令行用法
-
-| 命令 | 干啥的 |
-|------|--------|
-| `python src/main.py` | 同步一次 |
-| `python src/main.py -w` | 持续监控(推荐) |
-| `python src/main.py --stats` | 看统计信息 |
-| `python src/main.py --search "关键词"` | 搜索 |
-| `python src/main.py --export json` | 导出 JSON |
-| `python src/main.py --export csv` | 导出 CSV |
-| `python src/main.py --prune` | 清理已删除文件的记录 |
-
----
-
-## 🐍 用 Python 查询
-
-```python
-import sqlite3
-import json
-
-# 连接数据库
-db = sqlite3.connect('output/chat_history.db')
-
-# 查所有 Codex 会话
-for row in db.execute("SELECT session_id, cwd, token_count FROM sessions WHERE source='codex'"):
- print(f"{row[0]}: {row[2]} tokens - {row[1]}")
-
-# 搜索包含 "python" 的对话
-for row in db.execute("SELECT session_id, source FROM sessions WHERE messages LIKE '%python%'"):
- print(f"[{row[1]}] {row[0]}")
-
-# 获取某个会话的消息
-row = db.execute("SELECT messages FROM sessions WHERE session_id=?", ('会话ID',)).fetchone()
-if row:
- messages = json.loads(row[0])
- for msg in messages:
- print(f"{msg['role']}: {msg['content'][:100]}...")
-```
-
----
-
-## 📁 文件在哪?
-
-```
-ai-chat-converter/
-├── start.sh ← 双击这个启动
-├── output/
-│ ├── chat_history.db ← 数据库在这
-│ └── logs/ ← 日志在这
-└── src/
- └── main.py ← 主程序
-```
-
----
-
-## ❓ AI 助手任务示例
-
-当用户说这些话时,你应该这样做:
-
-| 用户说 | 你做 |
-|--------|------|
-| "帮我查最近的对话" | 执行最近会话 SQL |
-| "搜索关于 Python 的讨论" | 用 `--search` 或 SQL 搜索 |
-| "这个月用了多少 Token" | 执行 Token 统计 SQL |
-| "导出所有 Codex 记录" | `python src/main.py --export json --source codex` |
-| "启动监控" | `./start.sh` 或 `python src/main.py -w` |
-| "数据库在哪" | `output/chat_history.db` |
-
----
-
-## 🔧 出问题了?
-
-### 问题:找不到数据库
-```bash
-# 先运行一次同步
-python src/main.py
-```
-
-### 问题:依赖没装
-```bash
-pip install -r requirements.txt
-```
-
-### 问题:权限不够
-```bash
-chmod +x start.sh
-```
-
----
-
-## 📊 消息格式
-
-数据库里的 `messages` 字段是 JSON 数组:
-
-```json
-[
- {
- "time": "2025-12-18T10:30:00",
- "role": "user",
- "content": "帮我写个 Python 脚本"
- },
- {
- "time": "2025-12-18T10:30:05",
- "role": "ai",
- "content": "好的,这是一个简单的脚本..."
- }
-]
-```
-
-- `role`: `user`(用户)或 `ai`(AI 回复)
-- `time`: ISO 格式时间
-- `content`: 消息内容
diff --git a/libs/external/chat-vault/docs/roadmap.md b/libs/external/chat-vault/docs/roadmap.md
deleted file mode 100644
index 19d9062..0000000
--- a/libs/external/chat-vault/docs/roadmap.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Roadmap
-
-## v1.0 ✅ Core
-- [x] Multi-CLI support (Codex/Kiro/Gemini/Claude)
-- [x] Auto path detection
-- [x] SQLite storage
-- [x] Incremental sync
-- [x] Cross-platform watch mode (watchdog)
-- [x] Token counting (tiktoken)
-
-## Future
-- [ ] Web UI
-- [ ] API server mode
-- [ ] Vector storage (RAG)
-- [ ] Cross-AI context sharing
diff --git a/libs/external/chat-vault/docs/schema.md b/libs/external/chat-vault/docs/schema.md
deleted file mode 100644
index 47e81cb..0000000
--- a/libs/external/chat-vault/docs/schema.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# 数据库结构 (v5)
-
-**位置**: `项目目录/output/chat_history.db`
-
-## sessions 表(主表)
-
-| 字段 | 类型 | 说明 |
-|------|------|------|
-| file_path | TEXT | 主键,源文件路径 |
-| session_id | TEXT | 会话 ID |
-| source | TEXT | 来源: codex/kiro/gemini/claude |
-| cwd | TEXT | 工作目录 |
-| messages | TEXT | JSON 数组 |
-| file_mtime | INTEGER | 文件修改时间戳 |
-| start_time | TEXT | 会话开始时间 |
-| token_count | INTEGER | Token 数量 |
-
-**索引**: `idx_source`, `idx_session_id`, `idx_start_time`
-
-## meta 表(全局统计)
-
-| key | 说明 |
-|-----|------|
-| schema_version | 数据库版本 (5) |
-| total_sessions | 总会话数 |
-| total_messages | 总消息数 |
-| total_tokens | 总 Token 数 |
-| last_sync | 最后同步时间 |
-
-## meta_{cli} 表(各 CLI 统计)
-
-每个 CLI 独立的元信息表:`meta_codex`, `meta_kiro`, `meta_gemini`, `meta_claude`
-
-| key | 说明 |
-|-----|------|
-| path | 监控路径 |
-| sessions | 会话数 |
-| messages | 消息数 |
-| total_tokens | Token 总数 |
-| last_sync | 最后同步时间 |
-
-## 消息格式
-
-```json
-[
- {"time": "2025-12-18T10:30:00", "role": "user", "content": "..."},
- {"time": "2025-12-18T10:30:05", "role": "ai", "content": "..."}
-]
-```
diff --git a/libs/external/chat-vault/requirements.txt b/libs/external/chat-vault/requirements.txt
deleted file mode 100644
index 21116f7..0000000
--- a/libs/external/chat-vault/requirements.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-python-dotenv>=1.0.0
-watchdog>=3.0.0
-tiktoken>=0.5.0
diff --git a/libs/external/chat-vault/scripts/sync.sh b/libs/external/chat-vault/scripts/sync.sh
deleted file mode 100755
index 1c76cc8..0000000
--- a/libs/external/chat-vault/scripts/sync.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-cd "$(dirname "$0")/../src"
-python3 main.py
diff --git a/libs/external/chat-vault/scripts/watch.sh b/libs/external/chat-vault/scripts/watch.sh
deleted file mode 100755
index 62ec1da..0000000
--- a/libs/external/chat-vault/scripts/watch.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-cd "$(dirname "$0")/../src"
-python3 main.py --watch
diff --git a/libs/external/chat-vault/src/config.py b/libs/external/chat-vault/src/config.py
deleted file mode 100644
index e51721d..0000000
--- a/libs/external/chat-vault/src/config.py
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-r"""
-配置模块 - 智能路径识别
-支持: Linux 原生路径、WSL 路径 (\\wsl.localhost\Ubuntu\...)
-"""
-import os
-import re
-from dotenv import load_dotenv
-
-# 项目目录
-PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-OUTPUT_DIR = os.path.join(PROJECT_DIR, "output")
-
-load_dotenv(os.path.join(PROJECT_DIR, ".env"))
-
-def convert_wsl_path(path: str) -> str:
- match = re.match(r'^\\\\wsl[.\$]?[^\\]*\\[^\\]+\\(.+)$', path, re.IGNORECASE)
- if match:
- return '/' + match.group(1).replace('\\', '/')
- return path
-
-def normalize_path(path: str) -> str:
- path = path.strip()
- path = convert_wsl_path(path)
- return os.path.expanduser(path)
-
-def get_paths(env_key: str) -> list:
- val = os.getenv(env_key, "")
- if not val:
- return []
- return [normalize_path(p) for p in val.split(",") if p.strip()]
-
-def auto_detect_paths() -> dict:
- home = os.path.expanduser("~")
- kiro_db = os.path.join(home, ".local", "share", "kiro-cli")
- candidates = {
- "codex_paths": [os.path.join(home, ".codex", "sessions"), os.path.join(home, ".codex")],
- "kiro_paths": [kiro_db] if os.path.exists(kiro_db) else [],
- "gemini_paths": [os.path.join(home, ".gemini", "tmp"), os.path.join(home, ".gemini")],
- "claude_paths": [os.path.join(home, ".claude")],
- }
- detected = {}
- for key, paths in candidates.items():
- for p in paths:
- if os.path.exists(p):
- detected[key] = [p]
- break
- if key not in detected:
- detected[key] = []
- return detected
-
-def load_config() -> dict:
- auto = auto_detect_paths()
-
- os.makedirs(OUTPUT_DIR, exist_ok=True)
- os.makedirs(os.path.join(OUTPUT_DIR, "logs"), exist_ok=True)
-
- return {
- "codex_paths": get_paths("CODEX_PATHS") or auto.get("codex_paths", []),
- "kiro_paths": get_paths("KIRO_PATHS") or auto.get("kiro_paths", []),
- "gemini_paths": get_paths("GEMINI_PATHS") or auto.get("gemini_paths", []),
- "claude_paths": get_paths("CLAUDE_PATHS") or auto.get("claude_paths", []),
- "output_dir": OUTPUT_DIR,
- "log_dir": os.path.join(OUTPUT_DIR, "logs"),
- "db_path": os.path.join(OUTPUT_DIR, "chat_history.db"),
- }
-
-CONFIG = load_config()
diff --git a/libs/external/chat-vault/src/logger.py b/libs/external/chat-vault/src/logger.py
deleted file mode 100644
index 653847d..0000000
--- a/libs/external/chat-vault/src/logger.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""日志模块 - 同时输出到控制台和文件"""
-import logging
-import os
-from datetime import datetime
-
-_logger = None
-
-def setup_logger(log_dir: str = None) -> logging.Logger:
- global _logger
- if _logger:
- return _logger
-
- _logger = logging.getLogger('ai_chat_converter')
- _logger.setLevel(logging.DEBUG)
- _logger.handlers.clear()
-
- fmt = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
-
- # 控制台
- ch = logging.StreamHandler()
- ch.setLevel(logging.INFO)
- ch.setFormatter(fmt)
- _logger.addHandler(ch)
-
- # 文件
- if log_dir:
- os.makedirs(log_dir, exist_ok=True)
- log_file = os.path.join(log_dir, f"sync_{datetime.now().strftime('%Y%m%d')}.log")
- fh = logging.FileHandler(log_file, encoding='utf-8')
- fh.setLevel(logging.DEBUG)
- fh.setFormatter(fmt)
- _logger.addHandler(fh)
-
- return _logger
-
-def get_logger() -> logging.Logger:
- global _logger
- if not _logger:
- _logger = setup_logger()
- return _logger
diff --git a/libs/external/chat-vault/src/main.py b/libs/external/chat-vault/src/main.py
deleted file mode 100644
index 8a6dee4..0000000
--- a/libs/external/chat-vault/src/main.py
+++ /dev/null
@@ -1,319 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-AI 聊天记录集中存储工具
-
-命令:
- python main.py # 同步一次
- python main.py --watch # 持续监控
- python main.py --prune # 清理孤立记录
- python main.py --stats # 显示统计
- python main.py --search # 搜索
- python main.py --export json|csv [--source codex|kiro|gemini|claude]
-"""
-import os
-import sys
-import subprocess
-
-# 项目根目录
-PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-VENV_DIR = os.path.join(PROJECT_DIR, '.venv')
-REQUIREMENTS = os.path.join(PROJECT_DIR, 'requirements.txt')
-
-def ensure_venv():
- """检测并创建虚拟环境,安装依赖"""
- # 打包版本跳过
- if getattr(sys, 'frozen', False):
- return
-
- # 已在虚拟环境中运行则跳过
- if sys.prefix != sys.base_prefix:
- return
-
- # 检查 .venv 是否存在
- venv_python = os.path.join(VENV_DIR, 'bin', 'python') if os.name != 'nt' else os.path.join(VENV_DIR, 'Scripts', 'python.exe')
-
- if not os.path.exists(venv_python):
- print("首次运行,创建虚拟环境...")
- subprocess.run([sys.executable, '-m', 'venv', VENV_DIR], check=True)
- print("安装依赖...")
- pip = os.path.join(VENV_DIR, 'bin', 'pip') if os.name != 'nt' else os.path.join(VENV_DIR, 'Scripts', 'pip.exe')
- subprocess.run([pip, 'install', '-r', REQUIREMENTS, '-q'], check=True)
- print("环境准备完成,重新启动...\n")
-
- # 使用虚拟环境重新执行
- os.execv(venv_python, [venv_python] + sys.argv)
-
-# 启动前检测虚拟环境
-ensure_venv()
-
-# 支持 PyInstaller 打包
-if getattr(sys, 'frozen', False):
- BASE_DIR = sys._MEIPASS
- sys.path.insert(0, os.path.join(BASE_DIR, 'src'))
-else:
- BASE_DIR = os.path.dirname(os.path.abspath(__file__))
-
-import argparse
-from config import CONFIG
-from parsers import CodexParser, GeminiParser, ClaudeParser, KiroParser
-from storage import ChatStorage
-from logger import setup_logger, get_logger
-
-storage: ChatStorage = None
-
-def main():
- global storage
-
- parser = argparse.ArgumentParser(description='AI Chat Converter')
- parser.add_argument('-w', '--watch', action='store_true', help='持续监控模式')
- parser.add_argument('--prune', action='store_true', help='清理孤立记录')
- parser.add_argument('--stats', action='store_true', help='显示统计信息')
- parser.add_argument('--search', type=str, help='搜索关键词')
- parser.add_argument('--export', choices=['json', 'csv'], help='导出格式')
- parser.add_argument('--source', choices=['codex', 'kiro', 'gemini', 'claude'], help='指定来源')
- parser.add_argument('--output', type=str, help='导出文件路径')
- args = parser.parse_args()
-
- # 初始化
- setup_logger(CONFIG["log_dir"])
- log = get_logger()
-
- storage = ChatStorage(CONFIG["db_path"])
-
- # 命令分发
- if args.prune:
- cmd_prune()
- elif args.stats:
- cmd_stats()
- elif args.search:
- cmd_search(args.search, args.source)
- elif args.export:
- cmd_export(args.export, args.source, args.output)
- elif args.watch:
- cmd_sync()
- cmd_watch()
- else:
- cmd_sync()
-
-def cmd_sync():
- log = get_logger()
- log.info("=" * 50)
- log.info("AI 聊天记录 → 集中存储")
- log.info("=" * 50)
- log.info(f"数据库: {CONFIG['db_path']}")
-
- total_added, total_updated, total_skipped, total_errors = 0, 0, 0, 0
-
- for cli, key, parser_cls in [
- ('codex', 'codex_paths', lambda: CodexParser('codex')),
- ('kiro', 'kiro_paths', KiroParser),
- ('gemini', 'gemini_paths', GeminiParser),
- ('claude', 'claude_paths', ClaudeParser),
- ]:
- paths = CONFIG.get(key, [])
- if not paths:
- continue
-
- parser = parser_cls()
- if cli in ('claude', 'kiro'):
- a, u, s, e = process_multi(parser, paths, cli)
- else:
- a, u, s, e = process(parser, paths)
-
- log.info(f"[{cli.capitalize()}] 新增:{a} 更新:{u} 跳过:{s} 错误:{e}")
- update_cli_meta(cli)
- total_added += a
- total_updated += u
- total_skipped += s
- total_errors += e
-
- total = storage.get_total_stats()
- storage.update_total_meta(total['sessions'], total['messages'], total['tokens'])
-
- log.info("=" * 50)
- log.info(f"总计: {total['sessions']} 会话, {total['messages']} 消息")
- if total_errors > 0:
- log.warning(f"错误: {total_errors} 个文件解析失败")
- log.info("✓ 同步完成!")
-
- print_token_stats()
-
-def cmd_watch():
- from watcher import ChatWatcher
- from datetime import datetime
-
- log = get_logger()
- log.info("")
- log.info("=" * 50)
- log.info("实时监听模式 (watchdog)")
- log.info("=" * 50)
-
- watch_paths = []
- path_source_map = {}
-
- for cli, key in [('codex', 'codex_paths'), ('kiro', 'kiro_paths'),
- ('gemini', 'gemini_paths'), ('claude', 'claude_paths')]:
- for p in CONFIG.get(key, []):
- if os.path.isdir(p) or os.path.isfile(p):
- watch_paths.append(p)
- path_source_map[p] = cli
-
- def on_change(file_path, event_type):
- now = datetime.now().strftime('%H:%M:%S')
- source = None
- for p, s in path_source_map.items():
- if file_path.startswith(p) or file_path == p:
- source = s
- break
- if not source:
- return
-
- try:
- if source == 'kiro':
- parser = KiroParser()
- for sess in parser.parse_file(file_path):
- storage.upsert_session(sess.session_id, sess.source, sess.file_path, sess.cwd, sess.messages, int(sess.file_mtime))
- log.info(f"[{now}] kiro 更新")
- elif source == 'claude':
- parser = ClaudeParser()
- for sess in parser.parse_file(file_path):
- fp = f"claude:{sess.session_id}"
- storage.upsert_session(sess.session_id, sess.source, fp, sess.cwd, sess.messages, int(sess.file_mtime))
- log.info(f"[{now}] claude 更新")
- else:
- parser = CodexParser(source) if source == 'codex' else GeminiParser()
- sess = parser.parse_file(file_path)
- fp = os.path.abspath(sess.file_path)
- storage.upsert_session(sess.session_id, sess.source, fp, sess.cwd, sess.messages, int(sess.file_mtime))
- log.info(f"[{now}] {source} {event_type}: {os.path.basename(file_path)}")
-
- update_cli_meta(source)
- total = storage.get_total_stats()
- storage.update_total_meta(total['sessions'], total['messages'], total['tokens'])
- except Exception as e:
- log.error(f"[{now}] 处理失败 {file_path}: {e}")
-
- log.info(f"监听目录: {len(watch_paths)} 个")
- watcher = ChatWatcher(watch_paths, on_change)
- watcher.start()
-
-def cmd_prune():
- log = get_logger()
- log.info("清理孤立记录...")
- removed = storage.prune()
- total = sum(removed.values())
- if total > 0:
- for cli, count in removed.items():
- if count > 0:
- log.info(f" {cli}: 删除 {count} 条")
- log.info(f"✓ 共清理 {total} 条孤立记录")
- else:
- log.info("✓ 无孤立记录")
-
-def cmd_stats():
- log = get_logger()
- meta = storage.get_total_meta()
- tokens = storage.get_token_stats()
-
- log.info("=" * 50)
- log.info("统计信息")
- log.info("=" * 50)
- log.info(f"数据库: {CONFIG['db_path']}")
- log.info(f"总会话: {meta['total_sessions']}")
- log.info(f"总消息: {meta['total_messages']}")
- log.info(f"最后同步: {meta['last_sync']}")
- log.info("")
- log.info("Token 统计 (tiktoken):")
- total_tokens = 0
- for source in ['codex', 'kiro', 'gemini', 'claude']:
- t = tokens.get(source, 0)
- if t > 0:
- log.info(f" {source}: {t:,}")
- total_tokens += t
- log.info(f" 总计: {total_tokens:,}")
-
-def cmd_search(keyword: str, source: str = None):
- log = get_logger()
- results = storage.search(keyword, source)
- log.info(f"搜索 '{keyword}' 找到 {len(results)} 个会话:")
- for r in results[:20]:
- log.info(f" [{r['source']}] {r['session_id']} - {r['cwd'] or 'N/A'}")
-
-def cmd_export(fmt: str, source: str = None, output: str = None):
- log = get_logger()
- if not output:
- output = os.path.join(CONFIG["output_dir"], f"export.{fmt}")
-
- if fmt == 'json':
- count = storage.export_json(output, source)
- else:
- count = storage.export_csv(output, source)
-
- log.info(f"✓ 导出 {count} 条到 {output}")
-
-def print_token_stats():
- log = get_logger()
- tokens = storage.get_token_stats()
- log.info("")
- log.info("=== Token 统计 (tiktoken) ===")
- total = 0
- for source in ['codex', 'kiro', 'gemini', 'claude']:
- t = tokens.get(source, 0)
- if t > 0:
- log.info(f" {source}: {t:,} tokens")
- total += t
- log.info(f" 总计: {total:,} tokens")
-
-def update_cli_meta(cli: str):
- stats = storage.get_cli_stats(cli)
- path = CONFIG.get(f"{cli}_paths", [""])[0] if CONFIG.get(f"{cli}_paths") else ""
- storage.update_cli_meta(cli, path, stats['sessions'], stats['messages'], stats['tokens'])
-
-def process(parser, paths) -> tuple:
- log = get_logger()
- added, updated, skipped, errors = 0, 0, 0, 0
- for f in parser.find_files(paths):
- try:
- s = parser.parse_file(f)
- file_path = os.path.abspath(s.file_path)
- db_mtime = storage.get_file_mtime(file_path)
- file_mtime = int(s.file_mtime)
- if db_mtime == 0:
- storage.upsert_session(s.session_id, s.source, file_path, s.cwd, s.messages, file_mtime)
- added += 1
- elif file_mtime > db_mtime:
- storage.upsert_session(s.session_id, s.source, file_path, s.cwd, s.messages, file_mtime)
- updated += 1
- else:
- skipped += 1
- except Exception as e:
- log.debug(f"解析失败 {f}: {e}")
- errors += 1
- return added, updated, skipped, errors
-
-def process_multi(parser, paths, source: str) -> tuple:
- """处理返回多个会话的解析器(Claude/Kiro)"""
- log = get_logger()
- added, updated, skipped, errors = 0, 0, 0, 0
- for f in parser.find_files(paths):
- try:
- for s in parser.parse_file(f):
- file_path = s.file_path # kiro:xxx 或 claude:xxx
- db_mtime = storage.get_file_mtime(file_path)
- file_mtime = int(s.file_mtime)
- if db_mtime == 0:
- storage.upsert_session(s.session_id, s.source, file_path, s.cwd, s.messages, file_mtime)
- added += 1
- elif file_mtime > db_mtime:
- storage.upsert_session(s.session_id, s.source, file_path, s.cwd, s.messages, file_mtime)
- updated += 1
- else:
- skipped += 1
- except Exception as e:
- log.debug(f"解析失败 {f}: {e}")
- errors += 1
- return added, updated, skipped, errors
-
-if __name__ == '__main__':
- main()
diff --git a/libs/external/chat-vault/src/parsers/__init__.py b/libs/external/chat-vault/src/parsers/__init__.py
deleted file mode 100644
index 7f6e56c..0000000
--- a/libs/external/chat-vault/src/parsers/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from .codex import CodexParser
-from .gemini import GeminiParser
-from .claude import ClaudeParser
-from .kiro import KiroParser
-from .base import SessionData
-
-__all__ = ["CodexParser", "GeminiParser", "ClaudeParser", "KiroParser", "SessionData"]
diff --git a/libs/external/chat-vault/src/parsers/base.py b/libs/external/chat-vault/src/parsers/base.py
deleted file mode 100644
index feb2d63..0000000
--- a/libs/external/chat-vault/src/parsers/base.py
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-from abc import ABC, abstractmethod
-from dataclasses import dataclass, field
-from typing import List, Dict
-
-@dataclass
-class SessionData:
- """会话数据"""
- session_id: str
- source: str
- file_path: str
- file_mtime: float = 0
- cwd: str = None
- messages: List[Dict] = field(default_factory=list) # [{"time", "role", "content"}]
-
-class BaseParser(ABC):
- @abstractmethod
- def find_files(self, paths: list) -> list:
- pass
-
- @abstractmethod
- def parse_file(self, filepath: str) -> SessionData:
- pass
diff --git a/libs/external/chat-vault/src/parsers/claude.py b/libs/external/chat-vault/src/parsers/claude.py
deleted file mode 100644
index 9df8d27..0000000
--- a/libs/external/chat-vault/src/parsers/claude.py
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-import os
-import json
-import hashlib
-from datetime import datetime
-from collections import defaultdict
-from .base import BaseParser, SessionData
-
-class ClaudeParser(BaseParser):
- def find_files(self, paths: list) -> list:
- files = []
- for base in paths:
- history = os.path.join(base, "history.jsonl")
- if os.path.exists(history):
- files.append(history)
- return files
-
- def parse_file(self, filepath: str) -> list:
- """返回多个 SessionData(按 project 分组)"""
- projects = defaultdict(list)
- file_mtime = os.path.getmtime(filepath)
-
- with open(filepath, 'r', encoding='utf-8') as f:
- for line in f:
- line = line.strip()
- if not line:
- continue
- data = json.loads(line)
- content = data.get('display', '')
- if not content:
- continue
-
- project = data.get('project', 'unknown')
- ts_ms = data.get('timestamp', 0)
- ts = datetime.fromtimestamp(ts_ms / 1000).isoformat() if ts_ms else ''
-
- projects[project].append({
- 'time': ts,
- 'role': 'user',
- 'content': content
- })
-
- return [
- SessionData(
- session_id='claude-' + hashlib.md5(proj.encode()).hexdigest()[:12],
- source='claude',
- file_path=filepath,
- file_mtime=file_mtime,
- cwd=proj,
- messages=msgs
- )
- for proj, msgs in projects.items()
- ]
diff --git a/libs/external/chat-vault/src/parsers/codex.py b/libs/external/chat-vault/src/parsers/codex.py
deleted file mode 100644
index 66c47d4..0000000
--- a/libs/external/chat-vault/src/parsers/codex.py
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-import os
-import json
-import re
-from .base import BaseParser, SessionData
-
-class CodexParser(BaseParser):
- def __init__(self, source: str = 'codex'):
- self.source = source
-
- def find_files(self, paths: list) -> list:
- files = []
- for base in paths:
- if not os.path.exists(base):
- continue
- for root, _, names in os.walk(base):
- for f in names:
- if f.endswith('.jsonl') and f != 'history.jsonl':
- files.append(os.path.join(root, f))
- return files
-
- def _extract_id(self, filepath: str) -> str:
- match = re.search(r'([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})',
- os.path.basename(filepath))
- return match.group(1) if match else os.path.basename(filepath).replace('.jsonl', '')
-
- def parse_file(self, filepath: str) -> SessionData:
- s = SessionData(
- session_id=self._extract_id(filepath),
- source=self.source,
- file_path=filepath,
- file_mtime=os.path.getmtime(filepath)
- )
-
- with open(filepath, 'r', encoding='utf-8', errors='ignore') as f:
- for line in f:
- line = line.strip()
- if not line or line[0] != '{':
- continue
- try:
- data = json.loads(line)
- except json.JSONDecodeError:
- continue
-
- if data.get('type') == 'session_meta':
- p = data.get('payload', {})
- s.cwd = p.get('cwd')
- s.session_id = p.get('id', s.session_id)
- continue
-
- if data.get('type') != 'response_item':
- continue
- payload = data.get('payload', {})
- if payload.get('type') != 'message':
- continue
- role = payload.get('role')
- if role not in ('user', 'assistant'):
- continue
-
- parts = [item.get('text', '') for item in payload.get('content', [])
- if isinstance(item, dict) and item.get('type') in ('input_text', 'output_text', 'text')]
- if parts:
- s.messages.append({
- 'time': data.get('timestamp', ''),
- 'role': 'user' if role == 'user' else 'ai',
- 'content': ' '.join(parts)
- })
-
- return s
diff --git a/libs/external/chat-vault/src/parsers/gemini.py b/libs/external/chat-vault/src/parsers/gemini.py
deleted file mode 100644
index 957be7f..0000000
--- a/libs/external/chat-vault/src/parsers/gemini.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-import os
-import glob
-import json
-from .base import BaseParser, SessionData
-
-class GeminiParser(BaseParser):
- def find_files(self, paths: list) -> list:
- files = []
- for base in paths:
- if os.path.exists(base):
- files.extend(glob.glob(os.path.join(base, "*", "chats", "*.json")))
- return files
-
- def parse_file(self, filepath: str) -> SessionData:
- s = SessionData(
- session_id=os.path.basename(filepath).replace('.json', ''),
- source='gemini',
- file_path=filepath,
- file_mtime=os.path.getmtime(filepath)
- )
-
- with open(filepath, 'r', encoding='utf-8') as f:
- data = json.load(f)
-
- s.session_id = data.get('sessionId', s.session_id)
-
- for msg in data.get('messages', []):
- if msg.get('type') not in ('user', 'gemini'):
- continue
- content = msg.get('content', '')
- if content:
- s.messages.append({
- 'time': msg.get('timestamp', ''),
- 'role': 'user' if msg.get('type') == 'user' else 'ai',
- 'content': content
- })
-
- return s
diff --git a/libs/external/chat-vault/src/parsers/kiro.py b/libs/external/chat-vault/src/parsers/kiro.py
deleted file mode 100644
index 0d58bea..0000000
--- a/libs/external/chat-vault/src/parsers/kiro.py
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""Kiro CLI 解析器 - 从 SQLite 数据库读取"""
-import os
-import json
-import sqlite3
-import hashlib
-from datetime import datetime
-from .base import BaseParser, SessionData
-
-KIRO_DB = os.path.expanduser("~/.local/share/kiro-cli/data.sqlite3")
-
-class KiroParser(BaseParser):
- def find_files(self, paths: list) -> list:
- """返回数据库路径(如果存在)"""
- if os.path.exists(KIRO_DB):
- return [KIRO_DB]
- return []
-
- def parse_file(self, filepath: str) -> list:
- """解析 Kiro SQLite 数据库,返回多个 SessionData"""
- sessions = []
- file_mtime = os.path.getmtime(filepath)
-
- conn = sqlite3.connect(filepath)
- for row in conn.execute('SELECT key, value FROM conversations'):
- cwd, value = row
- try:
- data = json.loads(value)
- except json.JSONDecodeError:
- continue
-
- conv_id = data.get('conversation_id', hashlib.md5(cwd.encode()).hexdigest()[:12])
- history = data.get('history', [])
-
- messages = []
- for item in history:
- # 用户消息
- if 'user' in item:
- user = item['user']
- content = user.get('content', {})
- if isinstance(content, dict) and 'Prompt' in content:
- prompt = content['Prompt'].get('prompt', '')
- if prompt:
- messages.append({
- 'time': '',
- 'role': 'user',
- 'content': prompt
- })
-
- # AI 回复
- if 'assistant' in item:
- assistant = item['assistant']
- content = assistant.get('content', {})
- if isinstance(content, dict) and 'Message' in content:
- msg = content['Message'].get('message', '')
- if msg:
- messages.append({
- 'time': '',
- 'role': 'ai',
- 'content': msg
- })
-
- if messages:
- sessions.append(SessionData(
- session_id=f'kiro-{conv_id[:12]}',
- source='kiro',
- file_path=f'kiro:{conv_id}',
- file_mtime=file_mtime,
- cwd=cwd,
- messages=messages
- ))
-
- conn.close()
- return sessions
diff --git a/libs/external/chat-vault/src/storage.py b/libs/external/chat-vault/src/storage.py
deleted file mode 100644
index e07a9a0..0000000
--- a/libs/external/chat-vault/src/storage.py
+++ /dev/null
@@ -1,246 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""SQLite 存储模块 - 完整版"""
-import sqlite3
-import json
-import os
-import datetime
-import tiktoken
-
-SCHEMA_VERSION = 5
-CLIS = ('codex', 'kiro', 'gemini', 'claude')
-
-_encoder = tiktoken.get_encoding("cl100k_base")
-
-def count_tokens(text: str) -> int:
- return len(_encoder.encode(text)) if text else 0
-
-class ChatStorage:
- def __init__(self, db_path: str):
- self.db_path = db_path
- os.makedirs(os.path.dirname(db_path) or '.', exist_ok=True)
- self._init_db()
-
- def _conn(self):
- return sqlite3.connect(self.db_path)
-
- def _init_db(self):
- with self._conn() as conn:
- conn.execute('''CREATE TABLE IF NOT EXISTS meta (key TEXT PRIMARY KEY, value TEXT)''')
- for cli in CLIS:
- conn.execute(f'''CREATE TABLE IF NOT EXISTS meta_{cli} (key TEXT PRIMARY KEY, value TEXT)''')
- conn.execute('''
- CREATE TABLE IF NOT EXISTS sessions (
- file_path TEXT PRIMARY KEY,
- session_id TEXT,
- source TEXT NOT NULL,
- cwd TEXT,
- messages TEXT,
- file_mtime INTEGER,
- start_time TEXT,
- token_count INTEGER DEFAULT 0
- )
- ''')
- conn.execute('CREATE INDEX IF NOT EXISTS idx_source ON sessions(source)')
- conn.execute('CREATE INDEX IF NOT EXISTS idx_session_id ON sessions(session_id)')
- conn.execute('CREATE INDEX IF NOT EXISTS idx_start_time ON sessions(start_time)')
- self._set_meta('meta', 'schema_version', str(SCHEMA_VERSION))
-
- def _set_meta(self, table: str, key: str, value: str):
- with self._conn() as conn:
- conn.execute(f'INSERT OR REPLACE INTO {table} (key, value) VALUES (?, ?)', (key, value))
-
- def _get_meta(self, table: str, key: str) -> str:
- with self._conn() as conn:
- row = conn.execute(f'SELECT value FROM {table} WHERE key = ?', (key,)).fetchone()
- return row[0] if row else None
-
- def update_cli_meta(self, cli: str, path: str, sessions: int, messages: int, tokens: int = None):
- table = f'meta_{cli}'
- now = datetime.datetime.now().isoformat()
- # 顺序: path, sessions, messages, total_tokens, last_sync
- self._set_meta(table, 'path', path)
- self._set_meta(table, 'sessions', str(sessions))
- self._set_meta(table, 'messages', str(messages))
- self._set_meta(table, 'total_tokens', str(tokens or 0))
- self._set_meta(table, 'last_sync', now)
-
- def update_total_meta(self, sessions: int, messages: int, tokens: int = None):
- now = datetime.datetime.now().isoformat()
- self._set_meta('meta', 'total_sessions', str(sessions))
- self._set_meta('meta', 'total_messages', str(messages))
- if tokens is not None:
- self._set_meta('meta', 'total_tokens', str(tokens))
- self._set_meta('meta', 'last_sync', now)
-
- def get_total_meta(self) -> dict:
- return {
- 'schema_version': int(self._get_meta('meta', 'schema_version') or 0),
- 'total_sessions': int(self._get_meta('meta', 'total_sessions') or 0),
- 'total_messages': int(self._get_meta('meta', 'total_messages') or 0),
- 'last_sync': self._get_meta('meta', 'last_sync'),
- }
-
- def get_file_mtime(self, file_path: str) -> int:
- with self._conn() as conn:
- row = conn.execute('SELECT file_mtime FROM sessions WHERE file_path = ?', (file_path,)).fetchone()
- return row[0] if row else 0
-
- def upsert_session(self, session_id: str, source: str, file_path: str,
- cwd: str, messages: list, file_mtime: int, start_time: str = None):
- if file_path and not file_path.startswith('claude:') and not os.path.isabs(file_path):
- file_path = os.path.abspath(file_path)
-
- total_tokens = sum(count_tokens(msg.get('content', '')) for msg in messages)
- if not start_time and messages:
- start_time = messages[0].get('time')
-
- messages_json = json.dumps(messages, ensure_ascii=False)
- with self._conn() as conn:
- conn.execute('''
- INSERT INTO sessions (file_path, session_id, source, cwd, messages, file_mtime, start_time, token_count)
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)
- ON CONFLICT(file_path) DO UPDATE SET
- session_id=excluded.session_id, messages=excluded.messages,
- file_mtime=excluded.file_mtime, start_time=excluded.start_time, token_count=excluded.token_count
- ''', (file_path, session_id, source, cwd, messages_json, file_mtime, start_time, total_tokens))
-
- def get_cli_stats(self, cli: str) -> dict:
- with self._conn() as conn:
- sessions = conn.execute('SELECT COUNT(*) FROM sessions WHERE source = ?', (cli,)).fetchone()[0]
- row = conn.execute('SELECT SUM(json_array_length(messages)) FROM sessions WHERE source = ?', (cli,)).fetchone()
- messages = row[0] or 0
- tokens = conn.execute('SELECT SUM(token_count) FROM sessions WHERE source = ?', (cli,)).fetchone()[0] or 0
- return {'sessions': sessions, 'messages': messages, 'tokens': tokens}
-
- def get_total_stats(self) -> dict:
- with self._conn() as conn:
- sessions = conn.execute('SELECT COUNT(*) FROM sessions').fetchone()[0]
- row = conn.execute('SELECT SUM(json_array_length(messages)) FROM sessions').fetchone()
- messages = row[0] or 0
- tokens = conn.execute('SELECT SUM(token_count) FROM sessions').fetchone()[0] or 0
- return {'sessions': sessions, 'messages': messages, 'tokens': tokens}
-
- def get_token_stats(self) -> dict:
- with self._conn() as conn:
- rows = conn.execute('SELECT source, SUM(token_count) FROM sessions GROUP BY source').fetchall()
- return {r[0]: r[1] or 0 for r in rows}
-
- # === 清理孤立记录 ===
- def prune(self) -> dict:
- """删除源文件已不存在的记录"""
- removed = {'codex': 0, 'kiro': 0, 'gemini': 0, 'claude': 0}
- with self._conn() as conn:
- rows = conn.execute('SELECT file_path, source FROM sessions').fetchall()
- for fp, source in rows:
- if fp.startswith('claude:'):
- continue # Claude 使用虚拟路径
- if not os.path.exists(fp):
- conn.execute('DELETE FROM sessions WHERE file_path = ?', (fp,))
- removed[source] = removed.get(source, 0) + 1
- return removed
-
- # === 查询 ===
- def search(self, keyword: str, source: str = None, limit: int = 50) -> list:
- """搜索消息内容"""
- sql = "SELECT file_path, session_id, source, cwd, messages, start_time FROM sessions WHERE messages LIKE ?"
- params = [f'%{keyword}%']
- if source:
- sql += " AND source = ?"
- params.append(source)
- sql += f" ORDER BY start_time DESC LIMIT {limit}"
-
- results = []
- with self._conn() as conn:
- for row in conn.execute(sql, params):
- results.append({
- 'file_path': row[0], 'session_id': row[1], 'source': row[2],
- 'cwd': row[3], 'messages': json.loads(row[4]), 'start_time': row[5]
- })
- return results
-
- def get_session(self, file_path: str) -> dict:
- """获取单个会话"""
- with self._conn() as conn:
- row = conn.execute(
- 'SELECT file_path, session_id, source, cwd, messages, start_time, token_count FROM sessions WHERE file_path = ?',
- (file_path,)
- ).fetchone()
- if not row:
- return None
- return {
- 'file_path': row[0], 'session_id': row[1], 'source': row[2], 'cwd': row[3],
- 'messages': json.loads(row[4]), 'start_time': row[5], 'token_count': row[6]
- }
-
- def list_sessions(self, source: str = None, limit: int = 100, offset: int = 0) -> list:
- """列出会话"""
- sql = "SELECT file_path, session_id, source, cwd, start_time, token_count FROM sessions"
- params = []
- if source:
- sql += " WHERE source = ?"
- params.append(source)
- sql += f" ORDER BY start_time DESC LIMIT {limit} OFFSET {offset}"
-
- results = []
- with self._conn() as conn:
- for row in conn.execute(sql, params):
- results.append({
- 'file_path': row[0], 'session_id': row[1], 'source': row[2],
- 'cwd': row[3], 'start_time': row[4], 'token_count': row[5]
- })
- return results
-
- # === 导出 ===
- def export_json(self, output_path: str, source: str = None):
- """导出为 JSON"""
- sql = "SELECT file_path, session_id, source, cwd, messages, start_time, token_count FROM sessions"
- params = []
- if source:
- sql += " WHERE source = ?"
- params.append(source)
- sql += " ORDER BY start_time"
-
- data = []
- with self._conn() as conn:
- for row in conn.execute(sql, params):
- data.append({
- 'file_path': row[0], 'session_id': row[1], 'source': row[2], 'cwd': row[3],
- 'messages': json.loads(row[4]), 'start_time': row[5], 'token_count': row[6]
- })
-
- with open(output_path, 'w', encoding='utf-8') as f:
- json.dump(data, f, ensure_ascii=False, indent=2)
- return len(data)
-
- def export_csv(self, output_path: str, source: str = None):
- """导出为 CSV(扁平化消息)"""
- import csv
- sql = "SELECT session_id, source, cwd, messages, start_time FROM sessions"
- params = []
- if source:
- sql += " WHERE source = ?"
- params.append(source)
- sql += " ORDER BY start_time"
-
- count = 0
- with open(output_path, 'w', encoding='utf-8', newline='') as f:
- writer = csv.writer(f)
- writer.writerow(['session_id', 'source', 'cwd', 'time', 'role', 'content'])
- with self._conn() as conn:
- for row in conn.execute(sql, params):
- session_id, src, cwd, msgs_json, _ = row
- for msg in json.loads(msgs_json):
- writer.writerow([session_id, src, cwd, msg.get('time', ''), msg.get('role', ''), msg.get('content', '')])
- count += 1
- return count
-
- # === 获取所有文件路径(用于 prune 检查) ===
- def get_all_file_paths(self, source: str = None) -> set:
- sql = "SELECT file_path FROM sessions"
- params = []
- if source:
- sql += " WHERE source = ?"
- params.append(source)
- with self._conn() as conn:
- return {row[0] for row in conn.execute(sql, params)}
diff --git a/libs/external/chat-vault/src/watcher.py b/libs/external/chat-vault/src/watcher.py
deleted file mode 100644
index 7ae95cb..0000000
--- a/libs/external/chat-vault/src/watcher.py
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""跨平台文件监控 (Linux/macOS/Windows)"""
-
-from watchdog.observers import Observer
-from watchdog.events import FileSystemEventHandler
-import time
-
-class ChatFileHandler(FileSystemEventHandler):
- def __init__(self, callback, extensions):
- self.callback = callback
- self.extensions = extensions
-
- def _check(self, event):
- if event.is_directory:
- return
- path = event.src_path
- if any(path.endswith(ext) for ext in self.extensions):
- self.callback(path, event.event_type)
-
- def on_created(self, event):
- self._check(event)
-
- def on_modified(self, event):
- self._check(event)
-
-class ChatWatcher:
- def __init__(self, paths: list, callback, extensions=('.jsonl', '.json')):
- self.observer = Observer()
- handler = ChatFileHandler(callback, extensions)
- for path in paths:
- self.observer.schedule(handler, path, recursive=True)
-
- def start(self):
- self.observer.start()
- try:
- while True:
- time.sleep(1)
- except KeyboardInterrupt:
- self.stop()
-
- def stop(self):
- self.observer.stop()
- self.observer.join()
diff --git a/libs/external/chat-vault/start.bat b/libs/external/chat-vault/start.bat
deleted file mode 100644
index 2da21f6..0000000
--- a/libs/external/chat-vault/start.bat
+++ /dev/null
@@ -1,7 +0,0 @@
-@echo off
-cd /d "%~dp0src"
-echo 正在启动 AI Chat Converter...
-echo 按 Ctrl+C 停止
-echo.
-python main.py --watch
-pause
diff --git a/libs/external/chat-vault/start.sh b/libs/external/chat-vault/start.sh
deleted file mode 100755
index 2a2aa59..0000000
--- a/libs/external/chat-vault/start.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-# AI Chat Converter - 一键启动
-cd "$(dirname "$0")/src"
-echo "正在启动 AI Chat Converter..."
-echo "按 Ctrl+C 停止"
-echo ""
-python3 main.py --watch
diff --git a/libs/external/l10n-tool/README.md b/libs/external/l10n-tool/README.md
deleted file mode 100644
index 35c1b36..0000000
--- a/libs/external/l10n-tool/README.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# l10n-tool
-
-轻量级多语言翻译脚本,定位:先用机器翻译批量落地,再由 AI/人工逐行润色。
-
-## 特性
-- 保护 Markdown 代码块,不误翻译代码
-- 命令行一条跑完,便于批处理
-- 依赖轻:`deep-translator`(封装 Google 翻译)
-
-## 安装
-```bash
-pip install -r requirements.txt
-```
-
-## 使用示例
-```bash
-# 将中文 README 翻译到英文
-python translate.py --input ../../i18n/zh/README.md --output ../../i18n/en/README.md --src-lang zh --tgt-lang en --overwrite
-
-# 批量翻译 prompts,可在外部脚本中循环调用
-```
-
-## 建议流程(快 ⇒ 精)
-1) 机器翻译初稿:用本工具覆盖生成各语言版本。
-2) AI 校润:对关键文档/提示词逐行复核,重点检查术语一致性与人称语气。
-3) 人工抽检:挑核心页面人工对比源文,修正 AI 可能的误译。
-
-## 语言代码参考
-- 常用:zh, en, es, fr, de, ru, pt, ar, hi, ja, ko, he, it, tr, nl, pl, id, vi, th, fa, uk, bn, ta, ur, ms, sw, ha
-- 更多代码可查 ISO 639-1。
-
-## 注意
-- 若需更高质量,可替换为官方 Google Cloud Translate / DeepL API,只需改写 `translate_blocks` 中的 translator 初始化逻辑。
-- 如遇免费翻译频率限制,可分批或加重试/代理配置。
diff --git a/libs/external/l10n-tool/bulk_translate.py b/libs/external/l10n-tool/bulk_translate.py
deleted file mode 100755
index 5d7c996..0000000
--- a/libs/external/l10n-tool/bulk_translate.py
+++ /dev/null
@@ -1,140 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-批量翻译 i18n/zh 下的所有文本文件到其他语言目录。
-- 保持目录结构,遇到代码块自动跳过翻译。
-- 目标语言集合:自动读取 i18n 下的子目录,排除 zh。
-用法:
- python bulk_translate.py --src-root ../../i18n/zh --dst-root ../../i18n --src-lang zh
-可选:
- --langs en es ... # 指定目标语言;默认自动扫描
- --overwrite # 允许覆盖已有文件
-"""
-
-import argparse
-import os
-import sys
-from pathlib import Path
-from typing import Iterable, List
-
-try:
- from deep_translator import GoogleTranslator
-except ImportError:
- sys.stderr.write("[错误] 缺少 deep-translator,请先 pip install -r requirements.txt\n")
- sys.exit(1)
-
-
-def translate_blocks(text: str, translator: GoogleTranslator) -> str:
- lines = text.splitlines()
- translated: List[str] = []
- in_code = False
- buffer: List[str] = []
-
- def flush_buffer():
- if not buffer:
- return
- chunk = "\n".join(buffer)
- try:
- result = translator.translate(chunk)
- if result is None:
- raise RuntimeError("翻译返回空结果")
- translated.extend(result.split("\n"))
- except Exception:
- # 兜底:按行逐条翻译,避免整段失败
- for line in buffer:
- try:
- res_line = translator.translate(line) or line
- except Exception:
- res_line = line # 保留原文,留待人工校对
- translated.append(res_line)
- buffer.clear()
-
- for line in lines:
- if line.strip().startswith("```"):
- flush_buffer()
- in_code = not in_code
- translated.append(line)
- continue
- if in_code:
- translated.append(line)
- continue
- if not line.strip():
- flush_buffer()
- translated.append(line)
- continue
- buffer.append(line)
- flush_buffer()
- return "\n".join(translated)
-
-
-def iter_source_files(src_root: Path) -> Iterable[Path]:
- for path in src_root.rglob('*'):
- if path.is_file():
- yield path
-
-
-def main() -> int:
- parser = argparse.ArgumentParser(description="批量翻译 i18n/zh -> 其他语言")
- parser.add_argument('--src-root', default='../../i18n/zh', help='源语言根目录')
- parser.add_argument('--dst-root', default='../../i18n', help='目标语言根目录集合')
- parser.add_argument('--src-lang', default='zh-CN', help='源语言代码')
- parser.add_argument('--langs', nargs='*', help='指定目标语言,不含源语言')
- parser.add_argument('--overwrite', action='store_true', help='允许覆盖已有文件')
- args = parser.parse_args()
-
- src_root = Path(args.src_root).resolve()
- dst_root = Path(args.dst_root).resolve()
-
- if not src_root.exists():
- sys.stderr.write(f"[错误] 源目录不存在: {src_root}\n")
- return 1
-
- code_overrides = {
- 'zh': 'zh-CN',
- 'zh-CN': 'zh-CN',
- 'he': 'iw', # Google 使用旧代码
- }
-
- def map_code(lang: str) -> str:
- return code_overrides.get(lang, lang)
-
- if args.langs:
- target_langs = [lang for lang in args.langs if map_code(lang) != args.src_lang]
- else:
- target_langs = [p.name for p in dst_root.iterdir() if p.is_dir() and map_code(p.name) != args.src_lang]
-
- if not target_langs:
- sys.stderr.write("[错误] 无目标语言目录\n")
- return 1
-
- for lang in target_langs:
- translator = GoogleTranslator(source=args.src_lang, target=map_code(lang))
- print(f"==== 开始翻译 -> {lang} ====")
- for src_file in iter_source_files(src_root):
- rel_path = src_file.relative_to(src_root)
- dst_file = dst_root / lang / rel_path
- dst_file.parent.mkdir(parents=True, exist_ok=True)
-
- if dst_file.exists() and not args.overwrite:
- print(f"跳过已存在 {dst_file}")
- continue
-
- with open(src_file, 'r', encoding='utf-8') as f:
- content = f.read()
-
- try:
- translated = translate_blocks(content, translator)
- except Exception as exc:
- print(f"[失败] {src_file} -> {dst_file}: {exc}")
- continue
-
- with open(dst_file, 'w', encoding='utf-8') as f:
- f.write(translated + '\n')
- print(f"[OK] {src_file} -> {dst_file}")
-
- print("全部翻译完成")
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/libs/external/l10n-tool/chinese_files_list.json b/libs/external/l10n-tool/chinese_files_list.json
deleted file mode 100644
index a846697..0000000
--- a/libs/external/l10n-tool/chinese_files_list.json
+++ /dev/null
@@ -1,195 +0,0 @@
-[
- "i18n/zh/documents/Templates and Resources/代码组织.md",
- "i18n/zh/documents/Templates and Resources/编程书籍推荐.md",
- "i18n/zh/documents/Templates and Resources/通用项目架构模板.md",
- "i18n/zh/documents/Templates and Resources/工具集.md",
- "i18n/zh/documents/README.md",
- "i18n/zh/documents/Tutorials and Guides/telegram-dev/telegram Markdown 代码块格式修复记录 2025-12-15.md",
- "i18n/zh/documents/Tutorials and Guides/tmux快捷键大全.md",
- "i18n/zh/documents/Tutorials and Guides/关于手机ssh任意位置链接本地计算机,基于frp实现的方法.md",
- "i18n/zh/documents/Tutorials and Guides/LazyVim快捷键大全.md",
- "i18n/zh/documents/Tutorials and Guides/auggie-mcp配置文档.md",
- "i18n/zh/documents/Methodology and Principles/系统提示词构建原则.md",
- "i18n/zh/documents/Methodology and Principles/gluecoding.md",
- "i18n/zh/documents/Methodology and Principles/胶水编程.md",
- "i18n/zh/documents/Methodology and Principles/vibe-coding-经验收集.md",
- "i18n/zh/documents/Methodology and Principles/开发经验.md",
- "i18n/zh/documents/Methodology and Principles/学习经验.md",
- "i18n/zh/documents/Methodology and Principles/A Formalization of Recursive Self-Optimizing Generative Systems.md",
- "i18n/zh/documents/Methodology and Principles/编程之道.md",
- "i18n/zh/prompts/README.md",
- "i18n/zh/prompts/coding_prompts/(3,1)_#_流程标准化.md",
- "i18n/zh/prompts/coding_prompts/客观分析.md",
- "i18n/zh/prompts/coding_prompts/精华技术文档生成提示词.md",
- "i18n/zh/prompts/coding_prompts/智能需求理解与研发导航引擎.md",
- "i18n/zh/prompts/coding_prompts/(21,1)_你是我的顶级编程助手,我将使用自然语言描述开发需求。请你将其转换为一个结构化、专业、详细、可执行的编程任务说明文档,输出.md",
- "i18n/zh/prompts/coding_prompts/(17,2)_#_软件工程分析.md",
- "i18n/zh/prompts/coding_prompts/(22,5)_前几天,我被_Claude_那些臃肿、过度设计的解决方案搞得很沮丧,里面有一大堆我不需要的“万一”功能。然后我尝试在我的.md",
- "i18n/zh/prompts/coding_prompts/分析2.md",
- "i18n/zh/prompts/coding_prompts/(7,1)_#_AI生成代码文档_-_通用提示词模板.md",
- "i18n/zh/prompts/coding_prompts/系统架构可视化生成Mermaid.md",
- "i18n/zh/prompts/coding_prompts/系统架构.md",
- "i18n/zh/prompts/coding_prompts/(12,2)_{任务帮我进行智能任务描述,分析与补全任务,你需要理解、描述我当前正在进行的任务,自动识别缺少的要素、未完善的部分、可能.md",
- "i18n/zh/prompts/coding_prompts/简易提示词优化器.md",
- "i18n/zh/prompts/coding_prompts/(2,1)_#_ultrathink_ultrathink_ultrathink_ultrathink_ultrathink.md",
- "i18n/zh/prompts/coding_prompts/(13,1)_#_提示工程师任务说明.md",
- "i18n/zh/prompts/coding_prompts/(20,1)_#_高质量代码开发专家.md",
- "i18n/zh/prompts/coding_prompts/(14,2)_############################################################.md",
- "i18n/zh/prompts/coding_prompts/(11,1)_{任务你是一名资深系统架构师与AI协同设计顾问。nn目标:当用户启动一个新项目或请求AI帮助开发功能时,你必须优先帮助用.md",
- "i18n/zh/prompts/coding_prompts/(9,1)_{角色与目标{你首席软件架构师_(Principal_Software_Architect)(高性能、可维护、健壮、DD.md",
- "i18n/zh/prompts/coding_prompts/标准项目目录结构.md",
- "i18n/zh/prompts/coding_prompts/分析1.md",
- "i18n/zh/prompts/coding_prompts/执行纯净性检测.md",
- "i18n/zh/prompts/coding_prompts/标准化流程.md",
- "i18n/zh/prompts/coding_prompts/项目上下文文档生成.md",
- "i18n/zh/prompts/coding_prompts/人机对齐.md",
- "i18n/zh/prompts/coding_prompts/(1,1)_#_📘_项目上下文文档生成_·_工程化_Prompt(专业优化版).md",
- "i18n/zh/prompts/coding_prompts/(5,1)_{content#_🚀_智能需求理解与研发导航引擎(Meta_R&D_Navigator_·.md",
- "i18n/zh/prompts/coding_prompts/(6,1)_{System_Prompt#_🧠_系统提示词:AI_Prompt_编程语言约束与持久化记忆规范nn##.md",
- "i18n/zh/prompts/coding_prompts/plan提示词.md",
- "i18n/zh/prompts/coding_prompts/(15,1)_###_Claude_Code_八荣八耻.md",
- "i18n/zh/prompts/coding_prompts/任务描述,分析与补全任务.md",
- "i18n/zh/prompts/coding_prompts/(10,1)_{任务你是首席软件架构师_(Principal_Software_Architect),专注于构建[高性能__可维护.md",
- "i18n/zh/prompts/coding_prompts/(4,1)_ultrathink__Take_a_deep_breath..md",
- "i18n/zh/prompts/coding_prompts/docs文件夹中文命名提示词.md",
- "i18n/zh/prompts/coding_prompts/(18,2)_#_通用项目架构综合分析与优化框架.md",
- "i18n/zh/prompts/coding_prompts/胶水开发.md",
- "i18n/zh/prompts/coding_prompts/sh控制面板生成.md",
- "i18n/zh/prompts/coding_prompts/(8,1)_#_执行📘_文件头注释规范(用于所有代码文件最上方).md",
- "i18n/zh/prompts/coding_prompts/前端设计.md",
- "i18n/zh/prompts/coding_prompts/(19,1)_##_角色定义.md",
- "i18n/zh/prompts/coding_prompts/index.md",
- "i18n/zh/prompts/coding_prompts/(16,3)_#_CLAUDE_记忆.md",
- "i18n/zh/prompts/coding_prompts/输入简单的日常行为的研究报告摘要.md",
- "i18n/zh/prompts/meta_prompts/.gitkeep",
- "i18n/zh/prompts/user_prompts/数据管道.md",
- "i18n/zh/prompts/user_prompts/项目变量与工具统一维护.md",
- "i18n/zh/prompts/user_prompts/ASCII图生成.md",
- "i18n/zh/prompts/system_prompts/# 💀《科比的救母救父救未婚妻与岳父岳母日记》 × OTE模型交易模式 × M.I.T白人金融教授(被女学生指控性骚扰版)v2.md",
- "i18n/zh/prompts/system_prompts/CLAUDE.md/5/CLAUDE.md",
- "i18n/zh/prompts/system_prompts/CLAUDE.md/9/AGENTS.md",
- "i18n/zh/prompts/system_prompts/CLAUDE.md/6/CLAUDE.md",
- "i18n/zh/prompts/system_prompts/CLAUDE.md/3/CLAUDE.md",
- "i18n/zh/prompts/system_prompts/CLAUDE.md/10/CLAUDE.md",
- "i18n/zh/prompts/system_prompts/CLAUDE.md/1/CLAUDE.md",
- "i18n/zh/prompts/system_prompts/CLAUDE.md/8/CLAUDE.md",
- "i18n/zh/prompts/system_prompts/CLAUDE.md/4/CLAUDE.md",
- "i18n/zh/prompts/system_prompts/CLAUDE.md/7/CLAUDE.md",
- "i18n/zh/prompts/system_prompts/CLAUDE.md/2/CLAUDE.md",
- "i18n/zh/skills/telegram-dev/SKILL.md",
- "i18n/zh/skills/telegram-dev/references/动态视图对齐实现文档.md",
- "i18n/zh/skills/telegram-dev/references/Telegram_Bot_按钮和键盘实现模板.md",
- "i18n/zh/skills/telegram-dev/references/index.md",
- "i18n/zh/skills/claude-skills/AGENTS.md",
- "i18n/zh/skills/claude-skills/assets/template-complete.md",
- "i18n/zh/skills/claude-skills/assets/template-minimal.md",
- "i18n/zh/skills/claude-skills/SKILL.md",
- "i18n/zh/skills/claude-skills/scripts/create-skill.sh",
- "i18n/zh/skills/claude-skills/scripts/validate-skill.sh",
- "i18n/zh/skills/claude-skills/references/anti-patterns.md",
- "i18n/zh/skills/claude-skills/references/README.md",
- "i18n/zh/skills/claude-skills/references/quality-checklist.md",
- "i18n/zh/skills/claude-skills/references/skill-spec.md",
- "i18n/zh/skills/claude-skills/references/index.md",
- "i18n/zh/skills/snapdom/SKILL.md",
- "i18n/zh/skills/snapdom/references/other.md",
- "i18n/zh/skills/snapdom/references/index.md",
- "i18n/zh/skills/timescaledb/SKILL.md",
- "i18n/zh/skills/timescaledb/references/hyperfunctions.md",
- "i18n/zh/skills/timescaledb/references/performance.md",
- "i18n/zh/skills/timescaledb/references/other.md",
- "i18n/zh/skills/timescaledb/references/compression.md",
- "i18n/zh/skills/timescaledb/references/api.md",
- "i18n/zh/skills/timescaledb/references/tutorials.md",
- "i18n/zh/skills/timescaledb/references/hypertables.md",
- "i18n/zh/skills/timescaledb/references/time_buckets.md",
- "i18n/zh/skills/timescaledb/references/continuous_aggregates.md",
- "i18n/zh/skills/timescaledb/references/installation.md",
- "i18n/zh/skills/timescaledb/references/llms-full.md",
- "i18n/zh/skills/timescaledb/references/llms.md",
- "i18n/zh/skills/timescaledb/references/getting_started.md",
- "i18n/zh/skills/timescaledb/references/index.md",
- "i18n/zh/skills/README.md",
- "i18n/zh/skills/cryptofeed/SKILL.md",
- "i18n/zh/skills/cryptofeed/references/other.md",
- "i18n/zh/skills/cryptofeed/references/README.md",
- "i18n/zh/skills/cryptofeed/references/index.md",
- "i18n/zh/skills/coingecko/SKILL.md",
- "i18n/zh/skills/coingecko/references/coins.md",
- "i18n/zh/skills/coingecko/references/contract.md",
- "i18n/zh/skills/coingecko/references/exchanges.md",
- "i18n/zh/skills/coingecko/references/other.md",
- "i18n/zh/skills/coingecko/references/introduction.md",
- "i18n/zh/skills/coingecko/references/nfts.md",
- "i18n/zh/skills/coingecko/references/trending.md",
- "i18n/zh/skills/coingecko/references/reference.md",
- "i18n/zh/skills/coingecko/references/llms-full.md",
- "i18n/zh/skills/coingecko/references/market_data.md",
- "i18n/zh/skills/coingecko/references/pricing.md",
- "i18n/zh/skills/coingecko/references/authentication.md",
- "i18n/zh/skills/coingecko/references/llms.md",
- "i18n/zh/skills/coingecko/references/index.md",
- "i18n/zh/skills/hummingbot/SKILL.md",
- "i18n/zh/skills/hummingbot/references/advanced.md",
- "i18n/zh/skills/hummingbot/references/other.md",
- "i18n/zh/skills/hummingbot/references/connectors.md",
- "i18n/zh/skills/hummingbot/references/troubleshooting.md",
- "i18n/zh/skills/hummingbot/references/development.md",
- "i18n/zh/skills/hummingbot/references/strategies.md",
- "i18n/zh/skills/hummingbot/references/getting_started.md",
- "i18n/zh/skills/hummingbot/references/configuration.md",
- "i18n/zh/skills/hummingbot/references/trading.md",
- "i18n/zh/skills/hummingbot/references/index.md",
- "i18n/zh/skills/claude-code-guide/SKILL.md",
- "i18n/zh/skills/claude-code-guide/references/README.md",
- "i18n/zh/skills/claude-code-guide/references/index.md",
- "i18n/zh/skills/proxychains/SKILL.md",
- "i18n/zh/skills/proxychains/scripts/setup-proxy.sh",
- "i18n/zh/skills/proxychains/references/proxychains.conf",
- "i18n/zh/skills/proxychains/references/troubleshooting.md",
- "i18n/zh/skills/proxychains/references/setup-guide.md",
- "i18n/zh/skills/proxychains/references/quick-reference.md",
- "i18n/zh/skills/proxychains/references/index.md",
- "i18n/zh/skills/ccxt/SKILL.md",
- "i18n/zh/skills/ccxt/references/specification.md",
- "i18n/zh/skills/ccxt/references/exchanges.md",
- "i18n/zh/skills/ccxt/references/other.md",
- "i18n/zh/skills/ccxt/references/pro.md",
- "i18n/zh/skills/ccxt/references/faq.md",
- "i18n/zh/skills/ccxt/references/cli.md",
- "i18n/zh/skills/ccxt/references/manual.md",
- "i18n/zh/skills/ccxt/references/getting_started.md",
- "i18n/zh/skills/ccxt/references/index.md",
- "i18n/zh/skills/claude-cookbooks/SKILL.md",
- "i18n/zh/skills/claude-cookbooks/scripts/memory_tool.py",
- "i18n/zh/skills/claude-cookbooks/references/multimodal.md",
- "i18n/zh/skills/claude-cookbooks/references/capabilities.md",
- "i18n/zh/skills/claude-cookbooks/references/patterns.md",
- "i18n/zh/skills/claude-cookbooks/references/README.md",
- "i18n/zh/skills/claude-cookbooks/references/third_party.md",
- "i18n/zh/skills/claude-cookbooks/references/CONTRIBUTING.md",
- "i18n/zh/skills/claude-cookbooks/references/main_readme.md",
- "i18n/zh/skills/claude-cookbooks/references/tool_use.md",
- "i18n/zh/skills/claude-cookbooks/references/index.md",
- "i18n/zh/skills/polymarket/SKILL.md",
- "i18n/zh/skills/polymarket/references/other.md",
- "i18n/zh/skills/polymarket/references/realtime-client.md",
- "i18n/zh/skills/polymarket/references/api.md",
- "i18n/zh/skills/polymarket/references/learn.md",
- "i18n/zh/skills/polymarket/references/README.md",
- "i18n/zh/skills/polymarket/references/llms-full.md",
- "i18n/zh/skills/polymarket/references/llms.md",
- "i18n/zh/skills/polymarket/references/getting_started.md",
- "i18n/zh/skills/polymarket/references/guides.md",
- "i18n/zh/skills/polymarket/references/trading.md",
- "i18n/zh/skills/polymarket/references/index.md",
- "i18n/zh/skills/postgresql/SKILL.md",
- "i18n/zh/skills/postgresql/references/sql.md",
- "i18n/zh/skills/postgresql/references/getting_started.md",
- "i18n/zh/skills/postgresql/references/index.md",
- "i18n/zh/skills/twscrape/SKILL.md",
- "i18n/zh/skills/twscrape/references/examples.md",
- "i18n/zh/skills/twscrape/references/installation.md",
- "i18n/zh/skills/twscrape/references/index.md",
- "i18n/zh/README.md"
-]
\ No newline at end of file
diff --git a/libs/external/l10n-tool/path_translation_map.json b/libs/external/l10n-tool/path_translation_map.json
deleted file mode 100644
index 078b8d8..0000000
--- a/libs/external/l10n-tool/path_translation_map.json
+++ /dev/null
@@ -1,163 +0,0 @@
-{
- "zh": "en",
- "documents": "documents",
- "prompts": "prompts",
- "skills": "skills",
- "Templates and Resources": "Templates and Resources",
- "代码组织": "Code_Organization",
- "编程书籍推荐": "Recommended_Programming_Books",
- "通用项目架构模板": "General_Project_Architecture_Template",
- "工具集": "Tool_Set",
- "README": "README",
- "Tutorials and Guides": "Tutorials and Guides",
- "telegram-dev": "telegram-dev",
- "telegram Markdown 代码块格式修复记录 2025-12-15": "telegram_Markdown_Code_Block_Format_Fix_Log_2025_12_15",
- "tmux快捷键大全": "tmux_Shortcut_Cheatsheet",
- "关于手机ssh任意位置链接本地计算机,基于frp实现的方法": "Method_for_SSH_Linking_Mobile_Phone_to_Local_Computer_Anywhere_Based_on_FRP_Implementation",
- "LazyVim快捷键大全": "LazyVim_Shortcut_Cheatsheet",
- "auggie-mcp配置文档": "auggie_mcp_Configuration_Document",
- "Methodology and Principles": "Methodology and Principles",
- "系统提示词构建原则": "System_Prompt_Construction_Principles",
- "gluecoding": "gluecoding",
- "胶水编程": "Glue_Programming",
- "vibe-coding-经验收集": "vibe_coding_Experience_Collection",
- "开发经验": "Development_Experience",
- "学习经验": "Learning_Experience",
- "A Formalization of Recursive Self-Optimizing Generative Systems": "A_Formalization_of_Recursive_Self_Optimizing_Generative_Systems",
- "编程之道": "The_Way_of_Programming",
- "coding_prompts": "coding_prompts",
- "客观分析": "Objective_Analysis",
- "精华技术文档生成提示词": "Essential_Technical_Document_Generation_Prompt",
- "智能需求理解与研发导航引擎": "Intelligent_Requirement_Understanding_and_R_D_Navigation_Engine",
- "软件工程分析": "Software_Engineering_Analysis",
- "系统架构可视化生成Mermaid": "System_Architecture_Visualization_Generation_Mermaid",
- "系统架构": "System_Architecture",
- "简易提示词优化器": "Simple_Prompt_Optimizer",
- "提示工程师任务说明": "Prompt_Engineer_Task_Description",
- "高质量代码开发专家": "High_Quality_Code_Development_Expert",
- "标准项目目录结构": "Standard_Project_Directory_Structure",
- "分析1": "Analysis_1",
- "分析2": "Analysis_2",
- "执行纯净性检测": "Perform_Purity_Test",
- "标准化流程": "Standardized_Process",
- "项目上下文文档生成": "Project_Context_Document_Generation",
- "人机对齐": "Human_AI_Alignment",
- "plan提示词": "Plan_Prompt",
- "Claude Code 八荣八耻": "Claude_Code_Eight_Honors_and_Eight_Shames",
- "任务描述,分析与补全任务": "Task_Description_Analysis_and_Completion",
- "前端设计": "Frontend_Design",
- "输入简单的日常行为的研究报告摘要": "Summary_of_Research_Report_on_Simple_Daily_Behaviors",
- "胶水开发": "Glue_Development",
- "sh控制面板生成": "SH_Control_Panel_Generation",
- "角色定义": "Role_Definition",
- "CLAUDE 记忆": "CLAUDE_Memory",
- "index": "index",
- "user_prompts": "user_prompts",
- "数据管道": "Data_Pipeline",
- "项目变量与工具统一维护": "Unified_Management_of_Project_Variables_and_Tools",
- "ASCII图生成": "ASCII_Art_Generation",
- "system_prompts": "system_prompts",
- "SKILL": "SKILL",
- "references": "references",
- "动态视图对齐实现文档": "Dynamic_View_Alignment_Implementation_Document",
- "Telegram_Bot_按钮和键盘实现模板": "Telegram_Bot_Button_and_Keyboard_Implementation_Template",
- "claude-skills": "claude-skills",
- "assets": "assets",
- "template-complete": "template-complete",
- "template-minimal": "template-minimal",
- "scripts": "scripts",
- "create-skill": "create-skill",
- "validate-skill": "validate-skill",
- "anti-patterns": "anti-patterns",
- "quality-checklist": "quality-checklist",
- "skill-spec": "skill-spec",
- "snapdom": "snapdom",
- "other": "other",
- "timescaledb": "timescaledb",
- "hyperfunctions": "hyperfunctions",
- "performance": "performance",
- "compression": "compression",
- "api": "api",
- "tutorials": "tutorials",
- "hypertables": "hypertables",
- "time_buckets": "time_buckets",
- "continuous_aggregates": "continuous_aggregates",
- "installation": "installation",
- "llms-full": "llms-full",
- "llms": "llms",
- "getting_started": "getting_started",
- "cryptofeed": "cryptofeed",
- "coingecko": "coingecko",
- "coins": "coins",
- "contract": "contract",
- "exchanges": "exchanges",
- "introduction": "introduction",
- "nfts": "nfts",
- "trending": "trending",
- "reference": "reference",
- "market_data": "market_data",
- "pricing": "pricing",
- "authentication": "authentication",
- "hummingbot": "hummingbot",
- "advanced": "advanced",
- "connectors": "connectors",
- "troubleshooting": "troubleshooting",
- "development": "development",
- "strategies": "strategies",
- "configuration": "configuration",
- "trading": "trading",
- "claude-code-guide": "claude-code-guide",
- "proxychains": "proxychains",
- "setup-proxy": "setup-proxy",
- "proxychains.conf": "proxychains.conf",
- "setup-guide": "setup-guide",
- "quick-reference": "quick-reference",
- "ccxt": "ccxt",
- "specification": "specification",
- "pro": "pro",
- "faq": "faq",
- "cli": "cli",
- "manual": "manual",
- "claude-cookbooks": "claude-cookbooks",
- "memory_tool": "memory_tool",
- "multimodal": "multimodal",
- "capabilities": "capabilities",
- "patterns": "patterns",
- "third_party": "third_party",
- "CONTRIBUTING": "CONTRIBUTING",
- "main_readme": "main_readme",
- "tool_use": "tool_use",
- "polymarket": "polymarket",
- "realtime-client": "realtime-client",
- "learn": "learn",
- "guides": "guides",
- "postgresql": "postgresql",
- "sql": "sql",
- "twscrape": "twscrape",
- "examples": "examples",
- "installation": "installation",
- "# 💀《科比的救母救父救未婚妻与岳父岳母日记》 × OTE模型交易模式 × M.I.T白人金融教授(被女学生指控性骚扰版)v2": "Kobe_s_Diary_of_Saving_Mother_Father_Fiancee_and_In_laws_OTE_Model_Trading_Mode_M_I_T_White_Professor_Accused_of_Sexual_Harassment_by_Female_Student_v2",
- "(3,1)_#_流程标准化": "Standardization_Process",
- "(21,1)_你是我的顶级编程助手,我将使用自然语言描述开发需求。请你将其转换为一个结构化、专业、详细、可执行的编程任务说明文档,输出": "Top_Programming_Assistant_Task_Description",
- "(17,2)_#_软件工程分析": "Software_Engineering_Analysis",
- "(22,5)_前几天,我被_Claude_那些臃肿、过度设计的解决方案搞得很沮丧,里面有一大堆我不需要的“万一”功能。然后我尝试在我的": "Frustration_with_Claude_Over_Designed_Solutions",
- "(7,1)_#_AI生成代码文档_-_通用提示词模板": "AI_Generated_Code_Documentation_General_Prompt_Template",
- "(12,2)_{任务帮我进行智能任务描述,分析与补全任务,你需要理解、描述我当前正在进行的任务,自动识别缺少的要素、未完善的部分、可能": "Intelligent_Task_Description_Analysis_and_Completion",
- "(2,1)_#_ultrathink_ultrathink_ultrathink_ultrathink_ultrathink": "ultrathink_ultrathink_ultrathink_ultrathink_ultrathink",
- "(13,1)_#_提示工程师任务说明": "Prompt_Engineer_Task_Description",
- "(20,1)_#_高质量代码开发专家": "High_Quality_Code_Development_Expert",
- "(14,2)_############################################################": "Hash_Delimiters",
- "(11,1)_{任务你是一名资深系统架构师与AI协同设计顾问。nn目标:当用户启动一个新项目或请求AI帮助开发功能时,你必须优先帮助用": "Senior_System_Architect_AI_Collaboration_Consultant_Task",
- "(9,1)_{角色与目标{你首席软件架构师_(Principal_Software_Architect)(高性能、可维护、健壮、DD": "Principal_Software_Architect_Role_and_Goals",
- "(1,1)_#_📘_项目上下文文档生成_·_工程化_Prompt(专业优化版)": "Project_Context_Document_Generation_Engineered_Prompt_Optimized",
- "(5,1)_{content#_🚀_智能需求理解与研发导航引擎(Meta_R&D_Navigator_·": "Intelligent_Requirement_Understanding_and_RD_Navigation_Engine",
- "(6,1)_{System_Prompt#_🧠_系统提示词:AI_Prompt_编程语言约束与持久化记忆规范nn##": "System_Prompt_AI_Prompt_Programming_Language_Constraints_and_Persistent_Memory_Specifications",
- "(15,1)_###_Claude_Code_八荣八耻": "Claude_Code_Eight_Honors_and_Eight_Shames",
- "(10,1)_{任务你是首席软件架构师_(Principal_Software_Architect),专注于构建[高性能__可维护": "Principal_Software_Architect_Focus_High_Performance_Maintainable_Systems",
- "(4,1)_ultrathink__Take_a_deep_breath.": "ultrathink__Take_a_deep_breath",
- "docs文件夹中文命名提示词": "Docs_Folder_Chinese_Naming_Prompt",
- "(18,2)_#_通用项目架构综合分析与优化框架": "General_Project_Architecture_Comprehensive_Analysis_and_Optimization_Framework",
- "(8,1)_#_执行📘_文件头注释规范(用于所有代码文件最上方)": "Execute_File_Header_Comment_Specification_for_All_Code_Files",
- "(19,1)_##_角色定义": "Role_Definition",
- "(16,3)_#_CLAUDE_记忆": "CLAUDE_Memory"
-}
\ No newline at end of file
diff --git a/libs/external/l10n-tool/requirements.txt b/libs/external/l10n-tool/requirements.txt
deleted file mode 100644
index f4bcfbb..0000000
--- a/libs/external/l10n-tool/requirements.txt
+++ /dev/null
@@ -1 +0,0 @@
-deep-translator>=1.11.4
diff --git a/libs/external/l10n-tool/translate.py b/libs/external/l10n-tool/translate.py
deleted file mode 100755
index 4d958ca..0000000
--- a/libs/external/l10n-tool/translate.py
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-"""
-轻量级批量翻译工具:将 Markdown/文本从一种语言翻译到另一种语言。
-默认使用 deep-translator 封装的 Google Translator,自带简单的代码块保护。
-用法示例:
- python translate.py --input ../../i18n/zh/README.md --src-lang zh --tgt-lang en --output ../../i18n/en/README.md
-"""
-
-import argparse
-import os
-import sys
-from typing import List
-
-try:
- from deep_translator import GoogleTranslator
-except ImportError as exc: # pragma: no cover - 运行前请安装依赖
- sys.stderr.write("[错误] 缺少依赖 deep-translator,请先 `pip install -r requirements.txt`\n")
- raise
-
-
-def translate_blocks(lines: List[str], src: str, tgt: str) -> List[str]:
- """逐段翻译,保持代码块原样,减少上下文丢失。"""
- translated: List[str] = []
- in_code = False
- buffer: List[str] = []
- translator = GoogleTranslator(source=src, target=tgt)
-
- def flush_buffer():
- if not buffer:
- return
- text = "\n".join(buffer)
- try:
- result = translator.translate(text)
- except Exception as exc: # pragma: no cover
- raise RuntimeError(f"翻译失败: {exc}") from exc
- translated.extend(result.split("\n"))
- buffer.clear()
-
- for line in lines:
- if line.strip().startswith("```"):
- flush_buffer()
- in_code = not in_code
- translated.append(line)
- continue
- if in_code:
- translated.append(line)
- continue
- # 空行作为段落分割,先刷新再保留空行
- if not line.strip():
- flush_buffer()
- translated.append(line)
- continue
- buffer.append(line)
-
- flush_buffer()
- return translated
-
-
-def main() -> int:
- parser = argparse.ArgumentParser(description="批量翻译文本/Markdown,保护代码块")
- parser.add_argument("--input", required=True, help="源文件路径")
- parser.add_argument("--output", required=True, help="目标文件路径")
- parser.add_argument("--src-lang", required=True, help="源语言代码,如 zh")
- parser.add_argument("--tgt-lang", required=True, help="目标语言代码,如 en")
- parser.add_argument("--overwrite", action="store_true", help="允许覆盖已有输出文件")
- args = parser.parse_args()
-
- if not os.path.isfile(args.input):
- sys.stderr.write(f"[错误] 源文件不存在: {args.input}\n")
- return 1
- if os.path.exists(args.output) and not args.overwrite:
- sys.stderr.write(f"[错误] 目标文件已存在,加 --overwrite 才会覆盖: {args.output}\n")
- return 1
-
- with open(args.input, "r", encoding="utf-8") as f:
- lines = f.read().splitlines()
-
- translated = translate_blocks(lines, args.src_lang, args.tgt_lang)
-
- os.makedirs(os.path.dirname(args.output), exist_ok=True)
- with open(args.output, "w", encoding="utf-8") as f:
- f.write("\n".join(translated) + "\n")
-
- print(f"[完成] {args.input} -> {args.output} ({args.src_lang} -> {args.tgt_lang})")
- return 0
-
-
-if __name__ == "__main__": # pragma: no cover
- sys.exit(main())
diff --git a/libs/external/l10n-tool/translate_files.py b/libs/external/l10n-tool/translate_files.py
deleted file mode 100644
index 210456d..0000000
--- a/libs/external/l10n-tool/translate_files.py
+++ /dev/null
@@ -1,182 +0,0 @@
-import os
-import re
-import json
-from pathlib import Path
-
-# Load PATH_TRANSLATION_MAP from JSON
-# Ensure the path is relative to the script's location or absolute
-script_dir = Path(__file__).parent
-path_translation_map_path = script_dir / 'path_translation_map.json'
-
-with open(path_translation_map_path, 'r', encoding='utf-8') as f:
- PATH_TRANSLATION_MAP = json.load(f)
-
-def translate_path_component(component):
- if component in PATH_TRANSLATION_MAP:
- return PATH_TRANSLATION_MAP[component]
-
- # Handle numeric prefixes like (3,1)_#_
- if re.match(r"^\(\d+,\d+\)_#?_", component):
- cleaned_component = re.sub(r"^\(\d+,\d+\)_#?_", "", component).replace("_", " ")
- # Try to match cleaned component against known translations
- for k, v in PATH_TRANSLATION_MAP.items():
- if cleaned_component in k or k in cleaned_component:
- return v.replace(" ", "_") # Return simplified and underscored version
-
- # Fallback for complex patterns not in map
- return re.sub(r"[^a-zA-Z0-9]+", "_", cleaned_component).strip("_")
-
- # If it's a very long Chinese filename that might have specific terms
- # These were added to PATH_TRANSLATION_MAP now, so this generic logic might not be hit as often
- if "代码组织" == component: # Exact match for a known common Chinese filename part
- return "Code_Organization"
- if "编程书籍推荐" == component:
- return "Recommended_Programming_Books"
- if "通用项目架构模板" == component:
- return "General_Project_Architecture_Template"
- if "工具集" == component:
- return "Tool_Set"
- if "系统提示词构建原则" == component:
- return "System_Prompt_Construction_Principles"
- if "胶水编程" == component:
- return "Glue_Programming"
- if "vibe-coding-经验收集" == component:
- return "vibe-coding-Experience_Collection"
- if "开发经验" == component:
- return "Development_Experience"
- if "学习经验" == component:
- return "Learning_Experience"
- if "编程之道" == component:
- return "The_Way_of_Programming"
- if "客观分析" == component:
- return "Objective_Analysis"
- if "精华技术文档生成提示词" == component:
- return "Essential_Technical_Document_Generation_Prompt"
- if "智能需求理解与研发导航引擎" == component:
- return "Intelligent_Requirement_Understanding_and_R_D_Navigation_Engine"
- if "软件工程分析" == component:
- return "Software_Engineering_Analysis"
- if "系统架构可视化生成Mermaid":
- return "System_Architecture_Visualization_Generation_Mermaid"
- if "系统架构":
- return "System_Architecture"
- if "简易提示词优化器":
- return "Simple_Prompt_Optimizer"
- if "提示工程师任务说明":
- return "Prompt_Engineer_Task_Description"
- if "高质量代码开发专家":
- return "High_Quality_Code_Development_Expert"
- if "标准项目目录结构":
- return "Standard_Project_Directory_Structure"
- if "分析1":
- return "Analysis_1"
- if "分析2":
- return "Analysis_2"
- if "执行纯净性检测":
- return "Perform_Purity_Test"
- if "标准化流程":
- return "Standardized_Process"
- if "项目上下文文档生成":
- return "Project_Context_Document_Generation"
- if "人机对齐":
- return "Human_AI_Alignment"
- if "plan提示词":
- return "Plan_Prompt"
- if "Claude Code 八荣八耻":
- return "Claude_Code_Eight_Honors_and_Eight_Shames"
- if "任务描述,分析与补全任务":
- return "Task_Description_Analysis_and_Completion"
- if "前端设计":
- return "Frontend_Design"
- if "输入简单的日常行为的研究报告摘要":
- return "Summary_of_Research_Report_on_Simple_Daily_Behaviors"
- if "胶水开发":
- return "Glue_Development"
- if "sh控制面板生成":
- return "SH_Control_Panel_Generation"
- if "角色定义":
- return "Role_Definition"
- if "CLAUDE 记忆":
- return "CLAUDE_Memory"
- if "Docs文件夹中文命名提示词":
- return "Docs_Folder_Chinese_Naming_Prompt"
- if "通用项目架构综合分析与优化框架":
- return "General_Project_Architecture_Comprehensive_Analysis_and_Optimization_Framework"
- if "执行📘_文件头注释规范(用于所有代码文件最上方)" == component:
- return "Execute_File_Header_Comment_Specification_for_All_Code_Files"
- if "数据管道" == component:
- return "Data_Pipeline"
- if "项目变量与工具统一维护" == component:
- return "Unified_Management_of_Project_Variables_and_Tools"
- if "ASCII图生成" == component:
- return "ASCII_Art_Generation"
- if "Kobe's Diary of Saving Mother, Father, Fiancee, and In-laws × OTE Model Trading Mode × M.I.T White Professor (Accused of Sexual H_arassment by Female Student) v2" == component:
- return "Kobe_s_Diary_of_Saving_Mother_Father_Fiancee_and_In_laws_OTE_Model_Trading_Mode_M_I_T_White_Professor_Accused_of_Sexual_Harassment_by_Female_Student_v2" # Simplified for filename
- if "动态视图对齐实现文档" == component:
- return "Dynamic_View_Alignment_Implementation_Document"
- if "Telegram_Bot_按钮和键盘实现模板" == component:
- return "Telegram_Bot_Button_and_Keyboard_Implementation_Template"
- if "README" == component:
- return "README" # Keep README as is
-
- # Default: simply replace spaces with underscores and remove problematic characters for filenames
- # For demonstration, a placeholder translation for unseen Chinese
- return re.sub(r"[^a-zA-Z0-9]+", "_", component).strip("_")
-
-
-def get_translated_path(chinese_path_str): # Accept string
- parts = Path(chinese_path_str).parts # Use pathlib to split path
- translated_parts = []
-
- # Handle the 'i18n/zh' to 'i18n/en' conversion at the root
- if parts[0] == "i18n" and parts[1] == "zh":
- translated_parts.append("i18n")
- translated_parts.append("en")
- remaining_parts = parts[2:]
- else:
- remaining_parts = parts
-
- for i, part in enumerate(remaining_parts):
- base, ext = os.path.splitext(part)
- translated_base = translate_path_component(base)
- translated_parts.append(translated_base + ext)
-
- return Path(*translated_parts) # Reconstruct path using pathlib
-
-# Load chinese_files from JSON
-chinese_files_list_path = script_dir / 'chinese_files_list.json'
-with open(chinese_files_list_path, 'r', encoding='utf-8') as f:
- chinese_files_str_list = json.load(f)
-
-files_to_translate_content = []
-
-for chinese_file_path_str in chinese_files_str_list:
- english_file_path = get_translated_path(chinese_file_path_str) # Get translated Path object
-
- # Read the content of the English placeholder file
- try:
- with english_file_path.open('r', encoding='utf-8') as f:
- content = f.read()
-
- if content.startswith("TRANSLATED CONTENT:\n"):
- chinese_content = content.replace("TRANSLATED CONTENT:\n", "")
- files_to_translate_content.append({
- "chinese_content": chinese_content,
- "english_target_path": str(english_file_path) # Store as string for easy display
- })
-
- except FileNotFoundError:
- # This can happen if the previous script run failed for this file
- print(f"Warning: English placeholder file not found for {english_file_path}. Skipping content extraction for this file.")
- continue
- except Exception as e:
- print(f"Error reading {english_file_path} for content extraction: {e}. Skipping.")
- continue
-
-# Output the list of files to translate content for
-print("--- Files for Content Translation ---")
-for item in files_to_translate_content:
- print(f"Target Path: {item['english_target_path']}")
- print(f"Chinese Content:\n```markdown\n{item['chinese_content'].strip()}\n```\n{'='*50}\n")
-
-print(f"Total files requiring content translation: {len(files_to_translate_content)}")
\ No newline at end of file
diff --git a/libs/external/my-nvim/README.md b/libs/external/my-nvim/README.md
deleted file mode 100644
index f32b8c6..0000000
--- a/libs/external/my-nvim/README.md
+++ /dev/null
@@ -1,200 +0,0 @@
-# 🚀 Perfect Neovim Configuration with LazyVim
-
-## 系统配置文档
-
-### 📋 配置概述
-- **Neovim 版本**: v0.11.5 (最新版)
-- **配置框架**: LazyVim (标准原生方案)
-- **主题**: tokyonight (默认主题)
-- **状态**: 经过全面测试,无任何问题或报错
-
-### 📦 包含内容
-- ✅ 最新版 Neovim v0.11.5 AppImage 可执行文件
-- ✅ 标准 LazyVim 配置框架
-- ✅ 修复的 Neotree 配置(无重复问题)
-- ✅ 默认 tokyonight 主题
-- ✅ 自动侧边栏和顶部标签配置
-- ✅ 经过全面测试验证
-
-## 🎯 快速开始
-
-### 1. 克隆仓库
-```bash
-git clone https://github.com/tukuaiai/vim.git
-cd vim
-```
-
-### 2. 安装配置
-```bash
-# 复制配置文件
-cp -r nvim-config/* ~/.config/
-
-# 复制可执行文件
-cp nvim-config/nvim ~/.local/bin/
-chmod +x ~/.local/bin/nvim
-
-# 确保路径在 PATH 中
-echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
-source ~/.bashrc
-```
-
-### 3. 启动使用
-```bash
-# 直接启动
-~/.local/bin/nvim
-
-# 或使用别名(推荐)
-alias n='~/.local/bin/nvim'
-n
-```
-
-## 🎨 主题配置
-
-### 当前主题:tokyonight(默认)
-- 深色护眼主题
-- 现代化配色方案
-- 高对比度,适合长时间使用
-
-### 切换主题(可选)
-```vim
-:Telescope colorscheme " 使用 Telescope 选择主题
-```
-
-## ⚙️ 核心功能
-
-### 1. 文件浏览器(Neotree)
-- **快捷键**:`e`(空格+e)
-- **功能**:侧边栏文件浏览器
-- **特点**:无重复窗口问题(已修复)
-
-### 2. 顶部标签页(Bufferline)
-- **功能**:显示打开的缓冲区
-- **特点**:始终显示,美观实用
-
-### 3. 模糊查找(Telescope)
-- **快捷键**:`f`(空格+f)
-- **功能**:快速查找文件、符号等
-
-### 4. Git 集成
-- **快捷键**:`g`(空格+g)
-- **功能**:Git 状态、提交、差异查看
-
-## ⌨️ 快捷键速查
-
-| 快捷键 | 功能 |
-|--------|------|
-| `e` | 打开文件浏览器 |
-| `f` | 模糊查找 |
-| `g` | Git 相关 |
-| `b` | 缓冲区管理 |
-| `w` | 保存文件 |
-| `q` | 退出 |
-| `/` | 搜索当前文件 |
-| `?` | 查看所有快捷键 |
-
-## 🔧 高级配置
-
-### 自动命令(autocmds)
-位于 `~/.config/nvim/lua/config/autocmds.lua`:
-```lua
--- 自动打开 Neotree(延迟 50ms 确保插件加载)
-vim.api.nvim_create_autocmd("VimEnter", {
- callback = function()
- vim.defer_fn(function()
- vim.cmd("Neotree show")
- end, 50)
- end,
-})
-```
-
-### 插件配置
-位于 `~/.config/nvim/lua/plugins/`:
-- `ui.lua` - UI 相关插件配置
-- `colorscheme.lua` - 主题配置
-- `example.lua` - 示例插件配置
-
-## 🧪 测试验证
-
-### 启动测试
-```bash
-# 基础启动测试
-~/.local/bin/nvim --headless -c "echo 'OK'" -c "qa"
-
-# 配置加载测试
-~/.local/bin/nvim --headless -c "lua print('Config OK')" -c "qa"
-```
-
-### 健康检查
-```vim
-:checkhealth " 在 nvim 中运行健康检查
-```
-
-## 📁 文件结构
-```
-nvim-config/
-├── init.lua # 入口文件
-├── lazy-lock.json # 插件锁文件
-├── lazyvim.json # LazyVim 配置
-├── nvim # Neovim v0.11.5 AppImage
-├── lua/
-│ ├── config/
-│ │ ├── autocmds.lua # 自动命令
-│ │ ├── keymaps.lua # 键位映射
-│ │ ├── lazy.lua # Lazy.nvim 配置
-│ │ └── options.lua # 选项设置
-│ └── plugins/
-│ ├── colorscheme.lua # 主题配置
-│ ├── ui.lua # UI 插件配置
-│ └── example.lua # 示例配置
-└── stylua.toml # 代码格式化配置
-```
-
-## 🚀 高级使用技巧
-
-### 1. 快速文件操作
-```vim
-" 在当前行下方新建文件
-:enew
-" 保存文件
-:w
-" 退出
-:qa
-```
-
-### 2. 窗口管理
-```vim
-" 水平分割
-:sp filename
-" 垂直分割
-:vs filename
-" 在分割间移动
-Ctrl+w h/j/k/l
-```
-
-### 3. 搜索和替换
-```vim
-" 当前文件搜索
-/
-" 全局搜索
-:Telescope live_grep
-" 替换
-:%s/old/new/g
-```
-
-## 📚 学习资源
-
-1. **内置教程**:`:Tutor`
-2. **帮助系统**:`:help 主题`
-3. **LazyVim 文档**:按 `?`
-4. **GitHub 仓库**:https://github.com/tukuaiai/vim
-
-## 🎉 结论
-
-这份配置提供了:
-- ✅ 最新稳定的 Neovim 版本
-- ✅ 标准的 LazyVim 配置框架
-- ✅ 修复的所有已知问题
-- ✅ 美观实用的界面设计
-- ✅ 经过全面测试验证
-
-**确定没有任何问题和报错** - 你可以放心使用这份完美配置!
\ No newline at end of file
diff --git a/libs/external/my-nvim/nvim-config/LICENSE b/libs/external/my-nvim/nvim-config/LICENSE
deleted file mode 100644
index 261eeb9..0000000
--- a/libs/external/my-nvim/nvim-config/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/libs/external/my-nvim/nvim-config/README.md b/libs/external/my-nvim/nvim-config/README.md
deleted file mode 100644
index f32b8c6..0000000
--- a/libs/external/my-nvim/nvim-config/README.md
+++ /dev/null
@@ -1,200 +0,0 @@
-# 🚀 Perfect Neovim Configuration with LazyVim
-
-## 系统配置文档
-
-### 📋 配置概述
-- **Neovim 版本**: v0.11.5 (最新版)
-- **配置框架**: LazyVim (标准原生方案)
-- **主题**: tokyonight (默认主题)
-- **状态**: 经过全面测试,无任何问题或报错
-
-### 📦 包含内容
-- ✅ 最新版 Neovim v0.11.5 AppImage 可执行文件
-- ✅ 标准 LazyVim 配置框架
-- ✅ 修复的 Neotree 配置(无重复问题)
-- ✅ 默认 tokyonight 主题
-- ✅ 自动侧边栏和顶部标签配置
-- ✅ 经过全面测试验证
-
-## 🎯 快速开始
-
-### 1. 克隆仓库
-```bash
-git clone https://github.com/tukuaiai/vim.git
-cd vim
-```
-
-### 2. 安装配置
-```bash
-# 复制配置文件
-cp -r nvim-config/* ~/.config/
-
-# 复制可执行文件
-cp nvim-config/nvim ~/.local/bin/
-chmod +x ~/.local/bin/nvim
-
-# 确保路径在 PATH 中
-echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
-source ~/.bashrc
-```
-
-### 3. 启动使用
-```bash
-# 直接启动
-~/.local/bin/nvim
-
-# 或使用别名(推荐)
-alias n='~/.local/bin/nvim'
-n
-```
-
-## 🎨 主题配置
-
-### 当前主题:tokyonight(默认)
-- 深色护眼主题
-- 现代化配色方案
-- 高对比度,适合长时间使用
-
-### 切换主题(可选)
-```vim
-:Telescope colorscheme " 使用 Telescope 选择主题
-```
-
-## ⚙️ 核心功能
-
-### 1. 文件浏览器(Neotree)
-- **快捷键**:`e`(空格+e)
-- **功能**:侧边栏文件浏览器
-- **特点**:无重复窗口问题(已修复)
-
-### 2. 顶部标签页(Bufferline)
-- **功能**:显示打开的缓冲区
-- **特点**:始终显示,美观实用
-
-### 3. 模糊查找(Telescope)
-- **快捷键**:`f`(空格+f)
-- **功能**:快速查找文件、符号等
-
-### 4. Git 集成
-- **快捷键**:`g`(空格+g)
-- **功能**:Git 状态、提交、差异查看
-
-## ⌨️ 快捷键速查
-
-| 快捷键 | 功能 |
-|--------|------|
-| `e` | 打开文件浏览器 |
-| `f` | 模糊查找 |
-| `g` | Git 相关 |
-| `b` | 缓冲区管理 |
-| `w` | 保存文件 |
-| `q` | 退出 |
-| `/` | 搜索当前文件 |
-| `?` | 查看所有快捷键 |
-
-## 🔧 高级配置
-
-### 自动命令(autocmds)
-位于 `~/.config/nvim/lua/config/autocmds.lua`:
-```lua
--- 自动打开 Neotree(延迟 50ms 确保插件加载)
-vim.api.nvim_create_autocmd("VimEnter", {
- callback = function()
- vim.defer_fn(function()
- vim.cmd("Neotree show")
- end, 50)
- end,
-})
-```
-
-### 插件配置
-位于 `~/.config/nvim/lua/plugins/`:
-- `ui.lua` - UI 相关插件配置
-- `colorscheme.lua` - 主题配置
-- `example.lua` - 示例插件配置
-
-## 🧪 测试验证
-
-### 启动测试
-```bash
-# 基础启动测试
-~/.local/bin/nvim --headless -c "echo 'OK'" -c "qa"
-
-# 配置加载测试
-~/.local/bin/nvim --headless -c "lua print('Config OK')" -c "qa"
-```
-
-### 健康检查
-```vim
-:checkhealth " 在 nvim 中运行健康检查
-```
-
-## 📁 文件结构
-```
-nvim-config/
-├── init.lua # 入口文件
-├── lazy-lock.json # 插件锁文件
-├── lazyvim.json # LazyVim 配置
-├── nvim # Neovim v0.11.5 AppImage
-├── lua/
-│ ├── config/
-│ │ ├── autocmds.lua # 自动命令
-│ │ ├── keymaps.lua # 键位映射
-│ │ ├── lazy.lua # Lazy.nvim 配置
-│ │ └── options.lua # 选项设置
-│ └── plugins/
-│ ├── colorscheme.lua # 主题配置
-│ ├── ui.lua # UI 插件配置
-│ └── example.lua # 示例配置
-└── stylua.toml # 代码格式化配置
-```
-
-## 🚀 高级使用技巧
-
-### 1. 快速文件操作
-```vim
-" 在当前行下方新建文件
-:enew
-" 保存文件
-:w
-" 退出
-:qa
-```
-
-### 2. 窗口管理
-```vim
-" 水平分割
-:sp filename
-" 垂直分割
-:vs filename
-" 在分割间移动
-Ctrl+w h/j/k/l
-```
-
-### 3. 搜索和替换
-```vim
-" 当前文件搜索
-/
-" 全局搜索
-:Telescope live_grep
-" 替换
-:%s/old/new/g
-```
-
-## 📚 学习资源
-
-1. **内置教程**:`:Tutor`
-2. **帮助系统**:`:help 主题`
-3. **LazyVim 文档**:按 `?`
-4. **GitHub 仓库**:https://github.com/tukuaiai/vim
-
-## 🎉 结论
-
-这份配置提供了:
-- ✅ 最新稳定的 Neovim 版本
-- ✅ 标准的 LazyVim 配置框架
-- ✅ 修复的所有已知问题
-- ✅ 美观实用的界面设计
-- ✅ 经过全面测试验证
-
-**确定没有任何问题和报错** - 你可以放心使用这份完美配置!
\ No newline at end of file
diff --git a/libs/external/my-nvim/nvim-config/init.lua b/libs/external/my-nvim/nvim-config/init.lua
deleted file mode 100644
index 2514f9e..0000000
--- a/libs/external/my-nvim/nvim-config/init.lua
+++ /dev/null
@@ -1,2 +0,0 @@
--- bootstrap lazy.nvim, LazyVim and your plugins
-require("config.lazy")
diff --git a/libs/external/my-nvim/nvim-config/lazy-lock.json b/libs/external/my-nvim/nvim-config/lazy-lock.json
deleted file mode 100644
index 26db37e..0000000
--- a/libs/external/my-nvim/nvim-config/lazy-lock.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "LazyVim": { "branch": "main", "commit": "c64a61734fc9d45470a72603395c02137802bc6f" },
- "blink.cmp": { "branch": "main", "commit": "b19413d214068f316c78978b08264ed1c41830ec" },
- "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
- "catppuccin": { "branch": "main", "commit": "193e123cdbc4dd3e86db883d55349e9587f0ded6" },
- "conform.nvim": { "branch": "master", "commit": "ffe26e8df8115c9665d24231f8a49fadb2d611ce" },
- "dracula": { "branch": "main", "commit": "ae752c13e95fb7c5f58da4b5123cb804ea7568ee" },
- "flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
- "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
- "gitsigns.nvim": { "branch": "main", "commit": "5813e4878748805f1518cee7abb50fd7205a3a48" },
- "grug-far.nvim": { "branch": "main", "commit": "b58b2d65863f4ebad88b10a1ddd519e5380466e0" },
- "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" },
- "lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" },
- "lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
- "mason-lspconfig.nvim": { "branch": "main", "commit": "c55bd8a8fb191e24176c206a7af1dd51ce7276a5" },
- "mason.nvim": { "branch": "main", "commit": "57e5a8addb8c71fb063ee4acda466c7cf6ad2800" },
- "mini.ai": { "branch": "main", "commit": "bfb26d9072670c3aaefab0f53024b2f3729c8083" },
- "mini.icons": { "branch": "main", "commit": "ff2e4f1d29f659cc2bad0f9256f2f6195c6b2428" },
- "mini.pairs": { "branch": "main", "commit": "472ec50092a3314ec285d2db2baa48602d71fe93" },
- "neo-tree.nvim": { "branch": "main", "commit": "7a6f14c6edde0921333005cd738309b70138964b" },
- "noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
- "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
- "nvim-lint": { "branch": "master", "commit": "897f7771c1ca4b11659dfe372d9376acd9fe3097" },
- "nvim-lspconfig": { "branch": "master", "commit": "7af6f57d517d8cc68f249e0d27364c188a097812" },
- "nvim-treesitter": { "branch": "main", "commit": "2979e048b356cfd32dc419d5803dc356b9832adf" },
- "nvim-treesitter-textobjects": { "branch": "main", "commit": "76deedf0f1cec4496ef8d49b6d1f020f6d0c6ec9" },
- "nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" },
- "persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" },
- "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
- "snacks.nvim": { "branch": "main", "commit": "fe7cfe9800a182274d0f868a74b7263b8c0c020b" },
- "todo-comments.nvim": { "branch": "main", "commit": "31e3c38ce9b29781e4422fc0322eb0a21f4e8668" },
- "tokyonight.nvim": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" },
- "trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
- "ts-comments.nvim": { "branch": "main", "commit": "123a9fb12e7229342f807ec9e6de478b1102b041" },
- "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" }
-}
diff --git a/libs/external/my-nvim/nvim-config/lazyvim.json b/libs/external/my-nvim/nvim-config/lazyvim.json
deleted file mode 100644
index d8bcaf6..0000000
--- a/libs/external/my-nvim/nvim-config/lazyvim.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "extras": [
-
- ],
- "install_version": 8,
- "news": {
- "NEWS.md": "11866"
- },
- "version": 8
-}
\ No newline at end of file
diff --git a/libs/external/my-nvim/nvim-config/lua/config/autocmds.lua b/libs/external/my-nvim/nvim-config/lua/config/autocmds.lua
deleted file mode 100644
index eaec5ec..0000000
--- a/libs/external/my-nvim/nvim-config/lua/config/autocmds.lua
+++ /dev/null
@@ -1,25 +0,0 @@
--- Autocmds are automatically loaded on the VeryLazy event
--- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
---
--- Add any additional autocmds here
--- with `vim.api.nvim_create_autocmd`
---
--- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults)
--- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell")
-
--- 自动打开Neotree(使用标准LazyVim方式)
-vim.api.nvim_create_autocmd("VimEnter", {
- callback = function()
- -- 延迟执行,确保插件加载完成
- vim.defer_fn(function()
- vim.cmd("Neotree show")
- end, 50)
- end,
-})
-
--- 确保bufferline始终显示
-vim.api.nvim_create_autocmd("VimEnter", {
- callback = function()
- vim.o.showtabline = 2
- end,
-})
\ No newline at end of file
diff --git a/libs/external/my-nvim/nvim-config/lua/config/keymaps.lua b/libs/external/my-nvim/nvim-config/lua/config/keymaps.lua
deleted file mode 100644
index 2c134f7..0000000
--- a/libs/external/my-nvim/nvim-config/lua/config/keymaps.lua
+++ /dev/null
@@ -1,3 +0,0 @@
--- Keymaps are automatically loaded on the VeryLazy event
--- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
--- Add any additional keymaps here
diff --git a/libs/external/my-nvim/nvim-config/lua/config/lazy.lua b/libs/external/my-nvim/nvim-config/lua/config/lazy.lua
deleted file mode 100644
index cdec7cb..0000000
--- a/libs/external/my-nvim/nvim-config/lua/config/lazy.lua
+++ /dev/null
@@ -1,55 +0,0 @@
-local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
-if not (vim.uv or vim.loop).fs_stat(lazypath) then
- local lazyrepo = "https://github.com/folke/lazy.nvim.git"
- local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
- if vim.v.shell_error ~= 0 then
- vim.api.nvim_echo({
- { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
- { out, "WarningMsg" },
- { "\nPress any key to exit..." },
- }, true, {})
- vim.fn.getchar()
- os.exit(1)
- end
-end
-vim.opt.rtp:prepend(lazypath)
-
-require("lazy").setup({
- spec = {
- -- add LazyVim and import its plugins
- { "LazyVim/LazyVim", import = "lazyvim.plugins" },
- -- import/override with your plugins
- { import = "plugins" },
- },
- defaults = {
- -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
- -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
- lazy = false,
- -- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
- -- have outdated releases, which may break your Neovim install.
- version = false, -- always use the latest git commit
- -- version = "*", -- try installing the latest stable version for plugins that support semver
- },
- install = { colorscheme = { "tokyonight", "habamax" } },
- checker = {
- enabled = true, -- check for plugin updates periodically
- notify = false, -- notify on update
- }, -- automatically check for plugin updates
- performance = {
- rtp = {
- -- disable some rtp plugins
- disabled_plugins = {
- "gzip",
- -- "matchit",
- -- "matchparen",
- -- "netrwPlugin",
- "tarPlugin",
- "tohtml",
- "tutor",
- "zipPlugin",
- },
- },
- },
-})
--- 使用默认的tokyonight主题(LazyVim默认主题)
--- 不需要手动设置,LazyVim会自动加载
diff --git a/libs/external/my-nvim/nvim-config/lua/config/options.lua b/libs/external/my-nvim/nvim-config/lua/config/options.lua
deleted file mode 100644
index 3ea1454..0000000
--- a/libs/external/my-nvim/nvim-config/lua/config/options.lua
+++ /dev/null
@@ -1,3 +0,0 @@
--- Options are automatically loaded before lazy.nvim startup
--- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
--- Add any additional options here
diff --git a/libs/external/my-nvim/nvim-config/lua/plugins/colorscheme.lua b/libs/external/my-nvim/nvim-config/lua/plugins/colorscheme.lua
deleted file mode 100644
index 7b42a7c..0000000
--- a/libs/external/my-nvim/nvim-config/lua/plugins/colorscheme.lua
+++ /dev/null
@@ -1,13 +0,0 @@
--- 默认使用 LazyVim 自带的 tokyonight 主题
--- 如果需要其他主题,可以在这里添加
-
-return {
- -- 可以在这里添加其他主题插件
- -- 例如:
- -- {
- -- "folke/tokyonight.nvim",
- -- opts = {
- -- style = "moon", -- 可选: night, storm, moon, day
- -- },
- -- },
-}
\ No newline at end of file
diff --git a/libs/external/my-nvim/nvim-config/lua/plugins/dracula.lua b/libs/external/my-nvim/nvim-config/lua/plugins/dracula.lua
deleted file mode 100644
index d580db6..0000000
--- a/libs/external/my-nvim/nvim-config/lua/plugins/dracula.lua
+++ /dev/null
@@ -1,34 +0,0 @@
--- Dracula 主题插件配置
-
-return {
- {
- 'Mofiqul/dracula.nvim',
- name = 'dracula',
- lazy = false,
- priority = 1000,
- config = function()
- -- 获取主题配置
- local dracula_config = require('themes.dracula')
-
- -- 从环境变量或默认值获取样式
- local style = vim.env.NVIM_THEME_STYLE or 'dracula'
-
- -- 设置主题
- require('dracula').setup(dracula_config.config(style))
-
- -- 应用主题
- vim.cmd.colorscheme('dracula')
- end,
- },
-
- -- Lualine 主题集成
- {
- 'nvim-lualine/lualine.nvim',
- dependencies = { 'dracula' },
- opts = {
- options = {
- theme = 'dracula-nvim'
- }
- }
- }
-}
\ No newline at end of file
diff --git a/libs/external/my-nvim/nvim-config/lua/plugins/example.lua b/libs/external/my-nvim/nvim-config/lua/plugins/example.lua
deleted file mode 100644
index 17f53d6..0000000
--- a/libs/external/my-nvim/nvim-config/lua/plugins/example.lua
+++ /dev/null
@@ -1,197 +0,0 @@
--- since this is just an example spec, don't actually load anything here and return an empty spec
--- stylua: ignore
-if true then return {} end
-
--- every spec file under the "plugins" directory will be loaded automatically by lazy.nvim
---
--- In your plugin files, you can:
--- * add extra plugins
--- * disable/enabled LazyVim plugins
--- * override the configuration of LazyVim plugins
-return {
- -- add gruvbox
- { "ellisonleao/gruvbox.nvim" },
-
- -- Configure LazyVim to load gruvbox
- {
- "LazyVim/LazyVim",
- opts = {
- colorscheme = "gruvbox",
- },
- },
-
- -- change trouble config
- {
- "folke/trouble.nvim",
- -- opts will be merged with the parent spec
- opts = { use_diagnostic_signs = true },
- },
-
- -- disable trouble
- { "folke/trouble.nvim", enabled = false },
-
- -- override nvim-cmp and add cmp-emoji
- {
- "hrsh7th/nvim-cmp",
- dependencies = { "hrsh7th/cmp-emoji" },
- ---@param opts cmp.ConfigSchema
- opts = function(_, opts)
- table.insert(opts.sources, { name = "emoji" })
- end,
- },
-
- -- change some telescope options and a keymap to browse plugin files
- {
- "nvim-telescope/telescope.nvim",
- keys = {
- -- add a keymap to browse plugin files
- -- stylua: ignore
- {
- "fp",
- function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end,
- desc = "Find Plugin File",
- },
- },
- -- change some options
- opts = {
- defaults = {
- layout_strategy = "horizontal",
- layout_config = { prompt_position = "top" },
- sorting_strategy = "ascending",
- winblend = 0,
- },
- },
- },
-
- -- add pyright to lspconfig
- {
- "neovim/nvim-lspconfig",
- ---@class PluginLspOpts
- opts = {
- ---@type lspconfig.options
- servers = {
- -- pyright will be automatically installed with mason and loaded with lspconfig
- pyright = {},
- },
- },
- },
-
- -- add tsserver and setup with typescript.nvim instead of lspconfig
- {
- "neovim/nvim-lspconfig",
- dependencies = {
- "jose-elias-alvarez/typescript.nvim",
- init = function()
- require("lazyvim.util").lsp.on_attach(function(_, buffer)
- -- stylua: ignore
- vim.keymap.set( "n", "co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" })
- vim.keymap.set("n", "cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer })
- end)
- end,
- },
- ---@class PluginLspOpts
- opts = {
- ---@type lspconfig.options
- servers = {
- -- tsserver will be automatically installed with mason and loaded with lspconfig
- tsserver = {},
- },
- -- you can do any additional lsp server setup here
- -- return true if you don't want this server to be setup with lspconfig
- ---@type table
- setup = {
- -- example to setup with typescript.nvim
- tsserver = function(_, opts)
- require("typescript").setup({ server = opts })
- return true
- end,
- -- Specify * to use this function as a fallback for any server
- -- ["*"] = function(server, opts) end,
- },
- },
- },
-
- -- for typescript, LazyVim also includes extra specs to properly setup lspconfig,
- -- treesitter, mason and typescript.nvim. So instead of the above, you can use:
- { import = "lazyvim.plugins.extras.lang.typescript" },
-
- -- add more treesitter parsers
- {
- "nvim-treesitter/nvim-treesitter",
- opts = {
- ensure_installed = {
- "bash",
- "html",
- "javascript",
- "json",
- "lua",
- "markdown",
- "markdown_inline",
- "python",
- "query",
- "regex",
- "tsx",
- "typescript",
- "vim",
- "yaml",
- },
- },
- },
-
- -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above
- -- would overwrite `ensure_installed` with the new value.
- -- If you'd rather extend the default config, use the code below instead:
- {
- "nvim-treesitter/nvim-treesitter",
- opts = function(_, opts)
- -- add tsx and treesitter
- vim.list_extend(opts.ensure_installed, {
- "tsx",
- "typescript",
- })
- end,
- },
-
- -- the opts function can also be used to change the default opts:
- {
- "nvim-lualine/lualine.nvim",
- event = "VeryLazy",
- opts = function(_, opts)
- table.insert(opts.sections.lualine_x, {
- function()
- return "😄"
- end,
- })
- end,
- },
-
- -- or you can return new options to override all the defaults
- {
- "nvim-lualine/lualine.nvim",
- event = "VeryLazy",
- opts = function()
- return {
- --[[add your custom lualine config here]]
- }
- end,
- },
-
- -- use mini.starter instead of alpha
- { import = "lazyvim.plugins.extras.ui.mini-starter" },
-
- -- add jsonls and schemastore packages, and setup treesitter for json, json5 and jsonc
- { import = "lazyvim.plugins.extras.lang.json" },
-
- -- add any tools you want to have installed below
- {
- "williamboman/mason.nvim",
- opts = {
- ensure_installed = {
- "stylua",
- "shellcheck",
- "shfmt",
- "flake8",
- },
- },
- },
-}
diff --git a/libs/external/my-nvim/nvim-config/lua/plugins/ui.lua b/libs/external/my-nvim/nvim-config/lua/plugins/ui.lua
deleted file mode 100644
index 29d3432..0000000
--- a/libs/external/my-nvim/nvim-config/lua/plugins/ui.lua
+++ /dev/null
@@ -1,70 +0,0 @@
-return {
- {
- "nvim-neo-tree/neo-tree.nvim",
- opts = {
- filesystem = {
- filtered_items = {
- hide_dotfiles = false,
- hide_gitignored = false,
- },
- },
- window = {
- position = "left",
- width = 30,
- mapping_options = {
- noremap = true,
- nowait = true,
- },
- },
- },
- config = function(_, opts)
- require("neo-tree").setup(opts)
- -- Neotree 打开逻辑已移到 autocmds.lua,这里不再重复
- end,
- },
- {
- "akinsho/bufferline.nvim",
- event = "VeryLazy",
- opts = {
- options = {
- mode = "buffers", -- set to "tabs" to only show tabpages instead
- numbers = "ordinal",
- close_command = function(bufnr) vim.api.nvim_buf_delete(bufnr, { force = true }) end,
- right_mouse_command = function(bufnr) vim.api.nvim_buf_delete(bufnr, { force = true }) end,
- left_mouse_command = "buffer",
- middle_mouse_command = nil,
- indicator = {
- style = "icon",
- icon = "▎",
- },
- buffer_close_icon = "",
- modified_icon = "●",
- close_icon = "",
- left_trunc_marker = "",
- right_trunc_marker = "",
- max_name_length = 18,
- max_prefix_length = 15,
- tab_size = 18,
- truncate_names = true,
- color_icons = true,
- show_buffer_icons = true,
- show_buffer_close_icons = true,
- show_close_icon = true,
- show_tab_indicators = true,
- persist_buffer_sort = true,
- separator_style = "thin",
- enforce_regular_tabs = false,
- always_show_bufferline = true,
- hover = {
- enabled = true,
- delay = 200,
- reveal = {'close'}
- },
- sort_by = 'insert_after_current',
- },
- },
- config = function(_, opts)
- require("bufferline").setup(opts)
- end,
- },
-}
\ No newline at end of file
diff --git a/libs/external/my-nvim/nvim-config/lua/themes/dracula.lua b/libs/external/my-nvim/nvim-config/lua/themes/dracula.lua
deleted file mode 100644
index 3a53b6f..0000000
--- a/libs/external/my-nvim/nvim-config/lua/themes/dracula.lua
+++ /dev/null
@@ -1,60 +0,0 @@
--- Dracula 主题配置
--- 支持多种变体: dracula, dracula-soft, day
-
-local M = {}
-
-M.config = function(style)
- local opts = {
- -- 主题变体: dracula, dracula-soft, day
- theme = style or 'dracula',
-
- -- 透明背景
- transparent_bg = false,
-
- -- 斜体注释
- italic_comment = true,
-
- -- 显示文件末尾的 ~ 符号
- show_end_of_buffer = true,
-
- -- Lualine 背景色
- lualine_bg_color = '#44475a',
- }
-
- -- 高级自定义选项(可选)
- if style == 'soft' then
- opts.colors = {
- -- 更柔和的背景色
- bg = '#21222c',
- fg = '#f8f8f2',
- }
- elseif style == 'day' then
- opts.colors = {
- -- 浅色主题配色
- bg = '#f8f8f2',
- fg = '#282a36',
- }
- end
-
- return opts
-end
-
--- 主题信息
-M.info = {
- name = 'dracula',
- plugin = 'Mofiqul/dracula.nvim',
- variants = {
- { name = 'dracula', desc = '经典深色主题' },
- { name = 'dracula-soft', desc = '柔和深色主题' },
- { name = 'day', desc = '浅色主题' },
- },
- features = {
- '支持透明背景',
- '斜体注释',
- '完整的 LSP 和 Treesitter 支持',
- 'Lualine 主题集成',
- '多插件支持(Telescope, NvimTree 等)',
- }
-}
-
-return M
\ No newline at end of file
diff --git a/libs/external/my-nvim/nvim-config/nvim b/libs/external/my-nvim/nvim-config/nvim
deleted file mode 100644
index a13a73e134c2d7681f6c526b20e32b4ee7e195c3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 11020792
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