QuickAdd 插件实现 ObsidianAI 工作流助手

如果你能利用 Obsidian 中现有的所有工作流程,通过几个简单步骤就添加人工智能的功能,那会是什么样的体验?

想象一下:

  • 创建一个新笔记,人工智能会根据你已经建立的链接推荐写作提建议,这样你就不会再面临空白页面。
  • 在写笔记时,人工智能可以作为知识搏斗的伙伴。
  • 通过简单的英语指示轻松改变你写作的结构。

以上这些,以及更多功能,现在都可以在 Obsidian 中实现。

org-roam新手入门

The Org-roam Node

在使用手册时,我们首先介绍一些术语。我们将 Org-roam 中的基本单位称为节点。我们将节点定义如下:

一个节点是任何具有ID的标题或顶级文件。

例如,使用此示例文件内容:

org-roam文档翻译

Org-roam 是一个用于联想思维的工具。它在Org mode中模拟Roam Research 的一些关键功能。

Org-roam 允许轻松地进行非层次化的记笔记:使用 Org-roam,笔记会自然流畅地记录,这使得记笔记变得有趣和容易。Org-roam 增强了 Org mode 语法,任何已经使用 Org mode 进行个人知识库的人都可以使用它。

在 osx 终端如何移动大文件?

在 osx 终端如何使用 mv 命令移动大文件,遇到的问题:mv: fastcopy: write() failed: /Volumes/AIGO/file File too large

当在Mac OSX终端使用mv命令移动大文件时,你可能会遇到"mv: fastcopy: write() failed: /Volumes/AIGO/file File too large"这样的错误。这是因为mv命令在后台使用fastcopy工具来高效移动文件,但fastcopy无法移动超过4GB的文件。

动态生成 README.md 四象限数据: org-ql 查询语法和分组规则

制定要显示的是个区域的 org-ql 查询条件,和 org-supper-agenda 分组规则

在使用 org-ql 导出数据之前,先确定四象限中,需要什么数据,例如,今日要务,一周安排等。再根据 org-ql 语法查询 org 文件中的日程安排,然后,使用 org-supper-agenda 分组的规则,导出自定义视图格式的任务清单,再将组的内容,更新替换到 README.md 文件中,最终达到同步的效果。

借助 org-ql 工具自动导出 agenda 待办任务

需求:在 github 的 README 中显示日常项目状态,显示本周主要的任务,列出项目清单和任务安排。设计:使用 org-ql 查询任务状态,列出项目和代办实现,导出 json 格式。

基于 org-ql-search 实现获取查询,使用 org-ql-view 模板格式化结果数据

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
(defun build-readme-view (name)
  "Choose and display the `org-ql-views' view NAME.
Interactively, prompt for NAME."
  (let* ((result)
         (view (alist-get name org-ql-views nil nil #'string=))
         )
    (-let* (((&plist :buffers-files :query :sort :narrow :super-groups :title) view)
            (super-groups (cl-typecase super-groups
                            (symbol (symbol-value super-groups))
                            (list super-groups))))
      (message "step 1:+++++++ %s" query)
      (build-readme-search buffers-files query
        :super-groups super-groups :narrow narrow :sort sort :title title
        :buffer org-ql-view-buffer)
      ))
  )

(cl-defun build-readme-search (buffers-files query &key narrow super-groups sort title
                                             (buffer org-ql-view-buffer))
  (declare (indent defun))
  (interactive (list (org-ql-view--complete-buffers-files)
                     (read-string "Query: " (when org-ql-view-query
                                              (format "%S" org-ql-view-query)))
                     :narrow (or org-ql-view-narrow (eq current-prefix-arg '(4)))
                     :super-groups (org-ql-view--complete-super-groups)
                     :sort (org-ql-view--complete-sort)))
  ;; NOTE: Using `with-temp-buffer' is a hack to work around the fact that `make-local-variable'
  ;; does not work reliably from inside a `let' form when the target buffer is current on entry
  ;; to or exit from the `let', even though `make-local-variable' is actually done in
  ;; `org-ql-view--display'.  So we do all this within a temp buffer, which works around it.
  (with-temp-buffer
    (let* ((query (cl-etypecase query
                    (string (if (or (string-prefix-p "(" query)
                                    (string-prefix-p "\"" query))
                                ;; Read sexp query.
                                (read query)
                              ;; Parse non-sexp query into sexp query.
                              (org-ql--query-string-to-sexp query)))
                    (list query)))
           (results (org-ql-select buffers-files query
                      :action 'element-with-markers
                      :narrow narrow
                      :sort sort))
           (strings (-map #'org-ql-view--format-element results))
           (buffer (or buffer (format "%s %s*" org-ql-view-buffer-name-prefix (or title query))))
           (header (org-ql-view--header-line-format
                    :buffers-files buffers-files :query query :title title))
           ;; Bind variables for `org-ql-view--display' to set.
           (org-ql-view-buffers-files buffers-files)
           (org-ql-view-query query)
           (org-ql-view-sort sort)
           (org-ql-view-narrow narrow)
           (org-ql-view-super-groups super-groups)
           (org-ql-view-title title))
      (when super-groups
        (let ((org-super-agenda-groups (cl-etypecase super-groups
                                         (symbol (symbol-value super-groups))
                                         (list super-groups))))
          (setf strings (org-super-agenda--group-items strings))))
      ;;TODO no show view
      ;; insert buffer to coverto build readme
      (message "build readme file:\n %s " (s-join "\n" strings))
      ;; (org-ql-view--display :buffer buffer :header header :string (s-join "\n" strings))
                )))

(build-readme-view "readme")
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
build readme file:

  原则
  TODO 诚信原则
  TODO 成长原则
  TODO 自我管理原则

 基于 org-super-agenda 定义 agenda 模板
  TODO 快速导出 agenda 清单模板  9d ago  :@学习笔记:
  TODO 每日安排  :@学习笔记:
  TODO 每周安排  :@学习笔记:

基于 org-ql-select 获取查询结果,自定义 list-to-org 格式化结果内容

借助 org-ql-search 和 org-ql-view 能够实现

制作 Text Generator Plugin 的模板

使用 create Template 命令创建模板

使用此命令,您可以从活动文档创建模板。 默认热键Alt + C

  • 默认情况下,模板将在 local 文件夹中创建 Templates Folder (模板)(您可以随时更改路径)。
  • 模板必须在 Templates Folder 中。

从零开始创建模板

模板元数据

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
---
PromptInfo:
 promptId: getParagraph
 name: ✍️ Write paragraphs
 description: select a content contiens items, a paragraph for each item will be generated.
 required_values: title, outline
 author: Noureddine
 tags: writing
 version: 0.0.1
 commands:
 - generate
---

PromptInfo 包含有关提示的信息,必须在每个模板的头部。它包含以下字段:

org-ql 查询语句如何解析变量值

再使用 org-ql select 查询语句时,经常遇到通过变量来确定查询条件的情况,当直接将使用 format 等方法,将变量格式化为语句时,真正的查询条件并不执行, org-ql 会先通过 org-ql--normalize-query 方法处理:

介绍 org-ql Queries 语法

org-ql 查询是一个 lisp 表达式,它可以包含任意表达式,也可以调用某些内置谓词 predicates 。 org-ql 被编译成一个谓词函数,该函数在 org 缓冲区中的每个标题上进行点测试;当 non-nil 时,返回匹配到的标题。在可能的情况下,某些内置谓词被优化为全缓冲区正则表达式搜索,这比在每个标题上测试谓词要快得多。

定制 org-super-agenda 视图作为任务调度台

借助 org-super-agenda 加深理解 org-agenda 的功能和用法,通过分组模板养成 review 任务习惯,激发执行力!

  • 学习 org-super-agenda 加强管理,修炼二项限时间管理的工具

    可以结合 org-ql 增强语法的可读性,结合 org-super-agenda 增加定义选择器的效果.