Commit Graph
48 Commits
Author SHA1 Message Date
admin d9abd0b86a feat(auth): 用户端鉴权(登录/授权清单/逐次校验/功能门禁 + owner 数据隔离) 2026-10-16 14:42:23 +08:00
admin 282415fcb1 feat(admin): 行为日志记录 hub_id(便于区分不同中枢) 2026-10-15 23:56:42 +08:00
admin 1ca2241a97 feat(admin): 增加中枢设置(自定义 ID 与名称,右上角设置入口) 2026-10-15 23:52:17 +08:00
admin c78df3a6a6 feat(admin): 新增管理后台(登录/用户管理/日志查看) + 行为日志文件采集(请求中间件 + log_event) 2026-10-15 18:43:19 +08:00
potaser 5a71e29cf7 feat(edu): complete 7-panel academic assistant + journals v4 dataset
Backend:
- review_service: presubmit / recommend / journals / journals/directory /
  format-check / conferences endpoints
- journals.json 5 精选种子 + journal_directory 1056 条全量(v4 数据)
- v4 数据集:2025 JIF(2026 JCR 发布)+ 2025 中科院分区 + 1053 条官网 URL
- format_check 行距 bug 修复(基线 y + 物理过滤 + docx EMU)

BFF:
- review_proxy 反代(修复 httpx build_request await bug)
- REVIEW_ENABLED 开关(默认关闭,零痕部署)

Frontend:
- 教育科研工作台(7 面板 + 菜单 + 状态管理)
- TopBar 教育科研入口(v-show 覆盖层语义,RAG 会话不丢)
- 期刊情报:Tab 切换 / 搜索 / 筛选 / 分页 / 官网列 / 展开凭证
- 智能推荐 / AI预审稿 / 专业报告 / 投稿台账 / 排版规范 / 会议日历
2026-10-10 16:05:08 +08:00
potaser d43d30ee3f feat: add review_service with plant genomics presubmit, journals endpoint, and BFF proxy 2026-10-09 16:54:03 +08:00
admin d37e0d9c3a fix(paper): 确认大纲后即时 seed 进度卡并逐节刷新
- 后端写稿循环不再落空 paper_progress 块(重载后出现空卡),改落开始撰写文本
- 前端 confirmPaper 时用大纲节标题本地 seed 进度卡,2s 轮询 patch 逐节状态
- 当前节按 current_section_id 标 writing(…动画)
2026-10-08 17:10:50 +08:00
admin c923419d2d fix(paper): 大纲阶段修改意见路由回 sendPaper + 用原始 brief 重新生成大纲 2026-10-08 16:23:28 +08:00
admin 43a7c6c132 feat(paper): UI 优化(卡片文字颜色/去模式按钮) + 模板下拉加论文选项并接线渲染 2026-10-08 15:17:44 +08:00
admin 8b228923bd fix(paper): 取消路径(cancel_paper) + 引用元数据清洗(丢弃杜撰 DOI/PMID) 2026-10-08 14:59:16 +08:00
admin 2e5372cf90 fix(paper): 论文产物渲染为 HTML + 文末追加参考文献列表/disclaimer 2026-10-08 14:54:00 +08:00
admin 91f6a1c242 feat: 新增论文撰写功能 paper-writer(独立 MCP 服务 + BFF 大脑 + 前端三卡)
- paper_writer_service(8097):FastAPI + MCP streamable-http 单端点,9 工具
  (propose_paper_outline/write_paper_section/get_paper_progress/search_refs/
  revise_paper_section/revise_paper/get_paper/complete_paper/cancel_paper),
  SQLite 三表(papers/paper_sections/citations,WAL),GB/T 7714 引用协议
- BFF:services/paper/{mcp_client,agent}.py(裸 JSON-RPC 客户端 + 规则状态机)、
  routers/paper.py、schemas.py 4 个 Paper*Block + ArtifactBlock 加 paper_id/citation_count、
  config.py 开关、main.py 条件注册、docgen.py 抽 insert_artifact 公共 helper
- 前端:intent.js paperIntent 纯函数、Composer docgen 分支 sub-route、sendPaper/轮询、
  PaperBriefCard/PaperOutlineCard/PaperProgressCard、DocPane cite-chip
- deploy/paper_restart.sh + toggle_paper.sh;compile_sdk.sh 白名单追加 paper 文件
- tests/paper 26 条(工具逻辑 + MCP 协议 + BFF 状态机 + 块 schema + 前端 intent 单测)
2026-09-30 22:29:22 +08:00
admin 0282cfeeeb feat(bioflow): 阶段进度条+滚动日志+点击定位全链;图片注入三修;QA启动就绪等待
- 生信进度:后端新增 stage_progress 事件帧+进度解析白名单(rnaseq_qc/sample_qc),
  kernel 日志流式落盘(20行/1s flush+fsync),logs 分页端点(offset/limit/eof),
  事件 seq 跨重启扫描续增(2026-09-17 断流修复);前端 FlowProgressCard 确定性/
  不确定两态进度条+点击定位到生信任务 TAB,BioJobsPane DAG 行展开滚动日志区
  (3s 轮询),log_tail 4000 截断,重跑 stage_started 清零进度
- 图片注入:figures 三源重构(标准DOI图库主路径/遗留体系兜底/PMC兜底),
  [[FIG:]] 宽松归一化识别 PMC/PMID/DOI 三种形态,引文兜底扩展至
  [PMCID:]/[DOI:] 且标记未满配额继续注入,注入预算 90s/10篇(175 实测校准),
  PMC graphic 无 content-type 宽松正则,空结果不缓存(176 冷连接三连败修复)
- QA 启动自愈:start.sh 启动前等 Qdrant readyz(30min)+Neo4j TCP(10min);
  backend_guard 标签校验改子集判定
- 样本配对:同 inode 去重优先真实文件,R1/R2 归一配对一对一认领
- gitignore 新增 *.bak-*/*.before-*/bioflow_service/bioflow.db

测试:bioflow_service pytest 358/358,前端 bioflow vitest 205/205
2026-09-24 16:48:52 +08:00
adminandClaude Fable 5 0f6e16ce79 fix(sdk): run.sh 读取 PORT/PYTHON/BIND 移到 source .env 之后
- 此前 BIND 在 source 前读取,.env 的 BFF_BIND_HOST 覆盖失效,
  175 开发形态绑到 127.0.0.1 导致内网 IP 无法访问

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-17 14:47:38 +08:00
adminandClaude Fable 5 964346dc77 fix(sdk): run.sh source .env + BIND host env 化(BFF_BIND_HOST)
- source .env 进 os.environ:neo4j.py 的 BFF_NEO4J_* 键与上游 URL 依赖
  进程 env,仅靠 pydantic env_file 不够(175 重启卡点实测)
- BIND host env 化:默认 127.0.0.1(176 生产,nginx 80 唯一入口);
  175 开发在 sdk/.env 设 BFF_BIND_HOST=0.0.0.0
- 一份脚本两机通用,下次打包部署 176 不会把 BFF 暴露到 0.0.0.0

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-17 14:45:01 +08:00
adminandClaude Fable 5 00c77aa323 feat(aqua): figure chain dual-key generalization (PMCID/DOI)
- answer_composer: prefer [[FIG:PMCID]], fallback [[FIG:DOI:fullDOI]]
- sse_relay: marker regex accepts DOI form; DOI key passed through to figures
- figures: local index dual-key (pmcid + doi via registry paper_id/doi);
  resolve_figures recognizes DOI form -> local first, EPMC search
  (DOI->PMCID) fallback; silent degrade semantics unchanged
- normalize/humanizer: block protection covers [[FIG:DOI:...]] form
- plant KB unaffected: PMCID path byte-for-byte behavior kept; retrieval
  chain untouched; 52 sdk tests pass

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-12 22:19:25 +08:00
adminandClaude Fable 5 f74b27daa1 fix(statusbar): 生信对话 4 个 agent 点不随相位点亮
根因:StatusBar/TopBar 只读 chat.currentMessage 的 pipeline 块 steps,生信对话
(sendBioflow)从不创建 pipeline 块——相位推进只写在 bioflow_progress.stages,
4 个点永远空态。

修复:
- chat.js 生信消息派生 pipeline 块(derived:true):bioflowDotStepsFromStages
  按「每 4 阶段一轮」把 stages 镜像为 4 相位 steps(running→running、
  failed→error 单调保持、done/skipped→done);newBioflowSkeletonMessage 自带
  派生块,patchBioflowEvent/patchBioflowSnapshot 每次推进后同步,error 分支
  收口当前 running 相位;AssistantMessage 与 _persistableBlocks 跳过派生块
  (不渲染、不落库,后端 Block union 不受影响)。
- 连带修复:web_search_started 相位 retrieval→evidence(sse_relay.py 语义
  属证据补全环节,原映射会在联网检索时造成「证据→检索」倒流跳变);
  labels.js 兜底表补两条与 BFF 对齐。

验证:r3debug 88/88(新增 bioflowDots 14 + statusBarDots 6,含真实时序
mount→流到达→相位推进→终态)、主套件 373/373、sse_relay 29/29、dist 构建。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-12 16:32:21 +08:00
admin faa8686461 fix(figures): PMC 解析冷连接重试——176 实测首次 TLS 握手 10s+ 超时,重连秒回;失败重试一次走热路径 2026-09-12 01:55:42 +08:00
admin 8e4fce062a fix(figures): PMC 外网超时 5s→15s——176 实测 EBI 2-8s 波动,5s 超时致已解析图片被整体吞掉 2026-09-12 01:41:37 +08:00
admin c620461794 Merge branch 'debug/backend2' into feature/bioflow-conversation-orchestration 2026-09-11 14:21:23 +08:00
adminandClaude Fable 5 f18286f022 fix(r4-47a/52): DOCX 红头标题样式同源解析 + 意图词典补总结/概括/归纳
#47a: 红头/标题字号颜色从 render_html 产物解析(新增 docgen/html_css.py:
内嵌 style 块 + 调用方传入的模板 css,组合选择器展开、px->pt),解析失败
回退历史常量(FF0000/22pt、h1/h2/h3 22/16/14pt,行为不变)。converter 与
导出路由把 css 传入 DOCX 转换,与 PDF/预览同源;非红头模板(如 report 灰
#333)不误渲染红头。r3 的 doc-body 包裹/表格/图片结构不回归。
#52: intent.py WRITE_VERB 补总结/概括/归纳,新增动词自指保护(唯一命中的
DOC_TYPE 等于命中动词本身时不算写文档意图,如「总结一下植物光合作用的过程」
仍 qa);cases_intent.md 同步规则与用例 31-34(共 34 条)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-11 14:19:04 +08:00
adminandClaude Fable 5 00eb0bc1d0 fix(r4-27): normalize_source title 空值回填(实体名/元数据标题字段,正文片段绝不参与)
消息级 sources items 的 title 为空导致前端文献列表渲染出正文片段。
回填优先级:顶层标题类字段(publication_title/article_title/journal_title/name)
→ metadata 标题类字段(paper_title/source_entity/name/source)
→ 顶层 source(断言主体实体名);全部缺失保持 null(前端有 fallback)。
paper_id/score/snippet 等既有字段不受影响。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-11 14:18:43 +08:00
adminandClaude Fable 5 b5dc12e8a5 fix(r4-52c): _pick_items 先按 doc_id 聚合再取块,重复文档不再占满名额
缺陷 #52c(验收 §6 第 3 条):_pick_items 原实现按 score 序逐条取 top_k 再
每 doc ≤3 去重,4 份重复上传的作者页块(得分几乎相同)占满 top-8,正文块
从未进入上下文,模型只能答「资料不足」。

修复(sdk/app/services/privateqa.py):
- _pick_items 改为先按 doc_id 聚合:doc 级得分 = 组内 max score;
  按 doc 级得分降序取 top 文档(与 top_k 对齐);每选中文档取组内得分
  最高的 ≤ PRIVATE_QA_PER_DOC_MAX(3) 块;块内按得分排序
- 组内近重复块(归一化 snippet 前 48 字符指纹相同——重复上传残留的
  同一页面切块结果逐字相同)只取 1 条,防 200 条同内容作者页块把该 doc
  的 3 个名额占满、正文块仍进不了上下文;正常相邻块(重叠 1 段)不受影响
- ask_private 候选池从 top_k 放宽到 min(top_k×4, 20):只取 8 条时重复
  文档块把池占满、聚合阶段无块可选;最终 _pick_items 仍收敛到 top_k 条
- _is_self_deprecating/_build_context(12k 预算、[资料n] 引用编号)不动

测试:sdk/app/services/test_privateqa_pick.py(8 用例):4 doc × 200 作者页块
+ 正文块 → 多 doc 覆盖且含正文块;正常场景 top_k/每 doc 上限语义不变;
单 doc 上限;同分并列稳定;ask_private 候选池 top_k×4(≤20)与 e2e 全链。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-11 14:13:08 +08:00
Debug-2 BackendandClaude Fable 5 ad248cf6a8 fix(backend): r3-47-01 DOCX 包裹层递归遍历 + r3-42-01 内置模板 key 回退语义
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-10 18:03:45 +08:00
Debug-2 BackendandClaude Fable 5 772c7cd688 fix(backend): r3 七项缺陷修复——图片预算/neo4j normalized/超时分流/mineru 加固/检索降级/DOCX 同源/docgen 异步任务化
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-10 16:46:48 +08:00
adminandClaude Fable 5 acf5b734fa feat(deploy): nginx 80 端口代理章节+模板+BFF 改绑 127.0.0.1(仅新增修改,未真实部署)
- deploy/nginx/plantai.conf(新): 80 反代 127.0.0.1:8090 模板,SSE 长连接
  (buffering off/read_timeout 3600s>看门狗 1200s)+大文件上传
  (client_max_body_size 0/request_buffering off/send_timeout 600s)适配
- 绑定脚本: bff_restart.sh/sdk/run.sh/start-dev.sh 默认 0.0.0.0→127.0.0.1
  (nginx 80 为唯一客户入口);build_all.sh start_all heredoc 同改+nginx
  模板入包 install/nginx/
- DEPLOY_FLOW.md: §0 绑定策略更新+nginx 模板位置;新增 §5b 从零安装
  nginx(apt/yum 探测→放模板→nginx -t→启用→防火墙→先 nginx 后改绑的
  切换顺序→内网验证);§6 质检增 nginx 专项(进程/80 监听/经 80 首页+SSE
  冒烟+上传冒烟);§7 注明现网仍是 0.0.0.0:8090 直连形态待按 §5b 迁移

纪律: 仅新增与修改,未在目标机/现网执行任何 nginx 安装或改绑操作。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-08 15:15:21 +08:00
adminandClaude Fable 5 92e2754583 fix(priv): R2 严重缺陷——ask_private 的 LLM 调用拼入用户问题(原实现只传检索上下文致真命中被自谦改判误杀)
user 消息改为「用户问题:{question}\n\n参考资料:\n{context}」;
SYSTEM_PROMPT 与 [资料n] 编号顺序不变。自测:真命中 hit:true(引
[资料1] 回答序号 38)/无关查询仍改判 hit:false/空检索不调 LLM/sdk
225 passed 无新增失败。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-07 23:40:55 +08:00
adminandClaude Fable 5 04c08e8339 fix(priv): R1 缺陷修复——信封包 ok 键 + 空 question 422 + 自谦答语确定性改判 hit:false
- private_docs.py: 命中/未命中两态响应包 ok:true(错误信封 ok:false 不变)
- schemas.py: PrivateQARequest.question 加 min_length=1
- privateqa.py: LLM 自谦答语(资料中未找到相关信息+等价变体)确定性改判
  {hit:false,mode:empty},不调默认阈值(底噪 0.3-0.37 与真实命中 0.42-0.73
  有重叠)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-07 23:07:19 +08:00
adminandClaude Fable 5 e783a26be6 feat(priv): A1 实现私有资料问答 P1-P3——vstore chunk 索引 + BFF 私有问答端点 + 前端并行块与管理界面
- P1 vstore: chunks.py 切块(600字/8段/重叠1/上限200,表格原位聚合,outline
  不参与)+ChunkIndex 三文件原子写+无降级档;embed_batch_chunked 批量16x并发4;
  vault add/delete/rebuild_chunks 钩子(chunk 失败不阻断 doc 级);search-chunks/
  rebuild-chunks 端点+health chunk_count;rebuild CLI
- P2 BFF: privateqa.ask_private(同doc≤3去重/12k截断/40s超时/带引用短答);
  POST /api/qa/private 三态;schemas PrivateDocBlock 入 union;client.search_chunks;
  llm timeout 参数;main.py 注册
- P3 前端: _firePrivate 并行检索+竞态防护(pending/flush/防重入/跨轮归属);
  AssistantMessage private_doc 块;i18n/private.js;PrivateLibraryPane 挂 DocPane
  空态;removeLibrary(204 兜底)

自测: vstore pytest 26/27(1 失败为 T1 骨架笔误待修)+74 回归;前端 vitest
373/373;npm run build 0 error;sdk 222 passed(3 failed 为基线预存);红线 diff 空。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-07 22:22:22 +08:00
adminandClaude Fable 5 759427b759 chore(deploy): 启动脚本绑定策略统一——8090 默认 0.0.0.0,其余服务默认 127.0.0.1
用户规则:提供客户 UI 的服务(BFF 8090)默认绑 0.0.0.0 面向内网客户
访问;其余内部服务(QA/methodology/legacy/vstore/bioflow)默认绑
127.0.0.1 不对外暴露。

- deploy/bff_restart.sh: BIND 默认 127.0.0.1 → 0.0.0.0(注释同步)
- sdk/run.sh: --host 127.0.0.1 → 0.0.0.0(注释同步)
- deploy/start-dev.sh: BFF 行 127.0.0.1 → 0.0.0.0
- bioflow_service/restart.sh: BIOFLOW_BIND_HOST 默认 0.0.0.0 → 127.0.0.1
- agent/methodology/scripts/start.sh: METHODOLOGY_API_HOST 默认
  0.0.0.0 → 127.0.0.1(部署树副本同改)

实测:8090→0.0.0.0、8091/8092/8093/8094/8098/8099→127.0.0.1,
BFF 上游全 OK,8092/8098 已按新默认值重启,残留 methodology 旧
进程已清理。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-07 18:55:42 +08:00
adminandClaude Fable 5 5457579d02 fix(bioflow): BFF Block union 补 7 种生信块类型,修复骨架消息持久化 422
前端 sendBioflow 的骨架消息(kind=bioflow,blocks 含 bioflow_path 等
生信块)POST 到 BFF 会话持久化时,Block union 无生信块类型 → 422
VALIDATION,会话历史不落库(前端有 catch 不阻断显示)。

- schemas.py 新增 BioflowPathBlock/BioflowProgressBlock/BioflowFormBlock/
  BioflowFileBlock/BioflowArchiveBlock/BioflowQaBlock/BioflowReuseBlock
  (判别字面量+全默认值+extra=allow 宽松接收——字段契约归前端 store
  与 bioflow 服务 SSE,BFF 只做持久化校验)
- 部署:deploy-unified/sdk/app/schemas.py 已同步,8090 重启(0.0.0.0
  绑定保持内网可访问)
- 验证:curl 骨架消息 422→201,7 种块写入/GET 详情/PATCH 检查点/读回
  全通;浏览器端到端(真实生产 BFF)无 4xx、路径卡正常、刷新后会话
  历史恢复保留生信消息与块

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-07 18:43:01 +08:00
adminandClaude Fable 5 d3110c4319 fix(bioflow): R1 缺陷修复——反代 aread 时序(uvloop 大响应体 502)/flow_store 启动接线(ask 引用块)/events snapshot dict 保真
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-06 08:36:08 +08:00
adminandClaude Fable 5 35bf6889a4 fix(bioflow): 部署期 P1 双缺陷修复——context 值导入脱钩 init_context 重绑定(路由层动态取模块全局)+BFF 反代非 SSE 透传 bytes 500(改纯透传 Response)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-06 07:22:01 +08:00
adminandClaude Fable 5 485e844160 feat(bioflow): P2-P5 前端编排闭环——五卡片+两面板+意图分流+探活显隐(373 用例全绿,红线零改动)+P3 docgen 增量合入(bioflow_report 模板+fig:// 渲染,预览与 PDF 导出同源)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-06 06:43:25 +08:00
adminandClaude Fable 5 b0c802095c feat(bioflow): P1 生信服务地基——bioflow_service 8098 独立部署树(12 服务模块+3 路由层+SQLite 三表+166 用例全绿)+BFF 流式反代/报告登记(BIOFLOW_ENABLED 开关默认关)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-06 05:36:10 +08:00
jerryandClaude Fable 5 4749f77544 fix(docgen): 两批手工测试修复——上传/预览/检索 + 护栏/导出/命名/编辑还原/二次预览
第一批:上传去限制+进度展示、模板HTML预览+按需导出、检索TAB实时更新
第二批:edit护栏移除、导出按钮纯化+file_name落库、编辑失焦还原、
       二次预览白底根治(防竞态+渲染兜底)
模板体系:7套公文模板(templates/)+templating渲染器、websearch联网

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-05 15:49:54 +08:00
jerryandClaude Fable 5 5888e1d5c1 test(docgen): 测试治理资产——131 条验收用例 + 三轮留痕 + E2E/回归套件
- tests/docgen/:DC-UNIT/API/CONF/E2E/UI/REGRESSION/PERF 分组用例与可复跑脚本,报告逐条留痕(R1-R3 全记录)
- 意图 30 条前后端同表双跑(pytest + node)
- Playwright headless:docgen-ui/docgen-regression spec + b3 benchpanel 第 5 TAB 断言更新

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-03 21:13:47 +08:00
jerryandClaude Fable 5 5db3ead73e feat(docgen): doc_writer 能力全链——vstore 独立服务 + BFF docgen 路由 + 前端文档工作台
- vstore 独立安装包(8094):解析/嵌入/加密 vault/faiss 检索,存储路径支持本地 file 与 http(s):// URL,启动握手校验,集群化预留(embed 独立模块)
- BFF docgen 路由:上传入库/generate/编辑/导出/下载/主库管理,意图护栏(与前端同词典),vstore 失败兜底,quota 507 与 TTL 惰性清理
- 前端:自然触发意图路由、拖拽上传 chips、能力徽标、右侧文档 TAB(WYSIWYG 编辑/prompt 修改/PDF+DOCX 导出下载)、右栏拖宽+手柄仿左栏
- 批量导入工具 docgen_import.py(并发 8、导入即加密+删源明文)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-03 21:13:37 +08:00
jerryandClaude Fable 5 aab24d2f85 feat(capabilities): 面板开关唯一入口——env 总闸改熔断语义(默认放行)
- QA pipeline/answer_composer/agentic_controller: env 检查从 =1 改 ==0
  (默认放行;运维显式设 0 才禁用)
- SDK qa.py: capabilities(web_search/superpowers) 注入上游,面板开关直达 QA
- answer_composer: superpowers 改会话开关门控(capabilities.superpowers)
- UI: 去掉 gated_by 提示(开关即生效,不再误导)
- env: QA_V1_ENABLE_WEB_SEARCH/SUPERPOWERS 默认 1(熔断位)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-02 23:29:51 +08:00
jerryandClaude Fable 5 bbd5db2315 feat(capabilities): S6 Superpowers+S7 终验(文档/humanizer CJK 修复/验收脚本)
- prompts/superpowers_{review,answer_quality,minimal_code}.md + prompt_pack.py
- agentic_controller/answer_composer Superpowers 注入点(env 总闸,关态逐字节一致)
- compile_qa.sh: prompts/ 目录自动拷贝
- humanizer: CJK 逗号规则 + 引用保护收窄(只护标记本身,带引用句可润色)
- docs: README 能力矩阵+env 表 / ARCHITECTURE Gateway 章 / API §6 / PRD:17 /
  TEST_CASES:126 多轮语义 / CHANGELOG
- tooling/cap/final_acceptance.sh 终验矩阵
- 终验: 金标 16/20 regressions=0, 多轮指代 PASS, 热加载 PID 不变 PASS,
  Humanizer 开态「此外」消除且 22 引用保留, 五上游全绿, 7913 已释放

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-02 18:27:41 +08:00
jerryandClaude Fable 5 cd7e98e7c7 feat(capabilities): S4 SDK+UI 能力端点+Humanizer+设置面板(含 S3 发布修复)
- sdk/services/capabilities.py: MANIFEST+DEFAULTS+sanitize+QA 注册表合并
- sdk/services/humanizer.py: 9 类中文 AI 痕迹规则(块级保护引用/表格/代码/图片)
- sdk/routers/capabilities.py: GET /api/capabilities + POST install 透传
- sdk/schemas.py+sessions.py: SessionMeta.capabilities + PATCH meta 白名单 merge
- sdk/routers/qa.py: humanize 会话开关注入 SSE;chat.js: body 加 session_id
- sse_relay.py: humanize_enabled 参数链(修 _pump_events 可见性编译错误)
- api.py(QA): /capabilities/registry loopback(BFF 合并)
- ui: settings store+SettingsPanel+AppShell 接线+SessionPanel 展开态设置入口+labels
- 测试: humanizer 8 用例+capabilities_svc 6 用例;SDK 146 全绿;UI vitest 172 全绿

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-02 16:50:54 +08:00
jerryandClaude Fable 5 dd54aa0e5d feat(web-search): S3 联网搜索(机制实例 1)+ 金标判定器防抖
- web_search.py: WebSearchCompleter(PubMed esearch+esummary 8s/重试1, Crossref 兜底 6s)
  + build_query 中文→英文查询构建(物种映射表+基因家族正则, 修 \b CJK 边界缺陷)
- pipeline.py: 证据采纳后 _maybe_web_search 确定性门控(请求开关 AND env 总闸 AND
  去重公开引用数 < min_evidence; 修 selected 恒 30 无信号缺陷)
- answer_composer.py: web_results 段 + SYSTEM Web 引用规则
- config.py: enable_web_search/max_results(4)/timeout(8)/max_chars(1200)
- sse_relay.py: STAGE 映射 +web_search_started/completed(11→13)
- capabilities.yaml: web_search manifest(http provider)
- env: QA_V1_ENABLE_WEB_SEARCH=0 等 4 键(example+真实)
- run_golden.py: LLM 方差防抖(FAIL 复跑一次,两次都 FAIL 才算回归;
  GI-005 实测三次采样 key_hit 0.6/0.8/0.4 横跨阈值)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-02 15:44:31 +08:00
jerryandClaude Fable 5 8c103ea382 feat(capabilities): S1+S2 机制地基+多轮记忆(能力框架/热加载/MCP Provider/history 线程化)
- capabilities/{manifests,registry,providers,install_manager}.py + tool_runner.py:
  三层机制(注册层/调用层/安装管理层),四 Provider,热加载差分刷新
- configs/capabilities.yaml: 唯一注册入口(明文热加载面)
- api.py: QARequest+history/capabilities, /capabilities/install loopback 路由
- llm_client.py: complete() tools 透传 + complete_raw_messages() 工具调用循环支持
- pipeline.py/answer_composer.py: history 线程化(只进 Dialogue Context,检索零回归)
- sdk: services/history.py(3轮/16k预算) + routers/qa.py session_id 剥离注入
- compile_qa.sh: rsync 允许子目录 + capabilities.yaml 入 install 清单
- tooling/cap/: fake_mcp_server.py + cap_selfcheck.py 机制自检
- requirements.lock: mcp 2.1.1 + 依赖 12 包

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-02 13:00:35 +08:00
jerryandClaude Fable 5 4071b29520 Python 统一 U0-U4:venv py3.12.13 + 四树 cp312 重编译 + 端口互换 8091/8092/8093 + 旧服务停而不删
- U0:新建 plantai-rag-new-venv(3.12.13,130 包),torch 2.13.0+cpu/cython 3.2.8/faiss 1.14.3/openai 3.3.1,requirements.lock 固化
- U1:四树全 venv 重编译(sdk 15/qa 45/methodology 28/legacy 283 .so 全 cp312),audit 双审计过
- U2:备用端口影子对照:金标 search evidence 30/30 与生产一致、SDK pytest 125 过、五上游绿
- U3:统一树切终态 8091/8092/8093 + BFF 8090(venv),停旧服务(容器/进程不删,30 天窗)
- U4:minerupy311→minerupy312 断链修复、GF_PYTHON_ENV 回退统一、start-dev/run/bff_restart 去 conda、server.env/README 更新

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-01 12:23:37 +08:00
jerryandClaude Fable 5 a990a00eb5 端口终态修订:BFF 8090 / QA 8091 / Methodology 8092 / legacy 8093
- config.py 默认值改终态(浸泡期 .env 覆盖 7921/8001/7911 继续生效)
- extraction _DEFAULT_ALT=8093;三个 start.sh 默认端口改终态
- 运行中服务零触碰:浸泡端口不变,BFF 未重启,旧服务不动
- 验证:sdk pytest 125 绿,BFF 五上游仍绿(env 覆盖优先)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-31 16:41:37 +08:00
jerryandClaude Fable 5 3048c18437 P4/M5 收尾:extraction 回退链 7900→7911 + methodology_routes env 化
- extraction.py 回落 _DEFAULT_ALT=7911(agent/legacy-rag 编译树,替代退役 7900)
- legacy 侧 methodology_routes 同款 env 化补丁(UPLOAD_JOBS_DIR 可配)
- 单模块重编译 + 树审计双绿(463 .so, marker 重写)
- 决定性验证:停 8001 → extraction 经 7911 正常返回 → 恢复 8001

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-31 16:02:22 +08:00
jerryandClaude Fable 5 30b01b8ae1 P4/M5: SDK legacy 健康键 + 代理路由,五上游全绿
- config.py rag_legacy_base_url=7910(默认)/ upstream.py legacy 键入 probe_all
- routers/legacy.py:13 族前缀白名单透明代理(线程池阻塞调用)
- 浸泡:sdk/.env RAG_LEGACY_BASE_URL=7911(agent/legacy-rag 编译树)
- 验证:经 BFF 代理 kg/stats+kg/families 200,非白名单 404

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-31 15:58:47 +08:00
jerryandClaude Fable 5 0875bb036c P0/M1: 四部分重构——frontend→ui、backend→sdk 改名 + 引用修复 + 骨架
- git mv 保留历史:ui/(Vue3+Vite)、sdk/(BFF 中间层)
- 路径语义修正:db_path/figures_cache 改相对 sdk/(BFF cwd),
  历史库 sdk/backend/data 迁移至 sdk/data/(会话/图片缓存无损)
- 引用修复 ~15 处:config.py、deploy/*.sh、vitest/playwright 配置、
  单测导入路径、docs、README、gitignore、.env.example
- 骨架:agent/{qa,methodology,legacy-rag,vendor}、knowledge/manifest.yaml、
  tooling/{compile,kb,crypto,assemble,audit,tools,scripts} + README
- 门禁验证:sdk pytest 125 通过、ui vitest 158 通过、
  生产 BFF 脚本重启四上游全绿 + 静态托管 + 会话库无损

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-31 12:56:47 +08:00