卓帅
# 基于小龙猫 + Vikunja + GTD 的个人任务管理助理  这篇教程把懒猫微服中的“小龙猫”连接到 Vikunja,并用简化版 GTD 管理个人任务。 分工如下: - Vikunja:保存和展示任务。 - 小龙猫:理解你的指令。 - GTD:提供任务整理规则。 - 小龙猫技能:调用 Vikunja API,把任务写入系统。 开始前,先在懒猫微服中安装并打开小龙猫和 Vikunja。 接下来完成 5 件事: - 配置 Vikunja 端口转发 - 获取 Vikunja API Token - 获取 Vikunja 的 OpenAPI JSON 文件 - 让小龙猫生成 Vikunja 技能 - 让小龙猫自动初始化 GTD 项目,并按 GTD 管理任务 ## 0. 准备条件 确认下面内容已准备好。 1. 小龙猫 https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.totoro 2. Vikunja https://appstore.lazycat.cloud/#/shop/detail/dev.beiyu.vikunja 3. 局域网端口转发应用 https://appstore.lazycat.cloud/#/shop/detail/cloud.lazycat.app.forward ## 1. 最终效果 配置完成后,对小龙猫说: ```text 帮我记录一下:明天上午整理发票。 ``` 小龙猫会把任务写入 Vikunja。 也可以问: ```text 我今天有什么下一步任务? ``` 或者: ```text 帮我看看有哪些事情还在等待别人回复。 ``` Vikunja 保存任务,小龙猫接收你的自然语言指令。 ## 2. 简化版 GTD 这里使用 5 个 GTD 分类。先了解分类含义,不用手工创建。 | 项目 | 用途 | | --- | --- | | 收件箱 | 存放刚想到、还没整理的事情 | | 项目 | 存放需要多个步骤才能完成的事情 | | 下一步 | 存放现在可以执行的具体动作 | | 等待中 | 存放需要别人回复、处理或确认的事情 | | 将来可能 | 存放现在不做、以后可能做的想法 | 基本流程: ```text 先收件,再整理,最后只看下一步。 ``` ## 3. 为什么需要端口转发 在懒猫微服中,每个应用都运行在独立容器里。 - 小龙猫在一个容器里。 - Vikunja 在另一个容器里。 - 它们不能直接通过 `localhost` 互相访问。 不要把 Vikunja 地址写成: ```text http://localhost:3456 ``` 在小龙猫中,`localhost` 指的是小龙猫自己的容器,不是 Vikunja 容器。 让小龙猫用这个地址访问 Vikunja: ```text http://host.lzcapp:3456 ``` 这是懒猫微服应用容器之间的访问地址。 ## 4. 配置 Vikunja 端口转发 目标地址: ```text http://host.lzcapp:3456 ``` 在懒猫微服的端口转发工具中新增规则:  1. 协议选择 TCP。 2. 局域网入口类型选择微服虚拟网卡。 3. 出口地址选择 `host.lzcapp`。 4. 端口填写 `3456`。  5. 转发目标类型选择微服应用。 6. 微服应用选择当前安装的 Vikunja 应用。 7. 服务选择 Vikunja 服务。 8. 目标端口填写 `3456`。  9. 点击测试目标连接。  10. 测试成功后保存规则。  注意: - 转发目标是 Vikunja,不是小龙猫。 - 小龙猫访问地址使用 `http://host.lzcapp:3456`,不要使用 `localhost` 或 `127.0.0.1`。 ## 5. 获取 Vikunja API Token 小龙猫操作 Vikunja 需要 API Token。 打开 Vikunja,进入:  ```text Settings > API Tokens ```  创建新 token: 1. 名称填写 `totoro-assistant`。 2. 权限选择项目和任务相关的读写权限。   3. 创建后立即复制 token。 4. 临时保存到安全位置,稍后写入小龙猫技能配置。  注意:API Token 只会完整显示一次。不要把它发到公开文章、截图、群聊或不可信的地方。 ## 6. 获取 Vikunja 的 JSON 文件 小龙猫需要 OpenAPI JSON 文件来调用 Vikunja API。 不要在外部浏览器访问 `http://host.lzcapp:3456` 下载文件。这个地址给小龙猫在容器内部访问 Vikunja 用,外部浏览器通常打不开。 从 Vikunja 页面下载: 1. 打开 Vikunja。 2. 进入 `Settings > API Tokens`。 3. 在 API Tokens 页面点击 `View API documentation`。  4. 页面打开后,在顶部找到下载按钮。  5. 点击下载按钮,保存 JSON 文件。  6. 如果文件名不是 `docs.json`,重命名为: ```text docs.json ``` 下一步把这个 JSON 文件发给小龙猫。 ## 7. 让小龙猫操作 Vikunja 把 `docs.json` 发给小龙猫,让它生成 Vikunja 技能。 ### 7.1 发送 OpenAPI 文件 把 `docs.json` 发给小龙猫,然后说: ```text 这是 Vikunja 的 docs.json。请根据这个 OpenAPI 描述,为我编写一个技能,用来调用 Vikunja API。 ```   ### 7.2 保存 Vikunja 地址和 API Token 技能生成后,把连接信息保存到技能配置中。对小龙猫说: ```text 请把我的 Vikunja 地址保存到技能配置中: http://host.lzcapp:3456 请把我的 Vikunja API Token 保存到技能配置中: 【这里填写你的 API Token】 ```  不要把 API Token 公开到博客、截图、群聊或不可信的聊天记录中。 ### 7.3 设置 GTD 规则 连接信息保存后,把下面规则发给小龙猫: ```text 以后你帮我管理 Vikunja 任务时,请按下面规则处理: 1. 没想清楚、只是临时记录的事情,先放入“收件箱”。 2. 需要多个步骤完成的事情,放入“项目”。 3. 已经明确可以执行的具体动作,放入“下一步”。 4. 需要等待别人回复或处理的事情,放入“等待中”。 5. 现在不做、以后可能做的事情,放入“将来可能”。 6. 如果我说的任务太模糊,请先改写成清楚的下一步动作。 7. 如果你不确定应该放哪里,先放入“收件箱”。 ```  ## 8. 让小龙猫初始化 GTD 项目 不要手工打开 Vikunja 创建项目,直接让小龙猫初始化。 对小龙猫说: ```text 请帮我初始化 Vikunja 的 GTD 项目。 请检查 Vikunja 里是否已经存在下面 5 个项目: 1. 收件箱 2. 项目 3. 下一步 4. 等待中 5. 将来可能 如果某个项目已经存在,不要重复创建。 如果某个项目不存在,请帮我创建。 创建完成后,请列出最终存在的这 5 个项目,并告诉我哪些是新创建的,哪些是原来已有的。 ```  第一版先保持简单,不急着添加标签、筛选器或复杂规则。 使用规则: - 新想法先进“收件箱”。 - 多步任务放进“项目”。 - 能直接执行的任务放进“下一步”。 - 卡在别人那里的任务放进“等待中”。 - 暂时不做的想法放进“将来可能”。 ## 9. 测试连接 用下面 3 个动作测试。 ### 9.1 查询项目 对小龙猫说: ```text 帮我查看 Vikunja 里有哪些项目。 ```  正常情况下会看到: ```text 收件箱 项目 下一步 等待中 将来可能 ``` ### 9.2 创建测试任务 继续对小龙猫说: ```text 帮我在“收件箱”里创建一个测试任务:测试小龙猫连接 Vikunja。 ``` 创建完成后,打开 Vikunja 确认任务是否出现。 ### 9.3 更新测试任务 再对小龙猫说: ```text 把刚才那个测试任务标记为完成。 ``` 如果 Vikunja 中的任务状态已更新,连接正常。 ## 10. 日常用法 把小龙猫当作任务入口。 ### 10.1 随手记录 ```text 帮我记一下:周末整理书桌。 ``` ```text 我想到一个事,以后可以研究一下家庭照片自动备份。 ``` ### 10.2 整理收件箱 ```text 帮我整理一下收件箱里的任务,把它们分到合适的项目。 ``` ```text 看看收件箱里有没有可以变成下一步的任务。 ``` ### 10.3 查看下一步 ```text 我今天应该先做哪些下一步任务? ``` ```text 帮我列出所有还没完成的下一步。 ``` ### 10.4 管理项目 ```text 帮我看看“整理家庭资料”这个项目下一步是什么。 ``` ```text 这个任务太大了,帮我拆成几个步骤再写入 Vikunja。 ``` ### 10.5 跟进等待中任务 ```text 帮我看看有哪些任务还在等待别人回复。 ``` ```text 把“等张三确认合同”标记到等待中。 ``` ## 11. 完整示例 你对小龙猫说: ```text 我想把家里的纸质资料整理成电子版。 ``` 小龙猫会这样处理: 1. 判断这是一个多步任务。 2. 在 Vikunja 的“项目”中创建任务:把家里的纸质资料整理成电子版。 3. 拆出下一步:找出第一批需要扫描的纸质资料。 4. 把这个下一步写入“下一步”。 5. 如果需要家人提供资料,创建一条“等待中”任务。 之后问: ```text 资料整理这个项目下一步是什么? ``` 重点:大项目不直接执行,先拆成明确的下一步。 ## 12. 常见问题 ### 12.1 为什么不能用 `localhost` 小龙猫和 Vikunja 是两个不同的应用容器。小龙猫中的 `localhost` 指向小龙猫自己的容器,不是 Vikunja 容器。 使用端口转发后的地址: ```text http://host.lzcapp:3456 ``` ### 12.2 小龙猫访问不了 Vikunja 怎么办 按顺序检查: 1. Vikunja 是否已启动。 2. 端口转发规则是否已保存并启用。 3. 地址是否为 `http://host.lzcapp:3456`。 4. API Token 是否正确。 5. `docs.json` 是否已发给小龙猫。 6. Vikunja 技能是否已生成并启用。 ### 12.3 下载不到 JSON 文件怎么办 回到 Vikunja 页面操作,不要在外部浏览器访问 `http://host.lzcapp:3456/api/v1/docs.json`。 按顺序检查: 1. Vikunja 是否能正常打开。 2. 是否已经进入 `Settings > API Tokens`。 3. 是否点击了 API Tokens 页面里的 `View API documentation`。 4. API 文档页面顶部是否有下载按钮。 5. 下载后的文件是否是 JSON 文件。 如果 API 文档页面本身打不开,先确认 Vikunja 已启动并重新登录 Vikunja。 ### 12.4 任务被放错项目怎么办 直接让小龙猫修改: ```text 把刚才那个任务从“收件箱”移动到“下一步”。 ``` 或者: ```text 这个任务不是项目,它只是一个下一步动作,帮我改一下。 ``` 分类不准时,直接让小龙猫修改。 ### 12.5 要不要一开始就用标签和复杂筛选 不建议。 第一版先用项目承载 GTD 结构。用稳定后,再考虑标签、优先级、截止日期和筛选器。 ## 13. 最后确认 完成下面检查项,表示配置成功: 1. 小龙猫可以通过 `http://host.lzcapp:3456` 访问 Vikunja。 2. Vikunja 中已创建 API Token。 3. 已获取 Vikunja 的 `docs.json`。 4. 小龙猫已生成 Vikunja 技能。 5. 技能已保存 Vikunja 地址和 API Token。 6. 小龙猫已在 Vikunja 中初始化“收件箱、项目、下一步、等待中、将来可能”。 7. 小龙猫可以创建、查询和更新 Vikunja 任务。 前期只关注两件事: - 所有想到的任务,都有一个可靠入口。 - 所有真正要做的事情,都能变成清楚的下一步。
评论
0暂无评论