Install
openclaw skills install @iflyink/doxentopenclaw skills install @iflyink/doxent统一的 Doxent skill,当前支持:note、book、schedule。
这个 skill 是 Doxent / 读写笔记真实数据操作的统一入口。
当用户目标涉及真实笔记、书架文件、日程或任务时,先命中 doxent,再按意图路由到具体模块。
schedule。今天、明天、后天、今晚、明早、下午、9点、3:30、下周一、周五前、月底。开会、约、提醒、安排、改到、延期、提前、完成、提交、处理。note。note。运行时依赖见
meta.json。
所有 API 请求都通过 shared/scripts/doxent_api.py。脚本按 DOXENT_CLI_PATH、用户级 CLI 目录、app_launch.json 和 Doxent 安装目录的顺序查找 CLI;入口缺失时按当前系统与 CPU 架构自动下载。Windows 保存为 %LOCALAPPDATA%\Doxent\CoreCLI\doxent-cli.exe;macOS/Linux 下载各自发布文件后统一重命名为 ~/.local/bin/doxent-cli、赋予执行权限,并把该目录和 DOXENT_CLI_PATH 幂等写入登录 shell 环境。无论平台,后续命令都使用 doxent-cli xxxx 语义。即使本地服务已经健康,也要先完成一次轻量版本指纹检查,不能跳过更新判断。
--background-open-model。DOXENT_NODE、系统 PATH 或 Codex 自带的 Node 18+ 运行时,并把路径注入隐藏子进程;不得要求用户手工安装 Node 或配置 PATH。$PYTHON_BIN shared/scripts/doxent_api.py --cli-action login 打开账号管理页,或使用 --cli-action logout 清除 CLI 会话。--cli-action stop。doxent-cli --help 为准。安装 skill 后首次排障或发现参数不兼容时先运行 --cli-action help,不要自行假设存在 --version。ETag、Last-Modified 或文件摘要发生变化时,即使语义版本号未变化,也要停止旧 daemon、替换用户级 CLI 并自动重新启动。CLI 重新构建后必须重新上传该平台/架构地址对应的文件。/sync/status;只有最近一轮同步明确成功后才继续操作业务数据,不能把同步前或部分失败后的缓存当作最新结果。| 用户意图 | 模块 | 读取 |
|---|---|---|
| 搜索笔记、读取正文、创建/移动/重命名/删除笔记或文件夹 | note | note/SKILL.md |
| 上传书籍、本地文件导入、远程 URL 导入书架 | book | book/SKILL.md |
| 查看日程、创建/修改/删除事件、提醒、待办或任务,以及任何用自然语言表达的时间安排请求(如“明天早上9点开晨会”) | schedule | schedule/SKILL.md |
shared/port-and-health.mdshared/write-and-sync.md强制,无例外:所有 Doxent API 调用必须通过 shared/scripts/doxent_api.py 发送,禁止直接使用 Invoke-RestMethod 或 curl。
强制,无例外:不要裸调用 python。优先使用环境变量 DOXENT_PYTHON;如果为空,在 macOS / Linux / zsh / bash 下使用 python3,在 Windows 下使用 py -3 或 python3。
强制,无例外:先把当前已加载 SKILL.md 所在目录解析为 DOXENT_SKILL_ROOT,再调用其中的脚本;不得假设项目内存在固定的 Skill 副本,也不得要求用户查找或输入 Skill 安装路径。
原因:PowerShell 5.1 在两个环节都会静默损坏中文:① 请求 Body 从 UTF-8 重编码为 GBK;② 命令行参数传递给外部进程时同样如此。因此
--body '...'字符串参数在 Windows 下不安全,必须改用文件。
PYTHON_BIN="${DOXENT_PYTHON:-python3}"
"$PYTHON_BIN" "$DOXENT_SKILL_ROOT/shared/scripts/doxent_api.py" \
--url "http://127.0.0.1:46588/open-model-schedule/health" \
--token "$TOKEN"
# 1. 构建 JSON
PYTHON_BIN="${DOXENT_PYTHON:-python3}"
body='{"type":"event","title":"标题","startTime":1234567890}'
# 2. URL percent-encode(输出纯 ASCII,彻底绕过所有编码层)
encodedBody=$("$PYTHON_BIN" -c 'import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1], safe=""))' "$body")
# 3. 通过 --body-encoded 传给脚本
"$PYTHON_BIN" "$DOXENT_SKILL_ROOT/shared/scripts/doxent_api.py" \
--url "http://127.0.0.1:46588/open-model-schedule/create" \
--method POST \
--body-encoded "$encodedBody" \
--token "$TOKEN"
为什么 URL 编码最安全:URL percent-encode 会把所有非 ASCII 字符(含中文)转为
%E6%99%A8这样的纯 ASCII 序列。ASCII 不受任何编码层影响,Python 收到后unquote还原为正确 Unicode,再 encode('utf-8') 发送。❌ 绝对不要这样写(中文必乱码):
powershell python doxent_api.py --body '{"title":"标题"}' ...
脚本执行真实数据请求时会先确保 CLI daemon 已启动,完成请求后保持 daemon 运行,不会主动停止;调用方不要重复手写端口探测、启动或停止逻辑。只有用户明确要求停止时才使用 --cli-action stop。
默认输出结构:
结果命中项补充说明下一步高风险动作确认结构:
待操作对象定位依据风险提示等待确认特殊格式要求: 当需要输出展示笔记标题或列表,日程标题或列表时,务必使用以下格式
📝[标题](doxent://note/id) 格式输出📅[标题](doxent://schedule/id) 格式输出note/SKILL.mdnote/SKILL.mdbook/SKILL.mdschedule/SKILL.mdschedule/SKILL.mdschedule/SKILL.mdschedule/SKILL.mdschedule/SKILL.md