Deskbird-Automator
Verwende diesen Skill, um Deskbird ueber das lokale CLI (scripts/deskbird_tool.py) sicher zu bedienen und optional als wiederkehrende Cron-Session laufen zu lassen.
Voraussetzungen
- - Arbeite im Projektordner
<repo-root>. - Nutze bevorzugt diese CLI-Kommandos:
-
./scripts/deskbird.sh auth-check
-
./scripts/deskbird.sh auth-refresh --format json
-
./scripts/deskbird.sh auth-import --stdin --format json
-
./scripts/deskbird.sh discovery
-
./scripts/deskbird.sh parking-status
-
./scripts/deskbird.sh parking-book-first
- Setup bei frischem Upload:
-
python3 -m venv .venv
-
source .venv/bin/activate
-
pip install -r requirements.txt
-
python -m playwright install chromium
-
chmod +x scripts/deskbird.sh
- - Halte den Schonmodus aktiv (
DESKBIRD_SAFE_MODE=true) und sende keine Request-Stuerme. - Fuer Telegram-Reauth standardmaessig nur DevTools-Paste +
auth-import verwenden. - INLINECODE15 und
auth-capture nicht als Standard im Chat vorschlagen.
Deterministischer Env-Pfad
- - Verwende fuer alle Skill-Aufrufe den Wrapper
./scripts/deskbird.sh. - Der Wrapper setzt automatisch
--env-file <skill-root>/.env und verhindert damit CWD-bedingte Auth-Fehler. - Nur bei gezieltem Debugging darfst du
--env-file explizit auf eine andere Datei setzen.
Empfohlene Dauer-Auth (Broker-Basis)
- - Hinterlege nach einmaliger Ermittlung in der Skill-
.env:
-
DESKBIRD_FIREBASE_API_KEY
-
DESKBIRD_FIREBASE_REFRESH_TOKEN
- - Dann kann der Agent automatisch per
auth-refresh einen neuen Bearer holen, ohne jeden Login-Flow.
Pflichtdialog Vor Automatisierung
Wenn noch keine passende Cron-Session existiert, frage den Nutzer in genau dieser Reihenfolge:
- 1. INLINECODE24
- Wenn ja: INLINECODE25
- INLINECODE26
Falls unklar, biete als Defaults an:
-
Nur Uebersicht ueber alle buchbaren Objekte senden
-
Uebersicht + Parkplatz automatisch buchen, wenn Regel erfuellt ist
-
Nur monitoren, nie buchen
- 4. Fasse Name, Rhythmus und Session-Aufgabe zusammen und hole eine letzte Bestaetigung ein.
Wenn der Nutzer keinen Rhythmus nennt, setze den Default: taeglich 00:30 (Europe/Berlin).
Reauth-Protokoll (immer vor Deskbird-Calls)
Fuehre vor Discovery/Status/Buchung immer zuerst aus:
CODEBLOCK0
Auswertung:
- - Wenn
requires_reauth=false: normal fortfahren. - Wenn
requires_reauth=true:
- Wenn
DESKBIRD_FIREBASE_API_KEY und
DESKBIRD_FIREBASE_REFRESH_TOKEN vorhanden sind:
- zuerst automatisch
./scripts/deskbird.sh auth-refresh --format json --min-valid-minutes 90 ausfuehren.
- nur wenn das fehlschlaegt, Nutzer um manuelle Reauth bitten.
- Ohne Firebase-Refresh-Creds: Nutzer aktiv fragen, ob Reauth jetzt gestartet werden soll.
- - Manueller Reauth-Standard ist Token/Header-Paste aus Chrome DevTools.
Office-Discovery Pflicht
- - Vor jeder Detailabfrage (
parking-status, parking-check, parking-book-first) zuerst discovery ausfuehren. - INLINECODE39 ist optional: Das CLI loest das Office automatisch ueber
internalWorkspaces auf. - Nur wenn mehrere Offices vorhanden und der Default unklar ist:
- zuerst
--office-name "<NAME_TEILSTRING>" verwenden, oder
-
DESKBIRD_DEFAULT_OFFICE_ID in der Skill-
.env setzen.
- - Der Agent soll den Nutzer nicht standardmaessig nach einer Office-ID fragen.
Reauth Via DevTools Paste
Wenn Reauth noetig ist, leite den Nutzer kurz an:
- 1.
app.deskbird.com im Browser oeffnen und normal per SSO einloggen. - DevTools (
Network) oeffnen. - Einen
api.deskbird.com Request anklicken. - Request-Header (
Authorization, optional Cookie, X-CSRF-Token, X-XSRF-Token) kopieren. - Header-Block in Telegram an den Bot senden.
Importiere den vom Nutzer gepasteten Block dann intern so:
CODEBLOCK1
Danach immer nochmals pruefen:
CODEBLOCK2
Fallback:
- - Nur wenn DevTools-Paste unmoeglich ist, manuelles
auth-capture anbieten.
Wenn Auth danach weiterhin ungueltig ist:
- - Keine Buchungen ausfuehren.
- Klar melden, dass ohne erfolgreiche Reauth abgebrochen wird.
Verhalten In Cron-Laeufen
Cron-Laeufe muessen fehlertolerant und vorsichtig sein:
- - Nie aggressive Retries oder enge Polling-Schleifen starten.
- Wenn Auth im Cron-Lauf nicht mehr gueltig ist, nicht blind weiterprobieren.
- Stattdessen eine Telegram-Nachricht senden mit klarer Handlungsaufforderung zur Reauth und den Lauf sauber beenden.
Cron-Session Erstellen/Aktualisieren
Nutze OpenClaw-Cron-Funktionen. Wenn Tooling verfuegbar ist, bevorzuge cron.add/cron.update; alternativ CLI:
CODEBLOCK3
Regeln:
- - Verwende lokale Zeit (Europe/Berlin) fuer den Standard.
- Lege pro Aufgabe genau eine Cron-Session an (keine Duplikate).
- Aktualisiere bestehende Sessions statt neue Kopien anzulegen.
Session-Prompt Bauen
Beim Erstellen des Cron-Prompts nutze die Vorlage aus references/cron-session-template.md und ersetze Platzhalter fuer Zone/Regeln.
Ausgabeformat Gegenueber Dem Nutzer
Bei jedem Lauf (manuell oder Cron) liefere kompakt:
- 1. Auth-Status (
ok oder reauth_noetig) - Was geprueft wurde (Datum/Zonen/Objekttypen)
- Wichtige Treffer (frei/belegt/gesperrt, wer belegt)
- Ob eine Buchung durchgefuehrt wurde oder warum nicht
Deskbird-Automator
使用此技能通过本地CLI(scripts/deskbird_tool.py)安全地操作Deskbird,并可选择作为定期Cron会话运行。
前提条件
- ./scripts/deskbird.sh auth-check
- ./scripts/deskbird.sh auth-refresh --format json
- ./scripts/deskbird.sh auth-import --stdin --format json
- ./scripts/deskbird.sh discovery
- ./scripts/deskbird.sh parking-status
- ./scripts/deskbird.sh parking-book-first
- 新上传时的设置:
- python3 -m venv .venv
- source .venv/bin/activate
- pip install -r requirements.txt
- python -m playwright install chromium
- chmod +x scripts/deskbird.sh
- - 保持安全模式激活(DESKBIRDSAFEMODE=true),不要发送请求风暴。
- 对于Telegram重新认证,默认仅使用DevTools粘贴 + auth-import。
- 不要在聊天中默认建议auth-pair-*和auth-capture。
确定性环境路径
- - 对于所有技能调用,使用包装器./scripts/deskbird.sh。
- 包装器自动设置--env-file /.env,从而防止因CWD导致的认证错误。
- 仅在有针对性的调试时,才可以将--env-file显式设置为其他文件。
推荐的持久认证(基于Broker)
- DESKBIRD
FIREBASEAPI_KEY
- DESKBIRD
FIREBASEREFRESH_TOKEN
- - 然后代理可以自动通过auth-refresh获取新的Bearer令牌,无需每次执行登录流程。
自动化前的必填对话
如果尚不存在合适的Cron会话,请按以下顺序询问用户:
- 1. 我是否应该为此创建一个定期Cron会话?
- 如果是:什么节奏?默认为每天00:30(欧洲/柏林时间),一次运行覆盖未来24小时。
- 每次运行会话具体应该做什么?
如果不明确,提供以下默认选项:
- 仅发送所有可预订对象的概览
- 概览 + 满足条件时自动预订停车位
- 仅监控,从不预订
- 4. 总结名称、节奏和会话任务,并获取最终确认。
如果用户未指定节奏,则使用默认值:每天00:30(欧洲/柏林时间)。
重新认证协议(始终在Deskbird调用之前)
在执行发现/状态/预订之前,始终先执行:
bash
./scripts/deskbird.sh auth-check --format json --min-valid-minutes 90
评估:
- - 如果requiresreauth=false:正常继续。
- 如果requiresreauth=true:
- 如果存在DESKBIRD
FIREBASEAPI
KEY和DESKBIRDFIREBASE
REFRESHTOKEN:
- 首先自动执行./scripts/deskbird.sh auth-refresh --format json --min-valid-minutes 90。
- 仅当此操作失败时,才要求用户手动重新认证。
- 如果没有Firebase刷新凭据:主动询问用户是否现在启动重新认证。
- - 手动重新认证的默认方式是从Chrome DevTools粘贴令牌/头部。
必填的办公室发现
- - 在每个详细查询(parking-status、parking-check、parking-book-first)之前,首先执行discovery。
- --office-id是可选的:CLI通过internalWorkspaces自动解析办公室。
- 仅当存在多个办公室且默认办公室不明确时:
- 首先使用--office-name <名称子字符串>,或
- 在技能.env中设置DESKBIRD
DEFAULTOFFICE_ID。
通过DevTools粘贴重新认证
如果需要重新认证,简要指导用户:
- 1. 在浏览器中打开app.deskbird.com并通过SSO正常登录。
- 打开DevTools(网络)。
- 点击一个api.deskbird.com的请求。
- 复制请求头部(Authorization,可选Cookie、X-CSRF-Token、X-XSRF-Token)。
- 将头部块发送到Telegram中的机器人。
然后在内部导入用户粘贴的块,如下所示:
bash
cat <
<粘贴的头部块或令牌>
EOF
之后始终再次检查:
bash
./scripts/deskbird.sh auth-check --format json --min-valid-minutes 90
备用方案:
- - 仅当DevTools粘贴不可行时,才提供手动auth-capture。
如果认证在此之后仍然无效:
- - 不执行任何预订。
- 明确报告,如果没有成功重新认证,将中止操作。
Cron运行中的行为
Cron运行必须容错且谨慎:
- - 绝不启动激进的重试或紧密的轮询循环。
- 如果Cron运行中认证不再有效,不要盲目继续尝试。
- 而是发送一条Telegram消息,明确要求重新认证,并干净地结束运行。
创建/更新Cron会话
使用OpenClaw-Cron功能。如果工具可用,优先使用cron.add/cron.update;或者使用CLI:
bash
openclaw cron add --name Deskbird每日 --schedule 30 0 * --prompt <会话提示> --announce
规则:
- - 使用本地时间(欧洲/柏林)作为默认值。
- 每个任务仅创建一个Cron会话(无重复)。
- 更新现有会话,而不是创建新的副本。
构建会话提示
创建Cron提示时,使用references/cron-session-template.md中的模板,并替换时区/规则的占位符。
面向用户的输出格式
每次运行(手动或Cron)时,提供简洁信息:
- 1. 认证状态(正常或需要重新认证)
- 检查的内容(日期/区域/对象类型)
- 重要结果(空闲/已占用/已锁定,谁占用了)
- 是否执行了预订,以及未执行的原因