智能助手
智能助手是后台里的一个对话页面。业务人员用自然语言提要求,模型 / 智能体就用后台自己的工具、以这个用户本人的身份去办:查数据、做汇总、按要求修改数据;需要外部信息时,它联网搜索并阅读网页。凡是要改数据,它都先把“改哪条记录、每个字段的旧值 → 新值、依据哪些来源”列出来,由人确认后才执行。
还可以在列表里勾选多条记录,让智能体对每一条批量执行同一个技能(比如“补齐客户信息”),结果进批次审批页,逐条或一次确认。
智能体只通过工具办事:工具就是各模块已有的 MCP 工具(和 MCP 智能体接入用同一份工具清单和同一套检查),再加上内置的联网、计划清单和反问。它不执行命令、不读写服务器上的文件、不操作浏览器。
默认关闭
智能助手默认关闭,不需要的项目可以跳过这一页。它运行在现有的 Redis 任务队列和 Socket.IO 推送上,不需要新的服务。完整说明见仓库的后台智能体文档。
打开开关
| 开关 | 在哪里 | 作用 |
|---|---|---|
APP_AGENT | 服务端环境变量,默认 false | 只在启动时读取,改完要重启全部服务端实例。关闭时整个模块不加载:/api/agent/* 全部返回 404,侧栏、角色授权树和租户套餐里都看不到 智能体 菜单组,页面右下角的入口也不出现 |
agent.paused | 系统管理 → 参数设置,默认 false,只有超级管理员(root)能改 | 急停:改成 true 后拒绝新的对话和工具调用,正在运行的对话在半秒内停下;改回 false 就恢复。不需要重启,所有实例同时生效 |
APP_AGENT 和 APP_MCP 互不依赖:只开智能助手时,/api/mcp 仍然不存在。数据表始终由迁移创建,菜单和示例数据始终由种子写入,打开开关时不需要另外迁移。部署时的注意事项(出口防火墙、密钥)见部署 · 智能助手。
打开后的第一步:
- 超级管理员在 智能体 → 智能体设置 的“模型”页签里添加一个模型提供方(见下节)。没有可用的模型时,对话页提示联系管理员,输入框不能用;
- 需要联网时,在“联网搜索”页签添加一个搜索服务商;
- 在 系统管理 → 角色管理 里给业务角色勾选 智能助手;技能管理、批量执行和用量页要分别授权;
- 开启多租户时,先把 智能体 菜单组勾进租户套餐,这个租户的角色才能被授权。
智能体 菜单组紧跟在首页后面,有四个页面:
| 页面 | 内容 |
|---|---|
| 智能体 → 智能助手 | 对话页。批次审批页挂在它下面,不在菜单里显示 |
| 智能体 → 技能管理 | 个人和全租户的技能、提示词模板、租户说明 |
| 智能体 → 智能体设置 | 模型、联网搜索、外部 MCP、工具策略、平台技能、说明与限额。多租户时是平台专属页面,改动只有超级管理员能做 |
| 智能体 → 智能体用量 | 按日、用户或模型汇总的调用次数和 token 用量 |
见仓库的启用。
配置模型
模型经兼容 OpenAI 的接口(Chat Completions)接入,国内外常见的模型服务和本地的 Ollama 都能用。在 智能体 → 智能体设置 的“模型”页签里,每个提供方填名称、接口地址、密钥和可用的模型,可以设为默认。每个模型还可以标注:是否支持推理强度(对话里可以选低、中、高)、能不能看图片、上下文窗口多大。
| 服务 | 说明 |
|---|---|
| DeepSeek、通义千问(阿里云百炼)、Kimi(月之暗面)、智谱、OpenAI | 填各家的接口地址和在各家控制台申请的密钥 |
| Ollama | 装在本机或内网,密钥留空 |
- 智能体依赖模型的工具调用(function calling)能力,请选支持它的模型;
- 密钥只写不读:加密后存进数据库,页面上只显示“已保存”。改了接口地址必须重新填密钥,原来的密钥不会被发到新地址;
- 每个会话可以从已配置的模型里选一个,没选时用默认提供方的第一个模型;
- 模型服务报错时,页面只显示“模型服务调用失败”和简短原因,不把对方返回的内容原样展示。
各家的接口地址和模型名示例见仓库的配置模型。
联网搜索
智能体有两个内置的只读联网工具:一个搜索公网,一个阅读网页。
- 搜索服务目前支持博查(国内)和 Tavily(海外),在“联网搜索”页签添加,密钥同样加密存库、只写不读。没有配置搜索服务时,不提供搜索;
- 读网页只能读这一轮搜索结果里出现过的链接、用户在消息里给出的链接,或者管理员列进白名单的网站,防止网页内容诱导智能体把内部数据拼进网址发出去;
- 系统参数
agent.web.mode设为off时,完全不提供联网工具。
见仓库的联网搜索。
外部 MCP 服务器
在“外部 MCP”页签里可以接入本系统以外的 MCP 服务器(Streamable HTTP 传输),让智能体也能用它们的工具。
- 鉴权可以不填、填一个请求头令牌,或者用 OAuth 客户端凭据,凭据加密存库、只写不读;
- 默认只能连接公网地址,要指向内网必须由超级管理员明确勾选允许;
- 点“同步”列出服务器上的工具。新工具默认停用,管理员逐个启用并设置审批策略;外部服务器自称“只读”不可信,只有管理员明确设为直接执行的工具才不用确认;
- 服务器在调用中途需要用户补充信息时,对话页显示一张表单卡片。
见仓库的外部 MCP 服务器。
工具策略和审批模式
“工具策略”页签列出本系统的全部工具,每个设一个审批策略,对所有租户生效:
| 策略 | 含义 |
|---|---|
直接执行(auto) | 只读工具的默认值 |
询问(ask) | 停下来等发起人确认,写入工具的默认值 |
不提供(deny) | 智能体看不到这个工具 |
写入工具只能是“询问”或“不提供”,不能设成直接执行。在 MCP 工具页整体停用的工具,智能体同样用不了。
每个会话还可以切换审批模式:
- 只读:只提供只读工具;
- 询问(默认):每次写入都要确认;
- 信任本会话:同一个工具对同一条记录确认过一次后,本会话内不再询问。超级管理员可以用参数
agent.trust_mode关掉这个选项。
审批卡片列出工具、要改的记录、每个字段的旧值 → 新值和这一轮读过的来源,按钮是“确认执行”“本会话内同意”“拒绝”“取消本轮”。拒绝时可以写一句理由,智能体不会再重试。不管哪种模式,写入都不会在没人确认的情况下执行。
另外还有计划模式:智能体只读,先列出要做的步骤,你确认后再切回执行。
反问和选项
智能体拿不准时(比如搜到几家名字相近的公司),会停下来问你:一次 1 到 4 个问题,每题 2 到 4 个选项(单选或多选),另有“其他”可以自己填。这一轮会停下等你回答,你也可以选择不回答。你填的文字只当作数据交给模型。
对话页
智能体 → 智能助手 的用法和常见的桌面聊天软件相似:
- 会话列表:新建、搜索(标题和消息全文)、改名、置顶、归档、删除,按全部、进行中、未读、置顶筛选;临时会话不进列表,离开就删除;
- 回答:逐字显示,工具调用可以折叠展开;支持的模型显示“思考”摘要;引用的网页列在回答末尾,回答后给出几条后续建议;
- 分叉、重发和撤回:可以从任意一条消息分叉出新会话,或编辑最后一条消息后重发;“撤回”删除最后一轮,但已经执行的修改不会回滚;
- 分享和导出:生成只读链接,只有同一租户的人能打开;也可以导出为 Markdown;
- 运行中发消息:可以“追加到本轮”改方向,也可以“排到下一轮”,随时可以点“停止”;
- 附件:可以带上已经上传到文件管理的文件,文本类文件、xlsx 的第一张表和图片(交给能看图片的模型)会读给模型;
- 斜杠命令:输入
/可以新建会话、压缩上下文、切换模型、切换审批模式或计划模式、选技能、插入提示词模板、查看用量等; - 提醒:一轮停下等你确认或回答,或者一轮较长的对话完成时,会发站内信提醒;
- 右下角入口:任意页面右下角的 智能助手 按钮带着当前页面打开对话页;在列表页里,智能体还知道你勾选了哪几条。
见仓库的对话页。
技能
技能是一段任务说明,加上这项任务允许用的工具。比如“补齐客户信息”:逐个联网查官网、行业、城市……只填空字段,并写明来源。技能只是说明文字,不含可以执行的代码。
| 范围 | 谁维护 | 谁能用 |
|---|---|---|
| 平台 | 超级管理员,在 智能体设置 的“平台技能”页签 | 所有租户的所有用户 |
| 租户 | 有技能管理权限的人,在 智能体 → 技能管理 | 本租户的用户 |
| 个人 | 自己,在 智能体 → 技能管理 | 自己 |
同名时个人的优先,其次是租户的,最后是平台的。
- 平时模型只看到技能的名称和描述,判断要用时才读取正文;
- 在输入框里打
$加技能名(或用/skills)可以直接指定技能;技能列了工具时,这一轮只提供这些工具; - 一次对话做得好,可以点“存成技能”,让模型根据这次对话起草一个个人技能,保存为未启用,检查后再启用;
- 技能可以按
SKILL.md格式导入、导出。
格式和写法见仓库的技能。
说明、语气和提示词模板
- 说明拼在给模型的系统提示里,依次是:平台说明(超级管理员)→ 租户说明(技能管理 页)→ 个人说明(每个人自己写,比如“回答用表格”);
- 语气是个人选项:默认、简洁、详细、亲切、正式;
- 提示词模板是常用的提问,分个人和全租户两种,在输入框里用
/prompts插入。
见仓库的说明、语气与提示词模板。
限额、急停和用量
超级管理员可以用系统参数限制成本:每轮最多步数、最长时间和 token 数,每个用户、每个租户每天的 token 数,以及每个用户同时运行的对话数。超出时这一轮停下,并在对话里说明碰到了哪个上限。急停参数 agent.paused 见上文。
用量按用户、租户、模型和日期记账:智能体 → 智能体用量 按日、用户或模型汇总当前租户的调用次数和输入、输出 token;对话里的 /status 显示本会话的上下文用量、本轮和今天的用量与上限。
参数和默认值见仓库的限额、急停与用量。
批量执行和“补齐客户信息”示例
模板带了一个示例:生成示例 → 示例客户 里预置了几家知名公司,故意留空了一些字段;平台技能 补齐客户信息 配了三个工具(查客户、读客户资料、修改客户资料)。
- 在对话页直接说“补齐华为技术有限公司的行业”;
- 或者在示例客户列表里勾选几个客户,点“让智能体补齐”:每个客户开一个会话,按发起人的并发上限依次开始,每处修改都停在审批上;
- 批次审批页列出每一行的状态和待确认的修改,可以逐条确认,也可以“全部确认”或“全部拒绝”。
批量执行要单独授权,而且只能对自己能看到的记录发起。给自己的列表加上批量执行的方法见仓库的给自己的模块加工具、批量目标与技能,示例见批量执行与“补齐客户信息”示例。
安全模型
- 只属于发起人:会话、审批和提问只有本人能看、能操作,别人打开一律 404;只有发起人本人能确认修改;
- 按用户本人的身份运行:工具沿用 MCP 的检查(权限点、数据范围、租户和套餐、参数校验、超时、输出里的密钥字段遮蔽)。智能体能做的不会超过发起人自己在页面上能做的;每一轮开始前重新读取身份,用户被停用或删除后就不再继续;
- 写入必须有人确认:确认之后如果权限、审批模式或策略已经变了,调用照样会被拦下;
- 外部内容不可信:网页、搜索结果和外部 MCP 的输出都当作“只是数据”交给模型。即使模型被网页诱导去改数据,修改也会停在审批卡片上,卡片列出依据的来源;
- 出站请求只连公网:读网页和外部 MCP 只连公网地址,每次跳转都重新检查。模型的接口地址不做这项检查(为了本机或内网的 Ollama),只有超级管理员能配置;
- 密钥加密:模型、搜索服务和外部 MCP 的凭据用
APP_SECRET派生的密钥加密存库,只写不读;更换APP_SECRET后要重新填写; - 审计:每次工具调用(包括被拒的)都在 系统管理 → 日志管理 → 操作日志 里记一条,标明来自对话页;被修改的数据,修改人照常记为发起人。
见仓库的安全模型。
在演示站体验
在线演示没有打开智能助手。要体验,请在自己的安装上打开 APP_AGENT,并配置一个模型。
已知限制
- 并发对话数是软限制,同时到达的请求可能让一个用户多出一轮;
- 模型、搜索服务和外部 MCP 服务器都是平台配置,租户暂时不能自己添加外部 MCP 服务器;
- 只支持远程 HTTP 的 MCP 服务器,不支持要在服务器上启动进程的 stdio 类服务器;
- 撤回一轮不回滚已经执行的修改;工具超时只结束等待,已经开始的数据库操作无法中断;
- 模型的回答和判断可能出错,审批卡片上的旧值 → 新值和来源请逐条核对。
完整清单见仓库的已知上限。
相关功能: