企业知识库接入文档

企业知识库接入文档

面向:知识库管理员、IT 与开发同事最后更新 2026-11-04适用于 TelosWork 企业版

资料只维护一份,问答入口按需打开。这份文档讲清楚每个入口怎么接:哪些点几下就好,哪些需要你们的开发同事写一点代码,以及每个入口能看到哪些库。

选一种接入方式

几种方式可以同时用,背后都是同一批知识库。先看看你们的同事平时在哪里干活:

入口适合谁要不要写代码能问到哪些库
TelosWork 客户端每天用 AI 干活的员工不用提问人自己有权限的库
飞书 / 企业微信 / 钉钉不装客户端的一线同事不用,扫码或填凭证数字员工绑定的库
对外 MCP 服务Claude、Cursor、Dify、n8n、自研智能体不用,粘贴一段配置端点开放的库
嵌入业务系统网页 即将上线在 OA、ERP、CRM 里办事的员工前端一段、后端一个小接口数字员工绑定的库
开放出口要库管理员同意。把库挂到 IM、开放 MCP、嵌入网页,都会让库里的内容被更多人问到,所以操作人必须是这些库的管理员。关闭、吊销、删除则只要是创建人就能做,随时可以收回。

准备工作

  1. 开通企业版与知识库资格。组织管理员在管理后台的「访问资格」里,给需要用企业知识库的成员开通资格;要创建企业数字员工的人,还需要在「创建企业员工」里单独授权。
  2. 建库、导入资料。在 TelosWork 的「知识库」页切到「企业」,按部门或主题建库,批量上传 PDF、Word、Excel、PPT、扫描件等文件,等待解析完成。
  3. 设置权限。给每个库按部门或成员分配查看、编辑、审核、管理权限。后面所有对外入口,都要求操作人是对应库的管理员。
  4. 确认你的知识库地址。用云端时由我们提供;部署在你们服务器时,就是部署时配置的域名(例如 https://kb.你们公司.com)。下文的 <知识库地址> 都指它。
上线前先用 20 个真实问题试一轮,看看哪些答不上来、引用对不对,补完资料再开放给更多人。

在 TelosWork 里用

员工登录 TelosWork 客户端后,就能看到自己有权限的企业知识库,不需要额外配置。

  1. 在对话输入框里输入 @,选「知识库」,勾选要查的企业知识库,再提问。
  2. 或者在新对话里选一个企业数字员工,直接用它绑定的库回答。
  3. 回答里的角标 1 点开就是原文段落;可以接着让它把结果整理成表格、文档或 PPT。

客户端里的检索按提问人本人的权限进行:同一个问题,销售和财务看到的引用可能不同,没有权限的资料不会出现在回答里。

企业数字员工

数字员工是给知识库配的一个「岗位」:有名字、人设、欢迎语和绑定的知识库。IM 机器人和网页嵌入都挂在数字员工上,所以先建好它。

  1. 新建员工。在「数字员工」页切到「企业员工」,点新建,填写名称、图标,选择要绑定的知识库(需要这些库的管理员权限)。
  2. 写角色提示词。说清楚它是谁、回答风格、什么问题不回答。例如「你是远帆科技的制度助手,只回答人事、财务、行政制度问题,回答要引用制度原文」。
  3. 设欢迎语。员工第一次打开对话时看到的话,可以列几个常见问题作为引导。
  4. 分发设置。选择哪些部门或成员能在自己的 TelosWork 里用它。
  5. 打开对外入口。在「IM 机器人」页签挂到飞书、企业微信、钉钉;网页嵌入上线后在「网页嵌入」页签开通。
员工改绑知识库后,已挂的机器人和网页嵌入会立刻使用新的范围,旧对话会被重置,避免继续引用已经移除的资料。

飞书 · 企业微信 · 钉钉

在企业员工的「查看配置 → IM 机器人」里点「管理机器人」,选平台后按下面的步骤操作。企业微信和钉钉支持扫码自动配置,会自动创建应用并校验凭证,推荐优先使用。只想给某几个库配一个独立问答机器人,也可以在企业知识库列表的「知识库问答机器人」里创建。

飞书

  1. 在飞书开放平台创建企业自建应用,在「凭证与基础信息」中复制 App ID 和 App Secret,填回 TelosWork。
  2. 在「添加应用能力」中启用机器人能力。
  3. 在「权限管理」中开通:im:message.p2p_msg:readonly、im:message:send_as_bot、cardkit:card:write。
  4. 在「事件与回调」中把接收方式设为长连接,添加事件 im.message.receive_v1。需要首次私聊时自动发欢迎语的,再开通 im:chat.access_event.bot_p2p_chat:read 并订阅对应的进入会话事件。
  5. 在「版本管理与发布」中创建版本并发布,并把可用范围设为全员或指定部门。

企业微信

  1. 推荐:在 TelosWork 里点「扫码自动配置」,用企业微信扫码授权,自动创建智能机器人并填好凭证。
  2. 手动方式:企业微信客户端打开「工作台 → 智能机器人 → 创建机器人 → 手动创建」,选择 API 模式;在「API 配置」中把连接方式选为「使用长连接」,复制 Bot ID 与 Secret(Secret 只显示一次)。
  3. 设置机器人的可见范围。想在问答记录里看到提问人姓名,可以另填企业 ID 和一个有通讯录读权限的应用 Secret(选填)。

钉钉

  1. 推荐:在 TelosWork 里点「扫码自动配置」,用钉钉 App 扫码,自动创建内部应用并校验凭证。
  2. 手动方式:在钉钉开发者后台创建企业内部应用,复制 Client ID 和 Client Secret;在「机器人与消息推送」中开启机器人,消息接收模式选 Stream 模式。
  3. 想要打字机式的逐字回复,在钉钉卡片平台建一个 AI 卡片模板,把模板 ID 填进 TelosWork,并开通界面上列出的卡片权限;不填则回答生成完整段发出。
  4. 在「版本管理与发布」中发布新版本并设置可见范围。钉钉后台的任何修改都要发布新版本才生效。
凭证校验通过,只说明 ID 和密钥是对的;机器人能力是否开启、可见范围是否覆盖到同事,需要在对应 App 里私聊一次机器人确认。

对外 MCP 服务

把选定的知识库开放成一个标准 MCP 服务,任何支持 MCP 的 AI 工具或你们自研的智能体都能检索它。

  1. 在「知识库」页切到「企业」,打开「对外 MCP 服务」,点「新建」,填名称并勾选要开放的库。
  2. 在端点详情的「接入与密钥」页点「新建密钥」,填名称和有效期,点「创建并复制」。密钥只显示这一次,复制到剪贴板的就是完整配置。
  3. 粘贴到你的 MCP 客户端。标准格式如下:
mcpServers.json
{
  "mcpServers": {
    "telos-kb": {
      "type": "http",
      "url": "https://<知识库地址>/api/v1/kb-mcp/<端点 ID>",
      "headers": { "Authorization": "Bearer <你的密钥>" }
    }
  }
}

Dify、n8n 这类填表的平台,只需要填服务地址和请求头 Authorization: Bearer <你的密钥>。在详情页的「调用记录」里能看到每次调用的时间、结果和耗时;密钥可以随时吊销,端点可以随时停用。

嵌入业务系统网页 即将上线

在你们自己的 OA、ERP、CRM 网页右下角加一个问答按钮,员工登录你们的系统后点开就能问,不需要再登录 TelosWork。窗口可以浮在页面上,也可以在右侧占位、把页面内容往左挤。

网页嵌入正在内测,本节的接入方式和 Java SDK 已经定稿,正式上线时间见更新日志。想提前接入,请预约演示。

接入一共三件事:管理员在 TelosWork 里开通(7.2);前端加一段代码(7.3);后端加一个签名接口(7.4)。

7.1它是怎么认人的

挂件自己不做登录,它相信你们系统的登录结果。你们的后端用一把只有双方知道的密钥签一张 5 分钟有效、只能用一次的「通行证」,挂件拿着它来换对话权限:

所以:没登录你们系统的人用不了;能问到哪些库由数字员工绑定的库决定,所有登录用户看到的范围相同;每个人的对话历史互相隔离。

7.2在 TelosWork 开通

  1. 打开企业员工的「网页嵌入」页签,点「开通网页嵌入」。开通后默认是关闭状态,配置完再打开。
  2. 允许嵌入的网站:填你们系统的地址,例如 https://oa.yuanfan.com,必须是 https;子域名可以写 https://*.yuanfan.com。不在列表里的网站加载不出挂件。
  3. 展开方式与外观:浮动或右侧占位、默认宽度、浅色或深色。
  4. 新建签名密钥:填名称和有效期,点「创建并复制」。会复制密钥 ID 和密钥,只显示这一次。同一个挂件最多两把有效密钥,用来轮换。
  5. 把「挂件 ID、密钥 ID、密钥」交给你们的开发同事,配进后端(见 7.4),然后打开开关。

7.3前端加一段代码

在你们系统的公共页面模板里,</body> 之前加入:

index.html
<script src="https://<知识库地址>/widget/loader.js"></script>
<script>
  TelosWidget.init({
    widgetId: 'wgt_7f3a9c2e41b8',   // 换成你的挂件 ID
    mode: 'overlay',              // overlay 浮在页面上;push 右侧占位、页面左移
    getToken: async () => {
      const r = await fetch('/api/telos-widget-token', { credentials: 'same-origin', cache: 'no-store' })
      if (r.status === 401) return null       // 没登录:挂件显示「请先登录」
      if (!r.ok) throw new Error('获取通行证失败')
      return (await r.json()).token
    },
  })
</script>
参数 / 方法说明
widgetId必填,在「网页嵌入」页签复制
getToken必填,返回通行证字符串;未登录返回 null。挂件会在需要时再次调用,不要自己缓存通行证
modeoverlay(默认)或 push;屏幕窄于 768px 时自动全屏
pushTargetpush 模式下被挤开的元素,默认整个页面;页面有固定定位的顶栏时可以指定主内容容器
onLayoutChange(width)窗口打开、关闭或拖动宽度时回调,方便你们调整自己的布局
TelosWidget.open() / close() / destroy()用自己的按钮控制打开、关闭;退出登录时调用 destroy() 清掉当前对话
签名接口必须和页面同域,靠你们自己的登录 Cookie 鉴权,不要为它开放跨域。前端代码里只放挂件 ID,不能出现密钥。

7.4后端加签名接口

这个接口只做一件事:确认当前请求的用户已经登录,然后返回一张通行证。已登录返回 200 {"token":"..."},未登录返回 401,两种响应都带 Cache-Control: no-store。

Java 项目推荐直接用我们的 SDK,签名、有效期、一次性编号、禁止缓存和未登录处理都由它完成。你们只需要写一个方法,告诉它当前用户是谁。SDK 兼容 Java 8 及以上、Spring Boot 2.2+ 与 3.x,同一个 jar 包通用。

<!-- pom.xml -->
<dependency>
  <groupId>com.shtelos.telos</groupId>
  <artifactId>telos-widget-spring-boot-starter</artifactId>
  <version>0.1.0</version>
</dependency>

# application.yml(三个值都从环境变量或配置中心读)
telos:
  widget:
    widget-id: ${TELOS_WIDGET_ID}
    key-id: ${TELOS_WIDGET_KEY_ID}
    secret: ${TELOS_WIDGET_SECRET}
    # path: /api/telos-widget-token   默认就是这个地址

// 唯一要写的代码:告诉 SDK 当前登录用户是谁(以 Spring Security 为例)
@Bean
TelosWidgetUserResolver telosWidgetUserResolver() {
  return request -> {
    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    if (auth == null || !auth.isAuthenticated()
        || auth instanceof AnonymousAuthenticationToken) return null;   // 未登录 → 401
    LoginUser u = (LoginUser) auth.getPrincipal();                   // 换成你们的用户类
    return new TelosUser(String.valueOf(u.getId()), u.getRealName());
  };
}

拿到 Java SDK

用户 ID 怎么取

sub 用你们系统里稳定、不会复用的用户编号,例如用户表主键或工号,不要用手机号。name 选填,只用于问答记录里显示提问人。

两条红线:①用户 ID 只能从服务端的登录状态取,绝不能读请求参数、请求头或前端传来的值,否则任何人都能冒充别人;②密钥只放在后端的环境变量或配置中心,不进前端、不进代码仓库、不写进日志。

7.5令牌规范

通行证是一个标准的 HS256 JWT。不用 SDK 的语言按下表签发即可;SDK 已经按它实现。

位置字段要求
头部alg / typ固定 HS256 / JWT,其他算法一律拒绝
头部kid密钥 ID,在「网页嵌入」页签复制
内容aud挂件 ID
内容sub用户 ID,最长 128 个字符
内容name选填,显示名,最长 64 个字符
内容iat / exp签发、过期时间(秒级时间戳),exp 不超过 iat 之后 300 秒
内容jti随机 UUID,每张通行证不同,用过一次就作废
签名密钥把密钥字符串按 UTF-8 直接作为 HMAC 密钥,不做 Base64 解码

首期不读取其他字段,也不建议放入额外的个人信息。

7.6自测与排错

先在浏览器里登录你们的系统,打开 https://你们的系统/api/telos-widget-token:应该看到 {"token":"..."};退出登录后再打开应该是 401。响应头里要有 Cache-Control: no-store。

现象常见原因
页面上没有出现问答按钮网站地址不在「允许嵌入的网站」里;网页嵌入开关没打开;页面的内容安全策略拦截了知识库地址的脚本
点开后一直提示「请先登录」签名接口返回了 401:检查接口能否读到你们的登录状态,以及请求是否带上了 Cookie
提示「身份校验失败」密钥或密钥 ID 不对、密钥已吊销或过期、挂件 ID 填错;复制密钥时多带了空格或换行
提示「通行证已过期」你们服务器的时间不准,请开启时间同步;或者通行证被缓存了,确认接口每次都重新签发
能对话但回答「没有找到依据」数字员工没有绑定库,或绑定的库里没有相关资料,去问答分析里看看具体问题
轮换密钥不停机:先新建第二把密钥,把后端配置换成新的并发布,确认正常后再吊销旧密钥。

安全须知

常见问题

网页嵌入要多少开发量?

前端一段代码,后端一个接口。Java 项目引入 SDK 后只需写一个方法,告诉它当前登录用户是谁。

我们的系统不能改代码怎么办?

如果你们有统一身份认证(单点登录),可以和我们沟通对接方式;也可以先用飞书、企业微信、钉钉机器人,不需要改任何系统。

不同员工能看到不同范围吗?

机器人和网页嵌入目前对所有可用的人开放同一个范围。需要按人区分时,可以建多个数字员工分别绑定不同的库,或者让员工在 TelosWork 客户端里按本人权限提问。

部署在我们自己服务器上,接入方式一样吗?

一样,只是 <知识库地址> 换成你们的域名。内网环境用离线包安装 SDK,飞书、企业微信、钉钉机器人需要服务器能访问对应平台。

想先看看效果?用你们的一批真实资料搭一个试点库,接到你们常用的入口里试用。