mirror of
https://github.com/ThearchyHelios/AgentLab.git
synced 2026-11-15 16:52:00 +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 分钟
- 修掉并行下暴露的一处测试竞态:运行先落终态、再另一个事务封存,测试改成等封存完成再核对
55 lines
2.4 KiB
TOML
55 lines
2.4 KiB
TOML
[project]
|
|
name = "agentlab-backend"
|
|
version = "0.1.0"
|
|
description = "AgentLab — 可视化 Agent 编排实验台后端"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"fastapi>=0.115",
|
|
"uvicorn[standard]>=0.32",
|
|
"pydantic>=2.9",
|
|
"pydantic-settings>=2.6",
|
|
# db/base.py 给 aiosqlite 0.22 的 stop() 打了补丁(并发调用会死锁),SQLAlchemy 连接池
|
|
# 强制 terminate 时也会走到它。两个一起卡住小版本,换版本前先确认补丁还成立
|
|
"sqlalchemy[asyncio]>=2.0.36,<2.1",
|
|
"aiosqlite>=0.22.1,<0.23",
|
|
"greenlet>=3.1",
|
|
"httpx>=0.28",
|
|
"python-multipart>=0.0.17",
|
|
# 引擎直接依赖这一族的运行时语义:断点格式、interrupt / resume、流式事件、
|
|
# thinking 块。小版本也改过行为(resume 发 Command 在当前版本会直接崩),
|
|
# 所以上限卡到下一个小版本——升级要主动改这里、重新锁、跑一遍测试。
|
|
# 精确版本在 requirements.lock 里
|
|
"langgraph>=1.2.11,<1.3",
|
|
"langgraph-checkpoint-sqlite>=3.1.1,<3.2",
|
|
"langchain-core>=1.6.3,<1.7",
|
|
"langchain-anthropic>=1.7.2,<1.8",
|
|
"langchain-openai>=1.6.2,<1.7",
|
|
"langchain-mcp-adapters>=0.3.2,<0.4",
|
|
"mcp>=1.30,<2",
|
|
"numpy>=2.0",
|
|
"jsonschema>=4.23",
|
|
"beautifulsoup4>=4.12",
|
|
"cryptography>=43.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
# microVM 沙箱(独立 Linux 内核)。约 35MB wheel + 首次约 50MB 运行时下载,
|
|
# 再加一次 OCI 镜像拉取(实测约 55s),所以不进默认安装。
|
|
# environment.yml 里已经带上了;单独装用 `pip install 'agentlab-backend[microvm]'`。
|
|
microvm = ["microsandbox>=0.6"]
|
|
# 测试:conda 环境默认不装,跑测试前 pip install 'agentlab-backend[dev]'
|
|
dev = ["pytest>=8.0", "pytest-asyncio>=0.24", "pytest-xdist>=3.6"]
|
|
# 文档解析。PDF 和 Word 的解析库加起来几十兆,只用纯文本的人不该为此
|
|
# 付出安装时间——和 microvm、db 一样做成可选。HTML 用已在依赖里的 bs4。
|
|
docs = ["pypdf>=5.0", "python-docx>=1.1", "python-pptx>=1.0", "openpyxl>=3.1"]
|
|
# 数据库接入。三个驱动都是 asyncio 原生且免装数据库客户端——
|
|
# oracledb 走 thin 模式,省掉了 Oracle Instant Client 这个历来最劝退的一步。
|
|
db = ["aiomysql>=0.2", "oracledb>=2.0", "asyncpg>=0.30"]
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["app"]
|