caoqianming
|
631a635eab
|
refactor(platform): isolate managed source providers
|
2026-08-26 11:29:44 +08:00 |
caoqianming
|
604f4da373
|
feat(literature): add host-side paper tools
|
2026-08-26 10:09:05 +08:00 |
caoqianming
|
ad522baf94
|
refactor(skills): unify publication retrieval
|
2026-08-25 17:35:15 +08:00 |
caoqianming
|
503820671a
|
feat(preview): add multi-file web project previews
|
2026-08-21 11:15:53 +08:00 |
caoqianming
|
931ae1d450
|
feat(blender): add multiview cutaway adapter v2
|
2026-08-21 09:31:27 +08:00 |
caoqianming
|
fac63f6ab5
|
fix(ansys): reject invalid named selection jobs
|
2026-08-19 11:04:46 +08:00 |
caoqianming
|
e521f832c4
|
feat(node): persist professional software workspaces
|
2026-08-19 10:55:19 +08:00 |
caoqianming
|
bf2bf48ad0
|
feat(software): add guarded ANSYS node adapter
|
2026-08-18 14:39:46 +08:00 |
caoqianming
|
4ec4496c3d
|
fix(software): 修复 Origin 导出与重复完成报告
|
2026-08-17 15:37:21 +08:00 |
caoqianming
|
927d059388
|
feat(software): automate job completion follow-ups
|
2026-08-17 12:12:27 +08:00 |
caoqianming
|
30c12f9808
|
fix(web): make task progress run-scoped and recoverable
|
2026-08-17 11:07:57 +08:00 |
caoqianming
|
4426ef9214
|
feat(software): add declarative recipe revisions
|
2026-08-14 17:50:12 +08:00 |
caoqianming
|
4a53bc7827
|
feat(software): support independently deployed adapters
|
2026-08-14 15:10:24 +08:00 |
caoqianming
|
25616d12cc
|
refactor(software): introduce capability contracts
|
2026-08-14 12:55:46 +08:00 |
caoqianming
|
b77db25440
|
feat(origin): expand supported plot types
|
2026-08-14 12:16:37 +08:00 |
caoqianming
|
13ba6b1a61
|
feat(software): add local monitoring and multi-artifact jobs
|
2026-08-14 10:41:49 +08:00 |
caoqianming
|
51a213e3a7
|
fix(software): normalize job output artifacts
|
2026-08-14 08:57:36 +08:00 |
caoqianming
|
40f8899cc1
|
feat(software): require artifact inputs for Origin jobs
|
2026-08-13 17:25:21 +08:00 |
caoqianming
|
8aafe3272f
|
feat(software): add professional software job center
|
2026-08-13 15:59:31 +08:00 |
caoqianming
|
c4418711ab
|
perf(vision): 收敛看图请求范围
|
2026-08-13 09:59:49 +08:00 |
caoqianming
|
2b4316ed25
|
refactor(external-systems)!: 统一为通用 API provider
移除 factory_mes preset 和兼容包装,新增存量 definition 一次性迁移脚本,并让 OpenAPI 参数直接遵循规格约束。
BREAKING CHANGE: 管理 API 不再接受 factory_mes provider,部署新版前必须先执行 definition 迁移脚本。
|
2026-08-10 17:26:39 +08:00 |
caoqianming
|
44b7df6f20
|
feat(external-systems): add generic MCP connector
|
2026-08-10 16:04:51 +08:00 |
caoqianming
|
9032c5b517
|
fix(external-systems): preserve credentials on definition updates
|
2026-08-07 11:25:29 +08:00 |
caoqianming
|
0e4bd0456a
|
feat(external-systems): 重构连接治理与运行态缓存
|
2026-08-07 10:12:37 +08:00 |
caoqianming
|
7e544827c0
|
feat(files): toggle task hidden directories
|
2026-08-06 12:05:36 +08:00 |
caoqianming
|
41cd7858a1
|
feat(external-systems): add persistent result exports
|
2026-08-06 11:10:06 +08:00 |
caoqianming
|
e81005435e
|
fix(external-systems): preserve complete OpenAPI responses
|
2026-08-06 10:32:31 +08:00 |
caoqianming
|
af0ad934bb
|
feat(external-systems): guide MES aggregate queries
|
2026-08-05 15:01:43 +08:00 |
caoqianming
|
cb9a39f33d
|
feat(external-systems): add managed MES connections
|
2026-08-04 16:53:58 +08:00 |
caoqianming
|
137d27acdd
|
fix(security): 强化工程类型检查与依赖审计
|
2026-08-03 16:59:32 +08:00 |
caoqianming
|
dfda6fd772
|
feat(image): support GPT image editing
|
2026-08-03 14:31:38 +08:00 |
caoqianming
|
57655984dd
|
feat(web): add task-scoped artifact references
|
2026-08-03 13:49:20 +08:00 |
caoqianming
|
b0e0182b73
|
fix(agent): route PDF ingestion through markitdown
|
2026-08-03 09:43:57 +08:00 |
caoqianming
|
8999fb1b77
|
fix(rendering): detect LibreOffice components
|
2026-08-03 09:27:30 +08:00 |
caoqianming
|
21a90cf201
|
fix(rendering): route PDF conversion through platform tools
|
2026-08-03 08:55:54 +08:00 |
caoqianming
|
75bb482015
|
feat(media): support GPT image output controls
|
2026-07-31 17:32:15 +08:00 |
caoqianming
|
70683b7d09
|
增强知识库文件写入一致性
|
2026-07-27 16:37:56 +08:00 |
caoqianming
|
ade3a847f6
|
Fix web search date handling
|
2026-07-27 12:50:07 +08:00 |
caoqianming
|
85c918dc2f
|
Add safe conversational workspace rename
|
2026-07-27 11:23:20 +08:00 |
caoqianming
|
98713bb7fa
|
feat(seedance): support image-to-video references
|
2026-07-27 10:50:13 +08:00 |
caoqianming
|
5a5ebfbe24
|
refactor(tools): 输出处理原语移出 base.py——base 只留 Tool 基类与路径边界
compact_tool_output / format_timeout_result 是「工具输出处理」关注点,与
Tool ABC / FileOutOfBounds 路径安全混装在 base.py(审查小项)。析出
tools/output.py,8 处引用(5 工具 + executor_docker + 2 测试)同步改。
318 测试全过。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-23 13:15:04 +08:00 |
caoqianming
|
8038fb7491
|
refactor(tools): 媒体工具同构析出 tools/media_common.py + 17 个单测
审查 P1#6:seedance/seedream/gpt_image/look_at_image/read_document 五处
同构(逐字或参数化后逐字)收敛为共享原语:
- quota_gate(每日配额闸,文案逐字保持)/ stamped_path(<ts>-<rand6> 落盘
命名+建目录)/ write_meta(.meta.json)/ record_usage_safe(记账失败不
阻塞)/ ark_chat_with_retry(超时透明重试,业务错误不重试)/
extract_chat_answer(chat 文本+截断标志)/ find_first_url(递归找 URL,
accept 谓词覆盖 seedance 的 video_url 优先语义)
- 五工具各自的 banner 格式 / body 组装 / seedance 轮询刻意保持不动
- tests/test_media_common.py:17 个纯函数/打桩单测(配额文案、重试次序、
业务错误不重试、视频 URL 谓词等)
318 测试全过;真实配置冒烟 32 工具挂载不变、schema 完整。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-23 13:10:32 +08:00 |
caoqianming
|
a1db5756aa
|
feat(tools): 扫描件 PDF 直读 read_document——方舟文档理解 base64 内联(bump 0.58.55)
markitdown 只抽文本层,扫描件(老标准/检测报告/红头指南)转出为空=死路。
探针(scripts/probe_ark_doc.py)验证方舟 chat file 内容块直读 PDF 后落地:
- tools/read_document.py:seed_2_lite 同 variant 同 key,记账走
record_vision_usage;体积/页数双闸(30MB/100 页,pdfminer 软探页数)+
finish_reason=length 截断提示;多页 OCR save_md 全文落盘只返 1500 字预览
(防上下文爆),save_md 与读取侧同款三形态路径解析(相对/宿主绝对/容器
/workspace)+ user_root 边界
- tools/image_ref.py:抽 load_pdf_as_data_url(复用 resolve_in_root;
data:application/pdf;base64, 前缀为方舟硬校验)
- config/media/doubao.yaml:vision 段加 max_pdf_mb / max_pdf_pages /
doc_request_timeout_s(probe 实测口径:~1300 token/页、100 页全覆盖、
17MB 内联可用、单页栅格化 3600 万像素硬限)
- core/agent_builder.py:注册(跟 look_at_image 同 vision 段走)+ 系统提示
_MEDIA_READDOC_SEG(何时调/何时不调,防对有文本层 PDF 重复花钱)
- 六 skill(paper/patent/standard/proposal/rebuttal/ppt)摄取段加扫描件
兜底一行(markitdown 转出空/近空 → read_document OCR)
- 冒烟 scripts/smoke_read_document.py 全过(3 页 ¥0.0066,表格→md 表、
公式→LaTeX,usage_events 记账验证)
选型对比(不接 MinerU 等外部解析 API=新增第三方数据面;不选本地 OCR=
过度投资;不选 file_url/file_id=免认证公网直链/TOS 依赖)见 DESIGN §8.13。
host 侧工具,无需重建沙箱镜像,pull + 重启 web 生效。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-21 16:57:23 +08:00 |
caoqianming
|
a02d1aa5d8
|
fix(tools,ppt): 工具失败聚集查前3——修 glob 绝对路径崩溃 + PPT 页脚漂移治本(bump 0.58.45)
- glob(聚集#2):绝对 pattern(/workspace/**/*.py)先拆「静态前缀目录+相对 glob」再匹配,
不再抛 NotImplementedError: Non-relative patterns unsupported;补首字符 / 判定兼容 Windows 宿主;
删掉原 if"**"/else 两分支完全相同的死重构。/sandbox/tools 是 Dockerfile COPY,需重建沙箱镜像生效
- ppt(聚集#1,A+C):15/16 exit-1 是手写坐标偏离 layout_grid 锁定值 2-16px 的近失,footer_y 最大头。
A:spec_lock 加 ## footer 锁定片段(x/y 用 margin_x/footer_y 预填、{PAGE} 占位),executor 逐字粘贴只换页码;
C:_ALIGN_TOL 2→3px(手写 2px 过严),同步刷 SKILL/executor-base/spec_lock_reference 表述与测试值;30 测试全绿
- 新增诊断:diag_toolfail_scan(跑 scan_tool_failures 出聚集)/ diag_svgguard_breakdown / diag_malformed_samples
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-20 13:27:50 +08:00 |
caoqianming
|
1581b69bfa
|
fix(run_python): 超时返回超时前的部分输出 + 无缓冲(-u),模型据此续跑不整批重来(bump 0.58.36)
失败面板 #8(command timed out 19 次/7 task,累计最多)。定性(查 19 条超时的原始
tool_call 代码):不是死循环/chromium 老坑,全是真慢的批量 I/O——① 论文检索
skills.research.paper.search() 循环搜多期刊/关键词(最多,每次打 OpenAlex 累计爆超时)
② pdfplumber 多 PDF extract_text ③ 大文件下载 ④ pandas 大 Excel。超时机制正常,真正
浪费在 _run_subprocess 超时分支把已捕获的部分输出全丢了(kill 后 communicate() 已续读
超时前 stdout,却只回一句 command timed out → 模型看不到"搜到第6个"、整批重搜)。
修:
1. tools/base.py::format_timeout_result 把超时前 stdout/stderr 一并返回 + 续跑提示
(据已完成部分续跑/每项落盘/大操作用 background=true/单次别塞太多),docker
(_run_subprocess)+ host(run_python TimeoutExpired.stdout/stderr)两执行器共用。
2. -u 无缓冲:Python 管道下 stdout 块缓冲,不 flush 的 print 超时被 kill 时缓冲区就丢,
故 run_python 的 python 调用全加 -u(docker 前台 inline/script_path + host 前台 +
两处后台 procs.launch_host),让部分输出真正落管道被捕获(不碰 shell)。
提示指路(background/续跑)与语法预检不同、恰当:超时是"你这段太慢"的确定信号,
建议对任何超时都可靠。不做:不抬默认 timeout(120s 合理);不单独改 prompt。
测试 tests/test_timeout_partial.py(format 单测 + host 端到端:print 两项后 sleep
timeout=1 → 结果带两项 + 续跑提示)+ test_executor_docker argv 断言更新为 python -u,
全 34 相邻测试绿。additive(超时结果加信息不破坏 schema),不碰对外契约。至此失败面板
top 全部处置(② edit streak/③ 畸形/① SyntaxError 预检+渲染器/#8 超时)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-17 10:53:14 +08:00 |
caoqianming
|
2a60243c02
|
feat(run_python): 宿主语法预检——中文正文硬拼进源码的语法坏码提前拦下+锐化诊断(bump 0.58.34)
工具失败面板最大头(run_python/exit SyntaxError,20 条真实样本):模型手写
python-docx 生成 docx/报告时把中文正文内联进 T("中文…"),引号/标点崩坏 →
SyntaxError → 改 → 再崩,同一文件一分钟连撞 6 次烧 token。三类:
- A 引号提前闭合(最多):中文串里 ASCII 引号 " 提前闭合外层字符串,Python 却报
"forgot a comma?"/"unterminated string" 主动误导,模型照着加逗号越修越错。
- B 全角标点漏进代码位(center=True、/采购():invalid character U+XXXX。
- C 括号/引号结构崩。
根因不是缺写长文工具(write 早能写长文进文件),而是 docx/报告无渲染管线——
documents skill 只做检索、不管 docx 生成,模型裸手撸 python-docx 内联中文;ppt 有
SVG→pptx 管线故崩得少。本轮先落机检止血(硬约束靠平台机检,不塞菜谱):
新增 core/pysyntax.py(不 import litellm,本机可测)precheck_python(code):host 上
compile()(host 3.12 ≡ sandbox python:3.12-slim,零版本偏差;只解析不执行、与依赖
无关),命中 SyntaxError 返锐化中文诊断(出错行+光标+按错误类型定向:invalid-char→
全角改半角、forgot-comma/unterminated+含中文→ASCII 引号提前闭合三改法、含中文统一
追加"正文别拼进 .py,write 进 .md/.txt 再 read"根治提示)。接进 run_python 所有派发
路径(inline/script_path/background × docker+host 两执行器,_prepare_script 内嵌覆盖
script_path 全路径 + inline 分支各加一处),命中即早返、跳过 docker 往返。
零误伤:只拦本就跑不了的码(compile 不过=运行必失败),通过原样放行、行为不变;
既有 30 个 executor/run_python 测试(合法码 fixture)全绿印证。白捡协同:预检把语法
失败从 [stderr]…[exit 1] 改成 [Error] 前缀+固定首行,loop._RepeatGuard 的 err-streak
(0.58.33)得以兜住"反复交语法坏码"的循环(旧 [exit 1] 形态它抓不到)。
测试 tests/test_pysyntax.py 11 用例(A/B/C + 合法中文串/中文引号不误伤)全绿。
下一步(未做,单列选型):docx 渲染管线,正文 write 进纯文本文件→渲染工具 read 生成
docx,正文永不进 Python 源码、也不走大正文当工具入参(避免触发 0.58.33 修的 wire
乱序畸形)。additive 内部机制,不碰对外 API/DB 契约。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-17 08:55:55 +08:00 |
caoqianming
|
b5ac175ccd
|
feat(mp): mp_search_summary 批量入参 formulas[] 定点解检索烧 token(bump 0.58.28)
诊断 diag_tool_repeat.py 全库扫:pymatgen task fe2d8b73 里 mp_search_summary
占 562/687 次 tool_call、重复率 91%——逐化学式一 formula 一轮走 agent loop,
562 份中间 JSON 全流经主上下文且每轮重发。根因是工具只收单 formula + host-side
持 MP key(禁在 run_python 里循环)被迫一式一调。
这类"已知清单批量扇出"的正解是工具批量化而非 delegate 子循环(delegate 只把
562 轮搬进子上下文、基础 token 不省)。新增 formulas: list(≤300/次)触发 batch:
复用单个 MPRester 会话逐式查(num_chunks=1 fair-use 护栏不变)、每式按
energy_above_hull 升序、单式出错不连坐整批;结果落 materials/mp_search_batch_
<hash8>.json(内容寻址幂等),只回紧凑摘要+路径,中间数据不进对话。
单查询路径字节不变保向后兼容;working_dir 设可选(裸构造/无 key 测试降级内联)。
agent_builder 注入 working_dir_path;pymatgen SKILL.md 加批量引导(WHY+WHAT)。
tests +1(去重/落盘/稳定相排序/单式错误隔离/无 key 泄漏),原测试补回 chunk_size 断言。
additive 内部工具能力,不碰对外 API/DB 契约。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-15 10:49:35 +08:00 |
caoqianming
|
732420a3b7
|
fix(exec): run_python script_path 宿主预检+前缀容错+code 落盘回退(bump 0.58.22)
失败聚集 run_python/exit「can't open file」15 次/7 天/13 task,DB 逐条核对三形态:
- 没写就跑(13/15):Docker 执行器补宿主侧 is_file 预检,返带纠偏提示的
[Error] script_path not found,与 host 执行器对齐,不再进容器撞裸 stderr
- 双重拼接:fs 工具输出渲 user_root 相对路径而解析按 workdir 相对(展示/解析
不对称),模型回传即踩坑;workdir 相对不存在时按 user_root 相对再试
- code+script_path 同给:文件不存在时 code 落盘到 script_path 再执行,
不再扔掉完好的 code(schema 描述同步注明)
_container_script_path 重写为 _prepare_script(前台+background 共用,code
回写在宿主侧故加 user_root 越界防护);tools/run_python.py host 路径同语义。
测试 +8;诊断脚本 scripts/diag_run_python_noent{,2}.py 留档。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-13 16:41:43 +08:00 |
caoqianming
|
073d9ef025
|
feat(prompt): look_at_image 引导改"慢、谨慎调"口径(bump 0.58.13)
tool description 与 system prompt 媒体段原本强调"便宜(< ¥0.01)",等于鼓励随手调;
实际痛点是慢(一次几十秒)。两处改为:SLOW / 谨慎调用 / 只在确实需要图内容时调 /
想问的一次在 question 里问全 / 绝不对同一张图反复看;"何时不调"补"图内容可有可无"。
纯 prompt 调整,无行为代码变化。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-13 09:23:42 +08:00 |
caoqianming
|
5a8f5bd930
|
feat(media): 第二图像后端 gpt_image(unifyllm 网关,pro 档)(bump 0.58.0)
- config/media/unifyllm.yaml + tools/gpt_image.py:仅 prompt 参数(网关忽略
size/quality,尺寸上游自动定,不支持 i2i),b64 直落 figures/,banner 协议
同 seedream,价目未知期 cost 记 0、usage tokens 进 units 留对账
- 媒体装配泛化:ArkConfig 通用键名(api_key_env/base_url,ark_* 兜底);
_choose_image_variant 跨 provider 选 image variant(默认仍 seedream_5,
本 run 只挂一个图像工具);_MEDIA_TOOLS_BLOCK 拆分段按实挂工具拼装
- web:_list_media_variants 扫 config/media/*.yaml(image/video 清单 +
admin 门控 catalog);media.js 三处白名单加 gpt_image;prompt 润色 hint
无 default_size 不再谎报 2048
- gpt_image 进 pro 档,与 seedream 共享 images_per_day 配额
- 手工验证 scripts/test_gpt_image_manual.py 全过(含真调网关落图),
unittest 201 过
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-10 20:47:06 +08:00 |