mirror of
https://github.com/ThearchyHelios/AgentLab.git
synced 2026-11-15 06:51:59 +00:00
050bea4b72
一、一键升级(只给预览,不自动保存)
- engine/upgrade.py:确定性改写,纯函数、重复执行结果不变
- R1 契约的叙述指向模型调用节点 → 换成报告撰写节点(system 和 prompt 合成写作要求,模型配置照搬),契约改成 report_from
- R2 没有契约、但模型写的文字进了出口,而且上游有取数 → 同样换成报告撰写
- R3 input → 智能体 → 出口(问数据的典型图)→ 中间插入报告撰写节点,出口字段接报告的正文;
只改直接相连的出口,经过别的节点读它的出口原样保留并写明原因
- R4 配了 output_schema 的智能体 → 打开 cite_fields
- R5 代码节点的产出被口径卡读 → 不改,只建议标成取数,等人确认
- 一个叙述里混了几个写作者的,不猜,整步不做并写明原因
- POST /api/copilot/upgrade-evidence:返回改动、说明和改完的检查结果;assist 时再交给 Copilot 把纯算术的代码节点
改写成口径卡表达式,不是纯算术的保留并给警告
- 升级和发布前修复走同一道「不许降低要求」的检查,只多两个由升级点名的例外:模型调用换成报告撰写、R3 改接的那条连线;
改完不能更糟
- 校验对符合 R1–R4 的旧结构给一条建议「可以升级为可追溯结构」,不算提示、不挡发布
- Copilot 自查:报告撰写节点上游没有任何能引用数字的来源时打回
二、界面
- 问题面板的快速修复「升级为可追溯结构(预览改动)」:逐项写「节点 · 字段:原值 → 新值」,节点类型的变化写成
「模型调用 → 报告撰写」,新插的节点和改接的连线另外写明;「应用」后走现有的保存,全图默认不丢
- 画布改过、存失败、画布被锁都有明确状态;保存失败后手动存成功会清掉「没存上」的提示,
画布和预览对不上时「重试保存」不再盲存;校验接口失败时升级块照样在
- 记录页里没有逐段证据的运行给横幅「这次的报告没有逐段证据 → 升级这张图」,跳到编排页并打开升级预览
- 修掉一处旧缺陷:应用修复时只换配置、不换节点类型,模型调用换成报告撰写后存下去的还是模型调用
三、受管门禁:cells 一键选
- 图里没有口径卡、契约又没写 cells: true 的受管图,以前能过门禁、正式运行却每次失败;现在门禁拦下,
发布弹窗给两个选项:写 cells: true,或交给 Copilot 改成口径卡指标(人亲手选的不算替人打开,Copilot 自己打开照样拦)
- 「修完要更好」的复核不再把改完才冒出来、只能由人拍板的这一处算作改坏:Copilot 补上契约、把 cells 留给人问,
这一步会被采用,不再被判「冒出新的问题」作废
四、测试
- 开发依赖加上 pytest-xdist(锁文件只多了 pytest-xdist 和 execnet):全量后端测试 -n auto 约 16 秒,原来串行约 2 分钟
- 修掉并行下暴露的一处测试竞态:运行先落终态、再另一个事务封存,测试改成等封存完成再核对
337 lines
7.1 KiB
Plaintext
337 lines
7.1 KiB
Plaintext
# This file was autogenerated by uv via the following command:
|
|
# ./scripts/lock-deps.sh
|
|
aiomysql==0.3.2
|
|
# via agentlab-backend (pyproject.toml)
|
|
aiosqlite==0.22.1
|
|
# via
|
|
# agentlab-backend (pyproject.toml)
|
|
# langgraph-checkpoint-sqlite
|
|
annotated-doc==0.0.5
|
|
# via fastapi
|
|
annotated-types==0.8.0
|
|
# via pydantic
|
|
anthropic==1.5.0
|
|
# via langchain-anthropic
|
|
anyio==4.15.1
|
|
# via
|
|
# anthropic
|
|
# httpx
|
|
# httpx2
|
|
# langsmith
|
|
# mcp
|
|
# openai
|
|
# sse-starlette
|
|
# starlette
|
|
# watchfiles
|
|
asyncpg==0.31.0
|
|
# via agentlab-backend (pyproject.toml)
|
|
attrs==26.1.0
|
|
# via
|
|
# jsonschema
|
|
# referencing
|
|
beautifulsoup4==4.15.0
|
|
# via agentlab-backend (pyproject.toml)
|
|
certifi==2026.7.22
|
|
# via
|
|
# httpcore
|
|
# httpx
|
|
# langchain-openai
|
|
# requests
|
|
cffi==2.1.1 ; platform_python_implementation != 'PyPy'
|
|
# via cryptography
|
|
charset-normalizer==3.5.1
|
|
# via requests
|
|
click==8.5.0
|
|
# via uvicorn
|
|
colorama==0.4.6 ; sys_platform == 'win32'
|
|
# via pytest
|
|
cryptography==50.0.1
|
|
# via
|
|
# agentlab-backend (pyproject.toml)
|
|
# oracledb
|
|
# pyjwt
|
|
distro==1.9.0
|
|
# via langsmith
|
|
docstring-parser==0.18.0
|
|
# via anthropic
|
|
et-xmlfile==2.0.0
|
|
# via openpyxl
|
|
execnet==2.1.2
|
|
# via pytest-xdist
|
|
fastapi==0.141.1
|
|
# via agentlab-backend (pyproject.toml)
|
|
greenlet==3.5.5
|
|
# via
|
|
# agentlab-backend (pyproject.toml)
|
|
# sqlalchemy
|
|
h11==0.16.0
|
|
# via
|
|
# httpcore
|
|
# httpcore2
|
|
# uvicorn
|
|
httpcore==1.0.9
|
|
# via httpx
|
|
httpcore2==2.12.0 ; sys_platform != 'emscripten'
|
|
# via httpx2
|
|
httptools==0.8.0
|
|
# via uvicorn
|
|
httpx==0.28.1
|
|
# via
|
|
# agentlab-backend (pyproject.toml)
|
|
# langchain-core
|
|
# langgraph-sdk
|
|
# mcp
|
|
httpx-sse==0.4.3
|
|
# via mcp
|
|
httpx2==2.12.0
|
|
# via
|
|
# anthropic
|
|
# langsmith
|
|
# openai
|
|
httpx2-jsfetch==1.0 ; sys_platform == 'emscripten'
|
|
# via httpx2
|
|
idna==3.19
|
|
# via
|
|
# anyio
|
|
# httpx
|
|
# httpx2
|
|
# requests
|
|
iniconfig==2.3.0
|
|
# via pytest
|
|
jiter==0.17.0
|
|
# via
|
|
# anthropic
|
|
# openai
|
|
jsonpatch==1.33
|
|
# via langchain-core
|
|
jsonpointer==3.1.1
|
|
# via jsonpatch
|
|
jsonschema==4.26.0
|
|
# via
|
|
# agentlab-backend (pyproject.toml)
|
|
# mcp
|
|
jsonschema-specifications==2025.9.1
|
|
# via jsonschema
|
|
langchain-anthropic==1.7.2
|
|
# via agentlab-backend (pyproject.toml)
|
|
langchain-core==1.6.3
|
|
# via
|
|
# agentlab-backend (pyproject.toml)
|
|
# langchain-anthropic
|
|
# langchain-mcp-adapters
|
|
# langchain-openai
|
|
# langgraph
|
|
# langgraph-checkpoint
|
|
# langgraph-prebuilt
|
|
# langgraph-sdk
|
|
langchain-mcp-adapters==0.3.2
|
|
# via agentlab-backend (pyproject.toml)
|
|
langchain-openai==1.6.2
|
|
# via agentlab-backend (pyproject.toml)
|
|
langchain-protocol==0.0.19
|
|
# via
|
|
# langchain-core
|
|
# langgraph-sdk
|
|
langgraph==1.2.11
|
|
# via agentlab-backend (pyproject.toml)
|
|
langgraph-checkpoint==4.2.0
|
|
# via
|
|
# langgraph
|
|
# langgraph-checkpoint-sqlite
|
|
# langgraph-prebuilt
|
|
langgraph-checkpoint-sqlite==3.1.1
|
|
# via agentlab-backend (pyproject.toml)
|
|
langgraph-prebuilt==1.1.0
|
|
# via langgraph
|
|
langgraph-sdk==0.4.4
|
|
# via langgraph
|
|
langsmith==0.12.4
|
|
# via langchain-core
|
|
lxml==6.1.3
|
|
# via
|
|
# python-docx
|
|
# python-pptx
|
|
mcp==1.30.0
|
|
# via
|
|
# agentlab-backend (pyproject.toml)
|
|
# langchain-mcp-adapters
|
|
microsandbox==0.6.18
|
|
# via agentlab-backend (pyproject.toml)
|
|
numpy==2.5.3
|
|
# via agentlab-backend (pyproject.toml)
|
|
openai==3.13.0
|
|
# via langchain-openai
|
|
openpyxl==3.1.5
|
|
# via agentlab-backend (pyproject.toml)
|
|
oracledb==26.0.0
|
|
# via agentlab-backend (pyproject.toml)
|
|
orjson==3.12.0
|
|
# via
|
|
# langgraph-sdk
|
|
# langsmith
|
|
ormsgpack==1.12.2
|
|
# via langgraph-checkpoint
|
|
packaging==26.3
|
|
# via
|
|
# langchain-core
|
|
# langsmith
|
|
# pytest
|
|
pillow==12.3.0
|
|
# via python-pptx
|
|
pluggy==1.6.0
|
|
# via pytest
|
|
pycparser==3.0 ; implementation_name != 'PyPy' and platform_python_implementation != 'PyPy'
|
|
# via cffi
|
|
pydantic==2.13.5
|
|
# via
|
|
# agentlab-backend (pyproject.toml)
|
|
# anthropic
|
|
# fastapi
|
|
# langchain-anthropic
|
|
# langchain-core
|
|
# langgraph
|
|
# langsmith
|
|
# mcp
|
|
# openai
|
|
# pydantic-settings
|
|
pydantic-core==2.46.5
|
|
# via pydantic
|
|
pydantic-settings==2.15.0
|
|
# via
|
|
# agentlab-backend (pyproject.toml)
|
|
# mcp
|
|
pygments==2.21.0
|
|
# via pytest
|
|
pyjwt==2.14.0
|
|
# via mcp
|
|
pymysql==1.2.0
|
|
# via aiomysql
|
|
pypdf==6.19.0
|
|
# via agentlab-backend (pyproject.toml)
|
|
pytest==9.1.1
|
|
# via
|
|
# agentlab-backend (pyproject.toml)
|
|
# pytest-asyncio
|
|
# pytest-xdist
|
|
pytest-asyncio==1.4.0
|
|
# via agentlab-backend (pyproject.toml)
|
|
pytest-xdist==3.8.0
|
|
# via agentlab-backend (pyproject.toml)
|
|
python-docx==1.2.0
|
|
# via agentlab-backend (pyproject.toml)
|
|
python-dotenv==1.2.3
|
|
# via
|
|
# pydantic-settings
|
|
# uvicorn
|
|
python-multipart==0.0.32
|
|
# via
|
|
# agentlab-backend (pyproject.toml)
|
|
# mcp
|
|
python-pptx==1.0.2
|
|
# via agentlab-backend (pyproject.toml)
|
|
pywin32==312 ; sys_platform == 'win32'
|
|
# via mcp
|
|
pyyaml==6.0.3
|
|
# via
|
|
# langchain-core
|
|
# uvicorn
|
|
referencing==0.37.0
|
|
# via
|
|
# jsonschema
|
|
# jsonschema-specifications
|
|
regex==2026.9.10
|
|
# via tiktoken
|
|
requests==2.34.2
|
|
# via
|
|
# langsmith
|
|
# requests-toolbelt
|
|
# tiktoken
|
|
requests-toolbelt==1.0.0
|
|
# via langsmith
|
|
rpds-py==2026.6.3
|
|
# via
|
|
# jsonschema
|
|
# referencing
|
|
sniffio==1.3.1
|
|
# via
|
|
# anthropic
|
|
# langsmith
|
|
# openai
|
|
soupsieve==2.9.2
|
|
# via beautifulsoup4
|
|
sqlalchemy==2.0.52
|
|
# via agentlab-backend (pyproject.toml)
|
|
sqlite-vec==0.1.9
|
|
# via langgraph-checkpoint-sqlite
|
|
sse-starlette==3.4.11
|
|
# via mcp
|
|
starlette==1.6.0
|
|
# via
|
|
# fastapi
|
|
# mcp
|
|
# sse-starlette
|
|
tenacity==9.1.4
|
|
# via langchain-core
|
|
tiktoken==0.14.0
|
|
# via langchain-openai
|
|
truststore==0.10.4 ; sys_platform != 'emscripten'
|
|
# via
|
|
# httpcore2
|
|
# httpx2
|
|
typing-extensions==4.16.0
|
|
# via
|
|
# anthropic
|
|
# anyio
|
|
# beautifulsoup4
|
|
# fastapi
|
|
# httpx2
|
|
# langchain-core
|
|
# langchain-mcp-adapters
|
|
# langchain-protocol
|
|
# langsmith
|
|
# mcp
|
|
# openai
|
|
# oracledb
|
|
# pydantic
|
|
# pydantic-core
|
|
# pytest-asyncio
|
|
# python-docx
|
|
# python-pptx
|
|
# referencing
|
|
# sqlalchemy
|
|
# starlette
|
|
# typing-inspection
|
|
typing-inspection==0.4.4
|
|
# via
|
|
# fastapi
|
|
# mcp
|
|
# pydantic
|
|
# pydantic-settings
|
|
urllib3==2.7.0
|
|
# via requests
|
|
uuid-utils==0.17.1
|
|
# via
|
|
# langchain-core
|
|
# langsmith
|
|
uvicorn==0.52.4
|
|
# via
|
|
# agentlab-backend (pyproject.toml)
|
|
# mcp
|
|
uvloop==0.22.1 ; platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'
|
|
# via uvicorn
|
|
watchfiles==1.2.0
|
|
# via uvicorn
|
|
websockets==16.1.1
|
|
# via
|
|
# langgraph-sdk
|
|
# langsmith
|
|
# uvicorn
|
|
xlsxwriter==3.2.9
|
|
# via python-pptx
|
|
xxhash==4.0.1
|
|
# via
|
|
# langgraph
|
|
# langsmith
|
|
zstandard==0.25.0
|
|
# via langsmith
|