Compare commits
5 Commits
5b32d919f3
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 521496f2df | |||
| 7f14056210 | |||
| 6b50219f55 | |||
| ab41c81a53 | |||
| 30063feba4 |
@@ -7,9 +7,8 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"ctime": 1772680366639,
|
"ctime": 1778660024443,
|
||||||
"path": "work/移动杭研/开发记录/7.19.0/开发笔记.md",
|
"path": "work/移动杭研/开发记录/7.21.0/开发笔记 7.21.0.md"
|
||||||
"title": "7.19.0 开发笔记"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -4,5 +4,7 @@
|
|||||||
"oz-clear-unused-images",
|
"oz-clear-unused-images",
|
||||||
"obsidian-excalidraw-plugin",
|
"obsidian-excalidraw-plugin",
|
||||||
"templater-obsidian",
|
"templater-obsidian",
|
||||||
"obsidian-linter"
|
"obsidian-linter",
|
||||||
|
"recent-files-obsidian",
|
||||||
|
"quickadd"
|
||||||
]
|
]
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
"page-preview": true,
|
"page-preview": true,
|
||||||
"daily-notes": true,
|
"daily-notes": true,
|
||||||
"templates": false,
|
"templates": false,
|
||||||
"note-composer": false,
|
"note-composer": true,
|
||||||
"command-palette": true,
|
"command-palette": true,
|
||||||
"slash-command": false,
|
"slash-command": false,
|
||||||
"editor-status": true,
|
"editor-status": true,
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
"showAttachments": false,
|
"showAttachments": false,
|
||||||
"hideUnresolved": false,
|
"hideUnresolved": false,
|
||||||
"showOrphans": true,
|
"showOrphans": true,
|
||||||
"collapse-color-groups": true,
|
"collapse-color-groups": false,
|
||||||
"colorGroups": [],
|
"colorGroups": [],
|
||||||
"collapse-display": false,
|
"collapse-display": false,
|
||||||
"showArrow": false,
|
"showArrow": false,
|
||||||
@@ -17,6 +17,6 @@
|
|||||||
"repelStrength": 10,
|
"repelStrength": 10,
|
||||||
"linkStrength": 1,
|
"linkStrength": 1,
|
||||||
"linkDistance": 250,
|
"linkDistance": 250,
|
||||||
"scale": 0.09848280266864458,
|
"scale": 0.13807120506649795,
|
||||||
"close": true
|
"close": true
|
||||||
}
|
}
|
||||||
@@ -11,23 +11,29 @@
|
|||||||
"workspace:goto-last-tab": [],
|
"workspace:goto-last-tab": [],
|
||||||
"editor:set-heading-1": [
|
"editor:set-heading-1": [
|
||||||
{
|
{
|
||||||
"modifiers": ["Mod"],
|
"modifiers": [
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
"key": "1"
|
"key": "1"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"editor:set-heading-2": [
|
"editor:set-heading-2": [
|
||||||
{
|
{
|
||||||
"modifiers": ["Mod"],
|
"modifiers": [
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
"key": "2"
|
"key": "2"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"editor:set-heading-3": [
|
"editor:set-heading-3": [
|
||||||
{
|
{
|
||||||
"modifiers": ["Mod"],
|
"modifiers": [
|
||||||
|
"Mod"
|
||||||
|
],
|
||||||
"key": "3"
|
"key": "3"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"templater-obsidian:create-attachment/templates/日常记录-闪念笔记.md": [
|
"quickadd:runQuickAdd": [
|
||||||
{
|
{
|
||||||
"modifiers": [],
|
"modifiers": [],
|
||||||
"key": "F1"
|
"key": "F1"
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
"copyLinkToElemenetAnchorTo100": false,
|
"copyLinkToElemenetAnchorTo100": false,
|
||||||
"copyFrameLinkByName": false,
|
"copyFrameLinkByName": false,
|
||||||
"disableDoubleClickTextEditing": false,
|
"disableDoubleClickTextEditing": false,
|
||||||
|
"phoneFooterSafeAreaPadding": false,
|
||||||
"folder": "excalidraw",
|
"folder": "excalidraw",
|
||||||
"cropFolder": "excalidraw/cropped",
|
"cropFolder": "excalidraw/cropped",
|
||||||
"annotateFolder": "excalidraw/annotations",
|
"annotateFolder": "excalidraw/annotations",
|
||||||
@@ -29,8 +30,10 @@
|
|||||||
"annotateSuffix": "",
|
"annotateSuffix": "",
|
||||||
"annotatePrefix": "annotated_",
|
"annotatePrefix": "annotated_",
|
||||||
"annotatePreserveSize": false,
|
"annotatePreserveSize": false,
|
||||||
|
"displaySVGInPreview": false,
|
||||||
"previewImageType": "SVGIMG",
|
"previewImageType": "SVGIMG",
|
||||||
"renderingConcurrency": 3,
|
"renderingConcurrency": 3,
|
||||||
|
"imageCacheRetentionDays": 30,
|
||||||
"allowImageCache": true,
|
"allowImageCache": true,
|
||||||
"allowImageCacheInScene": true,
|
"allowImageCacheInScene": true,
|
||||||
"displayExportedImageIfAvailable": false,
|
"displayExportedImageIfAvailable": false,
|
||||||
@@ -107,13 +110,14 @@
|
|||||||
"addDummyTextElement": false,
|
"addDummyTextElement": false,
|
||||||
"zoteroCompatibility": false,
|
"zoteroCompatibility": false,
|
||||||
"fieldSuggester": true,
|
"fieldSuggester": true,
|
||||||
|
"enableOnloadScripts": false,
|
||||||
"compatibilityMode": false,
|
"compatibilityMode": false,
|
||||||
"drawingOpenCount": 0,
|
"drawingOpenCount": 0,
|
||||||
"library": "deprecated",
|
"library": "deprecated",
|
||||||
"library2": {
|
"library2": {
|
||||||
"type": "excalidrawlib",
|
"type": "excalidrawlib",
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.20.6",
|
"source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.22.3",
|
||||||
"libraryItems": []
|
"libraryItems": []
|
||||||
},
|
},
|
||||||
"imageElementNotice": true,
|
"imageElementNotice": true,
|
||||||
@@ -126,6 +130,7 @@
|
|||||||
"scriptEngineSettings": {},
|
"scriptEngineSettings": {},
|
||||||
"previousRelease": "2.20.6",
|
"previousRelease": "2.20.6",
|
||||||
"showReleaseNotes": false,
|
"showReleaseNotes": false,
|
||||||
|
"excalidrawMasteryPromoCollapsed": false,
|
||||||
"compareManifestToPluginVersion": true,
|
"compareManifestToPluginVersion": true,
|
||||||
"showNewVersionNotification": true,
|
"showNewVersionNotification": true,
|
||||||
"latexBoilerplate": "\\color{blue}",
|
"latexBoilerplate": "\\color{blue}",
|
||||||
@@ -482,15 +487,178 @@
|
|||||||
"canvasImmersiveEmbed": true,
|
"canvasImmersiveEmbed": true,
|
||||||
"startupScriptPath": "",
|
"startupScriptPath": "",
|
||||||
"aiEnabled": true,
|
"aiEnabled": true,
|
||||||
"openAIAPIToken": "sk-JynMarAEOuLlYb3_bdQAdHEhKp-vK9az-uQXGlw_VSKQIEHnCb86PeqtxLQ",
|
"aiVerboseLogging": false,
|
||||||
"openAIDefaultTextModel": "gpt-5.2",
|
"aiProviderProfiles": {
|
||||||
"openAIDefaultTextModelMaxTokens": 0,
|
"OpenAI": {
|
||||||
"openAIDefaultVisionModel": "gemini-3.1-pro-preview",
|
"provider": "openai",
|
||||||
"openAIDefaultImageGenerationModel": "gemini-3.1-pro-preview",
|
"apiKey": "",
|
||||||
"openAIURL": "https://api.ai-wave.org/v1/chat/completions",
|
"baseURL": "https://api.openai.com/v1"
|
||||||
"openAIImageGenerationURL": "https://api.openai.com/v1/images/generations",
|
},
|
||||||
"openAIImageEditsURL": "https://api.openai.com/v1/images/edits",
|
"Anthropic": {
|
||||||
"openAIImageVariationURL": "https://api.openai.com/v1/images/variations",
|
"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"
|
||||||
|
],
|
||||||
|
"supportsPromptImageTransforms": true,
|
||||||
|
"supportsMaskImageEdits": false
|
||||||
|
},
|
||||||
|
"gemini-3.1-flash-image-preview": {
|
||||||
|
"providerId": "Google Gemini",
|
||||||
|
"model": "gemini-3.1-flash-image-preview",
|
||||||
|
"supportedSizes": [
|
||||||
|
"1024x1024"
|
||||||
|
],
|
||||||
|
"supportsPromptImageTransforms": true,
|
||||||
|
"supportsMaskImageEdits": false
|
||||||
|
},
|
||||||
|
"gemini-3-pro-image-preview": {
|
||||||
|
"providerId": "Google Gemini",
|
||||||
|
"model": "gemini-3-pro-image-preview",
|
||||||
|
"supportedSizes": [
|
||||||
|
"1024x1024"
|
||||||
|
],
|
||||||
|
"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": 4096,
|
||||||
"modifierKeyConfig": {
|
"modifierKeyConfig": {
|
||||||
"Mac": {
|
"Mac": {
|
||||||
"LocalFileDragAction": {
|
"LocalFileDragAction": {
|
||||||
@@ -780,7 +948,6 @@
|
|||||||
"longPressDesktop": 500,
|
"longPressDesktop": 500,
|
||||||
"longPressMobile": 500,
|
"longPressMobile": 500,
|
||||||
"doubleClickLinkOpenViewMode": true,
|
"doubleClickLinkOpenViewMode": true,
|
||||||
"isDebugMode": false,
|
|
||||||
"rank": "Bronze",
|
"rank": "Bronze",
|
||||||
"modifierKeyOverrides": [
|
"modifierKeyOverrides": [
|
||||||
{
|
{
|
||||||
@@ -813,6 +980,7 @@
|
|||||||
"margin": "normal"
|
"margin": "normal"
|
||||||
},
|
},
|
||||||
"disableContextMenu": false,
|
"disableContextMenu": false,
|
||||||
|
"isDebugMode": false,
|
||||||
"defaultTrayMode": true,
|
"defaultTrayMode": true,
|
||||||
"compactModeOnTablets": true
|
"compactModeOnTablets": true
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"id": "obsidian-excalidraw-plugin",
|
"id": "obsidian-excalidraw-plugin",
|
||||||
"name": "Excalidraw",
|
"name": "Excalidraw",
|
||||||
"version": "2.21.2",
|
"version": "2.23.3",
|
||||||
"minAppVersion": "1.5.7",
|
"minAppVersion": "1.5.7",
|
||||||
"description": "Sketch Your Mind. An Obsidian plugin to edit and view Excalidraw drawings. Enter the world of 4D Visual PKM.",
|
"description": "Sketch Your Mind. Edit and view Excalidraw drawings. Enter the world of 4D Visual PKM.",
|
||||||
"author": "Zsolt Viczian",
|
"author": "Zsolt Viczian",
|
||||||
"authorUrl": "https://excalidraw-obsidian.online",
|
"authorUrl": "https://excalidraw-obsidian.online",
|
||||||
"fundingUrl": "https://ko-fi.com/zsolt",
|
"fundingUrl": "https://ko-fi.com/zsolt",
|
||||||
|
|||||||
@@ -0,0 +1,220 @@
|
|||||||
|
{
|
||||||
|
"choices": [
|
||||||
|
{
|
||||||
|
"id": "c31732d3-4333-4aa1-9963-4f2ee5580251",
|
||||||
|
"name": "日常记录-闪念笔记",
|
||||||
|
"type": "Template",
|
||||||
|
"command": false,
|
||||||
|
"templatePath": "attachment/templates/日常记录-闪念笔记.md",
|
||||||
|
"fileNameFormat": {
|
||||||
|
"enabled": true,
|
||||||
|
"format": "{{DATE:MM月DD日 HHmmss}}"
|
||||||
|
},
|
||||||
|
"folder": {
|
||||||
|
"enabled": false,
|
||||||
|
"folders": [],
|
||||||
|
"chooseWhenCreatingNote": false,
|
||||||
|
"createInSameFolderAsActiveFile": false,
|
||||||
|
"chooseFromSubfolders": false
|
||||||
|
},
|
||||||
|
"appendLink": false,
|
||||||
|
"openFile": true,
|
||||||
|
"fileOpening": {
|
||||||
|
"location": "split",
|
||||||
|
"direction": "vertical",
|
||||||
|
"mode": "default",
|
||||||
|
"focus": true
|
||||||
|
},
|
||||||
|
"fileExistsMode": "Increment the file name",
|
||||||
|
"setFileExistsBehavior": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "d9111ada-faa6-4d0f-8260-9c3cb97eade8",
|
||||||
|
"name": "移动杭研-开发笔记",
|
||||||
|
"type": "Template",
|
||||||
|
"command": false,
|
||||||
|
"templatePath": "attachment/templates/移动杭研-开发笔记.md",
|
||||||
|
"fileNameFormat": {
|
||||||
|
"enabled": true,
|
||||||
|
"format": "开发笔记 {{VALUE:version}}"
|
||||||
|
},
|
||||||
|
"folder": {
|
||||||
|
"enabled": false,
|
||||||
|
"folders": [],
|
||||||
|
"chooseWhenCreatingNote": false,
|
||||||
|
"createInSameFolderAsActiveFile": false,
|
||||||
|
"chooseFromSubfolders": false
|
||||||
|
},
|
||||||
|
"appendLink": false,
|
||||||
|
"openFile": true,
|
||||||
|
"fileOpening": {
|
||||||
|
"location": "split",
|
||||||
|
"direction": "vertical",
|
||||||
|
"mode": "default",
|
||||||
|
"focus": true
|
||||||
|
},
|
||||||
|
"fileExistsMode": "Increment the file name",
|
||||||
|
"setFileExistsBehavior": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "9b9829e0-5cb5-4cc1-907c-7eb0626a2c3d",
|
||||||
|
"name": "移动杭研-问题记录",
|
||||||
|
"type": "Template",
|
||||||
|
"command": false,
|
||||||
|
"templatePath": "attachment/templates/移动杭研-问题记录.md",
|
||||||
|
"fileNameFormat": {
|
||||||
|
"enabled": true,
|
||||||
|
"format": "{{DATE:MMDD}}-{{VALUE:info|{{DATE:HHmmss}}}}"
|
||||||
|
},
|
||||||
|
"folder": {
|
||||||
|
"enabled": false,
|
||||||
|
"folders": [],
|
||||||
|
"chooseWhenCreatingNote": false,
|
||||||
|
"createInSameFolderAsActiveFile": false,
|
||||||
|
"chooseFromSubfolders": false
|
||||||
|
},
|
||||||
|
"appendLink": false,
|
||||||
|
"openFile": true,
|
||||||
|
"fileOpening": {
|
||||||
|
"location": "split",
|
||||||
|
"direction": "vertical",
|
||||||
|
"mode": "default",
|
||||||
|
"focus": true
|
||||||
|
},
|
||||||
|
"fileExistsMode": "Increment the file name",
|
||||||
|
"setFileExistsBehavior": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "170cca5b-3037-4b3b-9f1c-82235ecde717",
|
||||||
|
"name": "打开控制台",
|
||||||
|
"type": "Macro",
|
||||||
|
"command": false,
|
||||||
|
"runOnStartup": false,
|
||||||
|
"macro": {
|
||||||
|
"name": "打开控制台",
|
||||||
|
"id": "244eb44a-c362-440c-a21e-8065a482ab68",
|
||||||
|
"commands": [
|
||||||
|
{
|
||||||
|
"name": "openTerminal",
|
||||||
|
"type": "UserScript",
|
||||||
|
"id": "2144335d-f088-4156-a81c-6fb4ab30bf55",
|
||||||
|
"path": "attachment/scripts/openTerminal.js",
|
||||||
|
"settings": {}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"inputPrompt": "single-line",
|
||||||
|
"persistInputPromptDrafts": true,
|
||||||
|
"useSelectionAsCaptureValue": true,
|
||||||
|
"devMode": false,
|
||||||
|
"templateFolderPath": "attachment/templates",
|
||||||
|
"announceUpdates": "major",
|
||||||
|
"version": "2.12.0",
|
||||||
|
"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}}+etacdotdelta_jcdot 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,
|
||||||
|
"mutualExclusionInsertAfterAndWriteToBottomOfFile": true,
|
||||||
|
"setVersionAfterUpdateModalRelease": true,
|
||||||
|
"addDefaultAIProviders": true,
|
||||||
|
"removeMacroIndirection": true,
|
||||||
|
"migrateFileOpeningSettings": true,
|
||||||
|
"backfillFileOpeningDefaults": true,
|
||||||
|
"setProviderModelDiscoveryMode": true,
|
||||||
|
"migrateProviderApiKeysToSecretStorage": true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"id": "quickadd",
|
||||||
|
"name": "QuickAdd",
|
||||||
|
"version": "2.12.0",
|
||||||
|
"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 +1,211 @@
|
|||||||
|
{
|
||||||
|
"recentFiles": [
|
||||||
|
{
|
||||||
|
"basename": "Prompt 02 COSMIC 功能过程",
|
||||||
|
"path": "resource/ai/prompts/cosmic/Prompt 02 COSMIC 功能过程.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "开发笔记 7.21.0",
|
||||||
|
"path": "work/移动杭研/开发记录/7.21.0/开发笔记 7.21.0.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "05月18日 154321 华为、中兴、自研解封禁联调",
|
||||||
|
"path": "000-inbox/05月18日 154321 华为、中兴、自研解封禁联调.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "Prompt 01 COSMIC 需求扩写",
|
||||||
|
"path": "resource/ai/prompts/cosmic/Prompt 01 COSMIC 需求扩写.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "Prompt 00 COSMIC v1",
|
||||||
|
"path": "resource/ai/prompts/cosmic/Prompt 00 COSMIC v1.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "05月19日 154820",
|
||||||
|
"path": "000-inbox/05月19日 154820.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "开发笔记 7.20.0",
|
||||||
|
"path": "work/移动杭研/开发记录/7.20.0/开发笔记 7.20.0.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "服务器-美国",
|
||||||
|
"path": "personal/服务器-美国.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "服务器-香港",
|
||||||
|
"path": "personal/服务器-香港.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "试用业务-时长、流量到期",
|
||||||
|
"path": "work/移动杭研/业务梳理/业务工单/试用业务-时长、流量到期.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "ubuntu",
|
||||||
|
"path": "resource/系统/ubuntu.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "001 大模型启动流程",
|
||||||
|
"path": "resource/ai/大模型安装笔记/001 大模型启动流程.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "Hermes 命令 cli",
|
||||||
|
"path": "resource/ai/Hermes 命令 cli.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "Hermes",
|
||||||
|
"path": "resource/ai/Hermes.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "个人债务测算",
|
||||||
|
"path": "000-inbox/个人债务测算.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "Prompt 06 COSMIC 锐评",
|
||||||
|
"path": "resource/ai/prompts/cosmic/Prompt 06 COSMIC 锐评.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "Prompt 05 COSMIC 时序图",
|
||||||
|
"path": "resource/ai/prompts/cosmic/Prompt 05 COSMIC 时序图.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "Prompt 04 COSMIC PRD 文档",
|
||||||
|
"path": "resource/ai/prompts/cosmic/Prompt 04 COSMIC PRD 文档.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "Prompt 03 COSMIC 子过程",
|
||||||
|
"path": "resource/ai/prompts/cosmic/Prompt 03 COSMIC 子过程.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "数据库信息",
|
||||||
|
"path": "work/移动杭研/项目备忘/数据库信息.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "Hermes 命令 slash",
|
||||||
|
"path": "resource/ai/Hermes 命令 slash.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "数据库设计-监控系统",
|
||||||
|
"path": "excalidraw/工作相关/数据库设计-监控系统.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "VSCode 配置文件",
|
||||||
|
"path": "resource/配置/VSCode 配置文件.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "vim 快捷键与操作手册",
|
||||||
|
"path": "resource/系统/vim 快捷键与操作手册.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "openpalm",
|
||||||
|
"path": "openpalm/openpalm.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "Claude Code 配置文件",
|
||||||
|
"path": "resource/配置/Claude Code 配置文件.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "Codex 配置文件",
|
||||||
|
"path": "resource/配置/Codex 配置文件.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "ibs-ai-mcp",
|
||||||
|
"path": "000-inbox/ibs-ai-mcp.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "gitleaks.toml",
|
||||||
|
"path": "resource/工具/gitleaks.toml.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "ibs-export",
|
||||||
|
"path": "work/移动杭研/业务梳理/ibs-export.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "常用命令",
|
||||||
|
"path": "resource/常用命令.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "s-ui",
|
||||||
|
"path": "resource/系统/网络/s-ui.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "论文系统",
|
||||||
|
"path": "personal/专升本/毕业论文/论文系统.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "MCP 学习",
|
||||||
|
"path": "000-inbox/MCP 学习.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "labelImg",
|
||||||
|
"path": "resource/ai/labelImg.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "月报 202604",
|
||||||
|
"path": "work/移动杭研/项目备忘/月报 202604.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "CLAUDE",
|
||||||
|
"path": "work/移动杭研/AI 项目/CLAUDE.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "cache+域名配置工单",
|
||||||
|
"path": "work/移动杭研/业务梳理/运营工单/cache+域名配置工单.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "IBS 智能体具体落实技术方案",
|
||||||
|
"path": "work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "AI 工具需求-MCP 请求数统计",
|
||||||
|
"path": "work/移动杭研/AI 项目/AI 工具需求-MCP 请求数统计.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "AI 工具需求-命中率计算",
|
||||||
|
"path": "work/移动杭研/AI 项目/AI 工具需求-命中率计算.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "图纸-IBS 智能体-v1-流量查询 demo",
|
||||||
|
"path": "work/移动杭研/AI 项目/图纸-IBS 智能体-v1-流量查询 demo.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "图纸-IBS 智能体-v1-流量查询 demo 对象存储",
|
||||||
|
"path": "work/移动杭研/AI 项目/图纸-IBS 智能体-v1-流量查询 demo 对象存储.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "图纸-IBS 智能体-v2-项目架构 原生 MCP",
|
||||||
|
"path": "work/移动杭研/AI 项目/图纸-IBS 智能体-v2-项目架构 原生 MCP.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "图纸-IBS 智能体-v3-项目架构",
|
||||||
|
"path": "work/移动杭研/AI 项目/图纸-IBS 智能体-v3-项目架构.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "getHitRatio接口分析",
|
||||||
|
"path": "work/移动杭研/AI 项目/getHitRatio接口分析.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "settings.local.json",
|
||||||
|
"path": "work/移动杭研/AI 项目/settings.local.json.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "RAG Flow 部署",
|
||||||
|
"path": "work/移动杭研/AI 项目/RAG Flow 部署.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "RAG Flow",
|
||||||
|
"path": "work/移动杭研/AI 项目/RAG Flow.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"basename": "ibs-ai 项目梳理",
|
||||||
|
"path": "work/移动杭研/AI 项目/ibs-ai 项目梳理.md"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"omittedPaths": [
|
||||||
|
"^calendar/",
|
||||||
|
"^attachment/"
|
||||||
|
],
|
||||||
|
"omittedTags": [],
|
||||||
|
"updateOn": "file-open",
|
||||||
|
"omitBookmarks": false
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"id": "recent-files-obsidian",
|
||||||
|
"name": "Recent Files",
|
||||||
|
"version": "1.7.9",
|
||||||
|
"minAppVersion": "0.16.3",
|
||||||
|
"description": "List files by most recently opened.",
|
||||||
|
"author": "Tony Grosinger",
|
||||||
|
"authorUrl": "https://grosinger.net",
|
||||||
|
"isDesktopOnly": false,
|
||||||
|
"fundingUrl": {
|
||||||
|
"Github Sponsor": "https://github.com/sponsors/tgrosinger",
|
||||||
|
"Buy me a Coffee": "https://buymeacoffee.com/tgrosinger",
|
||||||
|
"Paypal": "https://paypal.me/tgrosinger"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
.recent-files-file {
|
||||||
|
.tree-item-spacer {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.recent-files-title {
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.recent-files-file-delete {
|
||||||
|
justify-content: right;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.recent-files-title:hover .recent-files-file-delete {
|
||||||
|
display: flex;
|
||||||
|
cursor: var(--cursor);
|
||||||
|
}
|
||||||
|
|
||||||
|
.recent-files-file-delete:hover {
|
||||||
|
color: var(--nav-item-color-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
.recent-files-donation {
|
||||||
|
width: 70%;
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.recent-files-donate-button {
|
||||||
|
margin: 10px;
|
||||||
|
}
|
||||||
@@ -23,9 +23,7 @@
|
|||||||
],
|
],
|
||||||
"syntax_highlighting": true,
|
"syntax_highlighting": true,
|
||||||
"syntax_highlighting_mobile": false,
|
"syntax_highlighting_mobile": false,
|
||||||
"enabled_templates_hotkeys": [
|
"enabled_templates_hotkeys": [],
|
||||||
"attachment/templates/日常记录-闪念笔记.md"
|
|
||||||
],
|
|
||||||
"startup_templates": [],
|
"startup_templates": [],
|
||||||
"intellisense_render": 1,
|
"intellisense_render": 1,
|
||||||
"enable_ribbon_icon": true
|
"enable_ribbon_icon": true
|
||||||
|
|||||||
@@ -1,11 +1,17 @@
|
|||||||
{
|
{
|
||||||
"id": "templater-obsidian",
|
"id": "templater-obsidian",
|
||||||
"name": "Templater",
|
"name": "Templater",
|
||||||
"version": "2.18.1",
|
"version": "2.20.4",
|
||||||
"description": "Create and use templates",
|
"description": "Advanced templating and automation using handlebars-like syntax.",
|
||||||
"minAppVersion": "1.5.0",
|
"minAppVersion": "1.12.2",
|
||||||
"author": "SilentVoid",
|
"author": "SilentVoid",
|
||||||
"authorUrl": "https://github.com/SilentVoid13",
|
"authorUrl": "https://github.com/SilentVoid13",
|
||||||
|
"fundingUrl": {
|
||||||
|
"GitHub Sponser (Zachatoo, maintainer)": "https://github.com/sponsors/Zachatoo",
|
||||||
|
"Ko-fi (Zachatoo, maintainer)": "https://ko-fi.com/zachatoo",
|
||||||
|
"GitHub Sponser (SilentVoid13, creator)": "https://github.com/sponsors/SilentVoid13",
|
||||||
|
"Paypal (SilentVoid13, creator)": "https://www.paypal.com/donate?hosted_button_id=U2SRGAFYXT32Q"
|
||||||
|
},
|
||||||
"helpUrl": "https://silentvoid13.github.io/Templater/",
|
"helpUrl": "https://silentvoid13.github.io/Templater/",
|
||||||
"isDesktopOnly": false
|
"isDesktopOnly": false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -221,6 +221,6 @@ textarea.templater-prompt-input:focus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
li.CodeMirror-hint-active {
|
li.CodeMirror-hint-active {
|
||||||
background: #08f;
|
background: #0088ff;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
"excalidraw-export-padding": "number",
|
"excalidraw-export-padding": "number",
|
||||||
"excalidraw-export-pngscale": "number",
|
"excalidraw-export-pngscale": "number",
|
||||||
"excalidraw-export-embed-scene": "checkbox",
|
"excalidraw-export-embed-scene": "checkbox",
|
||||||
|
"excalidraw-export-internal-links": "checkbox",
|
||||||
"excalidraw-link-prefix": "text",
|
"excalidraw-link-prefix": "text",
|
||||||
"excalidraw-url-prefix": "text",
|
"excalidraw-url-prefix": "text",
|
||||||
"excalidraw-link-brackets": "checkbox",
|
"excalidraw-link-brackets": "checkbox",
|
||||||
@@ -23,7 +24,6 @@
|
|||||||
"excalidraw-autoexport": "text",
|
"excalidraw-autoexport": "text",
|
||||||
"excalidraw-embeddable-theme": "text",
|
"excalidraw-embeddable-theme": "text",
|
||||||
"excalidraw-open-md": "checkbox",
|
"excalidraw-open-md": "checkbox",
|
||||||
"excalidraw-embed-md": "checkbox",
|
"excalidraw-embed-md": "checkbox"
|
||||||
"excalidraw-export-internal-links": "checkbox"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,11 +4,26 @@
|
|||||||
"type": "split",
|
"type": "split",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "0a4507548b25ff58",
|
"id": "64438af04f4b395c",
|
||||||
"type": "tabs",
|
"type": "tabs",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "1184ee15ec1fc896",
|
"id": "7642168f74ef821a",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "resource/ai/Hermes 命令 cli.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false,
|
||||||
|
"backlinks": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "Hermes 命令 cli"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "6fa615aca5f7108e",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
@@ -23,22 +38,37 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "c3b31f156a70117f",
|
"id": "e366a44a66017faf",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "000-inbox/2026-03-29_16-52-52.md",
|
"file": "personal/服务器-美国.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false,
|
"source": false,
|
||||||
"backlinks": false
|
"backlinks": false
|
||||||
},
|
},
|
||||||
"icon": "lucide-file",
|
"icon": "lucide-file",
|
||||||
"title": "2026-03-29_16-52-52"
|
"title": "服务器-美国"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3e12e0f7fca28148",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "calendar/diary/2026-05-19.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false,
|
||||||
|
"backlinks": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "2026-05-19"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"currentTab": 1
|
"currentTab": 3
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "vertical"
|
"direction": "vertical"
|
||||||
@@ -50,6 +80,7 @@
|
|||||||
{
|
{
|
||||||
"id": "6836caf2765d7139",
|
"id": "6836caf2765d7139",
|
||||||
"type": "tabs",
|
"type": "tabs",
|
||||||
|
"dimension": 73.04860088365243,
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "c8718c0c63702202",
|
"id": "c8718c0c63702202",
|
||||||
@@ -70,7 +101,7 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "search",
|
"type": "search",
|
||||||
"state": {
|
"state": {
|
||||||
"query": "file:香港",
|
"query": "file: ubu",
|
||||||
"matchingCase": false,
|
"matchingCase": false,
|
||||||
"explainSearch": true,
|
"explainSearch": true,
|
||||||
"collapseAll": false,
|
"collapseAll": false,
|
||||||
@@ -92,10 +123,27 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2184ba625789cef2",
|
||||||
|
"type": "tabs",
|
||||||
|
"dimension": 26.95139911634757,
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "910ff34a625157e6",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "recent-files",
|
||||||
|
"state": {},
|
||||||
|
"icon": "clock",
|
||||||
|
"title": "Recent files"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "horizontal",
|
"direction": "horizontal",
|
||||||
"width": 255.5
|
"width": 261.5
|
||||||
},
|
},
|
||||||
"right": {
|
"right": {
|
||||||
"id": "ca733f6d5936ae40",
|
"id": "ca733f6d5936ae40",
|
||||||
@@ -112,13 +160,13 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "outline",
|
"type": "outline",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "000-inbox/2026-03-29_16-52-52.md",
|
"file": "calendar/diary/2026-05-19.md",
|
||||||
"followCursor": true,
|
"followCursor": true,
|
||||||
"showSearch": false,
|
"showSearch": false,
|
||||||
"searchQuery": ""
|
"searchQuery": ""
|
||||||
},
|
},
|
||||||
"icon": "lucide-list",
|
"icon": "lucide-list",
|
||||||
"title": "2026-03-29_16-52-52 的大纲"
|
"title": "2026-05-19 的大纲"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -213,7 +261,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "horizontal",
|
"direction": "horizontal",
|
||||||
"width": 281.5
|
"width": 291.5
|
||||||
},
|
},
|
||||||
"left-ribbon": {
|
"left-ribbon": {
|
||||||
"hiddenItems": {
|
"hiddenItems": {
|
||||||
@@ -223,58 +271,57 @@
|
|||||||
"daily-notes:打开/创建今天的日记": false,
|
"daily-notes:打开/创建今天的日记": false,
|
||||||
"canvas:新建白板": false,
|
"canvas:新建白板": false,
|
||||||
"bases:新建数据库": false,
|
"bases:新建数据库": false,
|
||||||
"obsidian-excalidraw-plugin:New drawing": false,
|
"templater-obsidian:Templater": true,
|
||||||
"templater-obsidian:Templater": false
|
"obsidian-excalidraw-plugin:新建绘图文件": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": "c3b31f156a70117f",
|
"active": "c8718c0c63702202",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
"000-inbox/2026-03-29_16-51-46.md",
|
"resource/ai/prompts/cosmic/Prompt 02 COSMIC 功能过程.md",
|
||||||
|
"work/移动杭研/开发记录/7.21.0/开发笔记 7.21.0.md",
|
||||||
|
"000-inbox/05月18日 154321 华为、中兴、自研解封禁联调.md",
|
||||||
|
"attachment/Pasted image 20260519174702.png",
|
||||||
|
"calendar/diary/2026-05-19.md",
|
||||||
|
"attachment/Pasted image 20260519170953.png",
|
||||||
|
"attachment/Pasted image 20260519170006.png",
|
||||||
|
"attachment/Pasted image 20260519163906.png",
|
||||||
|
"attachment/Pasted image 20260519163145.png",
|
||||||
|
"resource/ai/prompts/cosmic/Prompt 01 COSMIC 需求扩写.md",
|
||||||
|
"resource/ai/prompts/cosmic/Prompt 00 COSMIC v1.md",
|
||||||
|
"000-inbox/05月19日 154820.md",
|
||||||
|
"attachment/Pasted image 20260519140133.png",
|
||||||
|
"calendar/diary/2026-05-18.md",
|
||||||
|
"work/移动杭研/开发记录/7.20.0/开发笔记 7.20.0.md",
|
||||||
|
"personal/服务器-美国.md",
|
||||||
"personal/服务器-香港.md",
|
"personal/服务器-香港.md",
|
||||||
"000-inbox/2026-03-30_20-38-38.md",
|
"calendar/diary/2026-05-17.md",
|
||||||
|
"calendar/weeks/2026-W20.md",
|
||||||
|
"calendar/diary/2026-05-16.md",
|
||||||
|
"calendar/diary/2026-05-15.md",
|
||||||
|
"calendar/diary/2026-05-14.md",
|
||||||
|
"calendar/diary/2026-05-13.md",
|
||||||
|
"calendar/diary/2026-05-12.md",
|
||||||
|
"calendar/diary/2026-05-11.md",
|
||||||
|
"work/移动杭研/业务梳理/业务工单/试用业务-时长、流量到期.md",
|
||||||
|
"calendar/diary/2025年/2025-12-30.md",
|
||||||
"resource/系统/ubuntu.md",
|
"resource/系统/ubuntu.md",
|
||||||
"resource/ai/大模型安装笔记/关于模型思考问题.md",
|
"resource/ai/大模型安装笔记/001 大模型启动流程.md",
|
||||||
"000-inbox/n8n 安装.md",
|
"attachment/b0a6584f6636a36fa59bd0c5054c8c97.png",
|
||||||
"000-inbox/2026-03-29_16-55-23.md",
|
"resource/ai/Hermes 命令 cli.md",
|
||||||
"000-inbox/2026-03-29_22-08-03.md",
|
"resource/ai/Hermes.md",
|
||||||
"000-inbox/2026-03-29_16-52-52.md",
|
"attachment/Pasted image 20260513222338.png",
|
||||||
"attachment/Pasted image 20260329165253.png",
|
"attachment/7e1e741c766535189b32065c7a64eac1.png",
|
||||||
"000-inbox/2026-03-291.md",
|
"attachment/Pasted image 20260512224844.png",
|
||||||
"000-inbox/2026-03-291111111111111111111.md",
|
"work/移动杭研/开发记录/7.21.0",
|
||||||
"000-inbox/2026-03-2911.md",
|
"openpalm",
|
||||||
"000-inbox/202603292037501.md",
|
"resource/rust",
|
||||||
"attachment/templates/time.md",
|
"kids-coding",
|
||||||
"000-inbox/2026-03-29_19-37-09.md",
|
"resource/python",
|
||||||
"000-inbox/2026-03-29_17-01-36.md",
|
"work/移动杭研/问题处理/2026-04",
|
||||||
"attachment/Pasted image 20260329170137.png",
|
"work/移动杭研/开发记录/7.20.0",
|
||||||
"attachment/Pasted image 20260329165321.png",
|
"attachment/scripts/openTerminal.js",
|
||||||
"attachment/Pasted image 20260329165301.png",
|
"attachment/scripts",
|
||||||
"attachment/templates/日常记录-闪念笔记.md",
|
|
||||||
"resource/go/待总结/010 Go 语言 IO 流.md",
|
|
||||||
"attachment/images-paste/image-20230226203841579.png",
|
|
||||||
"attachment/templates/打开控制台.md",
|
|
||||||
"attachment/templates/移动杭研-开发笔记.md",
|
|
||||||
"attachment/templates/移动杭研-问题记录.md",
|
|
||||||
"calendar/diary/2026-03-29.md",
|
|
||||||
"attachment/templates/查找未引用图片.md",
|
|
||||||
"calendar/diary/2026-03-28.md",
|
|
||||||
"calendar/diary/2026-03-27.md",
|
|
||||||
"000-inbox/Untitled 2.md",
|
|
||||||
"attachment/Pasted image 20260329133947.png",
|
|
||||||
"attachment/jsscripts/openTerminal.js",
|
"attachment/jsscripts/openTerminal.js",
|
||||||
"attachment/jsscripts/新建文本文档.txt",
|
|
||||||
"attachment/jsscripts",
|
|
||||||
"attachment/images-paste/image-20260325102650978.png",
|
|
||||||
"attachment/images-paste/image-20260325224014579.png",
|
|
||||||
"attachment/images-paste/image-20260325224132102.png",
|
|
||||||
"attachment/images-paste/image-20260325224152205.png",
|
|
||||||
"resource/ai/大模型安装笔记",
|
|
||||||
"work/移动杭研/问题处理/2026-03",
|
|
||||||
"resource/ai/prompts/cosmic 业务版本",
|
|
||||||
"resource/ai/prompts/cosmic",
|
|
||||||
"resource/ai/prompts/临时",
|
|
||||||
"resource/工具/rime",
|
|
||||||
"work/移动杭研/开发记录/7.19.0",
|
|
||||||
"000-inbox/未命名.canvas"
|
"000-inbox/未命名.canvas"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
# 华为
|
||||||
|
|
||||||
|
```
|
||||||
|
http://test.okkc.top/heb.jpg
|
||||||
|
http://test.okkc.top/nmgdx.jpg
|
||||||
|
http://test.okkc.top/wkc.png
|
||||||
|
```
|
||||||
|
|
||||||
|
## 封禁
|
||||||
|
|
||||||
|
### 下发
|
||||||
|
|
||||||
|
```
|
||||||
|
2026-05-18 08:38:46 [e694222eb3c14d19] [e694222eb3c14d19] [] [ibs-portal] [http-nio-8080-exec-9] INFO com.cmcc.cdn.platform.selfservice.service.impl.URLBanLiftServiceImpl 104 urlBanOrLift - URL封禁/解封下发配管参数:{"cp_id":"83537947","operate":0,"task_id":"WG_84e454ab445df9ad78bdecf7a2c6c","urls":[{"areas":["ZJ"],"forbid_share_cache":false,"method":"exact","plain":[1],"url":"http://test.okkc.top/heb.jpg"}]}
|
||||||
|
2026-05-18 08:38:47 [e694222eb3c14d19] [e694222eb3c14d19] [] [ibs-portal] [http-nio-8080-exec-9] INFO com.cmcc.cdn.platform.selfservice.service.impl.URLBanLiftServiceImpl 106 urlBanOrLift - 向统一网管下发URL封禁/解禁返回参数e:{"error_code":0,"error_msg":"success"}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 回调
|
||||||
|
|
||||||
|
```
|
||||||
|
2026-05-19 08:38:29 [5af0086375c91839] [5af0086375c91839] [] [ibs-portal] [http-nio-8080-exec-3] INFO com.cmcc.cdn.platform.selfservice.controller.OmsApiDomainController 1466 urlBanLiftCallback - 统一网管URL封禁/解禁回调参数,urlBanLiftCallBackVO:{"tasks":[{"operate":0,"status":1,"task_id":"WG_84e454ab445df9ad78bdecf7a2c6c"}]}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 解禁
|
||||||
|
|
||||||
|
### 下发
|
||||||
|
|
||||||
|
```
|
||||||
|
2026-05-19 08:58:13 [40cc38f9c31c4b22] [40cc38f9c31c4b22] [] [ibs-portal] [http-nio-8080-exec-7] INFO com.cmcc.cdn.platform.selfservice.service.impl.URLBanLiftServiceImpl 104 urlBanOrLift - URL封禁/解封下发配管参数:{"cp_id":"83537947","operate":1,"task_id":"WG_af52d3c8f4890ae8c313c68b84d27","urls":[{"areas":["ZJ"],"forbid_share_cache":false,"method":"exact","plain":[1],"url":"http://test.okkc.top/heb.jpg"}]}
|
||||||
|
2026-05-19 08:58:13 [40cc38f9c31c4b22] [40cc38f9c31c4b22] [] [ibs-portal] [http-nio-8080-exec-7] INFO com.cmcc.cdn.platform.selfservice.service.impl.URLBanLiftServiceImpl 106 urlBanOrLift - 向统一网管下发URL封禁/解禁返回参数e:{"error_code":0,"error_msg":"success"}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 回调
|
||||||
|
|
||||||
|
```
|
||||||
|
2026-05-19 09:04:29 [5e61bcc746cd302d] [5e61bcc746cd302d] [] [ibs-portal] [http-nio-8080-exec-3] INFO com.cmcc.cdn.platform.selfservice.controller.OmsApiDomainController 1466 urlBanLiftCallback - 统一网管URL封禁/解禁回调参数,urlBanLiftCallBackVO:{"tasks":[{"operate":1,"status":1,"task_id":"WG_af52d3c8f4890ae8c313c68b84d27"}]}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 多 URL
|
||||||
|
|
||||||
|
### 下发
|
||||||
|
|
||||||
|
```
|
||||||
|
2026-05-19 09:09:36 [09b677d484384b4f] [09b677d484384b4f] [] [ibs-portal] [http-nio-8080-exec-8] INFO com.cmcc.cdn.platform.selfservice.service.impl.URLBanLiftServiceImpl 104 urlBanOrLift - URL封禁/解封下发配管参数:{"cp_id":"83537947","operate":0,"task_id":"WG_0a4e9ca06497b883ab2c1435851f0","urls":[{"areas":["ZJ"],"forbid_share_cache":false,"method":"exact","plain":[1],"url":"http://test.okkc.top/nmgdx.jpg"},{"areas":["ZJ"],"forbid_share_cache":false,"method":"exact","plain":[1],"url":"http://test.okkc.top/wkc.png"}]}
|
||||||
|
2026-05-19 09:09:36 [09b677d484384b4f] [09b677d484384b4f] [] [ibs-portal] [http-nio-8080-exec-8] INFO com.cmcc.cdn.platform.selfservice.service.impl.URLBanLiftServiceImpl 106 urlBanOrLift - 向统一网管下发URL封禁/解禁返回参数e:{"error_code":0,"error_msg":"success"}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### 回调
|
||||||
|
|
||||||
|
```
|
||||||
|
2026-05-19 09:14:29 [3df12b80589f53fa] [3df12b80589f53fa] [] [ibs-portal] [http-nio-8080-exec-2] INFO com.cmcc.cdn.platform.selfservice.service.impl.URLBanLiftServiceImpl 164 urlBanLiftUpdate - URL封禁/解封回调参数:param:{"tasks":[{"operate":0,"status":1,"task_id":"WG_0a4e9ca06497b883ab2c1435851f0"}]}
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
# 中兴
|
||||||
|
|
||||||
|
```
|
||||||
|
https://sms-drcn.hihonorcdn.com/sms/20260512_1778575271708/patch_20260512161.zip
|
||||||
|
https://push.hihonorcdn.com/103412129/95ec15bc36347c636815599f863438ac1.png
|
||||||
|
```
|
||||||
|
|
||||||
|
## 下发
|
||||||
|
|
||||||
|
```
|
||||||
|
2026-05-19 09:51:54 [37d64e05cd954f5e] [37d64e05cd954f5e] [] [ibs-portal] [http-nio-8080-exec-7] INFO com.cmcc.cdn.platform.selfservice.service.impl.URLBanLiftServiceImpl 104 urlBanOrLift - URL封禁/解封下发配管参数:{"cp_id":"83537947","operate":0,"task_id":"WG_20cb8e5274608a97651b261e07491","urls":[{"areas":["ZJ"],"forbid_share_cache":false,"method":"exact","plain":[2],"url":"https://sms-drcn.hihonorcdn.com/sms/20260512_1778575271708/patch_20260512161.zip"},{"areas":["ZJ"],"forbid_share_cache":false,"method":"exact","plain":[2],"url":"https://push.hihonorcdn.com/103412129/95ec15bc36347c636815599f863438ac1.png"}]}
|
||||||
|
2026-05-19 09:51:54 [37d64e05cd954f5e] [37d64e05cd954f5e] [] [ibs-portal] [http-nio-8080-exec-7] INFO com.cmcc.cdn.platform.selfservice.service.impl.URLBanLiftServiceImpl 106 urlBanOrLift - 向统一网管下发URL封禁/解禁返回参数e:{"error_code":0,"error_msg":"success"}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 回调
|
||||||
|
|
||||||
|
```
|
||||||
|
2026-05-19 09:52:29 [cb930538344a7daf] [cb930538344a7daf] [] [ibs-portal] [http-nio-8080-exec-9] INFO com.cmcc.cdn.platform.selfservice.controller.OmsApiDomainController 1466 urlBanLiftCallback - 统一网管URL封禁/解禁回调参数,urlBanLiftCallBackVO:{"tasks":[{"operate":0,"status":0,"task_id":"WG_20cb8e5274608a97651b261e07491"}]}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## 下发
|
||||||
|
|
||||||
|
```
|
||||||
|
2026-05-19 09:54:10 [6723e252542e4d27] [6723e252542e4d27] [] [ibs-portal] [http-nio-8080-exec-10] INFO com.cmcc.cdn.platform.selfservice.service.impl.URLBanLiftServiceImpl 104 urlBanOrLift - URL封禁/解封下发配管参数:{"cp_id":"83537947","operate":1,"task_id":"WG_364e5c36c43e9bd58c96151f66bbc","urls":[{"areas":["ZJ"],"forbid_share_cache":false,"method":"exact","plain":[2],"url":"https://sms-drcn.hihonorcdn.com/sms/20260512_1778575271708/patch_20260512161.zip"},{"areas":["ZJ"],"forbid_share_cache":false,"method":"exact","plain":[2],"url":"https://push.hihonorcdn.com/103412129/95ec15bc36347c636815599f863438ac1.png"}]}
|
||||||
|
2026-05-19 09:54:10 [6723e252542e4d27] [6723e252542e4d27] [] [ibs-portal] [http-nio-8080-exec-10] INFO com.cmcc.cdn.platform.selfservice.service.impl.URLBanLiftServiceImpl 106 urlBanOrLift - 向统一网管下发URL封禁/解禁返回参数e:{"error_code":0,"error_msg":"success"}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 回调
|
||||||
|
|
||||||
|
```
|
||||||
|
2026-05-19 09:54:29 [873eaa002f421e4b] [873eaa002f421e4b] [] [ibs-portal] [http-nio-8080-exec-2] INFO com.cmcc.cdn.platform.selfservice.controller.OmsApiDomainController 1466 urlBanLiftCallback - 统一网管URL封禁/解禁回调参数,urlBanLiftCallBackVO:{"tasks":[{"operate":1,"status":0,"task_id":"WG_364e5c36c43e9bd58c96151f66bbc"}]}
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
# 自研
|
||||||
|
|
||||||
|
```
|
||||||
|
http://yanlian.e.cdn.chinamobile.com/video.ts
|
||||||
|
http://yanlian.e.cdn.chinamobile.com/intro.html
|
||||||
|
http://yanlian.e.cdn.chinamobile.com/image.jpg
|
||||||
|
http://yanlian.e.cdn.chinamobile.com/index.html
|
||||||
|
```
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
我梳理了一下,这块是“URL 封禁/解封”能力,入口是 [ProhibitionController.java](D:/MyCode/Work/yd-hy/ibs-portal/cdn-web/src/main/java/com/cmcc/cdn/platform/selfservice/controller/ProhibitionController.java:217) 的 `POST /api/url/ban`,回调是 [OmsApiDomainController.java](D:/MyCode/Work/yd-hy/ibs-portal/cdn-web/src/main/java/com/cmcc/cdn/platform/selfservice/controller/OmsApiDomainController.java:1462) 的 `POST /action?commandType=banCallBack&version=1`。
|
||||||
|
|
||||||
|
**主流程**
|
||||||
|
|
||||||
|
`/api/url/ban` 根据两个配置开关分流:
|
||||||
|
|
||||||
|
`WG_TOTAL_SWITCH=true`,或当前企业在 `WG_ENTERPRISE_ID_SWITCH` 里时,走统一网管新链路:
|
||||||
|
|
||||||
|
1. 从请求头 `Tenant-Id` 查企业。
|
||||||
|
2. 把 `URLDenyAllowTaskVO.urls` 转成统一网管 `UrlBanLiftTaskVO.urls`。
|
||||||
|
3. 校验 URL、域名归属、操作类型、重复封禁等。
|
||||||
|
4. 生成 `WG_` 开头的 `taskId`。
|
||||||
|
5. 调统一网管/BPM:`bpmService.urlBanOrLiftOperate(…)`。
|
||||||
|
6. 下发成功后落库,返回 `taskId`。
|
||||||
|
|
||||||
|
不命中开关时,走旧链路:
|
||||||
|
|
||||||
|
1. 生成 `WS_` 开头的 `itemId`。
|
||||||
|
2. 校验 URL、域名归属、操作类型、重复封禁等。
|
||||||
|
3. 调旧配管/各平面下发。
|
||||||
|
4. 落库任务、URL 明细、配管记录、平面下发记录。
|
||||||
|
|
||||||
|
**统一网管新链路写入的表**
|
||||||
|
|
||||||
|
在 [URLBanLiftServiceImpl.java](D:/MyCode/Work/yd-hy/ibs-portal/cdn-service/src/main/java/com/cmcc/cdn/platform/selfservice/service/impl/URLBanLiftServiceImpl.java:76) 里,下发成功后写:
|
||||||
|
|
||||||
|
- `ban_lift_task`
|
||||||
|
对应实体 `NetworkURLBanLiftTask`。记录任务主表:`task_id`、`cp_id`、`operate`。
|
||||||
|
|
||||||
|
- `ban_lift_url`
|
||||||
|
对应实体 `NetworkBanLiftURL`。记录每个 URL:`url`、`task_id`、`areas`、`method`、`forbid_share_cache`、`operate`、`status`、`start_time`。初始 `status=11`,表示进行中。
|
||||||
|
|
||||||
|
- `ban_lift_task_url`
|
||||||
|
`ban_lift_task` 和 `ban_lift_url` 的关联表。
|
||||||
|
|
||||||
|
统一网管链路下发失败时,代码里没有保存这几张表,只返回失败。
|
||||||
|
|
||||||
|
**旧链路写入的表**
|
||||||
|
|
||||||
|
旧链路在 [ProhibitionServiceImpl.java](D:/MyCode/Work/yd-hy/ibs-portal/cdn-service/src/main/java/com/cmcc/cdn/platform/selfservice/service/impl/ProhibitionServiceImpl.java:253) 的 `pipeUrlDenyAllowed` 里写:
|
||||||
|
|
||||||
|
- `deny_allow_task`
|
||||||
|
任务主表,记录 `item_id`、`type`、`status`、`start_time`、`cp_id`、`task_state` 等。
|
||||||
|
|
||||||
|
- `deny_allow_url`
|
||||||
|
URL 明细表,记录 `url`、`domain`、`method`、`areas`。
|
||||||
|
|
||||||
|
- `deny_allow_task_url`
|
||||||
|
任务和 URL 的关联表。
|
||||||
|
|
||||||
|
- `pipe_config_entity`
|
||||||
|
配管消息记录,保存 `message_id`、`target_name=itemId`、`type=WANG_SU_DENY/WANG_SU_DENY_RESET` 等,用于后续配管回调匹配。
|
||||||
|
|
||||||
|
- `ban_or_filter_record`
|
||||||
|
平面下发记录,保存 `task_id`、`distribution_plane`、`success_plane`、`error_plane`、`reason`、`urls`、`type=ban/unban`。
|
||||||
|
|
||||||
|
另外,旧链路会更新 Redis 里的企业每日操作次数限制,不是数据库表。
|
||||||
|
|
||||||
|
**统一网管回调改哪些表**
|
||||||
|
|
||||||
|
你贴的 `banCallBack` 回调只处理统一网管新链路。逻辑在 [URLBanLiftServiceImpl.java](D:/MyCode/Work/yd-hy/ibs-portal/cdn-service/src/main/java/com/cmcc/cdn/platform/selfservice/service/impl/URLBanLiftServiceImpl.java:163):
|
||||||
|
|
||||||
|
1. 按回调里的 `taskId` 查 `ban_lift_task`。
|
||||||
|
2. 找到该任务下所有 `ban_lift_url`。
|
||||||
|
3. 更新每条 URL 的:
|
||||||
|
- `status`
|
||||||
|
- `operate`
|
||||||
|
- `start_time`
|
||||||
|
- `end_time`
|
||||||
|
4. 再通过 `urlBanLiftTaskDao.save(networkURLBanLiftTask)` 保存。
|
||||||
|
|
||||||
|
所以业务上主要修改的是:
|
||||||
|
|
||||||
|
- `ban_lift_url`
|
||||||
|
|
||||||
|
同时因为是通过父对象 `ban_lift_task` 保存,JPA 可能会触发 `ban_lift_task.updated_time` 更新;但任务主表没有业务字段被主动改,关联表 `ban_lift_task_url` 也不会变。
|
||||||
|
|
||||||
|
旧链路的回调不是这个接口,它会更新 `deny_allow_task` 的 `success_rate`、`end_time`、`status`、`task_state`;但你贴的 `banCallBack` 不会改 `deny_allow_task`。
|
||||||
@@ -1,9 +0,0 @@
|
|||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
```
|
|
||||||
MPLkv5dlbyKh_q0DdvH5ECxaUHVr5BVg0Ogf5AOH
|
|
||||||
```
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||

|
|
||||||
|
|
||||||
2026-01-13 21:46
|
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
MCP 协议的实现,可以有2种方式,
|
||||||
|
|
||||||
|
1. stdio,把 jar 提供出去,别人本地配置引入即可使用,但这样的方式不太适合做统一网关服务。
|
||||||
|
2. sse
|
||||||
|
|
||||||
|
项目采用 [DDD](DDD.md) 架构,首先聚焦 domain 层。
|
||||||
|
|
||||||
|
### 会话管理服务
|
||||||
|
|
||||||
|
```java
|
||||||
|
private final ScheduledExecutorService cleanupScheduler = Executors.newSingleThreadScheduledExecutor();
|
||||||
|
```
|
||||||
|
|
||||||
|
其中 private 说明这个变量这能在类内部访问,声明为 final 则此变量只能赋值一次。`newSingleThreadScheduledExecutor` 代表只有一个工作线程。
|
||||||
|
|
||||||
|
> 一个带有定时功能的单线程定时队列。
|
||||||
|
|
||||||
|
```java
|
||||||
|
private final Map<String, SessionConfigVO> activeSessions = new ConcurrentHashMap<>();
|
||||||
|
```
|
||||||
|
|
||||||
|
考虑点在于这个会话是否会被多个线程操作处理。
|
||||||
|
|
||||||
|
```java
|
||||||
|
public SessionManagementService() {
|
||||||
|
cleanupScheduler.scheduleAtFixedRate(this::cleanupExpiredSessions, 5, 5, TimeUnit.MINUTES);
|
||||||
|
log.info("会话管理服务已启动,会话超时时间: {} 分钟", SESSION_TIMEOUT_MINUTES);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
可以在构造中执行一些方法。
|
||||||
|
|
||||||
|
### 实时通讯
|
||||||
|
|
||||||
|
> 对立面轮训
|
||||||
|
|
||||||
|
SSE(Server sent Events)
|
||||||
|
|
||||||
|
基于普通的 HTTP 长连接,Content-type: text/event-stream
|
||||||
|
|
||||||
|
消息格式,每条消息以 \n\n 结尾,
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
```
|
||||||
|
SSE(协议)
|
||||||
|
↑
|
||||||
|
需要一个好的服务器框架来实现它
|
||||||
|
↓
|
||||||
|
Spring WebFlux(响应式 Web 框架) ← 最适合实现 SSE 的框架
|
||||||
|
↑
|
||||||
|
因为它是响应式(非阻塞),非常适合长连接
|
||||||
|
↓
|
||||||
|
在 WebFlux 里,用 Sinks + Flux<ServerSentEvent> 来产生和推送 SSE 事件
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
客户端发起 SSE 请求
|
||||||
|
↓
|
||||||
|
Netty EventLoop 接收请求(线程A)
|
||||||
|
↓
|
||||||
|
Controller 返回 sink.asFlux() → 注册“有新事件时推送”的回调
|
||||||
|
↓
|
||||||
|
线程A 立刻释放,去处理其他请求
|
||||||
|
↓
|
||||||
|
...(连接保持打开,线程A 忙别的)
|
||||||
|
|
||||||
|
你的服务层调用 sink.tryEmitNext(新消息)
|
||||||
|
↓
|
||||||
|
Reactor 通知 Netty:“这个连接有数据要写”
|
||||||
|
↓
|
||||||
|
EventLoop 线程(可能是线程B)被唤醒
|
||||||
|
↓
|
||||||
|
执行回调:把消息转成 "data: xxx\n\n" 格式 → 写入 Socket
|
||||||
|
↓
|
||||||
|
写完后,线程B 立刻释放,继续干别的
|
||||||
|
```
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
| 方法 | 接口名称 | 入参描述 | 一句话作用 |
|
||||||
|
| ------ | ----------------------------------------------- | ------------------------------------------------ | ---------------------- |
|
||||||
|
| GET | `/api/mcp-tools` | `toolGroupId`、`displayName`、`pageNum`、`pageSize` | 分页查询动态工具列表 |
|
||||||
|
| GET | `/api/mcp-tools/{id}` | 工具 ID | 查询动态工具详情 |
|
||||||
|
| POST | `/api/mcp-tools` | `McpToolRequest` | 创建动态工具并注册到 MCP Server |
|
||||||
|
| PUT | `/api/mcp-tools/{id}` | 工具 ID、`McpToolRequest` | 更新动态工具并重新注册 |
|
||||||
|
| DELETE | `/api/mcp-tools/{id}` | 工具 ID | 删除动态工具并从 MCP Server 移除 |
|
||||||
|
| POST | `/api/mcp-tools/{id}/toggle` | 工具 ID | 启用或禁用动态工具 |
|
||||||
|
| POST | `/api/mcp-tools/{id}/tool-groups/{groupId}` | 工具 ID、工具组 ID | 将工具绑定到工具组 |
|
||||||
|
| DELETE | `/api/mcp-tools/{id}/tool-groups/{groupId}` | 工具 ID、工具组 ID | 解除工具与工具组绑定 |
|
||||||
|
| | | | |
|
||||||
|
| GET | `/api/tool-groups` | `pageNum`、`pageSize` | 分页查询工具组列表 |
|
||||||
|
| GET | `/api/tool-groups/{id}` | 工具组 ID | 查询工具组详情 |
|
||||||
|
| GET | `/api/tool-groups/{id}/tools` | 工具组 ID、`displayName` | 查询工具组关联的全部工具 |
|
||||||
|
| POST | `/api/tool-groups` | `McpToolGroupRequest` | 创建工具组并生成 API Key |
|
||||||
|
| PUT | `/api/tool-groups/{id}` | 工具组 ID、`McpToolGroupRequest` | 更新工具组名称或描述 |
|
||||||
|
| DELETE | `/api/tool-groups/{id}` | 工具组 ID | 删除工具组并解除相关关联 |
|
||||||
|
| POST | `/api/tool-groups/{id}/toggle` | 工具组 ID | 启用或禁用工具组 |
|
||||||
|
| POST | `/api/tool-groups/{id}/reset-api-key` | 工具组 ID | 重置工具组 API Key |
|
||||||
|
| | | | |
|
||||||
|
| GET | `/api/roles` | `pageNum`、`pageSize` | 分页查询角色列表 |
|
||||||
|
| GET | `/api/roles/{id}` | 角色 ID | 查询角色详情 |
|
||||||
|
| POST | `/api/roles` | `RoleRequest` | 创建角色并生成角色 Key |
|
||||||
|
| PUT | `/api/roles/{id}` | 角色 ID、`RoleRequest` | 更新角色名称或描述 |
|
||||||
|
| DELETE | `/api/roles/{id}` | 角色 ID | 删除角色并解除工具组关联 |
|
||||||
|
| POST | `/api/roles/{id}/toggle` | 角色 ID | 启用或禁用角色 |
|
||||||
|
| POST | `/api/roles/{id}/reset-key` | 角色 ID | 重置角色 Key |
|
||||||
|
| GET | `/api/roles/{id}/tool-groups` | 角色 ID | 查询角色可用工具组 |
|
||||||
|
| POST | `/api/roles/tool-groups` | `roleId`、`toolGroupId` | 给角色关联工具组 |
|
||||||
|
| DELETE | `/api/roles/{roleId}/tool-groups/{toolGroupId}` | 角色 ID、工具组 ID | 移除角色的工具组关联 |
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
```
|
|
||||||
{% if not add_generation_prompt is defined %}{% set add_generation_prompt = false %}{% endif %}{% set ns = namespace(is_first=false, is_tool=false, is_output_first=true, system_prompt='') %}{%- for message in messages %}{%- if message['role'] == 'system' %}{% set ns.system_prompt = message['content'] %}{%- endif %}{%- endfor %}{{bos_token}}{{ns.system_prompt}}{%- for message in messages %}{%- if message['role'] == 'user' %}{%- set ns.is_tool = false -%}{{'<|User|>' + message['content']}}{%- endif %}{%- if message['role'] == 'assistant' and message['content'] is none %}{%- set ns.is_tool = false -%}{%- for tool in message['tool_calls']%}{%- if not ns.is_first %}{{'<|Assistant|><|tool▁calls▁begin|><|tool▁call▁begin|>' + tool['type'] + '<|tool▁sep|>' + tool['function']['name'] + '\\n' + '```json' + '\\n' + tool['function']['arguments'] + '\\n' + '```' + '<|tool▁call▁end|>'}}{%- set ns.is_first = true -%}{%- else %}{{'\\n' + '<|tool▁call▁begin|>' + tool['type'] + '<|tool▁sep|>' + tool['function']['name'] + '\\n' + '```json' + '\\n' + tool['function']['arguments'] + '\\n' + '```' + '<|tool▁call▁end|>'}}{{'<|tool▁calls▁end|><|end▁of▁sentence|>'}}{%- endif %}{%- endfor %}{%- endif %}{%- if message['role'] == 'assistant' and message['content'] is not none %}{%- if ns.is_tool %}{{'<|tool▁outputs▁end|>' + message['content'] + '<|end▁of▁sentence|>'}}{%- set ns.is_tool = false -%}{%- else %}{% set content = message['content'] %}{% if '</think>' in content %}{% set content = message['content'].replace('</think>', '').split('<think>')[-1] %}{% endif %}{{'<|Assistant|>' + content + '<|end▁of▁sentence|>'}}{%- endif %}{%- endif %}{%- if message['role'] == 'tool' %}{%- set ns.is_tool = true -%}{%- if ns.is_output_first %}{{'<|tool▁outputs▁begin|><|tool▁output▁begin|>' + message['content'] + '<|tool▁output▁end|>'}}{%- set ns.is_output_first = false %}{%- else %}{{'\\n<|tool▁output▁begin|>' + message['content'] + '<|tool▁output▁end|>'}}{%- endif %}{%- endif %}{%- endfor -%}{% if ns.is_tool %}{{'<|tool▁outputs▁end|>'}}{% endif %}{% if add_generation_prompt and not ns.is_tool %}{{'<|Assistant|>'}}{% endif %}
|
|
||||||
```
|
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
```java
|
||||||
|
package cn.bugstack.ai.infrastructure.gateway;
|
||||||
|
|
||||||
|
import okhttp3.RequestBody;
|
||||||
|
import okhttp3.ResponseBody;
|
||||||
|
import retrofit2.Call;
|
||||||
|
import retrofit2.http.Body;
|
||||||
|
import retrofit2.http.GET;
|
||||||
|
import retrofit2.http.HeaderMap;
|
||||||
|
import retrofit2.http.POST;
|
||||||
|
import retrofit2.http.QueryMap;
|
||||||
|
import retrofit2.http.Url;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 资料:<a href="https://bugstack.cn/md/road-map/http.html">HTTP 框架案例</a>
|
||||||
|
*/
|
||||||
|
public interface GenericHttpGateway {
|
||||||
|
|
||||||
|
@POST
|
||||||
|
Call<ResponseBody> post(
|
||||||
|
@Url String url,
|
||||||
|
@HeaderMap Map<String, Object> headers,
|
||||||
|
@Body RequestBody body
|
||||||
|
);
|
||||||
|
|
||||||
|
@GET
|
||||||
|
Call<ResponseBody> get(
|
||||||
|
@Url String url,
|
||||||
|
@HeaderMap Map<String, Object> headers,
|
||||||
|
@QueryMap Map<String, Object> queryParams
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
```
|
|
||||||
telegrambots 相关源码路径:D:\MyCode\Study\TelegramBots
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.telegram</groupId>
|
|
||||||
<artifactId>telegrambots-longpolling</artifactId>
|
|
||||||
<version>${telegrambots.version}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
因为我是 Spring Boot 项目,那这里是不是用官方推荐的 telegrambots-springboot-longpolling-starter 更方便呢?
|
|
||||||
|
|
||||||
现在请帮我实现一个最基础的机器人的功能:
|
|
||||||
|
|
||||||
1. 双向机器人的功能,当有人给这个机器人发消息的时候,可以通知到我。可以参考下比较成熟的双项机器人实现的手段。
|
|
||||||
2. 给我提供一个前台页面,让我可以在上面发布通知,使得所有使用我这个机器人的用户都能收到消息
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
7786028912:AAGxQ1jmD4a7j6k-KGsSainVpsFGplSXp-0
|
|
||||||
```
|
|
||||||
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 192 KiB |
|
Before Width: | Height: | Size: 181 KiB |
|
Before Width: | Height: | Size: 157 KiB |
|
After Width: | Height: | Size: 214 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 150 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 180 KiB |
|
Before Width: | Height: | Size: 637 KiB |
|
Before Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 962 KiB |
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 683 KiB |
|
Before Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 309 KiB |
|
Before Width: | Height: | Size: 343 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 118 KiB |
|
Before Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 173 KiB |
|
Before Width: | Height: | Size: 637 KiB |
|
Before Width: | Height: | Size: 588 KiB |
|
Before Width: | Height: | Size: 7.3 MiB |
|
Before Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 285 KiB |
|
Before Width: | Height: | Size: 512 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 704 KiB |
|
Before Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 216 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 368 KiB |
|
Before Width: | Height: | Size: 75 KiB |
|
Before Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 625 KiB |
|
Before Width: | Height: | Size: 909 KiB |
|
Before Width: | Height: | Size: 520 KiB |
|
Before Width: | Height: | Size: 499 KiB |
|
Before Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 110 KiB |
|
Before Width: | Height: | Size: 643 KiB |
|
Before Width: | Height: | Size: 679 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 348 KiB |
|
Before Width: | Height: | Size: 46 KiB |