01 / 05
产品定位与实现
| 项目 | 核实结果 |
|---|
| 项目身份 | 腾讯开源 WeKnora,本次按该项目理解你所说的 Weknora。[2] |
| 版本基线 | 截至 2026-10-08,GitHub 最新正式发布版为 v0.8.2,发布于 2026-09-24;标签提交 3e8b0bfc80b845b2d4b2ed683994748741450a97。[1] |
| 产品形态 | 可自托管的知识平台,主要入口是浏览器;将文档问答、Agent 和 Wiki 建在同一套知识资源上。[2] |
| 许可 | 主项目采用 MIT;所含第三方组件遵循各自许可。[38] |
| 本次核查 | 官方发布记录、官方文档与 v0.8.2 源码;另比对与权限有关的 main 文件。未部署应用、未实测吞吐量或执行端到端权限测试。 |
| main 口径 | 核查到 main 提交 e7aaf8ae02608d1d9e0f84aa864106a5f1ae78a3;main 已有发布后的变化,本文功能结论以 v0.8.2 为准。 |
三类核心能力
| 模式 | 怎样处理任务 | 适合的问题 |
|---|
| RAG 问答 | 从获准的知识库检索相关片段,再交给模型组织带出处的回答。[5] | “这个产品的工作温度范围是多少?” |
| Agent 智能体 | 多轮检索和读文档,并按配置调用 MCP、浏览器或沙箱工具。[11][35][39] | “比较这几份供应商资料,列出规格差异和缺失项。” |
| Wiki | 从文档生成主题页、链接和出处,支持编辑与版本回滚。[10] | “把项目资料整理成可浏览的设备、流程和术语页面。” |
普通文档的处理过程是:导入 → 解析与分块 → 建立关键词/向量索引 → 检索与重排 → 带引用回答。这条流程更新检索资料,不会直接修改模型权重。[5][6][7]
技术组成:Go / Gin 后端、Vue 3 / TypeScript / TDesign 前端、Python gRPC 文档解析、PostgreSQL / ParadeDB、Redis / Asynq;图谱、存储和模型服务可另行配置。[3][4]
02 / 05
核心功能、常见场景与使用入口
| 功能 | 已实现的能力 | 使用边界 |
|---|
| 多格式解析 | PDF、Word、PPT、Excel、EPUB、XMind;TXT、Markdown、CSV、JSON;URL、HTML / MHTML;图片和音频。[6] | 扫描件/图片需要视觉能力;音频需要语音识别模型。格式支持不保证复杂版式全部还原。 |
| 资料管理 | 文件夹树、整目录上传、多标签、自动标签、部门/密级等自定义元数据、复制与跨库移动。[8] | 目录、标签和密级字段用于组织资料;不能据此认定已有访问控制。 |
| 检索与引用 | 向量语义检索、BM25 关键词检索、融合与重排、父子分块、答案来源引用。[5][7] | 型号/错误码更依赖关键词;长篇语义问题更依赖解析和向量召回。此处为使用判断。 |
| FAQ 标准问答 | 标准问、相似问、反例问、多个答案、启停、Excel / CSV 导入、FAQ 优先与命中直答。[9] | 适合有定稿答案的政策、流程与故障问答;FAQ 分类为单标签。 |
| Wiki 与图谱 | Wiki 主题页、原始引用、页面版本与链接图;可选 Neo4j 实体/关系检索。[10][34] | Wiki 与 Neo4j 图谱是不同能力;生成会增加模型调用,人工修订仍有必要。 |
| 分块修订 | 编辑解析后的文本分块、重建索引、比较版本与回滚。[8] | 改变分块配置后,存量文档需要重新解析。 |
| 表格问数 | 把 CSV / Excel 文件载入 DuckDB,由数据分析能力执行 SQL 汇总、筛选与比较。[11] | 核实的是文件分析;不能等同于已经原生连接 ERP / MySQL 的实时问数。 |
| Agent 扩展 | 选择知识库、模型、提示词、MCP、技能和浏览器能力;可生成文件产物。[11][35][39] | 工具依赖、凭据和运行环境需要配置;多步任务通常比单次检索增加调用。 |
| 记忆与评估 | 跨会话记忆、解析进度与日志、检索/回答评估接口。[36][37] | 记忆与知识库权限分别处理;评估应结合自己的问题集。 |
| 同步与发布 | 连接外部资料源;通过 Web、IM、网页挂件、MCP、REST API、Go SDK、CLI 接入。[12][13][20][21] | 各渠道的终端身份与权限模型不同。 |
资料同步来源
已实现:飞书 / Lark Wiki、飞书 / Lark Drive、Notion、Confluence、语雀、钉钉文档、腾讯 IMA、GitLab、RSS / Atom。首次导入后可计划同步,增量更新和删除检测依连接器而定;RSS 滚动淘汰旧条目不触发对应资料删除。[12]
v0.8.2 文档明确:GitHub、Google Drive、OneDrive、Web Crawler、Slack、IMAP 的数据源项尚未实现。Slack 机器人对话接入已有,不能与 Slack 历史资料同步混为一项。[12][21]
面向企业的场景示例
以下是根据功能提出的配置用法,不代表官方客户案例或市场使用占比。
| 业务场景 | 放什么资料 | 怎样使用 | 权限设计 |
|---|
| 产品与售前 | 产品目录、说明书、选型资料 | 查型号参数,比较规格,生成带来源的说明 | 公共资料与内部销售政策分开 |
| 采购 | 供应商资料、采购流程、报价与成本表 | 核对供货条件,查询采购流程,分析导入表格 | 底价、成本和返利进入采购受限空间 |
| 设备与售后 | 操作规程、故障手册、维保案例、FAQ | 按故障代码查处理步骤,定位对应手册 | 客户可见手册与内部案例分开 |
| 培训与制度 | 员工手册、培训教材、制度 | FAQ 返回定稿政策,Wiki 建立学习入口 | 全员制度与个人档案分开 |
| 研发知识 | 接口文档、设计方案、项目规范 | 在浏览器或 IDE 里通过 MCP 检索资料 | 按项目空间或 MCP 端点控制范围 |
| 管理报表 | 已导出的订单、库存、设备记录 | 对文件快照做筛选与汇总 | 按报表受众拆范围;实时业务数据另接工具 |
常用入口如何选
| 入口 | 主流用法的实际含义 | 配置重点 |
|---|
| Web | 维护人员建库、导入和修订;使用人员直接提问。 | 先设计工作空间成员,再导入资料。 |
| IM 机器人 | 在企业微信、飞书、Slack、钉钉等平台中使用绑定的 Agent。[21] | 按受众拆渠道与 Agent;平台身份识别不自动映射文档 ACL。 |
| MCP Server | 在 Cursor、Claude Desktop / Code、VS Code 等客户端检索本地知识库。[13] | 每端点选 KB、选工具、配独立令牌;写入默认关闭。 |
| REST API / 自有前端 | 现有 Vue / Spring Boot 系统调用检索、问答与管理接口。[14][40] | 由业务后端完成员工授权,并选择受限 Key。 |
| 网页挂件 / 小程序 | 把问答作为门户或移动端入口;仓库含小程序客户端。[2][20] | 访客入口按绑定 Agent 范围工作;有员工权限要求时补后端校验。 |
首次使用建议顺序:配置对话和向量模型 → 新建文档库或 FAQ 库 → 导入样本 → 检查解析分块 → 用问题集验证检索与引用 → 再添加 Wiki、Agent 和渠道。Wiki 可通过索引配置开启,不必把它理解成只能独立建立的第三类库。[7][8][9][10][33]
03 / 05
按模块或类型分权限:支持到哪一层
同一工作空间内,Viewer 默认可以读取该空间的全部知识库。创建者字段主要用于限制修改,不构成“只有创建者能看”。把全员加入一个公司空间,再建立财务库、人事库,不能形成部门读取隔离。
[14][15] | 你要区分的对象 | 核查结果 | 实际配置或限制 |
|---|
| 公司 / 部门 / 项目 | ✔ 工作空间隔离 | 一个用户可以加入多个工作空间,并在不同空间获得不同角色。[14] |
| 同空间内不同知识库,指定不同员工可读 | ✖ 未见逐人 KB 读取名单 | 自有 KB 读取以空间为边界;仅分成多个 KB 不足以隔离同空间成员。[15] |
| 跨空间共享某几个知识库 | ✔ 组织共享 | 把来源与接收空间加入组织,再共享指定 KB,设置 viewer / editor / admin 上限。组织成员单位是空间。[14] |
| 按业务模块,如采购、人事、售后 | ✔ 通过空间与知识库组合实现 | 将业务模块映射为不同权限空间;同受众资料可归到一个空间,不同处理策略再分 KB。此行是配置建议。 |
| 按操作模块,如检索、上传、模型管理 | ✔ 有固定角色和 API 能力 | 人类账号是内置角色矩阵;API Key 可以勾选能力。未见任意角色、菜单、按钮组合的通用权限设计器。[14] |
| 同库中的文件夹 / 子目录 | ✖ 未见独立 ACL | 文件夹承担导航与归类;没有按文件夹配置成员访问名单的授权链。[24] |
| 标签 / 分类 / 密级元数据 | ✖ 未见自动授权 | 可描述和筛选资料;给文档写“机密”或“财务”不自动限制读者。[8][24][25] |
| 单篇文档 / 某个分块 / 某条 FAQ | ✖ 未见逐人独立 ACL | 子资源沿父知识库进行授权;文档上传者不是独立的权限所有者。[14][16][24] |
| PDF / Word 等文件类型 | ✖ 未见按格式访问授权 | 类型可用于解析路由和列表过滤;不能配置“甲只看 PDF,乙只看 Word”并作为后端权限边界。[6][24] |
| API 接口使用某几个知识库 | ✔ Key 级 KB 名单 | 知识库范围与操作能力共同决定访问;每把 Key 可以分配不同范围。[14][17] |
| MCP 客户端分组访问 | ✔ 端点级范围和工具 | 一个空间可以建立多个端点,每个端点独立选 KB、令牌与工具清单。[13] |
| 只开放 Agent,不开放资料 | ✖ 不能作此保证 | 共享 Agent 会给接收方开放其 KB 范围的只读访问;不只开放聊天按钮。[26] |
| 继承飞书 / Confluence 原文档权限 | ✖ 本次未发现原生继承 | 连接器按授权凭据抓取资料后写入目标 KB;未发现逐人/逐组源 ACL 的导入与检索过滤链。[27][28] |
| 只能看或问,禁止拿到原始内容 | ✖ 不能当作防外传能力 | 专用下载路由有门槛,但预览接口也能返回原文件流;只读不是内容无法复制或保存。[16][32] |
“未见”限定于此次核查的 v0.8.2 数据模型、路由与服务实现;不是对未来版本的断言。Agent 的 @文档、@标签和知识库选择属于检索范围控制,不能代替用户授权。
共享权限怎样合成
组织共享先取 共享记录权限与接收空间的组织角色中较低者;如果具体用户在自己空间中是 Viewer,再封顶为只读。组织角色使用 viewer / editor / admin;工作空间角色使用 Owner / Admin / Contributor / Viewer,两套角色分别管理。[14]
同一个 KB 若经多个组织可达,取各条通道有效权限中的最高值。撤销一条共享后,还要检查其他组织或共享 Agent 是否仍提供访问路径。[15][41]
| 共享记录 | 接收空间在组织中的角色 | 用户在接收空间中的角色 | 结果示例 |
|---|
| editor | viewer | Admin | 只读 |
| editor | editor | Contributor | 可编辑共享内容,但不能据此删除来源 KB |
| editor | editor | Viewer | 只读 |
| viewer | admin | Owner | 只读 |
若某组织包含销售、技术、人事、财务全部空间,共享进去的知识库就应按这些空间共同可读来设计。需要不同接收人群时,分设共享组织或调整空间成员,不能只修改共享库的标签。此处为依据共享模型给出的配置判断。[14]
04 / 05
角色、API Key 与渠道配置
工作空间角色矩阵
下表是官方设计口径。历史资源创建者降级为 Viewer 的写权限疑点见“判断依据 3”,不据此宣称所有降权路径已通过实测。
| 操作 | Owner | Admin | Contributor | Viewer |
|---|
| 读取空间内 KB、检索与问答 | ✔ | ✔ | ✔ | ✔ |
| 新建 KB / Agent | ✔ | ✔ | ✔ | ✖ |
| 修改自己创建的 KB 及其内容 | ✔ | ✔ | ✔ | ✖ 设计目标 |
| 修改他人创建的 KB 及其内容 | ✔ | ✔ | ✖ | ✖ |
| 配置模型、存储、数据源、MCP 等 | ✔ | ✔ | ✖ | ✖ |
| 增删成员、修改成员角色、邀请 | ✔ | ✖ | ✖ | ✖ |
| 管理空间 API Key / 删除空间 | ✔ | ✖ | ✖ | ✖ |
| 专用原文件下载接口:本空间 | ✔ | ✔ | ✔ | ✖ |
成员管理这一行以路由与权限细表为准:Admin 不能代替 Owner 增删成员或改角色。Contributor 的“自己的资源”以知识库创建者为准;某人上传过一个文件,不代表他取得了那个文件的单独管理权。[14][16]
平台系统管理员是另一种身份,负责全局设置、任务队列和平台审计;它不会自动获得其他空间的知识内容。跨空间数据访问还由 CanAccessAllTenants 等配置单独控制。主机和数据库管理员具备的底层访问能力,不属于应用 RBAC 能隔离的范围。[23]
API Key:可配置的能力
| 能力 | 含义 | 配置决策 |
|---|
retrieve | 读取和检索知识库 | 同空间获准 KB 的原文件下载路由也归此能力;不只返回检索片段。 |
chat | 建立会话并进行问答 | 问答入口按需授予;不自动意味着可以管理资料。 |
read_agents | 读取 Agent 列表与详情 | 前端需要选择 Agent 时再考虑。 |
ingest | 上传、编辑、删除/移动知识,以及分块、FAQ、标签、Wiki 内容操作 | 不是“只允许上传”的单一权限。 |
manage_kbs | 创建、复制、更新、配置或删除知识库 | 与内容导入分开。 |
message_history | 空间级历史消息的搜索与查看 | 普通问答不要默认授予。 |
| 其他管理能力 | 模型、数据源、MCP、渠道、存储等 | 按集成任务选择;不是给员工随意组合菜单角色。 |
这些字段有管理界面可配置,并由服务端路由和范围校验执行。未声明 API Key 策略的路由默认拒绝。[14][40]
API 主体按能力授权,不套用人类 Contributor / Viewer 的角色阶梯;因此不能用上方人类账号下载矩阵推定 API Key 的下载权限。[14][16]
两个默认值会直接影响权限:knowledge_base_ids: [] 表示不限制知识库;
full_access: true 在创建/更新时会清除知识库名单和细分能力。需要限制范围时,设为 false 并填写允许的 KB。
[17][18] 示例:给“采购资料问答”创建的配置,仅演示字段,未在任何系统执行。
{
"name": "采购资料问答",
"full_access": false,
"knowledge_base_ids": [
"采购制度库ID",
"供应商产品库ID"
],
"capabilities": [
"retrieve",
"chat"
]
}
需要录入资料时,使用另一把具有 ingest 的受限 Key。若要求“可上传但不可删”,现有 ingest 组合仍过宽,应在业务后端拆分接口或扩展权限。[14]
接入现有员工系统
X-External-User-ID 或签名外部用户 Token 用于标识终端用户、隔离会话和相关 OAuth;不会自动把员工部门转换成知识库权限。同一把宽范围 Key 配不同用户 ID,仍共享该 Key 的资料访问范围。[19]
可采用的实现:业务后端验证员工身份 → 查询其部门/角色 → 选用对应受限 Key 或权限空间 → 固定允许 KB → 调用 WeKnora。员工身份再单独用于会话隔离。Key 保留在后端;不要把“前端传哪个 KB 就查哪个 KB”当作授权。此处为集成建议。
MCP、机器人、网页挂件
| 入口 | 可以配置什么 | 不能直接推定什么 |
|---|
| MCP Server | 端点的知识库、工具、令牌、限流;写入工具默认关闭。[13] | 一个端点的不同使用者不会仅因客户端账号不同而自动拿到不同 KB 权限。 |
| 企业微信 / 飞书等 IM | 渠道绑定空间与 Agent;按用户或线程组织会话。[21] | 识别 IM 用户不等于继承员工在原平台的逐文档权限;共享线程参与者也会共用对话上下文。 |
| 网页 Embed | 绑定 Agent、发布 Token、短效会话 Token、域名白名单。[20] | 白名单是嵌入来源限制,不能代替登录授权;由业务后端先验证用户再换 Token。 |
| 共享 Agent | 限定 selected 知识库后共享;all 会覆盖未来新建 KB。[26] | 不能把“只共享 Agent”理解成隐藏源文档;也不能依靠提示词禁止泄露某类已获准资料。 |
启用了技能的共享 Agent 还会在来源空间沙箱中运行,可能带入管理员配置的技能环境变量(如 API Key);官方文档说明成员可以让 Agent 读出这些值。共享知识库只读,不能推定工具环境和凭据也具有相同隔离。[14]
05 / 05
本地部署、维护成本与访问时效
| 部署方式 | 组成与定位 | 选择建议 |
|---|
| Docker Compose | Go / Web / docreader + ParadeDB + Redis;官方用于团队与生产自托管。[3] | 部门共享试点优先用此形态。 |
| Kubernetes Helm | 在 Kubernetes 编排上述服务与可选组件。[3] | 已有集群与运维人员时使用。 |
| Lite | 单二进制、嵌入前端、SQLite FTS5 / sqlite-vec、内存队列。[3] | 适合个人、低资源和离线试用;不要据此推定高并发结果。 |
| 桌面应用 | Wails v2 与 Lite 运行时;v0.8.2 官方说明尚未正式发布。[3] | 不能按已有稳定安装包的桌面软件采购或规划。 |
官方标准部署建议 4 核 CPU / 8GB 内存起步,明确不含本地模型权重;默认 ParadeDB 已提供关键词与向量索引,不必为了起步额外部署独立向量数据库。吞吐量需按模型、资料和同时请求数实测,本文不估算 TPS。[3][4]
“部署在本地”与“所有处理留在内网”
| 组成 | 若要求资料处理留在内网 |
|---|
| 应用、数据库、文件存储 | 部署在自己的服务器,备份这些数据和配置。 |
| 对话 / Embedding / Rerank | 配置为本地或内网服务;选云端服务时,相应输入会发送给该服务。 |
| 扫描件 / 图片 / 音频 | OCR、视觉与语音识别也使用本地或内网服务。 |
| MCP、联网搜索、远端解析器 | 按任务选择;全离线运行时停用对外依赖。 |
| 外部数据源同步 | 需要连接对应来源;离线使用已导入资料与持续在线同步是不同部署目标。 |
以上是根据可替换模型、解析、存储与工具架构作出的部署判断;本地模型可经 Ollama 或兼容接口连接,模型职责与协议需逐项检查。[3][6][33]
撤权与文件链接
| 访问方式 | 撤权后的行为 | 对配置的影响 |
|---|
| Web 消息级鉴权代理 | 重新验证消息、资源引用与 KB / Agent 授权;共享撤销后,历史引用不继续授予文件访问。[22] | 需要跟随权限变化的入口使用鉴权代理。 |
/r/<token> 能力短链 | 持链接者可匿名读取;有效期为 2 小时。撤销组织共享不会提前使已发短链失效。[22] | 不能承诺撤权后外链立即失效。 |
| 对象存储预签名链接 | 在有效期内可凭链接读取;文档列出 MinIO 默认 24 小时。[22] | 按其有效期理解暴露窗口。 |
| 受限 KB 的 API Key | 请求 resource_urls=public 返回 403,也不能访问通用 /files。[22] | 使用内部引用和适用的鉴权代理。 |
| 已预览 / 保存到终端的内容 | 原始字节可以通过部分预览流程抵达客户端。[32] | 应用撤权不能回收已经保存的内容,不能将只读当成 DLP。 |