Skip to content

Releases: zj-unicom-ai/UniEmployee

v0.22.0:小网安全实操能力与 Deep Agents 升级

Choose a tag to compare

@wanrengang wanrengang released this 21 Oct 13:30
8f05754

新增:小网安全实操能力

  • 为小网增加安全实操技能,支持 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 技能运行能力

Choose a tag to compare

@wanrengang wanrengang released this 08 Oct 14:29
c38a00a

新增:Deep Agents 技能运行能力

  • 升级 Deep Agents 至 0.7.23,支持同一会话内重载更新技能、主动固定技能,以及技能专属工具按需开放。
  • 聊天页可为当前请求选择技能;客户画像和故障影响分析分别绑定本体专属工具,沿用员工授权、权限护栏和审批流程。
  • 技能取消指派后回收对应 Store 文件;会话历史显示技能标签,不把内部规程正文当作用户消息展示。

升级说明

  • 更新部署依赖并重启应用后生效;已有 PostgreSQL 数据无需清库或重播种。
  • 已在对话中读取或固定的技能保留当时的内容快照;要使用新内容可重新读取或再次选择技能。

验证

  • 后端全量测试:618 passed、41 skipped;前端构建通过。
  • PR CI 的 SQLite 测试、PostgreSQL 集成测试、前端构建全部通过。

v0.21.5:自动化安全与生产环境加固

Choose a tag to compare

@wanrengang wanrengang released this 08 Oct 07:24
132e32e

主要变更

  • 自动化 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 依赖升级

Choose a tag to compare

@wanrengang wanrengang released this 02 Oct 12:03
abd8ed0

升级说明

  • DeepAgents 升级至 0.7.21,同步更新 LangChain、Google GenAI 适配器及 Pydantic 兼容版本。
  • 保持现有运行时配置,不启用新的可选文件系统能力。

验证

  • 后端 CI 测试、前端构建通过。
  • DeepAgents 相关定向测试通过;依赖运行服务的本地测试与升级前基线一致。

v0.21.0:生产就绪度加固 + 运行评估闭环

Choose a tag to compare

@wanrengang wanrengang released this 28 Sep 07:28
0dafdd6

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:分析对话与产物工作区优化

Choose a tag to compare

@wanrengang wanrengang released this 24 Sep 06:24
7d5edf5

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:资源中心模块全面梳理修复

Choose a tag to compare

@wanrengang wanrengang released this 20 Sep 07:13
219e2ff

本次迭代对资源中心模块做了全面梳理与修复(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 收口

Choose a tag to compare

@wanrengang wanrengang released this 20 Sep 02:24
5068e2b

本次迭代围绕平台护栏升级与会话可靠性收口,整合 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() 把上次进程遗留的 running Trace 收口为 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 + 授权上下文 + 运行数据租户隔离)

Choose a tag to compare

@wanrengang wanrengang released this 20 Sep 02:36
ccc4732

本次迭代核心一句话:接入 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:小数数据分析师方法论升级 + 新员工小保析保险经营分析

Choose a tag to compare

@wanrengang wanrengang released this 16 Sep 23:25
fc5c664

本次迭代核心:小数从「数据库问数助手」升级为按分析师方法论工作的数据分析师,并新增第八个内置员工——小保析(保险经营分析数字员工)。

✨ 新功能

  • 小数六步分析师工作流:理解业务问题 → 获取数据 → 验证数据 → 分析 → 归因 → 生成结论 → 输出报告;输出强制区分事实/推断/建议,重要结论必须说明数据质量限制
  • 数据验证工具落地:新增 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 环境失败)