关于 dex-skill
dex-skill 指导 Agent 使用 Dex,这是一款用于管理职业联系人、互动记录和后续跟进的个人 CRM。内容说明如何通过 MCP 工具或 CLI 访问服务,并介绍设置与身份验证方式。
主要功能
- 01搜索、筛选和列出联系人
- 02记录互动笔记及联系人详情
- 03使用标签、群组和自定义字段整理联系人
- 04创建提醒并管理跟进周期
- 05通过 MCP 工具或 CLI 使用 Dex
适用场景
- 01按关键词或结构化条件查找联系人
- 02导入后添加联系人并进行整理
- 03在联系人时间线上记录会议或通话
- 04查看即将到来的提醒和生日
MCP 相关
Dex 通过 MCP 服务提供 CRM 操作,包括联系人、笔记和提醒工具。该技能还说明如何连接支持 MCP 的客户端,以及如何将 CLI 用作替代方式。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ getdex/ agent-skills --skill dex-skill安装后在 Claude Code 中输入/dex-skill确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/cli-commands.mdcrm-workflows.mdtools-reference.md详细介绍
Dex Personal CRM
Dex 是一款个人 CRM,帮助用户维护并培养职业关系。它会跟踪联系人、互动历史、提醒和组织结构(群组、标签、自定义字段)。
设置 — 检测访问方式
按以下顺序检查可用的访问方式:
- 是否有可用的 MCP 工具? 如果工具列表中有
dex_search_contacts和其他dex_*工具,请直接使用 MCP 工具。这是首选方式——完全跳过 CLI 设置。 - 是否已安装 CLI? 检查是否存在
dex命令(运行which dex或dex auth status)。如果已通过身份验证,请使用 CLI 命令。 - 两者都没有? 引导用户完成设置。
如果你可以运行 Shell 命令,但无法打开浏览器——你是一个沙盒计算 Agent(Grok Bot、OpenClaw 以及类似的托管 Agent,它们在自己的机器上而非用户的机器上运行)。不要指望宿主自身的 MCP 连接器登录能够奏效:其表单只接受 URL 和静态标头,因此不会启动 OAuth 流程,并会返回 authentication_required,且不给用户任何链接。请从路径 B(安装 CLI)开始,然后按照下方的设备码流程操作——最终由用户在自己的设备上登录。
设备流程签发 dex_ 密钥后,你有两种选择。继续使用 CLI,或者——如果用户更喜欢使用 MCP 工具而非 CLI 命令——将 https://mcp.getdex.com/mcp 添加为连接器,并将该密钥作为 Authorization: Bearer dex_… 标头。两种方式都可以调用工具。
在选择连接器方式之前,请先阅读以下内容——规则就在这里,不只在身份验证中。
dex_密钥不带任何作用域:它可代表用户访问其整个账户,而且不会过期,这与有作用域、有效期为一小时的 OAuth 令牌不同。切勿打印该密钥、将其回显到聊天中,或将其放入用户可见的工具参数中。本段内容并未放宽这一要求。如果配置连接器需要以任何方式暴露该密钥,请停止操作,并让用户前往 Settings → Integrations 创建自己的密钥,然后自行将其粘贴到宿主的连接器字段中。
宿主仍可能将连接器标记为“未经身份验证”,因为它会跟踪一个从未建立过的 OAuth 状态。单看这个标记只是显示问题——但在工具调用中收到 401 或 403 则是真正的失败(密钥已撤销,或账户没有 Professional 订阅),不是显示异常。请根据工具调用是否确实成功来判断;如果遭到拒绝,应告知用户,而不是重试。
首次设置
路径 A — 平台支持带 OAuth 的 MCP(Claude Desktop、Cursor、VS Code、Gemini CLI 等):
此路径要求客户端实现 MCP OAuth 规范——客户端必须能够响应 WWW-Authenticate 挑战,并打开浏览器或向用户提供授权 URL。仅接受服务器 URL 和静态 Authorization 标头的宿主(Grok Bot、xAI API 远程 MCP 工具)无法完成此流程;请改用路径 B。
如果用户已经配置了 Dex MCP 服务,或者其平台支持添加 MCP 服务:
npx -y add-mcp https://mcp.getdex.com/mcp -y
此命令会自动检测已安装的 AI 客户端,并为它们配置 Dex MCP 服务。用户首次连接 MCP 时,会通过浏览器进行身份验证。
路径 B — 安装 CLI:
npm install -g @getdex/cli
适用于 npm、pnpm 和 yarn。无需 postinstall 脚本——二进制文件已打包在平台专用的软件包中。
保持 CLI 为最新版本:
CLI 会在构建时根据 MCP 服务的工具架构自动生成命令。服务端添加或更新工具后,用户需要更新 CLI 才能使用新命令。如果用户报告缺少命令或参数,请建议更新:
npm install -g @getdex/cli@latest
路径 C — 没有 Node.js:
引导用户按照 https://getdex.com/docs/ai/mcp-server 中的设置指南操作——其中提供了针对 Claude Desktop、Claude Code、Cursor、VS Code 和其他支持 MCP 的客户端的具体说明。
身份验证
由 /dex-login 触发,或在首次使用且尚未通过身份验证时触发。优先使用主机支持的 MCP 浏览器 OAuth,其次在交互式 CLI 会话或任何沙盒计算 Agent 中使用设备代码,CI 场景或用户明确选择时使用 API 密钥。
在 Grok Bot、OpenClaw 及类似的托管 Agent 上,设备代码是首选,而非备用方案——你的机器上没有可打开的浏览器,但用户自己的设备上有。
不要仅凭 dex auth status 判断。 只要存在任何凭据文件,状态就会显示为绿色。请使用实际命令进行验证,例如 dex dex-list-tags。“成功”登录后出现 401 unauthorized,几乎总是意味着 CLI 仍在读取过期令牌。
凭据的实际存放位置:
@getdex/cli会读取~/.clihub/credentials.json(auth_type: bearer_token,token: dex_…)。- 一些文档和较旧的 Agent 只会写入
~/.dex/api-key。该文件不是 CLI 在 MCP 调用时发送的凭据。 - 设备代码或 API 密钥设置完成后,请写入两个文件,否则下一次
dex …调用会返回 401。
Cloudflare: 每个发往 mcp.getdex.com 的请求都必须发送 User-Agent: dex-cli。不带 UA 的裸 curl 会返回 Cloudflare 1010(browser_signature_banned)。这不是代码过期,也不是 Dex 401。
切勿要求用户在聊天中粘贴 API 密钥。不要将其打印、记录日志、提交,或放入会显示给用户的工具参数中。dex auth --token <key> 会将密钥放在进程 argv 中——不要通过 Agent 运行该命令。
选项 1——API 密钥:
- 用户在 Dex Settings > Integrations 生成密钥(需要 Professional 计划)
- 请用户在自己的终端中保存密钥,或通过绝不打印密钥值的本地脚本写入下面两个文件
- 保存位置:
~/.dex/api-key(chmod 600)和~/.clihub/credentials.json(chmod 600)
选项 2——设备代码流程(适用于远程/无头机器):
直接通过 HTTP 执行此流程——机器上无需浏览器。始终发送 User-Agent: dex-cli。
-
请求设备代码:
curl -s -X POST https://mcp.getdex.com/device/code \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -H "User-Agent: dex-cli"响应:
{ "device_code": "...", "user_code": "ABCD-EFGH", "verification_uri": "https://...", "expires_in": 600, "interval": 5 } -
向用户显示
user_code和verification_uri。用户可在任意带浏览器的设备上打开该 URL,登录 Dex 并输入代码。 -
每隔 5 秒轮询一次,且不要记录成功响应:
curl -s -X POST https://mcp.getdex.com/device/token \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -H "User-Agent: dex-cli" \ -d '{"device_code": "<device_code>"}'- HTTP 200 +
{"error": "authorization_pending"}→ 继续轮询(这不代表成功) - HTTP 429 +
{"error": "slow_down"}→ 等待时间长于interval - HTTP 400 +
{"error": "expired_token"}→ 请求新的设备代码 - HTTP 403 Cloudflare 1010 → 添加
User-Agent: dex-cli并重新开始 - HTTP 200 +
api_key→ 停止轮询。不要打印响应正文。
- HTTP 200 +
-
将密钥保存到两个位置,且不要打印密钥:
install -d -m 700 ~/.dex ~/.clihub umask 077~/.dex/api-key— 原始dex_…字节,权限模式为600,末尾不附加任何说明~/.clihub/credentials.json— 权限模式为600,使用此架构(CLI 的真实数据源):
{ "version": 2, "servers": { "https://mcp.getdex.com/mcp": { "type": "bearer", "auth_type": "bearer_token", "token": "<api_key>" } } }如果执行环境无法确保成功的
/device/token响应不会进入聊天或工具日志,请停止操作,并让用户在自己的终端中完成流程。 -
使用
dex dex-list-tags(或其他读取操作)进行验证。如果返回 401,说明~/.clihub/credentials.json未更新。
当前版本的 @getdex/cli(1.0.x)没有 dex auth login 子命令,即使某些 README 中提到了该命令。请使用此 HTTP 设备流程。
对于无人值守的 CI/自动化场景,请使用 API 密钥方式,设置 DEX_API_KEY 环境变量,并写入上述凭据文件。
数据模型
Contact
├── Emails, Phone Numbers, Social Profiles
├── Company, Job Title, Birthday, Website
├── Description (rich text notes about the person)
├── Tags (flat labels: "Investor", "College Friend")
├── Groups (collections with emoji + description: "🏢 Acme Team")
├── Custom Fields (user-defined: input, dropdown, datepicker)
├── Notes/Timeline (interaction log: meetings, calls, coffees)
├── Reminders (follow-up tasks with optional recurrence)
├── Priority tier (one of the user's own named tiers, or none)
└── Starred / Archived status
使用工具
MCP 模式
直接调用 dex_* 工具。所有工具都接受并返回 JSON。
CLI 模式
使用 dex 命令。CLIHub 会根据 MCP 工具名称生成子命令(将 _ 替换为 -):
dex dex-search-contacts --query "John"
dex dex-list-contacts --limit 100
dex dex-create-contact --first-name "Jane" --last-name "Doe"
dex dex-list-tags
dex dex-create-reminder --text "Follow up" --due-at-date "2026-03-15"
使用 --output json 获取机器可读的输出,使用 --output text(默认值)获取人类可读的输出。
运行 dex --help 查看所有命令,或运行 dex <command> --help 查看特定命令的帮助。
完整的 57 个工具与 CLI 命令映射表,请参阅 CLI 命令参考。
核心工作流
1. 查找联系人
choose search/filter/list → get details (with notes if needed)
- 对于关键词或真实地理位置邻近搜索,请使用
dex_search_contacts,并通过near和可选的radius_km设置位置 - 使用
near时,将query用于其他非位置筛选条件;不要在两个字段中重复填写地点 - 对于标签、群组、公司、资料是否存在、日期、归档状态和自定义字段等结构化 AND 筛选条件,请使用
dex_filter_contacts - 对于未筛选的批量遍历,请使用
dex_list_contacts(每页最多 500 条,通过游标分页) - 使用空搜索查询可浏览一批按最近互动时间排序的联系人
- 用户需要互动历史时,请设置
include_notes: true
2. 添加新联系人
create contact → (optionally) add to groups → apply tags → set reminder
- 使用已有信息创建联系人(没有任何必填字段)
- 创建后立即整理:添加相关标签和群组
- 如果用户刚认识此人,请设置后续提醒
批量导入(CSV、电子表格、列表):
batch create contacts → add to group → create note for all
- 批量创建时,请使用带有
contacts数组的dex_create_contact(每次最多 100 个) - 使用返回的联系人 ID,通过
dex_add_contacts_to_group将所有联系人添加到一个群组 - 使用带有
contact_ids的dex_create_note,为所有导入的联系人记录一条共享备注
3. 记录互动
(optional) list note types → create note on contact timeline
- 先通过
dex_list_note_types查找备注类型,并选择合适的类型(会议、电话、咖啡、备注等) - 将
event_time设置为互动发生的时间,而不是记录时间 - 备注应简洁,但要记录重要细节、待办事项和个人背景
- 使用复数形式的
contact_ids将一条备注关联到多个联系人(例如群组会议)
4. 管理后续跟进
set cadence or create reminder → complete/snooze when due
- 使用
dex_update_contact.keep_in_touch设置关系维护频率;针对具体任务则使用提醒 - 务必填写
due_at_date(ISO 格式:"2026-03-15") - 使用
text描述提醒内容——没有单独的标题字段 - 重复选项:
weekly、biweekly、monthly、quarterly、biannually、yearly - 真实互动后,使用
dex_complete_keep_in_touch且不设置snooze_days;若要延期但不记录互动,则使用snooze_days
“近期有什么安排?”——对于任何有关近期安排的问题(“下周谁过生日?”、“这周我应该联系谁?”、“我近期有什么安排?”),请调用 dex_list_upcoming_reminders_and_birthdays,而不要将多个列表拼接在一起。一次调用即可返回指定时间范围内的生日、未完成提醒和待保持联系的联系人(默认 7 天;设置 days: 30 可查询一个月)。
- 只有在已知出生年份时,它才会报告
turning_age。没有出生年份的生日不会返回birthday_year或turning_age——只说明日期,不要猜测年龄 keep_in_touch列表会包含已逾期的人(is_overdue: true);reminders列表则会排除早于from的提醒——使用dex_list_reminders并设置is_overdue: true, is_complete: false获取逾期提醒。到期日期和逾期状态均按 UTC 判定- 对于较长的时间范围,在告知用户这就是全部内容之前,请先检查
reminders_truncated/keep_in_touch_truncated。待保持联系的条目会累积至时间范围结束,因此若结果超出限制,请使用dex_filter_contacts(has_frequency: true)分页,而不要将之后的日期设为from
5. 整理联系人
标签 — 用于跨类别的扁平标签:
create tag → add to contacts (bulk)
群组 — 带有表情符号和描述的命名集合:
create group → add contacts (bulk)
最佳实践:使用标签表示属性(“投资者”“工程师”“在 X 会议上认识”),使用群组表示关系集群(“初创公司顾问”“读书会”“Acme Corp 团队”)。
6. 管理自定义字段
list fields → create field definition → batch set values on contacts
- 三种字段类型:
input(自由文本)、autocomplete(带选项的下拉列表)、datepicker - 使用
dex_set_custom_field_values一次为多个联系人设置值 - 对于自动补全字段,请提供包含允许选项的
categories数组
7. 会前准备
当用户说“我要和 X 开会”时:
- 搜索联系人
- 使用
include_notes: true获取完整详情 - 检查近期提醒中是否有待处理事项
- 当用户需要实时背景信息时,可选择搜索相关邮件往来并获取日历事件
- 检查
dex_get_contact_research中是否有已保存的网络调查记录;如果没有,且用户想了解公开背景,可提供dex_research_contacts(付费、速度较慢) - 总结:上次互动、关键备注、待跟进事项、共同背景、参会者、近期邮件往来以及注明来源的网络调查结果
- 详细的会前准备指南请参阅 CRM 工作流
8. 管理日历事件
- 使用
dex_list_calendar_events按时间范围查询,或在所有已连接的 Google/Microsoft 账户中搜索纯文本事件 - 对于获取/更新/删除操作,将事件返回的
email作为account_email重用 - 对于获取/创建/更新/删除操作,如果同一地址同时连接到两个服务提供商,也请传入
account_provider - 对于有具体时间的事件,请提供带明确偏移量的
start_datetime和end_datetime,并包含 IANAtimezone - 对于全天事件,请提供
start_date;end_date为排他日期,默认为次日 - 如果参会者可能收到邀请,请在创建前确认
- 更新时,
attendees会替换整个参会者列表;请先获取事件,并包含所有应保留的人员 - 系列重复事件 ID 会更新整个系列;确认前请说明操作范围
- 对于日历创建/更新,请在首次尝试前生成
idempotency_key,并仅在 24 小时内使用相同参数重试该操作时复用它。每次新的编辑或有意创建的新事件都需要新的键。不提供该键时,更新操作会再次执行;创建操作会在 24 小时内对相同内容去重,因此重新创建已删除的事件或有意创建另一个相同事件时,请使用新键。这不适用于其他操作:dex_create_contact、dex_create_group、dex_create_tag和dex_create_custom_field每次调用都会携带一个新键,因此重试会创建重复项。只有在传入自定义idempotency_key时,dex_create_note和dex_create_reminder才可以安全重试——请在服务端的 24 小时有效期内重复使用相同的键和相同的参数,此时会返回原记录,而不会创建重复项。如果提供了idempotency_key,dex_create_note还要求显式提供event_time(否则会被拒绝),因为自动填充的“当前时间”每次尝试都会不同,从而无法实现重放。打算重试时,请自行设置event_time。
更新操作无法将事件移至另一个已连接账户。若要转移事件,请先获取原事件,确认在目标账户上创建替代事件,然后再单独确认删除原事件。保留完整的参会者列表和事件详情,并提醒用户组织者身份、回复状态、会议数据和服务提供商通知可能发生变化。
如果日历列表返回 warnings,请说明结果不完整;不要根据缺失的账户推断可用时间。如果所有日历都失败,请报告错误,而不要说没有会议。
如果日历写入因缺少服务提供商权限范围而失败,请指引用户前往 设置 → 同步与集成 → 授予日历访问权限,为该账户授予权限。
9. 搜索邮件
- 使用
dex_search_emails对所有已连接的 Google/Microsoft 邮箱进行实时只读搜索 - 如需列出近期邮件,请省略
query;使用folder: 'inbox'查找收到的邮件。继续使用next_cursor翻页时,保持文件夹和日期范围不变 - 使用姓名、公司、域名或主题等普通关键词;
from:和to:等服务商运算符会被中和 - 设置
after和before以指定精确的日期范围;否则搜索范围大约为最近 6 个月 - 结果包含元数据、摘要片段和服务商链接,不包含完整邮件正文
- Dex 无法发送邮件;不要暗示此工具可以起草或发送邮件
10. 在网上调查联系人
dex_get_contact_research可免费读取最多 10 位联系人的已存笔记——请先查看dex_research_contacts每次调用最多可对 5 位联系人运行 Dex Research:这项付费服务会进行网络搜索、提取网页内容并生成大模型摘要,每位联系人可能需要 1 分钟或更长时间。对不止几位联系人运行前,请先征得用户同意- 缓存会提供 30 天内的笔记;仅当用户明确要求重新调查时,才传入
force: true - 重新调查会替换已存的调查笔记及其发现状态。保留现有联系人字段并不代表会保留先前的调查笔记;强制重新调查前,请说明笔记会被替换
- 引用调查发现时,请附上引用标记(
[[n]]标记对应sources);当identity_confidence不为high时,请注明该值 - 调查会自动填充空的
linkedin/website字段,但仅限高置信度的发现,并会在applied中报告;绝不会覆盖现有值。置信度较低的linkedin/website发现会返回pending,与所有邮件和电话发现一样——请查看每行的status,不要假设字段已填充。任何pending项都需要先征得用户确认,再通过dex_update_contact应用 in_progress表示已有另一个请求正在调查该联系人:稍后读取其结果,不要再次运行
11. 归档、删除或合并
优先采用可撤销的清理方式:
- 对用户以后可能还需要的联系人,使用
dex_archive_contacts - 使用
dex_filter_contacts并设置archived_only: true查找已归档的联系人 - 使用
dex_archive_contacts并设置archived: false恢复联系人
对于重复项:
search for potential duplicates → confirm with user → merge
- Dex 会选择每组中最早的记录作为保留记录,不受输入顺序影响
- 查看响应中的
mergedContactIds,了解哪个 ID 被保留 - 合并前始终先征得用户同意(这是破坏性操作)
- 一次调用可以合并多组重复项
12. 设置关系优先级
每位联系人都可以归入用户的某个优先级层级——Priority Map 编辑的也是同一个字段。用户可以重命名层级,因此切勿假设默认值(1 最高,2 高,3 中,4 低,5 无):
dex_get_priority_tiers → dex_filter_contacts (priority_tier) → propose → confirm → dex_set_contact_priority
- 先调用
dex_get_priority_tiers,并使用用户自己的层级名称进行交流 - 使用
dex_filter_contacts的priority_tier查找已归入某个层级的联系人(可传入层级编号、编号列表或true/false) dex_set_contact_priority接受层级名称或tier_number,以及最多 500 个contact_ids;null会清除优先级,这与“无”层级不同- 该工具会覆盖每位联系人的当前层级:写入前,说明哪些联系人将归入哪个层级,并指出任何将离开当前层级的联系人
- 仅限个人 Dex——连接到 Dex for Teams 工作区时会拒绝此操作
13. 处理以结果为导向的请求
对于涉及多个联系人的请求或多步骤请求,请遵循以下可复用约定:
define scope → inspect current state → preview proposed outcome → confirm writes → execute → verify
- 除非用户也要求进行更改,否则将分析、推荐、审计或准备类请求视为只读操作
- 当用户说“全部”时,对完整的相关数据集进行分页,并说明范围包含活跃联系人、已归档联系人,还是两者都包含
- 创建任何内容前,先复用现有标签、群组、自定义字段、联系人和近期备注
- 将高置信度的操作与需要审核的模糊记录分开
- 批量写入前,列出确切的新增、更新、移除、归档、合并、备注和提醒
- 通过重新读取记录来验证更改,并报告成功、跳过和失败的项目
当用户要求执行以下操作时,加载 CRM Workflows 获取详细的操作指南:
- 对整个联系人网络进行分类或重组
- 将记事工具生成的摘要或转录内容转化为备注、联系人更新和提醒
- 审计或清理 CRM 数据
- 导入活动或名册中的人员并跟进
- 审查关系状况或规划外联
- 准备一天或一周的会议
- 根据多项条件建立目标联系人列表
- 提出优先级分层方案并为联系人分配层级
重要模式
隐私和数据最小化
- 仅检索请求所需的字段和历史记录;除非需要关系背景,否则不要启用
include_notes和include_contacts - 将联系方法、备注、电子邮件片段、参会者名单和提供商链接视为私人关系数据
- 总结相关背景,而不是重复不必要的个人详情
- 未经用户明确要求,不得将 Dex 数据分享或传输给其他服务
- 当
dex_search_emails仅返回元数据和片段时,不要声称可以访问完整的电子邮件正文 - 将网络研究作为带引用的公开信息呈现,而不是 Dex 已核实的事实;如果备注可能描述的是其他人,则显示
identity_confidence
分页
仅包含 has_more 和 next_cursor 的响应使用游标分页:
dex_list_contacts:默认每页 100 条,最多 500 条dex_filter_contacts:默认每页 50 条,最多 200 条- 标签、群组联系人、备注和提醒列表:默认每页 10 条
- 检查响应中的
has_more - 将
next_cursor作为cursor传入,同时保留原始筛选条件、排序顺序和可选的包含项 - 迭代至
has_more: false,以获取所有结果
dex_search_emails 列表(不带 query)也使用分页,默认每页 25 封邮件,最多 100 封。带 query 的搜索仅返回单页结果,且不接受 cursor。
dex_search_contacts 和 dex_list_calendar_events 返回有数量上限的单批结果,不使用游标。必要时缩小查询范围或日期范围。
破坏性操作
遵守 MCP 主机的确认要求。在命令行模式下,执行任何删除、覆盖、移除关系、归档、完成联系节奏状态、更改外部日历状态或可能发送邀请的操作之前,都要明确说明目标和后果。
高风险示例:
- 删除、合并联系人和批量归档
- 任何会覆盖已保存字段或替换集合的更新
- 移除标签或群组成员关系
- 完成或暂停保持联系状态
- 删除群组、标签、笔记、提醒或自定义字段
- 批量设置自定义字段值
- 创建、更新或删除日历事件
- 对超过少数几个联系人运行付费网络调研(
dex_research_contacts),或使用force: true
执行破坏性调用之前,先将名称解析为当前 ID;覆盖集合时先读取当前记录;展示计划变更,并且绝不要猜测含义不明确的目标。
清理联系人时,不要仅凭不活跃就判定其为“过时”。检查未完成的提醒和活跃的关系信号,列出准确的归档和保留名单,并在归档或更改联系节奏前征求批准。日期筛选不会包含没有记录互动的联系人,因此在相关情况下要单独检查这些联系人。
响应截断
响应上限为 25,000 个字符。基于游标的工具会保留 next_cursor 和 has_more;请使用更小的页面继续获取。对于单批次搜索、日历和电子邮件工具,请缩小 limit 或收窄查询/日期范围。写入工具(创建、更新、添加)返回 _truncated 提示,表示写入已完成:读取未显示的行,例如使用带 created_after 的 dex_filter_contacts,并且绝不要重复调用。
日期格式
- 所有日期:ISO 8601 字符串(例如
"2026-03-15"、"2026-03-15T14:30:00Z") - 生日:已知年份时使用
YYYY-MM-DD,仅知道月和日时使用--MM-DD。Dex 将年份存储在单独的列中,因此读取结果若显示为--MM-DD,表示从未记录年份——不要用当前年份替代,也不要报告年份。 - 提醒到期日期:
YYYY-MM-DD - 有时间的日历事件:带明确 UTC 偏移量和 IANA 时区的 ISO 8601 格式
- 日历全天事件的
end_date:不包含结束日期