ZeeLin Deep Research 深度研究
ZeeLin Deep Research 深度研究是一款 AI 驱动的专业研究辅助平台,支持一句话生成与多步骤生成,提供深度、专家两大研究路径。从快速信息梳理、系统分析到超万字专家报告全流程覆盖,依托多轮推理与多源数据整合,高效完成企业分析、市场洞察、招商研究等复杂任务,一站式提升研究效率与决策质量。
没有 API Key 怎么办?
如果用户没有提供 api_key,提示用户前往 https://desearch.zeelin.cn/skill-activity 进行免费注册或登录,获取点数及 api_key
API 基础信息
- Base URL:
https://desearch.zeelin.cn - 认证方式: Header
x-api-key - 接口:
POST /api/conversation/anew
thinking 参数
deep- 深度思考模式 - 需要全面分析但不需要万字报告major- 专家模式 - 需要深度系统性输出、万字报告
模式选择指南
使用深度模式 (deep) 的场景:
- 概念解释/知识梳理 — "什么是 XXX"、"XXX 的原理是什么"
- 事件/趋势分析 — 某个热点事件的来龙去脉、发展趋势
- 信息聚合 — 围绕某个话题汇总多方信息和观点
- 快速调研 — 用户没有明确要求深度报告的一般性研究问题
使用专家模式 (major) 的场景:
- 行业/市场分析 — 涉及特定行业的全景分析、市场格局、竞争态势
- 企业/公司研究 — 某个企业的财务分析、战略评估、业务拆解
- 政策/法规研究 — 需要系统梳理政策影响、合规要求
- 技术/产品深度对比 — 多维度的技术路线对比、产品竞品分析
- 投资/商业决策 — 需要数据支撑的投资分析、可行性评估
如果不确定使用哪种模式:可以询问用户确认
使用示例
深度思考模式
API_KEY="${DESEARCH_API_KEY}"
curl -s -X POST "https://desearch.zeelin.cn/api/conversation/anew" \
-H "Content-Type: application/json" \
-H "x-api-key: ${API_KEY}" \
-d '{
"sessionId": "",
"content": "你的问题",
"thinking": "deep",
"workflow": "",
"needEditChapter": 0,
"moreSettings": {}
}'
专家模式
API_KEY="${DESEARCH_API_KEY}"
curl -s -X POST "https://desearch.zeelin.cn/api/conversation/anew" \
-H "Content-Type: application/json" \
-H "x-api-key: ${API_KEY}" \
-d '{
"sessionId": "",
"content": "你的问题",
"thinking": "major",
"workflow": "",
"needEditChapter": 0,
"moreSettings": {}
}'
多轮对话
第一轮返回的 sessionId 可以用于后续对话:
API_KEY="${DESEARCH_API_KEY}"
curl -s -X POST "https://desearch.zeelin.cn/api/conversation/anew" \
-H "Content-Type: application/json" \
-H "x-api-key: ${API_KEY}" \
-d '{
"sessionId": "上一轮的sessionId",
"content": "追问内容",
"thinking": "deep",
"workflow": "",
"moreSettings": {}
}'
快速调用
用户 API key 从环境变量 DESEARCH_API_KEY 读取。
设置方式:
export DESEARCH_API_KEY="你的API Key"
深度模式调用示例
API_KEY="${DESEARCH_API_KEY}"
curl -s -X POST "https://desearch.zeelin.cn/api/conversation/anew" \
-H "Content-Type: application/json" \
-H "x-api-key: ${API_KEY}" \
-d '{
"sessionId": "",
"content": "调研一下汽车产业规模",
"thinking": "deep",
"workflow": "",
"moreSettings": {}
}'
注意事项
sessionId为空时创建新对话thinking参数决定推理深度- API 返回 JSON,包含回答内容
查询任务状态
任务提交后,需要轮询查询状态:
API_KEY="${DESEARCH_API_KEY}"
curl -s -X GET "https://desearch.zeelin.cn/api/conversation/status?sessionId={sessionId}" \
-H "x-api-key: ${API_KEY}"
返回示例:
{
"code": 200,
"v": "v1.5.0",
"msg": "成功",
"data": {
"status": 2,
"thinking": "deep",
"workflow": "",
"message": "会话已生成",
"content": "调研一下汽车产业规模",
"time": "",
"thinkingWorkflowName": "深度模式",
"pptUrl": "",
"wavUrl": "",
"mdxUrl": "",
"mdUrl": "",
"htmlUrl": "",
"wavScriptUrl": "",
"isShare": 0,
"isMine": 0,
"title": "调研一下汽车产业规模",
"short": "jVICQSS5",
"questionId": 281697,
"sessionId": "b9162dfdefa74461a764aebe51366d87",
"useKnowledge": 0,
"onlyKnowledge": 0,
"searchRange": "web"
}
}
状态码说明:
1= 进行中2= 正常结束 ✅3= 用户主动结束4= 失败5= 排队中
完整任务流程
- 创建任务 → POST
/api/conversation/anew获取sessionId - 轮询状态 → 每隔一段时间调用
/api/conversation/status?sessionId={id}检查状态 - 状态 = 2 → 任务完成
- 获取 PDF 报告 → 调用
/api/conversation/to_report?sessionId={id}&reportType=pdf获取 PDF 下载链接 - 下载 PDF → 从 data 字段获取 URL,下载 PDF 文件到本地
- 发送消息 → 使用
message工具发送 PDF 文件到用户
错误处理
接口调用超限错误 (code=315)
当 API 返回 code=315 且 msg 包含"当前接口调用已超限"时,表示当前并发任务数已达到上限(max_limit_conversation),需要等待当前任务执行完成后再提交新任务:
# 检查返回码
RESULT=$(curl -s -X POST "https://desearch.zeelin.cn/api/conversation/anew" \
-H "Content-Type: application/json" \
-H "x-api-key: ${API_KEY}" \
-d '{
"sessionId": "",
"content": "你的问题",
"thinking": "deep",
"workflow": "",
"needEditChapter": 0,
"moreSettings": {}
}')
CODE=$(echo $RESULT | jq -r '.code')
MSG=$(echo $RESULT | jq -r '.msg')
if [ "$CODE" = "315" ] && echo "$MSG" | grep -q "当前接口调用已超限"; then
# 发送提示给用户,等待当前任务完成
message action=send target=用户ID message="⚠️ 当前接口调用已超限,请等待当前任务执行完成后再提交新任务。"
exit 1
fi
返回示例:
{
"code": 315,
"v": "0.0.914",
"msg": "当前接口调用已超限,请联系我们",
"data": {
"max_limit_conversation": 1,
"now_conversation": 1
}
}
试用超限错误 (code=315)
当 API 返回 code=315 且 msg 包含"试用已超限"时,需要引导用户充值:
# 检查返回码
RESULT=$(curl -s -X POST "https://desearch.zeelin.cn/api/conversation/anew" \
-H "Content-Type: application/json" \
-H "x-api-key: ${API_KEY}" \
-d '{
"sessionId": "",
"content": "你的问题",
"thinking": "deep",
"workflow": "",
"needEditChapter": 0,
"moreSettings": {}
}')
CODE=$(echo $RESULT | jq -r '.code')
MSG=$(echo $RESULT | jq -r '.msg')
if [ "$CODE" = "315" ] && echo "$MSG" | grep -q "试用已超限"; then
# 发送充值提示给用户
message action=send target=用户ID message="⚠️ 您的点数已超限,无法继续使用。请前往充值页面购买点数:https://desearch.zeelin.cn/skill-activity"
exit 1
fi
充值地址: https://desearch.zeelin.cn/skill-activity
完整流程示例
# 1. 创建任务
API_KEY="${DESEARCH_API_KEY}"
RESULT=$(curl -s -X POST "https://desearch.zeelin.cn/api/conversation/anew" \
-H "Content-Type: application/json" \
-H "x-api-key: ${API_KEY}" \
-d '{
"sessionId": "",
"content": "你的问题",
"thinking": "deep",
"workflow": "",
"needEditChapter": 0,
"moreSettings": {}
}')
SESSION_ID=$(echo $RESULT | jq -r '.data.sessionId')
QUESTION_ID=$(echo $RESULT | jq -r '.data.id')
echo "Session ID: $SESSION_ID, Question ID: $QUESTION_ID"
# 2. 轮询状态直到完成
while true; do
STATUS=$(curl -s -X GET "https://desearch.zeelin.cn/api/conversation/status?sessionId=${SESSION_ID}" \
-H "x-api-key: ${API_KEY}" | jq -r '.data.status')
if [ "$STATUS" = "2" ]; then
echo "任务完成"
break
fi
echo "状态: $STATUS, 等待中..."
sleep 60 # 每分钟检查一次
done
# 3. 获取 PDF 报告链接
REPORT_RESULT=$(curl -s -X GET "https://desearch.zeelin.cn/api/conversation/to_report?sessionId=${SESSION_ID}&reportType=pdf" \
-H "x-api-key: ${API_KEY}")
PDF_URL=$(echo $REPORT_RESULT | jq -r '.data')
echo "PDF URL: $PDF_URL"
# 4. 下载 PDF 文件
curl -s -o /tmp/research_result.pdf "$PDF_URL"
# 5. 发送 PDF 文件给用户
message action=send target=用户ID filePath=/tmp/research_result.pdf
实际调用命令(执行时替换对应变量)
# 1. 创建任务
API_KEY="${DESEARCH_API_KEY}"
curl -s -X POST "https://desearch.zeelin.cn/api/conversation/anew" \
-H "Content-Type: application/json" \
-H "x-api-key: ${API_KEY}" \
-d '{
"sessionId": "",
"content": "你的问题",
"thinking": "deep",
"workflow": "",
"needEditChapter": 0,
"moreSettings": {}
}'
轮询状态脚本
# 轮询直到任务完成 (status = 2)
API_KEY="${DESEARCH_API_KEY}"
SESSION_ID="替换为实际的sessionId"
while true; do
STATUS_RESPONSE=$(curl -s -X GET "https://desearch.zeelin.cn/api/conversation/status?sessionId=${SESSION_ID}" \
-H "x-api-key: ${API_KEY}")
STATUS=$(echo $STATUS_RESPONSE | jq -r '.data.status')
echo "当前状态: $STATUS"
if [ "$STATUS" = "2" ]; then
echo "任务完成!"
break
fi
sleep 60 # 每分钟检查一次
done
# 获取 PDF 报告链接
REPORT_RESULT=$(curl -s -X GET "https://desearch.zeelin.cn/api/conversation/to_report?sessionId=${SESSION_ID}&reportType=pdf" \
-H "x-api-key: ${API_KEY}")
PDF_URL=$(echo $REPORT_RESULT | jq -r '.data')
# 下载 PDF 文件
curl -s -o /tmp/research_result.pdf "$PDF_URL"
# 发送 PDF 文件给用户
message action=send target=用户ID filePath=/tmp/research_result.pdf
⚠️ 重要:必须保存文件再发送
❌ 禁止直接发送文字内容给用户 ✅ 必须:获取 PDF 链接 → 下载 PDF 文件 → 发送 PDF 文件给用户
正确流程示例(飞书文档)
# 1. 创建任务
API_KEY="${DESEARCH_API_KEY}"
RESULT=$(curl -s -X POST "https://desearch.zeelin.cn/api/conversation/anew" \
-H "Content-Type: application/json" \
-H "x-api-key: ${API_KEY}" \
-d '{
"sessionId": "",
"content": "用户的问题",
"thinking": "deep",
"workflow": "",
"needEditChapter": 0,
"moreSettings": {}
}')
SESSION_ID=$(echo $RESULT | jq -r '.data.sessionId')
# 2. 轮询状态直到完成 (status=2)
while true; do
STATUS=$(curl -s "https://desearch.zeelin.cn/api/conversation/status?sessionId=${SESSION_ID}" \
-H "x-api-key: ${API_KEY}" | jq -r '.data.status')
[ "$STATUS" = "2" ] && break
sleep 30
done
# 3. 获取 PDF 报告链接
REPORT_RESULT=$(curl -s -X GET "https://desearch.zeelin.cn/api/conversation/to_report?sessionId=${SESSION_ID}&reportType=pdf" \
-H "x-api-key: ${API_KEY}")
PDF_URL=$(echo $REPORT_RESULT | jq -r '.data')
# 4. 下载 PDF 文件
curl -s -o /tmp/research_result.pdf "$PDF_URL"
# 5. 发送 PDF 文件给用户
message action=send target=用户ID filePath=/tmp/research_result.pdf
关键点
- 任务完成后调用
/api/conversation/to_report?sessionId={id}&reportType=pdf获取 PDF 下载链接 - 从返回的
data字段提取 PDF URL - 使用 curl 下载 PDF 文件到本地
- 直接发送 PDF 文件给用户
后台执行与自动发送
确保任务完成后自动发送 PDF 的关键:
- 使用足够长的 timeout:设置
timeout=1200或更长,确保 exec 命令等待任务完成 - 轮询循环内检查状态:
while true; do STATUS=$(curl -s "https://desearch.zeelin.cn/api/conversation/status?sessionId=${SESSION_ID}" \ -H "x-api-key: ${API_KEY}" | jq -r '.data.status') [ "$STATUS" = "2" ] && break # 任务完成后跳出循环 [ "$STATUS" = "4" ] && exit 1 # 任务失败则退出 sleep 30 done - 任务完成后立即发送:在轮询循环结束后,立即调用 message 工具发送 PDF
# 下载 PDF 后立即发送 curl -s -o /tmp/research_result.pdf "$PDF_URL" message action=send target=用户ID filePath=/tmp/research_result.pdf
❌ 错误做法:轮询后不等待结果就退出,或超时时间太短导致任务未完成就退出
✅ 正确做法:使用 while 循环 + 足够长的 timeout,任务完成后立即发送 PDF
后台执行(用户可同时做其他事情)
当用户希望任务在后台运行、同时可以让你执行其他任务时,使用 OpenClaw 的后台执行功能:
方式一:使用 background=true 参数
exec command="..." background=true timeout=1200
这样命令会在后台运行,不会阻塞当前会话,你可以继续给其他命令。
方式二:使用 exec + yieldMs 参数
exec command="..." yieldMs=10000
设置 yieldMs 让出控制权,命令在后台继续运行。
方式三:使用 process 工具管理后台任务
-
先启动后台任务:
exec command="完整的轮询+发送脚本" timeout=1200 -
使用
process(action=poll)轮询结果:process action=poll sessionId=<session_id> timeout=600000
后台任务完整示例:
# 1. 创建任务(立即返回)
API_KEY="${DESEARCH_API_KEY}"
RESULT=$(curl -s -X POST "https://desearch.zeelin.cn/api/conversation/anew" \
-H "Content-Type: application/json" \
-H "x-api-key: ${API_KEY}" \
-d '{
"sessionId": "",
"content": "用户的研究问题",
"thinking": "deep",
"workflow": "",
"needEditChapter": 0,
"moreSettings": {}
}')
SESSION_ID=$(echo "$RESULT" | jq -r '.data.sessionId')
echo "任务已创建: $SESSION_ID"
# 2. 后台轮询 + 下载 + 发送(设置长timeout)
exec command="
SESSION_ID='$SESSION_ID'
API_KEY='$API_KEY'
# 轮询直到完成
while true; do
STATUS=\$(curl -s 'https://desearch.zeelin.cn/api/conversation/status?sessionId=\${SESSION_ID}' \\
-H 'x-api-key: \${API_KEY}' | jq -r '.data.status')
[ \"\$STATUS\" = \"2\" ] && break
[ \"\$STATUS\" = \"4\" ] && exit 1
sleep 30
done
# 获取并下载PDF
PDF_URL=\$(curl -s 'https://desearch.zeelin.cn/api/conversation/to_report?sessionId=\${SESSION_ID}&reportType=pdf' \\
-H 'x-api-key: \${API_KEY}' | jq -r '.data')
curl -s -o /tmp/report.pdf \"\$PDF_URL\"
# 发送PDF(替换为目标用户ID)
message action=send target=用户ID filePath=/tmp/report.pdf
" timeout=1200
用户可以:
- 随时查询任务状态
- 在后台任务运行期间执行其他命令
- 任务完成后自动收到 PDF
⚠️ 跨渠道发送文件注意事项
不同渠道的文件限制
| 渠道 | 文件大小限制 |
|---|---|
| 钉钉 | 20MB |
| 飞书 | 20MB |
| Telegram | 50MB |
| Discord | 8MB |
| 16MB |
⚠️ 飞书渠道:必须创建飞书文档发送
当用户渠道为飞书时,禁止直接发送 PDF 文件给用户,必须按以下流程操作:
飞书渠道完整流程
# 1. 创建任务
API_KEY="${DESEARCH_API_KEY}"
RESULT=$(curl -s -X POST "https://desearch.zeelin.cn/api/conversation/anew" \
-H "Content-Type: application/json" \
-H "x-api-key: ${API_KEY}" \
-d '{
"sessionId": "",
"content": "用户的问题",
"thinking": "deep",
"workflow": "",
"needEditChapter": 0,
"moreSettings": {}
}')
SESSION_ID=$(echo $RESULT | jq -r '.data.sessionId')
TITLE=$(echo $RESULT | jq -r '.data.title')
# 2. 轮询状态直到完成 (status=2)
while true; do
STATUS=$(curl -s "https://desearch.zeelin.cn/api/conversation/status?sessionId=${SESSION_ID}" \
-H "x-api-key: ${API_KEY}" | jq -r '.data.status')
[ "$STATUS" = "2" ] && break
sleep 30
done
# 3. 获取 Word 报告链接(Word 格式更容易提取文字内容)
REPORT_RESULT=$(curl -s -X GET "https://desearch.zeelin.cn/api/conversation/to_report?sessionId=${SESSION_ID}&reportType=word" \
-H "x-api-key: ${API_KEY}")
WORD_URL=$(echo $REPORT_RESULT | jq -r '.data')
# 4. 下载 Word 文件
curl -s -o /tmp/research.docx "$WORD_URL"
# 5. 解压 Word 文件提取文字内容
unzip -q /tmp/research.docx -d /tmp/research_docx/
sed 's/<[^>]*>//g' /tmp/research_docx/word/document.xml | tr -s ' \n' > /tmp/research.txt
# 6. 创建飞书文档
DOC_RESULT=$(feishu_doc action=create title="调研报告:${TITLE}")
DOC_TOKEN=$(echo $DOC_RESULT | jq -r '.document_id')
DOC_URL=$(echo $DOC_RESULT | jq -r '.url')
# 7. 写入内容到飞书文档
feishu_doc action=write doc_token=${DOC_TOKEN} content=$(cat /tmp/research.txt)
# 8. 发送文档链接给用户
message action=send target=用户ID message="📄 调研报告已生成:${DOC_URL}"
飞书渠道检查清单
- 渠道是飞书吗?
- 是否已创建飞书文档?
- 是否已将报告内容写入飞书文档?
- 是否发送的是飞书文档链接而非 PDF?
飞书渠道 ❌ 禁止事项
- ❌ 直接发送 PDF 文件(用户打不开)
- ❌ 直接发送本地文件路径
- ❌ 发送服务器目录
飞书渠道 ✅ 正确做法
- ✅ 创建飞书文档 (feishu_doc action=create)
- ✅ 写入内容 (feishu_doc action=write)
- ✅ 发送文档链接 (message action=send 附带 URL)
确保发送成功的检查
# 检查文件是否存在且非空
if [ -f /tmp/research.md ] && [ -s /tmp/research.md ]; then
# 发送文件
message action=send target=用户ID filePath=/tmp/research.md
else
echo "文件无效或为空"
fi