Repository navigation
Releases: zj-unicom-ai/UniEmployee
Releases · zj-unicom-ai/UniEmployee
Release list
v0.22.0:小网安全实操能力与 Deep Agents 升级
新增:小网安全实操能力
- 为小网增加安全实操技能,支持 CTF、安全日志、脱敏与 AI 安全题;通过 OpenSandbox 执行附件分析,保存答案、证据和完整解题报告,并可导出会话记录。
- 比赛模式可配置赛事模型,运行时限制可用工具与数据源;新增模拟竞赛运行脚本。
- 小网既有故障、指标、容量和 SOP 能力保持可用;应用启动时幂等补齐安全技能和工具指派。
依赖升级
- Deep Agents 升级至 0.7.29,LangGraph 升级至 1.2.12,并同步兼容的 LangChain 依赖。
- 沙箱镜像增加
pycryptodome,供离线密码学分析使用。
升级说明
- 更新后端依赖并重启应用;使用安全实操前需启用并配置 OpenSandbox。安全代码执行不会回退到宿主机。
- 重新构建并部署
uniemployee/sandbox:py312-data镜像,以提供新增的密码学依赖。 - 已有数据库通过启动时的 net-ops backfill 幂等补齐技能与工具指派;不会覆盖管理员自定义人设。
验证
- 定向安全实操、沙箱与流式错误测试通过;前端构建通过。
- PR CI 的 SQLite 后端测试、PostgreSQL 集成测试、前端构建全部通过。
v0.21.6:Deep Agents 技能运行能力
新增:Deep Agents 技能运行能力
- 升级 Deep Agents 至 0.7.23,支持同一会话内重载更新技能、主动固定技能,以及技能专属工具按需开放。
- 聊天页可为当前请求选择技能;客户画像和故障影响分析分别绑定本体专属工具,沿用员工授权、权限护栏和审批流程。
- 技能取消指派后回收对应 Store 文件;会话历史显示技能标签,不把内部规程正文当作用户消息展示。
升级说明
- 更新部署依赖并重启应用后生效;已有 PostgreSQL 数据无需清库或重播种。
- 已在对话中读取或固定的技能保留当时的内容快照;要使用新内容可重新读取或再次选择技能。
验证
- 后端全量测试:618 passed、41 skipped;前端构建通过。
- PR CI 的 SQLite 测试、PostgreSQL 集成测试、前端构建全部通过。
v0.21.5:自动化安全与生产环境加固
主要变更
- 自动化 Webhook 升级为 HMAC-SHA256 签名,签名绑定方法、路径、时间戳、幂等键和请求体摘要;生产环境要求强密钥,管理 API 不再回显密钥。
- 自动化执行增加用户身份校验与租户隔离,记录触发方和运行主体;Webhook v2 签名绑定租户 ID。
- 增加生产启动预检,校验关键密钥、数据库、Cookie、沙箱、RAGFlow 与可写目录;发现演示数据或不安全配置时阻止生产启动并提示人工处理。
- 建立分层 CI:SQLite 回归、隔离 PostgreSQL 16 集成测试、前端构建;覆盖迁移、事务回滚、并发幂等、租户过滤、Webhook 重放及 LangGraph Checkpoint/Store。
升级注意
- 生产 Webhook 调用方需迁移到 v2 HMAC,并在签名中加入租户 ID;启用的事件任务密钥至少 32 字节。
- 自动化任务的运行身份必须是有效且获授权的同租户用户,请部署前检查既有任务并更新无效身份。
- 生产环境请按部署指南配置强 JWT_SECRET、PostgreSQL 非默认密码、Secure Cookie、沙箱认证与 RAGFlow 数据集范围;旧演示资产需管理员人工核对,不会被自动删除或迁移。
完整变更记录见 CHANGELOG.md。
v0.21.1:DeepAgents 0.7.21 依赖升级
升级说明
- DeepAgents 升级至 0.7.21,同步更新 LangChain、Google GenAI 适配器及 Pydantic 兼容版本。
- 保持现有运行时配置,不启用新的可选文件系统能力。
验证
- 后端 CI 测试、前端构建通过。
- DeepAgents 相关定向测试通过;依赖运行服务的本地测试与升级前基线一致。
v0.21.0:生产就绪度加固 + 运行评估闭环
0.21.0 (2026-09-28)
新增:生产就绪度加固
- 生产环境隔离:新增
demo_isolation模块,APP_ENV=production时关闭演示本体播种、禁止 mock CRM / CRM Lab 连接器加载;旧库存在 seed 来源数据或未解除的实验连接器指派时启动报错要求人工核对,绝不自动删数据 - 执行边界收紧:local_shell 子进程不再继承应用环境变量(只传 PATH);生产模式执行型员工强制走 OpenSandbox 沙箱,未启用则拒绝启动
- Agent 运行持久化:新增
agent_runs模块,Web 对话的 Agent 任务落库并由独立 asyncio task 持有,SSE 事件持久化支持断线按 seq 补发;同会话重复触发返回 409;提供/runs/{id}查询、/events重放、/cancel取消与 active-run 探测;进程重启时遗留运行标记 abandoned,事件按AGENT_RUN_EVENT_RETENTION_DAYS清理 - 模型并发准入:
model_admission按模型的单进程并发闸(MODEL_MAX_CONCURRENT/MAX_QUEUE/QUEUE_TIMEOUT,默认关闭),超限快速失败;模型请求统一加MODEL_REQUEST_TIMEOUT_SEC超时;/api/ai-models/admission暴露排队与拒绝计数 - 子代理调用预算:
SubagentBudgetMiddleware拦截 task 工具,限制单次 run 的子代理调用总次数与顶层并发(SUBAGENT_MAX_*,默认关闭),run 结束输出预算使用日志 - 自动化执行记录:新增
automation_executions表,触发键唯一约束防重复投递、20s 心跳、启动时心跳超时记录标 interrupted、按保留期清理;事件入口与人工重跑要求Idempotency-Key,前端自动化页新增执行历史与重跑入口 - CRM Lab 连接器:只读 MCP 桥接独立 HTTP 服务(
docker-compose.crm-lab.yml),API 地址与只读密钥仅注入连接器子进程 env,不落 catalog 配置
新增:运行评估闭环
- 评测集管理(
evaluation_sets)+ 管理端评估工作台页面重构,Trace 关联评估维度扩展,支持从对话/Trace 沉淀基准用例并批量回归
优化
- 备份:
backup.sh将 workspace 与 manifest 一并归档,支持容器内 pg_dump(BACKUP_PG_CONTAINER)与一致性标记(BACKUP_QUIESCED);新增verify_backup_restore.py隔离恢复演练脚本 - 容器:镜像去掉 build-essential/curl,健康检查改用 python urllib,构建瘦身
- 前端:图片附件页内预览(带鉴权取 blob,20MB 上限);切会话安全 detach/resume 运行流,不再强制"先停止生成";消息气泡新增 notice 状态行
验证
- 本轮改动涉及的 10 个测试文件全部通过;CI 后端测试 + 前端构建通过
- 生产隔离/准入/预算/执行记录均附 PG 验证脚本(
scripts/verify_*_postgres.py)
v0.20.0:分析对话与产物工作区优化
0.20.0 (2026-09-24)
新增:分析对话与产物工作区优化
- HTML 看板纳入产物工作区:对话内通过
REPORT_HTML_START/END输出的完整 HTML 看板,在新生成时自动保存并登记为会话产物;打开历史对话时幂等补登记,保留原有对话内预览,并支持在产物工作区查看、下载和按现有权限共享 - 历史看板批量回填:新增
scripts/backfill_inline_reports.py,可预览并批量归档历史对话里的助手看板内容;忽略工具消息,避免把技能模板或工具输出重复登记 - 小数工作台体验对齐:定制分析对话复用通用工作台的历史会话侧栏、执行详情面板和标准宽度/全宽模式,同时保留数据源、模型、SQL 展示和表格问答能力
优化
- 产物工作区增加分页,每页显示 15 项
- 对话中已归档的 HTML 看板显示工作区入口;常规文件继续使用原有文件卡片
conversation_files增加artifact_type,既有数据库启动时幂等迁移
验证
npx vite build通过;Python 文件语法编译通过;本地/health检查通过
v0.19.1:资源中心模块全面梳理修复
本次迭代对资源中心模块做了全面梳理与修复(PR #55–#61),覆盖 P0/P1/P2 共 12 项问题。
🐛 修复
- 工具编辑死接口 + 审批策略即时生效(#55):
PUT /admin/tools/{id}此前前端无入口,且改审批策略后员工的 interrupt_on 不同步(审批开关实际不生效)。现同步重算受影响员工并即时失效编译缓存;前端工具卡片补编辑弹窗(描述 + 需审批开关),并明示"工具由代码注册,此处仅维护元信息与审批策略" - 技能"内置"标签误标(#56):原判断逻辑恒为真导致所有技能都显示"内置";改用 is_custom 字段正确区分内置/自定义
- 普通用户权限收窄(#57):技能"查看内容"按钮仅 admin 可见(原普通用户点击必 403);
/api/catalog剥离 SOP 全文,内部流程文档仅管理员可见 - 删除技能磁盘清理(#58):删除自定义技能同步清理 skills-custom 目录,消除"删除后残留 + 同 ID 再上传复活幽灵内容",带路径穿越防护
- 前端反馈优化(#59):RAGFlow 空态区分"接口报错 / 未配置 / 无数据集"并透出具体错误;内置技能隐藏编辑入口;删除失败提示能拿到后端错误原因
- API 一致性(#60):create_connector 返回格式与其他端点统一;update_kb 未传字段保留原值;catalog 工具列表补 source 字段
- 自动 id 同秒覆盖(#61):emp_/kb_/sop_/conn_ 自动生成 id 追加 uuid 后缀,同秒连续创建不再静默互相覆盖
✅ 验证
- 新增回归测试:审批策略联动、公开目录脱敏、磁盘清理、自动 id 唯一性等
- 各 PR 测试子集全绿(41 + 29 + 30 项);
npx vite build通过 - 环境性失败(登录/浏览器类)均与 main 基线对比确认非本次引入
v0.19.0:平台护栏升级 + 报告/SSE 收口
本次迭代围绕平台护栏升级与会话可靠性收口,整合 4 个 PR:analyst 全局配置管理权限收紧到 admin + 审计、工具能力策略升级为统一 allow/deny + MCP 默认拒绝、报告新窗口改受控壳页面、SSE 断流兜底 + 启动遗留 Trace 收口。
✨ 新功能 / 平台护栏升级
- analyst 全局配置管理权限收紧到 admin(#50):术语 / SQL 示例 / 同义词 / KB 绑定 / 连接器绑定等全局配置操作一律
Depends(auth.require_admin)+ 写 catalog 审计日志;list_employee_connectors默认不下发 MCP 密钥;前端 analyst 子路由加requiresAdmin守卫,连接器配置脱敏展示 - 工具能力策略升级为统一 allow/deny(#51):护栏从「单一白名单」升级为
tool_allowlist/tool_denylist/mcp_default_deny/mcp_allowlist四字段(fnmatch 通配),MCP 默认拒绝 + 按 server 分组授权;本地 / 闭包 / MCP 三类工具统一过_guard_tool;子代理编译传user_id避免绕过护栏;前端 ToolCallsPage 新增 allow/deny/MCP 配置 UI
🐛 修复
- 报告新窗口改受控壳页面(#52):原 Blob URL 报告新窗口脚本能通过
window.opener回连主站 cookie/token;改走/report-viewer.html受控壳页面 +<iframe sandbox="allow-scripts">,主站 token / cookie 不会自动带到该页 - SSE 断流兜底 + 启动遗留 Trace 收口(#53):客户端断开 SSE 时新增
except asyncio.CancelledError分支:先 flush pending Trace + 调_persist_partial_response(asyncio.shield)把已流出bot_text写入 checkpoint +finish_run(status='cancelled');启动时traces.finish_stale_running()把上次进程遗留的runningTrace 收口为abandoned
✅ 验证
- 新增
tests/test_analyst_permissions.py、tests/test_streaming_errors.py::test_cancelled_stream_marks_trace_and_persists_partial_answer;扩展test_guard.py/test_builtin_tools_guard.py/test_mcp_connectors.py覆盖 allow/deny 通配、MCP 默认拒绝 + 按 server 授权、子代理编译注入 user_id 场景 - 各 PR 测试子集全绿(197 + 29 + 26 项);
npx vite build通过;服务端路由注册冒烟通过 - 版本号 0.18.0 → 0.19.0(
frontend/package.json+backend/app/main.py::APP_VERSION+.env.example+ README 双语 + CHANGELOG)
Full Changelog: v0.18.0...v0.19.0
v0.18.0:企业身份与租户安全(OIDC SSO + 授权上下文 + 运行数据租户隔离)
本次迭代核心一句话:接入 OIDC 单点登录 + 外部身份不可变绑定 + 租户授权上下文 + 运行数据租户隔离。
✨ 新功能
- OIDC 单点登录:新增通用授权码登录,覆盖 OpenID Connect Discovery、JWK 签名、issuer/audience/nonce/state 校验与 HTTP-only 平台会话
- 外部身份绑定:以不可变
issuer + sub匹配用户,绝不按邮箱合并;IdP 用户组只能通过本地受控映射授权,原始角色声明不能直接提权 - 紧急本地访问:启用 SSO 后,只有种子紧急管理员保留本地密码登录能力
- 租户授权上下文:请求统一产出包含用户、租户、组织树和权限的
AuthContext,并注入 Agent 运行时配置 - 运行数据租户隔离:会话、附件入口、Trace 和审批持久化并校验
tenant_id;单企业存量数据会安全迁移到固定企业租户
🐛 修复 / 工程化
- 发布可靠性:后端测试不再依赖预构建前端静态目录,CI 后端/前端任务可独立运行
✅ 验证
- 新增 OIDC 身份绑定、SSO 会话、授权上下文与跨租户隔离测试
- 后端测试集与前端生产构建均已在 CI 通过
- 版本号 0.17.0 → 0.18.0(
frontend/package.json+backend/app/main.py::APP_VERSION+.env.example+ README 双语 + CHANGELOG)
Full Changelog: v0.17.0...v0.18.0
v0.17.0:小数数据分析师方法论升级 + 新员工小保析保险经营分析
本次迭代核心:小数从「数据库问数助手」升级为按分析师方法论工作的数据分析师,并新增第八个内置员工——小保析(保险经营分析数字员工)。
✨ 新功能
- 小数六步分析师工作流:理解业务问题 → 获取数据 → 验证数据 → 分析 → 归因 → 生成结论 → 输出报告;输出强制区分事实/推断/建议,重要结论必须说明数据质量限制
- 数据验证工具落地:新增
sql_db_profile(数据表画像:行数/非空率/数值范围/均值/分类 Top 值)与sql_db_quality_check(空结果/样本量/缺失/重复风险检查),方言感知保守标识符引用,仅走表名白名单 - 归因技能:新增
sql-root-cause-analysis技能(不依赖 run_python 的 SQL 归因规程),老库幂等 backfill - 新员工小保析(insurance-analyst):保险经营分析数字员工(保费收入/赔付率/续保率/渠道贡献/机构异常识别),配 insurance-operations-analysis 技能;
scripts/generate_insurance_demo_data.py生成可复现演示数据集
🐛 修复
- 报告新窗口打开改 Blob URL(修复
noopener返回 null 导致打开失败) - 报告 HTML 提取增加可渲染性校验,避免误提取短片段
- AnalystView 去除与 ChatMessage 重复的报告渲染
- ChatView 打开历史会话时加载对应员工信息
✅ 验证
- 新增 8 个测试用例全绿(profile/quality_check 6 个 + 小保析种子校验 + 内置员工数断言更新为 8)
npx vite build通过;全量 pytest 失败清单与 main 基线一致(均为既有登录 401/429、playwright 环境失败)