52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
|
|
"""修复 code-build-context 中列表推导式 r 与前面 genexp 的 r 作用域冲突(就地更新数据库 Agent)。"""
|
|||
|
|
from __future__ import annotations
|
|||
|
|
|
|||
|
|
import os
|
|||
|
|
import sys
|
|||
|
|
|
|||
|
|
BACKEND = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|||
|
|
sys.path.insert(0, BACKEND)
|
|||
|
|
|
|||
|
|
from sqlalchemy.orm.attributes import flag_modified
|
|||
|
|
|
|||
|
|
from app.core.database import SessionLocal
|
|||
|
|
from app.models.agent import Agent
|
|||
|
|
|
|||
|
|
OLD_VEC = "vec_str = '\\n'.join((r.get('text') or r.get('content') or '') for r in right)"
|
|||
|
|
NEW_VEC = "vec_str = '\\n'.join((rec.get('text') or rec.get('content') or '') for rec in right)"
|
|||
|
|
OLD_KW = 'kw_lines = [f"{r}: {t}" for _, r, t in scored[:6]]'
|
|||
|
|
NEW_KW = 'kw_lines = [f"{role}: {text}" for _, role, text in scored[:6]]'
|
|||
|
|
|
|||
|
|
|
|||
|
|
def main() -> int:
|
|||
|
|
name = os.environ.get("PATCH_AGENT_NAME", "知你客服11号")
|
|||
|
|
db = SessionLocal()
|
|||
|
|
try:
|
|||
|
|
a = db.query(Agent).filter(Agent.name == name).first()
|
|||
|
|
if not a:
|
|||
|
|
print("未找到", name, file=sys.stderr)
|
|||
|
|
return 1
|
|||
|
|
wf = a.workflow_config
|
|||
|
|
for n in wf.get("nodes", []):
|
|||
|
|
if n.get("id") != "code-build-context":
|
|||
|
|
continue
|
|||
|
|
c = n.get("data", {}).get("code", "")
|
|||
|
|
c2 = c.replace(OLD_VEC, NEW_VEC).replace(OLD_KW, NEW_KW)
|
|||
|
|
if c2 == c:
|
|||
|
|
print("无需替换(可能已修复或内容不同)")
|
|||
|
|
return 0
|
|||
|
|
n.setdefault("data", {})["code"] = c2
|
|||
|
|
a.workflow_config = wf
|
|||
|
|
flag_modified(a, "workflow_config")
|
|||
|
|
db.commit()
|
|||
|
|
print("已更新", name, "code-build-context")
|
|||
|
|
return 0
|
|||
|
|
print("未找到 code-build-context 节点", file=sys.stderr)
|
|||
|
|
return 1
|
|||
|
|
finally:
|
|||
|
|
db.close()
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
raise SystemExit(main())
|