使用 ChatGPT 分析优化 agenda 日程安排

借助 AI 帮助分析日程安排的也将是非常有力的工具。

  1. 如何获取 agenda 的内容,直接返回构建的视图内容字符串,而不跳转到 agenda 缓冲区
    • 通过 org-agenda 内置命令导出文本格式使用自带命令,会跳转到 org-agenda-view 中无法在 elisp 中拿到列表数据
    • 通过 org-ql 查询命令获取 agenda 列表
  2. 将内容投喂给 gptel 获取分析报告和建议借助 org-roam-capture 通过 tag 设定 prompt 角色,在完成 capture 时,自动对话AI。
  3. 优化 prompt 对话模板:
    1. 基于 capture 模板: 内容总结写作助理
    2. 基于 snippet 模板: agd 调用自定义方法,实现查询 org 内容,插入到当前 buffer

使用 org-ql 获取TODO数据实现 AI 对话

获取 org-agenda 的清单数据。在获取到数据之后,就可以为其他自定义方法提供数据支持。

org-super-agenda 语法说明

每个组选择器在 agenda 中创建一个包含它匹配的项的组,并使用这些项;任何与它不匹配的项都被传递给下一个组选择器。选择器 :discard 是一个例外:它在不创建 agenda 组的情况下持有它匹配的所有项,并将其余项传递给下一个选择器。

gptel 的 api 是如何插入到当前 buffer

模拟curl 方式请求slack Api,需要参考的逻辑有

  1. 先定位入口,跟踪代码
  2. 定位到 gptel-curl 实现类主要功能都在这里,需要在这里找到解决方案先分析该类的主要功能
    1. 参数内容的收集 gptel-curl--get-args
    2. 以进程的方式开始 curl 请求数据开启进程 gptel-curl-get-response
    3. 处理数据:以流的方式插入到当前 buffer
  3. 需要流式响应功能支持,socket模式 Socket Mode implementation | Slack

gptel 入口 gptel-request 方法介绍

理解源码,分析入口参数和环境变量初始状态,以及后续功能方法的处理逻辑

扩展 go-translate 渲染器支持 Claude Typing 输入状态

AI需求

描述需求,投喂给 AI 给出建议,获取灵感,例如:

1
2
3
4
5
你是精通elisp语法,了解emacs的常规用法和习惯,请帮我实现下面的功能:

这是数组A:(list "你好,Typing" "你好,世界!Typing" "你好,世界!生活很美好,Typing" "你好,世界!生活很美好,要面对现实Typing")
写一个elisp函数:在当前buffer的光标位置,依次将数组A中的内容全部插入到光标的位置,要求每次插入的内容不能和已插入个的内容内容重复,次序要保持连贯。
插入的预期效果:"你好,世界!世界!生活很美好,要面对现实"。

Claude 灵感

这个函数会在当前光标的位置插入所有内容,不会出现重复。同时,如果已经插入了部分内容,新的内容会接在已有内容的后面。这里是实现该功能的Emacs Lisp代码:

基于 helm-org-ql 自定义 helm 检索 prompt.org 库

helm 功能

Helm是一个Emacs的框架,用于创建符合人体工程学的交互式工具。它有以下主要优点:

  1. 简单且一致的交互方式

    使用相同的界面和按键绑定为许多功能提供接口,这样用户只需要学习一次就可以应用到所有 Helm 工具上。这大大降低了学习成本,让 Emacs 的各种功能更易于掌握。

翻译 org-clock-budget 时间管理插件的用法

Budget your time with org-mode!

Usage

Adding budgets

您可以通过自定义 org-clock-budget-intervals 来指定要使用的间隔。

目前四个间隔是内置的,week,month,季度(3个月从1月1日开始的时间段)和年份。要在任务上添加预算,请添加一个属性( C-c C-x p ): BUDGET_WEEK, BUDGET_MONTHBUDGET_QUARTER, BUDGET_YEAR

介绍org-ql函数和宏的用法

Agenda-like views

Function: org-ql-block

要用作自定义 agenda 议程块,请键入 org-agenda-custom-commands 。例如,您可以像这样定义一个自定义系列命令,它将在单个缓冲区中列出 Tag 为 emacs ,所有优先级 A 项,其中 todo 状态为 SOMEDAY ,后面跟着标准 agenda 议程视图:

介绍 org-ql 常用命令

org-ql-find

使用 emacs 的内置补全工具和一个 org-ql 查询选择的标题实现跳转:

  • org-ql-find 在当前缓冲区中搜索。
  • org-ql-find-in-agenda searches in (org-agenda-files).
  • org-ql-find-in-org-directory searches in org-directory.
Org mode logo

org-ql-refile

此命令将当前的 org 条目重新归档到通过使用 org-ql 补全进行搜索所选择的条目中。它搜索 org-refile-targets 中列出的文件以及当前缓冲区。

扩展 org-capture 基于 TAGS 功能动态设置 prompt

在 capture 中支持 tag 的选择,tag 可以分类,扩展AI分类,以 prompt 的 title 作为 tag 值。在调用 gpt 之前,只需要设定 tag 就行了。

例如:想使用 写作助理的角色,完成一下操作

  1. 现在 tag 分组中添加角色名称
  2. 再添加 tag 到 headline 上
  3. 在请求之前,使用 tag 值匹配 prompt 模块的名称,然后就可以为 gptel 设置 system 了。

难点: 如何通过 tag 获取 prompt,有几种方案