介绍
# 4todo [4to.do](https://4to.do) 艾森豪威尔矩阵待办清单
## 目标
- 使用 `curl` 调用 4todo API (`https://4to.do/api/v0`) 来管理: - 工作区 - 待办事项 - 循环待办事项 - 以可注入但不易泄露的方式存储 Token(优先使用 OpenClaw 每次运行时的环境变量注入;不要将密钥粘贴到提示词、日志或仓库文件中)。
## 必需的环境变量
- `FOURTODO_API_TOKEN`:您的 4todo API Token(Bearer token) - 如果缺失,请用户通过 OpenClaw 配置进行设置(不要让他们将 Token 粘贴到聊天中)。
## 运行时要求
- `curl` 必须在 `PATH` 中可用(并且在沙盒容器内可用,如果智能体处于沙盒中)。
## 面向用户的输出规则(重要)
- 默认使用非技术性语言。关注结果,而非实现方式。 - 避免提及:curl、端点、请求头、API 机制、JSON 载荷、配置补丁。 - 仅在调试或用户明确询问“它是如何工作的?”时提及技术细节。 - 默认不打印内部 ID: - 除非用户询问,否则**不要**显示 `ws_...`、`todo_...`、`rec_todo_...`。 - 通过**名称**引用工作区和任务。 - 如果需要消除歧义(名称重复),请提出澄清性问题并列出简短的编号名称列表;仅当用户请求时才提供 ID。 - 象限: - 在聊天中,优先使用自然语言:“紧急且重要”、“重要(不紧急)”、“紧急(不重要)”、“不重要也不紧急”。 - 在内部进行 API 调用时使用 `IU | IN | NU | NN`。仅当用户先使用代码或明确询问时才显示代码。
### 示例(首选)
工作区:
``` Your workspaces: 1) Haoya (default) 2) 4todo 3) Echopark ```
待办事项(摘要):
``` Urgent & important: 1) UK company dissolution 2) Hetzner monthly payment (recurring, monthly)
Important (not urgent): 1) Weekly review (recurring, Fridays) ```
## 在 OpenClaw 中存储/注入 Token(推荐)
OpenClaw 可以仅在智能体运行期间注入环境变量(随后恢复原始环境),这有助于避免密钥泄露到提示词中。
推荐(生产环境):使用您的主机提供商的密钥存储在您的网关进程环境中设置 `FOURTODO_API_TOKEN`,并且不要将 Token 存储在聊天日志中。
### 主机运行(非沙盒):使用 `skills.entries`
编辑 `~/.openclaw/openclaw.json`:
```json5 { skills: { entries: { "4todo": { enabled: true, env: { FOURTODO_API_TOKEN: "YOUR_4TODO_API_TOKEN" } } } } } ```
注意: - `skills.entries.<skill>.env` 仅在该变量尚未设置时才会被注入。
### 沙盒会话:使用 `agents.defaults.sandbox.docker.env`
当会话处于沙盒中时,技能环境变量注入**不会**传播到 Docker 容器中。请通过 Docker 环境变量提供 Token:
```json5 { agents: { defaults: { sandbox: { docker: { env: { FOURTODO_API_TOKEN: "YOUR_4TODO_API_TOKEN" } } } } } } ```
## 请求约定
- 每个请求必须包含 `Authorization: Bearer <token>`。 - 带有 JSON 正文的请求必须包含 `Content-Type: application/json`。 - `GET /todos` 需要一个 `workspace` 查询参数。 - 象限:`IU | IN | NU | NN`(内部使用)。
## 工作流程(推荐顺序)
复制此检查清单并在执行期间保持更新:
``` Task checklist: - [ ] List workspaces (pick `ws_...`) - [ ] List todos for that workspace - [ ] Perform the requested mutation (create / complete / reorder / recurring) - [ ] Re-fetch to verify the change ```
1. `GET /workspaces`:选择一个目标 `ws_...`(通常是默认工作区)。 2. `GET /todos?workspace=ws_...`:获取待办事项(按象限分组)。 3. 创建:`POST /todos`。 4. 完成:`POST /todos/:id/complete`(幂等)。 5. 重新排序 / 移动象限:`POST /todos/reorder`。 6. 循环待办事项:使用 `/recurring-todos` 端点。
## HTTP 示例 (curl)
此技能有意使用 `curl` 以实现跨操作系统和环境的最大可移植性。
注意: - 仅限 HTTPS (`https://4to.do/api/v0`)。 - 始终通过 `FOURTODO_API_TOKEN` 传递 Token(切勿将 Token 粘贴到聊天中)。
```bash curl -sS -H "Authorization: Bearer $FOURTODO_API_TOKEN" -H "Accept: application/json" "https://4to.do/api/v0/workspaces" curl -sS -H "Authorization: Bearer $FOURTODO_API_TOKEN" -H "Accept: application/json" "https://4to.do/api/v0/todos?workspace=ws_...&show=all" curl -sS -X POST -H "Authorization: Bearer $FOURTODO_API_TOKEN" -H "Accept: application/json" -H "Content-Type: application/json" --data-raw '{"name":"...","quadrant":"IU","workspace_id":"ws_..."}' "https://4to.do/api/v0/todos" curl -sS -X POST -H "Authorization: Bearer $FOURTODO_API_TOKEN" -H "Accept: application/json" "https://4to.do/api/v0/todos/todo_.../complete" curl -sS -X POST -H "Authorization: Bearer $FOURTODO_API_TOKEN" -H "Accept: application/json" -H "Content-Type: application/json" --data-raw '{"moved_todo_id":"todo_...","previous_todo_id":"todo_...","next_todo_id":null,"quadrant":"IN"}' "https://4to.do/api/v0/todos/reorder" ``` 注意:如果 `moved_todo_id` 以 `rec_todo_` 开头,API 仅更新循环待办事项的象限,并忽略 `previous_todo_id/next_todo_id`。
## 常见错误处理(智能体指导)
- `401 token_expired / invalid_token`:停止重试;请用户在 4todo 设置中创建新 Token 并更新 OpenClaw 配置。 - `402 WORKSPACE_RESTRICTED`:工作区为只读;不要重试修改操作;切换工作区或提示用户升级/解锁。 - `429 rate_limited`:遵守 `Retry-After` / `X-RateLimit-*` 并在重试前退避。 - `400 Invalid quadrant type`:确保象限是 `IU|IN|NU|NN` 之一。
## 参考
- 此技能附带完整 API 文档:`{baseDir}/references/api_v0.md`