小龙猫 + Vikunja + GTD 个人任务管理教程

卓帅

发布于23天前
卓帅
# 基于小龙猫 + Vikunja + GTD 的个人任务管理助理

![ChatGPT Image 2026年5月11日 21_00_52.png](https://dl.playground.lazycat.cloud/guidelines/779/41b13599-61bc-462c-8a4d-1d404a9aac68.png "ChatGPT Image 2026年5月11日 21_00_52.png")

这篇教程把懒猫微服中的“小龙猫”连接到 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
```

在懒猫微服的端口转发工具中新增规则:

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/97aedb2f-87c2-4217-bca5-a176aa05597e.png "image.png")

1. 协议选择 TCP。
2. 局域网入口类型选择微服虚拟网卡。
3. 出口地址选择 `host.lzcapp`。
4. 端口填写 `3456`。

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/c718844b-57de-4749-a837-c4cf5841b35a.png "image.png")

5. 转发目标类型选择微服应用。
6. 微服应用选择当前安装的 Vikunja 应用。
7. 服务选择 Vikunja 服务。
8. 目标端口填写 `3456`。

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/3d9a48f6-42ec-434c-9f13-e24c123b3937.png "image.png")

9. 点击测试目标连接。

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/e7815419-d0d7-43e6-8db2-79d617e3eff8.png "image.png")

10. 测试成功后保存规则。

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/5b3777ca-553b-48a6-9085-64477163a438.png "image.png")

注意:

- 转发目标是 Vikunja,不是小龙猫。
- 小龙猫访问地址使用 `http://host.lzcapp:3456`,不要使用 `localhost` 或 `127.0.0.1`。

## 5. 获取 Vikunja API Token

小龙猫操作 Vikunja 需要 API Token。

打开 Vikunja,进入:

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/d14babb9-dd35-4fa1-8f54-f9b102779c2a.png "image.png")

```text
Settings > API Tokens
```

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/ed212a44-fd18-486b-a3ea-1eaf09db9c4e.png "image.png")

创建新 token:

1. 名称填写 `totoro-assistant`。
2. 权限选择项目和任务相关的读写权限。

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/38bba036-4942-4880-aa7b-9e81109c022f.png "image.png")

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/5d96e8e6-40b9-4ee4-bac8-b8a70bd65812.png "image.png")

3. 创建后立即复制 token。
4. 临时保存到安全位置,稍后写入小龙猫技能配置。

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/bfc77e6a-7628-421d-9e3d-48924f8ae4f5.png "image.png")

注意: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`。

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/d4e32e47-4944-45ab-b393-c887d83a8b31.png "image.png")

4. 页面打开后,在顶部找到下载按钮。

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/f8c64747-3902-4968-95e6-6215e7873f00.png "image.png")

5. 点击下载按钮,保存 JSON 文件。

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/c5aae507-8ff9-4d68-b76f-3e4e86bbbf5b.png "image.png")

6. 如果文件名不是 `docs.json`,重命名为:

```text
docs.json
```

下一步把这个 JSON 文件发给小龙猫。

## 7. 让小龙猫操作 Vikunja

把 `docs.json` 发给小龙猫,让它生成 Vikunja 技能。

### 7.1 发送 OpenAPI 文件

把 `docs.json` 发给小龙猫,然后说:

```text
这是 Vikunja 的 docs.json。请根据这个 OpenAPI 描述,为我编写一个技能,用来调用 Vikunja API。
```

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/b489d658-5ab7-45a9-8e75-bdf1a9410504.png "image.png")

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/5a54f33b-65cc-49ed-bb89-6e057d63bcec.png "image.png")

### 7.2 保存 Vikunja 地址和 API Token

技能生成后,把连接信息保存到技能配置中。对小龙猫说:

```text
请把我的 Vikunja 地址保存到技能配置中:
http://host.lzcapp:3456

请把我的 Vikunja API Token 保存到技能配置中:
【这里填写你的 API Token】
```

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/3e88ced1-33d7-4c40-ae73-60391724116e.png "image.png")

不要把 API Token 公开到博客、截图、群聊或不可信的聊天记录中。

### 7.3 设置 GTD 规则

连接信息保存后,把下面规则发给小龙猫:

```text
以后你帮我管理 Vikunja 任务时,请按下面规则处理:

1. 没想清楚、只是临时记录的事情,先放入“收件箱”。
2. 需要多个步骤完成的事情,放入“项目”。
3. 已经明确可以执行的具体动作,放入“下一步”。
4. 需要等待别人回复或处理的事情,放入“等待中”。
5. 现在不做、以后可能做的事情,放入“将来可能”。
6. 如果我说的任务太模糊,请先改写成清楚的下一步动作。
7. 如果你不确定应该放哪里,先放入“收件箱”。
```

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/69b16f01-9166-49c7-9b83-dee4ec502f52.png "image.png")

## 8. 让小龙猫初始化 GTD 项目

不要手工打开 Vikunja 创建项目,直接让小龙猫初始化。

对小龙猫说:

```text
请帮我初始化 Vikunja 的 GTD 项目。

请检查 Vikunja 里是否已经存在下面 5 个项目:

1. 收件箱
2. 项目
3. 下一步
4. 等待中
5. 将来可能

如果某个项目已经存在,不要重复创建。
如果某个项目不存在,请帮我创建。

创建完成后,请列出最终存在的这 5 个项目,并告诉我哪些是新创建的,哪些是原来已有的。
```

![image.png](https://dl.playground.lazycat.cloud/guidelines/779/b716806d-fd48-4e09-87b4-9d8955b3e5e6.png "image.png")

第一版先保持简单,不急着添加标签、筛选器或复杂规则。

使用规则:

- 新想法先进“收件箱”。
- 多步任务放进“项目”。
- 能直接执行的任务放进“下一步”。
- 卡在别人那里的任务放进“等待中”。
- 暂时不做的想法放进“将来可能”。

## 9. 测试连接

用下面 3 个动作测试。

### 9.1 查询项目

对小龙猫说:

```text
帮我查看 Vikunja 里有哪些项目。
```


![image.png](https://dl.playground.lazycat.cloud/guidelines/779/1b2a7c41-ffe9-4410-8b63-3249310f6cac.png "image.png")

正常情况下会看到:

```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

暂无评论

说点什么呢~
收藏
0
0
0