zhensolid пре 1 месец
комит
2986cde062
100 измењених фајлова са 9940 додато и 0 уклоњено
  1. 4 0
      .gitignore
  2. 1 0
      .obsidian/app.json
  3. 1 0
      .obsidian/appearance.json
  4. 10 0
      .obsidian/community-plugins.json
  5. 33 0
      .obsidian/core-plugins.json
  6. 378 0
      .obsidian/plugins/editing-toolbar/data.json
  7. 0 0
      .obsidian/plugins/editing-toolbar/main.js
  8. 10 0
      .obsidian/plugins/editing-toolbar/manifest.json
  9. 2711 0
      .obsidian/plugins/editing-toolbar/styles.css
  10. 32 0
      .obsidian/plugins/obsidian-custom-attachment-location/data.json
  11. 92 0
      .obsidian/plugins/obsidian-custom-attachment-location/main.js
  12. 11 0
      .obsidian/plugins/obsidian-custom-attachment-location/manifest.json
  13. 1 0
      .obsidian/plugins/obsidian-custom-attachment-location/styles.css
  14. 1083 0
      .obsidian/plugins/obsidian-excalidraw-plugin/data.json
  15. 0 0
      .obsidian/plugins/obsidian-excalidraw-plugin/main.js
  16. 12 0
      .obsidian/plugins/obsidian-excalidraw-plugin/manifest.json
  17. 0 0
      .obsidian/plugins/obsidian-excalidraw-plugin/styles.css
  18. 5 0
      .obsidian/plugins/obsidian-git/main.js
  19. 10 0
      .obsidian/plugins/obsidian-git/manifest.json
  20. 705 0
      .obsidian/plugins/obsidian-git/styles.css
  21. 175 0
      .obsidian/plugins/obsidian-livesync/data.json
  22. 5 0
      .obsidian/plugins/obsidian-livesync/main.js
  23. 10 0
      .obsidian/plugins/obsidian-livesync/manifest.json
  24. 573 0
      .obsidian/plugins/obsidian-livesync/styles.css
  25. 43 0
      .obsidian/plugins/omnisearch/data.json
  26. 5 0
      .obsidian/plugins/omnisearch/main.js
  27. 14 0
      .obsidian/plugins/omnisearch/manifest.json
  28. 150 0
      .obsidian/plugins/omnisearch/styles.css
  29. 117 0
      .obsidian/plugins/quickadd/data.json
  30. 5 0
      .obsidian/plugins/quickadd/main.js
  31. 12 0
      .obsidian/plugins/quickadd/manifest.json
  32. 0 0
      .obsidian/plugins/quickadd/styles.css
  33. 6 0
      .obsidian/plugins/table-editor-obsidian/data.json
  34. 5 0
      .obsidian/plugins/table-editor-obsidian/main.js
  35. 15 0
      .obsidian/plugins/table-editor-obsidian/manifest.json
  36. 78 0
      .obsidian/plugins/table-editor-obsidian/styles.css
  37. 4 0
      2026-05-13.md
  38. 18 0
      AI与模型/AI技术支持.md
  39. 20 0
      AI与模型/AI绘画/Laman-clear/CUDA详细安装.md
  40. 4 0
      AI与模型/AI绘画/Laman-clear/Laman 启动指令.md
  41. 21 0
      AI与模型/AI绘画/Laman-clear/Laman-clear安装教程.md
  42. 28 0
      AI与模型/AI绘画/Stable Diffusion WebUl/C站使用教程.md
  43. 2 0
      AI与模型/AI绘画/Stable Diffusion WebUl/Stable Diffusion远程控制.md
  44. 16 0
      AI与模型/AI绘画/Stable Diffusion WebUl/【模型】推荐.md
  45. 2 0
      AI与模型/AI绘画/Stable Diffusion WebUl/安装&用法.md
  46. 7 0
      AI与模型/AI绘画/Stable Diffusion WebUl/插件合计.md
  47. 2 0
      AI与模型/AI绘画/Stable Diffusion WebUl/炼丹.md
  48. 8 0
      AI与模型/API密钥/DeepSeek-Api.md
  49. 13 0
      AI与模型/API密钥/MiniMax-Api.md
  50. 26 0
      AI与模型/API密钥/百度API.md
  51. 2 0
      AI与模型/API密钥/腾讯云ASR-Api.md
  52. 839 0
      AI与模型/Claude_Obsidian.md
  53. 108 0
      AI与模型/DeerFlow.md
  54. 28 0
      AI与模型/Dify.md
  55. 39 0
      AI与模型/Dify技巧.md
  56. 257 0
      AI与模型/Hermes Agent.md
  57. 20 0
      AI与模型/MCP.md
  58. 74 0
      AI与模型/Ollama.md
  59. 16 0
      AI与模型/Open-webui.md
  60. 25 0
      AI与模型/Ragflow.md
  61. BIN
      AI与模型/attachments/image 1.png
  62. BIN
      AI与模型/attachments/image 2.png
  63. BIN
      AI与模型/attachments/image.png
  64. 21 0
      AI与模型/微信MCP.md
  65. 21 0
      AI与模型/模型配置/Grok-beta.md
  66. 39 0
      AI与模型/模型配置/Llama.cpp本地模型运行.md
  67. 9 0
      AI与模型/模型配置/模型教程.md
  68. 309 0
      Clippings/Windows 本地 AI 又升级了!llama.cpp 官方支持 CUDA 13 Vulkan HIP SYCL,一键跑 GGUF 无审查模型!.md
  69. 292 0
      Github/MinerU.md
  70. 11 0
      Github私人令牌.md
  71. 288 0
      Obsidian 备份方案与避坑指南.md
  72. 23 0
      Obsidian-COUCHDB.md
  73. 8 0
      OpenClaw/OpenClaw.md
  74. 17 0
      OpenClaw/Openclaw For Windows.md
  75. 136 0
      OpenClaw/Openclaw Skill.md
  76. 243 0
      OpenClaw/Openclaw 手册.md
  77. 35 0
      OpenClaw/Openclaw 技巧.md
  78. 53 0
      OpenClaw/attachments/OpenClaw/Openclaw 手册/IMG-20260516155631628.json
  79. 223 0
      OpenClaw/attachments/OpenClaw/Openclaw 手册/IMG-20260516155631634.json
  80. 11 0
      Oracle/Oracle虚拟云网络配置.md
  81. 40 0
      Oracle/Oracle虚拟服务器信息.md
  82. 27 0
      Oracle/UTOOL_图床【七牛云】.md
  83. BIN
      Oracle/attachments/Oracle/UTOOL_图床【七牛云】/IMG-20260516155631661.png
  84. BIN
      Oracle/attachments/Oracle/UTOOL_图床【七牛云】/IMG-20260516155631731.png
  85. BIN
      Oracle/attachments/Oracle/UTOOL_图床【七牛云】/IMG-20260516155631756.png
  86. BIN
      Oracle/attachments/Oracle/UTOOL_图床【七牛云】/IMG-20260516155631772.png
  87. BIN
      Oracle/attachments/Oracle/UTOOL_图床【七牛云】/IMG-20260516155631845.png
  88. BIN
      Oracle/attachments/Oracle/UTOOL_图床【七牛云】/IMG-20260516155631872.png
  89. 24 0
      Oracle/修改Hostname.md
  90. 53 0
      Oracle/块存储卷.md
  91. 86 0
      Oracle/订阅地址自建.md
  92. 1 0
      QuantumultX/圈X专用/TIKTOK解锁规则.md
  93. BIN
      QuantumultX/圈X专用/attachments/QuantumultX/圈X专用/奥利给直播/IMG-20260516155631925.png
  94. 8 0
      QuantumultX/圈X专用/blackmatrix7大佬新项目.md
  95. 16 0
      QuantumultX/圈X专用/分流.md
  96. 3 0
      QuantumultX/圈X专用/分流规则学习资料.md
  97. 1 0
      QuantumultX/圈X专用/圈X 不完成攻略.md
  98. 4 0
      QuantumultX/圈X专用/大飞懒人设置去广告这里404.md
  99. 21 0
      QuantumultX/圈X专用/奥利给直播.md
  100. 26 0
      QuantumultX/圈X专用/重要cron表达式自学笔记.md

+ 4 - 0
.gitignore

@@ -0,0 +1,4 @@
+.DS_Store
+.obsidian/workspace.json
+.obsidian/workspace-mobile.json
+.trash/

+ 1 - 0
.obsidian/app.json

@@ -0,0 +1 @@
+{}

+ 1 - 0
.obsidian/appearance.json

@@ -0,0 +1 @@
+{}

+ 10 - 0
.obsidian/community-plugins.json

@@ -0,0 +1,10 @@
+[
+  "obsidian-livesync",
+  "obsidian-excalidraw-plugin",
+  "obsidian-custom-attachment-location",
+  "editing-toolbar",
+  "omnisearch",
+  "table-editor-obsidian",
+  "quickadd",
+  "obsidian-git"
+]

+ 33 - 0
.obsidian/core-plugins.json

@@ -0,0 +1,33 @@
+{
+  "file-explorer": true,
+  "global-search": true,
+  "switcher": true,
+  "graph": true,
+  "backlink": true,
+  "canvas": true,
+  "outgoing-link": true,
+  "tag-pane": true,
+  "footnotes": false,
+  "properties": true,
+  "page-preview": true,
+  "daily-notes": true,
+  "templates": true,
+  "note-composer": true,
+  "command-palette": true,
+  "slash-command": false,
+  "editor-status": true,
+  "bookmarks": true,
+  "markdown-importer": false,
+  "zk-prefixer": false,
+  "random-note": false,
+  "outline": true,
+  "word-count": true,
+  "slides": false,
+  "audio-recorder": false,
+  "workspaces": false,
+  "file-recovery": true,
+  "publish": false,
+  "sync": true,
+  "bases": true,
+  "webviewer": false
+}

Разлика између датотеке није приказан због своје велике величине
+ 378 - 0
.obsidian/plugins/editing-toolbar/data.json


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
.obsidian/plugins/editing-toolbar/main.js


+ 10 - 0
.obsidian/plugins/editing-toolbar/manifest.json

@@ -0,0 +1,10 @@
+{
+  "id": "editing-toolbar",
+  "name": "Editing Toolbar",
+  "version": "4.0.8",
+  "minAppVersion": "0.14.0",
+  "description": "The Obsidian Editing Toolbar is modified from cmenu, which provides more powerful customization settings and has many built-in editing commands to be a MS Word-like toolbar editing experience.",
+  "author": "Cuman",
+  "authorUrl": "https://github.com/cumany/obsidian-editing-toolbar",
+  "isDesktopOnly": false
+}

+ 2711 - 0
.obsidian/plugins/editing-toolbar/styles.css

@@ -0,0 +1,2711 @@
+:root {
+  --toolbar-horizontal-offset: 0px;
+  --toolbar-vertical-offset: 0px;
+  --editing-toolbar-background-color: rgba(var(--background-secondary-rgb), 0.7);
+  --editing-toolbar-icon-color: var(--text-normal);
+  --toolbar-icon-size: 18px;
+}
+
+
+#editingToolbarModalBar {
+  width: auto;
+  height: auto;
+  /* padding: 3px; */
+  display: grid;
+  user-select: none;
+  border-radius: var(--radius-m);
+  position: absolute;
+  transition: 100ms cubic-bezier(0.92, -0.53, 0.65, 1.21);
+  -webkit-transition: 100ms cubic-bezier(0.92, -0.53, 0.65, 1.21);
+  min-width: fit-content;
+  justify-content: space-around;
+  z-index: var(--layer-modal);
+  transform: translate(var(--toolbar-horizontal-offset), var(--toolbar-vertical-offset));
+}
+#editingToolbarModalBar[data-toolbar-style="following"] {
+ transition: none !important;
+  -webkit-transition: none !important;
+}
+
+
+#editingToolbarModalBar.editingToolbarCustomAesthetic,
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar).editingToolbarCustomAesthetic button[class^=editingToolbarCommandsubItem]>.subitem,
+#editingToolbarPopoverBar.editingToolbarCustomAesthetic {
+  background-color: var(--editing-toolbar-background-color);
+  gap: calc(var(--toolbar-icon-size) / 15) !important;
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar).editingToolbarCustomAesthetic button[class^=editingToolbarCommandsubItem]>.subitem::before {
+ 
+  content: '';
+  position: absolute;
+  inset: 0;
+  z-index: -1;
+  
+  backdrop-filter: blur(12px);
+  -webkit-backdrop-filter: blur(12px); /* Safari 兼容 */
+  
+  border-radius: inherit; /* 继承父元素圆角 */
+}
+#editingToolbarModalBar.editingToolbarCustomAesthetic
+{
+  padding:calc(var(--toolbar-icon-size) / 4);
+}
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar).editingToolbarCustomAesthetic :is(.editingToolbarCommandItem, button[class^=editingToolbarCommandsubItem]):not(.editingToolbar-Divider-Line) {
+ 
+height: var(--toolbar-icon-size) + 8px;
+}
+
+/* 应用到工具栏图标 */
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar).editingToolbarCustomAesthetic .editingToolbarCommandItem svg,
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar).editingToolbarCustomAesthetic button[class^=editingToolbarCommandsubItem] svg,
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar).editingToolbarCustomAesthetic button[class^=editingToolbarCommandsubItem]>.subitem svg
+ {
+  color: var(--editing-toolbar-icon-color);
+  width: var(--toolbar-icon-size);
+  height: var(--toolbar-icon-size);
+  max-width: var(--toolbar-icon-size);
+  max-height: var(--toolbar-icon-size);
+}
+
+#editingToolbarModalBar.fixed{
+    display: grid;
+    grid-template-columns: repeat(12, calc(var(--toolbar-icon-size) + 10px));
+} 
+ 
+ 
+#editingToolbarModalBar.editingToolbarFlex {
+  display: flex;
+  transform:none;
+}
+
+#editingToolbarModalBar.editingToolbarFlex :is(.editingToolbarCommandItem, button[class^=editingToolbarCommandsubItem]) {
+  min-width: 20px;
+}
+
+#editingToolbarModalBar .editingToolbarCommandItem {
+  margin: 2px;
+  border: none;
+  display: flex;
+  cursor: default;
+  padding: 5px 6px;
+  box-shadow: none;
+  margin-left: 3px;
+  margin-right: 3px;
+  position: relative;
+  border-radius: var(--radius-s);
+  font-size: initial !important;
+  background-color: var(--background-primary-alt);
+  height: auto;
+}
+.editing-toolbar-content .editingToolbarCommandItem.editingToolbarCommandItem
+{
+flex-wrap: wrap;
+}
+.editing-toolbar-content .setting-item
+{
+  padding-left:1em;
+  padding-right:1em;
+}
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button[class^=editingToolbarCommandsubItem]>.subitem button:hover,
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button[class^=editingToolbarCommand]:hover,
+#editingToolbarSecond:hover {
+  background-color: var(--background-modifier-hover) !important;
+}
+
+/* 下拉菜单按钮样式 */
+
+
+/* 设置界面中的菜单类型选择器样式 */
+.editingToolbarMenuTypeDropdown {
+  min-width: 120px;
+  margin-left: 8px;
+  padding: 4px 8px;
+  border-radius: var(--radius-s);
+  background-color: var(--background-primary-alt);
+  border: 1px solid var(--background-modifier-border);
+  color: var(--text-normal);
+  cursor: pointer;
+}
+
+.editingToolbarMenuTypeDropdown:hover {
+  background-color: var(--background-modifier-hover);
+}
+
+.editingToolbarMenuTypeDropdown:focus {
+  border-color: var(--interactive-accent);
+  outline: none;
+}
+
+/* #editingToolbarModalBar button.editingToolbarCommandItem svg {
+  width: 1.3em;
+  height: 1.3em;
+} */
+
+/*----------------------------------------------------------------
+editingToolbar SETTINGS BUTTONS
+----------------------------------------------------------------*/
+
+ 
+
+ 
+
+button.editingToolbarSettingsButton {
+  padding: 4px 14px;
+  border-radius: var(--radius-m);
+}
+
+
+
+/*----------------------------------------------------------------
+editingToolbar SETTING ITEMS
+----------------------------------------------------------------*/
+.setting-item.editingToolbarCommandItem:first-child {
+  padding-top: 12px;
+}
+
+.editingToolbarCommandItem {
+  cursor: grab;
+  padding: 10px 0 10px 0;
+}
+
+.editingToolbarSettingsTabsContainer .sortable-fallback {
+  cursor: grabbing;
+  box-shadow: 0px 3px 32px rgb(31 38 135 / 15%);
+}
+
+.editingToolbarSettingsTabsContainer .sortable-grab {
+  cursor: grabbing !important;
+}
+
+.editingToolbarSettingsTabsContainer .sortable-ghost {
+  opacity: 0.4;
+  cursor: grabbing;
+}
+
+.editingToolbarSettingsTabsContainer .sortable-chosen {
+  cursor: grabbing;
+  padding: 10px 0 10px 10px;
+  background-color: var(--color-base-10, --background-primary);
+}
+
+.editingToolbarSettingsTabsContainer .sortable-drag {
+  cursor: grabbing;
+  box-shadow: 0px 3px 32px rgb(31 38 135 / 15%);
+}
+
+.editingToolbarSettingsTabsContainer {
+  border-top: 1px solid var(--background-modifier-border);
+  border-bottom: 1px solid var(--background-modifier-border);
+}
+
+/*----------------------------------------------------------------
+editingToolbar CLASS CHANGES
+----------------------------------------------------------------*/
+
+#editingToolbarModalBar.editingToolbarDefaultAesthetic {
+  border: 1px solid var(--background-modifier-border);
+}
+
+#editingToolbarModalBar.editingToolbarDefaultAesthetic:not(.top) :is(.editingToolbarCommandItem, button[class^=editingToolbarCommandsubItem]) {
+  min-height: 28px;
+}
+
+#editingToolbarModalBar.editingToolbarDefaultAesthetic:not(.top) button[class^=editingToolbarCommandsubItem] {
+  margin: auto;
+  padding: 6px;
+  box-shadow: none;
+  border: none;
+  background-color: transparent;
+
+  place-items: center;
+
+}
+
+.editingToolbarDefaultAesthetic {
+  background-color: var(--color-base-10, --background-primary);
+}
+
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar).editingToolbarGlassAesthetic {
+  backdrop-filter: var(--raised-blur, blur(6px));
+  -webkit-backdrop-filter: var(--raised-blur, blur(6px));
+  box-shadow: var(--raised-shadow, none);
+  background-clip: padding-box;
+  border: var(--raised-mask-border-width, 1px) solid transparent;
+  background-color: var(--raised-background, color-mix(in srgb, var(--background-secondary) 60%, transparent));
+}
+
+.is-phone:not(.is-floating-nav) :is(#editingToolbarModalBar, #editingToolbarPopoverBar).editingToolbarGlassAesthetic {
+  --raised-background: transparent;
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar).editingToolbarGlassAesthetic :is(.editingToolbarCommandItem, button[class^=editingToolbarCommandsubItem]) {
+  background-color: transparent;
+  box-shadow: none;
+}
+
+#editingToolbarModalBar.editingToolbarGlassAesthetic:not(.top) button[class^=editingToolbarCommandsubItem] {
+  margin: auto;
+  padding: 4px 4px;
+  box-shadow: none;
+  border: none;
+  display: flex;
+  border-radius: var(--radius-s);
+  font-size: 10px;
+  margin-right: 0px;
+  position: relative;
+  background-color: transparent;
+  place-items: center;
+  clear: both;
+  height: 28px;
+}
+
+
+/*----------------------------------------------------------------
+editingToolbar ICONS
+----------------------------------------------------------------*/
+
+.editingToolbarIconPick {
+  line-height: normal;
+  vertical-align: middle;
+  margin-right: 8px;
+}
+
+.editingToolbarIconPick svg {
+  width: 18px;
+  height: 18px;
+}
+
+
+
+/*----------------------------------------------------------------
+editingToolbar SUPPORT
+---------------------------------------------`-------------------*/
+
+#editingToolbarModalBar {
+  align-items: center;
+  justify-items: center;
+  border: none;
+  backdrop-filter: none;
+}
+
+ 
+
+#editingToolbarModalBar.editingToolbarGlassAesthetic [class^=editingToolbarCommandsubItem] {
+
+  background-color: #ffffff00;
+}
+
+#editingToolbarModalBar .editingToolbarCommandItem {
+  justify-content: center;
+  align-content: center;
+  place-items: center;
+
+}
+
+
+/*  #editingToolbarModalBar.editingToolbarTinyAesthetic .editingToolbarCommandItem svg{
+     width: 1em;
+     height: 1em;
+ } */
+
+
+
+div.modal-container.editingToolbar-Modal:not(:is(.changename,.customicon)) .modal-bg {
+  background-color: transparent !important;
+  backdrop-filter: none !important;
+  position: relative;
+}
+
+.modal-container.editingToolbar-Modal:not(:is(.changename,.customicon)) .modal {
+  padding: 10px 20px;
+  width: 220px;
+  position: absolute;
+  bottom: 2em;
+  right: 0.5em;
+  background-color: rgb(var(--mono-rgb-0), 0.65);
+  backdrop-filter: blur(2px);
+}
+
+.modal-container.editingToolbar-Modal .modal-title {
+  display: none;
+}
+
+.modal-container.editingToolbar-Modal .modal input[type='range'] {
+  width: 90%;
+
+}
+
+body.theme-dark .modal-container.editingToolbar-Modal .modal input[type='range'] {
+  background-color: var(--background-secondary);
+}
+
+/*tiny 样式*/
+#editingToolbarModalBar.editingToolbarTinyAesthetic {
+  align-items: center;
+  justify-items: center;
+  border: 1px solid var(--background-modifier-border-hover);
+  backdrop-filter: none;
+  background-color: var(--background-secondary);
+}
+
+
+#editingToolbarModalBar.editingToolbarTinyAesthetic .editingToolbarCommandItem {
+  margin: auto;
+  padding: 0px;
+  box-shadow: none;
+  margin-left: 0px;
+  margin-right: 0px;
+  position: relative;
+  background-color: transparent;
+
+}
+
+#editingToolbarModalBar .editingToolbarCommandItem {
+  margin: auto;
+  padding: 0px;
+  box-shadow: none;
+
+  margin-left: 4px;
+  margin-right: 0px;
+  position: relative;
+  background-color: transparent;
+ 
+
+}
+
+
+:is(#editingToolbarModalBar).editingToolbarTinyAesthetic:not(.top) button[class^=editingToolbarCommandsubItem] {
+  margin: auto;
+  padding: 4px 4px;
+  box-shadow: none;
+  border: none;
+  display: flex;
+  border-radius: var(--radius-s);
+  font-size: 10px;
+  margin-right: 0px;
+  position: relative;
+  background-color: transparent;
+
+  place-items: center;
+  clear: both;
+  max-width: 28px;
+  max-height: 28px;
+
+}
+
+button[class^=editingToolbarCommandsubItem]::after {
+
+  content: url("data:image/svg+xml,%3Csvg width='4' height='4' version='1.1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024' enable-background='new 0 0 1024 1024' xml:space='preserve'%3E%3Cpath fill='%23666' d='M13.24 80.11 l461.75 560.8 q14.56 16.02 36.41 16.02 q21.85 0 36.42 -16.02 l463.2 -560.8 q10.2 -10.19 12.38 -24.75 q2.18 -14.57 -3.64 -27.68 q-5.82 -13.11 -18.21 -20.39 q-12.39 -7.29 -26.95 -7.29 l-924.95 0 q-20.4 0 -34.23 13.11 q-13.84 13.11 -15.29 32.77 q-1.46 19.66 13.11 34.23 Z'/%3E%3C/svg%3E");
+
+  margin-left: 1px;
+  margin-top: 6px;
+
+}
+
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button[class^=editingToolbarCommandsubItem]>.subitem {
+  border-radius: var(--radius-m);
+  position: absolute;
+  user-select: none;
+  transform: translateY(105%) translateX(0%);
+  -webkit-transform: translateY(105%) translateX(0%);
+  display: flex;
+
+  box-shadow: none;
+  border: 1px solid var(--background-modifier-border-hover);
+  background-color: var(--background-secondary);
+  z-index:1;
+  visibility: hidden;
+  transition: all 0.15s linear;
+  -webkit-transition: all 0.15s linear;
+}
+
+
+/* color-mix(in srgb, var(--background-secondary) 60%, transparent); */
+
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button[class^=editingToolbarCommandsubItem] >.subitem:hover  {
+  visibility:visible;
+  transition: all 0.3s linear;
+  -webkit-transition:  all 0.3s linear;
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button[class^=editingToolbarCommandsubItem]:first-child>.subitem
+{
+  left: 0;
+}
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button[class^=editingToolbarCommandsubItem]:nth-child(2)>.subitem
+{
+  left: 0;
+}
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button[class^=editingToolbarCommandsubItem]:nth-last-child(1)>.subitem
+{
+  right: 0;
+}
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button[class^=editingToolbarCommandsubItem]:nth-last-child(2)>.subitem
+{
+  right: 0;
+}
+@media screen and (max-width: 768px) {
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar):not(:is(.top,.editingToolbarFlex)) button[class^=editingToolbarCommandsubItem]>.subitem {
+    left: 58%;
+    transform: translate(-60%, 90%);
+  }
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button[class^=editingToolbarCommandsubItem]>.subitem svg {
+  max-width: 1.3em;
+  max-height: 1.3em;
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button[class^=editingToolbarCommandsubItem]>.subitem button.menu-item:not(.editingToolbar-Divider-Line) {
+  background-color: transparent;
+  line-height: 2em;
+  display: inline-flex;
+  box-shadow: none;
+  align-items: center;
+}
+
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button[class^=editingToolbarCommandsubItem]>.subitem .menu-item {
+  margin-left: 2px;
+  margin-right: 2px;
+  padding: 6px 8px;
+}
+
+
+
+
+.hide-toolbar :is(#editingToolbarModalBar,#editingToolbarPopoverBar) {
+  display: none!important;
+}
+.workspace:has(.markdown-source-view.hide-toolbar) > .workspace-split>#editingToolbarModalBar {
+  display: none!important;
+}
+.workspace:has(.markdown-source-view.hide-toolbar) > .workspace-split>#editingToolbarPopoverBar {
+  display: none!important;
+}
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-font-color .triangle-icon {
+  position: absolute;
+  margin-left: 18px;
+  bottom: 8%;
+  background-size: 4px 4px;
+  background-image: url("data:image/svg+xml,%3Csvg width='4' height='4' version='1.1' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024' enable-background='new 0 0 1024 1024' xml:space='preserve'%3E%3Cpath fill='%23666' d='M13.24 80.11 l461.75 560.8 q14.56 16.02 36.41 16.02 q21.85 0 36.42 -16.02 l463.2 -560.8 q10.2 -10.19 12.38 -24.75 q2.18 -14.57 -3.64 -27.68 q-5.82 -13.11 -18.21 -20.39 q-12.39 -7.29 -26.95 -7.29 l-924.95 0 q-20.4 0 -34.23 13.11 q-13.84 13.11 -15.29 32.77 q-1.46 19.66 13.11 34.23 Z'/%3E%3C/svg%3E");
+
+  width: 16px;
+  height: 20px;
+  background-position: center;
+
+  background-repeat: no-repeat;
+  min-width: unset;
+  border-left: 2px solid transparent;
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar):not(.top) button.editingToolbarCommandsubItem-font-color .triangle-icon {
+  margin-left: 16px;
+
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar):not(:is(.top,.editingToolbarFlex)) button.editingToolbarCommandsubItem-font-color .x-color-picker-wrapper {
+  top: auto;
+  bottom: calc(100% - 2rem);
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar):not(:is(.top,.editingToolbarFlex)) button[class^=editingToolbarCommandsubItem]:not(.editingToolbarSecond)>.subitem {
+  bottom: calc(100% + calc(var(--toolbar-icon-size) + 18px));
+}
+
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-font-color .subitem {
+  visibility: hidden;
+  transition: all 0.15s linear;
+  -webkit-transition: all 0.15s linear;
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-font-color .subitem:hover {
+  visibility: visible;
+  transition: all 0.3s linear;
+  -webkit-transition: all 0.3s linear;
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button[class^=editingToolbarCommandsubItem]:hover>.subitem {
+  visibility: visible;
+  transition: all 0.3s linear;
+  -webkit-transition: all 0.3s linear;
+  z-index:1;
+}
+
+.editingToolbarCommandsubItem-font-color button {
+  background-color: transparent;
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai {
+  position: relative;
+  overflow: visible;
+  display: inline-flex;
+  align-items: center;
+  gap: 4px;
+  padding-right: 0px !important;
+  isolation: isolate;
+}
+
+
+:is(#editingToolbarModalBar[data-toolbar-style="following"], #editingToolbarModalBar.top, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai.editing-toolbar-ai-button-inline .editing-toolbar-ai-button-label {
+  max-width: 5.2em;
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai.editing-toolbar-ai-button-fixed {
+  gap: 2px;
+  justify-content: center;
+  padding-left: 4px !important;
+  padding-right: 4px !important;
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai::before {
+  content: "";
+  position: absolute;
+  inset: -1px;
+  border-radius: 12px;
+  background: rgba(99, 102, 241, 0.08);
+  opacity: 0;
+  transition: opacity 0.16s ease;
+  pointer-events: none;
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai:hover::before {
+  opacity: 1;
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai::after {
+  content: none;
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai > svg,
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai svg.svg-icon {
+  flex-shrink: 0;
+  position: relative;
+  z-index: 1;
+}
+
+.editing-toolbar-ai-button-main {
+  display: inline-flex;
+  align-items: center;
+  min-width: 0;
+  position: relative;
+  z-index: 1;
+}
+
+.editing-toolbar-ai-button-label {
+  display: inline-block;
+  max-width: 6em;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  font-size: 12px;
+  font-weight: 600;
+  line-height: 1.2;
+  color: var(--text-accent);
+}
+
+.editing-toolbar-ai-button-arrow {
+  display: inline-flex;
+  align-items: center;
+  justify-content: center;
+  width: 14px;
+  min-height: 16px;
+  margin-left: 1px;
+  padding-left: 4px;
+  border-left: 1px solid var(--background-modifier-border-hover);
+  color: var(--text-muted);
+  font-size: 9px;
+  line-height: 1;
+  flex-shrink: 0;
+  position: relative;
+  z-index: 1;
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai.editing-toolbar-ai-button-fixed .editing-toolbar-ai-button-arrow {
+  width: 10px;
+  min-height: 14px;
+  margin-left: 0;
+  padding-left: 2px;
+  border-left: none;
+}
+
+@media screen and (max-width: 768px) {
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai.editing-toolbar-ai-button-inline {
+    gap: 2px;
+    justify-content: center;
+    padding-left: 4px !important;
+    padding-right: 4px !important;
+  }
+
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai.editing-toolbar-ai-button-inline .editing-toolbar-ai-button-label {
+    display: none;
+  }
+
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai.editing-toolbar-ai-button-inline .editing-toolbar-ai-button-arrow {
+    width: 10px;
+    min-height: 14px;
+    margin-left: 0;
+    padding-left: 2px;
+    border-left: none;
+  }
+}
+
+
+.workspace-leaf-content:has(.cm-ai-loading, .cm-ai-result-panel[data-phase="streaming"])
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai,
+body[data-editing-toolbar-ai-busy="true"]
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai,
+body:has(.workspace-leaf.mod-active .cm-ai-loading, .workspace-leaf.mod-active .cm-ai-result-panel[data-phase="streaming"])
+  :is(#editingToolbarModalBar[data-toolbar-style="fixed"], #editingToolbarModalBar[data-toolbar-style="mobile"], #editingToolbarPopoverBar[data-toolbar-style="fixed"], #editingToolbarPopoverBar[data-toolbar-style="mobile"]) button.editingToolbarCommandsubItem-ai {
+  opacity: 0.82;
+  pointer-events: none;
+  overflow: hidden;
+}
+
+.workspace-leaf-content:has(.cm-ai-loading, .cm-ai-result-panel[data-phase="streaming"])
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai::before,
+body[data-editing-toolbar-ai-busy="true"]
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai::before,
+body:has(.workspace-leaf.mod-active .cm-ai-loading, .workspace-leaf.mod-active .cm-ai-result-panel[data-phase="streaming"])
+  :is(#editingToolbarModalBar[data-toolbar-style="fixed"], #editingToolbarModalBar[data-toolbar-style="mobile"], #editingToolbarPopoverBar[data-toolbar-style="fixed"], #editingToolbarPopoverBar[data-toolbar-style="mobile"]) button.editingToolbarCommandsubItem-ai::before {
+  opacity: 1;
+  background: linear-gradient(135deg, color-mix(in srgb, var(--interactive-accent) 14%, transparent), color-mix(in srgb, var(--background-secondary) 90%, transparent));
+  box-shadow: 0 0 0 1px color-mix(in srgb, var(--interactive-accent) 14%, transparent), 0 8px 22px color-mix(in srgb, var(--interactive-accent) 10%, transparent), inset 0 1px 0 color-mix(in srgb, white 16%, transparent);
+  animation: cm-ai-toolbar-glow 2.1s ease-in-out infinite;
+}
+
+.workspace-leaf-content:has(.cm-ai-loading, .cm-ai-result-panel[data-phase="streaming"])
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai::after,
+body[data-editing-toolbar-ai-busy="true"]
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai::after,
+body:has(.workspace-leaf.mod-active .cm-ai-loading, .workspace-leaf.mod-active .cm-ai-result-panel[data-phase="streaming"])
+  :is(#editingToolbarModalBar[data-toolbar-style="fixed"], #editingToolbarModalBar[data-toolbar-style="mobile"], #editingToolbarPopoverBar[data-toolbar-style="fixed"], #editingToolbarPopoverBar[data-toolbar-style="mobile"]) button.editingToolbarCommandsubItem-ai::after {
+  content: "";
+  position: absolute;
+  inset: -1px;
+  border-radius: 12px;
+  background: linear-gradient(115deg, transparent 0%, transparent 34%, color-mix(in srgb, white 68%, transparent) 48%, transparent 62%, transparent 100%);
+  transform: translateX(-150%) skewX(-24deg);
+  opacity: 0;
+  animation: cm-ai-sheen 2.8s ease-in-out infinite;
+  pointer-events: none;
+  mix-blend-mode: screen;
+}
+
+.workspace-leaf-content:has(.cm-ai-loading, .cm-ai-result-panel[data-phase="streaming"])
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai > svg,
+.workspace-leaf-content:has(.cm-ai-loading, .cm-ai-result-panel[data-phase="streaming"])
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai svg.svg-icon,
+body[data-editing-toolbar-ai-busy="true"]
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai > svg,
+body[data-editing-toolbar-ai-busy="true"]
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai svg.svg-icon,
+body:has(.workspace-leaf.mod-active .cm-ai-loading, .workspace-leaf.mod-active .cm-ai-result-panel[data-phase="streaming"])
+  :is(#editingToolbarModalBar[data-toolbar-style="fixed"], #editingToolbarModalBar[data-toolbar-style="mobile"], #editingToolbarPopoverBar[data-toolbar-style="fixed"], #editingToolbarPopoverBar[data-toolbar-style="mobile"]) button.editingToolbarCommandsubItem-ai > svg,
+body:has(.workspace-leaf.mod-active .cm-ai-loading, .workspace-leaf.mod-active .cm-ai-result-panel[data-phase="streaming"])
+  :is(#editingToolbarModalBar[data-toolbar-style="fixed"], #editingToolbarModalBar[data-toolbar-style="mobile"], #editingToolbarPopoverBar[data-toolbar-style="fixed"], #editingToolbarPopoverBar[data-toolbar-style="mobile"]) button.editingToolbarCommandsubItem-ai svg.svg-icon {
+  animation: cm-ai-toolbar-breathe 1.8s ease-in-out infinite;
+  filter: drop-shadow(0 0 8px color-mix(in srgb, var(--interactive-accent) 26%, transparent));
+}
+
+.workspace-leaf-content:has(.cm-ai-loading, .cm-ai-result-panel[data-phase="streaming"])
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai .editing-toolbar-ai-button-label,
+.workspace-leaf-content:has(.cm-ai-loading, .cm-ai-result-panel[data-phase="streaming"])
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai .editing-toolbar-ai-button-arrow,
+body[data-editing-toolbar-ai-busy="true"]
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai .editing-toolbar-ai-button-label,
+body[data-editing-toolbar-ai-busy="true"]
+  :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbarCommandsubItem-ai .editing-toolbar-ai-button-arrow,
+body:has(.workspace-leaf.mod-active .cm-ai-loading, .workspace-leaf.mod-active .cm-ai-result-panel[data-phase="streaming"])
+  :is(#editingToolbarModalBar[data-toolbar-style="fixed"], #editingToolbarModalBar[data-toolbar-style="mobile"], #editingToolbarPopoverBar[data-toolbar-style="fixed"], #editingToolbarPopoverBar[data-toolbar-style="mobile"]) button.editingToolbarCommandsubItem-ai .editing-toolbar-ai-button-label,
+body:has(.workspace-leaf.mod-active .cm-ai-loading, .workspace-leaf.mod-active .cm-ai-result-panel[data-phase="streaming"])
+  :is(#editingToolbarModalBar[data-toolbar-style="fixed"], #editingToolbarModalBar[data-toolbar-style="mobile"], #editingToolbarPopoverBar[data-toolbar-style="fixed"], #editingToolbarPopoverBar[data-toolbar-style="mobile"]) button.editingToolbarCommandsubItem-ai .editing-toolbar-ai-button-arrow {
+  color: var(--text-muted);
+  animation: cm-ai-label-breathe 1.8s ease-in-out infinite;
+}
+
+.menu.editing-toolbar-ai-dropdown-menu .menu-item.is-disabled {
+  opacity: 0.72;
+}
+
+.editing-toolbar-ai-inline-prompt {
+  position: fixed;
+  z-index: 1001;
+  width: min(420px, calc(100vw - 24px));
+  max-width: 90vw;
+  padding: 8px;
+  border: 1px solid var(--background-modifier-border);
+  border-radius: 12px;
+  background: var(--background-primary);
+  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
+  backdrop-filter: blur(8px);
+  overflow: hidden;
+}
+.editing-toolbar-ai-inline-prompt button
+{
+    box-shadow: none!important;
+}
+@media (max-width: 768px) {
+  .editing-toolbar-ai-inline-prompt {
+    width: calc(100vw - 16px);
+    max-width: calc(100vw - 16px);
+  }
+}
+
+@media (max-width: 480px) {
+  .editing-toolbar-ai-inline-prompt {
+    width: calc(100vw - 8px);
+    max-width: calc(100vw - 8px);
+    border-radius: 8px;
+  }
+}
+
+ 
+
+@media (max-width: 768px) {
+  .editing-toolbar-ai-inline-prompt-header {
+    padding: 10px 12px;
+    min-height: 44px;
+  }
+}
+
+.editing-toolbar-ai-inline-prompt-drag-handle {
+  width: 4px;
+  height: 20px;
+  background: linear-gradient(
+    to right,
+    var(--background-modifier-border) 0%,
+    var(--background-modifier-border) 33%,
+    transparent 33%,
+    transparent 66%,
+    var(--background-modifier-border) 66%,
+    var(--background-modifier-border) 100%
+  );
+  cursor: grab;
+  flex-shrink: 0;
+}
+
+@media (max-width: 768px) {
+  .editing-toolbar-ai-inline-prompt-drag-handle {
+    width: 6px;
+    height: 24px;
+  }
+}
+
+.editing-toolbar-ai-inline-prompt-drag-handle:active {
+  cursor: grabbing;
+}
+
+.editing-toolbar-ai-inline-prompt-title {
+  flex: 1;
+  font-size: 12px;
+  font-weight: 600;
+  color: var(--text-normal);
+  cursor: grab;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.editing-toolbar-ai-inline-prompt-title:active {
+  cursor: grabbing;
+}
+
+.editing-toolbar-ai-inline-prompt-header-actions {
+  display: flex;
+  align-items: center;
+  gap: 4px;
+  flex-shrink: 0;
+}
+.editing-toolbar-ai-inline-prompt-header {
+  display: flex;
+  justify-content: space-between;
+  gap: 8px;
+  align-items: center;
+  user-select: none;
+}
+.editing-toolbar-ai-inline-prompt-close {
+  display: inline-flex;
+  align-items: center;
+  justify-content: center;
+  width: 20px;
+  height: 20px;
+  padding: 0;
+  border: none;
+  border-radius: 6px;
+  background: transparent;
+  color: var(--text-muted);
+  cursor: pointer;
+}
+
+.editing-toolbar-ai-inline-prompt-close:hover {
+  background: var(--background-modifier-hover);
+  color: var(--text-normal);
+}
+
+.editing-toolbar-ai-inline-prompt-settings {
+  display: inline-flex;
+  align-items: center;
+  justify-content: center;
+  width: 20px;
+  height: 20px;
+  padding: 0;
+  border: none;
+  border-radius: 6px;
+  background: transparent;
+  color: var(--text-muted);
+  cursor: pointer;
+}
+
+.editing-toolbar-ai-inline-prompt-settings:hover {
+  background: var(--background-modifier-hover);
+  color: var(--text-normal);
+}
+
+.editing-toolbar-ai-inline-prompt-input-wrapper {
+  position: relative;
+  margin: 8px;
+  margin-bottom: 6px;
+}
+
+.editing-toolbar-ai-inline-prompt-input {
+  width: 100%;
+  min-height: 56px;
+  max-height: 240px;
+  resize: none;
+  padding: 8px 42px 8px 10px;
+  border: 1px solid var(--background-modifier-border);
+  border-radius: 8px;
+  background: var(--background-secondary);
+  color: var(--text-normal);
+  font-size: 13px;
+  line-height: 1.5;
+  overflow-y: hidden;
+  transition: height 0.1s ease;
+}
+
+@media (max-width: 768px) {
+  .editing-toolbar-ai-inline-prompt-input {
+    font-size: 14px;
+    min-height: 48px;
+    padding: 10px 32px 10px 12px;
+  }
+}
+
+@media (max-width: 480px) {
+  .editing-toolbar-ai-inline-prompt-input {
+    font-size: 16px;
+    min-height: 44px;
+  }
+}
+
+.editing-toolbar-ai-inline-prompt-input:focus {
+  outline: none;
+  border-color: var(--interactive-accent);
+  box-shadow: 0 0 0 2px color-mix(in srgb, var(--interactive-accent) 15%, transparent);
+}
+
+.editing-toolbar-ai-inline-prompt-input::placeholder {
+  color: var(--text-faint);
+}
+
+.editing-toolbar-ai-inline-prompt-history-btn {
+  position: absolute;
+  top: 6px;
+  right: 6px;
+  width: 22px;
+  height: 22px;
+  padding: 0;
+  border: none;
+  border-radius: 5px;
+  background: transparent;
+  color: var(--text-muted);
+  cursor: pointer;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  transition: all 0.15s ease;
+}
+
+.editing-toolbar-ai-inline-prompt-history-btn:hover {
+  background: var(--background-modifier-hover);
+  color: var(--text-normal);
+}
+
+.editing-toolbar-ai-inline-prompt-history-dropdown {
+  position: absolute;
+  top: 32px;
+  right: 0;
+  width: 100%;
+  max-height: 180px;
+  overflow-y: auto;
+  border: 1px solid var(--background-modifier-border);
+  border-radius: 6px;
+  background: var(--background-primary);
+  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
+  z-index: 10;
+}
+
+.editing-toolbar-ai-inline-prompt-history-item {
+  padding: 6px 10px;
+  cursor: pointer;
+  font-size: 12px;
+  color: var(--text-normal);
+  border-bottom: 1px solid var(--background-modifier-border);
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  transition: background 0.1s ease;
+}
+
+.editing-toolbar-ai-inline-prompt-history-item:last-child {
+  border-bottom: none;
+}
+
+.editing-toolbar-ai-inline-prompt-history-item:hover {
+  background: var(--background-modifier-hover);
+}
+
+.editing-toolbar-ai-inline-prompt-history-empty {
+  padding: 10px;
+  text-align: center;
+  font-size: 11px;
+  color: var(--text-faint);
+}
+
+.editing-toolbar-ai-inline-prompt-templates {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 4px;
+  margin-bottom: 6px;
+}
+ 
+.editing-toolbar-ai-inline-prompt-template-btn {
+    box-shadow: none !important;
+    padding: 0px 6px;
+    height: 22px;
+    border: 1px solid var(--background-modifier-border);
+    border-radius: 8px;
+    background: var(--background-secondary);
+    color: var(--text-muted);
+    font-size: 10px;
+    cursor: pointer;
+    transition: all 0.12s ease;
+    white-space: nowrap;
+}
+
+.editing-toolbar-ai-inline-prompt-template-btn:hover {
+  background: var(--interactive-accent);
+  color: var(--text-on-accent);
+  border-color: var(--interactive-accent);
+  transform: translateY(-1px);
+}
+
+.editing-toolbar-ai-inline-prompt-footer {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  gap:15px;
+}
+
+.editing-toolbar-ai-inline-prompt-send-btn {
+  position: absolute;
+  bottom: 6px;
+  right: 6px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 22px;
+  height: 22px;
+  padding: 0;
+  border: none;
+  border-radius: 6px;
+  background: var(--interactive-accent);
+  color: var(--text-on-accent);
+  cursor: pointer;
+  transition: all 0.15s ease;
+  flex-shrink: 0;
+  z-index: 1;
+}
+
+@media (max-width: 768px) {
+  .editing-toolbar-ai-inline-prompt-send-btn {
+    width: 32px;
+    height: 32px;
+  }
+
+  .editing-toolbar-ai-inline-prompt-send-btn svg {
+    width: 14px;
+    height: 14px;
+  }
+}
+
+@media (max-width: 480px) {
+  .editing-toolbar-ai-inline-prompt-send-btn {
+    width: 36px;
+    height: 36px;
+  }
+
+  .editing-toolbar-ai-inline-prompt-send-btn svg {
+    width: 16px;
+    height: 16px;
+  }
+}
+
+.editing-toolbar-ai-inline-prompt-send-btn:hover:not(:disabled) {
+  background: var(--interactive-accent-hover);
+  transform: scale(1.08);
+}
+
+.editing-toolbar-ai-inline-prompt-send-btn:disabled {
+  opacity: 0.3;
+  cursor: not-allowed;
+  background: var(--background-modifier-border);
+}
+
+.editing-toolbar-ai-inline-prompt-hint {
+
+  font-size: 10px;
+  color: var(--text-faint);
+}
+
+.editing-toolbar-ai-inline-prompt-context {
+  margin-bottom: 8px;
+  padding: 8px;
+  background: var(--background-secondary);
+  border-radius: 6px;
+  max-height: 120px;
+  overflow-y: auto;
+}
+
+.editing-toolbar-ai-inline-prompt-context-stats {
+  display: flex;
+  align-items: center;
+  gap: 12px;
+  padding: 6px 10px;
+  margin-bottom: 8px;
+  background: var(--background-modifier-border);
+  border-radius: 6px;
+  font-size: 10px;
+  color: var(--text-muted);
+}
+
+.editing-toolbar-ai-inline-prompt-context-stats-item {
+  display: flex;
+  align-items: center;
+  gap: 4px;
+}
+
+.editing-toolbar-ai-inline-prompt-context-stats-item svg {
+  flex-shrink: 0;
+}
+
+.editing-toolbar-ai-inline-prompt-context-item {
+  display: flex;
+  align-items: center;
+  gap: 6px;
+  padding: 4px 6px;
+  margin-bottom: 4px;
+  background: var(--background-primary);
+  border-radius: 4px;
+  font-size: 11px;
+}
+
+.editing-toolbar-ai-inline-prompt-context-item:last-child {
+  margin-bottom: 0;
+}
+
+.editing-toolbar-ai-inline-prompt-context-label {
+  color: var(--text-accent);
+  font-weight: 500;
+  flex-shrink: 0;
+}
+
+.editing-toolbar-ai-inline-prompt-context-preview {
+  color: var(--text-muted);
+  flex: 1;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.editing-toolbar-ai-inline-prompt-context-remove {
+  padding: 2px;
+  border: none;
+  background: transparent;
+  color: var(--text-muted);
+  cursor: pointer;
+  border-radius: 3px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-shrink: 0;
+  box-shadow: none!important;
+  
+}
+
+.editing-toolbar-ai-inline-prompt-context-remove:hover {
+  background: var(--background-modifier-error);
+  color: var(--text-error);
+}
+
+.editing-toolbar-ai-inline-prompt-mention-dropdown {
+  
+  bottom: 100%;
+  left: 0;
+  width: 100%;
+  max-height: 200px;
+  overflow-y: auto;
+  margin-bottom: 4px;
+  border: 1px solid var(--background-modifier-border);
+  border-radius: 6px;
+  background: var(--background-primary);
+  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
+  z-index: 10;
+}
+
+.editing-toolbar-ai-inline-prompt-mention-item {
+  padding: 8px 12px;
+  cursor: pointer;
+  font-size: 12px;
+  color: var(--text-normal);
+  border-bottom: 1px solid var(--background-modifier-border);
+  transition: background 0.1s ease;
+}
+
+.editing-toolbar-ai-inline-prompt-mention-item:last-child {
+  border-bottom: none;
+}
+
+.editing-toolbar-ai-inline-prompt-mention-item:hover,
+.editing-toolbar-ai-inline-prompt-mention-item.selected {
+  background: var(--background-modifier-hover);
+}
+
+.editing-toolbar-ai-inline-prompt-mention-icon {
+  display: inline-block;
+  width: 16px;
+  margin-right: 6px;
+  color: var(--text-accent);
+}
+
+.editing-toolbar-ai-inline-prompt-actions {
+  display: flex;
+  justify-content: flex-end;
+  gap: 8px;
+  margin-top: 10px;
+}
+
+.editing-toolbar-ai-inline-prompt-action {
+  min-width: 72px;
+  padding: 8px 12px;
+  border: 1px solid var(--background-modifier-border);
+  border-radius: 10px;
+  background: var(--background-secondary);
+  color: var(--text-normal);
+  cursor: pointer;
+}
+
+.editing-toolbar-ai-inline-prompt-action:hover:not(:disabled) {
+  background: var(--background-modifier-hover);
+}
+
+.editing-toolbar-ai-inline-prompt-action.mod-cta {
+  border-color: var(--interactive-accent);
+  background: var(--interactive-accent);
+  color: var(--text-on-accent, #fff);
+}
+
+.editing-toolbar-ai-inline-prompt-action:disabled {
+  opacity: 0.55;
+  cursor: not-allowed;
+}
+
+.is-mobile .editing-toolbar-ai-inline-prompt-action {
+  flex: 1;
+}
+
+
+.editingToolbarSettingsTabsContainer .editingToolbarCommandItem .setting-item-info {
+
+  flex: 30%;
+  margin: 0;
+}
+
+.editingToolbarSettingsTabsContainer .editingToolbarSettingsTabsContainer_sub {
+  border-left: 1px solid var(--background-modifier-border);
+  flex-flow: column;
+  min-height: 45px;
+  display: flex;
+  padding: 0;
+  margin-left: 10px;
+  flex: 70%;
+}
+
+.editingToolbarSettingsTabsContainer .editingToolbarSettingsTabsContainer_sub:empty {
+  border: 2px dashed rgba(var(--interactive-accent-rgb), 0.5);
+}
+
+.editingToolbarSettingsTabsContainer .editingToolbarSettingsTabsContainer_sub:empty::before {
+  content: "✖️Drag it here";
+  margin: auto;
+  font-size: 12px;
+}
+
+.editingToolbarSettingsTabsContainer .editingToolbarSettingsTabsContainer_sub .editingToolbarCommandItem {
+  flex: auto;
+  margin-left: 2em;
+  ;
+}
+
+.editingToolbarSettingsTabsContainer .editingToolbarSettingsTabsContainer_sub .setting-item-control {
+  flex: 0;
+}
+
+.editingToolbarSettingsTabsContainer .editingToolbarCommandSubItem>.setting-item-info {
+  flex: 70px;
+}
+
+.editingToolbarCommandSubItem>.setting-item-control {
+
+  justify-content: flex-start;
+}
+
+.modal.mod-settings button:not(.mod-cta):not(.mod-warning).editingToolbarSettingsButton.editingToolbarSettingsButtonaddsub {
+  background-color: var(--background-secondary-alt);
+}
+
+
+.setting-item button.editingToolbarSettingsIcon {
+  display: flex;
+  transform: translateX(-30%);
+  -webkit-transform: translateX(-30%);
+}
+
+.setting-item .editingToolbarSettingsIcon:empty::before {
+  content: "❗";
+}
+.modal.mod-settings .custom-commands-container .editingToolbarSettingsIcon{
+  box-shadow: none!important;
+}
+.modal.mod-settings .custom-commands-container .editingToolbarSettingsIcon:hover{
+  background-color: transparent!important;
+  color: var(--text-normal)!important;
+}
+.modal .setting-item-control>input.id-is-disabled{
+  background-color: var(--background-modifier-border);
+}
+.setting-item button.editingToolbarSettingsIcon svg {
+  max-width: 1.5em;
+  max-height: 1.5em;
+}
+
+.modal.mod-settings button:not(.mod-cta):not(.mod-warning).editingToolbarSettingsIcon:hover {
+  background-color: var(--interactive-accent-hover);
+}
+
+.modal.mod-settings button:not(.mod-cta):not(.mod-warning).editingToolbarSettingsIcon {
+  background-color: transparent;
+  box-shadow: 0 1px 1px 0px var(--background-modifier-border);
+}
+
+@media screen and (min-width: 781px) {
+  .editingToolbar-Modal .wideInputPromptInputEl {
+    width: 40rem;
+    max-width: 100%;
+    height: 20rem;
+    background-color: rgb(var(--mono-rgb-0), 0.8);
+  }
+}
+
+.editingToolbarcustomIcon svg {
+  max-width: 1.3em;
+  max-height: 1.3em;
+  display: flex;
+}
+
+
+.editingToolbarSettingsButton svg {
+  max-width: 1.3em;
+  max-height: 1.3em;
+  display: flex;
+}
+
+.cmdr-page-header {
+  min-width: 1em;
+  ;
+}
+
+
+.x-color-picker-wrapper {
+  right: -50%;
+  transform: translateX(50%);
+  top: 1.8em;
+  min-width: 1px;
+  padding: 10px;
+  box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14);
+  position: absolute;
+  width: fit-content;
+  font-weight: 400;
+  font-family: Source Sans Pro, sans-serif;
+  border-radius: var(--radius-s);
+  background-color: var(--color-base-10, --background-primary);
+}
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button:first-child.editingToolbarCommandsubItem-font-color .x-color-picker-wrapper {
+  right: unset;
+  transform: translateX(0);
+  left: 0px;
+}
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button:nth-child(2).editingToolbarCommandsubItem-font-color .x-color-picker-wrapper {
+  right: unset;
+  transform: translateX(0);
+  left: 0px;
+}
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button:nth-child(3).editingToolbarCommandsubItem-font-color .x-color-picker-wrapper {
+  right: unset;
+  transform: translateX(0);
+  left: -30px;
+}
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button:nth-child(4).editingToolbarCommandsubItem-font-color .x-color-picker-wrapper {
+  right: unset;
+  transform: translateX(0);
+  left: -50px;
+}
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button:nth-last-child(1).editingToolbarCommandsubItem-font-color .x-color-picker-wrapper {
+  right: 0px;
+  transform: translateX(0);
+}
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button:nth-last-child(2).editingToolbarCommandsubItem-font-color .x-color-picker-wrapper {
+  right: 0px;
+  transform: translateX(0);
+}
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button:nth-last-child(3).editingToolbarCommandsubItem-font-color .x-color-picker-wrapper {
+  right: 0px;
+  transform: translateX(30px);
+}
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button:nth-last-child(4).editingToolbarCommandsubItem-font-color .x-color-picker-wrapper {
+  right: 0px;
+  transform: translateX(40px);
+}
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button:nth-last-child(5).editingToolbarCommandsubItem-font-color .x-color-picker-wrapper {
+  right: 0px;
+  transform: translateX(50px);
+}
+
+.markdown-source-view.mod-cm6 .x-color-picker-wrapper table.x-color-picker-table#x-color-picker-table {
+  width: unset;
+  border-collapse: separate;
+  border-spacing: 6px;
+  margin: auto !important;
+}
+
+.x-color-picker-wrapper table.x-color-picker-table#x-backgroundcolor-picker-table {
+  width: unset;
+  border-collapse: separate;
+  border-spacing: 6px;
+  margin: auto !important;
+}
+
+.x-color-picker-wrapper .x-color-picker-table th {
+  border: 0;
+  text-align: left;
+  font-weight: normal;
+  background: transparent !important;
+  color: #718096;
+}
+
+.x-color-picker-wrapper #x-color-picker-table td {
+  font-size: 1px;
+  padding: 9px;
+  cursor: default;
+  border: solid 1px var(--background-modifier-border);
+}
+
+.x-color-picker-wrapper #x-backgroundcolor-picker-table td {
+  font-size: 1px;
+  border-radius: 50%;
+  padding: 9px;
+  cursor: default;
+  border: solid 1px var(--background-modifier-border);
+}
+
+.x-color-picker-wrapper .x-color-picker-table tr td:hover {
+  filter: brightness(1.2);
+  box-shadow: 0 3px 6px -4px rgba(0, 0, 0, .12), 0 6px 16px 0 rgba(0, 0, 0, .08), 0 9px 28px 8px rgba(0, 0, 0, .05);
+}
+
+/* .x-color-picker-wrapper tbody>tr:hover {
+  background-color: transparent !important;
+} */
+
+/**top**/
+#editingToolbarModalBar.top {
+  display: flex;
+  flex-wrap: nowrap;
+  margin-right: 12px;
+  position: relative;
+  height: calc(var(--toolbar-icon-size) + 18px);
+  align-items: center;
+  transition: all 0.2s linear;
+  -webkit-transition: all 0.2s linear;
+  transform: none;
+  z-index: var(--layer-status-bar);
+}
+#editingToolbarModalBar ~.excalidraw .FixedSideContainer_side_top
+{
+  top: 38px!important;
+}
+.excalidraw-wrapper #editingToolbarModalBar.top
+{
+  top: 38px;
+}
+.excalidraw-wrapper #editingToolbarPopoverBar
+{
+  top: 76px;
+}
+#editingToolbarModalBar.top.autohide {
+  opacity: 0;
+  transition: all 0.5s linear;
+  -webkit-transition: all 0.5s linear;
+}
+#editingToolbarModalBar.top.centered {
+  max-width: var(--file-line-width) ;
+  align-self: center;
+}
+
+#editingToolbarModalBar.top.autohide:hover {
+  opacity: 1;
+  transition: all 1s linear;
+  -webkit-transition: all 1s linear;
+}
+
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) :is(.editingToolbarCommandItem, button[class^=editingToolbarCommandsubItem]):not(.editingToolbar-Divider-Line) {
+  font-size: 10px;
+  clear: both;
+  opacity: 1;
+  flex-shrink: 0;
+  height: 28px;
+  padding: 4px 4px;
+  border: none;
+  background: transparent;
+  cursor: default;
+  outline: none;
+  box-shadow: none;
+  border-radius: var(--radius-s);
+  display: inline-flex;
+  justify-content: center;
+  align-items: center;
+ contain: none;
+  
+}
+
+/* Some themes animate all workspace SVG icons. Opt toolbar controls out so
+   inherited visibility changes hide the whole toolbar in one frame. */
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) :is(.editingToolbarCommandItem, button[class^=editingToolbarCommandsubItem]):not(.editingToolbar-Divider-Line):not(.editingToolbarCommandsubItem-ai),
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) :is(.editingToolbarCommandItem, button[class^=editingToolbarCommandsubItem]):not(.editingToolbar-Divider-Line):not(.editingToolbarCommandsubItem-ai) *:not(.subitem),
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) :is(.editingToolbarCommandItem, button[class^=editingToolbarCommandsubItem]):not(.editingToolbar-Divider-Line):not(.editingToolbarCommandsubItem-ai) svg.svg-icon,
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) :is(.editingToolbarCommandItem, button[class^=editingToolbarCommandsubItem]):not(.editingToolbar-Divider-Line):not(.editingToolbarCommandsubItem-ai) svg.svg-icon * {
+animation: none;
+transition: none !important;
+-webkit-transition: none !important;
+}
+#editingToolbarModalBar ~.canvas-controls{
+  top: calc(var(--size-4-2) + 50px);
+}
+ 
+/* #editingToolbarModalBar.top button.editingToolbarCommandItem:hover {
+  background-color: var(--interactive-hover);
+} */
+
+
+
+#editingToolbarPopoverBar {
+
+  flex-wrap: wrap;
+  display: inline-flex;
+  height: auto !important;
+  align-items: center;
+  overflow: visible;       
+  width: fit-content;
+  z-index: var(--layer-popover);
+  background-color: var(--color-base-10, --background-primary);
+  background-clip: padding-box;
+  border-radius: var(--radius-m);
+  margin-left: 25px;
+  margin-right: 25px;
+  transition: all 0.1s linear;
+  -webkit-transition: all 0.1s linear;
+  position: absolute;
+  right: 0;
+}
+
+@media screen and (max-width: 768px) {
+  #editingToolbarPopoverBar {
+   left: 15%;
+   transform: translateX(-15%);
+   right: unset;
+  }
+}
+.markdown-source-view.mod-cm6 #editingToolbarPopoverBar {
+  margin-top: calc(var(--toolbar-icon-size) + 20px);
+}
+
+#editingToolbarPopoverBar :is(.editingToolbarCommandItem, button[class^=editingToolbarCommandsubItem]) {
+
+  height: 28px;
+  font-size: 10px;
+  clear: both;
+  opacity: 1;
+  flex-shrink: 0;
+  padding: 4px 4px;
+  border: none;
+  background: transparent;
+  cursor: default;
+  outline: none;
+  box-shadow: none;
+  border-radius: var(--radius-s);
+  display: inline-flex;
+  justify-content: center;
+  align-items: center;
+  transition: all 0.2s linear;
+  -webkit-transition: all 0.2s linear;
+
+}
+
+#editingToolbarModalBar .more-menu {
+  display: flex;
+  align-items: center;
+  box-shadow: none;
+  height: 28px;
+  opacity: 0.8;
+}
+
+#editingToolbarModalBar.editingToolbarCustomAesthetic .more-menu>.editingToolbarCommandItem svg {
+  width: calc(var(--toolbar-icon-size) * 0.8);
+  height: calc(var(--toolbar-icon-size) * 0.8);
+}
+
+
+/*Divider-Line**/
+
+.editingToolbarSettingsTabsContainer .editingToolbar-Divider-Line {
+  padding: 0;
+
+  line-height: 0px;
+  border-left: 200px solid rgba(var(--interactive-accent-rgb), 0.05);
+  border-right: 200px solid rgba(var(--interactive-accent-rgb), 0.05);
+  text-align: center;
+  background: rgba(var(--interactive-accent-rgb), 0.2);
+}
+
+.editingToolbarSettingsTabsContainer .editingToolbar-Divider-Line .setting-item-control button:not(:last-child) {
+  display: none;
+}
+
+.editingToolbarSettingsTabsContainer .editingToolbar-Divider-Line .setting-item-info {
+  flex: 1 1 auto;
+}
+
+.editingToolbarSettingsTabsContainer .editingToolbar-Divider-Line .setting-item-control {
+  justify-content: flex-start;
+}
+
+.editingToolbarSettingsTabsContainer .editingToolbar-Divider-Line .setting-item-info .setting-item-name {
+  font-size: 12px;
+  text-align: right;
+
+}
+
+.editingToolbarSettingsTabsContainer .editingToolbar-Divider-Line .setting-item-control button:last-child {
+  padding: 0;
+  background-color: transparent !important;
+}
+
+.editingToolbarSettingsTabsContainer .editingToolbar-Divider-Line .setting-item-control button:last-child svg {
+  display: none;
+}
+
+.editingToolbarSettingsTabsContainer .editingToolbar-Divider-Line .setting-item-control button:last-child::before {
+  content: url("data:image/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M511.674077 66.707284c-246.52265 0-446.347744 199.835328-446.347744 446.347744s199.825095 446.356954 446.347744 446.356954c246.50423 0 446.348768-199.844537 446.348768-446.356954S758.177284 66.707284 511.674077 66.707284zM744.967424 667.159826c21.8701 21.8701 21.8701 57.310264 0 79.199807-21.8701 21.851681-57.30924 21.851681-79.198783-0.019443L511.674077 592.264045 357.56007 746.359632c-21.8701 21.8701-57.30924 21.851681-79.17934-0.019443s-21.8701-57.290821 0-79.160921L432.493713 513.065262 278.379707 358.950232c-21.8701-21.86089-21.8701-57.328683 0-79.18855 21.8701-21.87931 57.30924-21.87931 79.17934 0l154.114007 154.104797 154.095587-154.104797c21.889543-21.87931 57.32766-21.87931 79.198783-0.010233 21.8701 21.8701 21.8701 57.348126 0 79.207993L590.89128 513.065262 744.967424 667.159826z' fill='%23666666'/%3E%3C/svg%3E");
+}
+
+:is(#editingToolbarModalBar:not(.top), #editingToolbarPopoverBar) button.editingToolbar-Divider-Line
+{
+  display: none;
+}
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbar-Divider-Line
+{
+  min-width: unset;
+  flex-shrink: 0;
+  display: inline-flex;
+  width: 0.6px;
+  background-color: var(--background-modifier-border);
+  height: 22px;
+  opacity: 0.8;
+  margin: 0;
+  padding:0;
+  align-self: center;
+} 
+
+.theme-dark :is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbar-Divider-Line {
+
+  background-color: #4f4f5188;
+
+}
+
+:is(#editingToolbarModalBar, #editingToolbarPopoverBar) button.editingToolbar-Divider-Line svg {
+  display: none;
+}
+
+/* 下拉菜单中的分类标题样式 - 文字在线条中间 */
+.menu.editing-toolbar-dropdown-menu .menu-separator
+{
+  display:none;
+}
+.menu.editing-toolbar-dropdown-menu .menu-item.is-disabled {
+  opacity: 0.7 !important;
+  cursor: default !important;
+  font-size: 10px;
+  font-weight: 400;
+  color: var(--text-muted);
+  text-transform: uppercase;
+  letter-spacing: 0.8px;
+  padding: 8px 12px;
+  background-color: transparent !important;
+  display: flex !important;
+  align-items: center;
+  gap: 6px;
+    color: var(--text-muted); /* 文字直接变透明背景色 */
+    filter: contrast(0.5);
+}
+.theme-dark .menu.editing-toolbar-dropdown-menu .menu-item.is-disabled
+{
+    color: var(--text-muted); /* 文字直接变透明背景色 */
+     opacity: 0.7;    
+}
+
+/* 左侧线条 */
+.menu.editing-toolbar-dropdown-menu .menu-item.is-disabled::before {
+  content: '';
+  flex: 1;
+  height: 1px;
+  background-color: var(--background-modifier-border);
+  opacity: 0.5;
+}
+
+/* 右侧线条 */
+.menu.editing-toolbar-dropdown-menu .menu-item.is-disabled::after {
+  content: '';
+  flex: 1;
+  height: 1px;
+  background-color: var(--background-modifier-border);
+  opacity: 0.5;
+}
+
+.menu.editing-toolbar-dropdown-menu .menu-item.is-disabled:hover {
+  background-color: transparent !important;
+}
+
+.workspace-tabs.mod-stacked .workspace-tab-header:not(.is-active)+.workspace-leaf #editingToolbarModalBar {
+  opacity: 0;
+}
+
+:is(.cm-line, p) mark[style^="background:rgba"] {
+  color: var(--text-normal);
+}
+
+:is(.cm-line, p) mark[style^="background:#"] {
+  color: black;
+}
+
+:is(.cm-line, p) span[style^="background:rgba"] {
+  color: var(--text-normal);
+}
+
+:is(.cm-line, p) span[style^="background:#"] {
+  color: black;
+}
+
+/* 快捷键样式 */                                                                
+.menu.editing-toolbar-dropdown-menu .menu-item-hotkey {                         
+        margin-left: auto;                                                            
+        font-size:10px;                                               
+        color: var(--text-muted);                                                     
+        opacity: 0.7;                                                                 
+        font-family: var(--font-monospace);                                           
+      }
+.setting-item.toolbar-cta:after {
+  content: "";
+  position: absolute;
+  top: -10%;
+  width: 104%;
+  left: -2%;
+  height: 120%;
+  outline: 2px solid var(--text-accent);
+  border-radius: 1em;
+  pointer-events: none;
+}
+
+.setting-item.toolbar-cta {
+  position: relative;
+}
+
+.toolbar-pickr  .pcr-last-color,
+.pickr  .pcr-button{
+  background-color: var(--pcr-color);
+}
+.toolbar-pickr .pcr-interaction :not(:is(input.pcr-save,.pcr-result)){
+  display:none;
+}
+.toolbar-pickr .pcr-swatches {
+  display:none;
+}
+.toolbar-pickr {
+  display:flex;
+}
+
+
+div[data-type="thino_view"] .memo-editor-wrapper:has(#editingToolbarModalBar)
+{
+    padding-top:0;
+    padding-left:0;
+    padding-right:0;
+}
+
+div[data-type="thino_view"] .memo-editor-wrapper:has(#editingToolbarModalBar) .common-tools-wrapper
+{
+   padding-left:16px;
+    padding-right:16px;
+}
+div[data-type="thino_view"] .memo-editor-wrapper #editingToolbarModalBar ~ .cm-editor{
+    padding-top:38px;
+    padding-bottom:0px;
+    padding-left:16px;
+    padding-right:16px;
+}
+div[data-type=thino_view] .common-editor-wrapper .common-editor-inputer:has(#editingToolbarModalBar)
+{
+  min-height:118px;
+}
+
+div[data-type=thino_view] #editingToolbarModalBar.top
+{
+  position:absolute!important;
+  width: 100%;
+}
+body.auto-hide-header .workspace-tab-header-container:hover + .workspace-tab-container .workspace-leaf .workspace-leaf-content>.view-header {
+  margin-top: 0;
+  transition: all 0.1s linear;
+}
+
+body.auto-hide-header .workspace-tab-header-container + .workspace-tab-container .workspace-leaf .workspace-leaf-content>.view-header:hover {
+  margin-top: 0;
+  transition: all 0.6s linear;
+}
+body.auto-hide-header .workspace-tab-header-container + .workspace-tab-container .workspace-leaf .workspace-leaf-content>.view-header {
+  margin-top: -40px;
+  transition: all 0.6s linear;
+}
+ 
+.setting-item:is(.custom_bg, .custom_font) .pickr-container {
+  display: flex;
+  gap: 8px;
+  position: relative;
+}
+
+.setting-item:is(.custom_bg, .custom_font) .pickr-container .picker {
+  width: 32px;
+  height: 32px;
+}
+
+@media screen and (max-width: 1024px) {
+  .editing-toolbar-header {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+  }
+}
+/* 头部容器样式 */
+.editing-toolbar-header {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  margin-bottom: 1em;
+  padding: 0.5em 0;
+}
+
+/* 标题容器样式 */
+.editing-toolbar-title-container {
+  flex-shrink: 0;
+}
+
+.editing-toolbar-title {
+  margin: 0;
+}
+
+/* 信息容器样式 */
+.editing-toolbar-info {
+  display: flex;
+  align-items: center;
+  gap: 1em;
+  flex-wrap: nowrap;
+}
+
+/* 修复按钮容器样式 */
+.editing-toolbar-fix-button {
+  margin: 0;
+  padding: 0;
+  border: 0;
+}
+
+.editing-toolbar-fix-button .setting-item-control {
+  padding: 0;
+}
+
+/* 链接样式 */
+.editing-toolbar-info a {
+  color: var(--text-accent);
+  text-decoration: none;
+}
+
+.editing-toolbar-info a:hover {
+  text-decoration: underline;
+}
+
+.editing-toolbar-tabs {
+  display: flex;
+  border-bottom: 2px solid var(--background-modifier-border);
+  margin-bottom: 24px;
+  padding: 0 8px;
+}
+
+.editing-toolbar-tab {
+  display: flex;
+  align-items: center;
+  gap: 8px;
+  padding: 8px 12px;
+  cursor: pointer;
+  border-bottom: 2px solid transparent;
+  margin-bottom: -2px;
+  color: var(--text-muted);
+}
+
+.editing-toolbar-tab:hover {
+  color: var(--text-normal);
+  background-color: var(--background-modifier-hover);
+}
+
+.editing-toolbar-tab.active {
+  color: var(--text-accent);
+  border-bottom-color: var(--text-accent);
+}
+
+.editing-toolbar-content {
+  padding: 0 8px;
+}
+
+.editing-toolbar-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: 24px;
+  padding: 0 8px;
+}
+
+/* 添加到你的 styles.css 文件中 */
+@keyframes sortable-feedback {
+  0% {
+    transform: scale(1);
+  }
+  50% {
+    transform: scale(0.98);
+  }
+  100% {
+    transform: scale(1);
+  }
+}
+
+.sortable-chosen-feedback {
+  animation: sortable-feedback 0.3s ease-in-out;
+  position: relative;
+}
+
+.sortable-chosen-feedback::after {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: var(--background-modifier-hover);
+  opacity: 0;
+  animation: toolbar-fade-in 0.3s ease-in-out forwards;
+  pointer-events: none;
+  border-radius: 4px;
+}
+
+@keyframes toolbar-fade-in {
+  from {
+    opacity: 0;
+  }
+  to {
+    opacity: 0.3;
+  }
+}
+
+.insert-callout-modal textarea {
+  width: 100%;
+  resize: vertical;
+}
+
+.callout-type-container {
+  display: flex;
+  align-items: center;
+  gap: 8px;
+}
+.callout-type-container .setting-item
+{
+  width: 100%;
+}
+.callout-icon-container {
+  display: flex;
+  width: 24px;
+  height: 24px;
+  align-items: center;
+}
+
+.callout-icon-container svg {
+  width: 16px;
+  height: 16px;
+  color: rgb(var(--callout-color));
+}
+.insert-link-modal .setting-item
+{
+ border-top: none;
+}
+.insert-link-modal   input{
+     width: 100%;
+}
+.modal .insert-link-modal-title{
+  font-size: 12px;
+  color: var(--text-muted);
+}
+.insert-link-modal .preview-setting 
+{
+  display: block;
+}
+.insert-link-modal .preview-setting input{
+  width: 100%;
+  background-color: transparent;
+  border: none;
+  color: var(--text-muted);
+  font-size: 12px;
+}
+ 
+
+ .position-style-info{
+  margin-bottom: 1rem;
+  padding: 0.5rem;
+  border-radius: 4px;
+  text-align: center;
+  font-weight: bold;
+  position: sticky;
+  color: white;
+  background-color: rgba(var(--color-purple-rgb), 0.8);
+  top: 0;
+ }
+ .position-style-info.following{
+  background-color: rgba(var(--color-green-rgb), 0.8);
+ }
+ .position-style-info.fixed{
+  background-color: rgba(var(--color-blue-rgb), 0.8);
+ }
+ .position-style-info.top{
+  background-color: rgba(var(--color-yellow-rgb), 0.8);
+ }
+ 
+ .command-lists-container.following{
+  background-color: rgba(var(--color-green-rgb), 0.1);
+  border: 1px solid rgba(var(--color-green-rgb), 0.3);
+ }
+ .command-lists-container.fixed{
+  background-color: rgba(var(--color-blue-rgb), 0.1);
+  border: 1px solid rgba(var(--color-blue-rgb), 0.3);
+ }
+ .command-lists-container.top{
+  background-color: rgba(var(--color-yellow-rgb), 0.1);
+  border: 1px solid rgba(var(--color-yellow-rgb), 0.3);
+ }
+ 
+
+
+ @media screen and (max-width: 1024px) {
+  .editing-toolbar-tabs .editing-toolbar-tab:not(.active)>span {
+    display: none;
+  }
+ }
+ 
+/* 命令类型标签 */
+.command-type-badge {
+  display: inline-block;
+  padding: 2px 6px;
+  margin-left: 8px;
+  border-radius: 4px;
+  font-size: 0.8em;
+  background-color: var(--background-modifier-border);
+}
+
+.command-type-badge.regex {
+  background-color: var(--text-accent);
+  color: var(--text-on-accent);
+} 
+.custom-commands-container .command-list-container .setting-item-name {
+  display: flex;
+  gap: 8px;
+}
+.custom-commands-modal {
+ 
+  width: auto;
+  max-width: 800px;
+ 
+}
+.custom-commands-modal input {
+ 
+ width: 100%;
+ max-width: 300px;
+}
+
+.command-buttons-container {
+  background: var(--background-secondary);
+  border-radius: 5px;
+  padding: 10px;
+  margin-bottom: 15px;
+}
+
+.command-buttons-container .setting-item {
+  border: none;
+  padding: 8px 0;
+}
+
+.command-buttons-container .setting-item-control {
+  display: flex;
+  gap: 10px;
+  align-items: center;
+}
+ 
+/* 工具栏预览样式 */
+.toolbar-preview {
+  background-color: var(--editing-toolbar-background-color);
+}
+
+.toolbar-preview .clickable-icon svg {
+  color: var(--editing-toolbar-icon-color);
+  width: var(--toolbar-icon-size);
+  height: var(--toolbar-icon-size);
+}
+
+
+ .toolbar-preview-container #editingToolbarModalBar{
+  visibility:visible !important;
+  position: relative;
+ }
+
+ .confirm-modal .confirm-modal-buttons {
+  gap: 8px;
+  display: flex;
+  justify-content: flex-end;
+}
+.confirm-modal p{
+  margin: 0;
+  line-height: 1.6;
+}
+
+.modal.editing-toolbar-ai-consent-modal {
+  width: min(560px, calc(100vw - 32px));
+}
+
+.modal.editing-toolbar-text-input-modal-wide {
+  width: min(600px, calc(100vw - 40px));
+}
+
+.editing-toolbar-text-input-suggestions {
+  margin-top: 8px;
+}
+
+.editing-toolbar-text-input-suggestions-label {
+  margin-bottom: 10px;
+  color: var(--text-muted);
+  font-size: 12px;
+  font-weight: 600;
+}
+
+.editing-toolbar-text-input-suggestions-chips {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 8px;
+}
+
+.editing-toolbar-text-input-suggestion-chip {
+  padding: 7px 12px;
+  border: 1px solid var(--background-modifier-border);
+  border-radius: 999px;
+  background: var(--background-secondary);
+  color: var(--text-normal);
+  font-size: 12px;
+  line-height: 1.2;
+  cursor: pointer;
+  transition: background-color 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
+}
+
+.editing-toolbar-text-input-suggestion-chip:hover {
+  background: color-mix(in srgb, var(--interactive-accent) 12%, var(--background-secondary));
+  border-color: color-mix(in srgb, var(--interactive-accent) 30%, var(--background-modifier-border));
+  transform: translateY(-1px);
+}
+
+.editing-toolbar-text-input-field-full {
+  position: relative;
+  margin: 12px 0;
+}
+
+.editing-toolbar-text-input-field-full input,
+.editing-toolbar-text-input-field-full textarea {
+  width: 100%;
+  display: block;
+  box-sizing: border-box;
+}
+
+.editing-toolbar-text-input-linked-note-host {
+  position: relative;
+}
+
+.editing-toolbar-text-input-context {
+  margin: 8px 0 12px;
+  padding: 10px;
+  border: 1px solid var(--background-modifier-border);
+  border-radius: 12px;
+  background: var(--background-secondary);
+}
+
+.editing-toolbar-text-input-context-label {
+  margin-bottom: 8px;
+  color: var(--text-muted);
+  font-size: 12px;
+  font-weight: 600;
+}
+
+.editing-toolbar-text-input-context-item {
+  display: flex;
+  align-items: center;
+  gap: 10px;
+  padding: 6px 8px;
+  border-radius: 8px;
+}
+
+.editing-toolbar-text-input-context-item + .editing-toolbar-text-input-context-item {
+  margin-top: 4px;
+}
+
+.editing-toolbar-text-input-context-item:hover {
+  background: var(--background-modifier-hover);
+}
+
+.editing-toolbar-text-input-context-item-label {
+  flex-shrink: 0;
+  color: var(--text-accent);
+  font-weight: 500;
+}
+
+.editing-toolbar-text-input-context-item-preview {
+  min-width: 0;
+  color: var(--text-muted);
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.editing-toolbar-textarea-input {
+  width: 100%;
+  min-height: 80px;
+  resize: vertical;
+}
+
+.editing-toolbar-text-input-footer-hint {
+  margin-top: 8px;
+  color: var(--text-muted);
+  font-size: 12px;
+  line-height: 1.5;
+}
+
+.editing-toolbar-text-input-mention-dropdown {
+  position: absolute;
+  top: calc(100% + 6px);
+  left: 0;
+  right: 0;
+  z-index: 20;
+  display: none;
+  max-height: 220px;
+  overflow-y: auto;
+  border: 1px solid var(--background-modifier-border);
+  border-radius: 10px;
+  background: var(--background-primary);
+  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.18);
+}
+
+.editing-toolbar-text-input-mention-item {
+  display: flex;
+  align-items: center;
+  gap: 8px;
+  padding: 8px 10px;
+  cursor: pointer;
+}
+
+.editing-toolbar-text-input-mention-item + .editing-toolbar-text-input-mention-item {
+  border-top: 1px solid var(--background-modifier-border-hover);
+}
+
+.editing-toolbar-text-input-mention-item:hover,
+.editing-toolbar-text-input-mention-item.selected {
+  background: var(--background-modifier-hover);
+}
+
+.editing-toolbar-text-input-mention-icon {
+  flex-shrink: 0;
+}
+
+.editing-toolbar-text-input-mention-name {
+  color: var(--text-normal);
+  font-weight: 500;
+}
+
+.editing-toolbar-text-input-mention-path {
+  min-width: 0;
+  margin-left: auto;
+  color: var(--text-faint);
+  font-size: 11px;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.editing-toolbar-ai-consent {
+  display: flex;
+  flex-direction: column;
+  gap: 16px;
+  font-size: var(--font-ui-small);
+}
+
+.editing-toolbar-ai-consent-hero h2 {
+  margin: 10px 0 0;
+  font-size: 24px;
+  line-height: 1.25;
+}
+
+.editing-toolbar-ai-consent-badge {
+  display: inline-flex;
+  align-items: center;
+  padding: 6px 10px;
+  border-radius: 999px;
+  background: color-mix(in srgb, var(--interactive-accent) 14%, var(--background-secondary));
+  color: var(--interactive-accent);
+  font-size: 12px;
+  font-weight: 700;
+}
+
+.editing-toolbar-ai-consent-desc {
+  margin-top: 12px;
+  color: var(--text-muted);
+  line-height: 1.7;
+}
+
+.editing-toolbar-ai-consent-note {
+  margin-top: 12px;
+  padding: 12px 14px;
+  border: 1px solid var(--background-modifier-border);
+  border-radius: 14px;
+  background: var(--background-secondary);
+  color: var(--text-muted);
+  line-height: 1.6;
+}
+
+.editing-toolbar-ai-consent-section {
+  padding: 14px 16px;
+  border: 1px solid var(--background-modifier-border);
+  border-radius: 16px;
+  background: var(--background-secondary);
+}
+
+.editing-toolbar-ai-consent-section-title {
+  font-size: 14px;
+  font-weight: 700;
+  color: var(--text-normal);
+}
+
+.editing-toolbar-ai-consent-list {
+  display: grid;
+  gap: 10px;
+  margin-top: 12px;
+}
+
+.editing-toolbar-ai-consent-item {
+  display: flex;
+  align-items: flex-start;
+  gap: 10px;
+}
+
+.editing-toolbar-ai-consent-dot {
+  flex-shrink: 0;
+  width: 7px;
+  height: 7px;
+  margin-top: 0.55em;
+  border-radius: 999px;
+  background: var(--interactive-accent);
+  opacity: 0.9;
+}
+
+.editing-toolbar-ai-consent-text {
+  color: var(--text-muted);
+  line-height: 1.65;
+}
+
+.editing-toolbar-ai-consent-actions {
+  display: flex;
+  justify-content: flex-end;
+  gap: 8px;
+  padding-top: 4px;
+}
+.format-brush-cursor .cm-content {
+  cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024' width='18' height='18'%3E%3Cpath d='M786.285714 56.888889h121.93727A20.280889 20.280889 0 0 0 928.507937 36.591746v-16.294603A20.284952 20.284952 0 0 0 908.222984 0h-398.287238A20.280889 20.280889 0 0 0 489.650794 20.297143v16.294603A20.284952 20.284952 0 0 0 509.935746 56.888889H635.936508v910.222222h-126.000762A20.280889 20.280889 0 0 0 489.650794 987.408254v16.294603a20.284952 20.284952 0 0 0 20.284952 20.297143h398.287238a20.280889 20.280889 0 0 0 20.284953-20.297143v-16.294603a20.284952 20.284952 0 0 0-20.284953-20.297143H786.285714V56.888889zM359.619048 903.233016H310.857143V690.793651H266.15873v213.577143H217.396825V690.793651H172.698413v213.577143h-29.415619c-49.290159 0-42.573206-44.901587-42.573207-44.901588S97.076825 722.306032 97.10527 642.031746H480.467302c-0.008127 80.428698-3.604317 216.299683-3.604318 216.299683s6.716952 44.901587-42.57727 44.901587H404.31746V690.793651H359.619048v212.439365zM97.828571 597.333333l0.065016-1.235301c2.816-50.704254-5.640127-98.588444 66.186159-123.936508 71.830349-25.35619 47.896381-35.210159 54.934349-83.098413 7.037968-47.88419-18.310095-71.826286-18.310095-207.034921 0-109.04381 51.301587-125.456254 79.766349-127.723682 0.353524-0.934603 0.723302-1.414095 1.113397-1.414095 16.420571 0 95.288889-7.200508 95.288889 128 0 135.208635-25.348063 159.15073-18.314159 207.03492 7.037968 47.888254-16.891937 57.742222 54.938413 83.098413 71.822222 25.348063 63.370159 73.236317 66.186159 123.936508l0.121904 2.373079H97.824508zM288.507937 166.603175a34.539683 34.539683 0 1 0 0-69.079365 34.539683 34.539683 0 0 0 0 69.079365z' fill='%235c5c5c'/%3E%3C/svg%3E") 16 16, auto;
+}
+.format-brush-cursor button[aria-label="Format Brush"]
+{
+    background-color: var(--background-modifier-hover) !important ;
+}
+
+.theme-dark.format-brush-cursor .cm-content {
+  cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024' width='18' height='18'%3E%3Cpath d='M786.285714 56.888889h121.93727A20.280889 20.280889 0 0 0 928.507937 36.591746v-16.294603A20.284952 20.284952 0 0 0 908.222984 0h-398.287238A20.280889 20.280889 0 0 0 489.650794 20.297143v16.294603A20.284952 20.284952 0 0 0 509.935746 56.888889H635.936508v910.222222h-126.000762A20.280889 20.280889 0 0 0 489.650794 987.408254v16.294603a20.284952 20.284952 0 0 0 20.284952 20.297143h398.287238a20.280889 20.280889 0 0 0 20.284953-20.297143v-16.294603a20.284952 20.284952 0 0 0-20.284953-20.297143H786.285714V56.888889zM359.619048 903.233016H310.857143V690.793651H266.15873v213.577143H217.396825V690.793651H172.698413v213.577143h-29.415619c-49.290159 0-42.573206-44.901587-42.573207-44.901588S97.076825 722.306032 97.10527 642.031746H480.467302c-0.008127 80.428698-3.604317 216.299683-3.604318 216.299683s6.716952 44.901587-42.57727 44.901587H404.31746V690.793651H359.619048v212.439365zM97.828571 597.333333l0.065016-1.235301c2.816-50.704254-5.640127-98.588444 66.186159-123.936508 71.830349-25.35619 47.896381-35.210159 54.934349-83.098413 7.037968-47.88419-18.310095-71.826286-18.310095-207.034921 0-109.04381 51.301587-125.456254 79.766349-127.723682 0.353524-0.934603 0.723302-1.414095 1.113397-1.414095 16.420571 0 95.288889-7.200508 95.288889 128 0 135.208635-25.348063 159.15073-18.314159 207.03492 7.037968 47.888254-16.891937 57.742222 54.938413 83.098413 71.822222 25.348063 63.370159 73.236317 66.186159 123.936508l0.121904 2.373079H97.824508zM288.507937 166.603175a34.539683 34.539683 0 1 0 0-69.079365 34.539683 34.539683 0 0 0 0 69.079365z' fill='%23dadada'/%3E%3C/svg%3E") 16 16, auto;
+}
+
+/* 1) TOP – full-width bar at the top of its box */
+.preview-toolbar-wrapper.preview-top #editingToolbarModalBar {
+  width: 100%;
+  position: center;
+  border-radius: var(--radius-m);
+}
+
+
+/* 2) FOLLOWING – small floating pill in the middle */
+.preview-toolbar-wrapper.preview-following {
+  display: flex;
+  justify-content: center;
+}
+.preview-toolbar-wrapper.preview-following #editingToolbarModalBar {
+  position: center;
+  justify-content: center;
+  width: 0;
+  border-radius: var(--radius-m);
+}
+
+
+/* 3) FIXED – compact grid at the bottom */
+.preview-toolbar-wrapper.preview-fixed {
+  display: flex;
+  justify-content: center;
+}
+.preview-toolbar-wrapper.preview-fixed #editingToolbarModalBar {
+  margin: 8px auto 8px auto;
+  align-self: flex-end;
+  border-radius: var(--radius-m);
+}
+/* 3) FIXED – For Mobile */
+
+.is-phone.is-hidden-nav #editingToolbarModalBar.top
+{
+    margin-top: calc(var(--safe-area-inset-top) );
+  
+}
+
+.is-phone:not(.is-hidden-nav) #editingToolbarModalBar.top
+{
+    margin-top: calc(var(--safe-area-inset-top) + var(--view-header-height));
+  
+}
+.is-phone #editingToolbarModalBar.top
+{
+    margin-right:0px;  
+    padding:0;
+}
+
+ 
+.is-phone #editingToolbarModalBar.top::-webkit-scrollbar {
+  display: none;
+}
+
+ 
+
+.is-phone .mod-root .workspace-leaf-content[data-type="markdown"] .view-content:has(.editingToolbarModalBar){
+  mask-image: none;
+} 
+
+ 
+.is-mobile.is-hidden-nav .mod-root .workspace-leaf-content[data-type="markdown"]:has(.editingToolbarModalBar) .view-header
+{
+
+    display:none;
+}
+
+ 
+
+.is-phone .markdown-source-view.mod-cm6 #editingToolbarPopoverBar {
+    /* margin-top: calc(var(--toolbar-icon-size) + var(--view-header-height) + 20px); */
+     margin-top: calc(var(--safe-area-inset-top) + var(--view-header-height) + var(--toolbar-icon-size) + 10px);
+}
+
+.is-phone .mod-root .workspace-leaf-content .view-content:has(.editingToolbarModalBar) .markdown-source-view > .cm-editor > .cm-scroller {
+  padding-top: 0px;
+}
+ 
+
+.is-phone .mod-root .workspace-leaf-content .view-content:has(.editingToolbarModalBar) .markdown-reading-view > .markdown-preview-view
+ {
+  padding-top: calc(var(--safe-area-inset-top) + var(--view-header-height) + 36px);
+}
+
+@keyframes cm-ai-fade-in {
+  from {
+    opacity: 0;
+    transform: translateY(4px);
+  }
+  to {
+    opacity: 1;
+    transform: translateY(0);
+  }
+}
+
+@keyframes cm-ai-spin {
+  from {
+    transform: rotate(0deg);
+  }
+  to {
+    transform: rotate(360deg);
+  }
+}
+
+@keyframes cm-ai-pill-breathe {
+  0%, 100% {
+    transform: translateY(0);
+    box-shadow: 0 6px 20px color-mix(in srgb, var(--interactive-accent) 8%, transparent), inset 0 1px 0 color-mix(in srgb, white 18%, transparent);
+  }
+  50% {
+    transform: translateY(-0.5px);
+    box-shadow: 0 10px 28px color-mix(in srgb, var(--interactive-accent) 14%, transparent), 0 0 0 1px color-mix(in srgb, var(--interactive-accent) 10%, transparent), inset 0 1px 0 color-mix(in srgb, white 26%, transparent);
+  }
+}
+
+@keyframes cm-ai-breathe {
+  0%, 100% {
+    transform: scale(0.88);
+    opacity: 0.72;
+  }
+  50% {
+    transform: scale(1.05);
+    opacity: 1;
+  }
+}
+
+@keyframes cm-ai-toolbar-breathe {
+  0%, 100% {
+    transform: scale(0.9);
+    opacity: 0.78;
+  }
+  50% {
+    transform: scale(1.06);
+    opacity: 1;
+  }
+}
+
+@keyframes cm-ai-toolbar-glow {
+  0%, 100% {
+    opacity: 0.62;
+    transform: scale(0.985);
+  }
+  50% {
+    opacity: 1;
+    transform: scale(1.015);
+  }
+}
+
+@keyframes cm-ai-glow {
+  0%, 100% {
+    transform: scale(0.9);
+    opacity: 0.24;
+  }
+  50% {
+    transform: scale(1.28);
+    opacity: 0.56;
+  }
+}
+
+@keyframes cm-ai-label-breathe {
+  0%, 100% {
+    opacity: 0.78;
+  }
+  50% {
+    opacity: 1;
+  }
+}
+
+@keyframes cm-ai-sheen {
+  0% {
+    transform: translateX(-140%) skewX(-24deg);
+    opacity: 0;
+  }
+  18% {
+    opacity: 0;
+  }
+  38% {
+    opacity: 0.62;
+  }
+  58% {
+    opacity: 0;
+  }
+  100% {
+    transform: translateX(180%) skewX(-24deg);
+    opacity: 0;
+  }
+}
+
+ 
+.cm-tooltip {
+  z-index: 1000;
+}
+
+.editing-toolbar-ai-grid {
+  display: grid;
+  gap: 16px;
+}
+
+.editing-toolbar-ai-card {
+  background: var(--background-secondary);
+  border: 1px solid var(--background-modifier-border);
+  border-radius: 16px;
+  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.04);
+  overflow: hidden;
+}
+
+.editing-toolbar-ai-card-summary {
+  list-style: none;
+  cursor: pointer;
+  padding: 16px 18px;
+}
+
+.editing-toolbar-ai-card-summary::-webkit-details-marker {
+  display: none;
+}
+
+.editing-toolbar-ai-card-summary-static {
+  cursor: default;
+}
+
+.editing-toolbar-ai-card-header {
+  display: flex;
+  align-items: flex-start;
+  justify-content: space-between;
+  gap: 12px;
+}
+
+.editing-toolbar-ai-card-copy {
+  min-width: 0;
+}
+
+.editing-toolbar-ai-card-title {
+  font-size: 15px;
+  font-weight: 700;
+  color: var(--text-normal);
+}
+
+.editing-toolbar-ai-card-desc {
+  margin-top: 6px;
+  font-size: 13px;
+  line-height: 1.6;
+  color: var(--text-muted);
+}
+
+.editing-toolbar-ai-card-badge {
+  flex-shrink: 0;
+  padding: 4px 10px;
+  border-radius: 999px;
+  background: var(--background-modifier-hover);
+  color: var(--text-muted);
+  font-size: 12px;
+  font-weight: 600;
+}
+
+.editing-toolbar-ai-card-toggle {
+  flex-shrink: 0;
+}
+
+.editing-toolbar-ai-card-header-select {
+  flex-shrink: 0;
+  font-size: 12px;
+  padding: 3px 8px;
+  border-radius: 6px;
+  border: 1px solid var(--background-modifier-border);
+  
+  color: var(--text-normal);
+  cursor: pointer;
+}
+
+.editing-toolbar-ai-card-body {
+  padding: 0 18px 16px;
+}
+
+.editing-toolbar-ai-disclosure[open] .editing-toolbar-ai-card-summary {
+  border-bottom: 1px solid var(--background-modifier-border);
+}
+
+.editing-toolbar-ai-card .setting-item {
+  border-top: 1px solid var(--background-modifier-border-hover);
+  padding-top: 14px;
+  padding-bottom: 14px;
+}
+
+.editing-toolbar-ai-card .setting-item:first-child {
+  border-top: none;
+}
+
+.editing-toolbar-ai-note {
+  margin-top: 8px;
+  font-size: 12px;
+  line-height: 1.6;
+  color: var(--text-muted);
+}
+
+.editing-toolbar-ai-inline-disclosure {
+  margin-top: 12px;
+  border-top: 1px solid var(--background-modifier-border-hover);
+}
+
+.editing-toolbar-ai-inline-summary {
+  cursor: pointer;
+  padding: 12px 0 4px;
+  font-size: 13px;
+  font-weight: 600;
+  color: var(--text-muted);
+  list-style: none;
+}
+
+.editing-toolbar-ai-inline-summary::-webkit-details-marker {
+  display: none;
+}
+
+.editing-toolbar-ai-inline-body .setting-item {
+  border-top: 1px solid var(--background-modifier-border-hover);
+}

+ 32 - 0
.obsidian/plugins/obsidian-custom-attachment-location/data.json

@@ -0,0 +1,32 @@
+{
+  "attachmentFolderPath": "./assets/${noteFileName}",
+  "attachmentRenameMode": "Only pasted images",
+  "collectAttachmentUsedByMultipleNotesMode": "Skip",
+  "collectedAttachmentFileName": "",
+  "convertImagesToJpegMode": "None",
+  "customTokensStr": "",
+  "defaultImageSize": "",
+  "defaultImageSizeDimension": "width",
+  "duplicateNameSeparator": " ",
+  "emptyFolderBehavior": "DeleteWithEmptyParents",
+  "excludePaths": [],
+  "excludePathsFromAttachmentCollecting": [],
+  "generatedAttachmentFileName": "file-${date:{momentJsFormat:'YYYYMMDDHHmmssSSS'}}",
+  "includePaths": [],
+  "jpegQuality": 0.8,
+  "markdownUrlFormat": "",
+  "moveAttachmentToProperFolderUsedByMultipleNotesMode": "CopyAll",
+  "renamedAttachmentFileName": "",
+  "shouldDeleteOrphanAttachments": false,
+  "shouldHandleRenames": true,
+  "shouldRenameAttachmentFiles": false,
+  "shouldRenameAttachmentFolder": true,
+  "shouldRenameCollectedAttachments": false,
+  "specialCharacters": "#^[]|*\\<>:?/",
+  "specialCharactersReplacement": "-",
+  "timeoutInSeconds": 5,
+  "treatAsAttachmentExtensions": [
+    ".excalidraw.md"
+  ],
+  "version": "10.3.7"
+}

Разлика између датотеке није приказан због своје велике величине
+ 92 - 0
.obsidian/plugins/obsidian-custom-attachment-location/main.js


+ 11 - 0
.obsidian/plugins/obsidian-custom-attachment-location/manifest.json

@@ -0,0 +1,11 @@
+{
+  "id": "obsidian-custom-attachment-location",
+  "name": "Custom Attachment Location",
+  "version": "10.3.7",
+  "minAppVersion": "1.12.7",
+  "description": "Customize attachment location with variables(${noteFileName}, ${date:format}, etc) like typora.",
+  "author": "mnaoumov (created by RainCat1998)",
+  "authorUrl": "https://github.com/mnaoumov/",
+  "isDesktopOnly": false,
+  "fundingUrl": "https://www.buymeacoffee.com/mnaoumov"
+}

+ 1 - 0
.obsidian/plugins/obsidian-custom-attachment-location/styles.css

@@ -0,0 +1 @@
+.obsidian-custom-attachment-location.obsidian-dev-utils.code-highlighter-component textarea.tokenized-string-setting-control{height:6em}.obsidian-custom-attachment-location.obsidian-dev-utils.multiple-text-component textarea{height:6em;width:20em}.obsidian-custom-attachment-location.obsidian-dev-utils.code-highlighter-component textarea.custom-tokens-setting-control{height:18em;width:36em}.obsidian-custom-attachment-location.prompt-modal .cancel-button{margin-right:10px}.obsidian-custom-attachment-location.preview-modal .preview-container{overflow:auto}.obsidian-custom-attachment-location.preview-modal .preview-container.image-embed img,.obsidian-custom-attachment-location.preview-modal .preview-container.video-embed video{max-width:100%;max-height:100%;object-fit:contain}.obsidian-custom-attachment-location .highlighted-token{color:var(--text-accent)}.obsidian-custom-attachment-location .default-image-size-dimension-setting-control{margin-left:5px}

+ 1083 - 0
.obsidian/plugins/obsidian-excalidraw-plugin/data.json

@@ -0,0 +1,1083 @@
+{
+  "showTabTitlebarButtons": true,
+  "copyLinkToElemenetAnchorTo100": false,
+  "copyFrameLinkByName": false,
+  "disableDoubleClickTextEditing": false,
+  "phoneFooterSafeAreaPadding": false,
+  "folder": "Excalidraw",
+  "cropFolder": "",
+  "annotateFolder": "",
+  "embedUseExcalidrawFolder": false,
+  "templateFilePath": "Excalidraw/Template.excalidraw",
+  "scriptFolderPath": "Excalidraw/Scripts",
+  "fontAssetsPath": "Excalidraw/CJK Fonts",
+  "loadChineseFonts": false,
+  "loadJapaneseFonts": false,
+  "loadKoreanFonts": false,
+  "compress": true,
+  "decompressForMDView": false,
+  "onceOffCompressFlagReset": true,
+  "onceOffGPTVersionReset": true,
+  "autosave": true,
+  "autosaveIntervalDesktop": 60000,
+  "autosaveIntervalMobile": 30000,
+  "drawingFilenamePrefix": "Drawing ",
+  "drawingEmbedPrefixWithFilename": true,
+  "drawingFilnameEmbedPostfix": " ",
+  "drawingFilenameDateTime": "YYYY-MM-DD HH.mm.ss",
+  "useExcalidrawExtension": true,
+  "cropSuffix": "",
+  "cropPrefix": "cropped_",
+  "annotateSuffix": "",
+  "annotatePrefix": "annotated_",
+  "annotatePreserveSize": false,
+  "displaySVGInPreview": false,
+  "previewImageType": "SVG",
+  "renderingConcurrency": 3,
+  "imageCacheRetentionDays": 30,
+  "allowImageCache": true,
+  "allowImageCacheInScene": true,
+  "displayExportedImageIfAvailable": false,
+  "previewMatchObsidianTheme": false,
+  "width": "400",
+  "height": "",
+  "overrideObsidianFontSize": false,
+  "dynamicStyling": "colorful",
+  "isLeftHanded": false,
+  "desktopUIMode": "tray",
+  "tabletUIMode": "compact",
+  "phoneUIMode": "mobile",
+  "iframeMatchExcalidrawTheme": true,
+  "matchTheme": false,
+  "matchThemeAlways": false,
+  "matchThemeTrigger": false,
+  "defaultMode": "normal",
+  "defaultPenMode": "never",
+  "penModeDoubleTapEraser": true,
+  "penModeSingleFingerPanning": true,
+  "penModeCrosshairVisible": true,
+  "panWithRightMouseButton": false,
+  "renderImageInMarkdownReadingMode": false,
+  "renderImageInHoverPreviewForMDNotes": false,
+  "renderImageInMarkdownToPDF": false,
+  "allowPinchZoom": false,
+  "allowWheelZoom": false,
+  "zoomToFitOnOpen": true,
+  "zoomToFitOnResize": false,
+  "zoomToFitMaxLevel": 2,
+  "zoomStep": 0.05,
+  "zoomMin": 0.1,
+  "zoomMax": 30,
+  "linkPrefix": "",
+  "urlPrefix": "",
+  "parseTODO": false,
+  "todo": "☐",
+  "done": "🗹",
+  "hoverPreviewWithoutCTRL": false,
+  "linkOpacity": 1,
+  "openInAdjacentPane": true,
+  "showSecondOrderLinks": true,
+  "focusOnFileTab": true,
+  "openInMainWorkspace": true,
+  "showLinkBrackets": false,
+  "syncElementLinkWithText": false,
+  "allowCtrlClick": true,
+  "forceWrap": false,
+  "pageTransclusionCharLimit": 200,
+  "wordWrappingDefault": 0,
+  "removeTransclusionQuoteSigns": true,
+  "oEmbedAllowed": false,
+  "pngExportScale": 1,
+  "exportWithTheme": true,
+  "exportWithBackground": true,
+  "exportPaddingSVG": 10,
+  "exportEmbedScene": false,
+  "keepInSync": false,
+  "autoexportSVG": false,
+  "autoexportPNG": false,
+  "autoExportLightAndDark": false,
+  "autoexportExcalidraw": false,
+  "embedType": "excalidraw",
+  "embedMarkdownCommentLinks": true,
+  "embedWikiLink": true,
+  "embedPlaceholderImage": true,
+  "syncExcalidraw": false,
+  "experimentalFileType": false,
+  "experimentalFileTag": "✏️",
+  "experimentalLivePreview": true,
+  "fadeOutExcalidrawMarkup": false,
+  "loadPropertySuggestions": false,
+  "experimentalEnableFourthFont": false,
+  "experimantalFourthFont": "Virgil",
+  "addDummyTextElement": false,
+  "zoteroCompatibility": false,
+  "fieldSuggester": true,
+  "enableOnloadScripts": false,
+  "enableCommandLinks": false,
+  "compatibilityMode": false,
+  "drawingOpenCount": 0,
+  "library": "deprecated",
+  "library2": {
+    "type": "excalidrawlib",
+    "version": 2,
+    "source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag2.23.12",
+    "libraryItems": []
+  },
+  "imageElementNotice": true,
+  "mdSVGwidth": 500,
+  "mdSVGmaxHeight": 800,
+  "mdFont": "Cascadia",
+  "mdFontColor": "Black",
+  "mdBorderColor": "Black",
+  "mdCSS": "",
+  "scriptEngineSettings": {},
+  "previousRelease": "2.23.12",
+  "showReleaseNotes": true,
+  "excalidrawMasteryPromoCollapsed": false,
+  "compareManifestToPluginVersion": true,
+  "showNewVersionNotification": true,
+  "latexBoilerplate": "\\color{green}e=mc^2",
+  "latexPreambleLocation": "preamble.sty",
+  "taskboneEnabled": false,
+  "taskboneAPIkey": "",
+  "pinnedScripts": [],
+  "sidepanelTabs": [],
+  "customPens": [
+    {
+      "type": "default",
+      "freedrawOnly": false,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "fillStyle": "hachure",
+      "strokeWidth": 0,
+      "roughness": 0,
+      "penOptions": {
+        "highlighter": false,
+        "constantPressure": false,
+        "hasOutline": false,
+        "outlineWidth": 1,
+        "options": {
+          "thinning": 0.6,
+          "smoothing": 0.5,
+          "streamline": 0.5,
+          "easing": "easeOutSine",
+          "start": {
+            "cap": true,
+            "taper": 0,
+            "easing": "linear"
+          },
+          "end": {
+            "cap": true,
+            "taper": 0,
+            "easing": "linear"
+          }
+        }
+      }
+    },
+    {
+      "type": "highlighter",
+      "freedrawOnly": true,
+      "strokeColor": "#FFC47C",
+      "backgroundColor": "#FFC47C",
+      "fillStyle": "solid",
+      "strokeWidth": 2,
+      "roughness": null,
+      "penOptions": {
+        "highlighter": true,
+        "constantPressure": true,
+        "hasOutline": true,
+        "outlineWidth": 4,
+        "options": {
+          "thinning": 1,
+          "smoothing": 0.5,
+          "streamline": 0.5,
+          "easing": "linear",
+          "start": {
+            "taper": 0,
+            "cap": true,
+            "easing": "linear"
+          },
+          "end": {
+            "taper": 0,
+            "cap": true,
+            "easing": "linear"
+          }
+        }
+      }
+    },
+    {
+      "type": "finetip",
+      "freedrawOnly": false,
+      "strokeColor": "#3E6F8D",
+      "backgroundColor": "transparent",
+      "fillStyle": "hachure",
+      "strokeWidth": 0.5,
+      "roughness": 0,
+      "penOptions": {
+        "highlighter": false,
+        "hasOutline": false,
+        "outlineWidth": 1,
+        "constantPressure": true,
+        "options": {
+          "smoothing": 0.4,
+          "thinning": -0.5,
+          "streamline": 0.4,
+          "easing": "linear",
+          "start": {
+            "taper": 5,
+            "cap": false,
+            "easing": "linear"
+          },
+          "end": {
+            "taper": 5,
+            "cap": false,
+            "easing": "linear"
+          }
+        }
+      }
+    },
+    {
+      "type": "fountain",
+      "freedrawOnly": false,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "fillStyle": "hachure",
+      "strokeWidth": 2,
+      "roughness": 0,
+      "penOptions": {
+        "highlighter": false,
+        "constantPressure": false,
+        "hasOutline": false,
+        "outlineWidth": 1,
+        "options": {
+          "smoothing": 0.2,
+          "thinning": 0.6,
+          "streamline": 0.2,
+          "easing": "easeInOutSine",
+          "start": {
+            "taper": 150,
+            "cap": true,
+            "easing": "linear"
+          },
+          "end": {
+            "taper": 1,
+            "cap": true,
+            "easing": "linear"
+          }
+        }
+      }
+    },
+    {
+      "type": "marker",
+      "freedrawOnly": true,
+      "strokeColor": "#B83E3E",
+      "backgroundColor": "#FF7C7C",
+      "fillStyle": "dashed",
+      "strokeWidth": 2,
+      "roughness": 3,
+      "penOptions": {
+        "highlighter": false,
+        "constantPressure": true,
+        "hasOutline": true,
+        "outlineWidth": 4,
+        "options": {
+          "thinning": 1,
+          "smoothing": 0.5,
+          "streamline": 0.5,
+          "easing": "linear",
+          "start": {
+            "taper": 0,
+            "cap": true,
+            "easing": "linear"
+          },
+          "end": {
+            "taper": 0,
+            "cap": true,
+            "easing": "linear"
+          }
+        }
+      }
+    },
+    {
+      "type": "thick-thin",
+      "freedrawOnly": true,
+      "strokeColor": "#CECDCC",
+      "backgroundColor": "transparent",
+      "fillStyle": "hachure",
+      "strokeWidth": 0,
+      "roughness": null,
+      "penOptions": {
+        "highlighter": true,
+        "constantPressure": true,
+        "hasOutline": false,
+        "outlineWidth": 1,
+        "options": {
+          "thinning": 1,
+          "smoothing": 0.5,
+          "streamline": 0.5,
+          "easing": "linear",
+          "start": {
+            "taper": 0,
+            "cap": true,
+            "easing": "linear"
+          },
+          "end": {
+            "cap": true,
+            "taper": true,
+            "easing": "linear"
+          }
+        }
+      }
+    },
+    {
+      "type": "thin-thick-thin",
+      "freedrawOnly": true,
+      "strokeColor": "#CECDCC",
+      "backgroundColor": "transparent",
+      "fillStyle": "hachure",
+      "strokeWidth": 0,
+      "roughness": null,
+      "penOptions": {
+        "highlighter": true,
+        "constantPressure": true,
+        "hasOutline": false,
+        "outlineWidth": 1,
+        "options": {
+          "thinning": 1,
+          "smoothing": 0.5,
+          "streamline": 0.5,
+          "easing": "linear",
+          "start": {
+            "cap": true,
+            "taper": true,
+            "easing": "linear"
+          },
+          "end": {
+            "cap": true,
+            "taper": true,
+            "easing": "linear"
+          }
+        }
+      }
+    },
+    {
+      "type": "default",
+      "freedrawOnly": false,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "fillStyle": "hachure",
+      "strokeWidth": 0,
+      "roughness": 0,
+      "penOptions": {
+        "highlighter": false,
+        "constantPressure": false,
+        "hasOutline": false,
+        "outlineWidth": 1,
+        "options": {
+          "thinning": 0.6,
+          "smoothing": 0.5,
+          "streamline": 0.5,
+          "easing": "easeOutSine",
+          "start": {
+            "cap": true,
+            "taper": 0,
+            "easing": "linear"
+          },
+          "end": {
+            "cap": true,
+            "taper": 0,
+            "easing": "linear"
+          }
+        }
+      }
+    },
+    {
+      "type": "default",
+      "freedrawOnly": false,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "fillStyle": "hachure",
+      "strokeWidth": 0,
+      "roughness": 0,
+      "penOptions": {
+        "highlighter": false,
+        "constantPressure": false,
+        "hasOutline": false,
+        "outlineWidth": 1,
+        "options": {
+          "thinning": 0.6,
+          "smoothing": 0.5,
+          "streamline": 0.5,
+          "easing": "easeOutSine",
+          "start": {
+            "cap": true,
+            "taper": 0,
+            "easing": "linear"
+          },
+          "end": {
+            "cap": true,
+            "taper": 0,
+            "easing": "linear"
+          }
+        }
+      }
+    },
+    {
+      "type": "default",
+      "freedrawOnly": false,
+      "strokeColor": "#000000",
+      "backgroundColor": "transparent",
+      "fillStyle": "hachure",
+      "strokeWidth": 0,
+      "roughness": 0,
+      "penOptions": {
+        "highlighter": false,
+        "constantPressure": false,
+        "hasOutline": false,
+        "outlineWidth": 1,
+        "options": {
+          "thinning": 0.6,
+          "smoothing": 0.5,
+          "streamline": 0.5,
+          "easing": "easeOutSine",
+          "start": {
+            "cap": true,
+            "taper": 0,
+            "easing": "linear"
+          },
+          "end": {
+            "cap": true,
+            "taper": 0,
+            "easing": "linear"
+          }
+        }
+      }
+    }
+  ],
+  "numberOfCustomPens": 0,
+  "pdfScale": 4,
+  "pdfBorderBox": true,
+  "pdfFrame": false,
+  "pdfGapSize": 20,
+  "pdfGroupPages": false,
+  "pdfLockAfterImport": true,
+  "pdfNumColumns": 1,
+  "pdfNumRows": 1,
+  "pdfDirection": "right",
+  "pdfImportScale": 0.3,
+  "gridSettings": {
+    "DYNAMIC_COLOR": true,
+    "COLOR": "#000000",
+    "OPACITY": 50,
+    "GRID_DIRECTION": {
+      "horizontal": true,
+      "vertical": true
+    }
+  },
+  "laserSettings": {
+    "DECAY_LENGTH": 50,
+    "DECAY_TIME": 1000,
+    "COLOR": "#ff0000"
+  },
+  "embeddableMarkdownDefaults": {
+    "useObsidianDefaults": false,
+    "backgroundMatchCanvas": false,
+    "backgroundMatchElement": true,
+    "backgroundColor": "#fff",
+    "backgroundOpacity": 60,
+    "borderMatchElement": true,
+    "borderColor": "#fff",
+    "borderOpacity": 0,
+    "filenameVisible": false
+  },
+  "markdownNodeOneClickEditing": false,
+  "canvasImmersiveEmbed": true,
+  "startupScriptPath": "",
+  "aiEnabled": true,
+  "aiVerboseLogging": false,
+  "aiProviderProfiles": {
+    "OpenAI": {
+      "provider": "openai",
+      "apiKey": "",
+      "baseURL": "https://api.openai.com/v1"
+    },
+    "Anthropic": {
+      "provider": "anthropic",
+      "apiKey": "",
+      "baseURL": "https://api.anthropic.com/v1"
+    },
+    "Google Gemini": {
+      "provider": "google",
+      "apiKey": "",
+      "baseURL": "https://generativelanguage.googleapis.com/v1beta"
+    },
+    "xAI": {
+      "provider": "xai",
+      "apiKey": "",
+      "baseURL": "https://api.x.ai/v1"
+    },
+    "OpenAI-compatible": {
+      "provider": "openai-compatible",
+      "apiKey": "",
+      "baseURL": "https://api.openai.com/v1"
+    }
+  },
+  "aiTextModelConfigs": {
+    "gpt-5-mini": {
+      "providerId": "OpenAI",
+      "model": "gpt-5-mini",
+      "endpoint": "",
+      "multimodalSupport": true
+    },
+    "claude-sonnet-4-5": {
+      "providerId": "Anthropic",
+      "model": "claude-sonnet-4-5",
+      "endpoint": "",
+      "multimodalSupport": true
+    },
+    "gemini-2.5-pro": {
+      "providerId": "Google Gemini",
+      "model": "gemini-2.5-pro",
+      "endpoint": "",
+      "multimodalSupport": true
+    },
+    "grok-4-fast": {
+      "providerId": "xAI",
+      "model": "grok-4-fast",
+      "endpoint": "",
+      "multimodalSupport": true
+    }
+  },
+  "aiImageModelConfigs": {
+    "dall-e-2": {
+      "providerId": "OpenAI",
+      "model": "dall-e-2",
+      "supportedSizes": [
+        "256x256",
+        "512x512",
+        "1024x1024"
+      ],
+      "supportsPromptImageTransforms": true,
+      "supportsMaskImageEdits": true
+    },
+    "dall-e-3": {
+      "providerId": "OpenAI",
+      "model": "dall-e-3",
+      "supportedSizes": [
+        "1024x1024",
+        "1792x1024",
+        "1024x1792"
+      ],
+      "supportsPromptImageTransforms": false,
+      "supportsMaskImageEdits": false
+    },
+    "gpt-image-1": {
+      "providerId": "OpenAI",
+      "model": "gpt-image-1",
+      "supportedSizes": [
+        "1024x1024",
+        "1536x1024",
+        "1024x1536"
+      ],
+      "supportsPromptImageTransforms": true,
+      "supportsMaskImageEdits": true
+    },
+    "gpt-image-1-mini": {
+      "providerId": "OpenAI",
+      "model": "gpt-image-1-mini",
+      "supportedSizes": [
+        "1024x1024",
+        "1536x1024",
+        "1024x1536"
+      ],
+      "supportsPromptImageTransforms": true,
+      "supportsMaskImageEdits": true
+    },
+    "gpt-image-1.5": {
+      "providerId": "OpenAI",
+      "model": "gpt-image-1.5",
+      "supportedSizes": [
+        "1024x1024",
+        "1536x1024",
+        "1024x1536"
+      ],
+      "supportsPromptImageTransforms": true,
+      "supportsMaskImageEdits": true
+    },
+    "gpt-image-2": {
+      "providerId": "OpenAI",
+      "model": "gpt-image-2",
+      "supportedSizes": [
+        "1024x1024",
+        "1536x1024",
+        "1024x1536",
+        "2048x2048"
+      ],
+      "supportsPromptImageTransforms": true,
+      "supportsMaskImageEdits": true
+    },
+    "gemini-2.5-flash-image": {
+      "providerId": "Google Gemini",
+      "model": "gemini-2.5-flash-image",
+      "supportedSizes": [
+        "1024x1024",
+        "848x1264",
+        "1264x848",
+        "896x1200",
+        "1200x896",
+        "928x1152",
+        "1152x928",
+        "768x1376",
+        "1376x768",
+        "1584x672"
+      ],
+      "supportsPromptImageTransforms": true,
+      "supportsMaskImageEdits": false
+    },
+    "gemini-3.1-flash-image-preview": {
+      "providerId": "Google Gemini",
+      "model": "gemini-3.1-flash-image-preview",
+      "supportedSizes": [
+        "512x512",
+        "1024x1024",
+        "2048x2048",
+        "4096x4096",
+        "424x632",
+        "848x1264",
+        "1696x2528",
+        "3392x5056",
+        "632x424",
+        "1264x848",
+        "2528x1696",
+        "5056x3392",
+        "448x600",
+        "896x1200",
+        "1792x2400",
+        "3584x4800",
+        "600x448",
+        "1200x896",
+        "2400x1792",
+        "4800x3584",
+        "464x576",
+        "928x1152",
+        "1856x2304",
+        "3712x4608",
+        "576x464",
+        "1152x928",
+        "2304x1856",
+        "4608x3712",
+        "384x688",
+        "768x1376",
+        "1536x2752",
+        "3072x5504",
+        "688x384",
+        "1376x768",
+        "2752x1536",
+        "5504x3072",
+        "792x168",
+        "1584x672",
+        "3168x1344",
+        "6336x2688",
+        "256x1024",
+        "512x2048",
+        "1024x4096",
+        "2048x8192",
+        "192x1536",
+        "384x3072",
+        "768x6144",
+        "1536x12288",
+        "1024x256",
+        "2048x512",
+        "4096x1024",
+        "8192x2048",
+        "1536x192",
+        "3072x384",
+        "6144x768",
+        "12288x1536"
+      ],
+      "supportsPromptImageTransforms": true,
+      "supportsMaskImageEdits": false
+    },
+    "gemini-3-pro-image-preview": {
+      "providerId": "Google Gemini",
+      "model": "gemini-3-pro-image-preview",
+      "supportedSizes": [
+        "1024x1024",
+        "2048x2048",
+        "4096x4096",
+        "848x1264",
+        "1696x2528",
+        "3392x5056",
+        "1264x848",
+        "2528x1696",
+        "5056x3392",
+        "896x1200",
+        "1792x2400",
+        "3584x4800",
+        "1200x896",
+        "2400x1792",
+        "4800x3584",
+        "928x1152",
+        "1856x2304",
+        "3712x4608",
+        "1152x928",
+        "2304x1856",
+        "4608x3712",
+        "768x1376",
+        "1536x2752",
+        "3072x5504",
+        "1376x768",
+        "2752x1536",
+        "5504x3072",
+        "1584x672",
+        "3168x1344",
+        "6336x2688"
+      ],
+      "supportsPromptImageTransforms": true,
+      "supportsMaskImageEdits": false
+    },
+    "grok-imagine-image-quality": {
+      "providerId": "xAI",
+      "model": "grok-imagine-image-quality",
+      "supportedSizes": [
+        "1024x1024"
+      ],
+      "supportsPromptImageTransforms": true,
+      "supportsMaskImageEdits": false
+    },
+    "grok-imagine-image-pro": {
+      "providerId": "xAI",
+      "model": "grok-imagine-image-pro",
+      "supportedSizes": [
+        "1024x1024"
+      ],
+      "supportsPromptImageTransforms": true,
+      "supportsMaskImageEdits": false
+    }
+  },
+  "aiDefaultTextModel": "gpt-5-mini",
+  "aiDefaultImageGenerationModel": "gpt-image-1",
+  "aiDefaultMaxOutgoingTokens": 0,
+  "aiDefaultMaxResponseTokens": 0,
+  "modifierKeyConfig": {
+    "Mac": {
+      "LocalFileDragAction": {
+        "defaultAction": "image-import",
+        "rules": [
+          {
+            "shift": false,
+            "ctrl_cmd": false,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "image-import"
+          },
+          {
+            "shift": true,
+            "ctrl_cmd": false,
+            "alt_opt": true,
+            "meta_ctrl": false,
+            "result": "link"
+          },
+          {
+            "shift": true,
+            "ctrl_cmd": false,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "image-url"
+          },
+          {
+            "shift": false,
+            "ctrl_cmd": false,
+            "alt_opt": true,
+            "meta_ctrl": false,
+            "result": "embeddable"
+          }
+        ]
+      },
+      "WebBrowserDragAction": {
+        "defaultAction": "image-url",
+        "rules": [
+          {
+            "shift": false,
+            "ctrl_cmd": false,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "image-url"
+          },
+          {
+            "shift": true,
+            "ctrl_cmd": false,
+            "alt_opt": true,
+            "meta_ctrl": false,
+            "result": "link"
+          },
+          {
+            "shift": false,
+            "ctrl_cmd": false,
+            "alt_opt": true,
+            "meta_ctrl": false,
+            "result": "embeddable"
+          },
+          {
+            "shift": true,
+            "ctrl_cmd": false,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "image-import"
+          }
+        ]
+      },
+      "InternalDragAction": {
+        "defaultAction": "link",
+        "rules": [
+          {
+            "shift": false,
+            "ctrl_cmd": false,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "link"
+          },
+          {
+            "shift": false,
+            "ctrl_cmd": false,
+            "alt_opt": false,
+            "meta_ctrl": true,
+            "result": "embeddable"
+          },
+          {
+            "shift": true,
+            "ctrl_cmd": false,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "image"
+          },
+          {
+            "shift": true,
+            "ctrl_cmd": false,
+            "alt_opt": false,
+            "meta_ctrl": true,
+            "result": "image-fullsize"
+          }
+        ]
+      },
+      "LinkClickAction": {
+        "defaultAction": "new-tab",
+        "rules": [
+          {
+            "shift": true,
+            "ctrl_cmd": true,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "active-pane"
+          },
+          {
+            "shift": false,
+            "ctrl_cmd": true,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "new-tab"
+          },
+          {
+            "shift": false,
+            "ctrl_cmd": true,
+            "alt_opt": true,
+            "meta_ctrl": false,
+            "result": "new-pane"
+          },
+          {
+            "shift": true,
+            "ctrl_cmd": true,
+            "alt_opt": true,
+            "meta_ctrl": false,
+            "result": "popout-window"
+          },
+          {
+            "shift": false,
+            "ctrl_cmd": true,
+            "alt_opt": false,
+            "meta_ctrl": true,
+            "result": "md-properties"
+          }
+        ]
+      }
+    },
+    "Win": {
+      "LocalFileDragAction": {
+        "defaultAction": "image-import",
+        "rules": [
+          {
+            "shift": false,
+            "ctrl_cmd": false,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "image-import"
+          },
+          {
+            "shift": false,
+            "ctrl_cmd": true,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "link"
+          },
+          {
+            "shift": true,
+            "ctrl_cmd": false,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "image-url"
+          },
+          {
+            "shift": true,
+            "ctrl_cmd": true,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "embeddable"
+          }
+        ]
+      },
+      "WebBrowserDragAction": {
+        "defaultAction": "image-url",
+        "rules": [
+          {
+            "shift": false,
+            "ctrl_cmd": false,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "image-url"
+          },
+          {
+            "shift": false,
+            "ctrl_cmd": true,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "link"
+          },
+          {
+            "shift": true,
+            "ctrl_cmd": true,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "embeddable"
+          },
+          {
+            "shift": true,
+            "ctrl_cmd": false,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "image-import"
+          }
+        ]
+      },
+      "InternalDragAction": {
+        "defaultAction": "link",
+        "rules": [
+          {
+            "shift": false,
+            "ctrl_cmd": false,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "link"
+          },
+          {
+            "shift": true,
+            "ctrl_cmd": true,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "embeddable"
+          },
+          {
+            "shift": true,
+            "ctrl_cmd": false,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "image"
+          },
+          {
+            "shift": false,
+            "ctrl_cmd": true,
+            "alt_opt": true,
+            "meta_ctrl": false,
+            "result": "image-fullsize"
+          }
+        ]
+      },
+      "LinkClickAction": {
+        "defaultAction": "new-tab",
+        "rules": [
+          {
+            "shift": false,
+            "ctrl_cmd": false,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "active-pane"
+          },
+          {
+            "shift": false,
+            "ctrl_cmd": true,
+            "alt_opt": false,
+            "meta_ctrl": false,
+            "result": "new-tab"
+          },
+          {
+            "shift": false,
+            "ctrl_cmd": true,
+            "alt_opt": true,
+            "meta_ctrl": false,
+            "result": "new-pane"
+          },
+          {
+            "shift": true,
+            "ctrl_cmd": true,
+            "alt_opt": true,
+            "meta_ctrl": false,
+            "result": "popout-window"
+          },
+          {
+            "shift": false,
+            "ctrl_cmd": true,
+            "alt_opt": false,
+            "meta_ctrl": true,
+            "result": "md-properties"
+          }
+        ]
+      }
+    }
+  },
+  "slidingPanesSupport": false,
+  "areaZoomLimit": 1,
+  "longPressDesktop": 500,
+  "longPressMobile": 500,
+  "doubleClickLinkOpenViewMode": true,
+  "rank": "Bronze",
+  "modifierKeyOverrides": [
+    {
+      "modifiers": [
+        "Mod"
+      ],
+      "key": "Enter"
+    },
+    {
+      "modifiers": [
+        "Mod"
+      ],
+      "key": "k"
+    },
+    {
+      "modifiers": [
+        "Mod"
+      ],
+      "key": "G"
+    }
+  ],
+  "showSplashscreen": true,
+  "pdfSettings": {
+    "pageSize": "A4",
+    "pageOrientation": "portrait",
+    "fitToPage": 1,
+    "paperColor": "white",
+    "customPaperColor": "#ffffff",
+    "alignment": "center",
+    "margin": "normal"
+  },
+  "disableContextMenu": false
+}

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
.obsidian/plugins/obsidian-excalidraw-plugin/main.js


+ 12 - 0
.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json

@@ -0,0 +1,12 @@
+{
+  "id": "obsidian-excalidraw-plugin",
+  "name": "Excalidraw",
+  "version": "2.23.12",
+  "minAppVersion": "1.8.7",
+  "description": "Sketch Your Mind. Edit and view Excalidraw drawings. Enter the world of 4D Visual PKM.",
+  "author": "Zsolt Viczian",
+  "authorUrl": "https://excalidraw-obsidian.online",
+  "fundingUrl": "https://ko-fi.com/zsolt",
+  "helpUrl": "https://github.com/zsviczian/obsidian-excalidraw-plugin#readme",
+  "isDesktopOnly": false
+}

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
.obsidian/plugins/obsidian-excalidraw-plugin/styles.css


Разлика између датотеке није приказан због своје велике величине
+ 5 - 0
.obsidian/plugins/obsidian-git/main.js


+ 10 - 0
.obsidian/plugins/obsidian-git/manifest.json

@@ -0,0 +1,10 @@
+{
+    "author": "Vinzent",
+    "authorUrl": "https://github.com/Vinzent03",
+    "id": "obsidian-git",
+    "name": "Git",
+    "description": "Integrate Git version control with automatic backup and other advanced features.",
+    "isDesktopOnly": false,
+    "fundingUrl": "https://ko-fi.com/vinzent",
+    "version": "2.38.5"
+}

+ 705 - 0
.obsidian/plugins/obsidian-git/styles.css

@@ -0,0 +1,705 @@
+@keyframes loading {
+    0% {
+        transform: rotate(0deg);
+    }
+
+    100% {
+        transform: rotate(360deg);
+    }
+}
+
+.workspace-leaf-content[data-type="git-view"] .button-border {
+    border: 2px solid var(--interactive-accent);
+    border-radius: var(--radius-s);
+}
+
+.workspace-leaf-content[data-type="git-view"] .view-content {
+    padding-left: 0;
+    padding-top: 0;
+    padding-right: 0;
+}
+
+.workspace-leaf-content[data-type="git-history-view"] .view-content {
+    padding-left: 0;
+    padding-top: 0;
+    padding-right: 0;
+}
+
+.loading {
+    overflow: hidden;
+}
+
+.loading > svg {
+    animation: 2s linear infinite loading;
+    transform-origin: 50% 50%;
+    display: inline-block;
+}
+
+.obsidian-git-center {
+    margin: auto;
+    text-align: center;
+    width: 50%;
+}
+
+.obsidian-git-textarea {
+    display: block;
+    margin-left: auto;
+    margin-right: auto;
+}
+
+.obsidian-git-disabled {
+    opacity: 0.5;
+}
+
+.obsidian-git-center-button {
+    display: block;
+    margin: 20px auto;
+}
+
+.tooltip.mod-left {
+    overflow-wrap: break-word;
+}
+
+.tooltip.mod-right {
+    overflow-wrap: break-word;
+}
+
+/* Limits the scrollbar to the view body */
+.git-view {
+    display: flex;
+    flex-direction: column;
+    position: relative;
+    height: 100%;
+}
+
+/* Re-enable wrapping of nav buttns to prevent overflow on smaller screens #*/
+.workspace-drawer .git-view .nav-buttons-container {
+    flex-wrap: wrap;
+}
+
+.git-tools {
+    display: flex;
+    margin-left: auto;
+}
+.git-tools .type {
+    padding-left: var(--size-2-1);
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    width: 11px;
+}
+
+.git-tools .type[data-type="M"] {
+    color: orange;
+}
+.git-tools .type[data-type="D"] {
+    color: red;
+}
+.git-tools .buttons {
+    display: flex;
+}
+.git-tools .buttons > * {
+    padding: 0;
+    height: auto;
+}
+
+.workspace-leaf-content[data-type="git-view"] .tree-item-self,
+.workspace-leaf-content[data-type="git-history-view"] .tree-item-self {
+    align-items: center;
+}
+
+.workspace-leaf-content[data-type="git-view"]
+    .tree-item-self:hover
+    .clickable-icon,
+.workspace-leaf-content[data-type="git-history-view"]
+    .tree-item-self:hover
+    .clickable-icon {
+    color: var(--icon-color-hover);
+}
+
+/* Highlight an item as active if it's diff is currently opened */
+.is-active .git-tools .buttons > * {
+    color: var(--nav-item-color-active);
+}
+
+.git-author {
+    color: var(--text-accent);
+}
+
+.git-date {
+    color: var(--text-accent);
+}
+
+.git-ref {
+    color: var(--text-accent);
+}
+
+/* ====== diff2html ======
+The following styles are adapted from the obsidian-version-history plugin by
+@kometenstaub https://github.com/kometenstaub/obsidian-version-history-diff/blob/main/src/styles.scss
+which itself is adapted from the diff2html library with the following original license:
+
+   	https://github.com/rtfpessoa/diff2html/blob/master/LICENSE.md
+
+	Copyright 2014-2016 Rodrigo Fernandes https://rtfpessoa.github.io/
+
+	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.
+*/
+
+.theme-dark,
+.theme-light {
+    --git-delete-bg: #ff475040;
+    --git-delete-hl: #96050a75;
+    --git-insert-bg: #68d36840;
+    --git-insert-hl: #23c02350;
+    --git-change-bg: #ffd55840;
+    --git-selected: #3572b0;
+
+    --git-delete: #cc3333;
+    --git-insert: #399839;
+    --git-change: #d0b44c;
+    --git-move: #3572b0;
+}
+
+.git-diff {
+    .d2h-d-none {
+        display: none;
+    }
+    .d2h-wrapper {
+        text-align: left;
+        border-radius: 0.25em;
+        overflow: auto;
+    }
+    .d2h-file-header.d2h-file-header {
+        background-color: var(--background-secondary);
+        border-bottom: 1px solid var(--background-modifier-border);
+        font-family:
+            Source Sans Pro,
+            Helvetica Neue,
+            Helvetica,
+            Arial,
+            sans-serif;
+        height: 35px;
+        padding: 5px 10px;
+    }
+    .d2h-file-header,
+    .d2h-file-stats {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+    }
+    .d2h-file-header {
+        display: none;
+    }
+    .d2h-file-stats {
+        font-size: 14px;
+        margin-left: auto;
+    }
+    .d2h-lines-added {
+        border: 1px solid var(--color-green);
+        border-radius: 5px 0 0 5px;
+        color: var(--color-green);
+        padding: 2px;
+        text-align: right;
+        vertical-align: middle;
+    }
+    .d2h-lines-deleted {
+        border: 1px solid var(--color-red);
+        border-radius: 0 5px 5px 0;
+        color: var(--color-red);
+        margin-left: 1px;
+        padding: 2px;
+        text-align: left;
+        vertical-align: middle;
+    }
+    .d2h-file-name-wrapper {
+        -webkit-box-align: center;
+        -ms-flex-align: center;
+        align-items: center;
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        font-size: 15px;
+        width: 100%;
+    }
+    .d2h-file-name {
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        color: var(--text-normal);
+        font-size: var(--h5-size);
+    }
+    .d2h-file-wrapper {
+        border: 1px solid var(--background-secondary-alt);
+        border-radius: 3px;
+        margin-bottom: 1em;
+        max-height: 100%;
+    }
+    .d2h-file-collapse {
+        -webkit-box-pack: end;
+        -ms-flex-pack: end;
+        -webkit-box-align: center;
+        -ms-flex-align: center;
+        align-items: center;
+        border: 1px solid var(--background-secondary-alt);
+        border-radius: 3px;
+        cursor: pointer;
+        display: none;
+        font-size: 12px;
+        justify-content: flex-end;
+        padding: 4px 8px;
+    }
+    .d2h-file-collapse.d2h-selected {
+        background-color: var(--git-selected);
+    }
+    .d2h-file-collapse-input {
+        margin: 0 4px 0 0;
+    }
+    .d2h-diff-table {
+        border-collapse: collapse;
+        font-family: var(--font-monospace);
+        font-size: var(--code-size);
+        width: 100%;
+    }
+    .d2h-files-diff {
+        width: 100%;
+    }
+    .d2h-file-diff {
+        /*
+		overflow-y: scroll;
+		*/
+        border-radius: 5px;
+        font-size: var(--font-text-size);
+        line-height: var(--line-height-normal);
+    }
+    .d2h-file-side-diff {
+        display: inline-block;
+        margin-bottom: -8px;
+        margin-right: -4px;
+        overflow-x: scroll;
+        overflow-y: hidden;
+        width: 50%;
+    }
+    .d2h-code-line {
+        padding-left: 6em;
+        padding-right: 1.5em;
+    }
+    .d2h-code-line,
+    .d2h-code-side-line {
+        display: inline-block;
+        -webkit-user-select: none;
+        -moz-user-select: none;
+        -ms-user-select: none;
+        user-select: none;
+        white-space: nowrap;
+        width: 100%;
+    }
+    .d2h-code-side-line {
+        /* needed to be changed */
+        padding-left: 0.5em;
+        padding-right: 0.5em;
+    }
+    .d2h-code-line-ctn {
+        word-wrap: normal;
+        background: none;
+        display: inline-block;
+        padding: 0;
+        -webkit-user-select: text;
+        -moz-user-select: text;
+        -ms-user-select: text;
+        user-select: text;
+        vertical-align: middle;
+        width: 100%;
+        /* only works for line-by-line */
+        white-space: pre-wrap;
+    }
+    .d2h-code-line del,
+    .d2h-code-side-line del {
+        background-color: var(--git-delete-hl);
+        color: var(--text-normal);
+    }
+    .d2h-code-line del,
+    .d2h-code-line ins,
+    .d2h-code-side-line del,
+    .d2h-code-side-line ins {
+        border-radius: 0.2em;
+        display: inline-block;
+        margin-top: -1px;
+        text-decoration: none;
+        vertical-align: middle;
+    }
+    .d2h-code-line ins,
+    .d2h-code-side-line ins {
+        background-color: var(--git-insert-hl);
+        text-align: left;
+    }
+    .d2h-code-line-prefix {
+        word-wrap: normal;
+        background: none;
+        display: inline;
+        padding: 0;
+        white-space: pre;
+    }
+    .line-num1 {
+        float: left;
+    }
+    .line-num1,
+    .line-num2 {
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        overflow: hidden;
+        /*
+		padding: 0 0.5em;
+		*/
+        text-overflow: ellipsis;
+        width: 2.5em;
+        padding-left: 0;
+    }
+    .line-num2 {
+        float: right;
+    }
+    .d2h-code-linenumber {
+        background-color: var(--background-primary);
+        border: solid var(--background-modifier-border);
+        border-width: 0 1px;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        color: var(--text-faint);
+        cursor: pointer;
+        display: inline-block;
+        position: absolute;
+        text-align: right;
+        width: 5.5em;
+    }
+    .d2h-code-linenumber:after {
+        content: "\200b";
+    }
+    .d2h-code-side-linenumber {
+        background-color: var(--background-primary);
+        border: solid var(--background-modifier-border);
+        border-width: 0 1px;
+        -webkit-box-sizing: border-box;
+        box-sizing: border-box;
+        color: var(--text-faint);
+        cursor: pointer;
+        overflow: hidden;
+        padding: 0 0.5em;
+        text-align: right;
+        text-overflow: ellipsis;
+        width: 4em;
+        /* needed to be changed */
+        display: table-cell;
+        position: relative;
+    }
+    .d2h-code-side-linenumber:after {
+        content: "\200b";
+    }
+    .d2h-code-side-emptyplaceholder,
+    .d2h-emptyplaceholder {
+        background-color: var(--background-primary);
+        border-color: var(--background-modifier-border);
+    }
+    .d2h-code-line-prefix,
+    .d2h-code-linenumber,
+    .d2h-code-side-linenumber,
+    .d2h-emptyplaceholder {
+        -webkit-user-select: none;
+        -moz-user-select: none;
+        -ms-user-select: none;
+        user-select: none;
+    }
+    .d2h-code-linenumber,
+    .d2h-code-side-linenumber {
+        direction: rtl;
+    }
+    .d2h-del {
+        background-color: var(--git-delete-bg);
+        border-color: var(--git-delete-hl);
+    }
+    .d2h-ins {
+        background-color: var(--git-insert-bg);
+        border-color: var(--git-insert-hl);
+    }
+    .d2h-info {
+        background-color: var(--background-primary);
+        border-color: var(--background-modifier-border);
+        color: var(--text-faint);
+    }
+    .d2h-del,
+    .d2h-ins,
+    .d2h-file-diff .d2h-change {
+        color: var(--text-normal);
+    }
+    .d2h-file-diff .d2h-del.d2h-change {
+        background-color: var(--git-change-bg);
+    }
+    .d2h-file-diff .d2h-ins.d2h-change {
+        background-color: var(--git-insert-bg);
+    }
+    .d2h-file-list-wrapper {
+        a {
+            text-decoration: none;
+            cursor: default;
+            -webkit-user-drag: none;
+        }
+
+        svg {
+            display: none;
+        }
+    }
+    .d2h-file-list-header {
+        text-align: left;
+    }
+    .d2h-file-list-title {
+        display: none;
+    }
+    .d2h-file-list-line {
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        text-align: left;
+    }
+    .d2h-file-list {
+    }
+    .d2h-file-list > li {
+        border-bottom: 1px solid var(--background-modifier-border);
+        margin: 0;
+        padding: 5px 10px;
+    }
+    .d2h-file-list > li:last-child {
+        border-bottom: none;
+    }
+    .d2h-file-switch {
+        cursor: pointer;
+        display: none;
+        font-size: 10px;
+    }
+    .d2h-icon {
+        fill: currentColor;
+        margin-right: 10px;
+        vertical-align: middle;
+    }
+    .d2h-deleted {
+        color: var(--git-delete);
+    }
+    .d2h-added {
+        color: var(--git-insert);
+    }
+    .d2h-changed {
+        color: var(--git-change);
+    }
+    .d2h-moved {
+        color: var(--git-move);
+    }
+    .d2h-tag {
+        background-color: var(--background-secondary);
+        display: -webkit-box;
+        display: -ms-flexbox;
+        display: flex;
+        font-size: 10px;
+        margin-left: 5px;
+        padding: 0 2px;
+    }
+    .d2h-deleted-tag {
+        border: 1px solid var(--git-delete);
+    }
+    .d2h-added-tag {
+        border: 1px solid var(--git-insert);
+    }
+    .d2h-changed-tag {
+        border: 1px solid var(--git-change);
+    }
+    .d2h-moved-tag {
+        border: 1px solid var(--git-move);
+    }
+
+    /* needed for line-by-line*/
+
+    .d2h-diff-tbody {
+        position: relative;
+    }
+
+    /* My additions */
+    .cm-merge-revert {
+        width: 4em;
+    }
+    /* Ensure that merge revert markers are positioned correctly */
+    .cm-merge-revert > * {
+        position: absolute;
+        background-color: var(--background-secondary);
+        display: flex;
+    }
+}
+
+/* ====================== Line Authoring Information ====================== */
+
+.cm-gutterElement.obs-git-blame-gutter {
+    /* Add background color to spacing inbetween and around the gutter for better aesthetics */
+    border-width: 0px 2px 0.2px;
+    border-style: solid;
+    border-color: var(--background-secondary);
+    background-color: var(--background-secondary);
+}
+
+.cm-gutterElement.obs-git-blame-gutter > div,
+.line-author-settings-preview {
+    /* delegate text color to settings */
+    color: var(--obs-git-gutter-text);
+    font-family: monospace;
+    height: 100%; /* ensure, that age-based background color occupies entire parent */
+    text-align: right;
+    padding: 0px 6px;
+    white-space: pre; /* Keep spaces and do not collapse them. */
+}
+
+@media (max-width: 800px) {
+    /* hide git blame gutter not to superpose text */
+    .cm-gutterElement.obs-git-blame-gutter {
+        display: none;
+    }
+}
+
+.git-unified-diff-view,
+.git-split-diff-view .cm-deletedLine .cm-changedText {
+    background-color: #ee443330;
+}
+
+.git-unified-diff-view,
+.git-split-diff-view .cm-insertedLine .cm-changedText {
+    background-color: #22bb2230;
+}
+
+.git-obscure-prompt[git-is-obscured="true"] #git-show-password:after {
+    -webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path><circle cx="12" cy="12" r="3"></circle></svg>');
+}
+
+.git-obscure-prompt[git-is-obscured="false"] #git-show-password:after {
+    -webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye-off"><path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"></path><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"></path><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"></path><path d="m2 2 20 20"></path></svg>');
+}
+
+/* Override styling of Codemirror merge view "collapsed lines" indicator */
+.git-split-diff-view .ͼ2 .cm-collapsedLines {
+    background: var(--interactive-normal);
+    border-radius: var(--radius-m);
+    color: var(--text-accent);
+    font-size: var(--font-small);
+    padding: var(--size-4-1) var(--size-4-1);
+}
+.git-split-diff-view .ͼ2 .cm-collapsedLines:hover {
+    background: var(--interactive-hover);
+    color: var(--text-accent-hover);
+}
+
+.git-signs-gutter {
+    .cm-gutterElement {
+        display: grid;
+
+        /* Needed to align the sign properly for different line heigts. Such as
+         * when having a heading or list item.
+         */
+        padding-top: 0 !important;
+    }
+}
+
+.git-gutter-marker:hover {
+    border-radius: 2px;
+}
+
+.git-gutter-marker.git-add {
+    background-color: var(--color-green);
+    justify-self: center;
+    height: inherit;
+    width: 0.2rem;
+}
+
+.git-gutter-marker.git-change {
+    background-color: var(--color-yellow);
+    justify-self: center;
+    height: inherit;
+    width: 0.2rem;
+}
+
+.git-gutter-marker.git-changedelete {
+    color: var(--color-yellow);
+    font-weight: var(--font-bold);
+    font-size: 1rem;
+    justify-self: center;
+    height: inherit;
+}
+
+.git-gutter-marker.git-delete {
+    background-color: var(--color-red);
+    height: 0.2rem;
+    width: 0.8rem;
+    align-self: end;
+}
+
+.git-gutter-marker.git-topdelete {
+    background-color: var(--color-red);
+    height: 0.2rem;
+    width: 0.8rem;
+    align-self: start;
+}
+
+div:hover > .git-gutter-marker.git-change {
+    width: 0.6rem;
+}
+
+div:hover > .git-gutter-marker.git-add {
+    width: 0.6rem;
+}
+
+div:hover > .git-gutter-marker.git-delete {
+    height: 0.6rem;
+}
+
+div:hover > .git-gutter-marker.git-topdelete {
+    height: 0.6rem;
+}
+
+div:hover > .git-gutter-marker.git-changedelete {
+    font-weight: var(--font-bold);
+}
+
+.git-gutter-marker.staged {
+    opacity: 0.5;
+}
+
+/* Prevent shifting of the editor when git signs gutter is the only gutter present */
+.cm-gutters.cm-gutters-before:has(> .git-signs-gutter:only-child) {
+    margin-inline-end: 0;
+    .git-signs-gutter {
+        margin-inline-start: -1rem;
+    }
+}
+
+.git-changes-status-bar-colored {
+    .git-add {
+        color: var(--color-green);
+    }
+    .git-change {
+        color: var(--color-yellow);
+    }
+    .git-delete {
+        color: var(--color-red);
+    }
+}
+
+.git-changes-status-bar .git-add {
+    margin-right: 0.3em;
+}
+
+.git-changes-status-bar .git-change {
+    margin-right: 0.3em;
+}

+ 175 - 0
.obsidian/plugins/obsidian-livesync/data.json

@@ -0,0 +1,175 @@
+{
+  "remoteType": "",
+  "useCustomRequestHandler": false,
+  "couchDB_URI": "",
+  "couchDB_USER": "",
+  "couchDB_PASSWORD": "",
+  "couchDB_DBNAME": "",
+  "liveSync": true,
+  "syncOnSave": false,
+  "syncOnStart": false,
+  "savingDelay": 200,
+  "lessInformationInLog": false,
+  "gcDelay": 0,
+  "versionUpFlash": "",
+  "minimumChunkSize": 20,
+  "longLineThreshold": 250,
+  "showVerboseLog": false,
+  "suspendFileWatching": false,
+  "trashInsteadDelete": true,
+  "periodicReplication": false,
+  "periodicReplicationInterval": 60,
+  "syncOnFileOpen": false,
+  "encrypt": false,
+  "passphrase": "",
+  "usePathObfuscation": false,
+  "doNotDeleteFolder": false,
+  "resolveConflictsByNewerFile": false,
+  "batchSave": false,
+  "batchSaveMinimumDelay": 5,
+  "batchSaveMaximumDelay": 60,
+  "deviceAndVaultName": "",
+  "usePluginSettings": false,
+  "showOwnPlugins": false,
+  "showStatusOnEditor": true,
+  "showStatusOnStatusbar": true,
+  "showOnlyIconsOnEditor": false,
+  "hideFileWarningNotice": false,
+  "networkWarningStyle": "",
+  "usePluginSync": false,
+  "autoSweepPlugins": false,
+  "autoSweepPluginsPeriodic": false,
+  "notifyPluginOrSettingUpdated": false,
+  "checkIntegrityOnSave": false,
+  "batch_size": 25,
+  "batches_limit": 25,
+  "useHistory": true,
+  "disableRequestURI": true,
+  "skipOlderFilesOnSync": true,
+  "checkConflictOnlyOnOpen": false,
+  "showMergeDialogOnlyOnActive": false,
+  "syncInternalFiles": false,
+  "syncInternalFilesBeforeReplication": false,
+  "syncInternalFilesIgnorePatterns": "\\/node_modules\\/, \\/\\.git\\/, \\/obsidian-livesync\\/",
+  "syncInternalFilesTargetPatterns": "",
+  "syncInternalFilesInterval": 60,
+  "additionalSuffixOfDatabaseName": "806fd73e7e83a3b0",
+  "ignoreVersionCheck": false,
+  "lastReadUpdates": 25,
+  "deleteMetadataOfDeletedFiles": false,
+  "syncIgnoreRegEx": "",
+  "syncOnlyRegEx": "",
+  "customChunkSize": 60,
+  "readChunksOnline": true,
+  "watchInternalFileChanges": true,
+  "automaticallyDeleteMetadataOfDeletedFiles": 0,
+  "disableMarkdownAutoMerge": false,
+  "writeDocumentsIfConflicted": false,
+  "useDynamicIterationCount": false,
+  "syncAfterMerge": false,
+  "configPassphraseStore": "",
+  "encryptedPassphrase": "",
+  "encryptedCouchDBConnection": "%$OeI2Of0ftCS+X+eFEq44rxujPtUs6mCAKZJlwM5cpobrfaSSISw3Dsjw0rYhDo6089+UUhZbWK2aIiTRzKk7DU0qrLyAg/ya/pJ0FZ0DUAqk/YAXC7sWJygykgAkHnxG+ovmwaRZqpwEmOjTSj51em2gEPF6yirth668gVmJF0SZeXAfHf4BwZl+UCOh0LB9C2fjiMmFtY5/fsuZqpYkfI/D92srw+b93nOzjTE0e66C3qvkSyvu1bIGc/BqFuwQjdoks7nsicS7pcLqRf3vjQepChluZiW7KYa/pj4D6BfRhK9+ykzchhXWwvZ5A406AOgxIpK4BiFlMTCKAnAgxkI0OnKrhFAVk/c2gEJlfL16C8W+N6/d+DDjp7hs1eb+p7NE+QyWV65Oi8qF82B/DyE9vQ7Gsdv292hK4zQywJcytXssaiw0yDIDvXoxXnQSCz79krcrwK8zXY46YZXZCJr0PCEUmS99RfAtMaIUx3JrdP7AhRCA6ZKY2Kz8HB14nm57RK35TpugGwzx2rEY4XZ1INykQ4LyQHPXZsyZNYOS0ZjZrilI/cyMvacLh7vFjeR8XWxwkqQ0+VP8A2ZZ+dCwclfkD1nw9BKXnGCsjMuYwItt4hWOoPTl5Nz+PsVHSycFAkq03DXZVuMscKAAnuNc7rMsDSuvhr/9dEk1u+0bwuynk+e1swrTJjP1+cq1",
+  "permitEmptyPassphrase": false,
+  "remoteConfigurations": {
+    "legacy-couchdb": {
+      "id": "legacy-couchdb",
+      "name": "CouchDB Remote",
+      "uri": "%$OeI2Of0ftCS+X+eFEq44rxujPtUs6mCAKZJlwM5cpoZXKqlTBCtw28VY09avVnTO0gGqrrah/9xWj6sLHFRh+kfAG79gad0JX8paIoW+KHnKzgKAB40tpOjwvpj7M5udbpgjGNnYHkOcODB5D+2kTbsMABX/iLNYAozDWlGY69Jbl5S3iREV1Uw6LnENK+BdmXQMOlDTMSoFBmnBr8xa",
+      "isEncrypted": true
+    }
+  },
+  "activeConfigurationId": "legacy-couchdb",
+  "P2P_ActiveRemoteConfigurationId": "",
+  "useIndexedDBAdapter": false,
+  "useTimeouts": false,
+  "writeLogToTheFile": false,
+  "doNotPaceReplication": false,
+  "hashCacheMaxCount": 300,
+  "hashCacheMaxAmount": 50,
+  "concurrencyOfReadChunksOnline": 40,
+  "minimumIntervalOfReadChunksOnline": 50,
+  "hashAlg": "xxhash64",
+  "suspendParseReplicationResult": false,
+  "doNotSuspendOnFetching": false,
+  "useIgnoreFiles": false,
+  "ignoreFiles": ".gitignore",
+  "syncOnEditorSave": false,
+  "keepReplicationActiveInBackground": true,
+  "pluginSyncExtendedSetting": {},
+  "syncMaxSizeInMB": 50,
+  "settingSyncFile": "",
+  "writeCredentialsForSettingSync": false,
+  "notifyAllSettingSyncFile": false,
+  "isConfigured": true,
+  "settingVersion": 10,
+  "enableCompression": false,
+  "accessKey": "",
+  "bucket": "",
+  "endpoint": "",
+  "region": "",
+  "secretKey": "",
+  "useEden": false,
+  "maxChunksInEden": 10,
+  "maxTotalLengthInEden": 1024,
+  "maxAgeInEden": 10,
+  "disableCheckingConfigMismatch": false,
+  "displayLanguage": "zh",
+  "enableChunkSplitterV2": false,
+  "disableWorkerForGeneratingChunks": false,
+  "processSmallFilesInUIThread": false,
+  "notifyThresholdOfRemoteStorageSize": 2000,
+  "usePluginSyncV2": true,
+  "usePluginEtc": false,
+  "handleFilenameCaseSensitive": false,
+  "doNotUseFixedRevisionForChunks": true,
+  "showLongerLogInsideEditor": false,
+  "sendChunksBulk": false,
+  "sendChunksBulkMaxSize": 1,
+  "useSegmenter": false,
+  "useAdvancedMode": false,
+  "usePowerUserMode": false,
+  "useEdgeCaseMode": false,
+  "enableDebugTools": false,
+  "suppressNotifyHiddenFilesChange": false,
+  "syncMinimumInterval": 2000,
+  "P2P_Enabled": false,
+  "P2P_AutoAccepting": 0,
+  "P2P_AppID": "self-hosted-livesync",
+  "P2P_roomID": "",
+  "P2P_passphrase": "",
+  "P2P_relays": "wss://exp-relay.vrtmrz.net/",
+  "P2P_AutoBroadcast": false,
+  "P2P_AutoStart": false,
+  "P2P_AutoSyncPeers": "",
+  "P2P_AutoWatchPeers": "",
+  "P2P_SyncOnReplication": "",
+  "P2P_RebuildFrom": "",
+  "P2P_AutoAcceptingPeers": "",
+  "P2P_AutoDenyingPeers": "",
+  "P2P_IsHeadless": false,
+  "P2P_DevicePeerName": "",
+  "P2P_turnServers": "",
+  "P2P_turnUsername": "",
+  "P2P_turnCredential": "",
+  "P2P_useDiagRTC": false,
+  "doctorProcessedVersion": "",
+  "bucketCustomHeaders": "",
+  "couchDB_CustomHeaders": "",
+  "useJWT": false,
+  "jwtAlgorithm": "",
+  "jwtKey": "",
+  "jwtKid": "",
+  "jwtSub": "",
+  "jwtExpDuration": 5,
+  "useRequestAPI": false,
+  "bucketPrefix": "",
+  "chunkSplitterVersion": "v3-rabin-karp",
+  "E2EEAlgorithm": "v2",
+  "processSizeMismatchedFiles": false,
+  "forcePathStyle": true,
+  "syncInternalFileOverwritePatterns": "",
+  "useOnlyLocalChunk": false,
+  "maxMTimeForReflectEvents": 0,
+  "tweakModified": 1781536211298
+}

Разлика између датотеке није приказан због своје велике величине
+ 5 - 0
.obsidian/plugins/obsidian-livesync/main.js


+ 10 - 0
.obsidian/plugins/obsidian-livesync/manifest.json

@@ -0,0 +1,10 @@
+{
+    "id": "obsidian-livesync",
+    "name": "Self-hosted LiveSync",
+    "version": "0.25.76",
+    "minAppVersion": "1.7.2",
+    "description": "Community implementation of self-hosted livesync. Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.",
+    "author": "vorotamoroz",
+    "authorUrl": "https://github.com/vrtmrz",
+    "isDesktopOnly": false
+}

+ 573 - 0
.obsidian/plugins/obsidian-livesync/styles.css

@@ -0,0 +1,573 @@
+.ls-dialog .added {
+    color: var(--text-on-accent);
+    background-color: var(--text-accent);
+}
+
+.ls-dialog .normal {
+    color: var(--text-normal);
+}
+
+.ls-dialog .deleted {
+    color: var(--text-on-accent);
+    background-color: var(--text-muted);
+}
+
+.conflict-dev-name {
+    display: inline-block;
+    min-width: 5em;
+}
+
+.conflict-action-button {
+    margin-right: 4px;
+}
+
+.op-scrollable {
+    overflow-y: scroll;
+    /* min-height: 280px; */
+    max-height: 280px;
+    user-select: text;
+    -webkit-user-select: text;
+}
+
+.op-pre {
+    white-space: pre-wrap;
+}
+
+.op-warn {
+    border: 1px solid salmon;
+    padding: 2px;
+    border-radius: 4px;
+}
+
+.op-warn::before {
+    content: "Warning";
+    font-weight: bold;
+    color: salmon;
+    position: relative;
+    display: block;
+}
+
+.op-warn-info {
+    border: 1px solid rgb(255, 209, 81);
+    padding: 2px;
+    border-radius: 4px;
+}
+
+.op-warn-info::before {
+    content: "Notice";
+    font-weight: bold;
+    color: rgb(255, 209, 81);
+    position: relative;
+    display: block;
+}
+
+.syncstatusbar {
+    -webkit-filter: grayscale(100%);
+    filter: grayscale(100%);
+}
+
+.tcenter {
+    text-align: center;
+}
+
+.sls-plugins-wrap {
+    display: flex;
+    flex-grow: 1;
+    max-height: 50vh;
+    overflow-y: scroll;
+}
+
+.sls-remote-list .setting-item-description {
+    white-space: normal;
+    overflow-wrap: anywhere;
+    word-break: break-word;
+}
+
+.sls-plugins-tbl {
+    border: 1px solid var(--background-modifier-border);
+    width: 100%;
+    max-height: 80%;
+}
+
+.divider th {
+    border-top: 1px solid var(--background-modifier-border);
+}
+
+.sls-header-button {
+    margin-left: 2em;
+}
+
+.sls-hidden {
+    display: none;
+}
+
+:root {
+    --sls-log-text: "";
+}
+
+.sls-troubleshoot-preview {
+    max-width: max-content;
+}
+
+.sls-troubleshoot-preview img {
+    max-width: 100%;
+}
+
+.sls-setting-tab {
+    display: none;
+}
+
+div.sls-setting-menu-btn {
+    color: var(--text-normal);
+    background-color: var(--background-secondary-alt);
+    border-radius: 8px;
+    padding: 6px 10px;
+    cursor: pointer;
+    margin-right: 2px;
+    font-family: "Inter", sans-serif;
+    outline: none;
+    user-select: none;
+    flex-grow: 1;
+    text-align: center;
+    flex-shrink: 1;
+}
+
+.sls-setting-label.selected {
+    /* order: 1; */
+    flex-grow: 1;
+    /* width: 100%; */
+}
+
+.sls-setting-tab:hover~div.sls-setting-menu-btn,
+.sls-setting-label.selected .sls-setting-tab:checked~div.sls-setting-menu-btn {
+    background-color: var(--interactive-accent);
+    color: var(--text-on-accent);
+}
+
+.sls-setting-menu-wrapper {
+    display: flex;
+    flex-direction: column;
+    flex-grow: 1;
+    position: sticky;
+    top: 0;
+    backdrop-filter: blur(15px);
+    padding: 4px;
+    border-radius: 10px;
+    z-index: 10;
+}
+
+.sls-setting-menu {
+    display: flex;
+    flex-direction: row;
+    overflow-x: auto;
+}
+
+body {
+    --sls-col-transparent: transparent;
+    --sls-col-warn: rgba(var(--background-modifier-error-rgb), 0.1);
+    --sls-col-warn-stripe1: var(--sls-col-transparent);
+    --sls-col-warn-stripe2: var(--sls-col-warn);
+}
+
+.sls-setting-menu-buttons {
+    border: 1px solid var(--sls-col-warn);
+    /* padding: 2px; */
+    margin: 1px;
+    border-radius: 4px;
+    background-image: linear-gradient(-45deg,
+            var(--sls-col-warn-stripe1) 25%, var(--sls-col-warn-stripe2) 25%, var(--sls-col-warn-stripe2) 50%,
+            var(--sls-col-warn-stripe1) 50%, var(--sls-col-warn-stripe1) 75%, var(--sls-col-warn-stripe2) 75%, var(--sls-col-warn-stripe2));
+    background-size: 30px 30px;
+    display: flex;
+    flex-direction: row;
+    /* justify-content: flex-end; */
+    padding: 0.5em 0.25em;
+    justify-content: center;
+    align-items: center;
+    /* transition: background-position 1s; */
+    animation: sls-scroll-warn 1s linear 0s infinite;
+}
+
+@keyframes sls-scroll-warn {
+    0% {
+        background-position: 0 0;
+    }
+
+    100% {
+        background-position: 30px 0;
+    }
+
+}
+
+.sls-setting-menu-buttons label {
+    margin-right: auto;
+    flex-grow: 1;
+    color: var(--text-warning);
+}
+
+.sls-setting-label {
+    flex-grow: 1;
+    display: inline-flex;
+    justify-content: center;
+}
+
+.setting-collapsed {
+    display: none;
+}
+
+.sls-plugins-tbl-buttons {
+    text-align: right;
+}
+
+.sls-plugins-tbl-buttons button {
+    flex-grow: 0;
+    padding: 6px 10px;
+}
+
+.sls-plugins-tbl-device-head {
+    background-color: var(--background-secondary-alt);
+    color: var(--text-accent);
+}
+
+.op-flex {
+    display: flex;
+}
+
+.op-flex input {
+    display: inline-flex;
+    flex-grow: 1;
+    margin-bottom: 8px;
+}
+
+.op-info {
+    display: inline-flex;
+    flex-grow: 1;
+    border-bottom: 1px solid var(--background-modifier-border);
+    width: 100%;
+    margin-bottom: 4px;
+    padding-bottom: 4px;
+}
+
+.history-added {
+    color: var(--text-on-accent);
+    background-color: var(--text-accent);
+}
+
+.history-normal {
+    color: var(--text-normal);
+}
+
+.history-deleted {
+    color: var(--text-on-accent);
+    background-color: var(--text-muted);
+    text-decoration: line-through;
+}
+
+.ob-btn-config-fix label {
+    margin-right: 40px;
+}
+
+.ob-btn-config-info {
+    border: 1px solid salmon;
+    padding: 2px;
+    margin: 1px;
+    border-radius: 4px;
+}
+
+.ob-btn-config-head {
+    padding: 2px;
+    margin: 1px;
+    border-radius: 4px;
+}
+
+.isWizard .wizardHidden {
+    display: none;
+}
+
+.sls-setting:not(.isWizard) .wizardOnly {
+    display: none;
+}
+
+.sls-item-dirty::before {
+    content: "✏";
+}
+
+.sls-item-dirty-help::after {
+    content: " ❓";
+}
+
+.sls-setting .setting-item-control input.sls-item-invalid-value,
+.sls-setting .setting-item-control textarea.sls-item-invalid-value {
+    background-color: rgba(var(--background-modifier-error-rgb), 0.3);
+}
+
+.sls-setting-disabled input[type=text],
+.sls-setting-disabled input[type=number],
+.sls-setting-disabled input[type=password] {
+    filter: brightness(80%);
+    color: var(--text-muted);
+
+}
+
+.sls-setting-hidden {
+    display: none;
+}
+
+
+
+.sls-setting-obsolete {
+    /* background-image: linear-gradient(-45deg,
+            var(--sls-col-warn-stripe1) 25%, var(--sls-col-warn-stripe2) 25%, var(--sls-col-warn-stripe2) 50%,
+            var(--sls-col-warn-stripe1) 50%, var(--sls-col-warn-stripe1) 75%, var(--sls-col-warn-stripe2) 75%, var(--sls-col-warn-stripe2)); */
+    background-image: linear-gradient(-45deg,
+            transparent 25%, rgba(var(--background-secondary), 0.1) 25%, rgba(var(--background-secondary), 0.1) 50%, transparent 50%, transparent 75%, rgba(var(--background-secondary), 0.1) 75%, rgba(var(--background-secondary), 0.1));
+    background-size: 60px 60px;
+}
+
+.password-input>.setting-item-control>input {
+    -webkit-text-security: disc;
+}
+
+span.ls-mark-cr::after {
+    user-select: none;
+    content: "↲";
+    color: var(--text-muted);
+    font-size: 0.8em;
+}
+
+.deleted span.ls-mark-cr::after {
+    color: var(--text-on-accent);
+}
+
+.ls-imgdiff-wrap {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+}
+
+.ls-imgdiff-wrap .overlay {
+    position: relative;
+}
+
+.ls-imgdiff-wrap .overlay .img-base {
+    position: relative;
+    top: 0;
+    left: 0;
+}
+
+.ls-imgdiff-wrap .overlay .img-overlay {
+    -webkit-filter: invert(100%) opacity(50%);
+    filter: invert(100%) opacity(50%);
+    position: absolute;
+    top: 0;
+    left: 0;
+    animation: ls-blink-diff 0.5s cubic-bezier(0.4, 0, 1, 1) infinite alternate;
+}
+
+@keyframes ls-blink-diff {
+    0% {
+        opacity: 0;
+    }
+
+    50% {
+        opacity: 0;
+    }
+
+    100% {
+        opacity: 1;
+    }
+}
+
+
+.livesync-status {
+    user-select: none;
+    pointer-events: none;
+    height: auto;
+    min-height: 1em;
+    position: absolute;
+    background-color: transparent;
+    width: 100%;
+    padding: 10px;
+    padding-right: 16px;
+    top: var(--header-height);
+    z-index: calc(var(--layer-cover) + 1);
+
+    font-variant-numeric: tabular-nums;
+    tab-size: 4;
+    text-align: right;
+    white-space: pre-wrap;
+    display: inline-block;
+    color: var(--text-normal);
+    font-size: 80%;
+}
+
+div.workspace-leaf-content[data-type=bases]  .livesync-status {
+    top: calc(var(--bases-header-height) + var(--header-height));
+    padding: 5px;
+    padding-right: 18px;
+}
+
+.is-mobile div.workspace-leaf-content[data-type=bases]  .livesync-status {
+    top: calc(var(--bases-header-height) + var(--view-header-height));
+    padding: 6px;
+    padding-right: 18px;
+}
+
+.livesync-status div {
+    opacity: 0.6;
+    -webkit-filter: grayscale(100%);
+    filter: grayscale(100%);
+}
+
+.livesync-status .livesync-status-loghistory {
+    text-align: left;
+    opacity: 0.4;
+
+}
+
+.livesync-status div.livesync-status-messagearea:empty {
+    display: none;
+}
+
+.livesync-status div.livesync-status-messagearea:not(:empty) {
+    opacity: 0.6;
+    color: var(--text-on-accent);
+    border: 1px solid var(--background-modifier-error);
+    background-color: rgba(var(--background-modifier-error-rgb), 0.2);
+    -webkit-filter: unset;
+    filter: unset;
+    width: fit-content;
+    margin-left: auto;
+}
+
+
+.menu-setting-poweruser-disabled .sls-setting-poweruser {
+    display: none;
+}
+
+.menu-setting-advanced-disabled .sls-setting-advanced {
+    display: none;
+}
+
+.menu-setting-edgecase-disabled .sls-setting-edgecase {
+    display: none;
+}
+
+.sls-setting-panel-title {
+    position: sticky;
+    font-size: medium;
+    top: 2.5em;
+    background-color: var(--background-secondary-alt);
+    border-radius: 10px;
+    padding: 0.5em 1.0em;
+}
+
+.active-pane .sls-setting-panel-title {
+    border: 1px solid var(--interactive-accent);
+}
+
+.sls-dialogue-note-wrapper {
+    display: flex;
+    justify-content: flex-end;
+    align-items: center;
+}
+
+.sls-dialogue-note-countdown {
+    font-size: 0.8em;
+}
+
+.sls-qr {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    max-width: max-content;
+}
+
+.sls-keypair pre {
+    max-width: 100%;
+    overflow-x: auto;
+    white-space: pre-wrap;
+    word-break: break-all;
+
+}
+
+/* Diff navigation */
+.diff-options-row {
+    display: flex;
+    align-items: center;
+    gap: 8px;
+}
+
+.diff-nav {
+    display: flex;
+    align-items: center;
+    gap: 4px;
+    margin-left: auto;
+}
+
+.diff-nav-btn {
+    padding: 2px 8px;
+    font-size: 0.85em;
+    cursor: pointer;
+    border: 1px solid var(--background-modifier-border);
+    border-radius: 4px;
+    background-color: var(--background-secondary);
+    color: var(--text-normal);
+}
+
+.diff-nav-btn:hover {
+    background-color: var(--background-modifier-hover);
+}
+
+.diff-nav-indicator {
+    font-size: 0.85em;
+    color: var(--text-muted);
+    min-width: 3em;
+    text-align: center;
+}
+
+.diff-only-label {
+    margin-left: 10px;
+}
+
+.history-search-row {
+    display: flex;
+    gap: 5px;
+    align-items: center;
+    margin-bottom: 10px;
+}
+
+.history-search-input {
+    flex-grow: 1;
+}
+
+.history-search-result-indicator {
+    font-size: 0.8em;
+    min-width: 80px;
+}
+
+.history-search-progress-indicator {
+    font-size: 0.8em;
+    color: var(--text-muted);
+}
+
+.history-diff-options-row {
+    justify-content: space-between;
+}
+
+.history-highlight-diff-container,
+.history-highlight-diff-label {
+    display: flex;
+    align-items: center;
+}
+
+.history-highlight-diff-label {
+    gap: 4px;
+}
+
+.diff-focused {
+    outline: 2px solid var(--interactive-accent);
+    outline-offset: 1px;
+    border-radius: 2px;
+}
+

+ 43 - 0
.obsidian/plugins/omnisearch/data.json

@@ -0,0 +1,43 @@
+{
+  "useCache": true,
+  "hideExcluded": false,
+  "recencyBoost": "0",
+  "downrankedFoldersFilters": [],
+  "ignoreDiacritics": true,
+  "ignoreArabicDiacritics": false,
+  "indexedFileTypes": [],
+  "indexFilesWithoutExtension": false,
+  "displayTitle": "",
+  "PDFIndexing": false,
+  "officeIndexing": false,
+  "imagesIndexing": false,
+  "aiImageIndexing": false,
+  "unsupportedFilesIndexing": "default",
+  "splitCamelCase": false,
+  "openInNewPane": false,
+  "vimLikeNavigationShortcut": false,
+  "ribbonIcon": true,
+  "showExcerpt": true,
+  "maxEmbeds": 5,
+  "renderLineReturnInExcerpts": true,
+  "showCreateButton": false,
+  "highlight": true,
+  "showPreviousQueryResults": true,
+  "simpleSearch": false,
+  "tokenizeUrls": false,
+  "fuzziness": "1",
+  "weightBasename": 10,
+  "weightDirectory": 7,
+  "weightH1": 6,
+  "weightH2": 5,
+  "weightH3": 4,
+  "weightUnmarkedTags": 2,
+  "weightCustomProperties": [],
+  "httpApiEnabled": false,
+  "httpApiPort": "51361",
+  "httpApiNotice": true,
+  "welcomeMessage": "1.21.0",
+  "verboseLogging": false,
+  "DANGER_httpHost": null,
+  "DANGER_forceSaveCache": false
+}

Разлика између датотеке није приказан због своје велике величине
+ 5 - 0
.obsidian/plugins/omnisearch/main.js


+ 14 - 0
.obsidian/plugins/omnisearch/manifest.json

@@ -0,0 +1,14 @@
+{
+  "id": "omnisearch",
+  "name": "Omnisearch",
+  "version": "1.29.3",
+  "minAppVersion": "1.7.2",
+  "description": "A search engine that just works.",
+  "author": "Simon Cambier",
+  "authorUrl": "https://scambier.xyz",
+  "fundingUrl": {
+    "Github": "https://github.com/sponsors/scambier",
+    "Ko-fi": "https://ko-fi.com/scambier"
+  },
+  "isDesktopOnly": false
+}

+ 150 - 0
.obsidian/plugins/omnisearch/styles.css

@@ -0,0 +1,150 @@
+.omnisearch-modal {
+}
+
+.omnisearch-result {
+  white-space: normal;
+  display: flex;
+  flex-direction: row;
+  /* justify-content: space-between; */
+  flex-wrap: nowrap;
+}
+
+.omnisearch-result__title-container {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  column-gap: 5px;
+  flex-wrap: wrap;
+}
+
+.omnisearch-result__title {
+  white-space: pre-wrap;
+  align-items: center;
+  display: flex;
+  gap: 5px;
+}
+
+.omnisearch-result__title > span {
+}
+
+.omnisearch-result__folder-path {
+  font-size: 0.75rem;
+  align-items: center;
+  display: flex;
+  gap: 5px;
+  color: var(--text-muted);
+}
+
+.omnisearch-result__extension {
+  font-size: 0.7rem;
+  color: var(--text-muted);
+}
+
+.omnisearch-result__counter {
+  font-size: 0.7rem;
+  color: var(--text-muted);
+}
+
+.omnisearch-result__body {
+  white-space: normal;
+  font-size: small;
+  word-wrap: normal;
+
+  overflow: hidden;
+  display: -webkit-box;
+  -webkit-line-clamp: 3;
+  -webkit-box-orient: vertical;
+
+  color: var(--text-muted);
+  margin-inline-start: 0.5em;
+}
+
+.omnisearch-result__embed {
+  margin-left: 1em;
+}
+
+.omnisearch-result__image-container {
+  flex-basis: 20%;
+  text-align: end;
+}
+
+.omnisearch-highlight {
+}
+
+.omnisearch-default-highlight {
+  text-decoration: underline;
+  text-decoration-color: var(--text-highlight-bg);
+  text-decoration-thickness: 3px;
+  text-underline-offset: -1px;
+  text-decoration-skip-ink: none;
+}
+
+.omnisearch-input-container {
+  display: flex;
+  align-items: center;
+  flex-direction: row;
+  gap: 5px;
+}
+
+.omnisearch-result__icon {
+  display: inline-block;
+  vertical-align: middle;
+  width: 16px;
+  height: 16px;
+  margin-right: 4px;
+}
+
+.omnisearch-result__icon svg {
+  width: 100%;
+  height: 100%;
+}
+
+.omnisearch-result__icon--emoji {
+  font-size: 16px;
+  vertical-align: middle;
+  margin-right: 4px;
+}
+
+@media only screen and (max-width: 600px) {
+  .omnisearch-input-container {
+    flex-direction: column;
+  }
+
+  .omnisearch-input-container__buttons {
+    display: flex;
+    flex-direction: row;
+    width: 100%;
+    padding: 0 1em 0 1em;
+    gap: 1em;
+  }
+  .omnisearch-input-container__buttons > button {
+    flex-grow: 1;
+  }
+}
+
+@media only screen and (min-width: 600px) {
+  .omnisearch-input-container__buttons {
+    margin-inline-end: 1em;
+  }
+}
+
+.omnisearch-input-field {
+  position: relative;
+  flex-grow: 1;
+}
+
+.omnisearch-result-highlight .cm-content ::selection,
+.omnisearch-result-highlight .cm-line::selection {
+  background-color: var(
+    --omnisearch-highlight-color,
+    rgba(222, 183, 110, 1)
+  ) !important;
+  color: var(--omnisearch-highlight-text-color, black) !important;
+}
+
+.omnisearch-result-highlight .cm-selectionLayer .cm-selectionBackground {
+  background-color: var(
+    --omnisearch-highlight-color,
+    rgba(222, 183, 110, 1)
+  ) !important;
+}

+ 117 - 0
.obsidian/plugins/quickadd/data.json

@@ -0,0 +1,117 @@
+{
+  "choices": [],
+  "inputPrompt": "single-line",
+  "persistInputPromptDrafts": true,
+  "useSelectionAsCaptureValue": true,
+  "devMode": false,
+  "templateFolderPath": "",
+  "announceUpdates": "major",
+  "version": "2.12.3",
+  "globalVariables": {},
+  "onePageInputEnabled": false,
+  "disableOnlineFeatures": true,
+  "enableRibbonIcon": false,
+  "showCaptureNotification": true,
+  "showInputCancellationNotification": false,
+  "enableTemplatePropertyTypes": false,
+  "dateAliases": {
+    "t": "today",
+    "tm": "tomorrow",
+    "yd": "yesterday",
+    "nw": "next week",
+    "nm": "next month",
+    "ny": "next year",
+    "lw": "last week",
+    "lm": "last month",
+    "ly": "last year"
+  },
+  "ai": {
+    "defaultModel": "Ask me",
+    "defaultSystemPrompt": "As an AI assistant within Obsidian, your primary goal is to help users manage their ideas and knowledge more effectively. Format your responses using Markdown syntax. Please use the [[Obsidian]] link format. You can write aliases for the links by writing [[Obsidian|the alias after the pipe symbol]]. To use mathematical notation, use LaTeX syntax. LaTeX syntax for larger equations should be on separate lines, surrounded with double dollar signs ($$). You can also inline math expressions by wrapping it in $ symbols. For example, use $$w_{ij}^{\\text{new}}:=w_{ij}^{\\text{current}}+\\eta\\cdot\\delta_j\\cdot x_{ij}$$ on a separate line, but you can write \"($\\eta$ = learning rate, $\\delta_j$ = error term, $x_{ij}$ = input)\" inline.",
+    "promptTemplatesFolderPath": "",
+    "showAssistant": true,
+    "providers": [
+      {
+        "name": "OpenAI",
+        "endpoint": "https://api.openai.com/v1",
+        "apiKey": "",
+        "models": [
+          {
+            "name": "gpt-3.5-turbo",
+            "maxTokens": 4096
+          },
+          {
+            "name": "gpt-3.5-turbo-16k",
+            "maxTokens": 16384
+          },
+          {
+            "name": "gpt-3.5-turbo-1106",
+            "maxTokens": 16385
+          },
+          {
+            "name": "gpt-4",
+            "maxTokens": 8192
+          },
+          {
+            "name": "gpt-4-32k",
+            "maxTokens": 32768
+          },
+          {
+            "name": "gpt-4-1106-preview",
+            "maxTokens": 128000
+          },
+          {
+            "name": "gpt-4-turbo",
+            "maxTokens": 128000
+          },
+          {
+            "name": "gpt-4o",
+            "maxTokens": 128000
+          },
+          {
+            "name": "gpt-4o-mini",
+            "maxTokens": 128000
+          }
+        ],
+        "autoSyncModels": false,
+        "modelSource": "modelsDev"
+      },
+      {
+        "name": "Gemini",
+        "endpoint": "https://generativelanguage.googleapis.com",
+        "apiKey": "",
+        "models": [
+          {
+            "name": "gemini-1.5-pro",
+            "maxTokens": 1000000
+          },
+          {
+            "name": "gemini-1.5-flash",
+            "maxTokens": 1000000
+          },
+          {
+            "name": "gemini-1.5-flash-8b",
+            "maxTokens": 1000000
+          }
+        ],
+        "autoSyncModels": false,
+        "modelSource": "modelsDev"
+      }
+    ]
+  },
+  "migrations": {
+    "migrateToMacroIDFromEmbeddedMacro": true,
+    "useQuickAddTemplateFolder": true,
+    "incrementFileNameSettingMoveToDefaultBehavior": true,
+    "consolidateFileExistsBehavior": true,
+    "repairTemplateFileExistsBehavior": true,
+    "mutualExclusionInsertAfterAndWriteToBottomOfFile": true,
+    "setVersionAfterUpdateModalRelease": true,
+    "addDefaultAIProviders": true,
+    "removeMacroIndirection": true,
+    "migrateFileOpeningSettings": true,
+    "backfillFileOpeningDefaults": true,
+    "setProviderModelDiscoveryMode": true,
+    "migrateProviderApiKeysToSecretStorage": true
+  }
+}

Разлика између датотеке није приказан због своје велике величине
+ 5 - 0
.obsidian/plugins/quickadd/main.js


+ 12 - 0
.obsidian/plugins/quickadd/manifest.json

@@ -0,0 +1,12 @@
+{
+	"id": "quickadd",
+	"name": "QuickAdd",
+	"version": "2.12.3",
+	"minAppVersion": "1.11.4",
+	"description": "Quickly add new pages or content to your vault.",
+	"author": "Christian B. B. Houmann",
+	"authorUrl": "https://bagerbach.com",
+	"fundingUrl": "https://www.buymeacoffee.com/chhoumann",
+	"helpUrl": "https://quickadd.obsidian.guide/docs/",
+	"isDesktopOnly": false
+}

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
.obsidian/plugins/quickadd/styles.css


+ 6 - 0
.obsidian/plugins/table-editor-obsidian/data.json

@@ -0,0 +1,6 @@
+{
+  "formatType": "normal",
+  "showRibbonIcon": true,
+  "bindEnter": true,
+  "bindTab": true
+}

Разлика између датотеке није приказан због своје велике величине
+ 5 - 0
.obsidian/plugins/table-editor-obsidian/main.js


+ 15 - 0
.obsidian/plugins/table-editor-obsidian/manifest.json

@@ -0,0 +1,15 @@
+{
+  "id": "table-editor-obsidian",
+  "name": "Advanced Tables",
+  "author": "Tony Grosinger",
+  "authorUrl": "https://grosinger.net",
+  "description": "Improved table navigation, formatting, manipulation, and formulas.",
+  "isDesktopOnly": false,
+  "minAppVersion": "1.0.0",
+  "version": "0.23.2",
+  "fundingUrl": {
+    "Github Sponsor": "https://github.com/sponsors/tgrosinger",
+    "Buy me a Coffee": "https://buymeacoffee.com/tgrosinger",
+    "Paypal": "https://paypal.me/tgrosinger"
+  }
+}

+ 78 - 0
.obsidian/plugins/table-editor-obsidian/styles.css

@@ -0,0 +1,78 @@
+:root {
+  --advanced-tables-helper-size: 28px;
+}
+
+.HyperMD-table-row span.cm-inline-code {
+  font-size: 100%;
+  padding: 0px;
+}
+
+.advanced-tables-buttons>div>.title {
+  font-weight: var(--font-medium);
+  font-size: var(--nav-item-size);
+  color: var(--nav-item-color);
+  text-decoration: underline;
+}
+
+[data-type="advanced-tables-toolbar"] .nav-buttons-container {
+  gap: 0.2rem;
+  margin: 0.2rem 0 0.2rem 0;
+  justify-content: start;
+}
+
+[data-type="advanced-tables-toolbar"] .nav-buttons-container::before {
+  min-width: 2.6rem;
+  line-height: var(--advanced-tables-helper-size);
+  font-size: var(--nav-item-size);
+  font-weight: var(--nav-item-weight);
+  color: var(--nav-item-color);
+}
+
+[data-type="advanced-tables-toolbar"] .nav-buttons-container>* {
+  height: var(--advanced-tables-helper-size);
+  line-height: var(--advanced-tables-helper-size);
+}
+
+[data-type="advanced-tables-toolbar"] .nav-buttons-container .nav-action-button {
+  width: var(--advanced-tables-helper-size);
+  height: var(--advanced-tables-helper-size);
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  border-radius: var(--radius-s);
+}
+
+[data-type="advanced-tables-toolbar"] .nav-buttons-container .nav-action-button:hover {
+  background-color: var(--nav-item-background-hover);
+  color: var(--nav-item-color-hover);
+  font-weight: var(--nav-item-weight-hover);
+}
+
+.advanced-tables-row-label {
+  width: 50px;
+}
+
+.widget-icon {
+  width: 20px;
+  height: 20px;
+  fill: var(--text-muted);
+}
+
+.widget-icon:hover {
+  fill: var(--text-normal);
+}
+
+.advanced-tables-csv-export textarea {
+  height: 200px;
+  width: 100%;
+}
+
+.advanced-tables-donation {
+  width: 70%;
+  margin: 0 auto;
+  text-align: center;
+}
+
+.advanced-tables-donate-button {
+  margin: 10px;
+}

+ 4 - 0
2026-05-13.md

@@ -0,0 +1,4 @@
+
+- 13:48
+	#ASR 
+	配置能在本地运行的 ASR 软件,推荐**Sherpa‑ONNX**

+ 18 - 0
AI与模型/AI技术支持.md

@@ -0,0 +1,18 @@
+---
+notion-id: 1d1ca4d7-cb7b-8057-b4af-c4ed9f61ec4d
+---
+[MCP](AI与模型/MCP.md)
+[Ollama](Ollama.md)
+[Dify](AI与模型/Dify.md)
+[Ragflow](AI与模型/Ragflow.md)
+[Dify技巧](AI与模型/Dify技巧.md)
+[Cursor无限制](AI与模型/Cursor无限制.md)
+
+| 模型 | 版本 | 效果 | 备注 |
+| --- | --- | --- | --- |
+| gemma3 | 4b | 拥有图片识别功能 | 无法进行思维 |
+| qwen3 | 8b | 推理模型 |   |
+| deepseek-r1 | 8b | 推理模型 | 效果比qwen3好用 |
+| [**deepseek-coder-v2**](https://ollama.com/library/deepseek-coder-v2) |   | 推理模型 |   |
+| zincles/sakura-1.5b-qwen2.5-v1.0-q5ks |   | 翻译模型 | 用来进行日语翻译 |
+

+ 20 - 0
AI与模型/AI绘画/Laman-clear/CUDA详细安装.md

@@ -0,0 +1,20 @@
+一、配置环境  
+1,查看CUDA版本  
+在搜索框输入NVIDIA,点击NVIDIA控制面板  
+选中“管理3D设置”,点击下方的“系统信息”  
+点击“组件”按钮,查看CUDA版本
+
+![Exported image](Exported%20image%2020260425172256-0.png)  
+
+2、根据所需版本下载,安装CUDA  
+[https://developer.nvidia.com/cuda-toolkit-archive](https://developer.nvidia.com/cuda-toolkit-archive)  
+3、下载cudnn  
+[https://developer.nvidia.com/cudnn](https://developer.nvidia.com/cudnn)  
+安装方法:解压,覆盖CUDA的文件  
+4、安装pytorch【必须在python环境下安装】  
+[https://pytorch.org/get-started/locally/](https://pytorch.org/get-started/locally/)  
+5、运行文件检查
+
+|   |   |
+|---|---|
+|参考操作|[https://blog.csdn.net/anmin8888/article/details/127910084](https://blog.csdn.net/anmin8888/article/details/127910084)|

+ 4 - 0
AI与模型/AI绘画/Laman-clear/Laman 启动指令.md

@@ -0,0 +1,4 @@
+常用指令:iopaint start --model=lama --device=cuda --port=8080
+   
+
+iopaint start --model=Sanster/AnyText --device=cuda --port=8080

+ 21 - 0
AI与模型/AI绘画/Laman-clear/Laman-clear安装教程.md

@@ -0,0 +1,21 @@
+Laman-clear安装地址CI  
+[https://github.com/Sanster/lama-cleaner](https://github.com/Sanster/lama-cleaner)
+ 
+NVIDIA CUDA 安装下载地址  
+[https://developer.nvidia.com/cuda-toolkit-archive](https://developer.nvidia.com/cuda-toolkit-archive)
+ 
+安装PyTorch支持cuda的  
+[https://pytorch.org/get-started/locally/#anaconda](https://pytorch.org/get-started/locally/#anaconda)  
+卸载当前的 PyTorch  
+pip uninstall torch torchvision torchaudio
+ 
+运行参数  
+lama-cleaner --model=lama --device=cuda --port=8080  
+插件参数  
+--enable-realesrgan --realesrgan-model RealESRGAN_x4plus --realesrgan-device cuda
+ 
+Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted  
+会将当前用户的 PowerShell 执行策略设置为无限制,这意味着可以在 PowerShell 中执行任何未经数字签名的脚本。  
+conda init --all  
+会初始化 conda 并将其添加到 shell 配置中,以便在打开新的终端时自动激活 conda 环境。这将确保 conda 在每次打开终端时都可以使用。  
+综合来说,这两个命令的效果是允许在 PowerShell 中执行未经数字签名的脚本,并且在每次打开终端时都自动激活 conda 环境

+ 28 - 0
AI与模型/AI绘画/Stable Diffusion WebUl/C站使用教程.md

@@ -0,0 +1,28 @@
+**A****i****模型类型**
+
+|   |   |
+|---|---|
+|Checkpoint|大模型/底模型=Dreambooth|
+|Lora|微调模型|
+|Hypernetwork|微调模型|
+|Embedding|Textual inversion=Embedding|
+|Textual inversion|基于文本的反演方法|
+
+**后缀名:**
+
+|   |   |   |
+|---|---|---|
+|Ckpt|后缀名|不受加密保护|
+|Safetensors|后缀名|收到加密保护|
+|Proued|模型版本|剪枝(参数减少),容量少|
+|Ema|模型版本|平滑模型参数|
+|Ft16,FT32|模型版本|FT32保留更多的小数,FT16精度小|
+ 
+**C****站模型使用流程关键:**
+
+|   |   |   |   |
+|---|---|---|---|
+|大模型|Stable Diffsuion|必备||
+|VAE模型|解码模型|必备|有些大模型自带VAE模型不需要额外挂载|
+|微调模型|LoRA,Embedding,Hypernetwork,Dreambooth(可作为大模型)|可选|均属于大模型基础上的微调模型,特定风格+特定人物|
+|关键词||||

+ 2 - 0
AI与模型/AI绘画/Stable Diffusion WebUl/Stable Diffusion远程控制.md

@@ -0,0 +1,2 @@
+高级选项→监听端口→开放远程连接  
+windows防火墙

+ 16 - 0
AI与模型/AI绘画/Stable Diffusion WebUl/【模型】推荐.md

@@ -0,0 +1,16 @@
+|   |   |
+|---|---|
+|Anything V5|二次元风格|
+|Counterfeit-V3.0|画风精美|
+|DreamShaper|平面维度到三维切换|
+|Rev Animated|2到3D的2.5D搭配Bindbox做IP形象|
+|Chilloumix|懂得抖动|
+|Realistic Vision|超写实|
+|ChostMix|人物魔幻的场景|
+|majicMIX lux|小姐姐|
+|Product Design  <br>(minialism-eddiemauro)|产品设计|
+|Cheese Daddy's Landscapes mix|美轮美奂的场景|
+
+|   |   |
+|---|---|
+|网址|[https://huggingface.co/](https://huggingface.co/)|

+ 2 - 0
AI与模型/AI绘画/Stable Diffusion WebUl/安装&用法.md

@@ -0,0 +1,2 @@
+整合包下载地址:  
+[https://www.bilibili.com/video/BV1iM4y1y7oA/?vd_source=3325b3b63259f51a5601b457e07d02cf](https://www.bilibili.com/video/BV1iM4y1y7oA/?vd_source=3325b3b63259f51a5601b457e07d02cf)

+ 7 - 0
AI与模型/AI绘画/Stable Diffusion WebUl/插件合计.md

@@ -0,0 +1,7 @@
+|   |   |   |   |
+|---|---|---|---|
+|名称|地址|功能|说明|
+|X/Y/Z PLOT|[https://github.com/xrpgame/xyz_plot_script](https://github.com/xrpgame/xyz_plot_script)|1、提示词替换 (替换提示词内容生产内容)  <br>2、迭代步数(查看每一步数生产的效果图)  <br>3、采样器(对比)  <br>4、图像随机种子  <br>5、X,Y,Z轴都能进行对比||
+|sd-webui-depth-lib|[https://github.com/jexom/sd-webui-depth-lib](https://github.com/jexom/sd-webui-depth-lib)|替换手部模型|抖音视频教程已收藏|
+|Controlnet|[https://github.com/lllyasviel/ControlNet](https://github.com/lllyasviel/ControlNet)<br><br>  <br><br>[https://github.com/lllyasviel/ControlNet-v1-1-nightly](https://github.com/lllyasviel/ControlNet-v1-1-nightly)|图像细节补充模型|[https://v.douyin.com/UFWy7Pf/](https://v.douyin.com/UFWy7Pf/)|
+|||||

+ 2 - 0
AI与模型/AI绘画/Stable Diffusion WebUl/炼丹.md

@@ -0,0 +1,2 @@
+下载地址  
+[https://www.bilibili.com/video/BV1Eo4y1w7yU/?spm_id_from=333.999.0.0&vd_source=3325b3b63259f51a5601b457e07d02cf](https://www.bilibili.com/video/BV1Eo4y1w7yU/?spm_id_from=333.999.0.0&vd_source=3325b3b63259f51a5601b457e07d02cf)

+ 8 - 0
AI与模型/API密钥/DeepSeek-Api.md

@@ -0,0 +1,8 @@
+
+|           名称           |                                             地址                                              |
+| :--------------------: | :-----------------------------------------------------------------------------------------: |
+| `base_url` (Anthropic) |                            `https://api.deepseek.com/anthropic`                             |
+|  `base_url` (OpenAI)   |                                 `https://api.deepseek.com`                                  |
+|    `LITELLM_MODEL`     |                                      `deepseek-v4-pro`                                      |
+|  `WECHAT_WEBHOOK_URL`  | `https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=9c550c2e-77bd-41f8-a2b9-81bb1ba552b5` |
+|          API           |                            `sk-8a62671966e1470bb1a6b223a9a549fa`                            |

+ 13 - 0
AI与模型/API密钥/MiniMax-Api.md

@@ -0,0 +1,13 @@
+https://www.minimaxi.com/
+
+**接口**
+
+```
+https://api.minimaxi.com/anthropic
+```
+
+**API Key**
+
+```
+sk-cp-52AdYLyq8PI-7dGh0AL5rEzrz0xRob5mqJrKfucsjPHApPXrCOKjTVhBrnINkGG54sdOWuWOCUWSM97Wm-lDEMZPZGWtdOB6qxuLijDOh55MgNvPdM1t-6U
+```

+ 26 - 0
AI与模型/API密钥/百度API.md

@@ -0,0 +1,26 @@
+百度OCR:
+
+网址:https://console.bce.baidu.com/ai-engine/old/#/ai/ocr/app/detail~appId=7696140
+
+```
+应用名称:zhensolid
+
+应用描述:个人学习
+
+AppID:7696140
+
+API Key:TOxLD8wDkkcGmDAKyQhI1Q7o
+
+Secret Key:pqkUBThvqAKxQoGOWlsXi67uxCTtmJJ5
+```
+
+
+百度翻译:
+
+网址:https://fanyi-api.baidu.com/manage/developer
+
+```
+APP ID:20220426001191098
+
+密钥:PkQPdRwkxUbfb1AnbjMl
+```

+ 2 - 0
AI与模型/API密钥/腾讯云ASR-Api.md

@@ -0,0 +1,2 @@
+APPID:1253619497
+密钥:AKID85mCKCn7AwShfMnwoPkoa5JGhrkMhlY4

+ 839 - 0
AI与模型/Claude_Obsidian.md

@@ -0,0 +1,839 @@
+---
+tags:
+  - "#Claude_Obsidian"
+created: 2026-05-11
+---
+# Claude Obsidian / Claude Canvas 插件安装排错记录
+
+> 适用环境:macOS + Claude Code v2.1.138  
+> 主题:安装 `AgriciDaniel/claude-obsidian` 与 `AgriciDaniel/claude-canvas` 过程中遇到的问题与解决方法
+
+---
+
+## 1. 安装目标
+
+本次主要安装两个 Claude Code 插件:
+
+| 插件 | 作用 |
+|---|---|
+| `claude-obsidian` | 用于 Claude Code + Obsidian,基于 Karpathy LLM Wiki 思路管理知识库 |
+| `claude-canvas` | 用于生成 / 编辑 Obsidian Canvas,可做流程图、思维导图、知识图谱、演示画布等 |
+
+最终安装结果:
+
+```text
+claude-canvas@local-claude-marketplace
+Version: 1.0.0
+Scope: user
+Status: enabled
+
+claude-obsidian@claude-obsidian-marketplace
+Version: 1.6.0
+Scope: user
+Status: enabled
+```
+
+---
+
+## 2. `claude-obsidian` 安装过程
+
+### 2.1 添加 marketplace 成功
+
+执行:
+
+```bash
+claude plugin marketplace add AgriciDaniel/claude-obsidian
+```
+
+输出:
+
+```text
+✔ Successfully added marketplace: claude-obsidian-marketplace
+```
+
+说明 marketplace 添加成功。
+
+---
+
+### 2.2 安装插件失败:GitHub SSH 22 端口被断开
+
+执行:
+
+```bash
+claude plugin install claude-obsidian@claude-obsidian-marketplace
+```
+
+报错:
+
+```text
+Connection closed by 198.18.1.34 port 22
+fatal: Could not read from remote repository.
+```
+
+### 原因
+
+`claude plugin install` 阶段尝试通过 GitHub SSH 克隆仓库,但本地网络 / 代理环境阻断了 GitHub SSH 的 22 端口。
+
+即使已经添加了 marketplace,真正安装插件时仍然需要再次 clone 仓库。
+
+---
+
+## 3. GitHub SSH 问题处理
+
+### 3.1 原先只有 Gitee SSH Key
+
+检查:
+
+```bash
+ls ~/.ssh
+```
+
+当时只有:
+
+```text
+config
+id_ed25519_gitee
+id_ed25519_gitee.pub
+```
+
+说明本机只有 Gitee 的 SSH key,没有 GitHub 专用 key。
+
+---
+
+### 3.2 创建 GitHub SSH Key
+
+执行:
+
+```bash
+ssh-keygen -t ed25519 -C "zhensolid@outlook.com" -f ~/.ssh/id_ed25519_github
+```
+
+然后复制公钥:
+
+```bash
+pbcopy < ~/.ssh/id_ed25519_github.pub
+```
+
+去 GitHub 添加 SSH Key:
+
+```text
+GitHub → Settings → SSH and GPG keys → New SSH key
+```
+
+Title 可写:
+
+```text
+MacBook Claude Code
+```
+
+---
+
+### 3.3 配置 GitHub SSH 走 443 端口
+
+因为 22 端口被断开,所以需要让 GitHub SSH 改走 443 端口。
+
+编辑配置:
+
+```bash
+nano ~/.ssh/config
+```
+
+加入或修改为:
+
+```sshconfig
+Host github.com
+  HostName ssh.github.com
+  User git
+  Port 443
+  IdentityFile ~/.ssh/id_ed25519_github
+  IdentitiesOnly yes
+
+Host gitee.com
+  HostName gitee.com
+  User git
+  IdentityFile ~/.ssh/id_ed25519_gitee
+  IdentitiesOnly yes
+```
+
+设置权限:
+
+```bash
+chmod 600 ~/.ssh/config
+chmod 600 ~/.ssh/id_ed25519_github
+```
+
+---
+
+### 3.4 测试 GitHub SSH
+
+执行:
+
+```bash
+ssh -T git@github.com
+```
+
+第一次会提示确认主机:
+
+```text
+The authenticity of host '[ssh.github.com]:443 ...' can't be established.
+Are you sure you want to continue connecting?
+```
+
+输入:
+
+```text
+yes
+```
+
+成功输出:
+
+```text
+Hi zhensolid! You've successfully authenticated, but GitHub does not provide shell access.
+```
+
+这说明 GitHub SSH 已成功通过 443 端口连接。
+
+---
+
+### 3.5 重新安装 `claude-obsidian`
+
+执行:
+
+```bash
+claude plugin install claude-obsidian@claude-obsidian-marketplace
+```
+
+成功:
+
+```text
+✔ Successfully installed plugin: claude-obsidian@claude-obsidian-marketplace
+```
+
+---
+
+## 4. `/wiki` 命令不可用的问题
+
+安装前,直接在 clone 下来的 `claude-obsidian` 文件夹里运行 Claude Code,输入:
+
+```text
+/wiki
+```
+
+报错:
+
+```text
+Unknown command: /wiki
+```
+
+### 原因
+
+直接 `git clone` 项目作为 Vault,并不一定会自动注册 slash command。
+
+clone 方式下,Claude Code 可以读取项目里的:
+
+```text
+skills/wiki/SKILL.md
+WIKI.md
+CLAUDE.md
+```
+
+但 `/wiki` 这类 slash command 只有在插件安装成功后才会注册。
+
+---
+
+### 插件安装后实际命令
+
+安装成功后,命令列表里看到的不是单独的:
+
+```text
+/wiki
+```
+
+而是:
+
+```text
+/claude-obsidian:wiki
+/wiki-ingest
+/wiki-query
+/wiki-lint
+/wiki-fold
+```
+
+对应关系:
+
+| 命令 | 作用 |
+|---|---|
+| `/claude-obsidian:wiki` | 初始化或检查 claude-obsidian wiki vault |
+| `/wiki-ingest` | 导入资料,将 source 整理进 wiki |
+| `/wiki-query` | 基于 wiki 查询问题,优先读 hot cache 和 index |
+| `/wiki-lint` | 检查 wiki 健康度,如死链、孤立页面、重复页面 |
+| `/wiki-fold` | 将 wiki log 汇总折叠成 meta 页面 |
+
+所以实际应使用:
+
+```text
+/claude-obsidian:wiki
+```
+
+而不是:
+
+```text
+/wiki
+```
+
+---
+
+## 5. `.raw/` 目录的问题
+
+### 5.1 `.raw/` 是什么?
+
+在 `claude-obsidian` 项目中:
+
+```text
+.raw/ = 原始资料目录
+wiki/ = Claude 整理后的知识库
+```
+
+`.raw/` 下放原始资料,Claude 读取它,但默认不修改它。
+
+整理后的内容会进入:
+
+```text
+wiki/
+```
+
+---
+
+### 5.2 `.raw/` 在 Obsidian 里可能看不到
+
+因为 `.raw` 是点开头目录,macOS / Obsidian 可能默认隐藏。
+
+这不是项目异常,而是隐藏目录机制导致。
+
+---
+
+### 5.3 是否建议改成 `raw/`?
+
+不太建议随便改。
+
+原因是项目可能使用:
+
+```text
+.raw/.manifest.json
+```
+
+记录已 ingest 文件的 hash,用来避免重复处理。
+
+所以更推荐保留官方默认结构:
+
+```text
+.raw/
+```
+
+如果需要在 Finder 里显示隐藏文件,可按:
+
+```text
+Command + Shift + .
+```
+
+---
+
+### 5.4 推荐目录结构
+
+```text
+claude-obsidian/
+├── .raw/
+│   ├── inbox/
+│   ├── notes/
+│   ├── articles/
+│   ├── transcripts/
+│   └── papers/
+├── wiki/
+│   ├── index.md
+│   ├── hot.md
+│   └── log.md
+```
+
+创建目录:
+
+```bash
+cd ~/Documents/claude-obsidian
+mkdir -p .raw/inbox .raw/notes .raw/articles .raw/transcripts .raw/papers
+```
+
+日常使用:
+
+```text
+/wiki-ingest .raw/inbox
+```
+
+或者自然语言:
+
+```text
+请处理 .raw/inbox 里的新增资料,已 ingest 过的跳过,整理进 wiki,并更新 index、log、hot。
+```
+
+---
+
+## 6. 是否每次都要手动输入文件路径?
+
+不一定。
+
+可以固定使用 `.raw/inbox/` 作为资料入口。
+
+日常流程:
+
+1. 把新资料丢进:
+
+```text
+.raw/inbox/
+```
+
+2. 在 Claude Code 里说:
+
+```text
+处理 .raw/inbox 里的新增资料
+```
+
+或者:
+
+```text
+/wiki-ingest .raw/inbox
+```
+
+3. 已经整理过的文件可以通过 log / manifest 跳过,避免重复处理。
+
+---
+
+## 7. 是否每次提问都会读取全部资料?
+
+不会。
+
+正常设计是:
+
+```text
+.raw/ = 原始资料,只在 ingest 时主要读取
+wiki/ = 整理后的知识库,平时 query 主要读取
+wiki/index.md = 索引
+wiki/hot.md = 高频 / 最近上下文缓存
+wiki/log.md = 操作记录
+```
+
+提问时应该是:
+
+```text
+用户提问
+    ↓
+读取 wiki/hot.md
+    ↓
+读取 wiki/index.md
+    ↓
+定位相关 wiki 页面
+    ↓
+只读取相关页面
+    ↓
+必要时才回查 .raw/
+```
+
+为了省 token,可以这样问:
+
+```text
+根据我的 wiki 回答,优先读取 hot 和 index,只打开相关 wiki 页面,不要重新读取全部 .raw/。
+```
+
+---
+
+## 8. `claude-canvas` 安装问题
+
+### 8.1 直接安装失败
+
+执行:
+
+```bash
+claude plugin install AgriciDaniel/claude-canvas
+```
+
+报错:
+
+```text
+Plugin "AgriciDaniel/claude-canvas" not found in any configured marketplace
+```
+
+原因:Claude Code 当前的插件系统不是直接用 GitHub 仓库名安装,而是从已配置 marketplace 中查找插件。
+
+---
+
+### 8.2 `marketplace add` 也失败
+
+执行:
+
+```bash
+claude plugin marketplace add AgriciDaniel/claude-canvas
+```
+
+报错:
+
+```text
+Marketplace file not found:
+.claude-plugin/marketplace.json
+```
+
+原因:`claude-canvas` 仓库是一个 plugin 仓库,但不是 marketplace 仓库。它有:
+
+```text
+.claude-plugin/plugin.json
+```
+
+但没有:
+
+```text
+.claude-plugin/marketplace.json
+```
+
+---
+
+### 8.3 `claude plugin add` 不存在
+
+执行:
+
+```bash
+claude plugin add ~/Documents/claude-canvas
+```
+
+报错:
+
+```text
+error: unknown command 'add'
+```
+
+原因:当前 Claude Code v2.1.138 不支持 `plugin add` 这个子命令。
+
+---
+
+## 9. `claude-canvas` 最终解决方案:自建本地 marketplace
+
+### 9.1 先 clone 插件
+
+```bash
+cd ~/Documents
+git clone https://github.com/AgriciDaniel/claude-canvas
+```
+
+---
+
+### 9.2 创建本地 marketplace
+
+```bash
+mkdir -p ~/Documents/local-claude-marketplace/.claude-plugin
+mkdir -p ~/Documents/local-claude-marketplace/plugins
+cp -R ~/Documents/claude-canvas ~/Documents/local-claude-marketplace/plugins/claude-canvas
+```
+
+创建 marketplace 文件:
+
+```bash
+cat > ~/Documents/local-claude-marketplace/.claude-plugin/marketplace.json <<'EOF'
+{
+  "name": "local-claude-marketplace",
+  "description": "Local marketplace for manually installed Claude Code plugins",
+  "owner": {
+    "name": "shen liang"
+  },
+  "plugins": [
+    {
+      "name": "claude-canvas",
+      "description": "AI-orchestrated visual production for Obsidian Canvas",
+      "source": "./plugins/claude-canvas"
+    }
+  ]
+}
+EOF
+```
+
+---
+
+### 9.3 添加本地 marketplace 并安装
+
+```bash
+claude plugin marketplace add ~/Documents/local-claude-marketplace
+claude plugin install claude-canvas@local-claude-marketplace
+claude plugin list
+```
+
+成功输出:
+
+```text
+✔ Successfully added marketplace: local-claude-marketplace
+✔ Successfully installed plugin: claude-canvas@local-claude-marketplace
+```
+
+插件列表:
+
+```text
+claude-canvas@local-claude-marketplace
+Version: 1.0.0
+Scope: user
+Status: enabled
+
+claude-obsidian@claude-obsidian-marketplace
+Version: 1.6.0
+Scope: user
+Status: enabled
+```
+
+---
+
+## 10. 插件安装范围
+
+两个插件都显示:
+
+```text
+Scope: user
+```
+
+说明它们是用户级安装,**不是只能在某一个文件夹使用**。
+
+也就是说:
+
+```text
+插件命令 = 全局可用
+实际处理对象 = 当前 Claude Code 所在目录
+```
+
+例如:
+
+```bash
+cd ~/Documents/claude-obsidian
+claude
+```
+
+这时插件处理的是:
+
+```text
+~/Documents/claude-obsidian
+```
+
+如果进入另一个 Obsidian Vault:
+
+```bash
+cd ~/Documents/MyVault
+claude
+```
+
+再运行插件命令,它会作用于当前这个 Vault。
+
+---
+
+## 11. 推荐最终使用方式
+
+### 11.1 进入 Obsidian Vault
+
+```bash
+cd ~/Documents/claude-obsidian
+claude
+```
+
+---
+
+### 11.2 初始化或检查 Wiki
+
+```text
+/claude-obsidian:wiki
+```
+
+---
+
+### 11.3 导入资料
+
+把资料放到:
+
+```text
+.raw/inbox/
+```
+
+然后运行:
+
+```text
+/wiki-ingest .raw/inbox
+```
+
+或者:
+
+```text
+请处理 .raw/inbox 里的新增资料,已处理过的跳过,整理进 wiki,并更新 index、log、hot。
+```
+
+---
+
+### 11.4 查询知识库
+
+```text
+/wiki-query 实时字幕方案怎么搭建?优先基于 wiki,不要重读全部 .raw。
+```
+
+---
+
+### 11.5 检查知识库
+
+```text
+/wiki-lint
+```
+
+---
+
+### 11.6 使用 Canvas
+
+进入 Claude Code 后输入:
+
+```text
+/
+```
+
+查看是否有 canvas 相关命令。
+
+可以尝试:
+
+```text
+请基于我的 wiki,生成一个“Mac 实时字幕方案”的 Obsidian Canvas 流程图。
+```
+
+---
+
+## 12. 本次关键结论
+
+1. `claude-obsidian` 推荐通过 marketplace 安装。
+2. 如果 GitHub SSH 22 端口失败,需要配置 `github.com` 走 `ssh.github.com:443`。
+3. `/wiki` 不一定存在,实际命令是 `/claude-obsidian:wiki`。
+4. `.raw/` 是官方默认 source 目录,不建议随意改名。
+5. 平时 query 不会每次读取全部 `.raw/`,正常会先查 `hot.md` 和 `index.md`。
+6. `claude-canvas` 不是 marketplace 仓库,当前环境需要自建本地 marketplace 安装。
+7. 两个插件都已安装为 user scope,全局可用。
+8. 插件全局可用,但操作对象取决于当前 `cd` 到哪个目录。
+
+---
+
+## 13. 常用命令速查
+
+```bash
+# 进入 vault
+cd ~/Documents/claude-obsidian
+claude
+```
+
+```text
+# 初始化 / 检查 wiki
+/claude-obsidian:wiki
+```
+
+```text
+# 导入资料
+/wiki-ingest .raw/inbox
+```
+
+```text
+# 查询知识库
+/wiki-query 你的问题
+```
+
+```text
+# 检查 wiki
+/wiki-lint
+```
+
+```bash
+# 查看插件
+claude plugin list
+```
+
+```bash
+# 测试 GitHub SSH
+ssh -T git@github.com
+```
+
+```bash
+# 查看 GitHub SSH 配置
+cat ~/.ssh/config
+```
+
+## 新增:清理项目与插件操作指南
+
+如果你想彻底清理 Claude-Obsidian / Canvas 项目,可以按照以下步骤操作:
+
+### 1. 卸载插件
+
+在 Claude Code 中执行:
+
+```bash
+claude plugin uninstall claude-obsidian@claude-obsidian-marketplace
+claude plugin uninstall claude-canvas@local-claude-marketplace
+```
+
+- 只会删除插件和注册命令
+- 不会删除你的 `.raw/` 或 wiki 文件
+
+### 2. 删除本地项目仓库
+
+```bash
+rm -rf ~/Documents/claude-obsidian
+```
+
+### 3. 删除本地 marketplace(如有)
+
+```bash
+rm -rf ~/Documents/local-claude-marketplace
+```
+
+### 4. 备份或删除 `.raw/` 文件夹
+
+如果想保留原始资料:
+
+```bash
+mv ~/Documents/claude-obsidian/.raw ~/Documents/备份_raw
+```
+
+### 5. 总结清理步骤
+
+1. 卸载插件
+2. 删除本地项目文件夹
+3. 删除本地 marketplace
+4. 备份或删除 `.raw/`(可选)
+
+> 完成后,你的 Vault 和插件环境将干净,同时原始资料可以选择保留或删除。
+
+### 1. 删除特定的 MCP 服务器
+
+在终端输入以下命令:
+
+Bash
+
+```
+claude mcp remove obsidian-vault
+```
+
+### 2. 如果添加时指定了作用域(Scope)
+
+因为你之前添加时使用了 `--scope user`,为了确保彻底删除,建议也带上作用域:
+
+Bash
+
+```
+claude mcp remove obsidian-vault --scope user
+```
+
+### 3. 验证是否删除成功
+
+删除后,你可以再次查看列表来确认该服务器已经消失:
+
+Bash
+
+```
+claude mcp list
+```
+
+---
+
+### 补充说明:
+
+- **只是想临时禁用?** 目前 Claude Code 的 MCP 管理主要是增删。如果你只是不想让它运行,目前最快的方法是将其删除,或者在 Obsidian 端关闭 Local REST API 插件,这样它就会显示为 `Disconnected`。
+    
+- **手动清理配置文件:** MCP 的配置通常保存在本地的 JSON 文件中。在 macOS 上,你也可以直接去这个路径编辑或删除对应的 JSON 条目: `~/Library/Application Support/claude/claude_desktop_config.json` (针对桌面端) 或 Claude Code 对应的用户配置文件。

+ 108 - 0
AI与模型/DeerFlow.md

@@ -0,0 +1,108 @@
+---
+title: DeerFlow【AI】
+date: 2025-06-11T09:50:52+08:00
+lastmod: 2025-06-24T15:24:03+08:00
+---
+
+# DeerFlow【AI】
+
+  注意事项:最好使用wsl运行项目 避免使用windows环境导致MCP服务因为python环境无法添加
+
+  docker-compose-deerflow
+
+  项目地址:https://github.com/bytedance/deer-flow
+
+```bash
+pip install uv
+
+uv sync或pip install . 
+
+.env文件配置搜索引擎
+Tavily: https://app.tavily.com/home登录网页复制api——key填写到env
+
+conf.yaml文件配置AI模型
+
+安装web服务器
+cd deer-flow/web
+pnpm install
+
+返回目录运行
+bootstrap.bat -d
+
+进入本地地址即可使用http://localhost:3000/
+```
+
+  Tavily—api:`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`
+
+  deepseek-api:`sk-e59b4dccf95a4fd19338627bdf866ba0`
+
+  URL:`https://api.deepseek.com/v1`
+
+  Model:`deepseek-chat`
+
+  ​`sudo apt install python3 python3-pip`
+
+  ​`pip install uv --break-system-packages`
+
+## 1. 问题:Error: Failed to fetch
+
+  修改.env配置把IP地址修改成`192.168.1.58:8000`
+
+  导致无法连接后端
+
+  文件路径:`deer-flow\web\src\core\sse\fetch-stream.ts`​  
+修改`url`
+
+```bash
+fetch("http://192.168.1.58:8000/api/chat/stream", ...)
+```
+
+  ​`bootstrap.sh`添加--host 0.0.0.0 --port 8000
+
+```bash
+#!/bin/bash
+
+# Start both of DeerFlow's backend and web UI server.
+# If the user presses Ctrl+C, kill them both.
+
+if [ "$1" = "--dev" -o "$1" = "-d" -o "$1" = "dev" -o "$1" = "development" ]; then
+  echo -e "Starting DeerFlow in [DEVELOPMENT] mode...\n"
+  uv run server.py --reload --host 0.0.0.0 --port 8000 & SERVER_PID=$$!
+  cd web && pnpm dev & WEB_PID=$$!
+  trap "kill $$SERVER_PID $$WEB_PID" SIGINT SIGTERM
+  wait
+else
+  echo -e "Starting DeerFlow in [PRODUCTION] mode...\n"
+  uv run server.py & SERVER_PID=$$!
+  cd web && pnpm start & WEB_PID=$$!
+  trap "kill $$SERVER_PID $$WEB_PID" SIGINT SIGTERM
+  wait
+fi
+
+```
+
+## 2. **问题:在 Next.js 开发环境下控制台出现跨域警告**
+
+```
+⚠ Cross origin request detected from 192.168.1.58 to /_next/* resource. In a future major version of Next.js, you will need to explicitly configure "allowedDevOrigins" in next.config to allow this.
+```
+
+- **原因**:
+
+  - Next.js 开发服务器检测到你的请求跨域访问了它的内部资源,默认策略提醒你需明确允许来源。
+- **解决方案**:
+
+  - 这个警告**不影响功能**,可以暂时忽略。
+  - 如果想消除警告,修改 Next.js 项目根目录 `next.config.js`:
+
+    ```js
+    /** @type {import('next').NextConfig} */
+    const nextConfig = {
+      experimental: {
+        allowedDevOrigins: ['http://192.168.1.58:3000'],
+      },
+    };
+
+    module.exports = nextConfig;
+    ```
+  - 重启 Next.js 开发服务器。

+ 28 - 0
AI与模型/Dify.md

@@ -0,0 +1,28 @@
+---
+notion-id: 1e5ca4d7-cb7b-8083-b010-c17b202808d3
+---
+# 零、说明文档
+[https://docs.dify.ai/zh-hans/introduction](https://docs.dify.ai/zh-hans/introduction)
+# 一、安装Dify
+```javascript
+git clone https://ghproxy.net/https://github.com/langgenius/dify.git
+```
+# **二、启动 Dify**
+1. 进入 Dify 源代码的 Docker 目录
+`cd dify/docker`
+2. 复制环境配置文件
+`cp .env.example .env`
+3. 启动 Docker 容器
+根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。你可以通过 `**$ docker compose version**` 命令检查版本,详细说明请参考 [**Docker 官方文档**](https://docs.docker.com/compose/#compose-v2-and-the-new-docker-compose-command):
+    - 如果版本是 Docker Compose V2,使用以下命令:
+`docker compose up -d`
+    - 如果版本是 Docker Compose V1,使用以下命令:
+`docker-compose up -d`
+
+# **三、更新 Dify**
+进入 dify 源代码的 docker 目录,按顺序执行以下命令:
+`cd dify/docker`
+`docker compose down`
+`git pull origin main`
+`docker compose pull`
+`docker compose up -d`

+ 39 - 0
AI与模型/Dify技巧.md

@@ -0,0 +1,39 @@
+---
+notion-id: 1feca4d7-cb7b-808d-bb4b-d65005ff06dc
+---
+```plain text
+你是一个乐于助人的助手
+使用以下内容作为你所学习的知识,放在<context>
+</context>XML标签内
+```
+<context>
+{{#context#}}
+</context>
+回答用户时:
+如果你不知道,就直说你不知道。如果你在不确定的时候不知道,就寻求澄清。
+避免提及你是从上下文中获取的信息。
+并根据用户问题的语言来回答。
+```
+
+```
+正则表达式排除标签内容:
+```plain text
+(?=<\/think\n)[\s\S]*
+```
+系统提示词
+```plain text
+##任务
+将用户给出的问题的内容根据关键词提取,用于检索知识库内容
+##输出
+输出多个关键字或关键词,关键字或关键词之间用空格分隔,无需生成多余的文本,禁止直接回复用户的问题
+```
+
+```plain text
+##角色
+你是一个专业的空间情绪整理大师,擅长根据知识库的内容回复客户问题
+##背景
+严格根据知识库的内容进行回复
+##任务
+严格根据知识库的内容回复用户的问题
+{{#context#}}
+```

+ 257 - 0
AI与模型/Hermes Agent.md

@@ -0,0 +1,257 @@
+---
+notion-id: 343ca4d7-cb7b-808d-80ff-d856a5d7bc9d
+---
+
+## **第 1 步:配置防爬浏览器(Camofox)**
+### **为什么需要**
+普通的后端浏览器(如 Chromium headless)访问大多数网站会立即被反爬机制拦截。Camofox 提供了一个「像真人一样」的浏览器环境,使 Hermes 能够:
+- 自动读取网页文章
+- 自动填写表单
+- 操作需要登录的后台系统
+- 执行复杂的网页自动化任务
+
+### **配置步骤**
+直接告诉 Hermes:
+```plain text
+帮我配置 CAMOFOX 及 CAMOFOX_URL
+```
+Hermes 会自动完成配置文件的写入,并在需要高危操作时主动请求你的授权。
+> **亮点一**:Hermes 会智能识别高危指令并请求授权,比 OpenClaw 更清晰地告知你它要做什么,而不是带着一堆无意义数字的授权请求。
+
+## **第 2 步:配置灵魂定义(SOUL.md)**
+### **什么是 SOUL.md**
+SOUL.md 是 Hermes 的人格配置文件,定义了 Agent 的思考模式、行为约束和输出风格。默认文件是空注释,需要你自己填写。
+### **最佳实践:先聊再总结**
+推荐流程:先和 Hermes 正常使用 1-2 天,展现你的工作风格和偏好,然后问:
+```plain text
+灵魂定义(SOUL.md)你有没有推荐的配置,基于我们的对话风格来建议?
+```
+Hermes 会读取历史会话,生成贴合你习惯的配置。然后让它写入:
+```plain text
+帮我编辑写入 ~/.hermes/SOUL.md
+```
+> **亮点二**:Hermes 能读取 session 历史并据此生成个性化建议,体现了其会话感知机制的价值。
+
+## **第 3 步:配置 Auxiliary 副驾模型路由**
+### **设计理念**
+Auxiliary 是 Hermes 的副驾 LLM 路由中心。核心思路:让主模型专注复杂推理,让便宜/专用的副模型承担「脏活累活」,从而节省成本、提升效率。
+### **支持配置的 8 个辅助任务**
+
+| **辅助模型** | **用途说明** |
+| --- | --- |
+| vision | 截图 / 验证码 / 图片分析 |
+| web_extract | 网页内容抓取与提炼 |
+| compression | 上下文压缩摘要(节省 Token) |
+| session_search | 历史会话搜索与摘要 |
+| approval | 高危命令审批决策 |
+| skills_hub | 技能市场搜索与安装 |
+| mcp | MCP 服务调用辅助 |
+| flush_memories | 记忆系统清理与重组 |
+
+### **配置示例**
+直接口头告知 Hermes:
+```plain text
+压缩会话的辅助模型帮我配置成 qwen3.5-plus
+```
+### **验证配置**
+```plain text
+# 手动触发压缩
+hermes compress
+
+# 查看日志确认模型路由
+tail -f ~/.hermes/logs/agent.log
+```
+日志中你应该看到类似:
+```plain text
+Auxiliary compression: using auto (qwen3.5-plus) at https://dashscope.aliyuncs.com/...
+```
+> **亮点三**:压缩阈值默认 50%,不同上下文长度的模型触发比例不同:1M 模型可分配最多 50K token 给摘要,200K 模型只有 10K。这比统一阈值更合理。
+
+## **第 4 步:配置三层记忆系统**
+Hermes 记忆系统分为三层,由浅到深,可按需启用。**建议先用第一层 + 第三层,满足需求后再考虑引入第二层。**
+### **第一层:内置记忆(默认已开)**
+编辑 `**~/.hermes/config.yaml**` 进行微调:
+```plain text
+memory:
+  memory_enabled: true        # MEMORY.md — 项目事实、踩坑记录
+  user_profile_enabled: true  # USER.md — 用户画像与偏好
+  memory_char_limit: 4000     # 默认 2200,重度使用建议调到 4000
+  user_char_limit: 1375       # 用户画像字符上限
+  nudge_interval: 5           # 每 5 轮提醒存记忆(默认 10,调小更积极)
+  flush_min_turns: 6          # 至少 6 轮才触发退出时的记忆刷新
+```
+### **第二层:外部 Memory Provider(按需)**
+支持 mem0、Zep 等 8 个外挂记忆插件。配置方式:
+```plain text
+hermes memory setup
+```
+> **注意**:开启后每轮对话会增加至少 2 次 API 调用(写入 + 搜索),根据使用频率权衡是否开启。
+> **亮点四**:密钥与配置分离,采用 YAML 格式,修改直观友好。
+
+### **第三层:Session Search(默认已开)**
+所有历史对话自动持久化到本地 SQLite,支持关键词检索 + LLM 摘要,是记忆系统的兜底机制:
+- **存储位置**:`**~/.hermes/state.db**`
+- **检索方式**:FTS5 关键词[全文搜索](https://cloud.tencent.com/product/es?from_column=20421&from=20421) + LLM 二次摘要
+- **兜底保障**:LLM 调用失败时返回原始文本前 500 字符,不会因故障而完全失效
+
+不需要额外配置,Session Search 默认开启。Agent 会根据你的问题自动判断是否需要检索历史。
+
+---
+## **第 5 步:配置 Web Search**
+### **支持的搜索引擎**
+Hermes 原生支持 4 个搜索提供商:**Exa、Tavily、Parallel、Firecrawl**。
+### **配置方式**
+直接告诉 Hermes:
+```plain text
+帮我配置 exa 搜索
+```
+Hermes 会引导你输入 API Key 并完成配置。配置成功后可以直接测试:
+```plain text
+搜索一下今天 AI 领域有什么新进展
+```
+> **亮点五**:Hermes 默认会在 IM 界面清晰打印每个 tool 调用的过程,执行过程完全透明可见。
+
+---
+## **第 6 步:配置自动化审计(Hooks)**
+### **两种扩展方式**
+Hermes 提供两套互补的扩展系统:
+- **Gateway Hooks**:事件驱动钩子,处理生命周期通知
+- **Plugin System**:插件生命周期钩子,处理功能扩展
+
+### **8 个生命周期 Hook**
+```plain text
+on_session_start      → 会话创建时
+pre_llm_call          → LLM 调用前(可注入上下文)
+pre_api_request       → 每次 API 调用前
+post_api_request      → 每次 API 调用后
+pre_tool_call         → 工具执行前
+post_tool_call        → 工具执行后
+post_llm_call         → 本轮对话结束
+on_session_end        → 会话结束
+```
+### **实战:创建终端命令审计 Hook**
+告诉 Hermes:
+```plain text
+做一个终端命令审计插件(Terminal Audit Hook):
+在每次 terminal 工具执行完毕后,自动把命令内容、
+执行结果、时间戳、会话 ID 追加到日志文件。
+```
+授权后,Hermes 会自动生成并激活这个 Hook。
+### **验证**
+```plain text
+# 执行任意命令后,检查审计日志
+tail -f ~/.hermes/audit_logs/terminal_audit.log
+```
+## **第 7 步:配置 Docker 沙箱**
+### **为什么需要沙箱**
+默认情况下 Hermes 在本地执行命令,存在一定风险。Docker 沙箱将命令执行隔离在容器中,即使 Agent 执行了危险命令,也只会影响容器内的环境。
+### **配置步骤**
+```plain text
+# 创建一个使用 Docker 沙箱的 worker profile
+hermes -p worker config set terminal.backend docker
+hermes -p worker config set terminal.docker_image python:3.11-slim
+
+# 配置 worker 使用便宜模型(沙箱任务不需要顶级模型)
+hermes -p worker config set model.provider alibaba
+hermes -p worker config set model.model qwen3.5-plus
+
+# 如果使用 Telegram,绑定独立的 Bot Token
+hermes -p worker config set gateway.telegram.bot_token "YOUR_BOT_TOKEN_B"
+hermes -p worker config set gateway.telegram.enabled true
+```
+也可以直接告诉主 Agent:
+```plain text
+参考如下命令,帮我额外配置一个 profile,sandbox 使用 docker,模型遵循主 profile 即可
+```
+### **验证沙箱隔离**
+```plain text
+# 在 worker bot 中执行(不会真正损坏宿主机)
+rm -rf /
+
+# 在宿主机验证 Docker 已启动
+docker ps
+```
+> **亮点六**:多 profile 配置非常友好,一句话就让 Hermes 完成配置。主 profile 保持安全,worker profile 承担高风险任务。
+
+---
+## **第 8 步:使用多 Agent**
+### **两种多 Agent 模式**
+- **同一 Session 内触发 Sub-Agent**:适合并行子任务
+- **完全隔离的多 Profile**:适合不同安全级别的任务分工(见第 7 步)
+
+### **触发 Sub-Agent**
+只需一句话:
+```plain text
+请 spawn 三个 subagent 来相互讨论 Hermes 的优劣势
+```
+三个 Sub-Agent 会在同一 Session 中并行工作,各自发言,最终给出汇总。这种方式适合需要多角度分析或并行处理的复杂任务。
+
+---
+## **第 9 步:建立备份体系**
+### **三层备份策略**
+- **第一层**:本地 Git(快速版本控制)
+- **第二层**:其他磁盘定时备份(防止硬盘故障)
+- **第三层**:远程备份(GitHub 私有仓库 / 对象存储)
+
+### **完整备份脚本**
+将以下脚本保存为 `**~/hermes_backup.sh**`:
+```plain text
+#!/bin/bash
+BACKUP_NAME="hermes_backup_$(date +%Y%m%d_%H%M%S)"
+BACKUP_DIR="/tmp/$BACKUP_NAME"
+DEST_DIR=~/hermes_backups
+
+mkdir -p $BACKUP_DIR/hermes $DEST_DIR
+
+echo "正在备份核心配置..."
+cp ~/.hermes/config.yaml $BACKUP_DIR/hermes/
+cp ~/.hermes/.env $BACKUP_DIR/hermes/
+cp ~/.hermes/MEMORY.md $BACKUP_DIR/hermes/ 2>/dev/null
+
+echo "正在备份数据库与会话..."
+cp ~/.hermes/state.db $BACKUP_DIR/hermes/
+cp -r ~/.hermes/sessions $BACKUP_DIR/hermes/ 2>/dev/null
+
+echo "正在备份扩展与技能..."
+cp -r ~/.hermes/plugins $BACKUP_DIR/hermes/ 2>/dev/null
+cp -r ~/.hermes/skills $BACKUP_DIR/hermes/ 2>/dev/null
+cp -r ~/.hermes/audit_logs $BACKUP_DIR/hermes/ 2>/dev/null
+
+echo "正在备份所有 Profile..."
+cp -r ~/.hermes/profiles $BACKUP_DIR/hermes/ 2>/dev/null
+
+echo "压缩中..."
+tar -czf $DEST_DIR/$BACKUP_NAME.tar.gz -C /tmp $BACKUP_NAME
+rm -rf $BACKUP_DIR
+
+echo "✅ 备份完成:$DEST_DIR/$BACKUP_NAME.tar.gz"
+echo "大小:$(du -h $DEST_DIR/$BACKUP_NAME.tar.gz | cut -f1)"
+```
+```plain text
+# 添加执行权限并运行
+chmod +x ~/hermes_backup.sh
+~/hermes_backup.sh
+
+# 可选:添加到 crontab,每天凌晨 2 点自动备份
+# 0 2 * * * ~/hermes_backup.sh
+```
+> `**.env**` 文件包含 API Key,建议加入 `**.gitignore**`,不要推送到 GitHub。
+
+---
+## **第 10 步:安装与沉淀技能(Skills)**
+### **自动技能沉淀**
+Hermes 最令人印象深刻的功能之一:它会自动将有价值的操作流程总结并固化为可复用的技能。
+触发条件:每累计 15 次工具循环(`**config.yaml**` 中的 `**creation_nudge_interval**` 参数),Hermes 会在后台启动一个 Skill Review:
+```plain text
+# Skill Review 的三种结果:
+# 1. 发现可更新的现有技能 → 自动更新补充新经验
+# 2. 发现值得新建的技能   → 创建新技能文件
+# 3. 没有值得保存的内容   → 输出 Nothing to save. 结束
+```
+整个过程在后台线程运行,不阻塞当前对话。
+### **手动安装技能**
+```plain text
+帮我安装 git 操作相关的技能
+帮我搜索并安装 Docker 管理技能
+```
+> **亮点七**:Hermes 自动将有价值的操作沉淀为永久技能,避免重复踩坑。这是它相比其他 Agent 框架最有差异化的亮点之一。

+ 20 - 0
AI与模型/MCP.md

@@ -0,0 +1,20 @@
+---
+notion-id: 244ca4d7-cb7b-8089-b0ab-c6f3b771d5fd
+---
+在wsl运行mcp配置,注意command 是wsl,如果wsl使用的是windows环境的那么会报错
+必须先检查下运行环境是否在wsl,检查指令`which node`
+```shell
+{
+  "mcpServers": {
+    "filesystem": {
+      "command": "wsl",
+      "args": [
+        "npx",
+        "-y",
+        "@modelcontextprotocol/server-filesystem",
+        "/mnt/d/Github/snake_game"
+      ]
+    }
+  }
+}
+```

+ 74 - 0
AI与模型/Ollama.md

@@ -0,0 +1,74 @@
+---
+title: Ollama
+date: 2025-02-05T14:50:55+08:00
+lastmod: 2025-02-06T09:27:22+08:00
+---
+
+# Ollama
+
+  官方网站:https://ollama.com/
+
+  一、下载符合自己系统的应用程序
+
+  二、选择`Models`下载自己所需的AI模型
+
+  三、修改模型地址:*​`OLLAMA_MODELS`​*
+
+  **Ollama相关指令:**
+
+```shell
+Usage:
+  ollama [flags]
+  ollama [command]
+
+Available Commands:
+  serve       Start ollama
+  create      Create a model from a Modelfile
+  show        Show information for a model
+  run         Run a model
+  stop        Stop a running model
+  pull        Pull a model from a registry
+  push        Push a model to a registry
+  list        List models
+  ps          List running models
+  cp          Copy a model
+  rm          Remove a model
+  help        Help about any command
+
+Flags:
+  -h, --help      help for ollama
+  -v, --version   Show version information
+```
+
+  默认Ollama的api接口测试实现`A电脑`​→`B电脑`
+
+  注意要点:
+
+  一、防火墙规则配置完善
+
+  二、是否开启认证模式
+
+```powershell
+curl http://192.168.2.64:11434/api/tags
+
+响应地址:
+StatusCode        : 200
+StatusDescription : OK
+Content           : {"models":[{"name":"deepseek-r1:7b","model":"deepseek-r1:7b","modified_at":"2025-02-01T13:06:08.629
+                    5817+08:00","size":4683075271,"digest":"0a8c266910232fd3291e71e5ba1e058cc5af9d411192cf88b6d30e92b6e
+                    73...
+RawContent        : HTTP/1.1 200 OK
+                    Content-Length: 682
+                    Content-Type: application/json; charset=utf-8
+                    Date: Wed, 05 Feb 2025 07:02:02 GMT
+
+                    {"models":[{"name":"deepseek-r1:7b","model":"deepseek-r1:7b","modified_at":"...
+Forms             : {}
+Headers           : {[Content-Length, 682], [Content-Type, application/json; charset=utf-8], [Date, Wed, 05 Feb 2025 07
+                    :02:02 GMT]}
+Images            : {}
+InputFields       : {}
+Links             : {}
+ParsedHtml        : mshtml.HTMLDocumentClass
+RawContentLength  : 682
+```

+ 16 - 0
AI与模型/Open-webui.md

@@ -0,0 +1,16 @@
+---
+title: Open-webui
+date: 2025-02-05T15:05:05+08:00
+lastmod: 2025-02-05T16:31:13+08:00
+---
+
+# Open-webui
+
+  项目:https://github.com/open-webui/open-webui?tab=readme-ov-file
+
+```powershell
+docker run -d -p 8080:8080 --add-host=host.docker.internal:host-gateway -v C:\docker\open-webui-data:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
+
+```
+
+  ‍

+ 25 - 0
AI与模型/Ragflow.md

@@ -0,0 +1,25 @@
+---
+notion-id: 217ca4d7-cb7b-80d0-ab43-c272c3d55f49
+---
+# 一、Docker安装
+克隆仓库
+```javascript
+git clone https://ghproxy.net/https://github.com/infiniflow/ragflow.git
+```
+进入文件
+```javascript
+cd ragflow
+```
+运行脚本
+```javascript
+docker compose -f docker-compose.yml up -d
+```
+# 二、基础操作
+访问IP地址默认是80端口,也可以配置成其他端口
+`http://localhost:80`
+配置文本识别模型`nomic-embed-text:latest`
+# 三、基础配置
+1,Dfiy配置外部知识库 API
+`http://localhost:80/api/v1/dify`
+2、知识库ID
+![[Notion/技术支持/AI技术支持/attachments/image.png]]

BIN
AI与模型/attachments/image 1.png


BIN
AI与模型/attachments/image 2.png


BIN
AI与模型/attachments/image.png


+ 21 - 0
AI与模型/微信MCP.md

@@ -0,0 +1,21 @@
+---
+title: 微信MCP
+date: 2025-06-08T11:12:09+08:00
+lastmod: 2025-06-08T11:17:26+08:00
+---
+
+# 微信MCP
+
+  项目地址:[https://github.com/sjzar/chatlog](https://github.com/sjzar/chatlog)
+
+  微信历史版本:
+
+  https://github.com/cscnk52/wechat-windows-versions/releases/tag/v4.0.3.36
+
+  https://github.com/iibob/WechatWindowsVersionHistory/releases/tag/v4.0.3.36
+
+  ‍
+
+  MCP服务地址`http://127.0.0.1:5030/sse`
+
+  需要调用包含tool的模型,并且注意模型运行会修改日期,请提示词严格限制修改日期

+ 21 - 0
AI与模型/模型配置/Grok-beta.md

@@ -0,0 +1,21 @@
+---
+title: Grok-beta
+date: 2024-11-21T11:43:23+08:00
+lastmod: 2024-11-21T11:50:27+08:00
+---
+
+# Grok-beta
+
+  官方网站:[https://x.ai/](https://x.ai/)
+
+  使用Google账户注册
+
+  点击设置可`删除`
+
+  baseURL: "`https://api.x.ai/`"
+
+  model: "`grok-beta`"
+
+  注意查看文档使用手册以及API连接地址
+
+  需要搭配`https://github.com/Bin-Huang/chatbox`​使用`chatbox`

+ 39 - 0
AI与模型/模型配置/Llama.cpp本地模型运行.md

@@ -0,0 +1,39 @@
+仓库地址
+```shell
+https://github.com/ggml-org/llama.cpp
+```
+版本下载:
+**llama-b8925-bin-macos-arm64.tar.gz**
+解除 macOS 安全限制(关键)
+```shell
+# -c 代表清除 (clear),-r 代表递归 (recursive) 到所有子文件
+xattr -cr .
+```
+验证运行
+```shell
+./llama-cli --version
+```
+Llama.cpp下载模型并启用指令`-hf  <模型网址>`
+> 模型网址`https://huggingface.co/`
+
+```shell
+./llama-cli -hf mradermacher/gemma-4-26B-A4B-it-heretic-GGUF:Q4_K_M \
+    -p "你好,请介绍一下你自己。" \
+    --temp 1.0 --top-p 0.95
+```
+Llama.cpp启用本地模型指令 `-m <本地模型地址>`
+```shell
+./llama-cli -m ~/Library/Caches/llama.cpp/mradermacher_gemma-4-26B-A4B-it-heretic-GGUF_gemma-4-26B-A4B-it-heretic.Q4_K_M.gguf \
+    -p "你好,请介绍一下你自己,并解释一下什么是 MoE 架构。" \
+    -ngl 99 \
+    --temp 0.7
+```
+Llama.cpp部署api
+```shell
+./llama-server \
+    -m ~/Library/Caches/llama.cpp/mradermacher_gemma-4-26B-A4B-it-heretic-GGUF_gemma-4-26B-A4B-it-heretic.Q4_K_M.gguf \
+    --host 0.0.0.0 \
+    --port 8080 \
+    -ngl 99 \
+    -c 8192
+```

+ 9 - 0
AI与模型/模型配置/模型教程.md

@@ -0,0 +1,9 @@
+---
+aliases: []
+---
+`llama.cpp`和`lm studio` 可以共享模型
+`lm studio`模型目录注意要点必须二级目录,才能识别。
+> [!note] 📌
+> /Users/shenliang/.lmstudio/models/<作者名>/<模型名称>
+
+[Llama.cpp本地模型运行](Llama.cpp本地模型运行.md)

+ 309 - 0
Clippings/Windows 本地 AI 又升级了!llama.cpp 官方支持 CUDA 13 Vulkan HIP SYCL,一键跑 GGUF 无审查模型!.md

@@ -0,0 +1,309 @@
+---
+title: "Windows 本地 AI 又升级了!llama.cpp 官方支持 CUDA 13 / Vulkan / HIP / SYCL,一键跑 GGUF 无审查模型!"
+source: "https://www.freedidi.com/24211.html"
+author:
+  - "[[admin]]"
+published: 2026-05-18
+created: 2026-05-20
+description: "最近,llama.cpp 又迎来了一次非常重要的更新。对于经常在 Windows 上折腾本地 AI 大模型的用户来说,这次更新可以说相当实用。"
+tags:
+  - "clippings"
+---
+最近,llama.cpp 又迎来了一次非常重要的更新。对于经常在 Windows 上折腾本地 AI 大模型的用户来说,这次更新可以说相当实用。
+
+因为现在官方已经开始真正意义上的:“降低 Windows 本地 AI 的使用门槛”!
+
+![20260518064042 404956 scaled](https://www.freedidi.com/wp-content/uploads/2026/05/20260518064042_404956-scaled.webp "Windows 本地 AI 又升级了!llama.cpp 官方支持 CUDA 13 / Vulkan / HIP / SYCL,一键跑 GGUF 无审查模型! 1")
+
+![20260518110005 256951 scaled](https://www.freedidi.com/wp-content/uploads/2026/05/20260518110005_256951-scaled.webp "Windows 本地 AI 又升级了!llama.cpp 官方支持 CUDA 13 / Vulkan / HIP / SYCL,一键跑 GGUF 无审查模型! 2")
+
+以前很多人第一次接触本地大模型,最头疼的其实不是模型本身,而是各种环境问题:
+
+- CUDA 版本不匹配
+- DLL 缺失
+- 驱动不兼容
+- CMake 编译失败
+- 环境变量错误
+- Vulkan / HIP 配置复杂
+- Windows 编译过程报错
+
+尤其很多新手,教程还没看完,就已经被环境问题劝退了。
+
+但现在不一样了。
+
+在 llama.cpp 最新发布的 b9196 版本中,官方已经直接提供了多种 Windows 预编译版本,很多情况下已经可以做到:下载 → 解压 → 双击运行!这对于 Windows 本地 AI 用户来说,绝对算是一件好事。
+
+![20260518105919 469897 scaled](https://www.freedidi.com/wp-content/uploads/2026/05/20260518105919_469897-scaled.webp "Windows 本地 AI 又升级了!llama.cpp 官方支持 CUDA 13 / Vulkan / HIP / SYCL,一键跑 GGUF 无审查模型! 3")
+
+## llama.cpp 是什么?
+
+llama.cpp 官方 GitHub 是目前最流行的本地 GGUF 模型推理框架之一。
+
+![20260518064922 507431](https://www.freedidi.com/wp-content/uploads/2026/05/20260518064922_507431.webp "Windows 本地 AI 又升级了!llama.cpp 官方支持 CUDA 13 / Vulkan / HIP / SYCL,一键跑 GGUF 无审查模型! 4")
+
+## 官方下载:【点击前往】 或 【网盘下载】、【整合下载】
+
+很多大家熟悉的本地模型,其实都可以通过 llama.cpp 运行:
+
+- Qwen
+- Llama
+- DeepSeek
+- Gemma
+- Hermes
+- Dolphin
+- Mistral
+- Mixtral
+
+尤其现在 GGUF 生态越来越成熟,很多模型都会第一时间发布 GGUF 量化版本。
+
+## 视频教程:
+
+![](https://www.youtube.com/watch?v=uqsL3RcBfn8)
+
+而 llama.cpp 最大的优势就是:
+
+> 轻量  
+> 跨平台  
+> 支持 GPU  
+> 支持 CPU  
+> 支持 GGUF
+
+而且现在甚至已经支持:
+
+> 多模态  
+> 图片理解  
+> Vision 模型  
+> OpenAI 风格 API  
+> 网页聊天界面
+
+## llama.cpp 最新 Windows 版本支持什么?
+
+目前官方 Release 页面已经直接提供:
+
+- Windows x64 CPU
+- Windows x64 CUDA 12.4
+- Windows x64 CUDA 13.1
+- Windows x64 Vulkan
+- Windows x64 HIP Radeon
+- Windows x64 SYCL
+- Windows ARM64 CPU
+
+这意味着:
+
+## NVIDIA 用户
+
+可以直接选择:CUDA 12.4 或者 CUDA 13.1
+
+如果你是:
+
+- RTX 3060
+- RTX 4060
+- RTX 4070
+- RTX 4080
+- RTX 4090
+
+基本建议优先 CUDA。
+
+## AMD 用户
+
+现在终于不用完全依赖 ROCm 了。
+
+你可以:HIP 或者 Vulkan
+
+很多情况下,Vulkan 反而比 HIP 更稳定。
+
+## Intel 用户
+
+现在 Intel 核显、Arc 独显也终于有得玩了。
+
+可以尝试:SYCL 或者 Vulkan
+
+虽然性能和 NVIDIA 还有差距,但已经能正常跑很多 GGUF 小模型。
+
+## 如何启动 GGUF 模型?
+
+例如:gemma-4-31b-jang-crack-Q4\_K\_M.gguf
+
+启动方式其实非常简单。
+
+进入 llama.cpp 目录:
+
+llama-server.exe -m models\\你的模型.gguf -ngl 999
+
+llama-server.exe -m models\\你的模型.gguf -ngl 999
+
+```js
+llama-server.exe -m models\你的模型.gguf -ngl 999
+```
+
+其中:-ngl 999 代表尽量把模型全部加载到 GPU。
+
+启动成功后,浏览器打开:http://127.0.0.1:8080
+
+即可进入网页聊天界面。
+
+## 如何启动 GGUF 多模态视觉模型?
+
+加载视觉模型需要2个文件,一个是主模型文件,另外一个就是 mmproj 视觉模型加载文件
+
+目前支持较好的包括:
+
+## Qwen2-VL / Qwen2.5-VL
+
+目前中文视觉能力最强之一:
+
+- OCR
+- 截图理解
+- 网页识别
+- 中文图片问答
+
+表现都非常强。
+
+### 主模型下载:【点击前往】或 【网盘下载】、【备用下载】
+
+![20260518071309 620194](https://www.freedidi.com/wp-content/uploads/2026/05/20260518071309_620194.webp "Windows 本地 AI 又升级了!llama.cpp 官方支持 CUDA 13 / Vulkan / HIP / SYCL,一键跑 GGUF 无审查模型! 5")
+
+比如我让它给做视频封面的点击率测试,居然可以做到100%正确!当然它的功能远不止这些…….
+
+**多模态模型启用:**
+
+llama-server.exe -m "models\\主模型.gguf" --mmproj "models\\mmproj视觉模型.gguf" -ngl 999
+
+llama-server.exe -m "models\\主模型.gguf" --mmproj "models\\mmproj视觉模型.gguf" -ngl 999
+
+```js
+llama-server.exe -m "models\主模型.gguf" --mmproj "models\mmproj视觉模型.gguf" -ngl 999
+```
+
+## 无审查模型:
+
+**1、Llama3-8b-DarkIdol 是比较热门的无审查的开源大模型**
+
+**支持中文、日文和英语,非常适合角色扮演。**
+
+### 模型下载:【点击前往】或 【打包下载】打包版下载即可使用无需合并转换格式
+
+下载合并为GGUF模型格式
+
+huggingface-cli download aifeifei798/llama3-8B-DarkIdol-2.3-Uncensored-32K --local-dir DarkIdol-HF --local-dir-use-symlinks False
+
+huggingface-cli download aifeifei798/llama3-8B-DarkIdol-2.3-Uncensored-32K --local-dir DarkIdol-HF --local-dir-use-symlinks False
+
+```js
+huggingface-cli download aifeifei798/llama3-8B-DarkIdol-2.3-Uncensored-32K --local-dir DarkIdol-HF --local-dir-use-symlinks False
+```
+
+然后用 llama.cpp 转 GGUF:
+
+git clone https://github.com/ggerganov/llama.cpp
+
+cd llama.cpp
+
+pip install -r requirements.txt
+
+python convert\_hf\_to\_gguf.py../DarkIdol-HF --outtype f16 --outfile../DarkIdol-F16.gguf
+
+git clone https://github.com/ggerganov/llama.cpp cd llama.cpp pip install -r requirements.txt python convert\_hf\_to\_gguf.py../DarkIdol-HF --outtype f16 --outfile../DarkIdol-F16.gguf
+
+```js
+git clone https://github.com/ggerganov/llama.cpp
+cd llama.cpp
+pip install -r requirements.txt
+
+python convert_hf_to_gguf.py ../DarkIdol-HF --outtype f16 --outfile ../DarkIdol-F16.gguf
+```
+
+需要量化成 Q4\_K\_M的话可以命令:
+
+llama-quantize.exe../DarkIdol-F16.gguf../DarkIdol-Q4\_K\_M.gguf Q4\_K\_M
+
+llama-quantize.exe../DarkIdol-F16.gguf../DarkIdol-Q4\_K\_M.gguf Q4\_K\_M
+
+```js
+llama-quantize.exe ../DarkIdol-F16.gguf ../DarkIdol-Q4_K_M.gguf Q4_K_M
+```
+
+![20260518065228 136336](https://www.freedidi.com/wp-content/uploads/2026/05/20260518065228_136336.webp "Windows 本地 AI 又升级了!llama.cpp 官方支持 CUDA 13 / Vulkan / HIP / SYCL,一键跑 GGUF 无审查模型! 6")
+
+**2、Gemma-4-31b-jang-crack-Q4\_K\_M 是 Google 开源的无审查大模型**
+
+这是一个在本地跑:听话、高效、不乱加道德判断的AI
+
+- **推理能力扎实:在数学和代码相关任务上表现突出,尤其长上下文处理(原生支持128K,部分可扩展到256K)。你甚至可以把整个项目代码库或一本技术手册一次性喂给它,它不会轻易“失忆”。**
+- **参数效率高:**  
+	26B MoE版本激活参数不多,跑起来相对轻快,在很多基准上效率比同级别模型更好。
+- **开源友好:**  
+	Apache 2.0协议,允许修改、商用和二次分发,这对想自己折腾或做副业的朋友来说非常实用。
+
+官方版的主要问题是安全对齐层比较厚,很多正常的技术探讨或创意场景容易被挡住。越狱版通过社区技术(abliteration等)移除了这部分限制,保留了绝大部分原始能力。
+
+### 模型下载:【点击前往】或 【打包下载】、【备用下载】
+
+![20260518094514 729207](https://www.freedidi.com/wp-content/uploads/2026/05/20260518094514_729207.webp "Windows 本地 AI 又升级了!llama.cpp 官方支持 CUDA 13 / Vulkan / HIP / SYCL,一键跑 GGUF 无审查模型! 7")
+
+## 更多越狱模型:
+
+1、Hermes-3 【 **[点击下载](https://huggingface.co/NousResearch/Hermes-3-Llama-3.1-8B)** 】
+
+2、Qwen 越狱模型【 [**点击下载**](https://huggingface.co/zemelee/qwen2.5-jailbreak) 】
+
+3、Deepseek 越狱模型【 **[点击下载](https://huggingface.co/huihui-ai)** 】
+
+## 多种模态自由切换运行:
+
+如果我们同时下载了多种不同的模型,为了方便统一管理,在运行的时候我们可以使用零度的这个脚本,来实现多模型自由切换运行,注意将里面的模型名称改成你自己的!
+
+@echo off
+
+chcp 65001 >nul
+
+cd /d C:\\Users\\LINGDU\\Desktop\\llama-b9196-bin-win-cuda-13.1-x64
+
+echo 请选择模型:
+
+echo 1. Gemma 31B
+
+echo 2. Qwen VL 多模态
+
+echo 3. DeepSeek
+
+set /p choice=输入数字:
+
+if "%choice%"=="1" llama-server.exe -m "models\\gemma-4-31b-jang-crack-Q4\_K\_M.gguf" -ngl 999
+
+if "%choice%"=="2" llama-server.exe -m "models\\Qwen2.5-VL-7B-Instruct-Q4\_K\_M.gguf" --mmproj "models\\mmproj-BF16.gguf" -ngl 999
+
+if "%choice%"=="3" llama-server.exe -m "models\\deepseek.gguf" -ngl 999
+
+pause
+
+@echo off chcp 65001 >nul cd /d C:\\Users\\LINGDU\\Desktop\\llama-b9196-bin-win-cuda-13.1-x64 echo 请选择模型: echo 1. Gemma 31B echo 2. Qwen VL 多模态 echo 3. DeepSeek set /p choice=输入数字: if "%choice%"=="1" llama-server.exe -m "models\\gemma-4-31b-jang-crack-Q4\_K\_M.gguf" -ngl 999 if "%choice%"=="2" llama-server.exe -m "models\\Qwen2.5-VL-7B-Instruct-Q4\_K\_M.gguf" --mmproj "models\\mmproj-BF16.gguf" -ngl 999 if "%choice%"=="3" llama-server.exe -m "models\\deepseek.gguf" -ngl 999 pause
+
+```js
+@echo off
+chcp 65001 >nul
+cd /d C:\Users\LINGDU\Desktop\llama-b9196-bin-win-cuda-13.1-x64
+
+echo 请选择模型:
+echo 1. Gemma 31B
+echo 2. Qwen VL 多模态
+echo 3. DeepSeek
+
+set /p choice=输入数字:
+
+if "%choice%"=="1" llama-server.exe -m "models\gemma-4-31b-jang-crack-Q4_K_M.gguf" -ngl 999
+if "%choice%"=="2" llama-server.exe -m "models\Qwen2.5-VL-7B-Instruct-Q4_K_M.gguf" --mmproj "models\mmproj-BF16.gguf" -ngl 999
+if "%choice%"=="3" llama-server.exe -m "models\deepseek.gguf" -ngl 999
+
+pause
+```
+
+将上方的命令保存到文本文档里,另存为的时候选择utf-8格式,最后将txt后缀改成bat即可!双击运行即可看到下方的选项
+
+![20260518070758 415709](https://www.freedidi.com/wp-content/uploads/2026/05/20260518070758_415709.webp "Windows 本地 AI 又升级了!llama.cpp 官方支持 CUDA 13 / Vulkan / HIP / SYCL,一键跑 GGUF 无审查模型! 8")
+
+输入模型对应的数字就可以成功启动模型
+
+![20260518070850 012830 scaled](https://www.freedidi.com/wp-content/uploads/2026/05/20260518070850_012830-scaled.webp "Windows 本地 AI 又升级了!llama.cpp 官方支持 CUDA 13 / Vulkan / HIP / SYCL,一键跑 GGUF 无审查模型! 9") ![20260518070854 219316 scaled](https://www.freedidi.com/wp-content/uploads/2026/05/20260518070854_219316-scaled.webp "Windows 本地 AI 又升级了!llama.cpp 官方支持 CUDA 13 / Vulkan / HIP / SYCL,一键跑 GGUF 无审查模型! 10")
+
+![20260518110131 957575 scaled](https://www.freedidi.com/wp-content/uploads/2026/05/20260518110131_957575-scaled.webp "Windows 本地 AI 又升级了!llama.cpp 官方支持 CUDA 13 / Vulkan / HIP / SYCL,一键跑 GGUF 无审查模型! 11")

+ 292 - 0
Github/MinerU.md

@@ -0,0 +1,292 @@
+---
+title: "opendatalab/MinerU: Transforms complex documents like PDFs and Office docs into LLM-ready markdown/JSON for your Agentic workflows."
+source: https://github.com/opendatalab/MinerU/blob/master/README_zh-CN.md
+author:
+published:
+created: 2026-05-09
+description: Transforms complex documents like PDFs and Office docs into LLM-ready markdown/JSON for your Agentic workflows. - opendatalab/MinerU
+tags:
+  - clippings
+---
+[![](https://camo.githubusercontent.com/c27b0b0916f506bc307ab0375ea23e91e461e42e622db0cd2bb3b7b0d4e20dbd/68747470733a2f2f67636f72652e6a7364656c6976722e6e65742f67682f6f70656e646174616c61622f4d696e657255406d61737465722f646f63732f696d616765732f4d696e6572552d6c6f676f2e706e67)](https://camo.githubusercontent.com/c27b0b0916f506bc307ab0375ea23e91e461e42e622db0cd2bb3b7b0d4e20dbd/68747470733a2f2f67636f72652e6a7364656c6976722e6e65742f67682f6f70656e646174616c61622f4d696e657255406d61737465722f646f63732f696d616765732f4d696e6572552d6c6f676f2e706e67)
+
+[![opendatalab%2FMinerU | Trendshift](https://camo.githubusercontent.com/8e05ac968e83dbb8fbd1ff02a16b03186a2d01c3a19db633923afceebfdfe4aa/68747470733a2f2f7472656e6473686966742e696f2f6170692f62616467652f7265706f7369746f726965732f3131313734)](https://trendshift.io/repositories/11174)
+
+[English](https://github.com/opendatalab/MinerU/blob/master/README.md) | [简体中文](https://github.com/opendatalab/MinerU/blob/master/README_zh-CN.md)
+
+🚀 [MinerU 官网入口→✅ 免装在线版 ✅ 全功能客户端 ✅ 开发者API在线调用,省去部署麻烦,多种产品形态一键get,速冲!](https://mineru.net/?source=github)
+
+👋 join us on [Discord](https://discord.gg/Tdedn9GTXq) and [WeChat](https://mineru.net/community-portal/?aliasId=3c430f94)
+
+MinerU — 专为 LLM · RAG · Agent 场景构建的高精度文档解析引擎 将 PDF · DOCX · PPTX · XLSX · 图片 · 网页转为结构化 Markdown / JSON · VLM+OCR 双引擎 · 109 种语言  
+MCP Server · LangChain / Dify / FastGPT 原生集成 · 10+ 国产算力适配  
+
+**🔍 核心解析能力**
+
+- 原生支持 `DOCX` 、 `PPTX` 、 `XLSX` 解析
+- 公式 → LaTeX · 表格 → HTML,精准还原复杂版面
+- 支持扫描件、手写体、多栏布局、跨页表格合并
+- 输出符合人类阅读顺序,自动去除页眉页脚
+- VLM + OCR 双引擎,支持 109 种语言识别
+
+**🔌 接入方式**
+
+| 场景 | 方案 |
+| --- | --- |
+| AI 编程工具 | MCP Server — Cursor · Claude Desktop · Windsurf |
+| RAG 框架 | LangChain · LlamaIndex · RAGFlow · RAG-Anything · Flowise · Dify · FastGPT |
+| 开发集成 | Python / Go / TypeScript SDK · CLI · REST API · Docker |
+| 零代码 | mineru.net 在线版 · Gradio WebUI · 桌面客户端 |
+
+**🖥️ 部署生态(支持私有化 · 完全离线)**
+
+| 推理后端 | 适用场景 |
+| --- | --- |
+| pipeline | 快速稳定,无幻觉,CPU / GPU 均可运行 |
+| vlm-engine | 高精度,支持 vLLM / LMdeploy / mlx 生态 |
+| hybrid-engine | 高精度,原生文本提取,低幻觉 |
+
+国产算力:昇腾 · 寒武纪 · 燧原 · 沐曦 · 摩尔线程 · 昆仑芯 · 天数智芯 · 瀚博 · 太初元碁 · 海光 · 平头哥
+
+## 更新记录
+
+- 2026/04/18 3.1.0 发布
+	本次版本更新聚焦于 **许可协议开放性、解析精度提升与全格式原生支持** 。主要更新内容包括:
+	- 许可协议升级
+		- MinerU 已正式从 `AGPLv3` 切换至基于 `Apache 2.0` 的 [MinerU 开源许可证](https://github.com/opendatalab/MinerU/blob/master/LICENSE.md) 。
+				- 新的许可方式在兼顾开源协作与商业落地的同时,进一步降低了社区使用和商业化接入门槛,让 MinerU 更容易融入真实业务流程。
+		- VLM 主模型升级
+		- VLM 主模型正式切换为 `MinerU2.5-Pro-2604-1.2B` ,整体解析精度提升至业内领先水平。
+				- 新模型现已支持子图切分合并、图像与图表解析、截断段落合并、跨页面表格合并以及表格内图像识别,复杂版面场景下的解析能力进一步增强。
+		- 全格式原生解析支持
+		- 新增 `PPTX` 与 `XLSX` 原生解析能力。
+				- 至此,MinerU 已完整支持图片、 `PDF` 、 `DOCX` 、 `PPTX` 、 `XLSX` 全格式解析,为多类型文档统一处理提供了更完整的能力闭环。
+	通过 3.1.0 版本,MinerU 在开放性、解析精度和落地能力上进一步提升。新的许可协议降低了社区使用和商业接入门槛, `MinerU2.5-Pro-2604-1.2B` 提升了复杂内容的解析质量,而 `PPTX` 与 `XLSX` 原生解析的补齐,也让 MinerU 完成了主流文档格式的端到端覆盖。
+- 2026/03/29 3.0.0 发布
+	本次版本更新围绕 **解析能力、系统架构与工程可用性** 进行了系统升级。主要更新内容包括:
+	- `DOCX` 原生解析
+		- 正式支持 `DOCX` 原生解析,在无幻觉前提下实现高精度解析。
+				- 相较于“先将 `DOCX` 转为 `PDF` 再解析”的传统流程,端到端速度提升数十倍以上,更适合对精度与吞吐均有要求的场景。
+		- `pipeline` 后端升级
+		- `pipeline` 后端在 OmniDocBench (v1.5) 上取得 `86.2` 分,精度超过上一代主流 VLM `MinerU2.0-2505-0.9B` 。
+				- 新增表格内图片/公式解析、印章文字识别、竖排文本支持、行间公式序号识别等能力,持续提升复杂文档场景下的解析效果。
+				- 在保持高精度的同时,资源占用极低,并继续支持纯 CPU 环境推理。
+		- `API / CLI / Router` 编排升级
+		- `mineru` 现作为基于 `mineru-api` 的编排客户端运行;在未传入 `--api-url` 时,会自动拉起本地临时服务。
+				- `mineru-api` 新增异步任务接口 `POST /tasks` ,支持任务提交、状态查询与结果获取;同时保留同步解析接口 `POST /file_parse` ,以兼容老版本插件。
+				- 新增 `mineru-router` ,适用于多服务、多 GPU 的统一入口部署与任务路由;其接口与 `mineru-api` 完全兼容,并支持任务自动负载均衡。
+		- 部署与使用体验优化
+		- 解决了 `torch >= 2.8` 的兼容问题,基础镜像升级为 `vllm0.11.2 + torch2.9.0` ,统一了不同 Compute Capability 的安装路径。
+				- 通过滑动窗口优化解析链路,显著降低长文档场景下的内存峰值占用,上万页文档解析不再需要手动拆分。
+				- `pipeline` 的 batch 推理支持流式落盘,已完成的解析结果可及时写出,进一步提升长任务处理体验。
+				- 完成线程安全优化,全面支持多线程并发推理;配合 `mineru-router` ,可一键实现多卡部署,轻松构建高并发、高吞吐解析系统。
+				- 完全移除了两个 AGPLv3 模型( `doclayoutyolo` 和 `mfd_yolov8` )以及一个 CC-BY-NC-SA 4.0 模型( `layoutreader` )的使用。
+	本次更新不仅是若干功能点的补强,更是 MinerU 在系统能力上的一次关键跃迁。我们重点解决了长文档解析过程中的内存峰值占用问题,通过滑动窗口、流式落盘等链路优化,让超长文档解析从“需要手动拆分、谨慎处理”走向“稳定可跑、规模可扩展”。同时,我们完成了线程安全优化,全面支持多线程并发推理,进一步提升了单机资源利用率与高并发场景下的运行稳定性。在此基础上,基于 mineru-router 与全新的 API / CLI 编排体系,MinerU 已具备一键多卡部署、多服务统一接入、任务自动负载均衡的能力,显著降低了大规模部署难度。至此,MinerU 正在从单一的数据生产工具,进一步演进为面向高并发、高吞吐场景的大规模文档解析基座,为企业级文档数据处理提供更稳定、更高效、更易扩展的基础设施能力。
+
+> 📝 查看完整的 [更新日志](https://opendatalab.github.io/MinerU/zh/reference/changelog/) 了解更多历史版本信息
+
+## MinerU
+
+## 项目简介
+
+MinerU 是一款文档解析工具,可将 `PDF` 、图片以及 `DOCX` 、 `PPTX` 、 `XLSX` 转化为机器可读格式(如 Markdown、JSON),便于后续检索、抽取与二次处理。 MinerU诞生于 [书生-浦语](https://github.com/InternLM/InternLM) 的预训练过程中,我们将会集中精力解决科技文献中的符号转化问题,希望在大模型时代为科技发展做出贡献。 相比国内外知名商用产品MinerU还很年轻,如果遇到问题或者结果不及预期请到 [issue](https://github.com/opendatalab/MinerU/issues) 提交问题,同时 **附上相关文档或样例文件** 。
+
+pdf\_zh\_cn.mp4<video src="https://private-user-images.githubusercontent.com/11393164/351177226-4bea02c9-6d54-4cd6-97ed-dff14340982c.mp4?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzgzMjQ0NzIsIm5iZiI6MTc3ODMyNDE3MiwicGF0aCI6Ii8xMTM5MzE2NC8zNTExNzcyMjYtNGJlYTAyYzktNmQ1NC00Y2Q2LTk3ZWQtZGZmMTQzNDA5ODJjLm1wND9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA1MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNTA5VDEwNTYxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM3ODE4YmMzZWQzZjFmNDExZTkwZmU2MGM4NmI0MTQwOTBiMmNmMmNiY2U2OTM2M2JkMGMxODg5ZWNjMzdiNWUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT12aWRlbyUyRm1wNCJ9.QGU0mHhryPXVq1zyk5JBfetEBSk6VMRHgY9i7_JtrGg" controls="controls"></video>
+
+## 主要功能
+
+- 支持 `PDF` 、图片与 `DOCX` 、 `PPTX` 、 `XLSX` 输入
+- 删除页眉、页脚、脚注、页码等元素,确保语义连贯
+- 输出符合人类阅读顺序的文本,适用于单栏、多栏及复杂排版
+- 保留原文档的结构,包括标题、段落、列表等
+- 提取图像、图片描述、表格、表格标题及脚注
+- 自动识别并转换文档中的公式为LaTeX格式
+- 自动识别并转换文档中的表格为HTML格式
+- 自动检测扫描版PDF和乱码PDF,并启用OCR功能
+- OCR支持109种语言的检测与识别
+- 支持多种输出格式,如多模态与NLP的Markdown、按阅读顺序排序的JSON、含有丰富信息的中间格式等
+- 支持多种可视化结果,包括layout可视化、span可视化等,便于高效确认输出效果与质检
+- 内置命令行、FastAPI、Gradio WebUI,支持本地编排和多服务部署
+- 支持纯CPU环境运行,并支持 GPU/MPS加速,以及十余款国产算力平台的推理加速
+- 兼容Windows、Linux和Mac平台
+
+## 快速开始
+
+文档解析是困难且复杂的任务,尤其是对于复杂版面、扫描件、手写体等场景,解析结果可能不尽如人意。我们建议您先使用在线体验评估 MinerU 的解析效果和适用性,再根据实际需求选择合适的部署方式。 如果您有解析效果不佳的 **文档** 样例,欢迎提交上传到 [issue](https://github.com/opendatalab/MinerU/issues) ,我们会持续优化解析能力。 如果安装或使用中遇到任何问题,请先查询 [FAQ](#faq)
+
+## 在线体验
+
+### 官网在线应用
+
+官网在线版功能与客户端一致,界面美观,功能丰富,需要登录使用
+
+### 基于Gradio的在线demo
+
+基于gradio开发的webui,界面简洁,仅包含核心解析功能,免登录
+
+## 本地部署
+
+> [!warning] Warning
+> **安装前必看——软硬件环境支持说明**
+> 
+> 为了确保项目的稳定性和可靠性,我们在开发过程中仅对特定的软硬件环境进行优化和测试。这样当用户在推荐的系统配置上部署和运行项目时,能够获得最佳的性能表现和最少的兼容性问题。
+> 
+> 通过集中资源和精力于主线环境,我们团队能够更高效地解决潜在的BUG,及时开发新功能。
+> 
+> 在非主线环境中,由于硬件、软件配置的多样性,以及第三方依赖项的兼容性问题,我们无法100%保证项目的完全可用性。因此,对于希望在非推荐环境中使用本项目的用户,我们建议先仔细阅读文档以及FAQ,大多数问题已经在FAQ中有对应的解决方案,除此之外我们鼓励社区反馈问题,以便我们能够逐步扩大支持范围。
+
+<table><thead><tr><th rowspan="2">解析后端</th><th rowspan="2">pipeline</th><th colspan="2">*-auto-engine</th><th colspan="2">*-http-client</th></tr><tr><th>hybrid</th><th>vlm</th><th>hybrid</th><th>vlm</th></tr></thead><tbody><tr><th>后端特性</th><td>兼容性好</td><td colspan="2">硬件配置要求较高</td><td colspan="2">适用于OpenAI兼容服务器 <sup>2</sup></td></tr><tr><th>精度指标 <sup>1</sup></th><td>85+</td><td colspan="4">95+</td></tr><tr><th>操作系统</th><td colspan="5">Linux <sup>3</sup> / Windows <sup>4</sup> / macOS <sup>5</sup></td></tr><tr><th>纯CPU平台支持</th><td>✅</td><td colspan="2">❌</td><td colspan="2">✅</td></tr><tr><th>GPU加速支持</th><td colspan="4">Volta及以后架构GPU或Apple Silicon</td><td rowspan="2">不需要</td></tr><tr><th>显存最低要求</th><td>4GB</td><td>8GB</td><td>8GB</td><td>2GB</td></tr><tr><th>内存要求</th><td colspan="3">最低16GB以上,推荐32GB以上</td><td colspan="2">最低16GB</td></tr><tr><th>磁盘空间要求</th><td colspan="3">20GB以上,推荐使用SSD</td><td colspan="2">至少2GB</td></tr><tr><th>python版本</th><td colspan="5">3.10-3.13</td></tr></tbody></table>
+
+<sup>1</sup> 精度指标为OmniDocBench (v1.6)的End-to-End Evaluation Overall分数,基于 `MinerU` 最新版本测试  
+<sup>2</sup> 兼容OpenAI API的服务器,如通过 `vLLM` / `SGLang` / `LMDeploy` 等推理框架部署的本地模型服务器或远程模型服务  
+<sup>3</sup> Linux仅支持2019年及以后发行版  
+<sup>4</sup> 由于关键依赖 `ray` 未能在windows平台支持Python 3.13,故仅支持至3.10~3.12版本  
+<sup>5</sup> macOS 需使用14.0以上版本
+
+> [!tip] Tip
+> - 除以上主流环境与平台外,我们也收录了一些社区用户反馈的其他平台支持情况,详情请参考 [其他加速卡适配](https://opendatalab.github.io/MinerU/zh/usage/) 。
+> - 如果您有意将自己的环境适配经验分享给社区,欢迎通过 [show-and-tell](https://github.com/opendatalab/MinerU/discussions/categories/show-and-tell) 提交或提交PR至 [其他加速卡适配](https://github.com/opendatalab/MinerU/tree/master/docs/zh/usage/acceleration_cards) 文档。
+
+### 安装 MinerU
+
+#### 使用pip或uv安装MinerU
+
+```
+pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple
+pip install uv -i https://mirrors.aliyun.com/pypi/simple
+uv pip install -U "mineru[all]" -i https://mirrors.aliyun.com/pypi/simple
+```
+
+#### 通过源码安装MinerU
+
+```
+git clone https://github.com/opendatalab/MinerU.git
+cd MinerU
+uv pip install -e .[all] -i https://mirrors.aliyun.com/pypi/simple
+```
+
+> [!tip] Tip
+> - `mineru[all]` 包含所有核心功能,兼容Windows / Linux / macOS系统,适合绝大多数用户。
+> - 如果您在 Windows 上安装后无法使用 CUDA 加速,请参考 [Windows CUDA 加速 FAQ](https://opendatalab.github.io/MinerU/zh/faq/#windows-cuda-acceleration) 。
+> - 如果您需要指定vlm模型的推理框架,或是仅准备在边缘设备安装轻量版client端,可以参考文档 [扩展模块安装指南](https://opendatalab.github.io/MinerU/zh/quick_start/extension_modules/) 。
+
+---
+
+#### 使用docker部署Mineru
+
+MinerU提供了便捷的docker部署方式,这有助于快速搭建环境并解决一些棘手的环境兼容问题。
+
+> [!tip] Tip
+> - Docker 部署仅适用于 Linux,以及支持 WSL2 的 Windows 环境;
+> - macOS 用户请直接参考前面两种方式部署安装,不要使用 Docker 部署。
+
+您可以在文档中获取 [Docker部署说明](https://opendatalab.github.io/MinerU/zh/quick_start/docker_deployment/) 。
+
+---
+
+### 使用 MinerU
+
+> [!tip] Tip
+> 默认使用托管在 `huggingface` 的模型进行解析,首次使用时会自动下载所需模型文件,后续使用将直接加载本地缓存的模型。如果您无法访问 `huggingface` ,可以通过以下命令切换至国内镜像源:
+> 
+> ```
+> export MINERU_MODEL_SOURCE=modelscope
+> ```
+
+如果您的设备满足上表中GPU加速的条件,可以使用简单的命令行进行文档解析:
+
+```
+mineru -p <input_path> -o <output_path>
+```
+
+如果您的设备不满足GPU加速条件,可以指定后端为 `pipeline` ,以在纯CPU环境下运行:
+
+```
+mineru -p <input_path> -o <output_path> -b pipeline
+```
+
+当前 `mineru` 支持本地 `PDF / 图片 / DOCX / PPTX / XLSX` 文件或目录输入,并可通过命令行、API、WebUI、 `mineru-router` 等多种方式进行文档解析,具体使用方法请参考 [使用指南](https://opendatalab.github.io/MinerU/zh/usage/) 。
+
+## FAQ
+
+- 如果您在使用过程中遇到问题,可以先查看 [常见问题](https://opendatalab.github.io/MinerU/zh/faq/) 是否有解答。
+- 如果未能解决您的问题,您也可以使用 [DeepWiki](https://deepwiki.com/opendatalab/MinerU) 与AI助手交流,这可以解决大部分常见问题。
+- 如果您仍然无法解决问题,您可通过 [Discord](https://discord.gg/Tdedn9GTXq) 或 [WeChat](https://mineru.net/community-portal/?aliasId=3c430f94) 加入社区,与其他用户和开发者交流。
+
+## All Thanks To Our Contributors
+
+[![](https://camo.githubusercontent.com/8069d469dcf247604efc2f58d49571257a1981329f52a5747a07e9929aa1baad/68747470733a2f2f636f6e747269622e726f636b732f696d6167653f7265706f3d6f70656e646174616c61622f4d696e657255)](https://github.com/opendatalab/MinerU/graphs/contributors)
+
+## License Information
+
+本仓库采用 [MinerU 开源许可证](https://github.com/opendatalab/MinerU/blob/master/LICENSE.md) 进行许可,基于 Apache 2.0 并附带额外条款。
+
+## Acknowledgments
+
+- [UniMERNet](https://github.com/opendatalab/UniMERNet)
+- [TableStructureRec](https://github.com/RapidAI/TableStructureRec)
+- [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR)
+- [PaddleOCR2Pytorch](https://github.com/frotms/PaddleOCR2Pytorch)
+- [fast-langdetect](https://github.com/LlmKira/fast-langdetect)
+- [pypdfium2](https://github.com/pypdfium2-team/pypdfium2)
+- [pdftext](https://github.com/datalab-to/pdftext)
+- [pdfminer.six](https://github.com/pdfminer/pdfminer.six)
+- [pypdf](https://github.com/py-pdf/pypdf)
+- [magika](https://github.com/google/magika)
+- [vLLM](https://github.com/vllm-project/vllm)
+- [LMDeploy](https://github.com/InternLM/lmdeploy)
+
+## Citation
+
+```
+@article{wang2026mineru2,
+  title={MinerU2. 5-Pro: Pushing the Limits of Data-Centric Document Parsing at Scale},
+  ={Wang, Bin and He, Tianyao and Ouyang, Linke and Wu, Fan and Zhao, Zhiyuan and Chu, Tao and Qu, Yuan and Jin, Zhenjiang and Zeng, Weijun and Miao, Ziyang and others},
+  journal={arXiv preprint arXiv:2604.04771},
+  year={2026}
+}
+
+@article{dong2026minerudiffusion,
+  title={MinerU-Diffusion: Rethinking Document OCR as Inverse Rendering via Diffusion Decoding},
+  ={Dong, Hejun and Niu, Junbo and Wang, Bin and Zeng, Weijun and Zhang, Wentao and He, Conghui},
+  journal={arXiv preprint arXiv:2603.22458},
+  year={2026}
+}
+
+@article{niu2025mineru2,
+  title={Mineru2. 5: A decoupled vision-language model for efficient high-resolution document parsing},
+  ={Niu, Junbo and Liu, Zheng and Gu, Zhuangcheng and Wang, Bin and Ouyang, Linke and Zhao, Zhiyuan and Chu, Tao and He, Tianyao and Wu, Fan and Zhang, Qintong and others},
+  journal={arXiv preprint arXiv:2509.22186},
+  year={2025}
+}
+
+@article{wang2024mineru,
+  title={Mineru: An open-source solution for precise document content extraction},
+  ={Wang, Bin and Xu, Chao and Zhao, Xiaomeng and Ouyang, Linke and Wu, Fan and Zhao, Zhiyuan and Xu, Rui and Liu, Kaiwen and Qu, Yuan and Shang, Fukai and others},
+  journal={arXiv preprint arXiv:2409.18839},
+  year={2024}
+}
+
+@article{he2024opendatalab,
+  title={Opendatalab: Empowering general artificial intelligence with open datasets},
+  ={He, Conghui and Li, Wei and Jin, Zhenjiang and Xu, Chao and Wang, Bin and Lin, Dahua},
+  journal={arXiv preprint arXiv:2407.13773},
+  year={2024}
+}
+```
+
+## Star History
+
+![Star History Chart](https://camo.githubusercontent.com/40ca9c73efb26805e0af7b399b8bc91a2d7fe54e6cb313e5a7f5ce59bfd0bfab/68747470733a2f2f6170692e737461722d686973746f72792e636f6d2f7376673f7265706f733d6f70656e646174616c61622f4d696e65725526747970653d44617465)
+
+## Links
+
+- [Easy Data Preparation with latest LLMs-based Operators and Pipelines](https://github.com/OpenDCAI/DataFlow)
+- [Vis3 (OSS browser based on s3)](https://github.com/opendatalab/Vis3)
+- [LabelU (A Lightweight Multi-modal Data Annotation Tool)](https://github.com/opendatalab/labelU)
+- [LabelLLM (An Open-source LLM Dialogue Annotation Platform)](https://github.com/opendatalab/LabelLLM)
+- [PDF-Extract-Kit (A Comprehensive Toolkit for High-Quality PDF Content Extraction)](https://github.com/opendatalab/PDF-Extract-Kit)
+- [OmniDocBench (A Comprehensive Benchmark for Document Parsing and Evaluation)](https://github.com/opendatalab/OmniDocBench)
+- [Magic-HTML (Mixed web page extraction tool)](https://github.com/opendatalab/magic-html)
+- [Magic-Doc (Fast speed ppt/pptx/doc/docx/pdf extraction tool)](https://github.com/InternLM/magic-doc)
+- [Dingo: A Comprehensive AI Data Quality Evaluation Tool](https://github.com/MigoXLab/dingo)

+ 11 - 0
Github私人令牌.md

@@ -0,0 +1,11 @@
+`账号:zhensolid@vip.qq.com`
+
+```
+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
+```
+
+
+Github令牌 rustdesk
+```
+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
+```

+ 288 - 0
Obsidian 备份方案与避坑指南.md

@@ -0,0 +1,288 @@
+---
+title: Obsidian 备份方案与避坑指南
+created: 2026-05-27
+tags:
+  - Obsidian
+  - 备份
+  - Git
+  - LiveSync
+---
+
+## 备份架构
+
+你的 Obsidian vault 有 **双重备份**,互为补充:
+
+```
+┌─────────────────────────────────────────┐
+│           macOS (本地 vault)              │
+│     ~/Documents/Obsidian                 │
+└──────────┬──────────────┬───────────────┘
+           │              │
+    ┌──────▼──────┐  ┌───▼──────────────┐
+    │ LiveSync    │  │ Obsidian Git     │
+    │ (实时同步)   │  │ (30分钟自动推送)  │
+    └──────┬──────┘  └───┬──────────────┘
+           │              │
+    ┌──────▼──────────────▼──────────────┐
+    │         Princess (84.235.240.199)  │
+    │  ┌────────────┐  ┌──────────────┐  │
+    │  │ CouchDB    │  │ Gogs (Git)   │  │
+    │  │ :5984      │  │ :3080        │  │
+    │  │ 实时增量    │  │ 版本历史     │  │
+    │  └────────────┘  └──────────────┘  │
+    └────────────────────────────────────┘
+```
+
+| 方式 | 工具 | 频率 | 内容 | 用途 |
+|------|------|------|------|------|
+| 实时同步 | LiveSync → CouchDB | 实时 | 笔记 + `.obsidian/` 配置 | 多设备无缝切换 |
+| 版本备份 | Obsidian Git → Gogs | 30 分钟 | 整个 vault | 历史回溯、误删恢复 |
+
+---
+
+## 一、Git 备份(Gogs)
+
+### 仓库信息
+
+- 地址:`http://84.235.240.199:3080/zhensolid/obsidian`
+- 类型:**私有仓库**
+- 插件:Obsidian Git v2.38.3
+- 配置:
+  - 文件变更自动 commit,30 分钟自动 push
+  - 提交信息格式:`vault backup: 2026-05-27 10:00:00`
+  - push 前先 pull(rebase 模式)
+  - 弹窗通知已关闭(安静运行)
+  - 状态栏显示分支和同步状态
+
+### .gitignore 排除项
+
+```
+.obsidian/workspace.json        # 桌面布局(经常变,无意义)
+.obsidian/workspace-mobile.json
+.DS_Store
+.trash/
+**/.space/                      # Make.md 缓存
+```
+
+### ⚠️ 避坑提醒
+
+1. **Git 历史永久保留**  
+   所有曾经 commit 过的文件(包括之后删除的)都会留在历史中。vault 里有 `Github私人令牌.md`、`Rustdesk-key.md` 等敏感文件。如果你的 Gogs 仓库被别人看到,这些就会泄露。当前是私有仓库所以安全,但如果以后想公开仓库,需要先清理历史或用 `git filter-branch` 移除敏感文件。
+
+2. **Gogs 密码**  
+   密码已存 macOS 钥匙串 (`osxkeychain`),以后 push 无需输入。如果换电脑,需要重新:
+   ```bash
+   cd ~/Documents/Obsidian
+   git remote set-url origin http://84.235.240.199:3080/zhensolid/obsidian.git
+   # 首次 push 会要求输入 Gogs 账号密码
+   ```
+
+3. **Gogs SSH 未配置**  
+   目前只能 HTTP 方式推送。SSH (端口 2222) 未配置密钥,如果以后想用 SSH:
+   - 在 Gogs → 用户设置 → SSH 密钥 中添加公钥
+   - 然后 `git remote set-url origin ssh://git@84.235.240.199:2222/zhensolid/obsidian.git`
+
+4. **首次 clone 会很大**  
+   2332 个文件,包含插件 JS、图片附件等,初始 clone 需要时间,正常现象。
+
+5. **Obsidian Git 与 LiveSync 的 `.obsidian/` 会互相覆盖**  
+   两个系统都会同步 `.obsidian/plugins/*/data.json`。正常使用没问题,但如果在两台设备上同时改了同一个插件配置又同时同步,可能冲突。一般不会发生。
+
+---
+
+## 二、LiveSync 实时同步
+
+### 服务器信息
+
+- 服务器:Princess (84.235.240.199)
+- 容器:`obsidian-sync`(CouchDB)
+- 端口:5984
+- 版本:v0.25.69
+
+### 同步内容
+
+| 设置 | 值 | 说明 |
+|------|-----|------|
+| `syncInternalFiles` | true | 同步 `.obsidian/` 配置文件夹 |
+| 排除 | `obsidian-livesync/`, `node_modules/`, `.git/` | LiveSync 不自己同步自己 |
+
+### 新设备接入流程
+
+这是最常见的场景,记住四步:
+
+```
+1. 创建新 vault → 2. 安装 LiveSync 插件 → 3. 配置 CouchDB 连接 → 4. 等待同步完成
+```
+
+⚠️ **唯一需要手动做的事**:LiveSync 的 CouchDB 连接信息。
+
+因为 `obsidian-livesync/` 被排除在同步之外(鸡生蛋问题:不能自己同步自己的配置),所以新设备上必须手动填入:
+
+- CouchDB 地址
+- 用户名
+- 密码
+- 数据库名
+
+填好后,其余一切(插件配置、QuickAdd 快捷指令、模板等)会自动从 CouchDB 拉下来。
+
+### ⚠️ 避坑提醒
+
+1. **不要同时用其他同步方案**(iCloud、Dropbox 等)  
+   会造成文件冲突和内容重复。LiveSync 独占同步。
+
+2. **LiveSync 配置不同步**  
+   换设备必须手动配连接信息,这是设计如此,不是 bug。
+
+3. **版本跳级可能出问题**  
+   如果插件版本跨度大(如 0.25.27 → 0.25.65),UI 可能显示「已禁用」但实际 `data.json` 为 true。解决:
+   - 在设置里开关一次对应选项
+   - 注意 `liveSync` 主开关可能被连带关闭,检查一下
+   - 出现 "Database locked" 警告 → Hatch → Database Doctor 解决
+
+4. **`syncInternalFiles: true` 会同步插件本体**  
+   所以新设备连上后,不仅配置会同步,插件 JS 文件也会同步。但**这依赖 LiveSync 先连上**,而 LiveSync 本身不在同步范围内(第 2 点),所以新设备流程是先装 LiveSync、配连接、等同步。
+
+---
+
+## 三、完整插件清单(25 个)
+
+| 插件 | 用途 |
+|------|------|
+| attachment-management | 附件管理 |
+| calendar | 日历 |
+| cmdr (Commander) | UI 定制,隐藏多余图标 |
+| codeblock-customizer | 代码块样式 |
+| consistent-attachments-and-links | 链接一致性 |
+| dataview | 数据查询 |
+| editing-toolbar | 编辑工具栏 |
+| homepage | 首页面板 |
+| make-md | 增强编辑体验 |
+| obsidian-auto-link-title | 粘贴 URL 自动拉取标题 |
+| obsidian-banners | 笔记横幅图片 |
+| obsidian-excalidraw-plugin | 画图 |
+| obsidian-git | Git 自动备份 |
+| obsidian-icon-folder (Iconize) | 文件夹图标 |
+| obsidian-kanban | 看板 |
+| obsidian-livesync | 实时同步 |
+| obsidian-memos (Thino) | 闪念笔记 |
+| obsidian-style-settings | 主题定制 |
+| obsidian-tasks-plugin | 任务管理 |
+| omnisearch | 增强搜索 |
+| quickadd | 快速创建/捕获 |
+| recent-files-obsidian | 最近文件 |
+| table-editor-obsidian | 表格编辑 |
+| tag-wrangler | 标签管理 |
+| templater-obsidian | 模板引擎 |
+
+---
+
+## 四、快速恢复流程
+
+### 场景 A:换新 Mac
+
+```bash
+# 1. 从 Gogs clone vault
+git clone http://84.235.240.199:3080/zhensolid/obsidian.git ~/Documents/Obsidian
+
+# 2. 打开 Obsidian,加载这个 vault
+# 3. LiveSync 会自动连接(CouchDB 信息已在 clone 的配置中?不对——见下方注意)
+```
+
+⚠️ **重要**:LiveSync 的 `data.json` 里 CouchDB 连接信息是**加密**存储的(`encryptedCouchDBConnection` 字段),而且加密密钥与设备绑定。所以即使 git clone 了完整的 `.obsidian/`,LiveSync 在新设备上仍然需要重新配置连接。**这不是 bug,是安全设计。**
+
+正确流程:
+```
+git clone → 打开 vault → 配置 LiveSync 连接 → 等待双向同步完成
+```
+
+### 场景 B:恢复误删文件
+
+1. 最快:从 Gogs 查看历史,找到被删文件,复制内容
+2. 或者:`git log -- <文件路径>` 找到最后 commit,然后 `git checkout <commit> -- <文件路径>`
+
+### 场景 C:恢复整个 vault 到某个时间点
+
+```bash
+cd ~/Documents/Obsidian
+git log --oneline           # 找到目标 commit hash
+git checkout <hash> -- .    # 恢复到该时间点
+```
+
+---
+
+## 五、定期检查清单
+
+每月做一次:
+
+- [ ] Princess 服务器是否在线:`ssh princess uptime`
+- [ ] Gogs 容器是否运行:`ssh princess "sudo docker ps | grep gogs"`
+- [ ] CouchDB 容器是否运行:`ssh princess "sudo docker ps | grep obsidian-sync"`
+- [ ] 最近的 Git push 是否成功:看 Obsidian 底部状态栏 Git 图标
+- [ ] LiveSync 是否正常:Obsidian 底部状态栏 LiveSync 图标应为绿色圆圈
+
+---
+
+## 六、服务器桌面黑屏故障(2026-05-27 已修复)
+
+### 现象
+
+Ubuntu 24.04 PVE 虚拟机,控制台/RustDesk 登录界面全黑,只能看到鼠标光标。
+
+### 根因
+
+GDM(GNOME Display Manager)的登录界面由 `gnome-shell` 渲染,**必须依赖 3D 硬件加速**。PVE 虚拟机的 virtio 显卡默认不提供 3D 加速(`glamor initialization failed`,`DRI3 error: Could not get DRI3 device`),导致 GDM 渲染黑屏。
+
+这与内核版本无关,两个内核都报同样的错误但用户会话桌面能正常显示。
+
+### 修复方案
+
+把显示管理器从 GDM 换成 **LightDM**(GTK 界面,不需要 3D 加速):
+
+```bash
+# 安装
+sudo apt install -y lightdm lightdm-gtk-greeter
+
+# 切换(会弹出选择界面,选 lightdm)
+sudo dpkg-reconfigure lightdm
+
+# 或直接停 GDM 启 LightDM
+sudo systemctl stop gdm
+sudo systemctl disable gdm  
+sudo systemctl enable lightdm
+sudo systemctl start lightdm
+```
+
+### 诊断命令
+
+```bash
+# 查看 Xorg 日志中的渲染错误
+sudo cat /var/lib/gdm3/.local/share/xorg/Xorg.0.log | grep -E 'glamor|DRI|llvmpipe'
+
+# 截屏验证(需要 scrot)
+sudo apt install -y scrot
+sudo DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/:0 scrot /tmp/screen.png
+
+# 查看当前显示管理器
+cat /etc/X11/default-display-manager
+
+# 查看谁在用 seat0
+loginctl list-sessions | grep seat0
+```
+
+### 自动登录(绕过登录界面)
+
+如果登录界面有问题但桌面本身能进去:
+
+```bash
+sudo sed -i 's/^#  AutomaticLoginEnable = true/AutomaticLoginEnable = true/' /etc/gdm3/custom.conf
+sudo sed -i 's/^#  AutomaticLogin = user1/AutomaticLogin = zlsh/' /etc/gdm3/custom.conf
+sudo systemctl restart gdm
+```
+
+### 本次处理记录
+
+- 受影响服务器:192.168.8.30(zlsh-Standard)
+- 触发原因:5 月 21 日内核自动更新 + 第一次重启后生效,但其实和内核无关
+- 真正原因:GDM + virtio 显卡无 3D 加速 = 一直存在,只是之前自动登录绕过了
+- 修复时间:2026-05-27
+- 当前状态:LightDM + GNOME 桌面,正常工作

+ 23 - 0
Obsidian-COUCHDB.md

@@ -0,0 +1,23 @@
+---
+sticker: ""
+---
+第三方插件需要开启**隐藏文件**同步
+
+COUCHDB_域名地址:
+
+```
+http://sync.opentouch.top/_utils/
+```
+
+COUCHDB_IP地址:
+```
+http://84.235.240.199:5984/_utils/
+```
+COUCHDB账号:`root`
+COUCHDB密码:`EvLRrT2A@^sZ8r`
+
+复制setup URI到新的设备即可同步
+
+```
+obsidian://setuplivesync?settings=%25%24vRP3wJyLwazyINMwEXxlNN%2FDZsxkhdNnHS4WZCgQFsvHolbL1qPvhMWUcAgy%2FYe2j23pkW60PuS1SQN%2Fdtpc696MGuFqxjZLk5Q996zvwdls%2FP2sgbYluMlUHmk0UeIQJF%2F7axFtEqwV1XKjufLNgS%2FG3NWKRDPmHTM4OkfpI93vAy75Vr2031vLWgX1tO5h3AANb0xMyZD76D5gph3DX%2BpLAMP3ttDWz6XapvULzV4m3Xa%2FTjyc26Lv%2BYTs0cqypJ6q7IKX%2FnTmf8vahdtclSMoa25eMkpGdVasXXNLBszpeCbHDM1%2BQ0%2FopFedPPQ2CzV8sqKp5IeRysfCU5fjdr91ANZNuEZwpI4K13UIXn2tkyT0eN74FCOKczrET0oUPrT6Knmife7A6xqVCH5jgKb6XXN8Jl6IgE72liLhkLb290D6yAJQZwAwygX43oJi2tFZeqgx21jbHOXxx8ryEG55Bvw6%2Bd273YK6aPOXWmFp0gA%2FLM%2Fs9N7dO5SY%2BhEIZdzIwouJDouQqQUMy1NIM2iNLaOlFVo%2FM%2FQ2PWvi%2BLrP25v8yAfZnnjihrzQgOOZ04u7ITsYPtF%2BHocvAv8i%2FBxd6gafpUKmYWl6T0O7fOCy1lyl1jD5PLexkqpoRrx%2BMP18QqRKEBlShcuv17E%2FDNVRC2VZHF%2FWSMj9VXs9T1FomBcdKrQ%2B39ym0r0lbIj8qQd%2FzOb0c6dEExfstbLj9gkKygApbvufDdetYrH5S7AaHWvCnzMGk1O%2F9PGEqof33Z%2FCRtyBikI7rp1N8bzjFNCJPPMdlEtPefaEiNrxnqsTubQWIp6yHnhW3penqQ2t6lIWV8Ae4zWnSzlX70DlCGW%2FvJ%2BKLD6G5HA9NsoBFrbG98n5OknxSSjIfs3Rsp8xJgKyaFbhZNuDsMhjY0kDWjSaUZ2t74d2vJnI0AwJ%2FTgQ3venkHLkGkRMjD2QTmUfwTH0b3pydHDdj7X12CbTRgikbNWRmUTzihGOBIxa7NIXQR%2BlHBI0IX9w1Xeh6lPBu4fYyBLADj9s2zAiILH87ImF3pdk13Pt5jzNEVd48Q4UMHqP9tbuDs4wj%2FaHYHhfzEaZce0kNqPTvYLLpjXFYV1axCs1WPrJYeT8FQNEDiKOQjZBqNdk9FJp%2F8CEYBX06cfS0cihzG17UUg%3D 
+```

+ 8 - 0
OpenClaw/OpenClaw.md

@@ -0,0 +1,8 @@
+---
+notion-id: 329ca4d7-cb7b-80b0-b278-eee2bf5dfe10
+---
+
+[Openclaw Skill](Openclaw%20Skill.md)
+[Openclaw 技巧](Openclaw%20技巧.md)
+[Openclaw 手册](Openclaw%20手册.md)
+[Openclaw For Windows](Openclaw%20For%20Windows.md)

+ 17 - 0
OpenClaw/Openclaw For Windows.md

@@ -0,0 +1,17 @@
+---
+notion-id: 320ca4d7-cb7b-8031-9f99-c972d0077a2f
+---
+# Openclaw官方网站
+[https://openclaw.ai/](https://openclaw.ai/)
+windows安装指令
+```powershell
+iwr -useb https://openclaw.ai/install.ps1 | iex
+
+ Set-ExecutionPolicy Unrestricted -Scope CurrentUser  #windows配置需要关闭禁用脚本
+```
+```shell
+curl -fsSL https://openclaw.ai/install.cmd -o install.cmd && install.cmd && del install.cmd
+```
+> [!warning] ⚠️
+> 如果提示无法安装手动下载`nodejs `和`git`安装包
+> npm出现无法安装的情况,先安装`pnpm`,然后通过pnpm安装`openclaw`即可

+ 136 - 0
OpenClaw/Openclaw Skill.md

@@ -0,0 +1,136 @@
+---
+notion-id: 322ca4d7-cb7b-805c-9872-e0df50d75d2c
+---
+Agent只识别自己工作区的Skill文件
+# 一、技能&插件
+技能下载网站[Clawhub](https://clawhub.ai/),[Smithery](https://smithery.ai/),[Skilhub](https://skillhub.tencent.com/#categories),[Skill-rank](https://skills-rank.com/),
+
+| 工具名称 | 功能 | 使用技巧 |
+| --- | --- | --- |
+| [openclaw-workspace](https://github.com/win4r/openclaw-workspace/blob/main/README_CN.md) | 工作区的文件审计/精炼 |   |
+| [memos-claw](https://memos-claw.openmem.net/#why) | Openclaw记忆插件 |   |
+| [**ClawTeam**](https://github.com/HKUDS/ClawTeam) | 多Agent协作工作 |   |
+| self-improving-agent | 能够自我改进的代理系统 | 需要配置,仔细预读配置 |
+| find-skills | 查找技能 | 自动查找 |
+| Summarize | 用摘要CLI来总结URL或文件 |   |
+| Skill Vetter | 技能审计 |   |
+| Agent Browser | 浏览器CLI。 |   |
+| Multi Search Engine | 多搜索引擎集成 |   |
+| Humanizer | 去除文本中人工智能生成的痕迹。 | 提示词:减少人工智能生成的痕迹,更自然 |
+|   |   |   |
+
+> [!note]+ ## **Memory-lancedb-pro:【长期记忆】**
+> ```json
+> 安装方式:
+> 
+> 对话:
+> 为我安装:https://github.com/CortexReach/memory-lancedb-pro-skill
+> 
+> 对话:
+> 【可用ollam替换】
+> jina AI的API-KEY:jina_356eeda3c8074a3c9b703e543696e872-cgnMOOLZFCTMPRjEuPO14-FsbtJ
+> 
+> 请帮我搭建:memory-lancedb-pro
+> 
+> 对话;
+> 对于这个插件还需要什么优化配置的,帮我检查下
+> ```
+> [https://github.com/CortexReach/memory-lancedb-pro-skill](https://github.com/CortexReach/memory-lancedb-pro-skill)
+> [!note]+ ## **Agency-agents-zh【多agent配置】**
+> > [!note]+ ### Agent和Skil调用参考文献
+> > ## 🔄 正确的优先级
+> > Copy
+> > ```plain text
+> > 用户请求
+> >    ↓
+> > 1️⃣ 优先匹配 agent(能独立执行任务)
+> >    ↓ 没有匹配
+> > 2️⃣ 搜索 skill(需要特定能力/指南)
+> >    ↓ 没有匹配
+> > 3️⃣ 自己执行
+> > ```
+> > 
+> > ---
+> > ## 🆚 Agent vs Skill 的区别
+> > 
+> > | **维度** | **Agent** | **Skill** |
+> > | --- | --- | --- |
+> > | **是什么** | 独立的 AI 实例 | 能力指南/文档 |
+> > | **用途** | 执行完整任务 | 指导我怎么做 |
+> > | **调用方式** | `sessions_spawn` | `skill_get` / `skill_search` |
+> > | **示例** | `marketing-seo-specialist` | `xlsx` (Excel 处理技能) |
+> > 
+> > ---
+> > ## 📋 使用场景对比
+> > ### 优先找 Agent 的场景
+> > Copy
+> > ```plain text
+> > "找个 SEO 专家分析这个网站" → marketing-seo-specialist
+> > "让前端开发写个组件" → engineering-frontend-developer
+> > "叫叙事学家写篇文章" → academic-narratologist
+> > ```
+> > ### 优先找 Skill 的场景
+> > Copy
+> > ```plain text
+> > "怎么处理 Excel 文件" → xlsx skill
+> > "如何创建 Word 文档" → docx skill
+> > "有没有处理 PDF 的技能" → pdf skill
+> > ```
+> > 
+> > ---
+> > ## ✅ 改进后的流程
+> > **你的请求** → **我的判断逻辑**:
+> > 
+> > | **请求类型** | **第一反应** | **原因** |
+> > | --- | --- | --- |
+> > | "找个/叫个/让 xxx 做..." | 匹配 agent | 明确需要独立执行者 |
+> > | "怎么处理/怎么做..." | 搜索 skill | 需要方法/指南 |
+> > | "有没有 xxx 的技能" | 搜索 skill | 明确问技能 |
+> > | 模糊请求 | 先问清楚 | 避免猜错 |
+> > 
+> > ---
+> > ## 💡 总结
+> > - **优先找 agent** = 改变第一反应路径
+> > - **不影响找 skill** = 没有 agent 匹配时仍会搜索 skill
+> > - **更准确** = 根据你的措辞判断意图
+> [https://github.com/jnMetaCode/agency-agents-zh](https://github.com/jnMetaCode/agency-agents-zh)
+> 克隆仓库之后,需要告知openclaw让他去配置调用agent调用子agent,如下
+> ```powershell
+>         "id": "main",
+>         "subagents": {
+>           "allowAgents": ["*"]
+>         }
+> ```
+> ## 🗣️ 使用方式
+> *1. 自然语言激活 — 在对话中描述需要的角色*
+> *2. sessions_spawn — 指定 agentId 调用(但这个失败了)*
+> *3. ClawTeam — 创建多 Agent 协作*
+> **可参考:**
+> ```powershell
+> # 方法 1: 使用 /subagents spawn 命令
+> /subagents spawn <任务描述>
+> 
+> # 方法 2: 在对话中请求
+> "帮我 spawn 一个 marketing-seo-specialist 来分析 SEO 数据"
+> 
+> # 方法 3: 使用 sessions_spawn API
+> sessions_spawn(agentId="marketing-seo-specialist", task="...")
+> ```
+> **直接说就行:**
+> 
+> | **你想做** | **说法示例** |
+> | --- | --- |
+> | 写代码 | "找个前端开发帮我写个登录页面" |
+> | 分析数据 | "让数据工程师分析一下这个 CSV" |
+> | 设计 UI | "叫 UI 设计师优化一下这个界面" |
+> | 写文案 | "找个营销专家写个产品描述" |
+> | 审代码 | "让代码审查员看看这个 PR" |
+> | 做翻译 | "需要翻译这份技术文档" |
+> [!note]+ ## Lossless-claw-enhanced【短期记忆】
+> [https://github.com/win4r/lossless-claw-enhanced](https://github.com/win4r/lossless-claw-enhanced)
+> 安装方式:推荐手动安装,避免ai模型导致安装错误导致bug
+> ```powershell
+> 阅读这个项目的README,为我本地的OpenClaw安装这个插件并进最佳设置:https://github.com/win4r/lossless-claw-enhanced
+> ```
+企业微信插件更新:`openclaw plugins update wecom-cpenclaw-plugin`
+飞书更新:`npx -y @larksuite/openclaw-lark update` 

+ 243 - 0
OpenClaw/Openclaw 手册.md

@@ -0,0 +1,243 @@
+---
+notion-id: 322ca4d7-cb7b-80e9-9289-f41b60f186e5
+---
+[https://openclawgithub.cc/](https://openclawgithub.cc/)
+[https://openclaw.qt.cool/](https://openclaw.qt.cool/)
+[https://docs.openclaw.ai/zh-CN](https://docs.openclaw.ai/zh-CN)
+[https://github.com/datawhalechina/hello-claw](https://github.com/datawhalechina/hello-claw)
+```powershell
+~/.openclaw/workspace/
+├── AGENTS.md       # 代理调度规则与标准作业程序
+├── BOOTSTRAP.md    # 初始化序列与核心系统提示词
+├── HEARTBEAT.md    # 定时执行逻辑与主动任务状态自检
+├── IDENTITY.md     # 代理身份定义与系统边界约束
+├── MEMORY.md       # 长期上下文数据与既定规则的持久化存储
+├── SOUL.md         # 响应语气、行为特征及输出格式配置
+├── TOOLS.md        # 工具授权注册表及调用参数规范
+├── USER.md         # 用户画像数据,包含特定偏好与交互限制配置
+├── memory/         # 日常运行日志与短期上下文存储
+└── skills/         # 已安装的第三方技能扩展目录
+```
+Openclaw常用指令:
+```powershell
+对话栏输入:/reset或/new    #新建对话
+
+openclaw gateway  #启动网关
+
+openclaw onboard --install-daemon  #新手引导并且启动守护
+
+openclaw dashboard  #启动WEB-UI
+
+openclaw agents add zhensolid --workspace ~/my-agents/zhensolid  #新建agent
+
+openclaw models list  #查看模型
+
+openclaw channels list  #查看渠道
+
+openclaw skills list  #查看技能
+
+# 生产环境启动
+openclaw gateway \
+  --port 18789 \
+  --host 0.0.0.0 \
+  --daemon \
+  --log-level warn \
+  --config /etc/openclaw/config.json
+
+
+openclaw update --channel stable #更新
+
+```
+openclaw配置实例模板
+# 默认模板
+[](IMG-20260516155631628.json)
+[](IMG-20260516155631634.json)
+```json
+{
+    "meta": {
+        "lastTouchedVersion": "2026.3.11",
+        "lastTouchedAt": "2026-03-13T07:01:23.114Z"
+    },
+    "wizard": {
+        "lastRunAt": "2026-03-11T09:01:03.991Z",
+        "lastRunVersion": "2026.3.8",
+        "lastRunCommand": "onboard",
+        "lastRunMode": "local"
+    },
+    "models": {
+        "mode": "merge",
+        "providers": {
+            "bailian": {
+                "baseUrl": "https://coding.dashscope.aliyuncs.com/v1",
+                "apiKey": "sk-sp-ca49741d09e64c439829407de26873cd",
+                "api": "openai-completions",
+                "models": [
+                    {
+                        "id": "qwen3.5-plus",
+                        "name": "qwen3.5-plus",
+                        "reasoning": false,
+                        "input": [
+                            "text",
+                            "image"
+                        ],
+                        "contextWindow": 1000000,
+                        "maxTokens": 65536
+                    },
+                    {
+                        "id": "qwen3-max-2026-01-23",
+                        "name": "qwen3-max-2026-01-23",
+                        "reasoning": false,
+                        "input": [
+                            "text"
+                        ],
+                        "contextWindow": 262144,
+                        "maxTokens": 65536
+                    },
+                    {
+                        "id": "qwen3-coder-next",
+                        "name": "qwen3-coder-next",
+                        "reasoning": false,
+                        "input": [
+                            "text"
+                        ],
+                        "contextWindow": 262144,
+                        "maxTokens": 65536
+                    },
+                    {
+                        "id": "qwen3-coder-plus",
+                        "name": "qwen3-coder-plus",
+                        "reasoning": false,
+                        "input": [
+                            "text"
+                        ],
+                        "contextWindow": 1000000,
+                        "maxTokens": 65536
+                    },
+                    {
+                        "id": "MiniMax-M2.5",
+                        "name": "MiniMax-M2.5",
+                        "reasoning": false,
+                        "input": [
+                            "text"
+                        ],
+                        "contextWindow": 204800,
+                        "maxTokens": 131072
+                    },
+                    {
+                        "id": "glm-5",
+                        "name": "glm-5",
+                        "reasoning": false,
+                        "input": [
+                            "text"
+                        ],
+                        "contextWindow": 202752,
+                        "maxTokens": 16384
+                    },
+                    {
+                        "id": "glm-4.7",
+                        "name": "glm-4.7",
+                        "reasoning": false,
+                        "input": [
+                            "text"
+                        ],
+                        "contextWindow": 202752,
+                        "maxTokens": 16384
+                    },
+                    {
+                        "id": "kimi-k2.5",
+                        "name": "kimi-k2.5",
+                        "reasoning": false,
+                        "input": [
+                            "text",
+                            "image"
+                        ],
+                        "contextWindow": 262144,
+                        "maxTokens": 32768
+                    }
+                ]
+            }
+        }
+    },
+    "agents": {
+        "defaults": {
+            "model": {
+                "primary": "bailian/qwen3.5-plus"
+            },
+            "models": {
+                "bailian/qwen3.5-plus": {},
+                "bailian/qwen3-max-2026-01-23": {},
+                "bailian/qwen3-coder-next": {},
+                "bailian/qwen3-coder-plus": {},
+                "bailian/MiniMax-M2.5": {},
+                "bailian/glm-5": {},
+                "bailian/glm-4.7": {},
+                "bailian/kimi-k2.5": {}
+            },
+            "workspace": "C:\\Users\\ZLSH\\.openclaw\\workspace",
+            "compaction": {
+                "mode": "safeguard"
+            },
+            "maxConcurrent": 4,
+            "subagents": {
+                "maxConcurrent": 8
+            }
+        },
+        "list": [
+            {
+                "id": "main",
+                "model": "bailian/MiniMax-M2.5",
+                "identity": {
+                    "theme": "default"
+                }
+            }
+        ]
+    },
+    "messages": {
+        "ackReactionScope": "group-mentions"
+    },
+    "commands": {
+        "native": "auto",
+        "nativeSkills": "auto",
+        "restart": true,
+        "ownerDisplay": "raw"
+    },
+    "session": {
+        "dmScope": "per-channel-peer"
+    },
+    "gateway": {
+        "port": 18789,
+        "mode": "local",
+        "bind": "loopback",
+        "auth": {
+            "mode": "token",
+            "token": "e1cee6f68c3a88afad81af796a4ab1c8626380b6a9fa8f58"
+        },
+        "tailscale": {
+            "mode": "off",
+            "resetOnExit": false
+        },
+        "nodes": {
+            "denyCommands": [
+                "camera.snap",
+                "camera.clip",
+                "screen.record",
+                "contacts.add",
+                "calendar.add",
+                "reminders.add",
+                "sms.send"
+            ]
+        }
+    },
+    "skills": {
+        "entries": {
+            "ai-ppt-generator": {
+                "enabled": false
+            },
+            "Powerpoint / PPTX": {
+                "enabled": false
+            }
+        }
+    }
+}
+```
+

+ 35 - 0
OpenClaw/Openclaw 技巧.md

@@ -0,0 +1,35 @@
+---
+notion-id: 326ca4d7-cb7b-8021-bdb6-d1c238f5025a
+---
+- `/openclaw agents add <name>`
+- `/status` — 查看当前状态(模型、Token 用量、会话信息)
+- `/new` 或 `/reset` — 开始新对话(清空当前会话上下文)
+- `/model` — 查看或切换当前使用的模型
+- `/reasoning` — 切换思考输出模式(off/on/stream)
+- `/stop `—  停止当前对话【飞书插件有可能无法正常启动,需要重启网关】
+- `/compact `— 
+- `/think  `— think set low【或 medium,high】
+- `/models `—模型查看并且切换【Telegram可用】
+
+> 常用:记住、必坑、学习等调教语言让openclaw学习并且长期记忆
+
+---
+
+---
+[https://github.com/hesamsheikh/awesome-openclaw-usecases?tab=readme-ov-file](https://github.com/hesamsheikh/awesome-openclaw-usecases?tab=readme-ov-file)
+**📋 记忆使用规则**
+
+| 会话类型 | 长期记忆 (MEMORY.md) |
+| --- | --- |
+| 🏠 主会话(直接聊天) | ✅ 可读取和编辑 |
+| 👥 群聊(如当前) | ❌ 不加载 |
+| 🤖 其他子会话/机器人 | ❌ 不加载 |
+
+**📁 记忆文件说明**
+
+| 文件 | 用途 | 加载范围 |
+| --- | --- | --- |
+| MEMORY.md | 长期记忆 | 仅主会话 |
+| memory/YYYY-MM-DD.md | 每日笔记 | 所有会话可读取 |
+| SOUL.md / AGENTS.md | 自我定义 | 始终加载 |
+

+ 53 - 0
OpenClaw/attachments/OpenClaw/Openclaw 手册/IMG-20260516155631628.json

@@ -0,0 +1,53 @@
+{
+  "wizard": {
+    "lastRunAt": "2026-03-14T02:22:47.440Z",
+    "lastRunVersion": "2026.3.12",
+    "lastRunCommand": "onboard",
+    "lastRunMode": "local"
+  },
+  "agents": {
+    "defaults": {
+      "workspace": "C:\\Users\\admin\\.openclaw\\workspace"
+    }
+  },
+  "tools": {
+    "profile": "coding"
+  },
+  "commands": {
+    "native": "auto",
+    "nativeSkills": "auto",
+    "restart": true,
+    "ownerDisplay": "raw"
+  },
+  "session": {
+    "dmScope": "per-channel-peer"
+  },
+  "gateway": {
+    "port": 18789,
+    "mode": "local",
+    "bind": "loopback",
+    "auth": {
+      "mode": "token",
+      "token": "530adc707f7de90df97f39e8ead5909a74bfa04d4df3b4b6"
+    },
+    "tailscale": {
+      "mode": "off",
+      "resetOnExit": false
+    },
+    "nodes": {
+      "denyCommands": [
+        "camera.snap",
+        "camera.clip",
+        "screen.record",
+        "contacts.add",
+        "calendar.add",
+        "reminders.add",
+        "sms.send"
+      ]
+    }
+  },
+  "meta": {
+    "lastTouchedVersion": "2026.3.12",
+    "lastTouchedAt": "2026-03-14T02:22:47.452Z"
+  }
+}

+ 223 - 0
OpenClaw/attachments/OpenClaw/Openclaw 手册/IMG-20260516155631634.json

@@ -0,0 +1,223 @@
+{
+  "wizard": {
+    "lastRunAt": "2026-03-14T02:22:47.440Z",
+    "lastRunVersion": "2026.3.12",
+    "lastRunCommand": "onboard",
+    "lastRunMode": "local"
+  },
+  "models": {
+    "mode": "merge",
+    "providers": {
+      "bailian": {
+        "baseUrl": "https://coding.dashscope.aliyuncs.com/v1",
+        "apiKey": "YOUR_API_KEY",
+        "api": "openai-completions",
+        "models": [
+          {
+            "id": "qwen3.5-plus",
+            "name": "qwen3.5-plus",
+            "reasoning": false,
+            "input": [
+              "text",
+              "image"
+            ],
+            "cost": {
+              "input": 0,
+              "output": 0,
+              "cacheRead": 0,
+              "cacheWrite": 0
+            },
+            "contextWindow": 1000000,
+            "maxTokens": 65536,
+            "compat": {
+              "thinkingFormat": "qwen"
+            }
+          },
+          {
+            "id": "qwen3-max-2026-01-23",
+            "name": "qwen3-max-2026-01-23",
+            "reasoning": false,
+            "input": [
+              "text"
+            ],
+            "cost": {
+              "input": 0,
+              "output": 0,
+              "cacheRead": 0,
+              "cacheWrite": 0
+            },
+            "contextWindow": 262144,
+            "maxTokens": 65536,
+            "compat": {
+              "thinkingFormat": "qwen"
+            }
+          },
+          {
+            "id": "qwen3-coder-next",
+            "name": "qwen3-coder-next",
+            "reasoning": false,
+            "input": [
+              "text"
+            ],
+            "cost": {
+              "input": 0,
+              "output": 0,
+              "cacheRead": 0,
+              "cacheWrite": 0
+            },
+            "contextWindow": 262144,
+            "maxTokens": 65536
+          },
+          {
+            "id": "qwen3-coder-plus",
+            "name": "qwen3-coder-plus",
+            "reasoning": false,
+            "input": [
+              "text"
+            ],
+            "cost": {
+              "input": 0,
+              "output": 0,
+              "cacheRead": 0,
+              "cacheWrite": 0
+            },
+            "contextWindow": 1000000,
+            "maxTokens": 65536
+          },
+          {
+            "id": "MiniMax-M2.5",
+            "name": "MiniMax-M2.5",
+            "reasoning": false,
+            "input": [
+              "text"
+            ],
+            "cost": {
+              "input": 0,
+              "output": 0,
+              "cacheRead": 0,
+              "cacheWrite": 0
+            },
+            "contextWindow": 196608,
+            "maxTokens": 32768
+          },
+          {
+            "id": "glm-5",
+            "name": "glm-5",
+            "reasoning": false,
+            "input": [
+              "text"
+            ],
+            "cost": {
+              "input": 0,
+              "output": 0,
+              "cacheRead": 0,
+              "cacheWrite": 0
+            },
+            "contextWindow": 202752,
+            "maxTokens": 16384,
+            "compat": {
+              "thinkingFormat": "qwen"
+            }
+          },
+          {
+            "id": "glm-4.7",
+            "name": "glm-4.7",
+            "reasoning": false,
+            "input": [
+              "text"
+            ],
+            "cost": {
+              "input": 0,
+              "output": 0,
+              "cacheRead": 0,
+              "cacheWrite": 0
+            },
+            "contextWindow": 202752,
+            "maxTokens": 16384,
+            "compat": {
+              "thinkingFormat": "qwen"
+            }
+          },
+          {
+            "id": "kimi-k2.5",
+            "name": "kimi-k2.5",
+            "reasoning": false,
+            "input": [
+              "text",
+              "image"
+            ],
+            "cost": {
+              "input": 0,
+              "output": 0,
+              "cacheRead": 0,
+              "cacheWrite": 0
+            },
+            "contextWindow": 262144,
+            "maxTokens": 32768,
+            "compat": {
+              "thinkingFormat": "qwen"
+            }
+          }
+        ]
+      }
+    }
+  },
+  "agents": {
+    "defaults": {
+      "model": {
+        "primary": "bailian/qwen3.5-plus"
+      },
+      "models": {
+        "bailian/qwen3.5-plus": {},
+        "bailian/qwen3-max-2026-01-23": {},
+        "bailian/qwen3-coder-next": {},
+        "bailian/qwen3-coder-plus": {},
+        "bailian/MiniMax-M2.5": {},
+        "bailian/glm-5": {},
+        "bailian/glm-4.7": {},
+        "bailian/kimi-k2.5": {}
+      },
+      "workspace": "C:\\Users\\admin\\.openclaw\\workspace"
+    }
+  },
+  "tools": {
+    "profile": "coding"
+  },
+  "commands": {
+    "native": "auto",
+    "nativeSkills": "auto",
+    "restart": true,
+    "ownerDisplay": "raw"
+  },
+  "session": {
+    "dmScope": "per-channel-peer"
+  },
+  "gateway": {
+    "port": 18789,
+    "mode": "local",
+    "bind": "loopback",
+    "auth": {
+      "mode": "token",
+      "token": "530adc707f7de90df97f39e8ead5909a74bfa04d4df3b4b6"
+    },
+    "tailscale": {
+      "mode": "off",
+      "resetOnExit": false
+    },
+    "nodes": {
+      "denyCommands": [
+        "camera.snap",
+        "camera.clip",
+        "screen.record",
+        "contacts.add",
+        "calendar.add",
+        "reminders.add",
+        "sms.send"
+      ]
+    }
+  },
+  "meta": {
+    "lastTouchedVersion": "2026.3.12",
+    "lastTouchedAt": "2026-03-14T02:22:47.452Z"
+  }
+}

+ 11 - 0
Oracle/Oracle虚拟云网络配置.md

@@ -0,0 +1,11 @@
+虚拟云配置:  
+创建子网→IPv4 CIDR 块:10.0.0.0/24  
+子网访问:公共子网  
+编辑子网:添加安全列表knightsafe  
+创建Internet 网关:knight  
+创建路由表:添加路由规则  
+目的地:0.0.0.0/0  
+目标类型:Internet 网关  
+目标:knight  
+创建安全列表:knightsafe  
+添加出入站规则:无状态:是、源:0.0.0.0/0、IP协议:所有协议

+ 40 - 0
Oracle/Oracle虚拟服务器信息.md

@@ -0,0 +1,40 @@
+| Oracle技术网址    | [https://support.oracle.com/portal/](https://support.oracle.com/portal/)     |                                                                          |
+| ------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
+| Oracle技术密码    | n*gVtk9`#n+G5=e                                                              |                                                                          |
+| Cloud Account | zhensolid                                                                    | zhensolid39                                                              |
+| Oracle账号      | zhensolid@proton.me                                                          | zhensolid@vip.qq.com                                                     |
+| Oracle密码      | 09DY9xlnBhCsRi!SL1                                                           | ~~H4W73iPv(!2lorbhy~~~~1~~  <br>更换密码  <br>Sw@qajLcv3SK4VC9               |
+| 绕过码           | 284840023580【使用1/1次】  <br>5556 1461 5037【使用1/1次】                             | 635513112553【使用1/1次】                                                     |
+| Oracle技术账号    | zhensolid@proton.me                                                          | zhensolid@vip.qq.com                                                     |
+| Oracle引导备份    | Centos9stream【账户:root 密码:19841122Cy!】                                        | Centos9stream【账户:root 密码:19841122Cy!】                                    |
+| IP地址          | 84.235.240.199                                                               | 40.233.18.33                                                             |
+| root          | 09DY9xlnBhCsRi!SL【Portainer】                                                 | 09DY9xlnBhCsRi!SL【Portainer】                                             |
+| 外网面板地址:       | [http://84.235.240.199:33436/050a3e23](http://84.235.240.199:33436/050a3e23) | [http://40.233.18.33:36521/8d819989](http://40.233.18.33:36521/8d819989) |
+| username:     | in20fqjf                                                                     | hpgeyfqm                                                                 |
+| password:     | 70949488                                                                     | 04b41dc7                                                                 |
+| MYSQL账号       |                                                                              | kali                                                                     |
+| MYSQL密码       |                                                                              | uKPAYkIZ2cFlKPN[                                                         |
+| Siyuan授权认证码   |                                                                              | 19841122Cy!                                                              |
+| Siyuan密钥      |                                                                              | 19841122Cy!                                                              |
+| Jackett       |                                                                              | 19841122Cy!                                                              |
+| Gogs          |                                                                              | 19841122Cy!                                                              |
+| Bit           |                                                                              | RyP/Tu\Ggb#"=                                                            |
+
+| Rustdesk_key | jj7m5+yxWZvuCmPd8F58MldbErzM4KYf2VMnHm+KgeY=                                                                                                                                                                     |
+| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 安装基础指令       | apt update -y && apt install -y curl && apt install -y socat && apt install wget -y                                                                                                                              |
+| 开启BBR加速      | wget -N --no-check-certificate "[https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh](https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh)" && chmod +x tcp.sh && ./tcp.sh |
+  
+| 青龙面板 | ql.opentouch.top |
+| ---- | ---------------- |
+| 账号   | zhensolid        |
+| 密码   | 19841122Cy!      |
+
+| wp.opentouch.top | wpp.opentouch.top |
+| ---------------- | ----------------- |
+| zhensolid        | zhensolid         |
+| 19841122Cy!      | 19841122Cy!       |
+
+Oracle说明:  
+每个租户每月可免费获得前 3,000 个 OCPU 小时和 18,000 GB 小时,以使用 VM.Standard.A1.Flex 配置(相当于 4 个 OCPU 和 24 GB 内存)创建 Ampere A1 计算实例。每个租户还可以免费获得两个 VM.Standard.E2.1.Micro 实例。了解有关始终免费的资源的更多信息  
+您可以免费在您的主区域中总共维护 5 个卷备份。您当前具有 0 个卷备份。如果您在免费试用结束时创建的卷备份超过 5 个且未升级,您的数据将被删除。显示的卷备份数是主区域中的所有卷备份计数。该计数定期更新。您会发现,显示的卷备份数滞后于实际卷备份数。

+ 27 - 0
Oracle/UTOOL_图床【七牛云】.md

@@ -0,0 +1,27 @@
+AK: DwvqERYEjPZFFjE_UD5sJfB-0_KSPf71cGhGb1RQ  
+SK:t8mFT6l6DxhY_-kiBD3YAyA3-IpVBgkAUOp1Bmb8
+ 
+images.opentouch.top
+ 
+一、安装utools  
+二、安装“图床”插件  
+三、登录七牛云控制台
+
+![Exported image](IMG-20260516155631661.png)
+
+四、选择密钥管理获取API
+
+![Exported image](IMG-20260516155631731.png)   
+五、登录utools其中图床插件
+
+![Exported image](IMG-20260516155631756.png)
+
+六、图传选择设置七牛云
+
+![Exported image](IMG-20260516155631772.png)
+
+七、购买域名后,Cloudflare配置域名  
+八、cloudflare配置域名,选择CNAME,内容为七牛云提供
+
+![Exported image](IMG-20260516155631845.png)   ![Exported image](IMG-20260516155631872.png)   
+九、完成配置

BIN
Oracle/attachments/Oracle/UTOOL_图床【七牛云】/IMG-20260516155631661.png


BIN
Oracle/attachments/Oracle/UTOOL_图床【七牛云】/IMG-20260516155631731.png


BIN
Oracle/attachments/Oracle/UTOOL_图床【七牛云】/IMG-20260516155631756.png


BIN
Oracle/attachments/Oracle/UTOOL_图床【七牛云】/IMG-20260516155631772.png


BIN
Oracle/attachments/Oracle/UTOOL_图床【七牛云】/IMG-20260516155631845.png


BIN
Oracle/attachments/Oracle/UTOOL_图床【七牛云】/IMG-20260516155631872.png


+ 24 - 0
Oracle/修改Hostname.md

@@ -0,0 +1,24 @@
+```
+sudo sh -c 'echo "princess" \> /etc/hostname'
+```
+ 
+```
+sudo sh -c 'echo "127.0.0.1   princess" \>\> /etc/hosts'
+```
+ 
+```
+hostnamectl
+```
+         
+
+```
+sudo sh -c 'echo "knight" \> /etc/hostname'
+```
+ 
+```
+sudo sh -c 'echo "127.0.0.1   knight" \>\> /etc/hosts'
+```
+ 
+```
+hostnamectl
+```

+ 53 - 0
Oracle/块存储卷.md

@@ -0,0 +1,53 @@
+```
+复制系统提供iSCSI 命令和信息  
+#需要安装工具  
+sudo dnf install iscsi-initiator-utils  
+例如  
+sudo iscsiadm -m node -o new -T iqn.2015-12.com.oracleiaas:9caff65e-c79f-4b6f-9576-c19cc7d15760 -p 169.254.2.2:3260  
+sudo iscsiadm -m node -o update -T iqn.2015-12.com.oracleiaas:9caff65e-c79f-4b6f-9576-c19cc7d15760 -n node.startup -v automatic  
+sudo iscsiadm -m node -T iqn.2015-12.com.oracleiaas:9caff65e-c79f-4b6f-9576-c19cc7d15760 -p 169.254.2.2:3260 -l
+```
+ 
+```
+#使用 fdisk 对 sdb 进行分区。  
+sudo fdisk /dev/sdb
+```
+ 
+```
+#格式化分区,注意分区格式  
+sudo mkfs.ext4 /dev/sdb1  
+```
+ 
+```
+#创建挂载点  
+sudo mkdir -p /mnt/mydata 
+```
+ 
+```
+# 挂载分区  
+sudo mount /dev/sdb1 /mnt/mydata  
+```
+ 
+```
+#查看UUID  
+blkid /dev/sdb1 
+```
+ 
+```
+#编辑/etc/fstab,实现自动挂载  
+# /etc/fstab  
+# Created by anaconda on Tue Nov  5 04:35:21 2024  
+#  
+# Accessible filesystems, by reference, are maintained under '/dev/disk/'.  
+# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.  
+#  
+# After editing this file, run 'systemctl daemon-reload' to update systemd  
+# units generated from this file.  
+#  
+/dev/mapper/cs_princess-root /                       xfs     defaults        0 0  
+UUID=6314f8c5-5b79-4ebc-8d4e-026345e77722 /boot                   xfs     defaults        0 0  
+UUID=080D-E30E          /boot/efi               vfat    umask=0077,shortname=winnt 0 2  
+/dev/mapper/cs_princess-swap none                    swap    defaults        0 0  
+/dev/sdb1 /home/Mydata ext4 defaults,_netdev,nofail 0 0  
+UUID=e1e40696-370f-49dd-9c8d-5079298673a0    /mnt/mydata    ext4    defaults,_netdev,nofail    0 0
+```

+ 86 - 0
Oracle/订阅地址自建.md

@@ -0,0 +1,86 @@
+# 一、后端
+
+项目地址:https://github.com/tindy2013/subconverter
+ 
+Docker官方指引:https://github.com/tindy2013/subconverter/blob/master/README-docker.md
+   
+
+```
+#docker部署   
+docker run -d --name subcon --restart=always -p 25500:25500 tindy2013/subconverter:latest
+```
+ 
+```
+#docker-compose部署  
+subconverter:  
+    image: tindy2013/subconverter:latest  
+    container_name: subconverter  
+    restart: always  
+    ports:  
+      - 25500:25500
+```
+      
+
+# 二、前端
+
+项目地址:https://github.com/CareyWang/sub-web  
+# Clone项目到本地  
+git clone https://github.com/CareyWang/sub-web.git  
+cd sub-web
+ 
+# 编辑.env配置文件  
+vi .env
+ 
+# 修改后端地址、短链接地址  
+# API 后端  
+VUE_APP_SUBCONVERTER_DEFAULT_BACKEND = "[https://subapi.imgki.com](https://subapi.imgki.com)"
+ 
+# 短链接后端  
+VUE_APP_MYURLS_API = "[https://s.imgki.com/short](https://s.imgki.com/short)"
+ 
+# 编辑.  
+cd src/views  
+vi Subconverter.vue
+   
+
+placeholder="爱墨迹免费提供 | https://subapi.imgki.com/sub?"
+ 
+backendOptions: [{ value: "https://subapi.imgki.com/sub?" }],
+ 
+#构建镜像  
+docker build -t subweb-local:latest .
+ 
+#部署服务  
+docker run -d -p 58080:80 --restart always --name subweb subweb-local:latest
+   
+
+# 三、短链接
+
+#clone项目到本地  
+git clone [https://github.com/CareyWang/MyUrls.git](https://github.com/CareyWang/MyUrls.git) MyUrls  
+cd MyUrls  
+vi public/index.html  
+const backend = '[https://s.2z.pw](https://s.2z.pw)' #修改短链接域名  
+cd MyUrls  
+cp .env.example .env #编辑好域名、端口等配置  
+docker-compose up -d #直接启动
+ 
+跨域设置【宝塔配置需要在url代理里面添加相关的参数】  
+需要设置跨域Access-Control-Allow-Origin *
+ 
+#nginx配置  
+server {  
+server_name example.com;
+ 
+location / {  
+add_header 'Access-Control-Allow-Origin' '*';  
+proxy_pass http://127.0.0.1:8002/;  
+}  
+}
+ 
+#nginx设置  
+client_max_body_size 24M;  
+client_body_buffer_size 128k;
+ 
+client_header_buffer_size 5120k;  
+large_client_header_buffers 16 5120k;

+ 1 - 0
QuantumultX/圈X专用/TIKTOK解锁规则.md

@@ -0,0 +1 @@
+[https://github.com/zhensolid/Profiles/tree/master/Quantumult/Rewrite/Unlock](https://github.com/zhensolid/Profiles/tree/master/Quantumult/Rewrite/Unlock)

BIN
QuantumultX/圈X专用/attachments/QuantumultX/圈X专用/奥利给直播/IMG-20260516155631925.png


+ 8 - 0
QuantumultX/圈X专用/blackmatrix7大佬新项目.md

@@ -0,0 +1,8 @@
+GitHub:  
+[https://github.com/blackmatrix7/ios_rule_script](https://github.com/blackmatrix7/ios_rule_script)
+ 
+规则:  
+[https://github.com/blackmatrix7/ios_rule_script/tree/master/rule](https://github.com/blackmatrix7/ios_rule_script/tree/master/rule)
+ 
+复写规则:  
+[https://github.com/blackmatrix7/ios_rule_script/tree/master/rewrite](https://github.com/blackmatrix7/ios_rule_script/tree/master/rewrite)

+ 16 - 0
QuantumultX/圈X专用/分流.md

@@ -0,0 +1,16 @@
+==DOMAIN-SUFFIX==  
+==基于域名后缀判断。==  
+==输入 baidu.com 就可以过滤zhidao.baidu.com,pan.baidu.comd等 baidu.com 后缀的网站。==  
+==DOMAIN-KEYWORD==  
+==基于关键词的判断。==  
+==输入baidu,就可以过滤 baidu.com,baidu.jp等含有 baidu 字眼的网站。==  
+==DOMAIN==  
+==基于域名的判断。==  
+==输入== ==www.baidu.com== ==就可以过滤== ==www.baidu.com/==_*_==的网站。==  
+==IP-CIDR==  
+==判断是否为局域网。==  
+==GEOIP==  
+==判断服务器地址。==  
+==Surge== ==是可以选择的,但是之类好像只能自己填写,比如== ==JP====,====CN== ==之类的。==  
+==FINAL==  
+==剩余的网站。==

+ 3 - 0
QuantumultX/圈X专用/分流规则学习资料.md

@@ -0,0 +1,3 @@
+|      |                                                                                                                            |
+| ---- | -------------------------------------------------------------------------------------------------------------------------- |
+| 参考文献 | [https://docs.cfw.lbyczf.com/contents/ui/profiles/rules.html](https://docs.cfw.lbyczf.com/contents/ui/profiles/rules.html) |

+ 1 - 0
QuantumultX/圈X专用/圈X 不完成攻略.md

@@ -0,0 +1 @@
+[https://www.notion.so/Quantumult-X-1d32ddc6e61c4892ad2ec5ea47f00917#a6a3ce32d4744a4687c8d7f6af17a1d9](https://www.notion.so/Quantumult-X-1d32ddc6e61c4892ad2ec5ea47f00917#a6a3ce32d4744a4687c8d7f6af17a1d9)

+ 4 - 0
QuantumultX/圈X专用/大飞懒人设置去广告这里404.md

@@ -0,0 +1,4 @@
+使用我的Quantumult X 懒人配置的出现 去广告这里404错误的:  
+1、直接删除该条订阅;  
+2、在分流-订阅中添加以下地址:https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/QuantumultX/Advertising/Advertising.list  
+3、将以上去广告订阅 指向 策略组:全球拦截或者Reject或者你自己设置的去广告策略组,保存-更新-即可!

+ 21 - 0
QuantumultX/圈X专用/奥利给直播.md

@@ -0,0 +1,21 @@
+#QuantumultX脚本:
+ 
+[奥利给直播] unlock (by 浥轻尘)
+ 
+Download Link : [https://ok6.app/](https://ok6.app/)
+ 
+[rewrite_local]  
+#奥利给直播会员  
+^https?:\/\/1008610010\.yohui\.vip\/index\.php\/Api\/LiveApi\/getMovietime url script-response-body ==AoLiGei.js==
+ 
+[mitm]  
+hostname = 1008610010.yohui.vip,  
+*/
+ 
+来源:@yqc_sharing
+
+==使用本地脚本== ==放入====AoLiGei.js==
+
+==如下图==
+
+![1054 q Scripts Q AoLiGei.js 0055 97 4G SD Av](IMG-20260516155631925.png)

+ 26 - 0
QuantumultX/圈X专用/重要cron表达式自学笔记.md

@@ -0,0 +1,26 @@
+举例:彩云天气
+
+|   |   |   |   |   |
+|---|---|---|---|---|
+|分|小时|日|月|年|
+|0|0-21/3|*|*|*|
+ 
+运行结果:  
+==2020-11-13 15:00:00==  
+==2020-11-13 18:00:00==  
+2020-11-13 21:00:00  
+2020-11-14 00:00:00  
+2020-11-14 03:00:00  
+2020-11-14 06:00:00  
+2020-11-14 09:00:00  
+2020-11-14 12:00:00  
+==2020-11-14 15:00:00==  
+==2020-11-14 18:00:00==
+   
+
+得出结论:  
+0分:代表从0分钟开始  
+0-21/3小时:代表从0点到21点属于一个周期,并且每3个小时运行一次  
+*日:不定日期  
+*月:不定月份  
+*年:不定年份

Неке датотеке нису приказане због велике количине промена