下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-eahjeeb2--auto-ask.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-eahjeeb2/auto-ask。一条命令把同一个问题同时问 7 家 AI(豆包/元宝/DeepSeek/Kimi/智谱清言/文心一言/通义千问),按 conversation_id 统一取回并对照。
阅读全文 (展开查看完整说明)
概述
jianfei-ask
问 AI 平台的统一入口。纯路由,不做实现——每个平台的问+收能力在各自skill 里,本 skill 只知道它们在哪、怎么调。
支持哪些 AI(research 扇出 --region,2026-10-16)
| 范围 | 参数 | 包含平台 | 条件 |
|---|---|---|---|
| 默认 | --region cn | 豆包、元宝、DeepSeek、Kimi、智谱清言、文心一言、千问国内版(qianwen.com) | 普通网络即可 |
--targets auto(默认)在本区内挑 3 家;alive/all只在本区里探/问。- 显式
--targets db,gpt优先,忽略--region。multi/followup本来就按平台点名,不受影响。 - 平台分组以
scripts/platforms.py的REGIONS为唯一来源(测试保证两组正好覆盖全部平台)。
章节路由(细节已原文搬到 references)
| 章节 | 详见 |
|---|---|
| 平台本地停用(数据驱动,到期自动恢复) | [slim-01.md]($JIANFEI_SKILLS_DIR/jianfei-ask/references/slim-01.md) |
| 本机标识保护(默认启用) | [slim-03.md]($JIANFEI_SKILLS_DIR/jianfei-ask/references/slim-03.md) |
| 入口命令 | [slim-04.md]($JIANFEI_SKILLS_DIR/jianfei-ask/references/slim-04.md) |
技术路由预处理(显式 --dev-route) | [slim-05-dev-route.md]($JIANFEI_SKILLS_DIR/jianfei-ask/references/slim-05-dev-route.md) |
| 调研模式(research 扇出) | [slim-06-research.md]($JIANFEI_SKILLS_DIR/jianfei-ask/references/slim-06-research.md) |
| 网页故障恢复闭环 | [slim-10.md]($JIANFEI_SKILLS_DIR/jianfei-ask/references/slim-10.md) |
| 已知问题自愈注册表(platform_resilience) | [slim-11-platform-resilience.md]($JIANFEI_SKILLS_DIR/jianfei-ask/references/slim-11-platform-resilience.md) |
| doctor 探活(发问前先跑) | [slim-13-doctor.md]($JIANFEI_SKILLS_DIR/jianfei-ask/references/slim-13-doctor.md) |
| 协议约定 | [slim-14.md]($JIANFEI_SKILLS_DIR/jianfei-ask/references/slim-14.md) |
触发词 → 动作映射
| 用户说 | 动作 |
|---|---|
| 「用剑飞提问/问答 skill 去调研 X」「让几家 AI 一起答 X」「交叉验证 X」 | research(多平台扇出) |
| 「问豆包/问元宝/问 Kimi X」 | ask --target <平台> |
| 「再看一下那个回答」「取回刚才的答案」 | retrieve --target <平台> --conversation-id <id> |
| 「接着追问刚才那个」「同一个任务继续问」 | ask --target <平台> --conversation-id <id> --prompt "追问"(同会话续问,仅 continue 平台) |
| 「同时问这几个问题/并行发起几个任务」 | multi --tasks '{"平台": ["问A","问B"], …}'(dict/list 入参,三 lane 并发,无需 batch) |
| 「上一轮调研结果里,接着追问那几家」 | followup --from <run 目录或 result.json> [--targets 平台] --prompt "追问"(自动取 conversation_id 同会话续问+聚合) |
| 「现在哪些能用」「发问前先看看谁在线」 | doctor |
带图提问 --image(2026-10-19)
ask / research 加 --image /abs/a.jpg(可重复,jpg/png/webp,≤9 张;多图一次数组上传)。只对实测能稳定收图的平台开放(platforms.py 的 IMAGE_UI);其余返回images_unsupported(原因见 IMAGE_UNSUPPORTED_REASON)并跳过,绝不退化成只发文字。
| 平台 | 收图 | 说明 |
|---|---|---|
| kimi / deepseek / chatglm / yiyan | ✅ | ego 里驱动网页自己的输入框(scripts/image_ask.py) |
| yuanbao | ✅ | 走元宝网页版(ego,同 jianfei-pc-yuanbao 的 web 通道),不碰桌面 app |
| doubao | ❌ | 本次 CDP :9223 未开(不重启用户实例),无法实测;该 skill 也标 pending_reverse |
- 流程:一次性 ego task space 打开新会话 →
setInputFiles(或拦截临时 input 再设值)→ 等缩略图
全部就绪 → 写入提示词 → 发送 → 从 URL 拿 conversation_id → 等页面停止变化 → 读 DOM 回答 → 关空间。
- 回答读页面 DOM(渲染文本,
**/列表符号会变成纯文本),不读 cookie/token;
页面没读到时可加 --retrieve-fallback 改走平台 skill 的 retrieve。
- 图片先复制成
image1.jpg…(0700 临时目录、能去元数据就去)再上传,原文件名/路径不外发;
提示词照常过本机标识保护,发送前过本地发送闸;带图不自动重发(避免重复上传)。
research --image全部走同一条串行 ego lane(不并行开 ego 进程)。- 多家评审统一入口:
jianfei-chatcut/scripts/ai_judges.py --images ... --prompt-file P.md --out DIR
(逐家串行、每家总超时、写 DIR/result.json + DIR/<平台>.md)。
长问题 / 空答修复(2026-10-05)
- 唯一调用链:
ask.py→platforms.py注册表 → 各平台脚本(web 系共享 ego 驱动jianfei-visual/scripts/ego_web_task.py;deepseek=deepseek_ask.py)。没有第二条路由。 - deepseek:SSE
BATCH子操作路径按父路径补全(搜索片段的status=FINISHED不再被当成整轮结束),
非正文路径的字符串(如 conversation_mode=SEARCH)不再写进答案。
- 质量门:复杂问题(≥40 字)的回答 <20 字判
near_empty_answer→ failed,不再报 success。 - 路由质量门对「回答=问题回显」判
prompt_echo→ failed(各家通用)。
账号切换与历史会话恢复
所有平台的登录账号都视为易变运行态,不得假设当前账号永久等于创建历史conversation_id 的账号。conversation_id 用于定位会话,但不代表当前登录态一定有权读取或继续该会话。
- 新的
ask一律使用执行通道当前已登录的账号,不要求维护账号名称或身份档案。 - 历史
retrieve/continue若在有界检查后返回未登录、无权限、未找到或空会话,允许判为
account_changed_or_session_unavailable;先使用已有 snapshot 或平台本地缓存,禁止围绕旧 ID无限重试,也不默认要求用户切回旧账号。
- 如果旧结果仍是当前任务所必需、原问题及必要上下文仍可获得,则直接在当前账号重新
ask,
返回新的 conversation_id,并明确这是重新生成的结果,不能冒充旧回答的原文恢复。
- 如果原问题已不可获得,或任务要求延续旧会话中未保存的上下文,则如实报告无法续接,不能
猜测或拼接旧上下文。
- 本规则只处理历史会话因账号变化而不可达的情况;当前仍在生成的
pending、瞬时错误和额度
问题继续遵守上一节的有界轮询、重试和授权要求,不借账号切换之名重复发问。
返回格式
统一 JSON,至少含:
{
"ok": true,
"platform": "doubao",
"skill": "jianfei-pc-doubao",
"conversation_id": "...",
"answer": "...",
"retrieve_cmd": "python3 ... answer <id> --json --full"
}retrieve_cmd 告诉调用方"下次要再看这个回答,跑这条命令"。不复制数据。
已接入平台
| 平台 | 别名 | Skill | 前置条件(ask.py list 取) |
|---|---|---|---|
| doubao | db | jianfei-pc-doubao | 豆包桌面 app 已运行, CDP 9223 可达 |
| yuanbao | yb | jianfei-pc-yuanbao | 元宝桌面 app 已运行且已登录 |
| deepseek | ds | jianfei-web-deepseek | ego-browser 已运行, chat.deepseek.com 已登录 |
| kimi | km | jianfei-web-kimi | ego-browser 已运行, www.kimi.com 已登录 |
| chatglm | glm | jianfei-web-chatglm | ego-browser 已运行, chatglm.cn 已登录 |
| yiyan | yy/wenxin | jianfei-web-yiyan | ego-browser 已运行, wenxin.baidu.com 已登录 |
| claude | cl | jianfei-web-claude | 未注册进 platforms.py(ask --target claude 不可用);需要时直接调 jianfei-web-claude/scripts/claude_ask.py。ego-browser 已运行, claude.ai 已登录 |
| qianwen | tongyi/qwcn/千问/通义 | jianfei-web-qianwen | 千问国内版 www.qianwen.com;ego-browser 已运行且已登录阿里账号(未登录报 login_required);一次性空间用完即关 |
详细命令参见各平台 skill 的 SKILL.md,或运行 python3 ask.py list。
驱动网站的 task space 生命周期(铁律:谁打开谁关)
走 ego-browser 驱动网站的平台适配器(deepseek/kimi/智谱 等 web 系),每次调用开的 ego task space 有始有终——谁打开的就由谁关闭。
关闭判定两条,满足其一即关:
- 确定性地拿到了任务结果;
- 事情已经做完(含超时/失败导致的放弃——放弃也算做完)。
按 ask/retrieve 的异步节奏拆开算:
- ask 步:拿到 conversation_id(发问已确认送达)→ 本步结果已确定 → 关。
平台在服务端继续生成,不需要页面留着。
- retrieve 步:取回答案文本 → 关。没取到(还在生成)→ 本步以"确认未就绪"
为结果 → 也关,等下次 retrieve 再开。
- 逻辑任务的存续靠 conversation_id,不靠开着的 task space。
关闭不丢网站状态:重新打开/刷新,会话还在。
- 空间保持打开的唯一正当理由:本次调用还在进行中(页面加载、等 DOM 水合)。
- 只关自己开的空间;清扫残留走 jianfei-egolite 唯一正门
ego_taskspace_sweep.py(只列不关 + 点名 close),禁止按前缀盲关。
- 热会话多步任务按 jianfei-egolite 规范:
useOrCreateTaskSpace全程不中途关,
收尾正常关,别强杀驱动 CLI(会孤儿化渲染进程)。
添加新平台
- 在新平台的 skill 里实现 ask + retrieve
- 在
scripts/platforms.py的PLATFORMSdict 里加一条注册(平台注册表已从ask.py
拆出,是唯一真源);短名进同文件 ALIASES
- 更新本文件的"已接入平台"表
- 若走 ego 驱动网站,实现须遵守上面的 task space 生命周期铁律
代码扩展地图(后面加东西看这张表就知道改哪,
ask.py文件头也有同款):加平台→
platforms.py;加提示词阶段→ask.py的_compile_*/_augment_*;加探活→
doctor.py的PROBES/_EGO_CHANNELS+_probe_*(probe_platform也在 doctor.py);加子命令→ask.py的cmd_* + main()。路由是纯数据驱动,读
PLATFORMS即可,不为单个平台写死分支。
设计原则
- 能力在各自 skill,入口在这里——本 skill 是便利门,不是必经之路
- 不复制数据——回答留在平台原地,只提供 retrieve 命令
- 跨 harness——任何能跑 shell 命令的 harness 都能用