Local E2E debug and test framework for clawd-feishu plugin development...
Local development testing using agent-browser CLI to interact with Feishu web app.
https://feishu.cn/next/messengeragent-browser CLI availableEvery time you modify extension code, you MUST restart OpenClaw Gateway for changes to take effect.
# Restart gateway (required after code changes)
openclaw gateway restart
# Check if gateway is running
ps aux | grep openclaw
# View gateway logs
tail -f ~/.openclaw/logs/gateway.log
Always use --headed mode so user can see the browser and help with login:
agent-browser --headed --session feishu-test open "https://feishu.cn/next/messenger"
Feishu web has complex UI that makes direct clicking unreliable. Use these strategies:
Clicking on chat list items often misses or selects wrong item. Use global search:
# Open search
agent-browser --session feishu-test press "Meta+k"
# Type bot name letter by letter
agent-browser --session feishu-test press "o"
agent-browser --session feishu-test press "p"
agent-browser --session feishu-test press "e"
agent-browser --session feishu-test press "n"
# Select first result
agent-browser --session feishu-test press "Enter"
After entering a chat, press "/" to focus the message input:
agent-browser --session feishu-test press "/"
agent-browser --session feishu-test press "Backspace" # Remove the "/"
# Then type your message
The type command often fails with special characters. Use press for each character:
# Instead of: agent-browser type "ping"
agent-browser --session feishu-test press "p"
agent-browser --session feishu-test press "i"
agent-browser --session feishu-test press "n"
agent-browser --session feishu-test press "g"
Chinese characters cannot be typed with press command. Use English only:
# BAD - Chinese won't render
for char in $(echo "θ―»εζζ‘£" | grep -o .); do
agent-browser --session feishu-test press "$char" # Will fail silently
done
# GOOD - Use English
for char in r e a d " " d o c; do
agent-browser --session feishu-test press "$char"
done
Spaces must be quoted as " ":
# Type "read doc"
for char in r e a d " " d o c; do
agent-browser --session feishu-test press "$char"
done
Use a for loop to type URLs or long text:
# Type a full URL
url="https://feishu.cn/docx/YOUR_DOC_TOKEN"
for char in $(echo "$url" | grep -o .); do
agent-browser --session feishu-test press "$char" 2>/dev/null || true
done
Do NOT use eval to set input values - it can break the page:
# BAD - will corrupt page
agent-browser eval "document.activeElement.innerText = 'text'"
# GOOD - use keyboard input
agent-browser press "t" && agent-browser press "e" ...
When testing document tools, send full URLs rather than just document IDs:
# Better - bot recognizes as document link
"https://feishu.cn/docx/YOUR_DOC_TOKEN"
# Less reliable - may not trigger tool
"read YOUR_DOC_TOKEN"
Monitor gateway logs to verify tool execution:
tail -f ~/.openclaw/logs/gateway.log
Key log entries:
[feishu] received message from ... - incoming message[feishu] dispatching to agent - sent to agent[feishu] added typing indicator reaction - bot is processing[feishu] deliver called: text=... - agent response[feishu] dispatch complete - response sentAsk bot explicitly to confirm tool usage:
use feishu_doc tool to read YOUR_DOC_TOKEN
Look for confirmation in response like:
"ζε·²η»η¨ Feishu Doc Tool θ―»θΏδΊθΏδΈͺζζ‘£"
Access denied. One of the following scopes is required: [contact:contact.base:readonly...]
This means bot lacks contact permission. Doesn't affect core messaging but prevents resolving sender names.
# Error logs
tail -f ~/.openclaw/logs/gateway.err.log
# All log files
ls -la ~/.openclaw/logs/
# Raw agent session records (tool calls, responses, etc.)
ls ~/.openclaw/agents/main/sessions/
# View specific session
cat ~/.openclaw/agents/main/sessions/<session-id>.json
agent-browser --headed --session feishu-test open "https://feishu.cn/next/messenger"Cmd+K β type bot name β Enter/ then BackspaceEnter to send# 1. Focus input
agent-browser --session feishu-test press "/" && \
agent-browser --session feishu-test press "Backspace"
# 2. Type full doc URL
url="https://feishu.cn/docx/YOUR_DOC_ID"
for char in $(echo "$url" | grep -o .); do
agent-browser --session feishu-test press "$char" 2>/dev/null || true
done
# 3. Send
agent-browser --session feishu-test press "Enter"
# 4. Wait and check logs
sleep 15 && tail -30 ~/.openclaw/logs/gateway.log