feat: 研究质量改进、谛听品牌与深空 Demo UI - #1
Conversation
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
kdush
left a comment
There was a problem hiding this comment.
我审查了当前提交 ded80ee,建议先修复以下问题,并处理页面列出的 6 个合并冲突后再合并:
-
Compose 升级迁移(阻塞):
compose.yaml把顶层项目名从openclaw-mirosearch改为diting。按现有部署文档直接执行docker compose up -d --build会创建另一组容器与新的diting_valkey-data卷;旧服务还在运行时会争用端口,停掉旧服务后新服务也读不到原有任务/缓存。请保留原项目名,或补充可验证的数据迁移、停机与回滚步骤。 -
并行抓取突破上限(阻塞):
orchestrator.py的并行工具调用在执行前没有预留抓取名额,_execute_regular_tool_call只读取已完成次数。我复现了“上限 8、已用 7、同轮并行抓取 2 次”时两次都执行。请在调度前原子分配剩余名额,并补并发回归测试。 -
深度研究提前结束条件:
_should_early_stop_clue_chase把不同域名数量当成“多源一致”。两个来源即使观点相反,只要完成两轮搜索也会触发,随后可能强制总结。请根据同一事实的证据一致性或明确的冲突状态决定是否提前结束。 -
searxng-only 置信度:该路由只允许 SearXNG,但
_evaluate_confidence用所有已配置且可用的 provider 数量计算最低覆盖数。同时配置商业源时,实际只用一路却要求两路,passed无法为真。请按本次路由允许的 provider 计算门槛,并补“只允许一路但环境中有多路凭据”的测试。
验证:代码编译通过;Compose 配置及上述三处逻辑均做了定向复现。完整 pytest 因隔离环境缺少 Playwright 依赖未运行。
…eload Move theme/JS out of main.py, split CSS by concern, add watchfiles dev_server and HOT static serving so UI iteration no longer needs full process restarts for CSS edits. Co-authored-by: Cursor <cursoragent@cursor.com>
Keep Compose project name openclaw-mirosearch with migration notes; atomically reserve scrape slots before parallel tool execution; require high-conf corroboration for deep early-stop; cap confidence provider coverage by the current route's allowed providers (searxng-only). Co-authored-by: Cursor <cursoragent@cursor.com>
Merge kdush/main bilingual documentation reorganization; keep Compose project-name migration notes, diting skill paths, and research-quality doc links while adopting the English/Chinese doc split. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Move tool/runtime labels into ui_i18n, drop unused scrape-budget helper and watchfiles entry, stub tencentcloud for tools tests, and catch up Chinese changelog plus Compose migration notes. Co-authored-by: Cursor <cursoragent@cursor.com>
|
复查当前提交 仍需修改提前结束研究的条件: 请根据同一事实的证据一致性或关键冲突的处理状态决定是否早停,并补充“两个高可信来源相互矛盾”的回归测试。此项完成前,我保留 Request changes。 |
停止后立刻点「开始研究」会没反应,根因是取消链路上三处相互放大的缺陷: 被取消的 run 事件仍卡在 finally 里等 pipeline 线程收尾(线程被一次同步 LLM/抓取调用整段占住,实测 74s),于是它继续占着 Gradio 的按事件并发位、 并把新任务的界面状态覆盖回旧任务;此时界面里的 task_id 可能已失效, 下一次停止就静默 no-op。 - stream_events_optimized:取消已请求时立即返回,不再等 pipeline 线程 - gradio_run 本地路径:取消后跳过终态帧,避免覆盖后续新任务 - stop_current_ui:task_id 不在活动表时回退到当前界面任务 - run/submit 事件加 trigger_mode="multiple",中间流式帧用 gr.skip() 跳过按钮
…n presence Two trusted domains appearing in search results no longer fire deep early-stop by themselves (reuters.com + apnews.com could contradict). A no-tool LLM adjudication must return VERDICT: AGREE before the gate opens; conflict/unknown fail closed and the Round 7 turn cap stays inactive. Conflicts are re-evaluated on new search rounds (max 3 checks per run), so a resolved contradiction restores early-stop. Adds regression tests for the contradicting-sources scenario.
…draft Roadmap gains the confirmed product positioning, Q4 topology enrichment item, and softened review status on deferred items. Adds the jev-search borrowing review draft (multi-source concurrency, engine routing, timeout budgeting) as evaluation input, not committed work.
|
复查 可复现场景:第 3 轮取得 建议的实现方案:
请补回归测试:① 先 |
|
补读
另外,路线图 §5 已指出 reasoning token 成本;与前一条早停修复建议对齐时,请保留每轮/每批最多一次、整次运行最多 3 次裁决,并把额外调用耗时与 token 纳入验收。 |
|
我按最新提交 de3d1ee 的两份文档(research-depth-roadmap 与 jev-search-borrowing)以及现有实现,把后续路线整理成可执行的顺序。总体方向同意:先把证据真实性、结论可核查性做好,再扩展多源和更重的智能能力。下面是建议你按小 PR 推进的完整方案;M1–M5 是后续路线,不要求塞进当前 PR。 0. 先收敛本 PR 与路线图事实
1. 先定义共同的数据契约,再动 UI(M1 的前置设计)把“检索命中”“可引用来源”“支持某结论的独立证据”分开。搜索 provider/引擎只是发现渠道;同一 URL 被多个引擎命中不增加独立支持数,同一报道被转载也不能简单按域名加一。建议在工具返回到 Orchestrator/报告层之间建立不依赖 LLM message_history 的来源注册表,至少保存稳定 source_id、原始/规范化 URL、原始发布方或域名、发现 provider、获取时间、模态、仅摘要/已抓正文/抓取失败状态、摘要或正文定位。历史压缩或 summary_keep_tool_result 丢掉旧工具 JSON 后,来源与引用映射仍须可用。 URL 规范化只用于去重与关联,规则要保守:可以处理 scheme/host 大小写、片段和明确的跟踪参数;不要直接照搬 jev-search 对整个路径转小写的做法,也不要删除可能区分内容的查询参数。给重定向、不同路径大小写、同文多 URL 各留 fixture。报告中仅允许引用注册表内、确实返回过的来源;搜索摘要可以被引用,但必须显式标“仅摘要”,不能伪装成读过全文。 2. 来源与引用闭环(M1 → M2,同时交付 Q2/Q3)先落 M1 的来源收集/去重/持久映射,再把 Gradio 中的 [N] 规则上移到核心报告生成与 API 输出;API 和 Demo 共用同一 source_id → [N] → URL 契约。References 至少展示标题、可读摘要、链接及“仅摘要/已核查全文”状态;搜索过程 Q3 展示实时返回摘要,但这些文本是外部不可信内容,渲染要转义,且未进入注册表的临时命中不可被报告引用。报告校验不能只数 [N] 或章节:要验证每个 [N] 存在、指向实际返回来源,且链接与状态一致;无法解析的引用应删除/降级标注,不造 URL。 本阶段验收:仅搜索命中、抓取成功/失败、相同 URL 多 provider 命中、重定向、无有效来源、历史压缩后引用旧来源;API 与 Demo 对同一运行展示相同编号/目标链接;恶意摘要不能注入 HTML。交付一份字段契约、单元/集成测试和一份可查看的真实报告。 3. 结论核验与拓扑(M3 → Q4)先产出结构化的“结论/关键主张 → source_id → 支持、反驳、未知 → 依据片段”映射,才计算独立支持数。计数单位应是能明确支持该主张的独立原始来源;provider 数、检索命中数、域名数都不能直接代替。转载/同一原文要合并,互相矛盾的可靠来源要在报告里显式保留。证据不足或无法判定独立性时写“未核实/来源不足”,不要让 prompt 猜一个精确 N。report_structure.py 可先承担可机械验证的结构检查;语义支持判断需要明确的裁决结果与失败回退,不要把结构门称作事实核验。 验收 fixture:同一 URL 被两引擎返回、跨域转载、两个来源支持同一主张、两个可信来源互相反驳、摘要与全文冲突、无依据结论。Q4 只能画已验证的结论—来源关系;未知/反驳边要有不同标记,不把“可点击”误呈现为“已证实”。 4. 可并行的小轨道
5. 延后项与统一完成标准P1 图片先只作弱/辅助证据,待图片检索凭据、VLM 成本及出处校验齐备后再试;D1 递归子代理必须先与简单的线索预算方案对比质量、延迟与 token,确认增益再上;D2 实体图谱、D3 高级多 provider 调优暂缓。建议的顺序是:本 PR 阻塞项与文档事实修正 → 基线/数据契约 → M1 → M2 + Q2/Q3 → M3 → Q4;Q1、M4、M5 按上述依赖并行做独立小 PR。 每个 PR 写清输入/输出契约、失败回退、对应 fixture 与可观察指标;跑相关自动测试和有凭据时的 run_acceptance_live.py --out-dir 复测。与基线比较无依据结论、错误引用、冲突处理、p50/p95 耗时、模型调用/token、检索/抓取量和实际供应商费用。先证明质量提升与成本边界,再确定默认开启和优化目标;不必在文档里预设未经实测的工期。 如果按这个顺序推进,下一步最有价值的是:先修本 PR 的旧 AGREE 问题,并把两份文档改成上述依赖关系与验收口径。之后从来源注册表和引用契约开第一条后续 PR。 |
Bind the agreement verdict to an evidence revision: successful searches, non-empty scrapes, and evidence-bearing sub-agent results bump evidence_revision, and a verdict on an older revision fails closed. On invalidation the orchestrator revokes the early-stop countdown and convergence nudge (appending an override message when the nudge already entered the history), then re-adjudicates the latest evidence before any follow-up-skip or force-summary decision. Keeps one adjudication per turn and 3 per run.
Rebuild the roadmap as v2 (data-contract stage before M1, unified completion standard, PR merge gate in section 0) and correct two jev-search facts: cacheKey concatenates the query text directly, and provider fallback is not a budget circuit breaker; the provider x domain counting proposal is voided in favor of independent original sources.
|
@rainwalkerhu 复查最新 8aa2b9c(0334af2 修复 + 路线图回填)后,旧 AGREE 的版本门、倒计时撤销与工具结果入主历史后的重裁决顺序基本对上了;但下面两处仍需修完再合并:
另外,路线图 v2 的状态和 §0 仍写“代码在工作区、未提交”,但 0334af2 已提交;请顺手改成当前状态。两笔提交的静态编译与 diff --check 通过;本地 pytest 依赖安装未完成,尚无可报告的测试结果。修复后我再复核并合并。 |
Parse scrape tool inner JSON so failures and empty bodies no longer bump evidence_revision or leak scrape reservations; neutralize the stale-AGREE revoke nudge so it does not presuppose conflict. Ignore .workbuddy-ai/. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
变更说明
基于本地研究质量改进分支整理并推送,向原仓库
kdush/OpenClaw-MiroSearch提交。主要内容:影响范围
验证方式
配置变更
build_images.sh默认镜像改为diting:latest、diting-api:latest;技能包路径改为skills/diting/;导出前缀默认diting-conclusion兼容性提示
openclaw-mirosearch技能需按新路径重装IMAGE_TAG_*