Lazy loaded image
obsidian插件:yuhanbo-auto2.0,插入、替换、定时等AI内容生成
00 分钟
2025-6-16
2025-6-16
type
status
date
slug
summary
tags
category
icon
password
auto1.0 之前名称为 yuhanbo-ai ,文章视频请前往:OB插件yuhanbo-ai:快速生成、插入或替换内容 | 余汉波 文档
auto1.0 在 github 开源:yuhanbo758/obsidian-yuhanbo-ai

概述

本文档旨在为技术背景的读者提供关于 Obsidian AI 自动插件(版本 2.0.0)的详细解释。该插件由余汉波开发,旨在通过调用 OpenRouter、Deepseek 和 Gemini API 自动生成和替换 Obsidian 文档中的内容。我们将深入探讨插件的功能、结构、算法和潜在改进,并概述其所使用的编程语言和库。

插件功能

该插件主要提供以下几个核心功能:
  1. 内容生成和替换:允许用户选中一段文本,然后通过 AI 生成的内容替换选中的文本。
  1. 内容生成和插入:允许用户选中一段文本,然后将 AI 生成的内容插入到选中文本的后面。
  1. 直接生成内容:允许用户直接通过 AI 生成内容,并将内容插入到光标所在位置。
  1. 定时任务:允许用户设置定时任务,自动从指定文件读取内容,通过 AI 处理后,保存到指定文件。
  1. 快速生成:允许用户设置快捷键,快速通过 AI 生成内容,并将内容插入到光标所在位置。

插件结构

该插件主要包含以下几个文件:
  • manifest.json:插件的清单文件,包含插件的 ID、名称、版本、描述、作者和是否为桌面应用等信息。
  • package.json:Node.js 的包管理文件,包含插件的名称、版本、描述、入口文件、脚本、关键词、作者、许可证、开发依赖和依赖等信息。
  • styles.css:插件的样式文件,包含插件的样式定义,用于美化插件的界面。
  • main.js:插件的主文件,包含插件的核心逻辑。

manifest.json

该文件定义了插件的基本信息,包括插件的 ID(obsidian-ai-auto)、名称(yuhanbo-ai-auto)、版本(2.0.0)、最低 Obsidian 版本(0.15.0)、描述(选中内容,定时自动生成内容,调用OpenRouter、Deepseek和Gemini生成内容)、作者(余汉波)和是否为桌面应用(false)。

package.json

该文件定义了插件的依赖和脚本。其中,main 字段指定插件的入口文件为 main.jsscripts 字段定义了开发和构建插件的脚本。devDependencies 字段定义了开发依赖,包括 @types/nodeobsidianesbuilddependencies 字段定义了插件的依赖,包括 moment

styles.css

该文件包含了插件的样式定义,用于美化插件的界面。其中定义了 prompt modal,template list,scheduled task 等组件的样式。

main.js

main.js 是插件的核心文件,包含了插件的主要逻辑。下面我们将详细分析 main.js 中的代码。

默认设置

DEFAULT_SETTINGS 定义了插件的默认设置,包括 OpenRouter API Key、Gemini API Key、Deepseek API Key、默认模型、模板路径、自定义模型、定时任务和快速生成设置。

内置模型列表

BUILT_IN_MODELS 定义了插件的内置模型列表,包括 Deepseek、Gemini 和 OpenRouter 提供的模型。每个模型包含 valuelabelprovider 字段。

OpenRouterPlugin 类

OpenRouterPlugin 类是插件的主类,继承自 obsidian.Plugin。该类包含了插件的核心逻辑。

onload 方法

onload 方法是插件加载时执行的方法。该方法主要完成以下几个任务:
  1. 加载插件设置。
  1. 添加三个命令,分别用于调用 AI 生成并替换内容、调用 AI 生成并插入内容和直接调用 AI 生成内容。
  1. 添加设置 Tab,用于设置插件的参数。
  1. 启动所有定时任务。
  1. 注册快速生成命令。
  1. 启动本地服务器,用于处理来自其他应用的请求。

onunload 方法

onunload 方法是插件卸载时执行的方法。该方法主要完成以下几个任务:
  1. 关闭服务器。
  1. 停止所有定时任务。

startAllScheduledTasks 方法

startAllScheduledTasks 方法用于启动所有定时任务。该方法会遍历 this.settings.scheduledTasks 数组,然后调用 this.startScheduledTask 方法启动每个定时任务。

stopAllScheduledTasks 方法

stopAllScheduledTasks 方法用于停止所有定时任务。该方法会遍历 this.tasks Map,然后调用 clearInterval 方法停止每个定时任务。

startScheduledTask 方法

startScheduledTask 方法用于启动单个定时任务。该方法主要完成以下几个任务:
  1. 检查是否已经存在该任务,如果存在,则先停止该任务。
  1. 计算下次运行时间。
  1. 设置定时器,到下次运行时间时,执行以下操作:
      • 读取源文件内容。
      • 处理内容(与选中发送保持一致的逻辑)。
      • 生成文件名。
      • 保存生成的内容。
      • 根据任务类型决定是否安排下一次执行。

generateAIContent 方法

generateAIContent 方法用于调用 AI 生成内容。该方法主要完成以下几个任务:
  1. 根据模型名称,找到选择的模型信息。
  1. 根据不同的提供商,调用相应的 API。
  1. 返回 AI 生成的内容。

generateWithGemini 方法

generateWithGemini 方法用于调用 Gemini API 生成内容。

generateWithDeepseek 方法

generateWithDeepseek 方法用于调用 Deepseek API 生成内容。

searchFilePaths 方法

searchFilePaths 方法用于搜索文件路径。

handleQuickGenerate 方法

handleQuickGenerate 方法用于处理快速生成内容。

getTemplates 方法

getTemplates 方法用于获取模板列表。

getTemplateContent 方法

getTemplateContent 方法用于获取模板内容。

saveGeneratedContent 方法

saveGeneratedContent 方法用于保存生成的内容。

PromptModal 类

PromptModal 类是插件的提示框类,继承自 obsidian.Modal。该类用于显示提示框,让用户输入提示词。

OpenRouterSettingTab 类

OpenRouterSettingTab 类是插件的设置 Tab 类,继承自 obsidian.PluginSettingTab。该类用于显示设置 Tab,让用户设置插件的参数。

CustomModelModal 类

CustomModelModal 类是插件的自定义模型模态框类,继承自 obsidian.Modal。该类用于显示自定义模型模态框,让用户添加自定义模型。

ScheduledTaskModal 类

ScheduledTaskModal 类是插件的定时任务模态框类,继承自 obsidian.Modal。该类用于显示定时任务模态框,让用户添加定时任务。

QuickGenerateSettingModal 类

QuickGenerateSettingModal 类是插件的快速生成设置模态框类,继承自 obsidian.Modal。该类用于显示快速生成设置模态框,让用户添加快速生成设置。
[[OB插件yuhanbo-ai:快速生成、插入或替换内容]]
上一篇
东财股票自动化交易下载
下一篇
指数评估:A股市场估值、涨跌幅与投资策略

评论
Loading...