diff --git a/docker/appstore/.gitignore b/docker/appstore/.gitignore
index 035cc0274..09a3cca2a 100644
--- a/docker/appstore/.gitignore
+++ b/docker/appstore/.gitignore
@@ -2,4 +2,5 @@ apps/*
config/*
log/*
temp/*
+ai-kb/*
!.gitkeep
diff --git a/docker/appstore/ai-kb/.gitkeep b/docker/appstore/ai-kb/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/resources/ai-kb/_meta/feature-map.yaml b/resources/ai-kb/_meta/feature-map.yaml
index 77b751b29..e75f8ae72 100644
--- a/resources/ai-kb/_meta/feature-map.yaml
+++ b/resources/ai-kb/_meta/feature-map.yaml
@@ -273,36 +273,6 @@ features:
- report.analysis.concept
- report.permission.faq
- - id: approve
- name: 审批
- scope: end-user
- batch: B2
- priority: P0
- chunk_count_est: 20
- owner: ~
- status: drafted
- chunks:
- - approve.plugin.concept
- - approve.install.howto
- - approve.template.concept
- - approve.template.howto
- - approve.node.concept
- - approve.form.concept
- - approve.delete.howto
- - approve.export.howto
- - approve.entry.menu-map
- - approve.concept
- - approve.start.howto
- - approve.my-start.howto
- - approve.my-todo.howto
- - approve.doto.howto
- - approve.cc.howto
- - approve.detail.howto
- - approve.process-inst.concept
- - approve.history.concept
- - approve.notify.concept
- - approve.comment.howto
-
- id: checkin
name: 签到打卡
scope: end-user
@@ -316,40 +286,15 @@ features:
- checkin.concept
- checkin.regular.howto
- checkin.wifi.howto
- - checkin.face.howto
- - checkin.face.concept
- checkin.record.howto
- checkin.remind.concept
- checkin.setting.howto
- checkin.rule.concept
- checkin.export.howto
- checkin.late.faq
- - checkin.face-fail.faq
- checkin.mac-not-match.faq
- checkin.plugin.concept
- - id: okr
- name: OKR
- scope: end-user
- batch: B2
- priority: P1
- chunk_count_est: 12
- owner: ~
- status: drafted
- chunks:
- - okr.entry.menu-map
- - okr.concept
- - okr.plugin.concept
- - okr.objective.concept
- - okr.kr.concept
- - okr.create.howto
- - okr.update-progress.howto
- - okr.cycle.concept
- - okr.align.howto
- - okr.review.howto
- - okr.team.concept
- - okr.cannot-install.faq
-
# ===== A5. 应用中心(系统应用 + 管理员应用 + 微应用) (B3) =====
- id: app-system
name: 内置系统应用(11 个,含审批/签到/报告/收藏/最近/机器人/创建群/会议/创建项目/添加任务/导出)
@@ -415,94 +360,6 @@ features:
- micro-app.uninstall.howto
- micro-app.entry.menu-map
- - id: minder
- name: 思维导图(minder 插件)
- scope: end-user
- batch: B3
- priority: P1
- chunk_count_est: 5
- owner: ~
- status: drafted
- chunks:
- - minder.collaboration.concept
- - minder.concept
- - minder.plugin.concept
- - minder.create.howto
- - minder.entry.menu-map
-
- - id: drawio
- name: 流程图(drawio 插件)
- scope: end-user
- batch: B3
- priority: P1
- chunk_count_est: 5
- owner: ~
- status: drafted
- chunks:
- - drawio.concept
- - drawio.plugin.concept
- - drawio.template.concept
- - drawio.create.howto
- - drawio.entry.menu-map
-
- - id: office
- name: OnlyOffice 在线文档(office 插件)
- scope: end-user
- batch: B3
- priority: P1
- chunk_count_est: 5
- owner: ~
- status: drafted
- chunks:
- - office.collaboration.concept
- - office.concept
- - office.plugin.concept
- - office.create.howto
- - office.entry.menu-map
-
- - id: fileview
- name: 文件预览(fileview 插件)
- scope: end-user
- batch: B3
- priority: P2
- chunk_count_est: 3
- owner: ~
- status: drafted
- chunks:
- - fileview.concept
- - fileview.plugin.concept
- - fileview.supported.concept
-
- - id: memos
- name: Memos 笔记(memos 插件)
- scope: end-user
- batch: B3
- priority: P1
- chunk_count_est: 5
- owner: ~
- status: drafted
- chunks:
- - memos.concept
- - memos.plugin.concept
- - memos.tag.concept
- - memos.create.howto
- - memos.entry.menu-map
-
- - id: kpi
- name: KPI 绩效(kpi 插件)
- scope: end-user
- batch: B3
- priority: P1
- chunk_count_est: 5
- owner: ~
- status: drafted
- chunks:
- - kpi.concept
- - kpi.plugin.concept
- - kpi.scoring.concept
- - kpi.create.howto
- - kpi.entry.menu-map
-
# ===== F. 通信通知 (B3) =====
- id: email-notice
name: 邮件通知
@@ -806,90 +663,6 @@ features:
- appstore.update.howto
- appstore.entry.menu-map
- # ===== D. AI 助手 (B5) =====
- - id: ai-assistant
- name: AI 助手(入口/模型/对话/工具/任务集成)
- scope: end-user
- batch: B5
- priority: P0
- chunk_count_est: 48
- owner: ~
- status: drafted
- chunks:
- - ai-assistant.entry.howto
- - ai-assistant.auth.concept
- - ai-assistant.close.howto
- - ai-assistant.create-task.howto
- - ai-assistant.disabled.faq
- - ai-assistant.element-action.howto
- - ai-assistant.embed-entry.concept
- - ai-assistant.feedback.howto
- - ai-assistant.float-button.concept
- - ai-assistant.float-button.howto
- - ai-assistant.guide.concept
- - ai-assistant.image-upload.howto
- - ai-assistant.intelligent-search.howto
- - ai-assistant.list-tasks.howto
- - ai-assistant.match-elements.concept
- - ai-assistant.mcp-down.faq
- - ai-assistant.mobile-entry.concept
- - ai-assistant.modal.concept
- - ai-assistant.model-empty.faq
- - ai-assistant.model-switch.howto
- - ai-assistant.model.concept
- - ai-assistant.multimodal.concept
- - ai-assistant.new-chat.howto
- - ai-assistant.no-tool-call.faq
- - ai-assistant.page-action.concept
- - ai-assistant.page-action.howto
- - ai-assistant.page-context-tool.concept
- - ai-assistant.page-context.concept
- - ai-assistant.privacy.concept
- - ai-assistant.project-init.howto
- - ai-assistant.report-draft.howto
- - ai-assistant.search-files.howto
- - ai-assistant.search-help-docs.howto
- - ai-assistant.search-users.howto
- - ai-assistant.send-message.howto
- - ai-assistant.session-delete.howto
- - ai-assistant.session-list.howto
- - ai-assistant.session-save.howto
- - ai-assistant.session.concept
- - ai-assistant.shortcut.howto
- - ai-assistant.start-guide.howto
- - ai-assistant.stop.howto
- - ai-assistant.streaming.concept
- - ai-assistant.subtask-suggest.howto
- - ai-assistant.task-mention.howto
- - ai-assistant.task-summary.howto
- - ai-assistant.tool-call.concept
- - ai-assistant.tool-failed.faq
- - ai-assistant.tool-permission.faq
- - ai-assistant.tools-list.concept
- - ai-assistant.tools.concept
- - ai-assistant.welcome-prompts.concept
-
- # ===== G. 搜索 (B5) =====
- - id: search
- name: 全局搜索(Manticore)
- scope: end-user
- batch: B5
- priority: P0
- chunk_count_est: 10
- owner: ~
- status: drafted
- chunks:
- - search.concept
- - search.contact.howto
- - search.engine.concept
- - search.entry.menu-map
- - search.file.howto
- - search.intelligent.concept
- - search.message.howto
- - search.no-result.faq
- - search.project.howto
- - search.task.howto
-
# ===== I. 终端 (B5) =====
- id: web-client
name: Web 端
diff --git a/resources/ai-kb/_meta/tool-binding.yaml b/resources/ai-kb/_meta/tool-binding.yaml
index 9ff6aef5e..fba798362 100644
--- a/resources/ai-kb/_meta/tool-binding.yaml
+++ b/resources/ai-kb/_meta/tool-binding.yaml
@@ -25,7 +25,7 @@ tools:
search_users:
description: 按关键词搜索用户,支持按项目/对话范围筛选
- related_features: [user-account, search]
+ related_features: [user-account]
typical_chunk_types: [howto]
# ===== 任务 =====
@@ -93,7 +93,7 @@ tools:
# ===== 消息 / 对话 =====
search_dialogs:
description: 搜索群聊或个人对话
- related_features: [messenger, search]
+ related_features: [messenger]
typical_chunk_types: [howto]
send_message:
@@ -103,7 +103,7 @@ tools:
send_task_ai_message:
description: 作为 AI 助手向任务对话发送消息
- related_features: [messenger, task, ai-assistant]
+ related_features: [messenger, task]
typical_chunk_types: [howto]
get_message_list:
@@ -119,7 +119,7 @@ tools:
search_files:
description: 搜索文件
- related_features: [file, search]
+ related_features: [file]
typical_chunk_types: [howto]
get_file_detail:
@@ -145,7 +145,7 @@ tools:
generate_report_template:
description: 基于任务完成情况自动生成报告模板
- related_features: [report, ai-assistant]
+ related_features: [report]
typical_chunk_types: [howto]
create_report:
@@ -166,7 +166,7 @@ tools:
# ===== 搜索 =====
intelligent_search:
description: 统一搜索(任务/项目/文件/联系人/消息),支持语义搜索
- related_features: [search]
+ related_features: []
typical_chunk_types: [howto, concept]
# 注:图片文字提取(OCR / 原 extract_image_text)已下线,改由多模态模型直接理解图片,
@@ -182,10 +182,10 @@ tools:
# ===== 内置工具(AI 插件 helper/tools.py)=====
get_session_image:
description: 获取用户上传的会话图片(多模态用)
- related_features: [ai-assistant, file]
+ related_features: [file]
typical_chunk_types: [howto]
search_help_docs:
description: 本知识库自身的检索工具;当用户询问 DooTask 功能用法/概念/操作步骤时调用
- related_features: [ai-assistant]
+ related_features: []
typical_chunk_types: [howto]
diff --git a/resources/ai-kb/zh/concept/ai-assistant/auth.md b/resources/ai-kb/zh/concept/ai-assistant/auth.md
deleted file mode 100644
index 778bb9d28..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/auth.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-id: ai-assistant.auth.concept
-title: AI 助手鉴权(stream_key)
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 鉴权
- - AI 授权
- - stream_key
- - AI token
- - AI 流凭证
-related_tools: []
-related_pages: []
-prerequisites:
- - 用户已登录
- - 当前用户允许聊天
-negative:
- - stream_key 是一次性凭证,发完一条消息就失效
- - 流式接口 /ai/invoke/stream/* 不在主仓库,由 dootask-ai 容器提供
- - 普通用户不需要关心 stream_key,前端自动获取
-last_verified: v1.7.90
----
-
-# AI 助手鉴权(stream_key)
-
-## 定义
-AI 助手发送提问前必须先调用 `POST api/assistant/auth` 生成一次性 `stream_key`,再用它去开 SSE 流(`/ai/invoke/stream/{stream_key}`),既复用登录态又避免把用户 token 暴露给 ai 容器。
-
-## 数据流
-1. 用户点发送
-2. 前端 `POST api/assistant/auth`,参数:`model_type`、`model_name`、`context`(JSON)、`locale`(zh/en,缺省取请求语言,语言包含 zh 视为 zh,否则 en)
-3. 后端 `AssistantController::auth` 校验登录 + 聊天权限,写入临时凭证
-4. 返回 `{stream_key: "xxx"}`
-5. 前端开 SSE:`ai/invoke/stream/{stream_key}`
-6. ai 容器消费凭证、转发上游模型,推回 `append/replace/done`
-
-## 关键约束
-- **一次性**:一个 stream_key 仅能开一次 SSE 流
-- **绑定用户**:内嵌 `userid`,越权使用被拒
-- **携带 context**:对话历史在 auth 阶段写入;ai 容器不反向查 DooTask 库
-- **插件校验**:`AssistantController` 构造函数先做 `Apps::isInstalledThrow('ai')`;未装直接抛错
-
-## 权限校验
-`User::auth()->checkChatInformation()`:未登录 / 被禁止聊天 / 激活异常都会拒绝。
-
-## 相关接口
-| 接口 | 用途 |
-|---|---|
-| `POST api/assistant/auth` | 生成 stream_key |
-| `GET api/assistant/models` | 拉可用模型列表 |
-| `POST api/assistant/session/list` | 历史会话 |
-| `POST api/assistant/session/save` | 保存当前会话 |
-| `POST api/assistant/session/delete` | 删除 / 清空 |
-
-## 不支持
-- 不支持复用 stream_key
-- 不支持匿名调用
-- 不支持终端用户直接管理 token
-
-## 相关
-- [[ai-assistant.privacy.concept]]
-- [[ai-assistant.streaming.concept]]
diff --git a/resources/ai-kb/zh/concept/ai-assistant/embed-entry.md b/resources/ai-kb/zh/concept/ai-assistant/embed-entry.md
deleted file mode 100644
index d6d88a25d..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/embed-entry.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-id: ai-assistant.embed-entry.concept
-title: 业务嵌入式 AI 入口
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 嵌入业务
- - 任务里 AI
- - 项目 AI 生成
- - 工作报告 AI
- - 消息里 AI
- - AI 业务入口
-related_tools: []
-related_pages: [task_detail, project_create, report_edit, dialog]
-prerequisites:
- - 应用市场已安装 ai 插件
- - 管理员已配置至少一个 AI 模型
-negative:
- - 嵌入式入口与浮窗对话不共用同一会话池(按 sessionKey 隔离)
- - 嵌入入口大多有自定义 system 提示词,输出格式可能强约束(如 JSON)
- - 不是所有页面都有 AI 按钮,只有这里列出的业务场景才内嵌
-last_verified: v1.7.90
----
-
-# 业务嵌入式 AI 入口
-
-## 定义
-除浮按钮和快捷键外,DooTask 在多个业务表单内嵌入了「上下文相关」的 AI 入口。它们与全局浮窗调的是同一个 AI 助手组件,但通过 `sessionKey` + `onBeforeSend` + `onApply` 等参数定制行为,让 AI 直接产出可应用到表单的结构化内容。
-
-## 已知嵌入入口
-
-| 入口 | 触发位置 | sessionKey | 典型用途 |
-|---|---|---|---|
-| 项目创建 | 新建项目弹窗 AI 按钮 | `project-create` | 生成项目名 + 看板列 |
-| 任务创建 | 添加任务弹窗 AI 按钮 | `task-add` | 生成任务标题 / 描述 / 子任务 |
-| 工作汇报 | 汇报编辑器 AI 工具 | `report-edit` | 基于近期任务生成草稿 |
-| 消息输入 | 群 / 私聊输入栏 AI 图标 | `chat-message` | 帮你写消息草稿 |
-| 任务讨论 | 任务详情 @AI | — | 机器人方式触发 |
-
-## 与浮窗的区别
-- **会话池隔离**:不同 `sessionKey` 走不同桶;项目创建会话不会和任务创建混在一起
-- **上下文重建**:嵌入入口通过 `onBeforeSend` 重写 context(不走默认助手 system 提示)
-- **应用按钮**:回答下方有「应用此内容」按钮,自动回填原表单
-- **加载提示**:可自定义「正在生成项目结构…」之类提示
-
-## 应用此内容
-回答完成后弹出 `Button`:
-1. 点击触发 `onApply` 回调
-2. 解析 AI 输出(通常 JSON)并填入原表单
-3. 应用成功后嵌入弹窗自动关闭
-
-## 不支持
-- 嵌入会话不出现在浮窗历史下拉里
-- 不能在嵌入入口切回浮窗系统提示词
-- 没有 AI 按钮的页面(日历 / 文件 / 个人设置)不能内嵌唤起
-
-## 相关
-- [[ai-assistant.entry.howto]]
-- [[ai-assistant.session.concept]]
diff --git a/resources/ai-kb/zh/concept/ai-assistant/float-button.md b/resources/ai-kb/zh/concept/ai-assistant/float-button.md
deleted file mode 100644
index 017ffdf72..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/float-button.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-id: ai-assistant.float-button.concept
-title: AI 助手浮按钮
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 浮窗按钮
- - AI 浮窗
- - AI 浮窗怎么用
- - 屏幕角落的 AI 球
- - AI 小球
- - 那个小气泡
- - 浮动按钮
-related_tools: []
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 管理员已在系统设置「AI 模型」中配置至少一个模型
-negative:
- - 浮按钮位置只保留水平/垂直两个距离,不存绝对坐标,换屏分辨率不会跑出屏外
- - 收起状态下点击直接打开 AI 助手,不会再触发拖动
- - 拖动 ≥ 5px 或按下 ≥ 200ms 算拖动;小于该阈值才视为点击
-last_verified: v1.7.90
----
-
-# AI 助手浮按钮
-
-## 定义
-浮按钮是 DooTask 桌面端 / 移动端常驻在屏幕角落的圆形 AI 入口,44px 直径,点击呼出 AI 助手浮窗或弹窗。它独立挂在 `
` 上,与当前路由解耦,**任何登录后页面都能看到**(登录页除外)。
-
-## 关键属性
-- **位置存储**:只保存两个距离(距左 / 距右 + 距上 / 距下)和「贴边收起」状态,写入 IndexedDB key `aiAssistant.floatButtonPosition`
-- **默认位置**:桌面端右下角(距右 24px、距底 100px);移动端竖屏靠右、距底约 1/4 屏高
-- **可拖动**:桌面端鼠标按住拖动;移动端单指触摸拖动
-- **贴边收起**:靠近左 / 右屏幕边缘 ≤ 12px 时延迟自动收起为竖条(桌面端 1 秒、移动端 5 秒)
-- **收起态再点开**:收起状态下点按钮直接打开 AI 助手,不会再拖动
-
-## 显示条件
-- 已安装 ai 插件(`microAppsIds` 包含 `ai`)
-- 已登录(`userId > 0`)
-- 当前不在登录页
-- AI 助手弹窗未打开时
-
-## 与浮窗的关系
-浮按钮只是「入口」,点击触发 `openAIAssistantGlobal` 事件。真正的对话窗口由 [[ai-assistant.modal.concept]] 渲染。
-
-## 不支持
-- 不支持双击 / 长按弹出菜单(除了移动端长按用于拖动)
-- 不支持把浮按钮完全隐藏后再用快捷键恢复——隐藏需在「个人设置」关闭(详见 [[ai-assistant.float-button.howto]])
diff --git a/resources/ai-kb/zh/concept/ai-assistant/guide.md b/resources/ai-kb/zh/concept/ai-assistant/guide.md
deleted file mode 100644
index 3809ea28f..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/guide.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-id: ai-assistant.guide.concept
-title: 什么是页面深链(带我去)
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - 操作引导
- - 带我去
- - 带我操作
- - 页面深链
- - 快捷跳转
-related_tools: []
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
-negative:
- - 深链只负责把你送到对应页面/面板,不会自动帮你点击页面内的具体按钮或开关
- - 需要运行时定位的目标(某条具体任务/对话)不通过深链,由 AI 直接帮你打开
-last_verified: v1.7.90
----
-
-# 什么是页面深链(带我去)
-
-## 这是什么
-当你问 AI「X 在哪里设置 / 怎么去 X」时,AI 的回答里会把可定位的页面或面板(如「系统设置」「个人设置」「日历」)渲染成**蓝色可点击的链接**。点一下就**直接跳转到那一屏**,省去自己翻菜单。
-
-## 怎么用
-- 在 AI 助手浮窗里问操作类/“在哪”类问题
-- 回答正文里出现蓝色链接词,点击即跳转(AI 浮窗会自动收起,避免遮挡)
-- 到达目标页后,按回答里的文字说明完成剩下的操作
-
-## 边界
-- 深链把你送到**正确的页面/面板**;页面内具体那一行开关/按钮在哪,需要你按说明自己看一眼
-- 不是每个名词都可点:只有命中系统内已登记目的地的词才会变成链接,其余按普通文字显示
-- 打开某条具体任务/对话(需要具体 ID)不走深链,AI 会直接帮你打开
-
-## 相关
-- 如何使用:[[ai-assistant.start-guide.howto]]
-- AI 操作页面的底层能力:[[ai-assistant.page-action.concept]]
diff --git a/resources/ai-kb/zh/concept/ai-assistant/match-elements.md b/resources/ai-kb/zh/concept/ai-assistant/match-elements.md
deleted file mode 100644
index afcddfefb..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/match-elements.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-id: ai-assistant.match-elements.concept
-title: AI 怎么找到页面元素
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - match_elements
- - AI 找按钮
- - 元素匹配
- - 向量匹配元素
- - AI 怎么知道点哪
- - AI 元素识别
-related_tools: []
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
-negative:
- - 匹配纯依赖元素可见文本/aria-label/title,无文本的图标按钮命中率低
- - 单次匹配上限 50 个候选元素
- - 不持久化匹配结果,每轮交互需重新取上下文
-last_verified: v1.7.90
----
-
-# AI 怎么找到页面元素
-
-## 定义
-当 AI 想操作页面元素(点按钮、填表)时,先采集当前页面上下文拿到候选元素列表(每条含 ref / name / role),再通过后端 API `POST api/assistant/match-elements` 把"用户意图描述"和"候选列表"提交给 embedding 服务,返回按余弦相似度排序的命中元素。
-
-## 工作流
-1. **采集**:前端按 ARIA 角色扫描,给每个可交互元素分配 ref(e1, e2...)和 name
-2. **关键词过滤**:先用 query 做子串匹配
-3. **向量匹配**:关键词没命中时对 query 和元素 name 求 embedding,取相似度 top-K(默认 10,最多 50)
-4. **执行**:模型拿匹配元素的 ref,让 AI 助手在你的页面上操作该元素
-
-## 元素信息字段
-- `ref`:本轮唯一标识(e1, e2...)
-- `name`:可见文本 / aria-label / title
-- `role`:ARIA 角色(button / textbox / link 等)
-- `selector` + `nth`:兜底选择器
-
-## 命中率
-- 有清晰文本的按钮:高
-- 仅 icon 无 aria-label:低,建议加 title
-- 隐藏元素:默认不采集
-
-## 不支持
-- 元素匹配仅基于元素文本,不靠图像识别
-- 不支持「按位置」找元素("左上角第三个")
-- 不能跨 iframe 匹配
-
-## 相关
-- 取页面上下文:[[ai-assistant.page-context-tool.concept]]
-- 操作元素:[[ai-assistant.element-action.howto]]
-- 页面操作机制:[[ai-assistant.page-action.concept]]
diff --git a/resources/ai-kb/zh/concept/ai-assistant/mobile-entry.md b/resources/ai-kb/zh/concept/ai-assistant/mobile-entry.md
deleted file mode 100644
index 3be3e4a17..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/mobile-entry.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-id: ai-assistant.mobile-entry.concept
-title: 移动端 AI 助手入口
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - 手机上怎么用 AI
- - 移动端 AI 入口
- - 手机 AI 助手
- - 移动端 AI 浮球
- - 手机 AI 弹窗
-related_tools: []
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 管理员已配置至少一个 AI 模型
-negative:
- - 移动端没有键盘快捷键
- - 浮按钮位置不在桌面 / 移动间同步
- - AI 弹窗在移动端走全屏,不能调整大小
-last_verified: v1.7.90
----
-
-# 移动端 AI 助手入口
-
-## 定义
-移动端指通过 iOS / Android App 或手机浏览器访问 DooTask(`isMobile = true`,含竖横屏窄屏)。AI 助手在移动端有两类入口:**浮按钮小球** 和 **业务页面内嵌按钮**。
-
-## 浮按钮(主入口)
-- 屏幕右侧默认距底约 1/4 屏高悬浮
-- 加载后自动收起为屏幕边缘 48px 高竖条
-- 单指按住可拖动到任何位置;松开后靠近左右边缘会再次自动收起
-- 单击展开 AI 助手;展开后**全屏**弹窗,覆盖整个视口
-
-## 全屏对话
-- 移动端 AI 弹窗强制全屏(`is-mobile-fullscreen`)
-- 顶部有标题栏 + 关闭按钮 + 历史会话下拉
-- 不能调整大小、不能拖动窗口
-
-## 业务嵌入入口
-- 任务详情底部输入区 AI 图标
-- 工作汇报编辑器工具栏「AI 生成」
-- 消息会话群里 @AI
-- 创建项目名右侧 AI 按钮
-
-## 与桌面端的差异
-| 维度 | 桌面端 | 移动端 |
-|---|---|---|
-| 弹窗形态 | 浮窗或 modal | 全屏 modal |
-| 浮按钮自动收起延迟 | 1 秒 | 5 秒(加载即收起) |
-| 快捷键 | Cmd/Ctrl + I | 无 |
-| 默认浮按钮位置 | 右下距底 100px | 右侧距底 1/4 屏高 |
-
-## 不支持
-- 不支持移动端快捷收起 / 展开浮按钮(必须靠拖动)
-- 不支持移动端关闭浮按钮本身
-- 不支持移动端浮窗与桌面浮窗位置同步
-
-## 相关
-- [[ai-assistant.float-button.concept]]
-- [[ai-assistant.modal.concept]]
diff --git a/resources/ai-kb/zh/concept/ai-assistant/modal.md b/resources/ai-kb/zh/concept/ai-assistant/modal.md
deleted file mode 100644
index 34bcb9de7..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/modal.md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-id: ai-assistant.modal.concept
-title: AI 助手弹窗形态
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 浮窗
- - AI 弹窗
- - AI 全屏
- - AI 窗口
- - AI 模态框
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 移动端浮窗一律全屏,不能调整大小
- - 桌面端浮窗最小 380×400,最大 800×900
- - 弹窗 z-index 每 5/20 秒自动调高确保覆盖其他模态
-last_verified: v1.7.90
----
-
-# AI 助手弹窗形态
-
-## 定义
-AI 助手有两种渲染形态,由打开时的 `displayMode` 决定:
-- `chat`:**浮窗**(默认,可拖动 / 调整大小 / 桌面右下角)
-- `modal`:**居中模态**(默认 600px 宽,移动端自动全屏)
-
-## chat 浮窗(桌面端默认)
-- 通过 `v-transfer-dom` 挂到 ``,避免被父容器裁切
-- 自带 8 个 resize 控制点(四边 + 四角),可拖拽改大小
-- 标题栏可拖动整窗,双击切换全屏
-- 位置 / 尺寸记忆到 IndexedDB(`aiAssistant.chatPosition` / `aiAssistant.chatSize`)
-
-## 尺寸约束(chat 浮窗)
-| 维度 | 最小 | 最大 | 默认 |
-|---|---|---|---|
-| 宽度 | 380 | 800 | 460 |
-| 高度 | 400 | 900 | 600 |
-
-## modal 模态(业务嵌入入口默认)
-- iView `Modal` 组件渲染,居中遮罩
-- 宽度:新建会话 440,已有对话 600
-- 桌面端遮罩点击**不**关闭(`mask-closable: false`)
-- 移动端强制全屏
-
-## 移动端
-- 不论 displayMode 是什么都全屏
-- 顶部有标题栏、关闭、历史下拉
-- 关闭按钮 `Icon type="ios-close"` 位于右上
-- 输入区固定在底部
-
-## z-index 自适应
-- 初始 `topZIndex = max(modalTransferIndex, 1000) + 1000`
-- 弹窗打开期间每 5 秒重新评估(高于新模态)
-- 关闭后每 20 秒评估
-
-## 不支持
-- 不支持最小化为小球(要小球用浮按钮)
-- 不支持多窗口同时打开多个对话
-- 不支持自定义 z-index
-
-## 相关
-- [[ai-assistant.float-button.concept]]
-- [[ai-assistant.close.howto]]
-- [[ai-assistant.mobile-entry.concept]]
diff --git a/resources/ai-kb/zh/concept/ai-assistant/model.md b/resources/ai-kb/zh/concept/ai-assistant/model.md
deleted file mode 100644
index 3b8d7f67c..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/model.md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-id: ai-assistant.model.concept
-title: AI 助手可用模型
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 模型
- - 可以选哪些 AI
- - DooTask AI 模型
- - GPT Claude DeepSeek
- - AI 服务商
-related_tools: []
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 管理员已在系统设置「AI 模型」中配置至少一个模型的 API Key
-negative:
- - 终端用户不能自己加模型 / 改 API Key,必须由管理员配置
- - 没有「免费内置模型」,DooTask 不自带 API Key
- - 模型下拉为空 = 管理员未配 / 未启用任何模型
-last_verified: v1.7.90
----
-
-# AI 助手可用模型
-
-## 定义
-AI 助手在浮窗底部下拉框展示的「可选模型」,全部来自管理员在系统设置 →「AI 模型」中配置并启用的服务商。前端通过 `GET api/assistant/models` 拉当前生效配置,按服务商分组渲染。
-
-## 支持的服务商分组
-按 `AIBotMap` 顺序展示(每组最多前 5 个模型 + 默认模型):
-
-| key | 显示名 |
-|---|---|
-| `openai` | ChatGPT |
-| `claude` | Claude |
-| `deepseek` | DeepSeek |
-| `gemini` | Gemini |
-| `grok` | Grok |
-| `ollama` | Ollama(本地) |
-| `zhipu` | 智谱清言 |
-| `qianwen` | 通义千问 |
-| `wenxin` | 文心一言 |
-
-## 模型 ID
-前端模型选项内部 id 是 `{type}:{value}`,如 `openai:gpt-4o`。`type` 路由到对应服务商 SDK,`value` 是模型名(透传上游)。
-
-## 默认模型
-每个分组带 `defaultModel`(管理员设置)。首次打开按此顺序选定:
-1. 用户上次选过的模型(IndexedDB `aiAssistant.model`)
-2. 第一个有 `defaultModel` 的分组的默认模型
-3. 第一个分组的第一个模型
-4. 否则空
-
-## 模型能力差异
-- **多模态**:仅部分模型支持,如 `gpt-4o`、`claude-3-5-sonnet`、`gemini-1.5-pro`
-- **长文本**:默认 context 取最近 10 轮,超出截断;与模型最大 token 无关
-
-## 不支持
-- 不支持同一问题同时发多个模型对比
-- 不支持终端用户自定义模型 / 改 API Key / base_url
-- 切换模型不会清空历史会话,会用新模型续接
-
-## 相关
-- [[ai-assistant.model-switch.howto]]
-- [[ai-assistant.model-empty.faq]]
-- [[ai-assistant.multimodal.concept]]
diff --git a/resources/ai-kb/zh/concept/ai-assistant/multimodal.md b/resources/ai-kb/zh/concept/ai-assistant/multimodal.md
deleted file mode 100644
index 0e2d56e5c..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/multimodal.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-id: ai-assistant.multimodal.concept
-title: AI 助手多模态(图片输入)
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 看图
- - 上传图片给 AI
- - 视觉模型
- - AI 多模态
- - AI 识图
- - AI 看截图
-related_tools: []
-related_pages: []
-prerequisites:
- - 当前模型支持视觉输入(如 gpt-4o / claude-3.5-sonnet / gemini-1.5-pro)
-negative:
- - 仅图片,不支持视频 / 音频 / 文档
- - 一次最多 5 张图片
- - 图片会被压缩到长边 1568px JPEG,原图不保留
- - 切到不支持视觉的模型后发图会上游报错
-last_verified: v1.7.90
----
-
-# AI 助手多模态(图片输入)
-
-## 定义
-多模态指 AI 助手允许用户在对话中**同时附带图片**。图片以 base64 拼到 `content` 数组(`{type: 'image_url', image_url: {url: dataUrl}}`),与文本一起发给视觉模型解析。
-
-## 三种添加方式
-1. **点击图片按钮**:浮窗底部图片图标,弹系统文件选择器
-2. **拖放**:把图片拖到浮窗,松手上传
-3. **粘贴**:在输入框 Ctrl/Cmd + V 粘贴剪贴板里的图片
-
-## 数量与大小约束
-- 单次最多 5 张(`maxImages`),超出 toast「最多上传 5 张图片」
-- 自动压缩:长边 ≤ 1568px、统一转 JPEG
-- 原文件不上传,只上传压缩后的 dataUrl
-
-## 视觉模型要求
-- 必须选视觉模型才能正确解析(`openai:gpt-4o`、`claude:claude-3-5-sonnet`、`gemini:gemini-1.5-pro` 等)
-- 非视觉模型(如 `deepseek:deepseek-chat`、`grok:grok-2`)通常忽略图片或上游报错
-
-## 持久化
-- 图片随会话一起保存
-- 服务端转存到 `public/uploads/assistant/YYYYMM/{userid}/xxx.jpg`
-- 再次打开会话通过 `serverImageMap` 拿回 URL 显示
-
-## 不支持
-- 不支持视频 / PDF / 音频;只接受 `image/*` MIME
-- 不支持单张超大图保持原始分辨率
-- 不支持拖到收起的浮按钮上(先展开)
-- 不支持「不压缩直发」开关
-
-## 相关
-- [[ai-assistant.image-upload.howto]]
-- [[ai-assistant.model-switch.howto]]
diff --git a/resources/ai-kb/zh/concept/ai-assistant/page-action.md b/resources/ai-kb/zh/concept/ai-assistant/page-action.md
deleted file mode 100644
index ab3c876bb..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/page-action.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-id: ai-assistant.page-action.concept
-title: AI 操作页面的机制
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 控制页面
- - AI 自动操作
- - AI 怎么帮我操作页面
- - AI 跳转页面
- - 页面自动化
- - AI 点按钮
-related_tools: []
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 应用市场已安装 mcp_server 插件
-negative:
- - AI 的页面操作仅在浏览器/桌面端会话窗口内生效,无法控制其他用户的页面
- - 一次只能操作当前会话所在的页面,不能开新标签页
- - 关闭浏览器或切到别的标签页时,页面操作会断连失败
- - 跨源(外部站点)微应用 iframe 的内部不可操作,仅同源微应用插件可
-last_verified: v1.7.91
----
-
-# AI 操作页面的机制
-
-## 定义
-AI 助手通过高层导航和低层元素操作两类能力操作用户当前页面。主程序常驻 WebSocket(`/ws`)把指令派发给前端,前端的 `action-executor.js` 执行真实 DOM 行为或路由跳转,结果回传给 AI 让对话继续。这类页面操作不是 MCP 工具,由 AI 助手在你的页面上执行。
-
-## 两层能力
-- **高层导航**:语义化命名(如 `open_task`、`navigate_to_dashboard`),参数明确(任务 ID),由前端封装好 router 调用;优先用这层,稳定不易错
-- **低层元素操作**:基于元素 ref 的通用动作(click/type/select/focus/scroll/hover),用于没封装好的细节操作
-
-## 受支持的高层动作
-- `open_task`、`open_dialog`、`open_project`、`open_file`、`open_folder`
-- `navigate_to_dashboard / messenger / calendar / files`
-- `close_app`:关闭当前打开的应用窗口(仅在有微应用打开时出现)。属外壳层动作,哪怕 AI 正停在该应用内部、甚至应用跨源读不到内部,也能直接关闭
-
-## 受支持的低层元素动作
-- `click`、`type`、`select`、`focus`、`scroll`、`hover`
-
-## 微应用内部
-当你打开了微应用插件(应用市场安装、反代到主站 `/apps/` 同源路径、以 iframe 呈现)并停在最前时,采集页面上下文与低层元素操作会**默认作用于该微应用内部**,可像操作主界面一样点按钮 / 填表 / 切菜单。多个微应用同时打开时只操作最前面那个;切换或关闭应用后,原先拿到的元素引用会失效,AI 会被提示重新获取。跨源(指向外部站点)的微应用读不到内部,AI 会提示改用数据命令或回到主界面。
-
-## 不支持
-- 不能模拟键盘组合键、不能拖拽
-- 不能操作跨源(外部站点)微应用 iframe 的内部
-- 不能跳转外部 URL(goForward 只走应用内路由)
-- 不能伪造非用户主动触发的事件(如自动提交表单审批通过)
-
-## 相关
-- 让 AI 跳页面:[[ai-assistant.page-action.howto]]
-- AI 操作元素:[[ai-assistant.element-action.howto]]
-- 元素查找接口:[[ai-assistant.match-elements.concept]]
-- 取页面上下文:[[ai-assistant.page-context-tool.concept]]
diff --git a/resources/ai-kb/zh/concept/ai-assistant/page-context-tool.md b/resources/ai-kb/zh/concept/ai-assistant/page-context-tool.md
deleted file mode 100644
index 049712ed8..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/page-context-tool.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-id: ai-assistant.page-context-tool.concept
-title: AI 怎么知道你在哪个页面
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 看页面
- - 页面上下文
- - AI 怎么知道当前页
- - AI 读取页面
- - AI 上下文采集
-related_tools: []
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 应用市场已安装 mcp_server 插件
-negative:
- - 仅当用户在 AI 浮窗当前会话所在的浏览器/桌面端窗口时才能采集
- - 不能跨标签 / 跨设备同步采集,每个 socket 只对应一个页面
- - 不读取密码框/被遮挡元素/隐藏元素
- - 跨源(外部站点)微应用 iframe 的内部无法采集,会提示改用数据命令
-last_verified: v1.7.90
----
-
-# AI 怎么知道你在哪个页面
-
-## 定义
-当你在 AI 浮窗里问"这页有什么操作""帮我点这页的某个按钮"时,AI 助手会向你当前的浏览器/桌面端页面请求页面上下文,包括:当前路由名(如 `manage-project`)、URL、标题、可交互元素清单(带 ref / name / role)、该页可用的高层动作。结果由前端 `page-context-collector.js` 实时收集后回传给 AI。
-
-## 返回字段
-- `page_type`:路由名(如 `manage-task`)
-- `page_url` / `page_title`
-- `elements`:可交互元素(ref / name / role)
-- `total_count` / `has_more` / `offset`:分页
-- `available_actions`:该页可用的高层动作(如项目页可 `open_task`)
-- `ref_map`:ref → 定位信息
-- `frame`:本次采集所在上下文——`scope`(`main` 主界面 / `app` 微应用)、`app_name`(微应用时的应用名)、`operable`(是否可操作)
-
-## 调用模式
-- **轻量**:`interactive_only=true` + `max_elements=20`
-- **完整**:默认前 100 个(含内容)
-- **搜索**:传 `query` 先关键词后向量匹配
-- **采集范围**:默认采集"用户最前面看到的"页面——有同源微应用插件在最前打开时采集其 iframe 内部,否则采集主界面;也可指定只采主界面。跨源微应用读不到内部,会返回 `operable:false` 并提示降级。
-
-## 隐式触发
-用户在浮窗里问"这个页面有什么操作"、"帮我点这页的某按钮"、"切到下一项目"时,AI 都会先采集当前页面上下文再决定下一步。
-
-## 不支持
-- 不返回每个元素的位置坐标(仅 selector)
-- 不会返回 input 框的当前值(不读取用户私有输入)
-- 不能在弹窗/抽屉之外拿到全屏快照(仅 DOM 节点)
-
-## 相关
-- 元素匹配:[[ai-assistant.match-elements.concept]]
-- 操作元素:[[ai-assistant.element-action.howto]]
-- 页面操作机制:[[ai-assistant.page-action.concept]]
diff --git a/resources/ai-kb/zh/concept/ai-assistant/page-context.md b/resources/ai-kb/zh/concept/ai-assistant/page-context.md
deleted file mode 100644
index aa505e10b..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/page-context.md
+++ /dev/null
@@ -1,78 +0,0 @@
----
-id: ai-assistant.page-context.concept
-title: AI 助手页面上下文(弱提示词)
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 知道当前页面
- - 页面感知
- - AI 上下文
- - 弱提示词
- - 当前页面注入
- - AI 现在在哪
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 弱提示词只传「页面类型 / 实体 id / 名称 / 对话类型」四类,不传业务详细数据
- - 详细数据需要 AI 通过 MCP 工具自取
- - 嵌入入口(专用 onBeforeSend)不走弱提示词机制
-last_verified: v1.7.90
----
-
-# AI 助手页面上下文(弱提示词)
-
-## 定义
-**弱提示词**是 AI 助手浮窗对话时自动注入的极简「我现在在哪」描述,让 AI 知道用户提问发生在哪个项目 / 任务 / 对话页,能正确解析「这个项目 / 这条任务」之类指代。
-
-## 注入格式
-渲染为一行 `system` 消息穿插到 context 历史:
-
-```
-[当前页面] 项目详情页(project_id=123,名称:DooTask)
-[页面切换] 任务详情页(task_id=4567,名称:修复 SSE 断流)
-```
-
-前缀:`[当前页面]` 首次注入,`[页面切换]` 后续在不同页面再提问时。
-
-## 注入的字段
-仅四类,绝不带其他业务数据:
-
-| 字段 | 含义 |
-|---|---|
-| `type` | 实体类型(task / dialog / project / file / report) |
-| `id` | 实体 id |
-| `name` | 实体名称 |
-| `dialogType` | 群聊 / 私聊,仅 dialog 有 |
-
-## 为什么穿插历史
-用户可能在不同项目 / 任务页连续提问。只放当前页会让历史里两个「这个项目」失去锚点。穿插能给历史每条用户消息打上「问题发生时所在的页面」,AI 才能正确分辨。
-
-## 可识别的页面
-- 任务详情弹窗(最高优先)→ `task:{id}`
-- 对话详情弹窗 → `dialog:{id}`
-- 仪表盘 → `dashboard`
-- 项目列表 / 详情 → `project-list` / `project:{id}`
-- 消息列表 / 会话 → `messenger` / `dialog:{id}`
-- 日历 → `calendar`
-- 文件列表 / 详情 → `file-list` / `file:{id}`
-- 工作汇报编辑 / 详情 → `report:{id}`
-
-## 何时不注入
-- 不可识别路由(登录页、个人设置等)
-- 同 `contextKey` 连续提问
-- 嵌入入口(带 `onBeforeSend`)
-
-## 详细数据怎么拿
-弱提示词只告「在哪」,不告「内容」。AI 需要看任务描述、项目统计时通过 MCP 工具自取(如 `get_task`、`get_project_data`)。
-
-## 不支持
-- 不支持把整页内容塞给 AI
-- 不支持用户手动关闭弱提示词
-- 不支持自定义注入字段
-
-## 相关
-- [[ai-assistant.embed-entry.concept]]
-- [[ai-assistant.welcome-prompts.concept]]
diff --git a/resources/ai-kb/zh/concept/ai-assistant/privacy.md b/resources/ai-kb/zh/concept/ai-assistant/privacy.md
deleted file mode 100644
index 0fef75770..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/privacy.md
+++ /dev/null
@@ -1,80 +0,0 @@
----
-id: ai-assistant.privacy.concept
-title: AI 助手数据隐私
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 数据安全
- - AI 对话保存在哪
- - AI 会泄露吗
- - AI 上传图片去哪
- - DooTask AI 隐私
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 对话会通过 ai 插件转发给管理员配置的上游 LLM 服务商,受其隐私条款约束
- - 不存在「AI 完全本地化」开关,除非管理员只配 Ollama 本地模型
- - 用户无法自助导出会话(只能在浮窗手动清空历史)
-last_verified: v1.7.90
----
-
-# AI 助手数据隐私
-
-## 数据存到哪里
-
-### 对话内容
-- 数据库表:`ai_assistant_sessions`,按 `userid` 行级隔离
-- 其他普通用户绝对看不到别人会话
-- 仅当前用户、系统管理员可通过后台数据库访问
-
-### 图片
-- 路径:`public/uploads/assistant/YYYYMM/{userid}/xxx.jpg`
-- 按用户 id 分目录,删除会话时物理删除
-
-### 配置 / 模型选择
-- 存 IndexedDB `aiAssistant.model`(仅当前浏览器)
-- 浮按钮位置 / 输入历史也存 IndexedDB,不上传
-
-## 数据传给谁
-
-```
-浏览器
- → DooTask 后端 (POST api/assistant/auth)
- → ai 插件容器 (dootask-ai)
- → 上游 LLM 服务商 (OpenAI / Claude / DeepSeek 等)
-```
-
-- 上游服务商由**系统管理员**决定
-- 选 Ollama 本地模型则对话不出 DooTask 部署网络
-- 选公网服务则按服务商隐私条款处理
-
-## 发送上去的内容
-- 本次提问的文本 + 图片(多模态时)
-- 当前会话最近 10 轮 context
-- 当前页面弱提示词(仅页面类型 + 实体 id + 名称,**不含**业务详细数据)
-- DooTask 默认 system prompt
-
-## 不会发送的
-- 用户密码、token、密钥
-- 不在 context 窗口内的历史会话
-- 其他用户对话
-- 私聊 / 群聊具体消息(除非用户主动复制到提问)
-- 完整页面业务数据(只发弱提示词)
-
-## 清理与删除
-- 单条 / 清空当前桶:[[ai-assistant.session-delete.howto]]
-- 清浏览器 IndexedDB:清掉模型选择、浮按钮位置、输入历史
-- 上游侧保留多久取决于服务商(如 OpenAI 默认 30 天)
-
-## 不支持
-- 不支持端到端加密让管理员都看不到
-- 不支持把某条对话标记「不发送」
-- 不支持自助导出全部历史
-
-## 相关
-- [[ai-assistant.auth.concept]]
-- [[ai-assistant.session.concept]]
-- [[ai-assistant.page-context.concept]]
diff --git a/resources/ai-kb/zh/concept/ai-assistant/session.md b/resources/ai-kb/zh/concept/ai-assistant/session.md
deleted file mode 100644
index 8c8f9f6fd..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/session.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-id: ai-assistant.session.concept
-title: AI 助手会话
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 会话
- - AI 历史
- - AI 对话记录
- - AI session
- - session_key
- - 会话桶
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 单个桶最多 20 条会话,超过自动淘汰最早
- - 嵌入式入口的会话不出现在浮窗历史里
- - 删除会话不可恢复,对应图片也会从 public/uploads 物理删除
-last_verified: v1.7.90
----
-
-# AI 助手会话
-
-## 定义
-会话(session)是 AI 助手中一组连续的用户提问 + AI 回答集合,按「场景桶」隔离持久化到 `ai_assistant_sessions` 表,归当前用户所有。
-
-## 关键属性
-
-| 字段 | 含义 |
-|---|---|
-| `session_key` | **场景桶**,浮窗用 `global`,嵌入入口用各自 key |
-| `session_id` | 唯一 id,格式 `session-{时间戳}-{随机串}` |
-| `title` | 自动取首条用户消息前 20 字 |
-| `data` | JSON 数组,存所有 user/assistant/system 消息 |
-| `images` | JSON 对象 `{imageId: 服务端路径}` |
-| `updated_at` | 历史列表按其倒序 |
-
-## 持久化时机
-- 流式回答完成后立即保存
-- 编辑历史问题、删除消息后保存
-- 普通编辑期间有 2 秒防抖
-
-## 桶(session_key)的作用
-不同业务入口走不同桶:
-- `global`:浮窗 + 快捷键 + 顶部「+」菜单
-- `project-create`:新建项目 AI 助手
-- `task-add`:新建任务 AI 助手
-- `report-edit`:工作汇报 AI
-- `chat-message`:消息输入 AI
-
-切桶时先保存当前会话再载入目标桶历史列表,避免互相串扰。
-
-## 数量限制
-- 每个桶最多保留 20 条(`maxSessionsPerKey`)
-- 超过从最旧的开始淘汰
-- 单会话内最多 50 条 message(`maxResponses`)
-
-## 不支持
-- 不支持跨用户 / 跨桶搜索;只查当前用户当前桶
-- 不支持把某条会话从一个桶导到另一个桶
-- 不支持手动改会话标题
-
-## 相关
-- [[ai-assistant.session-list.howto]]
-- [[ai-assistant.new-chat.howto]]
-- [[ai-assistant.session-delete.howto]]
-- [[ai-assistant.embed-entry.concept]]
diff --git a/resources/ai-kb/zh/concept/ai-assistant/streaming.md b/resources/ai-kb/zh/concept/ai-assistant/streaming.md
deleted file mode 100644
index baac2499a..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/streaming.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-id: ai-assistant.streaming.concept
-title: AI 助手流式输出
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 流式回答
- - 边写边出
- - AI 一边打字一边显示
- - SSE 流
- - AI 实时输出
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 不支持 WebSocket 推送,固定走 SSE
- - 不支持手动重试单条;流断后该 message 标记 error,需重新发送
- - 同会话并发流会被前一个的发送动作清掉
-last_verified: v1.7.90
----
-
-# AI 助手流式输出
-
-## 定义
-AI 助手通过 **SSE(Server-Sent Events)** 接收上游 LLM 的逐 token 输出,每收到一个 chunk 就追加到当前 message 的 `rawOutput`,呈现 ChatGPT 般「边写边出」的效果。
-
-## 数据流
-1. `POST api/assistant/auth` → 拿 stream_key
-2. `EventSource ai/invoke/stream/{stream_key}`
-3. 监听三类事件:
- - `append` → 追加(`entry.rawOutput += chunk`)
- - `replace` → 整段替换(`entry.rawOutput = chunk`)
- - `done` → 流结束(`entry.status = 'completed'`)
-4. 断流 / 异常 → `handleStreamFailed`
-
-## 事件类型
-
-| 事件 | 用途 |
-|---|---|
-| `append` | 普通增量 token(最常见) |
-| `replace` | 整段替换(工具结果回填、思考链重写) |
-| `done` | 流结束,payload 含 `error` 字段表示上游报错 |
-
-## 状态机
-每条 AI message 4 个状态:
-- `waiting` → 已发出但首个 chunk 未到
-- `streaming` → 正在接收 chunk
-- `completed` → `done` 正常收到
-- `error` → 上游错误、连接失败、用户中断
-
-## 并发与归属
-- 每个流绑定 `owner = {sessionKey, sessionId, localId}`
-- 用户切到其他会话后,原流仍后台跑,结束时写回原会话存储
-- 发新问题前会清掉同会话的所有活跃流,防止两段对话错位
-
-## 中断恢复保护
-- 关浮窗 / 页面崩溃后,下次加载会话发现 message 仍是 `streaming/waiting` 则归一为 `error`
-- 避免「永远转圈」(`sanitizeResponsesForPersist`)
-
-## 滚动行为
-- 视图在最底部时新 chunk 自动 `scrollToBottom`
-- 用户向上翻历史时(距底 > 20px)不强制下拉
-
-## 不支持
-- 不支持 WebSocket
-- 不支持 chunk 级别撤销
-- 不支持自动重试断流
-
-## 相关
-- [[ai-assistant.stop.howto]]
-- [[ai-assistant.modal.concept]]
-- [[ai-assistant.session-save.howto]]
diff --git a/resources/ai-kb/zh/concept/ai-assistant/tool-call.md b/resources/ai-kb/zh/concept/ai-assistant/tool-call.md
deleted file mode 100644
index 63fcce66d..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/tool-call.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-id: ai-assistant.tool-call.concept
-title: 工具调用的流式事件结构
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - tool_call 是什么
- - AI 工具调用的过程
- - 工具调用气泡
- - AI 调用了工具显示什么
- - tool_call 事件
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 单次回复可包含多次工具调用(并行或串行),不限于一次
- - 工具调用结果不计入用户上下文 token,但会消耗会话 token
- - 用户不能在前端取消已发出的工具调用,只能整体中断本轮回复
-last_verified: v1.7.90
----
-
-# 工具调用的流式事件结构
-
-## 定义
-AI 助手回复以流式 SSE 推送给前端,事件中除了文本增量,还会出现工具调用片段。每次工具调用在浮窗里渲染为一个独立气泡,展示"工具名 + 参数 + 状态",让用户能看到 AI 在背后做什么。
-
-## 一次完整工具调用的事件序列
-1. `tool_call_start`:模型决定调工具,前端插入气泡,状态置「执行中」
-2. `tool_call_arguments`(可多次):参数 JSON 增量流式拼接
-3. `tool_call_result`:后端/前端返回结果,状态变「完成」或「失败」
-4. 模型基于结果继续生成 `message` 文本
-
-## 气泡可见信息
-- 工具名(如 `list_tasks`)
-- 入参 JSON(折叠/展开)
-- 出参摘要(成功)或错误码(失败)
-- 执行耗时
-
-## 与普通文本的关系
-- 工具结果不直接回给用户,而是回灌给模型
-- 模型读结果后再生成下一段自然语言回答("我找到 3 条任务……")
-- 用户体感是"AI 一边查一边说"
-
-## 不支持
-- 工具调用进行中无法手动改参数;要重来需点重试或重新提问
-- 失败的工具调用不会自动二次重试(模型可能换工具或道歉)
-
-## 相关
-- 工具机制总览:[[ai-assistant.tools.concept]]
-- 工具清单:[[ai-assistant.tools-list.concept]]
-- 失败处理:[[ai-assistant.tool-failed.faq]]
diff --git a/resources/ai-kb/zh/concept/ai-assistant/tools-list.md b/resources/ai-kb/zh/concept/ai-assistant/tools-list.md
deleted file mode 100644
index 6b6dad8a5..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/tools-list.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-id: ai-assistant.tools-list.concept
-title: AI 助手可用工具清单
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 有哪些工具
- - AI 能调用什么
- - AI 工具列表
- - MCP 工具有哪些
- - AI 都能做什么
-related_tools: []
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 应用市场已安装 mcp_server 插件
-negative:
- - 工具集合由系统维护,普通用户无法自定义增减
- - 列表项名是后端工具名(snake_case),用户不需要记
- - 不在清单中的能力 AI 无法直接执行(例如改系统设置、装插件)
-last_verified: v1.7.90
----
-
-# AI 助手可用工具清单
-
-## 用户与组织
-- `get_users_basic`:批量取用户昵称/邮箱/头像
-- `search_users`:按关键词找人,支持按项目/对话筛选
-
-## 任务
-- `list_tasks`:列任务(状态/项目/时间筛选)
-- `get_task`:取任务完整详情
-- `create_task`、`update_task`、`complete_task`、`delete_task`
-- `create_sub_task`:建子任务
-- `get_task_files`:取任务附件
-
-## 项目
-- `list_projects`、`get_project`、`create_project`、`update_project`
-
-## 消息与对话
-- `search_dialogs`:搜对话
-- `send_message`:发消息
-- `send_task_ai_message`:作为 AI 向任务讨论区发消息
-- `get_message_list`:取历史消息
-
-## 文件
-- `list_files`、`search_files`、`get_file_detail`、`fetch_file_content`
-
-## 工作报告
-- `list_received_reports`、`list_my_reports`、`get_report_detail`、`create_report`、`mark_reports_read`
-- `generate_report_template`:基于已完成任务生成报告草稿
-
-## 搜索
-- `intelligent_search`:跨任务/项目/文件/联系人/消息统一语义搜索
-
-## 页面操作(非 MCP 工具)
-AI 助手还能在你当前的浏览器/桌面端页面上帮你打开任务/项目/对话、跳功能页、点击/输入/选择/滚动页面元素。这类页面操作不在 MCP 工具清单内,由 AI 助手在你的页面上直接执行。
-
-## 图片理解(非 MCP 工具)
-把图片交给 AI 助手后,AI 可直接识别图中内容(多模态),无需单独的图片文字提取工具。
-
-## 知识库
-- `search_help_docs`:检索本知识库(DooTask 功能说明)
-- `get_session_image`:取用户上传到会话的图片
diff --git a/resources/ai-kb/zh/concept/ai-assistant/tools.md b/resources/ai-kb/zh/concept/ai-assistant/tools.md
deleted file mode 100644
index 35886f007..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/tools.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-id: ai-assistant.tools.concept
-title: AI 助手的工具调用机制
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 工具
- - AI 调工具
- - 怎么让 AI 调工具
- - 让 AI 调用工具
- - MCP 工具
- - AI 怎么操作系统
- - function calling
- - AI 能做什么
-related_tools: []
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 应用市场已安装 mcp_server 插件
-negative:
- - 工具是否可用取决于所选模型是否支持 tool/function calling,部分模型仅能纯文本回答
- - 工具调用结果会展示给用户,不会静默执行
- - 用户没权限的操作(如读不到的任务)即使 AI 调工具也会被后端拒绝
-last_verified: v1.7.90
----
-
-# AI 助手的工具调用机制
-
-## 定义
-DooTask AI 助手通过 MCP(Model Context Protocol)协议调用工具,把"问 AI"扩展为"让 AI 帮我做事"。AI 收到用户请求后判断是否需要调工具,例如查任务、发消息、跳页面,由插件 `mcp_server` 把请求路由到对应的后端 API 或前端动作执行器,再把结果回灌给模型,模型基于结果继续回答。
-
-## 工具来源
-- **dootask-mcp 内置工具**:29 个,覆盖任务/项目/消息/文件/报告/搜索
-- **AI 助手内置工具**:`search_help_docs`(检索本知识库)、`get_session_image`(取多模态图片)
-- **doo 命令行工具**:AI 助手还可经内置的 `doo` 命令行(以你的身份、在你的权限内)直接完成任务/项目/消息/文件/报告/搜索/页面等操作;它是把上述能力统一成一个命令行入口,权限同样由后端校验
-- 工具清单维护在仓库 `resources/ai-kb/_meta/tool-binding.yaml`
-
-## 数据工具与页面操作
-- **数据工具(MCP)**:直接调后端 API(如 `create_task`、`send_message`),不依赖前端 UI
-- **页面操作(非 MCP 工具)**:AI 助手还能在你当前的浏览器/桌面端页面上打开任务/跳页面、点击/输入页面元素;这类能力不在 MCP 工具清单内,由 AI 助手在你的页面上执行
-
-## 触发条件
-- AI 模型本身必须支持 tool calling(OpenAI / Claude / DeepSeek / Qwen 等主流模型均支持)
-- 管理员在系统设置「AI 模型」中开启该模型
-- `mcp_server` 插件已安装并运行
-
-## 相关
-- 工具完整清单:[[ai-assistant.tools-list.concept]]
-- 工具调用流式事件结构:[[ai-assistant.tool-call.concept]]
-- 工具调用失败处理:[[ai-assistant.tool-failed.faq]]
diff --git a/resources/ai-kb/zh/concept/ai-assistant/welcome-prompts.md b/resources/ai-kb/zh/concept/ai-assistant/welcome-prompts.md
deleted file mode 100644
index 1234c555b..000000000
--- a/resources/ai-kb/zh/concept/ai-assistant/welcome-prompts.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-id: ai-assistant.welcome-prompts.concept
-title: AI 助手欢迎语与快捷提示
-type: concept
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 欢迎页
- - AI 快捷提示
- - AI 推荐问法
- - AI 起手
- - AI 建议
- - AI 提示卡片
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 用户不能自定义快捷提示卡片
- - 卡片在每次场景切换时会重抽,并非固定不变
- - 卡片点击只是把文本填入输入框,不会自动发送
-last_verified: v1.7.90
----
-
-# AI 助手欢迎语与快捷提示
-
-## 定义
-打开 AI 助手浮窗、**还没有任何对话**时显示的引导界面,包含 AI 图标 + 「欢迎使用 AI 助手」标题 + 若干个**快捷提示卡片**。卡片内容根据当前页面场景动态切换。
-
-## 卡片分类
-按四类设计确保多样性:
-
-| 类型 | 含义 | 示例 |
-|---|---|---|
-| `query` | 查询 / 概览 | 「我今天有哪些任务?」 |
-| `action` | 推进 / 操作 | 「帮我把这条任务标记完成」 |
-| `sync` | 同步 / 协作 | 「给项目组发一条进度更新」 |
-| `review` | 复盘 / 总结 | 「总结一下这周的工作」 |
-
-## 与页面场景联动
-卡片基于以下数据动态生成:
-- 当前路由(仪表盘 / 项目 / 任务 / 消息 / 文件 / 日历)
-- 当前打开的弹窗(任务 / 对话)
-- 当前项目 / 任务 / 对话 id
-- 当前语言(中 / 英)
-
-切换页面时通过 `welcomePromptsKey` watcher 触发,100ms 防抖避免闪屏。
-
-## 点击行为
-1. 点击某张卡片
-2. 卡片文本被填入输入框
-3. 输入框自动获焦
-4. **不会**自动发送,需手动按发送或回车
-
-## 显示条件
-- AI 助手浮窗已打开
-- `visibleResponses.length === 0`(当前会话无消息)
-- `displayMode === 'chat'`(modal 模式由业务方控制)
-
-## 何时刷新
-- 路由变更
-- 打开 / 关闭任务弹窗
-- 打开 / 关闭对话弹窗
-- 切换项目
-
-均走 `welcomePromptsKey` watcher + 100ms 防抖。
-
-## 不支持
-- 不支持自定义卡片文案
-- 不支持「关闭欢迎提示卡片」开关
-- 不支持把某条卡片置顶或常驻
-
-## 相关
-- [[ai-assistant.modal.concept]]
-- [[ai-assistant.page-context.concept]]
diff --git a/resources/ai-kb/zh/concept/approve/form.md b/resources/ai-kb/zh/concept/approve/form.md
deleted file mode 100644
index a2ccb4ace..000000000
--- a/resources/ai-kb/zh/concept/approve/form.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-id: approve.form.concept
-title: 审批表单字段
-type: concept
-feature: approve
-scope: admin
-locale: zh
-aliases:
- - 审批表单
- - 表单字段
- - 表单设计
- - 自定义字段
- - 申请单字段
- - 表单组件有哪些
- - 申请类型字段
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 当前用户是系统管理员
- - 在流程模板编辑器中
-negative:
- - 当前版本不支持公式字段(如「时长 = 结束时间 - 开始时间」自动算)
- - 不支持联动字段(A 字段值变化时显示/隐藏 B 字段)
- - 不支持把表单字段值用作下一节点审批人路由依据(无条件分支)
- - 表单字段一旦发布后改动,已提交的旧实例展示按当时快照不回填
-last_verified: v1.7.90
----
-
-# 审批表单字段
-
-## 定义
-审批表单是发起人填写的申请单结构,由若干**字段组件**拼成。管理员在流程模板编辑器(iframe 内)拖拽这些组件即可设计表单。表单值随流程实例一起存到插件库的 `var` 字段(JSON),并随状态变化贯穿始终。
-
-## 内置字段组件
-- **单行文本**:限长字符串,如「申请人姓名」「合同编号」
-- **多行文本**:长描述,如「请假事由」「报销说明」
-- **数字**:整数 / 小数,如「报销金额」
-- **日期 / 日期时间**:年-月-日 或精确到分钟,常用于开始/结束时间
-- **单选 / 多选 / 下拉**:固定选项集,如「假期类型」可枚举「年假/事假/病假/调休/产假/陪产假/婚假/丧假/哺乳假/产检假/其他」
-- **附件 / 图片**:上传文件,前端控件复用主程序 `ImgUpload`;图片限制宽高与张数(默认上限 3 张、2048×2048)
-- **明细 / 子表**:一对多结构,如报销单的多行费用明细
-- **金额 / 时长**:业务语义字段(基于数字字段封装)
-
-## 必填、提示、默认值
-- 每个字段可配置 `required`(必填)、占位提示、默认值
-- 必填项校验在发起页前端拦截;提交到主程序 `process__start` 再做二次校验
-
-## 与流程节点的关系
-- 表单字段是"装数据的",节点是"管流转的",两者解耦
-- 节点拿不到 form 字段做路由决策(不支持条件分支)
-
-## 数据存储
-- 表单值在主程序前端组成 `var` JSON 后随 `proc_name + department_id` 一起调 `approve/process/start`
-- 插件把 `var` 整体存进 proc inst 行;后续审批人查看时反序列化展示
-
-## 不支持
-- 不支持字段联动 / 公式 / 条件分支
-- 不支持表单级权限(不能按角色显示不同字段)
-- 不支持跨流程模板字段复用
diff --git a/resources/ai-kb/zh/concept/approve/history.md b/resources/ai-kb/zh/concept/approve/history.md
deleted file mode 100644
index c35e61548..000000000
--- a/resources/ai-kb/zh/concept/approve/history.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-id: approve.history.concept
-title: 审批流程历史 History
-type: concept
-feature: approve
-scope: end-user
-locale: zh
-aliases:
- - 审批历史
- - 审批操作记录
- - 流程留痕
- - 谁审过
- - 流程节点历史
- - ProcInstHistory
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 approve 插件
-negative:
- - 历史记录不可手动编辑,只由系统在节点流转时写入
- - 删除审批(process/delById)会连带删除该流程的全部历史
- - 历史不会单独导出,导出走 admin 的 approve/export 数据导出
-last_verified: v1.7.90
----
-
-# 审批流程历史 History
-
-## 定义
-流程历史(`ApproveProcInstHistory`,表 `approve_proc_inst_history`)是每个流程实例([[approve.process-inst.concept]])在节点流转时留下的快照,记录谁发起、当前节点、最近意见、整体状态,用于已结束审批的留档查询和驱动「已办」「抄送我(已结束)」两类列表。
-
-## 关键字段
-- **proc_def_id / proc_def_name**:所属模板 ID 和名称
-- **title**:审批标题
-- **start_user_id / start_user_name**:发起人
-- **department_id / department / company**:发起部门和公司
-- **node_id / candidate / task_id**:当前节点、候选人 userid 串、task ID
-- **start_time / end_time / duration**:开始/结束/持续时长
-- **state**:0 待审批 / 1 审批中 / 2 通过 / 3 拒绝 / 4 撤回
-- **is_finished / var**:是否结束 / 表单数据 JSON
-- **latest_comment / global_comment**:最近一次意见 / 全文评论汇总
-
-## 谁会读取
-- 「已办」:`approve/procHistory/findTask`
-- 「抄送我」已结束:`approve/procHistory/findProcNotify`
-- 「已发起」已结束:`approve/procHistory/startByMyself`
-- 详情页流程图:合并 `node_infos` 与历史渲染
-
-## 副作用:用户请假/外出状态
-静态方法 `getUserApprovalStatus(userid)` 按当前时间是否落在某条已通过的「请假/外出」表单时段内,决定用户在系统其他地方的「请假中」标签。1 分钟缓存。
diff --git a/resources/ai-kb/zh/concept/approve/node.md b/resources/ai-kb/zh/concept/approve/node.md
deleted file mode 100644
index e0f5ac7e5..000000000
--- a/resources/ai-kb/zh/concept/approve/node.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-id: approve.node.concept
-title: 审批节点类型
-type: concept
-feature: approve
-scope: admin
-locale: zh
-aliases:
- - 审批节点
- - 单人审批
- - 会签是什么
- - 顺序会签
- - 并行会签
- - 或签
- - 多人审批怎么配
- - 审批人怎么设
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 当前用户是系统管理员
- - 在流程模板编辑器中
-negative:
- - 当前版本不支持条件分支节点(按表单字段值自动路由到不同审批人),节点链只能串行/并行
- - 不支持嵌套子流程节点
- - 不支持回退到任意节点:拒绝直接结束流程,不能让发起人改了再走原路
-last_verified: v1.7.90
----
-
-# 审批节点类型
-
-## 定义
-流程模板由若干**节点**串成一条链。一个节点 = 一步审批/抄送。节点决定"这一步由谁参与、用什么方式参与、参与后流程怎么走"。审批人来源支持指定具体用户、按角色/部门负责人动态解析。每条流程发起后会生成对应的"审批任务(task)"分发到各节点候选人手上。
-
-## 主要节点类型
-- **发起节点**:流程起点,自动以申请人身份填充;不需要配置审批人
-- **单人审批**:1 个候选人,处理后流程进入下一节点
-- **顺序会签**:多个审批人按顺序处理,前一人通过才轮到下一人;任一人拒绝整单拒绝
-- **并行会签**:多个审批人同时收到任务,**全部**通过才进入下一节点;任一人拒绝整单拒绝
-- **或签**:多个候选人同时收到任务,**任一人**处理即代表全节点完成(典型用于"任一主管审批")
-- **抄送节点**:通知性节点,候选人只收到通知(在「抄送我的」Tab 看到),无须操作,流程不等待
-
-## 审批人来源
-- 指定具体用户:在编辑器里勾选成员列表
-- 部门负责人:动态解析为发起人当前部门的 `owner_userid`(在 `UserDepartment` 表里维护)
-- 角色:按主程序角色匹配
-- 发起人自选:留空让发起人发起时手动指定
-
-## 节点完成后的通知
-节点产生新任务后,主程序通过 `approval-alert` 机器人在群聊推送"待你审批"模板消息给候选人;状态变更(通过/拒绝/撤回)也走同一机器人推送。
-
-## 与状态的关系
-- 整单状态:审批中(1)/ 通过(2)/ 拒绝(3)/ 撤回(4)
-- 当前所在节点 + 候选人由插件维护,主程序通过 `process__getProcessById` 拿到
-
-## 不支持
-- 不支持条件分支(不能按表单字段值 IF X 自动路由到分支 A);需要按条件走不同审批人时,把流程拆成多个流程模板(如「请假 3 天以内」「请假 3 天以上」各建一个),由发起人按情况选择
-- 不支持任意节点回退
-- 不支持节点级 SLA 超时自动转交
diff --git a/resources/ai-kb/zh/concept/approve/notify.md b/resources/ai-kb/zh/concept/approve/notify.md
deleted file mode 100644
index 944d89515..000000000
--- a/resources/ai-kb/zh/concept/approve/notify.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-id: approve.notify.concept
-title: 审批通知与「审批助手」机器人
-type: concept
-feature: approve
-scope: end-user
-locale: zh
-aliases:
- - 审批机器人
- - 审批通知
- - 审批助手
- - approval-alert
- - 怎么收到审批提醒
- - 审批卡片
-related_tools: []
-related_pages: [application, messenger]
-prerequisites:
- - 应用市场已安装 approve 插件
- - 当前账号未屏蔽「审批助手」机器人会话
-negative:
- - 不支持改成第三方 webhook 推送
- - 不支持邮件 / 短信 / APP 推送渠道(只发应用内聊天)
- - 不支持自定义模板文案
- - 机器人不能被「@」也不能直接对话指令
-last_verified: v1.7.90
----
-
-# 审批通知与「审批助手」机器人
-
-## 定义
-审批的所有通知都通过系统机器人「审批助手」(userid `approval-alert`)的 1 对 1 私聊推送,消息类型 `template`(卡片)。卡片含标题、关键字段、缩略图(请假类带图片时),底部「查看详情」跳进审批详情。
-
-## 何时发卡片
-后端 `approveMsg()` 按 `type` 投递:
-
-| type | 触发 | 收件人 | 标题样例 |
-|---|---|---|---|
-| `approve_reviewer` | 到我作审批人节点 | 待审批人 | {发起人} 提交的「{模板}」待你审批 |
-| `approve_notifier` | 到我所在 notifier 节点 | 抄送人 | 抄送 {发起人} 提交的「{模板}」记录 |
-| `approve_comment_notifier` | 我参与的审批被加全文评论 | 其他相关方 | {评论人} 评论了 {发起人} 的「{模板}」审批 |
-| `approve_submitter` | 我发起的被通过/拒绝 | 发起人 | 您发起的「{模板}」已通过 / 被 {审批人} 拒绝 |
-
-## 卡片更新机制
-审批人同意/拒绝、发起人撤销时不发新卡,而用 `msg_id` 反查原卡片调 `change-{msg_id}` 原地更新(绿-通过/红-拒绝/灰-撤回),避免聊天里堆几十条。
-
-## 未读徽标
-`approve_reviewer` 推送时附带 WebSocket 事件 `approve/unread`,「审批」入口和 Tab「待办」名后的数字立即 +1,处理后 -1。数量接口 `approve/process/doto`。
diff --git a/resources/ai-kb/zh/concept/approve/overview.md b/resources/ai-kb/zh/concept/approve/overview.md
deleted file mode 100644
index 4f10fad2a..000000000
--- a/resources/ai-kb/zh/concept/approve/overview.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-id: approve.concept
-title: 审批中心是什么
-type: concept
-feature: approve
-scope: end-user
-locale: zh
-aliases:
- - 审批是什么
- - 审批流程是什么
- - approve 插件
- - 什么是流程审批
- - 工作流
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 approve 插件
-negative:
- - 审批是独立插件,未安装时整个功能不可用
- - 不支持条件分支(按表单值路由到不同审批人)
- - 不支持嵌套子审批
- - 表单不支持公式计算字段
-last_verified: v1.7.90
----
-
-# 审批中心是什么
-
-## 定义
-审批中心(approve)是 DooTask 的内置流程审批应用,用于在企业内提交、流转、处理表单类申请。典型场景:请假、出差、报销、用印、采购、合同会签。它是独立插件(独立 docker 服务 + 独立数据库),主程序通过 `ApproveController` 代理调用并把消息回写到聊天会话。
-
-## 三个核心对象
-- **流程模板 ProcDef**:管理员预先定义的审批样板,含表单字段、审批人节点、抄送人节点。普通用户只能选用,不能修改
-- **流程实例 ProcInst**:一次具体的审批运行;用户每提交一次就生成一条,详见 [[approve.process-inst.concept]]
-- **节点 Node**:模板里的步骤;常见类型 `starter`(发起)、`approver`(审批人)、`notifier`(抄送)、`end`(结束)
-
-## 三类角色
-- **发起人**:提交审批的人,能撤回未结束的审批、能给已结束的审批补评论
-- **审批人**:在「待办」看到任务,可同意或拒绝
-- **抄送人**:在「抄送我」看到知会,无须操作
-
-## 状态机
-流程实例的 `state`:1 审批中、2 已通过、3 已拒绝、4 已撤回。详情页右上角用 Tag 显示,列表也按这个色区分。
-
-## 与项目/任务/聊天的关系
-- 审批不属于任何项目,是独立工作流
-- 所有通知通过「审批助手」机器人发到 1 对 1 聊天([[approve.notify.concept]])
diff --git a/resources/ai-kb/zh/concept/approve/plugin.md b/resources/ai-kb/zh/concept/approve/plugin.md
deleted file mode 100644
index 1962916e3..000000000
--- a/resources/ai-kb/zh/concept/approve/plugin.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-id: approve.plugin.concept
-title: 审批插件架构
-type: concept
-feature: approve
-scope: end-user
-locale: zh
-aliases:
- - 审批是插件吗
- - approve 插件是什么
- - 审批中心怎么部署的
- - 为什么审批要单独装
- - 审批不在主程序里吗
-related_tools: []
-related_pages: [application]
-prerequisites: []
-negative:
- - approve 不是主程序内置功能,必须先在应用市场安装插件才能用
- - 审批数据存在独立的 `<前缀>approve_*` 数据表里,不在主程序业务表
- - 卸载插件时若勾选「删除数据」会清空全部审批数据,无法恢复
-last_verified: v1.7.90
----
-
-# 审批插件架构
-
-## 定义
-审批(approve)是 DooTask 的独立插件,由 `kuaifan/dooapprove` Docker 镜像提供一套独立的工作流引擎服务。主程序通过反向代理与之通信,所有审批的流程定义、实例、任务、历史都由插件维护,不在主程序业务表里。
-
-## 关键属性
-- **独立容器**:插件作为 docker-compose 服务名 `approve` 启动,端口仅在内网暴露
-- **独立数据库表**:复用主库实例但表前缀为 `approve_`(如 `pre_approve_*`),与主程序业务表逻辑隔离
-- **HTTP 反代**:主程序 nginx 把 `/approve/` 转给插件容器;`/approve/api/` 先经 `/approveAuth` 校验主程序 token 再放行
-- **业务桥接**:主程序 `ApproveController` 通过 `http://approve` 调用插件 REST 接口(路径前缀 `/api/v1/workflow/...`),把结果包成 `Base::retSuccess` 返回前端
-- **通知桥接**:审批状态变化通过 `approval-alert` 机器人在 DooTask 群聊中下发模板消息
-
-## 与主程序的关系
-- 主程序登录 token = 审批插件身份凭据(通过 `verifyToken` 接口校验)
-- 主程序用户/部门/机器人是审批的"人员主数据",审批不复制用户表
-- 用户感知不到容器分离:在 [[app-system.approve.howto]] 描述的「审批中心」页面内完成所有操作
-
-## 不支持
-- 主程序无法直接 SQL 查询审批数据,必须经插件 API
-- 关闭/卸载插件后无法发起新审批:「应用 - 审批」入口在新发起处会报错(`Apps::isInstalledThrow`)
diff --git a/resources/ai-kb/zh/concept/approve/process-inst.md b/resources/ai-kb/zh/concept/approve/process-inst.md
deleted file mode 100644
index f6c567ab9..000000000
--- a/resources/ai-kb/zh/concept/approve/process-inst.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-id: approve.process-inst.concept
-title: 流程实例 ProcInst 是什么
-type: concept
-feature: approve
-scope: end-user
-locale: zh
-aliases:
- - 流程实例
- - 审批单
- - ProcInst
- - 审批运行
- - 一次审批
- - 流程 ID
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 approve 插件
-negative:
- - 流程实例不可改字段,提交后表单只读
- - 一旦后续节点已被任何审批人处理,发起人不能再撤销
- - 已结束的实例只有发起人或管理员能删([[approve.doto.howto]])
-last_verified: v1.7.90
----
-
-# 流程实例 ProcInst 是什么
-
-## 定义
-流程实例(ProcInst)是「一次具体的审批运行」的对象,由发起审批时创建。模板(ProcDef)是图纸,实例是按图纸跑出来的一条具体审批单。每提交一次就生成一个新实例,有唯一数字 ID。后端表 `approve_proc_inst`,主程序通过 `approve/process/findById` 取数据。
-
-## 关键属性
-- **id**:实例唯一 ID
-- **proc_def_name**:模板名(如「请假申请」)
-- **start_user_id / start_user_name**:发起人 ID 和昵称
-- **start_time**:提交时间
-- **state**:1 审批中 / 2 已通过 / 3 已拒绝 / 4 已撤回
-- **is_finished**:是否结束(state ≠ 1 即结束)
-- **task_id**:当前 task ID(处理动作要带)
-- **candidate**:当前候选审批人 userid 逗号串
-- **node_id / node_infos**:当前节点 ID + 所有节点状态数组,用于渲染流程图
-- **var**:表单字段对象(type / start_time / end_time / description / other 等)
-- **global_comments**:全文评论数组([[approve.comment.howto]])
-
-## 生命周期
-1. **创建**:`approve/process/start`,state=1
-2. **流转**:每次 `approve/task/complete` 推进节点
-3. **结束**:state 变 2/3/4
-4. **清理**:仅结束态可调 `approve/process/delById` 物理删除
-
-## 与历史记录的关系
-每次节点流转写一条 [[approve.history.concept]](`approve_proc_inst_history`),实例被删后历史也消失。
diff --git a/resources/ai-kb/zh/concept/approve/template.md b/resources/ai-kb/zh/concept/approve/template.md
deleted file mode 100644
index ecefbb1dc..000000000
--- a/resources/ai-kb/zh/concept/approve/template.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-id: approve.template.concept
-title: 流程模板(流程定义)
-type: concept
-feature: approve
-scope: admin
-locale: zh
-aliases:
- - 流程模板
- - 审批模板
- - 流程定义
- - procdef 是什么
- - 流程名称
- - 审批流程是什么
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 approve 插件
-negative:
- - 流程模板只能由系统管理员创建、编辑、删除;普通成员只能基于已发布模板发起申请
- - 删除模板会同时清空该模板下的所有审批数据,不可恢复
- - 模板间不可复制:每个模板都要在编辑器里独立配置节点和表单
-last_verified: v1.7.90
----
-
-# 流程模板(流程定义)
-
-## 定义
-流程模板(Process Definition,简称 procdef)是审批插件里"审批种类"的元数据,定义了一类审批的全部行为:表单字段、节点顺序、每个节点的审批人/抄送人。普通成员发起的每一单审批(流程实例)都必须基于某个已发布的流程模板。常见模板:请假申请、报销申请、出差申请、用印申请、采购申请。
-
-## 关键属性
-- **唯一性**:以 `name` 区分(如「请假申请」),同名模板不允许重复创建
-- **版本**:每次发布累计 `version`;旧版本会被新版本顶替,进行中的审批仍按当时的版本走完
-- **状态**:草稿(编辑中)/ 已发布(前台可选)
-- **存储位置**:插件独立数据库 `<前缀>approve_*` 表,不在主程序业务表
-- **生效范围**:全租户共享,不按部门隔离;要按部门分模板请改用不同 `name`
-
-## 与流程实例的关系
-- 一个模板(procdef)= 一份蓝图
-- 用户每发起一单 = 创建一个流程实例(proc inst),状态独立流转
-- 删除模板:插件会同时清空所有以该模板发起的实例,**不可恢复**
-
-## 与节点 / 表单的关系
-- 流程模板包含两部分配置:**节点链**(决定走哪几步、由谁审批)见 [[approve.node.concept]]、**表单字段**(决定申请人填什么)见 [[approve.form.concept]]
-- 节点和表单在同一个流程编辑器(iframe 内)一起设计、一起发布
-
-## 创建入口
-管理员在审批中心顶部「流程设置」按钮 → 「+」新建,详细步骤见 [[approve.template.howto]]。
diff --git a/resources/ai-kb/zh/concept/checkin/face.md b/resources/ai-kb/zh/concept/checkin/face.md
deleted file mode 100644
index 2234c887d..000000000
--- a/resources/ai-kb/zh/concept/checkin/face.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-id: checkin.face.concept
-title: 人脸签到原理与依赖
-type: concept
-feature: checkin
-scope: end-user
-locale: zh
-aliases:
- - 人脸识别原理
- - face 插件
- - 人脸签到依赖
- - 刷脸打卡怎么工作的
-related_tools: []
-related_pages: []
-prerequisites:
- - 应用市场已安装 face 插件
-last_verified: v1.7.90
----
-
-# 人脸签到原理与依赖
-
-## 定义
-人脸签到是 DooTask 签到的一种方式,依赖独立的 **face 插件**提供人脸识别后端服务(容器名 `face`,内部端口 7788)。主程序只负责存储人脸图片地址 (`UserCheckinFace.faceimg`) 和触发签到记录写入,**所有特征提取、比对都由 face 插件完成**。
-
-## 工作流程
-1. 成员在签到设置上传人脸图片
-2. 主程序把图片 base64 后 POST 到 `http://face:7788/user`,参数含 `enrollid`(成员 ID)、`name`(昵称)、`backupnum=50`
-3. face 容器把特征存入设备库
-4. 现场人脸识别一体机扫到该成员 → 调主程序 API 写一条 `UserCheckinRecord`
-
-## 关键依赖
-- **face 插件**:人脸识别引擎容器,未安装会抛 `Apps::isInstalledThrow('face')` 异常
-- **人脸识别一体机硬件**:插件 README 注明「需配合指定硬件设备使用」
-- **管理员开关**:「签到方式」勾选「人脸签到」+「允许修改」开启「允许成员上传人脸图片」
-
-## 不支持
-- 主程序自带的浏览器 / WebRTC 摄像头不能直接当人脸打卡器
-- face 插件镜像较大(约 15MB+),首次安装下载较慢
-- 删除成员或卸载插件后,face 容器内的特征不会自动清空,需要管理员手动删除
diff --git a/resources/ai-kb/zh/concept/checkin/plugin.md b/resources/ai-kb/zh/concept/checkin/plugin.md
index 8bc289c5d..4a579263d 100644
--- a/resources/ai-kb/zh/concept/checkin/plugin.md
+++ b/resources/ai-kb/zh/concept/checkin/plugin.md
@@ -32,7 +32,7 @@ last_verified: v1.7.90
- **人脸签到(face)**:**需要安装 face 插件**(应用市场搜「Face check-in」),并配套人脸识别硬件设备
## 关联应用市场
-- `face` 插件:人脸识别后端服务,未装时人脸上传 / 现场刷脸都会失败,详见 [[checkin.face.concept]]
+- `face` 插件:人脸识别后端服务,未装时人脸上传 / 现场刷脸都会失败(人脸签到详细说明随 face 应用知识库提供)
- `approve` 插件:影响提醒筛选——已请假 / 外出审批的成员不会收到缺卡提醒
## 不支持
diff --git a/resources/ai-kb/zh/concept/drawio/overview.md b/resources/ai-kb/zh/concept/drawio/overview.md
deleted file mode 100644
index e446d3f9f..000000000
--- a/resources/ai-kb/zh/concept/drawio/overview.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-id: drawio.concept
-title: 流程图(drawio)是什么
-type: concept
-feature: drawio
-scope: end-user
-locale: zh
-aliases:
- - drawio
- - 流程图
- - 画流程图
- - draw.io
- - DooTask 流程图
- - UML 图
-related_tools: []
-related_pages: [file]
-prerequisites:
- - 应用市场已安装 drawio 插件
-negative:
- - 流程图编辑能力不是主程序内置,未装 drawio 插件无法新建 `drawio` 类型文件
- - 不支持把 drawio 图形直接嵌入到任务详情/讨论消息中(只能作为文件链接发送)
- - 大图(千级节点)渲染会变慢,建议拆图
-last_verified: v1.7.90
----
-
-# 流程图(drawio)是什么
-
-## 定义
-流程图是 DooTask 文件系统中的一种文件类型(`type=drawio`),用于绘制流程图、UML、ER 图、网络拓扑、思维导图等通用图形。它由独立的 drawio 插件提供编辑器(基于开源 jgraph/drawio),主程序通过 iframe 嵌入 `drawio/webapp/index.html`,文件内容存到 DooTask 自己的文件库里。
-
-## 关键属性
-- **文件类型**:`drawio`(与 `mind` 思维导图、`document` 文本、`word/excel/ppt` 平行)
-- **存储位置**:DooTask 文件系统(个人文件 / 项目文件 / 共享)
-- **编辑器**:嵌入式 drawio 完整编辑器,含图形库、画布、属性面板
-- **导出**:支持导出 PNG / PDF(依赖插件内置的 export-server,缺它则导出失效)
-- **历史版本**:随 DooTask 文件历史一同保存
-
-## 支持的图形类型
-- 流程图、泳道图
-- UML 类图、时序图、用例图
-- 网络拓扑、机柜图
-- 实体关系(ER)图
-- 思维导图(更建议用专用的 minder 插件)
-- 各类业务建模、原型草图
-
-## 与其他文件类型的关系
-- **vs minder 思维导图**:思维导图专注放射结构,节点编辑更轻;drawio 是通用图形,自由度高
-- **vs OnlyOffice Word/Excel**:OnlyOffice 支持多人实时;drawio 单人编辑
-- **vs DooTask 内置 document**:document 是富文本/Markdown,没有矢量图形能力
-
-## 相关
-- 插件元信息:[[drawio.plugin.concept]]
-- 创建流程图:[[drawio.create.howto]]
-- 入口在哪:[[drawio.entry.menu-map]]
-- 内置模板:[[drawio.template.concept]]
diff --git a/resources/ai-kb/zh/concept/drawio/plugin.md b/resources/ai-kb/zh/concept/drawio/plugin.md
deleted file mode 100644
index cd3b1253d..000000000
--- a/resources/ai-kb/zh/concept/drawio/plugin.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-id: drawio.plugin.concept
-title: drawio 插件元信息
-type: concept
-feature: drawio
-scope: admin
-locale: zh
-aliases:
- - drawio 插件
- - 流程图插件
- - 安装 drawio
- - drawio 插件版本
- - draw.io 集成
-related_tools: []
-related_pages: [application]
-prerequisites: []
-negative:
- - 主程序不内置流程图编辑器,未装插件时新建文件菜单不会显示「图表」
- - 插件体积大约 700MB,下载较慢,需要稳定网络
- - 缺少同包的 export-server 时,PNG/PDF 导出会失败
-last_verified: v1.7.90
----
-
-# drawio 插件元信息
-
-## 定义
-流程图能力由 `drawio` 插件提供(应用市场 app id 为 `drawio`,当前主版本 30.0.4,基于开源 jgraph/drawio)。插件包内除了 drawio 前端,还包含一个 export-server(镜像 `kuaifan/export-server`)负责把图形导出为 PNG/PDF。主程序仅以 iframe 加载 `drawio/webapp/index.html`,编辑器交互与文件保存全部跑在前端 + 主程序文件 API。
-
-## 关键属性
-- **作者**:社区维护(Community),上游 https://www.drawio.com/
-- **分类**:微应用(不在管理员应用区)
-- **包大小**:约 700MB(含 drawio 资源 + export-server 镜像)
-- **运行形态**:静态资源 + 一个导出服务容器
-- **关键依赖**:`webapp/index.html` 的 `EXPORT_URL` 指向插件内的 `/drawio/export/`,删 export-server 会导致导出 PNG/PDF 失效
-- **数据存储**:图形内容存到主程序文件表(`type=drawio`),不在插件容器单独存
-
-## 安装与启用
-1. 在应用市场(管理员入口)搜索「Drawio」或「流程图」
-2. 点击安装,等待资源下载(约 700MB,请通过「安装日志」查看进度)
-3. 安装完成后插件自动启用,文件新建菜单立即出现「图表」选项
-
-## 卸载影响
-- 卸载后菜单消失,原有 `drawio` 文件保留在文件库中但无法继续编辑/预览
-- 重新安装后旧文件继续可用
-
-## 已知限制
-- 网络不畅时首次加载图形库较慢
-- 离线环境需提前推到内网镜像源
-
-## 相关
-- 是什么:[[drawio.concept]]
-- 入口在哪:[[drawio.entry.menu-map]]
-- 内置模板:[[drawio.template.concept]]
diff --git a/resources/ai-kb/zh/concept/drawio/template.md b/resources/ai-kb/zh/concept/drawio/template.md
deleted file mode 100644
index 6455099bc..000000000
--- a/resources/ai-kb/zh/concept/drawio/template.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-id: drawio.template.concept
-title: drawio 内置图形与模板
-type: concept
-feature: drawio
-scope: end-user
-locale: zh
-aliases:
- - drawio 模板
- - drawio 图形库
- - drawio 能画什么
- - 流程图都有哪些类型
- - drawio 支持的图形
-related_tools: []
-related_pages: [file]
-prerequisites:
- - 应用市场已安装 drawio 插件
-negative:
- - DooTask 不提供「业务模板市场」,新建图永远是空白画布
- - 不能直接将 drawio 图形粘贴到 DooTask 任务详情或讨论消息
- - 模板/形状无法跨公司账号共享(每个部署独立)
-last_verified: v1.7.90
----
-
-# drawio 内置图形与模板
-
-## 定义
-drawio 编辑器自带丰富的图形库(Shape Libraries)和绘图分类,但 DooTask 集成时**不预置业务模板**。每次新建图都从空白画布开始,需要绘图者从图形库手动拖出元素或在 drawio 内的「File → New From Template」选择官方模板。
-
-## 主要图形分类
-drawio 左侧图形库可勾选启用以下分类(部分):
-- 通用形状(General)
-- 流程图(Flowchart)
-- 泳道图(Swimlanes)
-- UML(类图、时序图、用例图、状态图、活动图)
-- 实体关系(ER)
-- 网络与基础设施(Cisco / AWS / Azure / GCP / Kubernetes 图标)
-- 软件架构(C4 模型)
-- 业务流程(BPMN)
-- 思维导图(mockup)
-- 电气、布线、机柜
-- 安卓/iOS 线框图
-
-## 选用方式
-- 编辑器左下角「More Shapes」勾选要启用的图形库
-- 直接从左侧图形库拖元素到画布
-- 通过菜单 `File → New From Template` 选择官方预设模板(流程示例、组织结构等)
-
-## 与思维导图(minder)对比
-- drawio 也能画思维导图,但灵活但偏「画」
-- 专注思维导图推荐用专门的 [[minder.concept]] 插件,节点操作更顺手
-
-## 不支持
-- DooTask 主程序不预置业务模板(如审批流程模板等)
-- 模板不能跨部署共享,只能依赖 drawio 上游内置的模板
-- 不能上传自定义图形库到所有用户
-
-## 相关
-- 是什么:[[drawio.concept]]
-- 创建:[[drawio.create.howto]]
diff --git a/resources/ai-kb/zh/concept/fileview/overview.md b/resources/ai-kb/zh/concept/fileview/overview.md
deleted file mode 100644
index 3b44d9a8a..000000000
--- a/resources/ai-kb/zh/concept/fileview/overview.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-id: fileview.concept
-title: 文件预览(fileview)是什么
-type: concept
-feature: fileview
-scope: end-user
-locale: zh
-aliases:
- - fileview
- - 文件预览
- - 在线预览
- - 预览 PDF
- - 预览 Word
- - kkfileview
- - 在线看文件
-related_tools: []
-related_pages: [file]
-prerequisites:
- - 应用市场已安装 fileview 插件
-negative:
- - fileview 只提供「只读预览」,不能在线编辑(编辑要装 OnlyOffice,见 [[office.concept]])
- - 主程序本身能直接预览图片(jpg/png/gif 等)和文本/代码,这些不需要 fileview
- - 视频/音频在线播放走主程序自带能力,也不属于 fileview 范畴
-last_verified: v1.7.90
----
-
-# 文件预览(fileview)是什么
-
-## 定义
-fileview 是 DooTask 的**通用文件在线预览**能力,基于开源 kkfileview 引擎,由独立插件提供。所有不能被主程序直接渲染的文件类型(PDF、Word 系、Excel 系、PPT 系、Visio、CAD 等)在点击文件名时会跳转到 fileview 的预览页(路径 `fileview/onlinePreview?url=`),返回浏览器内可滚动、可缩放、可翻页的页面。
-
-## 关键属性
-- **只读**:仅查看,不可编辑(编辑能力需 OnlyOffice 插件)
-- **入口**:点击文件即可,主程序对超出本地预览范围的文件自动 301 到 fileview 路径
-- **格式覆盖**:远超主程序自带能力,包括 Office 全家桶、PDF、各类压缩包、3D 模型、CAD 等(详见 [[fileview.supported.concept]])
-- **加载机制**:fileview 后端拉取文件 → 转码或解析 → 推送渲染结果到浏览器
-- **依赖**:依赖独立 fileview 容器持续运行
-
-## 与其他预览能力的关系
-- **图片**(jpg/jpeg/png/gif/bmp 等):主程序内置直接渲染,不走 fileview
-- **代码/文本**(2MB 内、扩展名属于 `codeExt` 列表):主程序内嵌 AceEditor 渲染,不走 fileview
-- **Word/Excel/PPT**:装了 OnlyOffice 时走 OnlyOffice 编辑器(可编辑);没装但装了 fileview 则走 fileview 只读预览
-- **思维导图(mind)/ 流程图(drawio)**:DooTask 自己的图形文件,由 minder/drawio 插件渲染,不走 fileview
-
-## 相关
-- 插件元信息:[[fileview.plugin.concept]]
-- 支持的文件类型:[[fileview.supported.concept]]
-- 在线编辑 Office 文档:[[office.concept]]
diff --git a/resources/ai-kb/zh/concept/fileview/plugin.md b/resources/ai-kb/zh/concept/fileview/plugin.md
deleted file mode 100644
index d9bb4b068..000000000
--- a/resources/ai-kb/zh/concept/fileview/plugin.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-id: fileview.plugin.concept
-title: fileview 插件元信息
-type: concept
-feature: fileview
-scope: admin
-locale: zh
-aliases:
- - fileview 插件
- - kkfileview 插件
- - 安装文件预览
- - 文件预览插件版本
- - 预览插件多大
-related_tools: []
-related_pages: [application]
-prerequisites: []
-negative:
- - 未安装 fileview 插件时,PDF/Office 等文件点击后会报错或下载,无法在线预览
- - 主程序不内置 kkfileview,本插件是唯一来源
- - 不能离线安装到不联网的环境(需访问应用市场镜像源)
-last_verified: v1.7.90
----
-
-# fileview 插件元信息
-
-## 定义
-文件在线预览由 `fileview` 插件提供(应用市场 app id 为 `fileview`,当前主版本 4.4.0,基于开源 kkfileview 引擎)。主程序在用户点击文件时判断扩展名,若属于 fileview 范畴则 301 跳转到 `fileview/onlinePreview?url=`,由 fileview 容器渲染。
-
-## 关键属性
-- **作者**:社区维护(Community),上游 https://kkview.cn/
-- **分类**:微应用(不在管理员应用区,但行为更像「基础设施」——不直接出现在「应用中心」用户菜单,由文件页自动触发)
-- **包大小**:约 630MB(含 LibreOffice + 各类转码工具)
-- **运行形态**:独立 Docker 容器,对接主程序 nginx 上的 `/fileview/` 反代
-- **渲染方式**:服务器侧用 LibreOffice 把 docx/pptx 转 PDF 再推到浏览器;纯 PDF 直接 PDF.js 渲染;图片格式化预览
-- **跨设备**:桌面端、移动端均能预览
-
-## 安装与启用
-1. 在应用市场(管理员入口)搜索「FileView」或「文件预览」
-2. 点击安装,等待镜像下载(约 630MB,按「安装日志」判断进度)
-3. 安装完成后插件自动启用,所有未被主程序原生预览覆盖的文件点击后会自动用 fileview 渲染
-
-## 卸载影响
-- 卸载后点击 PDF/Office 等文件会失败(路径仍指向 fileview 但容器不存在)
-- 重装后自动恢复
-
-## 与 OnlyOffice 共存
-- 同时装了 office 和 fileview:Word/Excel/PPT 优先走 OnlyOffice 编辑器(可编辑)
-- 只装 fileview:Word/Excel/PPT 只能用 fileview 只读预览
-- 只装 office:fileview 才能预览的格式(如 PDF、Visio、CAD 等)无法在线预览
-
-## 相关
-- 是什么:[[fileview.concept]]
-- 支持的文件类型:[[fileview.supported.concept]]
diff --git a/resources/ai-kb/zh/concept/fileview/supported.md b/resources/ai-kb/zh/concept/fileview/supported.md
deleted file mode 100644
index 4a5c50dbc..000000000
--- a/resources/ai-kb/zh/concept/fileview/supported.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-id: fileview.supported.concept
-title: fileview 支持的文件类型
-type: concept
-feature: fileview
-scope: end-user
-locale: zh
-aliases:
- - fileview 支持什么格式
- - 哪些文件能在线预览
- - DooTask 预览的格式
- - 能不能预览 PDF
- - 能不能预览 CAD
- - 预览支持的扩展名
-related_tools: []
-related_pages: [file]
-prerequisites:
- - 应用市场已安装 fileview 插件
-negative:
- - 加密/密码保护的 Office 文档预览失败(fileview 解不开)
- - 超大文件(>100MB)预览很慢甚至超时
- - 不能在预览页里编辑/批注
-last_verified: v1.7.90
----
-
-# fileview 支持的文件类型
-
-## 定义
-fileview 插件基于开源 kkfileview 引擎,可在线预览 30+ 种文件格式。主程序对扩展名做粗分流:图片、代码文本、视频音频走主程序自带能力;其余几乎全部交给 fileview。
-
-## 主要支持的格式分类
-- **PDF**:pdf
-- **Word 系**:doc, docx, dot, dotx, odt, ott, rtf
-- **Excel 系**:xls, xlsx, xlsm, xlt, xltx, ods, ots, csv, tsv
-- **PowerPoint 系**:ppt, pptx, pps, ppsx, pot, potx, odp, otp
-- **WPS 系**:wps, et, dps(与 Office 同一套转码路径)
-- **OpenDocument 全系**:odt/ods/odp/ott/ots/otp 等
-- **流程图 / 矢量**:vsd, vsdx(Visio),drawio 文件由 drawio 插件直接打开不走 fileview
-- **CAD**:dwg
-- **3D**:obj, stl
-- **电子书**:epub, mobi
-- **压缩包**:zip, rar, 7z, tar, gz(展开目录树预览)
-- **邮件/日历**:eml, ics
-- **代码(大文件兜底)**:当代码文本 > 2MB 主程序不再内嵌渲染,可由 fileview 兜底
-
-## 主程序不走 fileview 的格式
-- 图片:jpg, jpeg, webp, png, gif, bmp(主程序内置渲染)
-- 视频/音频:mp3, wav, mp4, flv 等(内置播放器)
-- 代码/文本 ≤ 2MB(内嵌 AceEditor)
-- 思维导图(mind)→ minder 插件
-- 流程图(drawio)→ drawio 插件
-- Word/Excel/PPT 若装了 OnlyOffice → 走 OnlyOffice 编辑器(可编辑)
-
-## 不支持
-- 加密 / 密码保护的 Office 文档无法预览
-- 不保证体积过大(数百 MB 起)的文件能正常预览(可能超时或加载缓慢)
-- 不能在预览页里编辑(fileview 只读)
-
-## 相关
-- 插件元信息:[[fileview.plugin.concept]]
-- 是什么:[[fileview.concept]]
diff --git a/resources/ai-kb/zh/concept/kpi/overview.md b/resources/ai-kb/zh/concept/kpi/overview.md
deleted file mode 100644
index cec43b913..000000000
--- a/resources/ai-kb/zh/concept/kpi/overview.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-id: kpi.concept
-title: KPI 绩效考核是什么
-type: concept
-feature: kpi
-scope: end-user
-locale: zh
-aliases:
- - KPI
- - 绩效
- - 绩效考核
- - 绩效管理
- - 员工评估
- - Key Performance Indicator
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 kpi 插件
-negative:
- - KPI 不是 OKR,与 OKR 在 DooTask 中是两个独立插件
- - KPI 不是主程序内置功能,未装插件时不可用
- - KPI 用户角色与 DooTask 系统角色不完全等价(详见正文)
-last_verified: v1.7.90
----
-
-# KPI 绩效考核是什么
-
-## 定义
-KPI(Key Performance Indicator,关键绩效指标)在 DooTask 中由独立插件 `community_kuaifan_kpi` 提供,是面向企业和组织的现代化绩效考核管理系统。它支持创建考核任务、按模板录入指标评分、邀请同事评分、HR 审核与异议处理,让多角色协作完成员工绩效评估。
-
-## 在 DooTask 中的形态
-- 通过应用市场安装的社区插件(基于 Next.js + Go)
-- 与 DooTask 用户体系打通:用户信息、部门信息自动同步
-- 与 DooTask 主程序作为应用插件集成,菜单挂在「应用」下
-
-## 用户角色
-KPI 内部有自己独立的三级角色(与 DooTask 系统角色不完全等价):
-
-- **employee(普通员工)**:查看 / 填写自己的考核、提交异议、参与邀请评分
-- **manager(部门主管)**:员工的全部能力 + 评估下属、导出数据
-- **hr(HR 管理员)**:完整系统权限,管理部门 / 员工 / 模板 / 规则 / 异议
-
-## 关键能力
-- **考核管理**:创建、填写、管理绩效考核
-- **邀请评分**:多角度 360 度评价(详见 [[kpi.create.howto]])
-- **异议处理**:员工可申诉,HR 审核调整得分
-- **统计分析**:数据图表与报表,支持 Excel 导出
-- **KPI 模板**:HR 维护通用模板供考核复用
-
-## KPI 与 OKR 的区别
-- **KPI**:直接考核指标,与绩效 / 薪酬绑定,偏重「不能丢分」
-- **OKR**:目标管理工具,鼓励挑战性目标,与考核解耦
-
-## 不支持
-- 不直接对接 DooTask 任务完成情况自动算绩效
-- 不支持脱离 DooTask 单独登录使用
-
-## 相关
-- 插件元信息:[[kpi.plugin.concept]]
-- 入口在哪:[[kpi.entry.menu-map]]
-- 创建考核:[[kpi.create.howto]]
-- 评分机制:[[kpi.scoring.concept]]
diff --git a/resources/ai-kb/zh/concept/kpi/plugin.md b/resources/ai-kb/zh/concept/kpi/plugin.md
deleted file mode 100644
index bdf7bd0fe..000000000
--- a/resources/ai-kb/zh/concept/kpi/plugin.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-id: kpi.plugin.concept
-title: KPI 插件元信息
-type: concept
-feature: kpi
-scope: end-user
-locale: zh
-aliases:
- - KPI 插件
- - kpi 怎么装
- - 绩效插件
- - 绩效考核插件
- - community_kuaifan_kpi
-related_tools: []
-related_pages: [application]
-prerequisites: []
-negative:
- - KPI 不是主程序内置功能,未装插件时入口不会出现
- - 插件升级不通过 git pull,需要在应用市场更新
- - 主程序版本必须高于 1.4.67,否则插件无法安装
-last_verified: v1.7.90
----
-
-# KPI 插件元信息
-
-## 定义
-KPI 绩效考核在 DooTask 中由社区插件提供,应用市场 app id 为 `community_kuaifan_kpi`(当前版本 0.1.9),feature 短名 `kpi`。主程序不内置任何 KPI 代码,所有绩效逻辑都跑在独立 Docker 容器中,作为应用插件挂载到 DooTask 界面。
-
-## 关键属性
-- **作者**:DooTask 官方
-- **要求**:主程序版本 > 1.4.67(依赖新 API 能力)
-- **运行形态**:单个 Docker 容器(镜像 `dootask/kpi:`)
-- **数据存储**:独立 SQLite 数据库,本地卷 `kpi_data` 挂载到 `/web/db`,不入主库
-- **菜单注入**:安装后在「应用中心」注册「绩效考核」入口
-- **重启策略**:`unless-stopped`,主机重启容器自动恢复
-
-## 用户生命周期钩子
-插件订阅了 DooTask 的用户事件,自动维护 KPI 内部用户:
-
-- `user_onboard`:DooTask 创建用户时,自动在 KPI 内建号
- - 部门不存在则自动创建该部门
- - DooTask 管理员自动设为 HR 角色
- - 部门负责人自动设为 manager 角色
- - 其余设为 employee 角色
-- `user_offboard`:DooTask 删除用户时,KPI 同步清理
-
-## 信息同步规则
-用户登录 KPI 时:
-
-- 自动更新姓名、职位
-- **角色保持不变**(不会因为 DooTask 角色变化而重新分配 KPI 角色)
-
-## 不支持
-- 不能离线安装到不联网的环境(需访问应用市场镜像源)
-- 不能在主程序 < 1.4.67 的环境上安装
-
-## 相关
-- 是什么:[[kpi.concept]]
-- 入口在哪:[[kpi.entry.menu-map]]
-- 评分机制:[[kpi.scoring.concept]]
diff --git a/resources/ai-kb/zh/concept/kpi/scoring.md b/resources/ai-kb/zh/concept/kpi/scoring.md
deleted file mode 100644
index 085db839c..000000000
--- a/resources/ai-kb/zh/concept/kpi/scoring.md
+++ /dev/null
@@ -1,73 +0,0 @@
----
-id: kpi.scoring.concept
-title: KPI 评分机制与权重
-type: concept
-feature: kpi
-scope: end-user
-locale: zh
-aliases:
- - KPI 怎么算分
- - 绩效权重
- - 自评权重
- - 上级评分
- - 邀请评分权重
- - 绩效规则
- - 最终得分怎么来的
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 kpi 插件
-negative:
- - 仅 HR 管理员可以配置绩效规则
- - 权重百分比合计必须为 100%,否则保存不通过
- - 关闭绩效规则开关后,系统回退到默认评分方式
- - 配置修改后立即生效,仅影响后续新发起的考核
-last_verified: v1.7.90
----
-
-# KPI 评分机制与权重
-
-## 定义
-KPI 插件的「绩效规则」用于配置不同评分来源在最终得分中的权重比例。系统会根据规则把自评、上级评分、邀请评分按比例加权,自动算出员工的最终绩效得分。
-
-## 评分来源
-一次考核可能涉及最多三种评分来源:
-
-- **自评**:员工对照模板给自己打分
-- **上级评分**:直属主管打分
-- **邀请评分**:HR 邀请的第三方人员打分(可选环节,仅在 HR 发起邀请后生效)
-
-## 配置场景
-绩效规则按是否有邀请评分分为两套权重配置:
-
-- **无邀请评分场景**
- - 自评权重 + 上级评分权重 = 100%
-- **有邀请评分场景**
- - 自评权重 + 邀请评分权重 + 上级评分权重 = 100%
-
-## 配置流程
-1. HR 进入 KPI 的「绩效规则」配置页
-2. 打开绩效规则开关,规则生效
-3. 按公司制度分别设置两种场景下各来源的权重百分比
-4. 保存后立即生效,影响后续新发起的考核
-5. 若关闭开关,系统使用默认评分方式
-
-## HR 审核环节
-- 主管评估、邀请评分完成后,HR 在「审核」环节查看汇总结果
-- 系统按绩效规则自动算出最终得分,HR 可手动调整
-- 员工在「待确认」状态查看最终分;有异议可申诉,HR 审核后再调分
-
-## 异议处理对得分的影响
-- 员工提交异议后考核状态变为「异议处理中」
-- HR 可填写处理原因并调整最终得分
-- 处理后员工需重新确认;如仍有异议可再次提交(每轮异议都需 HR 重新处理)
-
-## 不支持
-- 不支持非 HR 角色配置绩效规则
-- 不支持单条考核临时改权重(只能改全局规则)
-- 不支持权重为负值或合计不等于 100%
-
-## 相关
-- KPI 是什么:[[kpi.concept]]
-- 创建考核:[[kpi.create.howto]]
-- 入口在哪:[[kpi.entry.menu-map]]
diff --git a/resources/ai-kb/zh/concept/memos/overview.md b/resources/ai-kb/zh/concept/memos/overview.md
deleted file mode 100644
index aa861cdad..000000000
--- a/resources/ai-kb/zh/concept/memos/overview.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-id: memos.concept
-title: Memos 是什么
-type: concept
-feature: memos
-scope: end-user
-locale: zh
-aliases:
- - Memos
- - 速记
- - 笔记应用
- - 个人笔记
- - 想法记录
- - 碎片笔记
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 memos 插件
-negative:
- - Memos 不是主程序内置功能,未装插件时不可用
- - Memos 默认走 SQLite 本地存储,不接 DooTask 主库
- - 不支持游客 / 未登录访问
-last_verified: v1.7.90
----
-
-# Memos 是什么
-
-## 定义
-Memos(笔记 / 速记)是一款隐私优先、轻量级的开源笔记服务(开源项目 [usememos.com](https://www.usememos.com)),在 DooTask 中以独立插件形式集成,主要用来快速记录想法、待办、链接、代码片段等碎片化内容。每条记录就是一条「memo」,时间倒序排列在时间线上。
-
-## 在 DooTask 中的形态
-- 通过应用市场安装的社区插件,与主程序同源、共用 TLS
-- 走主程序 nginx 子路径 `/apps/memos/` 反向代理,用户无需额外登录
-- 数据自托管,使用 SQLite,存放于应用目录 `data/memos`
-
-## 关键特性
-- **轻量速记**:以时间线方式记录碎片想法,类似 Twitter/微博风格
-- **隐私优先**:数据完全自托管,不上传第三方
-- **单点登录**:DooTask 登录态自动同步,免输密码
-- **标签 / 分类**:支持 `#标签` 语法分类整理(详见 [[memos.tag.concept]])
-
-## 适用场景
-- 工作日志、灵感速记
-- 临时收藏链接 / 代码片段
-- 个人学习笔记 / 读书摘录
-- 团队不强协作场景下的轻量笔记
-
-## 不支持
-- 不替代正式文档(如需协作文档请用项目内文档)
-- Memos 不直接与任务 / 项目数据互通
-
-## 相关
-- 插件元信息:[[memos.plugin.concept]]
-- 入口在哪:[[memos.entry.menu-map]]
-- 怎么写一条:[[memos.create.howto]]
diff --git a/resources/ai-kb/zh/concept/memos/plugin.md b/resources/ai-kb/zh/concept/memos/plugin.md
deleted file mode 100644
index 6b9ba9ad7..000000000
--- a/resources/ai-kb/zh/concept/memos/plugin.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-id: memos.plugin.concept
-title: Memos 插件元信息
-type: concept
-feature: memos
-scope: end-user
-locale: zh
-aliases:
- - Memos 插件
- - memos 怎么装
- - memos 应用市场
- - 笔记插件
- - community_kuaifan_memos
-related_tools: []
-related_pages: [application]
-prerequisites: []
-negative:
- - Memos 不是主程序内置功能,未装插件时入口不会出现
- - 插件升级不通过 git pull,需要在应用市场更新
- - 插件不能离线安装到不联网的环境
-last_verified: v1.7.90
----
-
-# Memos 插件元信息
-
-## 定义
-Memos 在 DooTask 中由社区插件提供,应用市场 app id 为 `community_kuaifan_memos`(当前版本 0.29.0),feature 短名 `memos`。主程序不内置任何 Memos 代码,所有笔记逻辑都跑在独立容器中,通过 nginx 反向代理 `/apps/memos/` 子路径挂载到 DooTask 界面。
-
-## 关键属性
-- **作者**:DooTask 官方(基于开源项目 usememos/memos)
-- **运行形态**:两个 Docker 容器
- - `memos-server`:自构建 Memos 镜像(`dootask/memos-server:0.29.0`),前端打补丁支持子路径
- - `memos-proxy`:鉴权代理(`dootask/memos:`),校验 DooTask 用户令牌、自动建号 / 免密登录
-- **数据存储**:SQLite,本地卷 `memos-data` 挂载到 `/var/opt/memos`,不入主库
-- **菜单注入**:安装后在「应用中心」注册「Memos 笔记」入口
-- **会话有效期**:访问令牌过期后通过 `memos_refresh` cookie 自动续期,最长 30 天
-
-## 安装配置项
-- **管理员**:在安装界面选择若干 DooTask 用户作为 Memos 管理员,其余用户以普通成员身份登录
-- **内部密钥**:用于派生账号密码与签名会话,安装后请勿修改
-
-## 单点登录机制
-- 用户打开插件时,代理自动在 Memos 内建号、用确定性密码登录
-- 屏蔽 Memos 原生的直接登录与自助注册接口(防止绕过 DooTask 鉴权)
-
-## 不支持
-- 不能用 Memos 原生账号密码登录(仅支持 DooTask SSO)
-- 不能选择不安装 `memos-proxy`(鉴权必经路径)
-
-## 相关
-- 是什么:[[memos.concept]]
-- 入口在哪:[[memos.entry.menu-map]]
diff --git a/resources/ai-kb/zh/concept/memos/tag.md b/resources/ai-kb/zh/concept/memos/tag.md
deleted file mode 100644
index cebb4678e..000000000
--- a/resources/ai-kb/zh/concept/memos/tag.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-id: memos.tag.concept
-title: Memos 标签与分类
-type: concept
-feature: memos
-scope: end-user
-locale: zh
-aliases:
- - Memos 标签
- - memos 怎么分类
- - 笔记标签
- - 笔记分类
- - 标签筛选
- - "#标签"
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 memos 插件
-negative:
- - 标签是每个用户私有的(不与其他 DooTask 用户共用)
- - 标签不与 DooTask 主程序的任务标签互通
-last_verified: v1.7.90
----
-
-# Memos 标签与分类
-
-## 定义
-Memos 没有独立的「分类」字段,靠 `#标签` 语法在 memo 正文中内联标记。任何写在 `#xxx` 形式的词都会被识别为标签,自动聚合到侧边栏的标签列表,便于后续筛选检索。
-
-## 关键属性
-- **写法**:在内容里直接写 `#项目A` `#读书笔记`,可一条 memo 多个标签
-- **嵌套**:支持斜杠分层,例如 `#工作/会议纪要`,侧栏会折叠展示
-- **私有**:每个 Memos 账号的标签彼此隔离(每个 DooTask 用户在 Memos 内是独立账号)
-- **聚合方式**:Memos 自动扫描所有 memo 正文,无需手动维护「标签库」
-
-## 使用方式
-- **添加**:写 memo 时在内容里直接打 `#标签名`,保存即生效
-- **筛选**:点击侧栏中对应标签,时间线只显示带该标签的 memo
-- **删除**:把所有 memo 里这个 `#标签` 的字符删掉,标签自动消失(无独立删除按钮)
-
-## 与可见性的关系
-- 标签本身只是文本标记,不影响 memo 的可见性(私有 / 工作区 / 公开)
-- 想限定某类笔记只自己可见,应改对应 memo 的可见性,而不是靠标签
-
-## 适用场景
-- 按项目 / 主题 / 周期分组浏览
-- 给读书摘录 / 灵感速记打主题
-- 搭配搜索定位历史笔记
-
-## 不支持
-- 不能改某个标签的名字(要重命名只能逐条编辑替换原文)
-- 不能给标签设颜色或图标
-- 不能从 DooTask 主程序任务的标签自动同步过来
-
-## 相关
-- Memos 是什么:[[memos.concept]]
-- 写一条 memo:[[memos.create.howto]]
diff --git a/resources/ai-kb/zh/concept/micro-app/list.md b/resources/ai-kb/zh/concept/micro-app/list.md
index 723da3f7c..a39b99640 100644
--- a/resources/ai-kb/zh/concept/micro-app/list.md
+++ b/resources/ai-kb/zh/concept/micro-app/list.md
@@ -27,14 +27,14 @@ last_verified: v1.7.90
DooTask 应用市场提供一组官方与社区维护的微应用。下面列的是较常见的几类,实际能在应用中心看到的微应用取决于本实例已安装了哪些,参考服务器 `docker/appstore/apps/` 目录即可知。
## 常见微应用
-- **OKR**(id `okr`)— 目标 + 关键结果管理,参考 [[okr.concept]]
-- **审批中心**(id `approve`)— 流程审批,参考 [[approve.concept]]
+- **OKR**(id `okr`)— 目标 + 关键结果管理
+- **审批中心**(id `approve`)— 流程审批
- **思维导图 Minder**(id `minder`)— 文件类型 `.km`
- **流程图 Drawio**(id `drawio`)— 文件类型 `.drawio`
- **OnlyOffice**(id `office`)— Word / Excel / PPT 在线编辑
- **文件预览 fileview**(id `fileview`)— PDF / 图片 / 文档预览渲染
- **人脸识别签到**(id `face`)— 配合签到使用
-- **AI 助手**(id `ai`)— 见 [[ai-assistant.entry.howto]]
+- **AI 助手**(id `ai`)— 浮窗式智能助手
- **Memos 笔记**(社区 `community_kuaifan_memos`)— 个人记事本
- **KPI**(社区 `community_kuaifan_kpi`)— 绩效考核
- **Manticore 搜索**(id `manticore`)— 全文搜索引擎
diff --git a/resources/ai-kb/zh/concept/minder/collaboration.md b/resources/ai-kb/zh/concept/minder/collaboration.md
deleted file mode 100644
index c49016dd4..000000000
--- a/resources/ai-kb/zh/concept/minder/collaboration.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-id: minder.collaboration.concept
-title: 思维导图是否支持多人协作编辑
-type: concept
-feature: minder
-scope: end-user
-locale: zh
-aliases:
- - 思维导图协作
- - 思维导图多人编辑
- - 脑图共享编辑
- - 思维导图能不能一起改
- - minder 实时同步
-related_tools: []
-related_pages: [file]
-prerequisites:
- - 应用市场已安装 minder 插件
-negative:
- - 同一张 mind 文件同一时间不支持多人实时同步编辑,与 OnlyOffice 不同
- - 多人同时打开并保存可能导致后保存方覆盖前保存方
- - 不支持节点级别的细粒度评论或讨论
-last_verified: v1.7.90
----
-
-# 思维导图是否支持多人协作编辑
-
-## 定义
-DooTask 思维导图(minder 插件)以**单人编辑 + 多人查看**模式运作。文件内容存到 DooTask 文件系统,所有有权限的成员都能打开看到当前最新版本,但同一时间多人编辑保存会出现「后写覆盖前写」。
-
-## 关键属性
-- **多人可见**:所有对文件有读权限的成员都能打开预览
-- **保存机制**:编辑器内修改后由前端发起保存请求,整张图作为一个 JSON 文件覆盖式保存
-- **没有实时同步**:与 OnlyOffice([[office.collaboration.concept]])不同,思维导图不通过 WebSocket 推送其他人的实时改动
-- **冲突表现**:A、B 同时打开编辑,A 先保存,B 后保存——最终内容只剩 B 的版本,A 的改动丢失
-- **历史版本**:可借助 DooTask 文件版本历史回滚到之前的快照
-
-## 推荐协作模式
-- 同一时间由一人改,其他人通过群聊/讨论沟通后再轮换编辑
-- 大型导图按子分支拆成多张文件,分人维护
-- 改完后通过文件「发送」/「链接」/「共享」分享给团队
-- 误覆盖可在文件详情 →「历史版本」中恢复
-
-## 与其他场景对比
-- **drawio 流程图**:同样是单人编辑,多人同时编辑也会出现覆盖
-- **OnlyOffice Word/Excel/PPT**:自带多人实时协作,多端同时编辑会合并
-- **DooTask 在线文档(document)**:基于富文本编辑器,亦不支持多人实时
-
-## 相关
-- 是什么:[[minder.concept]]
-- OnlyOffice 协作能力对比:[[office.collaboration.concept]]
diff --git a/resources/ai-kb/zh/concept/minder/overview.md b/resources/ai-kb/zh/concept/minder/overview.md
deleted file mode 100644
index 261942c8b..000000000
--- a/resources/ai-kb/zh/concept/minder/overview.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-id: minder.concept
-title: 思维导图(minder)是什么
-type: concept
-feature: minder
-scope: end-user
-locale: zh
-aliases:
- - 思维导图
- - 脑图
- - mind map
- - minder 是什么
- - DooTask 思维导图
-related_tools: []
-related_pages: [file]
-prerequisites:
- - 应用市场已安装 minder 插件
-negative:
- - 思维导图功能不是主程序内置,未安装 minder 插件无法新建 `mind` 类型文件
- - 不能在思维导图节点上直接附加 DooTask 任务/评论(节点只是图形元素)
- - 节点数量过多(数千节点)可能影响渲染性能
-last_verified: v1.7.90
----
-
-# 思维导图(minder)是什么
-
-## 定义
-思维导图是 DooTask 文件系统中的一种文件类型(`type=mind`),用于以放射状结构表达想法、计划、知识结构。它由独立的 minder 插件提供编辑器,主程序通过 iframe 嵌入插件页面,文件内容存到 DooTask 自己的文件库里。
-
-## 关键属性
-- **文件类型**:`mind`(区别于 `document` 文本、`drawio` 图表、`word/excel/ppt`)
-- **存储位置**:与其他文件一样存在 DooTask 文件系统(个人文件 / 项目文件 / 共享)
-- **编辑器**:嵌入的 KityMinder 风格编辑器,支持多种结构(默认、组织结构、文件树、右展开、鱼骨图、天盘)和多套主题
-- **操作支持**:拖拽、缩放、节点折叠/展开、键盘快捷键、导出图片
-- **历史版本**:随 DooTask 文件历史一同保存
-
-## 与其他文件类型的关系
-- **vs drawio**:drawio 适合流程图/UML/网络拓扑等任意图形;思维导图专注放射状层级结构,节点编辑更轻
-- **vs 文档(document)**:文档是富文本/Markdown;思维导图是图形化结构
-
-## 相关
-- 插件元信息:[[minder.plugin.concept]]
-- 创建一张思维导图:[[minder.create.howto]]
-- 入口在哪:[[minder.entry.menu-map]]
-- 是否支持协作编辑:[[minder.collaboration.concept]]
diff --git a/resources/ai-kb/zh/concept/minder/plugin.md b/resources/ai-kb/zh/concept/minder/plugin.md
deleted file mode 100644
index 581a73d1a..000000000
--- a/resources/ai-kb/zh/concept/minder/plugin.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-id: minder.plugin.concept
-title: minder 插件元信息
-type: concept
-feature: minder
-scope: admin
-locale: zh
-aliases:
- - minder 插件
- - 思维导图插件
- - 思维导图怎么安装
- - 安装 minder
- - minder 插件版本
-related_tools: []
-related_pages: [application]
-prerequisites: []
-negative:
- - 主程序不内置思维导图编辑器,未装插件时新建文件菜单不会显示「思维导图」
- - 插件升级不通过 git pull,需要在应用市场更新
- - 不能离线安装到不联网的环境(需访问应用市场镜像源)
-last_verified: v1.7.90
----
-
-# minder 插件元信息
-
-## 定义
-思维导图能力由独立插件 `minder` 提供(应用市场 app id 为 `minder`,当前主版本 0.1.3)。主程序通过 iframe 内嵌插件提供的编辑器页面,文件内容仍保存在 DooTask 主库;卸载插件后已有 `mind` 文件无法继续编辑/预览,但文件本身不会被删除。
-
-## 关键属性
-- **作者**:DooTask 官方
-- **分类**:微应用(在「应用中心」中列出,作为微应用菜单项;不在管理员应用区)
-- **包大小**:约 20MB(安装较慢,请通过应用市场的「安装日志」查看进度)
-- **运行形态**:随主程序部署的静态资源 + iframe 嵌入,无独立后端进程
-- **数据存储**:思维导图内容存到 DooTask 主程序文件表(`type=mind`),不在插件容器单独存
-- **触发场景**:用户在文件页「新建 → 思维导图」时由主程序加载插件 iframe
-
-## 安装与启用
-1. 在应用市场(管理员入口)搜索「Minder」或「思维导图」
-2. 点击安装,等待资源加载(约 20MB)
-3. 安装完成后插件自动启用,文件新建菜单立即出现「思维导图」选项
-
-## 卸载影响
-- 卸载后菜单消失,原有 `mind` 文件保留在文件库中但无法打开
-- 重新安装后旧文件继续可用
-
-## 相关
-- 是什么:[[minder.concept]]
-- 入口在哪:[[minder.entry.menu-map]]
diff --git a/resources/ai-kb/zh/concept/office/collaboration.md b/resources/ai-kb/zh/concept/office/collaboration.md
deleted file mode 100644
index 88f3ee1ab..000000000
--- a/resources/ai-kb/zh/concept/office/collaboration.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-id: office.collaboration.concept
-title: OnlyOffice 多人协作编辑
-type: concept
-feature: office
-scope: end-user
-locale: zh
-aliases:
- - office 协作
- - Word 一起编辑
- - 多人同时编辑文档
- - 在线协作 Excel
- - 协同编辑 PPT
- - OnlyOffice 协作
-related_tools: []
-related_pages: [file]
-prerequisites:
- - 应用市场已安装 office(OnlyOffice)插件
- - 协作各方对该文件均有「编辑」权限
-negative:
- - 与 minder([[minder.collaboration.concept]])和 drawio 不同,OnlyOffice 才提供真正的多人实时编辑
- - 同一文件大规模并发(数十人)依赖 Document Server 资源,组织内建议 ≤ 10 人同时改
- - 离线编辑不支持,没有「断网继续编辑、上线合并」的模式
-last_verified: v1.7.90
----
-
-# OnlyOffice 多人协作编辑
-
-## 定义
-DooTask 在线 Word/Excel/PPT(office 插件)原生支持**多人实时协作编辑**。多人同时打开同一文件时,OnlyOffice Document Server 通过 WebSocket 推送他人光标和实时改动,最终内容由 Document Server 合并后回写到 DooTask 文件库,不存在「后保存覆盖前保存」的问题。
-
-## 关键属性
-- **会话识别**:主程序用 `documentKey` 标识同一份文档的协作会话,所有人加入同一 key 即进入同一编辑会话
-- **实时光标**:能看到其他人当前在哪个段落/单元格,配色按用户区分
-- **冲突处理**:编辑级别合并(不是文件级覆盖),单元格/字符级冲突由 OnlyOffice 自动协商
-- **保存触发**:所有人都离开编辑器后由 Document Server 把最终版本写回 DooTask 文件表
-- **历史版本**:随 DooTask 文件版本保留,可回溯
-
-## 编辑模式
-OnlyOffice 提供两种协作模式:
-- **快速模式**:所有改动实时显示给所有人(默认)
-- **严格模式**:自己的改动暂存,需手动点「保存」才同步给他人——适合需要审稿的场景,在 OnlyOffice 编辑器内切换
-
-## 权限组合
-- A、B 同为编辑权限:均可实时改
-- A 编辑、B 只读:B 仅看,无法输入
-- A 关闭、B 仍开着:B 单人继续,A 再打开时进入同一会话
-
-## 与其他文件类型的对比
-- **vs DooTask 内置 document**:document 是富文本/Markdown 编辑器,**不支持**多人实时
-- **vs minder 思维导图**:思维导图是单人编辑,多人同时保存会覆盖
-- **vs drawio 流程图**:同样是单人编辑,多人同时保存会覆盖
-
-## 相关
-- 是什么:[[office.concept]]
-- 插件元信息:[[office.plugin.concept]]
diff --git a/resources/ai-kb/zh/concept/office/overview.md b/resources/ai-kb/zh/concept/office/overview.md
deleted file mode 100644
index cb29aea39..000000000
--- a/resources/ai-kb/zh/concept/office/overview.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-id: office.concept
-title: 在线文档(OnlyOffice)是什么
-type: concept
-feature: office
-scope: end-user
-locale: zh
-aliases:
- - 在线文档
- - 在线 Word
- - 在线 Excel
- - 在线 PPT
- - OnlyOffice
- - office 编辑
- - 怎么在线编辑
-related_tools: []
-related_pages: [file]
-prerequisites:
- - 应用市场已安装 office(OnlyOffice)插件
-negative:
- - 在线编辑能力不是主程序内置,未装 OnlyOffice 插件时打开 Word/Excel/PPT 只能调 fileview 预览(详见 [[fileview.concept]]),不能编辑
- - 单文档大小过大(数十 MB 起)打开很慢,建议拆分
- - 不支持把 docx 直接转成 DooTask 自带的 `document` 文件类型
-last_verified: v1.7.90
----
-
-# 在线文档(OnlyOffice)是什么
-
-## 定义
-DooTask 通过 OnlyOffice 插件提供 Word/Excel/PowerPoint 文件的**在线编辑与多人实时协作**。文件存在 DooTask 文件系统(文件类型分别为 `word`/`excel`/`ppt`),编辑器以 iframe 形式嵌入 OnlyOffice Document Server 提供的页面,多人同时打开同一文件时能看到他人光标和实时改动。
-
-## 关键属性
-- **文件类型**:`word`(doc/docx/dot/dotx/odt/ott/rtf)、`excel`(xls/xlsx/xlsm/xlt/xltx/ods/ots/csv/tsv)、`ppt`(ppt/pptx/pps/ppsx/pot/potx/odp/otp)
-- **存储位置**:DooTask 文件系统(个人文件 / 项目文件 / 共享)
-- **编辑能力**:直接在浏览器编辑文档,与桌面端 Office 体验接近
-- **实时协作**:多人同时打开会自动建立协作会话,详见 [[office.collaboration.concept]]
-- **历史版本**:随 DooTask 文件历史一同保存
-
-## 与其他文件类型的关系
-- **vs document(Markdown/富文本)**:DooTask 自带的 `document` 文件是轻量富文本,无法编辑真正的 docx 二进制
-- **vs fileview 预览**:fileview 提供只读的多格式文件预览(包括 office 文件),不能编辑
-- **vs minder / drawio**:那些是图形文件,无法用 OnlyOffice 打开
-
-## 相关
-- 插件元信息:[[office.plugin.concept]]
-- 创建在线文档:[[office.create.howto]]
-- 多人协作能力:[[office.collaboration.concept]]
-- 入口在哪:[[office.entry.menu-map]]
diff --git a/resources/ai-kb/zh/concept/office/plugin.md b/resources/ai-kb/zh/concept/office/plugin.md
deleted file mode 100644
index cfcaf18b7..000000000
--- a/resources/ai-kb/zh/concept/office/plugin.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-id: office.plugin.concept
-title: OnlyOffice 插件元信息
-type: concept
-feature: office
-scope: admin
-locale: zh
-aliases:
- - OnlyOffice 插件
- - office 插件
- - 安装 OnlyOffice
- - 安装在线文档
- - onlyoffice 版本
-related_tools: []
-related_pages: [application]
-prerequisites: []
-negative:
- - 主程序不内置 docx/xlsx/pptx 在线编辑,未装插件时双击 Word/Excel/PPT 只能调 fileview 预览
- - 插件体积约 1.3GB,下载较慢,需要稳定网络与充足磁盘
- - 不能离线安装到不联网的环境(需访问应用市场镜像源)
-last_verified: v1.7.90
----
-
-# OnlyOffice 插件元信息
-
-## 定义
-在线 Word/Excel/PPT 编辑由 `office` 插件提供(应用市场 app id 为 `office`,包名 OnlyOffice,当前主版本 9.4.0)。插件包含 OnlyOffice Document Server 完整容器;主程序通过 iframe 嵌入 Document Server 的编辑器页面,借助 OnlyOffice 内置 WebSocket 实现多人实时协作。
-
-## 关键属性
-- **作者**:社区维护(Community),上游 https://www.onlyoffice.com/
-- **分类**:微应用(不在管理员应用区)
-- **包大小**:约 1.3GB(含 Document Server,下载慢,按「安装日志」判断进度)
-- **运行形态**:独立 Docker 容器(OnlyOffice Document Server)
-- **数据存储**:编辑结果由 OnlyOffice 回写到 DooTask 文件表,文件本体存到主程序的文件系统,不在 Document Server 长期持久化
-- **协议**:内部通过 JWT 令牌与 OnlyOffice 通信,主程序签发 documentKey 标识文件版本
-
-## 安装与启用
-1. 在应用市场(管理员入口)搜索「OnlyOffice」或「在线文档」
-2. 点击安装,等待镜像下载(约 1.3GB,请通过「安装日志」查看进度)
-3. 安装完成后插件自动启用,文件新建菜单立即出现「Word / Excel / PPT」选项
-4. 上传/打开已有 docx/xlsx/pptx 文件即可在线编辑
-
-## 卸载影响
-- 卸载后文件库中的 Word/Excel/PPT 文件保留,但无法在线编辑,回退到 fileview 预览(若未装 fileview 则无法预览)
-- 重装后所有文件自动恢复在线编辑能力
-
-## 已知限制
-- 部署在公网时建议为 Document Server 配置 HTTPS,否则浏览器可能拦截 WebSocket
-- 同一文件大量并发协作(数十人)需要更强的 Document Server 资源
-
-## 相关
-- 是什么:[[office.concept]]
-- 多人协作机制:[[office.collaboration.concept]]
-- 入口在哪:[[office.entry.menu-map]]
diff --git a/resources/ai-kb/zh/concept/okr/cycle.md b/resources/ai-kb/zh/concept/okr/cycle.md
deleted file mode 100644
index 979476a17..000000000
--- a/resources/ai-kb/zh/concept/okr/cycle.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-id: okr.cycle.concept
-title: OKR 周期
-type: concept
-feature: okr
-scope: end-user
-locale: zh
-aliases:
- - OKR 周期
- - 季度 OKR
- - Q1 Q2 Q3 Q4
- - OKR 时间段
- - OKR 多久一轮
- - 年度 OKR
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 okr 插件
-negative:
- - OKR 周期非全平台统一,由公司 / 团队按内部约定决定
- - 周期内频繁改 O 会降低聚焦度,不建议中途大改
-last_verified: v1.7.90
----
-
-# OKR 周期
-
-## 定义
-OKR 周期是一组 OKR 的有效时间盒。每个周期内设定一批 O 与 KR,周期末统一评审打分,下一周期重新设定。常见的周期长度有季度(Q1/Q2/Q3/Q4)和年度,部分团队也会用半年或月度。
-
-## 常见周期模式
-- **季度 OKR**:每 3 个月一轮,最主流,节奏适中
-- **年度 OKR**:通常承载战略级目标,跨度大、调整少
-- **半年 / 双月**:折中节奏,按业务变化速度选
-- **公司 / 团队 / 个人多层周期**:上层周期可以更长,下层周期更短
-
-## 周期内三个阶段
-1. **设定期**:周期开始前 1-2 周写 O 和 KR,与上下级对齐
-2. **执行期**:周期内推进,按节奏更新进度(参见 [[okr.update-progress.howto]])
-3. **评审期**:周期末打分复盘(参见 [[okr.review.howto]])
-
-## 在 DooTask OKR 插件中的体现
-- 创建 OKR 时需指定所属周期
-- 「我的 OKR」、「OKR 结果」按周期筛选展示
-- 历史周期数据保留,可回看复盘
-
-## 周期切换注意
-- 周期未结束前不要急着开新周期 OKR
-- 评审完成后再开下一周期,避免新旧周期混淆
-- 跨周期延续的目标可在新周期重新写一遍,不要简单复制
-
-## 不支持
-- 周期粒度由团队约定,OKR 插件不强制规定季度还是年度
-- 周期内频繁改 O 内容会影响聚焦,不推荐
-
-## 相关
-- OKR 总览:[[okr.concept]]
-- 评审打分:[[okr.review.howto]]
diff --git a/resources/ai-kb/zh/concept/okr/kr.md b/resources/ai-kb/zh/concept/okr/kr.md
deleted file mode 100644
index 68d776e27..000000000
--- a/resources/ai-kb/zh/concept/okr/kr.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-id: okr.kr.concept
-title: Key Result(KR,关键结果)是什么
-type: concept
-feature: okr
-scope: end-user
-locale: zh
-aliases:
- - KR
- - Key Result
- - 关键结果
- - OKR 的 KR
- - 怎么写 KR
- - KR 怎么量化
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 okr 插件
-negative:
- - KR 必须可量化(数字 / 完成度 / 状态),不能写成模糊描述
- - 单个 O 的 KR 数量建议 2-5 个,不宜过多
-last_verified: v1.7.90
----
-
-# Key Result(KR,关键结果)是什么
-
-## 定义
-Key Result(缩写 KR)是 OKR 方法论中衡量 Objective 是否达成的「关键结果」。KR 必须可量化(带数字 / 完成度 / 是否完成的二值状态),周期内可以更新进度,周期末给出 0-100% 的最终得分。
-
-## 关键属性
-- **可量化**:必须能用数字、百分比、完成状态来衡量
-- **结果导向**:描述达成的结果,而不是过程动作
-- **可追踪**:周期内可以定期更新当前进度
-- **挑战性**:好的 KR 让人觉得「拼一拼能到 70%」,而不是稳拿 100%
-
-## 好 KR 的写法
-- 量化模板:动词 + 指标 + 当前值→目标值 + 时限
-- 例:「将新用户首日留存率从 35% 提升到 50%」
-- 例:「完成 3 场行业大会的 keynote 分享」
-- 例:「上线 v2.0 并通过验收」
-
-## 反例
-- 「提升满意度」——没数字,无法判断是否达成
-- 「努力做好客户支持」——描述态度而非结果
-- 「写 50 篇日报」——是过程指标,不是结果
-
-## 进度与打分
-- 周期内:把 KR 的当前实际值更新进系统,得到 0-100% 进度
-- 周期末:根据最终值给 KR 打分(参见 [[okr.review.howto]])
-- 一个 O 的总分常按 KR 加权平均得出
-
-## 与 O 的关系
-- KR 是 O 的衡量手段;没有 O 的 KR 是孤立指标
-- 一个 O 的所有 KR 全部达成 ≈ O 达成;多数达成可视为部分达成
-
-## 相关
-- O 的概念:[[okr.objective.concept]]
-- 更新进度:[[okr.update-progress.howto]]
-- 周期评审:[[okr.review.howto]]
diff --git a/resources/ai-kb/zh/concept/okr/objective.md b/resources/ai-kb/zh/concept/okr/objective.md
deleted file mode 100644
index 9298a7c05..000000000
--- a/resources/ai-kb/zh/concept/okr/objective.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-id: okr.objective.concept
-title: Objective(O,目标)是什么
-type: concept
-feature: okr
-scope: end-user
-locale: zh
-aliases:
- - O 是什么
- - Objective
- - 目标
- - OKR 的 O
- - 怎么写 O
- - 目标怎么定
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 okr 插件
-negative:
- - O 本身不携带数字指标,量化交给 KR
- - 一个 O 不建议拆出超过 5 个 KR,否则失焦
-last_verified: v1.7.90
----
-
-# Objective(O,目标)是什么
-
-## 定义
-Objective(缩写 O)是 OKR 方法论中的「目标」,一句话回答「我们这个周期想达成什么」。O 是定性的、激励性的方向描述,本身不带具体数字,量化由 KR 承担。
-
-## 关键属性
-- **定性**:用语言描述方向,不直接写百分比 / 数量
-- **聚焦**:单个用户或团队每周期通常只设 3-5 个 O
-- **激励性**:鼓励挑战性目标,能让团队达到 60-70% 就算成功
-- **可记忆**:一句话能讲清楚,不堆砌定语
-
-## 好 O 的特征
-- 短:一句话讲完
-- 有方向感:表达「往哪里走」
-- 与战略对齐:能回答「为什么做这件事」
-- 时间盒匹配周期:在一个周期(季度 / 年度)内能产出结果
-
-## 反例
-- 「提升用户满意度 20%」——这是 KR,不是 O(O 不带数字)
-- 「做完所有任务」——太空,没有方向
-- 「研发一个新功能」——粒度太细,更像任务
-
-## 与 KR 的关系
-- 一个 O 配 2-5 个 KR(详见 [[okr.kr.concept]])
-- O 描述目的,KR 描述衡量;分别承担定性与定量
-- 没有 KR 的 O 是空话;没有 O 的 KR 是孤立指标
-
-## 与团队结构的关系
-- 个人 O、团队 O、公司 O 可以分层对齐
-- 上下级对齐方式见 [[okr.align.howto]]
-
-## 相关
-- 怎么创建:[[okr.create.howto]]
-- 周期:[[okr.cycle.concept]]
diff --git a/resources/ai-kb/zh/concept/okr/overview.md b/resources/ai-kb/zh/concept/okr/overview.md
deleted file mode 100644
index 7171445f9..000000000
--- a/resources/ai-kb/zh/concept/okr/overview.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-id: okr.concept
-title: OKR 是什么
-type: concept
-feature: okr
-scope: end-user
-locale: zh
-aliases:
- - OKR
- - OKR 是什么
- - 目标管理
- - Objectives and Key Results
- - 目标与关键结果
- - OKR 怎么用
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 okr 插件
-negative:
- - OKR 不是 KPI,不直接与绩效或薪酬挂钩
- - DooTask 主程序不内置 OKR,必须装 okr 插件才能用
-last_verified: v1.7.90
----
-
-# OKR 是什么
-
-## 定义
-OKR(Objectives and Key Results,目标与关键结果)是一种目标管理方法,将「想做成什么」(Objective,O)和「怎么衡量做成了」(Key Result,KR)分开。一个 O 拆成 2-5 个可量化的 KR,周期内逐项更新进度,周期末统一打分复盘。
-
-## 在 DooTask 中的形态
-OKR 在 DooTask 中以独立插件形式提供(appstore 应用 id:`okr`),不是主程序内置功能。插件提供:
-
-- 目标设定与分解(O + KR)
-- 关键成果跟踪(KR 进度)
-- 进度实时更新
-- 团队协作与反馈
-- 数据可视化展示(管理员可看 OKR 结果分析)
-
-## 关键概念
-- **O(Objective)**:定性的目标,回答「想达成什么」,详见 [[okr.objective.concept]]
-- **KR(Key Result)**:可量化的关键结果,回答「如何衡量达成」,详见 [[okr.kr.concept]]
-- **周期(Cycle)**:OKR 通常按季度或年度运行,详见 [[okr.cycle.concept]]
-- **对齐(Alignment)**:个人 / 团队 OKR 关联到上级 OKR,详见 [[okr.align.howto]]
-
-## OKR 与 KPI 的区别
-- **KPI**:直接考核指标,与绩效 / 薪酬绑定,偏重「不能丢分」
-- **OKR**:目标管理工具,鼓励挑战性目标(70% 完成度即合格),与考核解耦
-
-## 适用场景
-- 团队希望聚焦少数关键目标
-- 跨部门需要对齐战略方向
-- 季度 / 年度滚动复盘
-
-## 相关
-- 入口在哪:[[okr.entry.menu-map]]
-- 怎么创建:[[okr.create.howto]]
diff --git a/resources/ai-kb/zh/concept/okr/plugin.md b/resources/ai-kb/zh/concept/okr/plugin.md
deleted file mode 100644
index 0db522dfc..000000000
--- a/resources/ai-kb/zh/concept/okr/plugin.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-id: okr.plugin.concept
-title: OKR 插件元信息
-type: concept
-feature: okr
-scope: end-user
-locale: zh
-aliases:
- - OKR 插件
- - OKR 是不是要装
- - okr 应用
- - OKR 装多大
- - OKR 怎么安装
-related_tools: []
-related_pages: [application]
-prerequisites: []
-negative:
- - OKR 不是主程序内置功能,未装插件时不可用
- - 插件升级不通过 git pull,需要在应用市场更新
-last_verified: v1.7.90
----
-
-# OKR 插件元信息
-
-## 定义
-OKR 在 DooTask 中由独立插件 `okr` 提供(应用市场 app id 为 `okr`,当前主版本 0.5.8)。主程序不内置 OKR 任何代码,所有目标管理逻辑都跑在独立容器里,通过 nginx 反向代理 `/apps/okr/` 路径挂载到 DooTask 界面。
-
-## 关键属性
-- **作者**:DooTask 官方
-- **包大小**:约 15MB(安装较慢,请通过安装日志查看进度)
-- **运行形态**:独立 Docker 容器(镜像 `kuaifan/doookr`),通过环境变量复用主程序的数据库
-- **菜单注入**:安装后自动在「应用中心」注册两个入口(OKR 管理 + OKR 结果)
-- **数据存储**:与主程序共享同一个 MySQL/MariaDB 实例(独立表前缀由插件管理)
-- **要求**:主程序版本 > 1.1.66
-
-## 安装与启用
-1. 应用市场搜索「OKR」或「目标管理」
-2. 点击安装,等待镜像拉取与容器启动
-3. 安装完成后插件自动启用,菜单立即出现,无需重启主程序
-4. 默认配置适配大多数场景,可在插件设置中按需调整
-
-## 升级与卸载
-- 升级:应用市场看到新版本时点击「更新」
-- 卸载:应用市场对应插件 →「卸载」;卸载后菜单消失,业务数据保留在数据库中
-
-## 不支持
-- 不能离线安装到不联网的环境(需访问应用市场镜像源)
-- 不能选择安装到非 Docker 部署的 DooTask(插件依赖容器化)
-
-## 相关
-- 看不到 / 装不上:[[okr.cannot-install.faq]]
-- 入口在哪:[[okr.entry.menu-map]]
diff --git a/resources/ai-kb/zh/concept/okr/team.md b/resources/ai-kb/zh/concept/okr/team.md
deleted file mode 100644
index e5fd2b5cc..000000000
--- a/resources/ai-kb/zh/concept/okr/team.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-id: okr.team.concept
-title: 团队 OKR 与个人 OKR
-type: concept
-feature: okr
-scope: end-user
-locale: zh
-aliases:
- - 团队 OKR
- - 个人 OKR
- - 部门 OKR
- - 公司 OKR
- - OKR 层级
- - OKR 分层
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 okr 插件
-negative:
- - 团队 OKR 不是个人 OKR 的简单加和
- - 个人 OKR 不必把团队 KR 完全分担,可基于职责选择关联
-last_verified: v1.7.90
----
-
-# 团队 OKR 与个人 OKR
-
-## 定义
-OKR 按主体层级可分为公司 OKR、团队(部门)OKR、个人 OKR。各层级各有 O 和 KR,通过「对齐」建立因果关联,形成自上而下的目标树。
-
-## 三个层级的差异
-- **公司 OKR**:跨部门的战略级方向,周期通常更长(年度),数量少(3-5 个 O)
-- **团队 OKR**:部门 / 小组负责的目标,承接公司 O,周期常用季度
-- **个人 OKR**:成员自己的工作目标,承接所在团队 OKR,颗粒度最细
-
-## 谁负责
-- **公司 OKR**:CEO / 高管层
-- **团队 OKR**:团队 leader 牵头,团队共同认领
-- **个人 OKR**:成员本人;直属上级辅助审阅
-
-## 对齐路径
-- 个人 OKR → 团队 OKR → 公司 OKR,形成可追溯链路
-- 同一团队的多个个人 OKR 可分别承接团队不同 KR
-- 详细操作见 [[okr.align.howto]]
-
-## 团队 OKR 的特征
-- 团队 KR 数量通常 3-5 个
-- 团队 KR 由若干成员合力完成,但应明确「主负责人」
-- 团队 KR 进度通常由 leader 汇总更新
-
-## 个人 OKR 的特征
-- 个人 O 不必覆盖所有日常工作,只挑这个周期最重要的方向
-- 个人 KR 与所在岗位职责高度相关
-- 数量通常 2-4 个 O
-
-## 不支持
-- 团队 OKR 不会自动汇总所有个人 OKR 的进度
-- 一个个人不属于两个团队时,需自行决定主对齐方向
-
-## 相关
-- 对齐:[[okr.align.howto]]
-- OKR 概念:[[okr.concept]]
-- 周期:[[okr.cycle.concept]]
diff --git a/resources/ai-kb/zh/concept/search/engine.md b/resources/ai-kb/zh/concept/search/engine.md
deleted file mode 100644
index 25a80c820..000000000
--- a/resources/ai-kb/zh/concept/search/engine.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-id: search.engine.concept
-title: 搜索引擎(Manticore 与 MySQL 回退)
-type: concept
-feature: search
-scope: admin
-locale: zh
-aliases:
- - 搜索引擎
- - Manticore
- - 搜索插件
- - 搜索很慢
- - 为什么搜不到文件内容
- - 语义搜索
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 未安装 search 插件时无法搜索文件正文,只能按文件名模糊匹配
- - 未安装 search 插件时不支持语义 / 向量 / 混合搜索,只能精确关键词
- - 向量搜索还需要 ai 插件提供 Embedding,仅装 search 没装 ai 也走不了语义
-last_verified: v1.7.90
----
-
-# 搜索引擎(Manticore 与 MySQL 回退)
-
-## 定义
-DooTask 全局搜索底层有两套实现,按 `Apps::isInstalled('search')` 自动切换:装了应用市场的 search 插件就走 Manticore,没装就退回 MySQL `LIKE` 模糊查询。
-
-## Manticore 搜索引擎
-Manticore Search 是独立的开源搜索引擎,作为可选插件部署在 DooTask 的 appstore 里。能力包括:
-- **全文搜索**(text):倒排索引 + ICU 中文分词
-- **向量搜索**(vector):1536 维 KNN(HNSW 算法),需配合 AI 插件生成 Embedding
-- **混合搜索**(hybrid,默认):同时打全文和向量分,取加权综合排名
-- **文件正文搜索**:可搜 Word / Excel / PPT / PDF / TXT / 代码文件等内部文本
-
-接口参数 `search_type` 取值 `text` / `vector` / `hybrid`,默认 `hybrid`,**只在装了 Manticore 时生效**。
-
-## MySQL 回退
-未装 search 插件时调 `searchByKeyword`,用 MySQL `LIKE %keyword%` 匹配。能力受限:
-- 只匹配字面关键词,不理解同义词或语义
-- 不能搜文件正文(PDF / Office 内部文本搜不到)
-- 大数据量下性能不如 Manticore
-- 不支持 relevance 排序,按时间倒序
-
-## 部署形态
-插件镜像独立维护(appstore 应用:search),技术规格:
-- 向量维度:1536,兼容 OpenAI text-embedding-3-small
-- 中文分词:ICU Chinese
-- 推荐至少 2GB 可用内存
-
-## 何时升级到 Manticore
-- 需要搜索文件内容(不仅是文件名)
-- 用自然语言查文件(如「财务分析文档」→「Q3 收入报表」)
-- 团队消息 / 任务量大,MySQL `LIKE` 已经慢
diff --git a/resources/ai-kb/zh/concept/search/intelligent.md b/resources/ai-kb/zh/concept/search/intelligent.md
deleted file mode 100644
index 3d4b00355..000000000
--- a/resources/ai-kb/zh/concept/search/intelligent.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-id: search.intelligent.concept
-title: 智能搜索(AI 语义搜索)
-type: concept
-feature: search
-scope: end-user
-locale: zh
-aliases:
- - 智能搜索
- - AI 搜索
- - 语义搜索
- - 自然语言搜索
- - intelligent_search
- - 向量搜索
-related_tools: [intelligent_search]
-related_pages: []
-prerequisites:
- - 应用商店(应用市场)已安装 search 插件(Manticore Search)
- - 应用商店已安装 ai 插件(语义 / 向量搜索需用其生成 Embedding)
-negative:
- - 未安装 search 插件(Manticore)时回退普通 MySQL 关键词搜索,无语义能力
- - 仅装 search 没装 ai 时,向量 / 语义 / 混合搜索无法生效,只能跑全文 text
- - 索引建立有延迟,刚上传 / 新建的内容可能短时间内搜不到
- - 智能搜索按权限过滤,搜不到的对象通常是无权访问
-last_verified: v1.7.90
----
-
-# 智能搜索(AI 语义搜索)
-
-## 定义
-智能搜索是 DooTask 基于 **Manticore Search 插件**(search 插件)的统一检索能力,支持关键词(text)/ 语义向量(vector)/ 混合(hybrid)三种搜索类型,一次可跨任务 / 项目 / 文件内容 / 联系人 / 消息 5 类对象;AI 助手通过 MCP 工具 `intelligent_search` 调用同一套底座。
-
-## 底层原理
-- 走 SearchController 统一接口,优先使用 Manticore Search(需安装 search 插件)
-- **未安装 search 插件时回退到普通 MySQL 关键词搜索**,仍可按字面匹配搜索,但没有语义 / 向量能力
-- 默认 `search_type = hybrid`(混合搜索):同时打全文倒排分和 KNN 向量分
-- 向量分由 ai 插件提供 Embedding(1536 维,兼容 OpenAI text-embedding-3-small)
-- 中文用 ICU 分词,能处理常见同义词与近义表达
-
-## 与关键词搜索的区别
-- **关键词搜索**:只命中字面匹配,「Q3 收入报表」搜「财务分析」会落空
-- **智能搜索**:理解意图,「财务分析」能命中「Q3 收入报表」「年度成本表」等语义相关文件
-- 智能搜索仍保留关键词命中能力,相关度由混合算法加权
-
-## 关键属性
-- **入口**:装齐 search + ai 后,全局搜索框会出现「AI 搜索」按钮,把搜索词转给 AI 助手;AI 助手自动调用 `intelligent_search` 工具
-- **结果排序**:按 `relevance` 综合分降序
-- **权限范围**:与基础 search 接口完全一致,只返回当前用户能看到的对象
-- **延迟**:依赖 Manticore 索引;新增内容入库到可搜的间隔通常为秒级
-
-## 与全局搜索的关系
-- 全局搜索 = 用户在搜索框内主动输入关键词的检索能力,详见 [[search.concept]]
-- 智能搜索 = AI 助手在对话中代用户调用的同一套底座,搜索类型默认 `hybrid`
-
-## 不支持
-- 没装 search 插件(Manticore)时回退 MySQL 关键词搜索,关键词 / 语义 / 混合类型参数失效
-- 装了 search 但没装 ai 插件时降级到全文,语义能力失效
-- 不能跨用户搜别人的私聊 / 私有文件
-- 单次每类对象不会返回超过 50 条(最多 50 条)
diff --git a/resources/ai-kb/zh/concept/search/overview.md b/resources/ai-kb/zh/concept/search/overview.md
deleted file mode 100644
index 9f26bfba4..000000000
--- a/resources/ai-kb/zh/concept/search/overview.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-id: search.concept
-title: 全局搜索是什么
-type: concept
-feature: search
-scope: end-user
-locale: zh
-aliases:
- - 全局搜索
- - 搜索是什么
- - 总搜索
- - 怎么搜东西
- - 在哪里搜
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 全局搜索不会跨用户:只能搜到当前账号有权限看到的内容
- - 关键词为空时不会触发搜索,必须输入至少 1 个字符
- - 单次搜索每类对象最多返回 50 条(默认 20 条)
-last_verified: v1.7.90
----
-
-# 全局搜索是什么
-
-## 定义
-全局搜索是 DooTask 内的统一检索入口,能够一次性跨 5 类对象查找内容:联系人、项目、任务、文件、消息。对应后端 `api/search/*` 5 个接口,统一在 SearchController 实现。
-
-## 5 类搜索对象
-- **联系人**(contact):按昵称 / 邮箱 / 个人简介 / 技能标签匹配用户
-- **项目**(project):按项目名 / 项目描述匹配当前用户可访问的项目
-- **任务**(task):按任务名 / 描述 / 子内容匹配用户所在项目内的任务
-- **文件**(file):按文件名匹配,安装 search 插件后还能搜文件正文
-- **消息**(message):按消息文本匹配用户能看到的会话消息
-
-## 权限模型
-所有搜索都先做用户身份验证(`User::auth()`),结果只返回当前用户**已经有权限访问**的对象。搜不到不一定是关键词错,也可能是没有权限。
-
-## 双引擎设计
-全局搜索有两套底层实现,按是否安装 search 插件自动切换:
-- 装了 Manticore 搜索插件:走 Manticore,支持全文 / 向量 / 混合搜索
-- 未装:自动降级到 MySQL `LIKE` 模糊匹配
-
-详见 [[search.engine.concept]]。
-
-## 入口
-- 桌面端:快捷键 `Ctrl/Cmd + F` 或 `Ctrl/Cmd + /`,详见 [[search.entry.menu-map]]
-- 移动端:在仪表盘等页面通过搜索按钮触发
diff --git a/resources/ai-kb/zh/faq/ai-assistant/disabled.md b/resources/ai-kb/zh/faq/ai-assistant/disabled.md
deleted file mode 100644
index 09e878b0c..000000000
--- a/resources/ai-kb/zh/faq/ai-assistant/disabled.md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-id: ai-assistant.disabled.faq
-title: 我看不到 AI 助手入口
-type: faq
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - 找不到 AI
- - AI 浮按钮没有
- - 没有 AI 助手
- - 我的 DooTask 没 AI
- - AI 入口消失
- - 别人有 AI 我没有
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 普通用户无法自助开通 AI,必须由系统管理员开
- - 浮按钮 / 快捷键 / 全局「+」菜单都依赖同一个 ai 插件标识
- - 不同部署的 DooTask 是否带 AI 取决于管理员决定
-last_verified: v1.7.90
----
-
-# 我看不到 AI 助手入口
-
-## 问题
-- 屏幕右下角没有 AI 浮按钮
-- 按 Cmd+I / Ctrl+I 没反应
-- 右上角全局「+」菜单里没有「AI 助手」项
-- 同事的 DooTask 有 AI,自己的没有
-
-## 常见原因
-
-### 1. AI 插件未安装(最常见)
-- AI 助手是**微应用 / 系统插件**,需在「应用市场」安装 `ai` 插件
-- 前端通过 `microAppsIds.includes('ai')` 决定是否显示入口;没装则所有 AI 入口都不渲染
-
-### 2. 管理员关闭了 AI 模型
-- 即使 ai 插件已装,系统设置 →「AI 模型」未启用任何服务商
-- 浮按钮可能仍显示,但模型下拉为空、无法发送,详见 [[ai-assistant.model-empty.faq]]
-
-### 3. License 限制
-- 部分 DooTask 部署的 License 不含 AI 模块
-- ai 插件不出现在应用市场可装列表
-
-### 4. 老缓存
-- 前端 `microAppsIds` 陈旧;刚装好但旧 tab 没刷新
-- 解决:强制刷新(Ctrl+F5)
-
-### 5. 路由是登录页
-- 浮按钮明确排除登录页(`routeName !== 'login'`)
-- 登录后再看
-
-## 解决
-1. **联系系统管理员**:到「应用市场」安装并启用 `ai` 插件
-2. **管理员配 AI 模型**:在系统设置 →「AI 模型」开启至少一个服务商
-3. **强制刷新**:Ctrl+F5 / Cmd+Shift+R 重新拉 `microAppsIds`
-4. **重启容器(管理员)**:刚装完插件可能需重启 ai 容器
-
-## 如何区分原因
-- 入口**完全不显示**(连浮按钮都没)→ ai 插件未装
-- 入口能看到但下拉空 → 模型未配,详见 [[ai-assistant.model-empty.faq]]
-
-## 相关
-- [[ai-assistant.entry.howto]]
-- [[ai-assistant.model-empty.faq]]
-- [[ai-assistant.auth.concept]]
diff --git a/resources/ai-kb/zh/faq/ai-assistant/mcp-down.md b/resources/ai-kb/zh/faq/ai-assistant/mcp-down.md
deleted file mode 100644
index 660246ad5..000000000
--- a/resources/ai-kb/zh/faq/ai-assistant/mcp-down.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-id: ai-assistant.mcp-down.faq
-title: AI 的 MCP 工具不可用
-type: faq
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - mcp 挂了
- - mcp_server 不可用
- - AI 全部工具不能用
- - AI 都不能操作
- - MCP 连接失败
- - AI 助手只能聊天不能动手
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 普通用户不能自助重启插件,需管理员
- - mcp_server 容器异常时所有 33 个 MCP 工具都不可用(包含页面操作)
- - 不影响纯文本对话和知识库检索(search_help_docs 是 AI 容器内置)
-last_verified: v1.7.90
----
-
-# AI 的 MCP 工具不可用
-
-## 问题
-AI 浮窗能聊天但任何"做事"指令都失败:
-- 浮窗顶部不显示工具图标
-- 让 AI 建任务 / 发消息 / 跳页面都没反应
-- 工具气泡显示「连接失败」「mcp_server unavailable」
-
-## 原因
-- **mcp_server 插件未安装**:应用市场没装这个系统插件
-- **mcp_server 容器挂了**:宿主资源不足 / 配置错误导致容器退出
-- **WebSocket 不通**:反向代理 / 防火墙拦截了 `wss://.../apps/mcp_server/mcp/operation` 路径
-- **AI 模型配置缺工具能力**:管理员配模型时关了 tool 调用集成
-
-## 解决(普通用户)
-1. 先确认是不是只你一个人的问题:和同事对比
-2. 报给系统管理员,告知"mcp_server 不可用"
-3. 等待恢复期间可改用:
- - 手动用前端操作功能
- - 用 AI 做纯文本辅助(写文案 / 总结 / 翻译)
- - 知识库检索(`search_help_docs` 不依赖 mcp_server,仍可用)
-
-## 解决(管理员)
-1. 应用市场 → 找到 `mcp_server` → 看运行状态
-2. 没安装 → 安装
-3. 已安装但状态异常 → 重启该插件
-4. 长期失败 → 看插件日志(容器 docker logs)排查
-5. 反向代理:确保 wss 路径未被拦
-
-## 相关
-- 工具失败:[[ai-assistant.tool-failed.faq]]
-- 没调工具:[[ai-assistant.no-tool-call.faq]]
-- 工具机制:[[ai-assistant.tools.concept]]
diff --git a/resources/ai-kb/zh/faq/ai-assistant/model-empty.md b/resources/ai-kb/zh/faq/ai-assistant/model-empty.md
deleted file mode 100644
index 68d0f8377..000000000
--- a/resources/ai-kb/zh/faq/ai-assistant/model-empty.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-id: ai-assistant.model-empty.faq
-title: AI 助手模型下拉是空的
-type: faq
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 选不了模型
- - 模型下拉为空
- - 暂无可用模型
- - 没有可选 AI
- - AI 不能发送
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 普通用户无法自助开通 / 配置模型,必须由系统管理员处理
- - 下拉空多数是后端配置层面的事,不是网络问题
- - DooTask 不自带任何免费内置模型
-last_verified: v1.7.90
----
-
-# AI 助手模型下拉是空的
-
-## 问题
-打开 AI 助手浮窗后,**底部「选择模型」下拉框**为空,显示「暂无可用模型」或灰色禁用,按发送也无反应。
-
-## 常见原因
-
-1. **管理员没启用任何模型**
- - 系统设置 → 「AI 模型」中所有服务商开关都关着,或未填 API Key
-2. **AI 插件未安装**
- - 应用市场没装 ai 插件;如果连入口都没有则属于 [[ai-assistant.disabled.faq]]
-3. **API Key 失效**
- - 管理员填了 Key 但已过期 / 余额耗尽,后端返回模型列表为空
-4. **接口请求失败**
- - `GET api/assistant/models` 出错(鉴权失败、网络抖动),前端弹「获取模型列表失败」并自动关浮窗
-5. **管理员开了模型但没设默认**
- - 极少数情况:模型列表为空数组
-
-## 解决
-
-1. **联系系统管理员**:到「系统设置 → AI 模型」开启至少一个服务商并填可用 API Key
-2. **检查 ai 插件**:管理员到「应用市场」确认 ai 插件已装且未禁用
-3. **刷新页面**:关闭 AI 助手浮窗后重新打开,触发新一次 `api/assistant/models`
-4. **看后台 ai-bot 日志**:管理员排查 dootask-ai 容器日志,确认上游 API 可达
-
-## 与其他「AI 看不到」的区别
-- 下拉**空** = 管理员配置层面问题
-- AI 入口**完全看不到**(浮按钮 / 快捷键无效)= ai 插件未装,详见 [[ai-assistant.disabled.faq]]
-
-## 相关
-- [[ai-assistant.model.concept]]
-- [[ai-assistant.disabled.faq]]
diff --git a/resources/ai-kb/zh/faq/ai-assistant/no-tool-call.md b/resources/ai-kb/zh/faq/ai-assistant/no-tool-call.md
deleted file mode 100644
index 2ef568d37..000000000
--- a/resources/ai-kb/zh/faq/ai-assistant/no-tool-call.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-id: ai-assistant.no-tool-call.faq
-title: AI 应该调工具但没调
-type: faq
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 不调工具
- - AI 只说不做
- - AI 没操作
- - AI 没建任务
- - AI 干说
- - 让 AI 做事它只回答
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 选了纯文本模型时无论怎么提问都不会调工具
- - 即使支持 tool call 的模型也可能误判为"无需工具",需重提问引导
- - AI 不会暴露完整工具清单,让你逐个点选
-last_verified: v1.7.90
----
-
-# AI 应该调工具但没调
-
-## 问题
-明明让 AI 帮忙建任务 / 发消息 / 跳页面,但 AI 只口头回答"好的,我会…"或"建议你…",并没有调用工具实际操作。
-
-## 常见原因
-- **模型不支持 function calling**:选了纯文本模型
-- **mcp_server 插件未安装/挂掉**:工具列表为空
-- **意图不明确**:模型判断为闲聊,没决策需要工具
-- **管理员关闭了工具集成**
-- **上下文超长**:会话累积过多,模型"忘了"工具能力
-
-## 解决
-1. **换模型**:浮窗顶部切到「支持工具」的模型
-2. **明确指令**:换成动词命令"建任务"、"发消息"、"打开"
-3. **加资源 ID**:给具体的项目名 / 任务 ID
-4. **新开会话**:超长会话可能异常,重开试
-5. **检查 mcp_server**:让管理员看插件运行状态
-
-## 例子
-- 不好:"小王任务这事跟一下" → AI 回复"建议您…"
-- 好:"给小王在项目 X 新建任务:周五前回归测试" → AI 调 `create_task`
-
-## 相关
-- 工具机制:[[ai-assistant.tools.concept]]
-- 工具列表:[[ai-assistant.tools-list.concept]]
-- MCP 不可用:[[ai-assistant.mcp-down.faq]]
diff --git a/resources/ai-kb/zh/faq/ai-assistant/tool-failed.md b/resources/ai-kb/zh/faq/ai-assistant/tool-failed.md
deleted file mode 100644
index aee81adad..000000000
--- a/resources/ai-kb/zh/faq/ai-assistant/tool-failed.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-id: ai-assistant.tool-failed.faq
-title: AI 工具调用失败怎么办
-type: faq
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 调工具报错
- - tool_call failed
- - AI 操作失败
- - AI 工具不响应
- - AI 卡在执行中
- - AI 调用超时
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 工具失败不会自动二次重试,需用户重新触发
- - 失败不会回滚已成功的工具(如已建任务再发消息失败,任务保留)
- - 隐藏错误细节属正常,敏感字段不会暴露给用户
-last_verified: v1.7.90
----
-
-# AI 工具调用失败怎么办
-
-## 问题
-浮窗里 AI 调工具的气泡显示「失败」「执行超时」「无权限」「找不到资源」等,回复也提示"没能完成"。
-
-## 常见原因
-- **后端短时不可用**:`mcp_server` 容器重启 / 网络抖动
-- **权限不足**:操作了你没权限访问的资源(如别人的任务、非成员的项目)
-- **参数错误**:AI 推断的 ID 不存在(如任务已被删)
-- **超时**:单次工具调用默认 30 秒超时,长操作(大列表/复杂搜索)会断
-- **页面不在线**:页面操作(打开任务/跳页面/操作元素)需要前端 socket 在线,关浏览器后立刻让 AI 操作会失败
-- **模型不支持 tool call**:选了纯文本模型,根本不会调
-
-## 解决
-1. **重试**:浮窗里点工具气泡上的「重试」按钮,或回复"再试一次"
-2. **换措辞**:原句太模糊就给更具体的 ID / 关键词
-3. **检查权限**:项目级问负责人加成员;任务级问任务负责人加可见用户
-4. **换模型**:选标注「支持工具」的模型,浮窗顶部切换
-5. **刷新页面**:页面动作失败时刷新一次后再让 AI 重试
-6. **联系管理员**:连续失败请通知管理员看 `mcp_server` 插件日志
-
-## 相关
-- 工具机制:[[ai-assistant.tools.concept]]
-- 权限不足:[[ai-assistant.tool-permission.faq]]
-- MCP 不可用:[[ai-assistant.mcp-down.faq]]
diff --git a/resources/ai-kb/zh/faq/ai-assistant/tool-permission.md b/resources/ai-kb/zh/faq/ai-assistant/tool-permission.md
deleted file mode 100644
index 2b088aecc..000000000
--- a/resources/ai-kb/zh/faq/ai-assistant/tool-permission.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-id: ai-assistant.tool-permission.faq
-title: AI 提示没权限操作怎么办
-type: faq
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 没权限
- - AI 提示权限不足
- - AI 不能改这个
- - AI 操作被拒
- - AI 看不到这个任务
- - AI 不能访问
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - AI 不能绕过 DooTask 权限体系,调工具同样走后端鉴权
- - 没有「AI 超级模式」开关,AI 的权限始终等同当前登录用户
- - 普通用户无法自助提权,必须由管理员或负责人调整
-last_verified: v1.7.90
----
-
-# AI 提示没权限操作怎么办
-
-## 问题
-AI 工具调用气泡显示「无权限」「您不在可见用户列表」「不是项目成员」等错误,AI 回复说"无法帮您完成"。
-
-## 原因
-AI 以你当前登录身份调用所有工具,后端的所有权限校验都生效:
-
-- **项目级**:非项目成员看不到/不能改项目内任务
-- **任务级**:任务设了可见用户白名单,名单外用户即使是项目成员也看不到
-- **角色级**:改项目设置 / 删列 / 改成员需要项目负责人或管理员
-- **系统级**:装插件 / 改系统设置 / 看导出 / 管理用户需要系统管理员(userIsAdmin)
-- **超级管理员**:超管专属功能仅 id=1 的用户可用
-
-## 解决
-1. 确认操作类型对应哪一级权限
-2. 联系对应角色补加权限:
- - 项目级 → 联系项目负责人加你为成员或改角色
- - 任务级 → 联系任务负责人把你加入可见用户
- - 系统级 → 联系系统管理员
-3. 部分功能依赖插件已安装(如审批要 approve 插件)
-4. 让 AI 换种方式(如不能 update_task 可改成 send_message 通知负责人改)
-
-## 怎么看自己的权限
-- 头像 → 「个人设置」可看部门 / 角色
-- 系统管理员 / 部门负责人身份会显示在右上角下拉菜单顶部
-
-## 相关
-- 通用权限不足:[[role-permission.permission-denied.faq]]
-- 工具调用失败:[[ai-assistant.tool-failed.faq]]
diff --git a/resources/ai-kb/zh/faq/checkin/face-fail.md b/resources/ai-kb/zh/faq/checkin/face-fail.md
deleted file mode 100644
index 3e47e7ae4..000000000
--- a/resources/ai-kb/zh/faq/checkin/face-fail.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-id: checkin.face-fail.faq
-title: 人脸识别失败怎么办
-type: faq
-feature: checkin
-scope: end-user
-locale: zh
-aliases:
- - 人脸识别失败
- - 刷脸不成功
- - 人脸录入失败
- - 上传人脸报错
- - 识别不到我的脸
-related_tools: []
-related_pages: []
-prerequisites: []
-last_verified: v1.7.90
----
-
-# 人脸识别失败怎么办
-
-## 问题
-上传人脸图片或现场扫脸时报错,比如「设置失败」「上传出错」「未识别到人脸」「该应用未安装」等。
-
-## 原因
-- **face 插件没装**:主程序调 face 容器 `http://face:7788/user` 调不通,会先抛 `请先安装 face` 异常
-- **face 容器没起来**:容器异常或镜像没拉成功(约 15MB+,首次安装慢)
-- **签到方式没开人脸**:管理员未在「签到设置 → 签到方式」勾选「人脸签到」
-- **未开放上传**:管理员未在「签到设置 → 允许修改」开启「允许成员上传人脸图片」,提交会返回「未开放修改权限」
-- **图片质量差**:模糊 / 侧脸 / 多人 / 太暗 → 后端识别引擎拒绝入库
-- **现场设备问题**:人脸识别一体机离线、网络断、未对接到 face 容器
-
-## 解决
-1. 联系管理员确认 face 插件已在应用市场安装
-2. 让管理员去「签到设置」开启「人脸签到」+「允许成员上传人脸图片」
-3. 重新上传一张**正面、光线均匀、单人、500x500 左右**的清晰照片
-4. 现场扫脸失败时换个角度 / 摘掉口罩 / 重启设备
-5. 若一直失败,临时改用 [[checkin.regular.howto]] 手动签到或 [[checkin.wifi.howto]] WiFi 签到
-
-## 不支持
-- 主程序自己不做人脸比对,所有错误都从 face 插件返回;卸载 face 后人脸签到能力完全消失
diff --git a/resources/ai-kb/zh/faq/checkin/late.md b/resources/ai-kb/zh/faq/checkin/late.md
index 41f6e9c6e..f8b0f7e29 100644
--- a/resources/ai-kb/zh/faq/checkin/late.md
+++ b/resources/ai-kb/zh/faq/checkin/late.md
@@ -29,7 +29,7 @@ DooTask 签到没打上(漏签 / 迟到),日历上显示当天为空或时
## 原因
- **签到时间窗口外**:管理员配置了「最早可提前」「最晚可延后」分钟数,超出窗口的打卡会被拒
-- **MAC / 人脸未匹配**:WiFi 签到时 MAC 没绑或不在办公网 → [[checkin.mac-not-match.faq]];人脸识别失败 → [[checkin.face-fail.faq]]
+- **MAC / 人脸未匹配**:WiFi 签到时 MAC 没绑或不在办公网 → [[checkin.mac-not-match.faq]];人脸识别失败见人脸识别(face)应用知识库
- **忘记打卡**:完全没操作
- **非工作日**:节假日不会发提醒,但只要打卡了一样会记录
diff --git a/resources/ai-kb/zh/faq/common-faq/ai-no-models.md b/resources/ai-kb/zh/faq/common-faq/ai-no-models.md
index 9cb8c7e66..c32395ff2 100644
--- a/resources/ai-kb/zh/faq/common-faq/ai-no-models.md
+++ b/resources/ai-kb/zh/faq/common-faq/ai-no-models.md
@@ -48,4 +48,4 @@ DooTask 的 AI 能力由独立的 **ai 插件**(`dootask-ai`)提供。下面
- 主程序不能跳过 ai 插件直连模型
- 一次只能选一个默认模型作为系统主模型
-更多 AI 助手能力见 [[ai-assistant.entry.howto]] / [[ai-assistant.tools-list.concept]]
+更多 AI 助手能力说明随 ai 插件知识库提供。
diff --git a/resources/ai-kb/zh/faq/common-faq/ai-slow.md b/resources/ai-kb/zh/faq/common-faq/ai-slow.md
index 3d56481e8..2687b5904 100644
--- a/resources/ai-kb/zh/faq/common-faq/ai-slow.md
+++ b/resources/ai-kb/zh/faq/common-faq/ai-slow.md
@@ -50,4 +50,4 @@ AI 回复时延受多重因素影响:
- 无内置「响应慢自动降级」机制
- 中断回复只能整体停止本轮,不能保留已生成的文本继续
-[[ai-assistant.entry.howto]] / [[ai-assistant.tool-call.concept]]
+更多 AI 助手说明随 ai 插件知识库提供。
diff --git a/resources/ai-kb/zh/faq/common-faq/ai-tool-permission.md b/resources/ai-kb/zh/faq/common-faq/ai-tool-permission.md
index 32279b7d0..a731ddee2 100644
--- a/resources/ai-kb/zh/faq/common-faq/ai-tool-permission.md
+++ b/resources/ai-kb/zh/faq/common-faq/ai-tool-permission.md
@@ -31,7 +31,7 @@ last_verified: v1.7.90
AI 助手的工具调用本质是后端 API 调用,**全部以你的身份发起**。所以:
- 你本人没权限做的事,AI 也做不了
-- AI 调 `create_task` 时实际就是用你的会话去走 [[ai-assistant.create-task.howto]] 的 API;你不在项目里就会被拒绝
+- AI 调 `create_task` 时实际就是用你的会话去调对应 API;你不在项目里就会被拒绝
- `update_task` 改任务必须满足任务负责人 / 项目负责人 / 系统管理员条件之一
- 「加成员」必须你本身能加(项目负责人 / 系统管理员)
@@ -48,4 +48,4 @@ AI 助手的工具调用本质是后端 API 调用,**全部以你的身份发
- AI 不读不到的会话不会偷偷读取(隐私边界 = 用户的可见范围)
- AI 工具失败不会自动二次重试,需要用户重新发问
-[[ai-assistant.tool-call.concept]] 解释了工具调用的事件结构;[[role-permission.permission-denied.faq]] 解释通用权限规则。
+工具调用的事件结构说明随 ai 插件知识库提供;[[role-permission.permission-denied.faq]] 解释通用权限规则。
diff --git a/resources/ai-kb/zh/faq/common-faq/ai-wrong-answer.md b/resources/ai-kb/zh/faq/common-faq/ai-wrong-answer.md
index 6a631f526..bd47ac498 100644
--- a/resources/ai-kb/zh/faq/common-faq/ai-wrong-answer.md
+++ b/resources/ai-kb/zh/faq/common-faq/ai-wrong-answer.md
@@ -47,4 +47,4 @@ AI 助手回答与事实不符,编了不存在的功能 / 菜单 / 快捷键
- AI 不会拒绝回答它不熟的问题(可能编造),需用户保持警惕
- AI 不会自动跨会话学习——「你上次错过的」对新会话无影响
-[[ai-assistant.search-help-docs.howto]] 触发知识库检索;[[ai-assistant.tool-call.concept]] 看真实工具调用判断 AI 是否真做了。
+可触发知识库检索,并查看真实工具调用判断 AI 是否真做了(AI 助手相关说明随 ai 插件知识库提供)。
diff --git a/resources/ai-kb/zh/faq/common-faq/data-import.md b/resources/ai-kb/zh/faq/common-faq/data-import.md
index 22c497001..03479755c 100644
--- a/resources/ai-kb/zh/faq/common-faq/data-import.md
+++ b/resources/ai-kb/zh/faq/common-faq/data-import.md
@@ -55,7 +55,7 @@ last_verified: v1.7.90
**附件**:批量上传到文件目录([[file.upload.howto]])。
-**文档**:复制文本到 office([[office.create.howto]])或 memos([[memos.create.howto]])。
+**文档**:复制文本到 office 或 memos 等文档类应用(具体新建方式见对应应用知识库)。
## 不支持
- 不支持保留源任务 ID / URL 映射
diff --git a/resources/ai-kb/zh/faq/okr/cannot-install.md b/resources/ai-kb/zh/faq/okr/cannot-install.md
deleted file mode 100644
index 3c56afab6..000000000
--- a/resources/ai-kb/zh/faq/okr/cannot-install.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-id: okr.cannot-install.faq
-title: 看不到 OKR / 安装失败怎么办
-type: faq
-feature: okr
-scope: end-user
-locale: zh
-aliases:
- - OKR 看不到
- - OKR 入口没有
- - OKR 装不上
- - OKR 安装失败
- - OKR 怎么开通
- - OKR 安装很慢
-related_tools: []
-related_pages: [application]
-prerequisites: []
-negative:
- - 主程序不内置 OKR,未装插件时入口绝对不会出现
- - 普通用户无法自助安装应用市场插件,需要系统管理员操作
-last_verified: v1.7.90
----
-
-# 看不到 OKR / 安装失败怎么办
-
-## 问题
-打开 DooTask 后在应用中心看不到「OKR 管理」入口,或在「应用商店」(应用市场)点了「安装」后长时间没有反应、提示失败。
-
-## 常见原因
-- OKR 是独立插件(应用商店 app id:`okr`),主程序不内置;未装时入口不出现
-- 普通用户没有应用商店的安装权限,必须系统管理员(`userIsAdmin`)安装
-- 插件镜像约 15MB,首次拉取较慢,看起来像「卡住」实际仍在下载
-- 服务器无法访问应用商店镜像源(网络 / 防火墙 / DNS 问题)
-- 主程序版本低于 1.1.66,不满足插件要求
-
-## 解决
-1. 确认自己角色:非管理员就联系管理员安装
-2. 管理员打开「应用」→ 管理员分区「应用商店」,搜索「OKR」或「目标管理」
-3. 点击安装后,通过应用商店的安装日志查看实时进度(不要立即重试)
-4. 日志卡在拉取镜像:检查服务器到镜像源的网络连通性,确认能拉取 Docker 镜像
-5. 提示版本不兼容:先升级主程序到 > 1.1.66 再安装
-6. 安装完成但入口不出现:刷新浏览器 / 重新登录一次
-7. 安装失败可在应用商店重试,仍失败请保留日志反馈给运维
-
-## 相关
-- 插件元信息:[[okr.plugin.concept]]
-- OKR 入口:[[okr.entry.menu-map]]
-- 通用权限问题:[[role-permission.permission-denied.faq]]
diff --git a/resources/ai-kb/zh/faq/search/no-result.md b/resources/ai-kb/zh/faq/search/no-result.md
deleted file mode 100644
index b024dab60..000000000
--- a/resources/ai-kb/zh/faq/search/no-result.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-id: search.no-result.faq
-title: 搜不到或结果不全
-type: faq
-feature: search
-scope: end-user
-locale: zh
-aliases:
- - 搜不到
- - 搜索没结果
- - 搜索结果不全
- - 为什么搜不到
- - 搜不到文件内容
- - 搜不到群消息
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 全局搜索不会显示「不属于你」的对象,即使关键词完全匹配
- - 不会自动跨用户搜索别人的私聊或文件
-last_verified: v1.7.90
----
-
-# 搜不到或结果不全
-
-## 问题
-全局搜索输入关键词后没有结果,或者结果数量明显少于实际存在的对象。
-
-## 原因
-按出现频率从高到低:
-1. **权限范围限制**:所有搜索只返回当前用户能访问的对象(详见各子接口),无权对象不会出现
-2. **对象处于不可见状态**:已归档项目、已归档 / 已删除任务、已禁用用户、机器人账号都会被过滤
-3. **未装 Manticore 插件**:MySQL 回退只匹配字面关键词,且文件正文 / 任务描述里的关键词搜不到(见 [[search.engine.concept]])
-4. **正文未被索引**:装了 Manticore,但文件超过大小阈值(Office > 50MB / 文本 > 5MB / 其他 > 20MB)或类型不支持
-5. **达到单次返回上限**:默认返回 20 条,最多 50 条,匹配项更多时会被截断
-6. **关键词大小写 / 全半角差异**:MySQL 回退对全 / 半角和大小写敏感度有限
-
-## 解决
-1. 确认当前账号是否在对应项目 / 对话的成员列表
-2. 在搜索框切换分类标签(任务 / 项目 / 消息 / 联系人 / 文件),看是否被聚合截断了
-3. 如果是搜不到文件正文:联系管理员安装 search 插件([[search.engine.concept]])
-4. 如果是搜归档对象:先到对应模块解归档,再搜
-5. 增加 `take` 参数到 50(接口调用方)
-6. 用更准确的关键词或换一种说法
-
-## 相关
-- 引擎差异:[[search.engine.concept]]
-- 入口与快捷键:[[search.entry.menu-map]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/close.md b/resources/ai-kb/zh/howto/ai-assistant/close.md
deleted file mode 100644
index dbf68280e..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/close.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-id: ai-assistant.close.howto
-title: 关闭 AI 助手浮窗
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - 关闭 AI
- - 退出 AI 助手
- - AI 浮窗关掉
- - 关 AI 弹窗
- - 取消 AI 对话
-related_tools: []
-related_pages: []
-prerequisites:
- - AI 助手浮窗已打开
-negative:
- - 关闭只是隐藏弹窗 + 终止活跃 SSE 流,不会删除当前会话
- - 桌面端关闭后短时间内浮窗不会自动弹回,需再点浮按钮 / 快捷键
- - 移动端没有 Esc 键关闭
-last_verified: v1.7.90
----
-
-# 关闭 AI 助手浮窗
-
-## 入口
-
-### 桌面端 chat 浮窗
-- 浮窗**右上角「×」**关闭按钮
-- 键盘 `Esc`(仅 chat displayMode 生效)
-- chat 浮窗无遮罩,点击外侧不会关闭
-
-### 桌面端 modal 模态(业务嵌入入口)
-- 弹窗**右上角「×」**或顶部关闭图标
-- 遮罩点击:默认**不**关闭(`mask-closable: false`)
-- 键盘 `Esc`:modal 模式当前实现下不响应
-
-### 移动端
-- 浮窗**右上角「×」**(`Icon type="ios-close"`)
-- 浮窗顶部下拉「关闭」
-- 无键盘快捷键
-
-## 关闭时发生了什么
-1. `showModal = false`
-2. 触发 `aiAssistantClosed` 事件
-3. **不会**自动清理当前会话(保留在内存 + 已持久化的留在数据库)
-4. 活跃的 SSE 流被同会话切换 / 新提问触发的清理逻辑回收
-5. 浮按钮重新显示(关闭时浮按钮被 `!this.$parent?.showModal` 条件隐藏)
-
-## 关闭后下次打开
-- 当前会话和模型选择都保留
-- 输入框内容**不**保留(关闭即清空)
-- 待发送的图片也会清空(`clearPendingImages`)
-
-## 完全隐藏 AI 助手
-- 关闭浮窗只是临时隐藏,**浮按钮**仍在屏幕边缘
-- 完全去掉浮按钮需管理员卸载 ai 插件或关闭 AI 模型
-- 详见 [[ai-assistant.disabled.faq]]
-
-## 不支持
-- 不支持「最小化为小球」(关掉就是关掉,再开是新一次打开)
-- 不支持「关闭并清空当前会话」一键操作(手动删除:[[ai-assistant.session-delete.howto]])
-- 不支持点击浮窗外区域自动关闭
-
-## 相关
-- [[ai-assistant.entry.howto]]
-- [[ai-assistant.stop.howto]]
-- [[ai-assistant.float-button.concept]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/create-task.md b/resources/ai-kb/zh/howto/ai-assistant/create-task.md
deleted file mode 100644
index 3261ddb0b..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/create-task.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-id: ai-assistant.create-task.howto
-title: 让 AI 帮我创建任务
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 建任务
- - AI 加 todo
- - AI 新建待办
- - 让 AI 创建一个任务
- - AI 帮我下任务
- - 给小王分个任务
-related_tools: [create_task]
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 应用市场已安装 mcp_server 插件
- - 当前用户在目标项目中是成员或负责人
-negative:
- - 不能在不是自己项目的位置建任务(会提示无权限)
- - AI 不会未经确认直接建复杂任务,长字段一般会先复述再创建
- - 创建后任务的 ID/URL 会返回,可让 AI 继续打开它
-last_verified: v1.7.90
----
-
-# 让 AI 帮我创建任务
-
-## 这是什么
-在 AI 浮窗自然语言描述要建的任务,AI 会调 `create_task` 工具在目标项目下新建一条任务,自动解析负责人、截止时间、优先级、所属列。
-
-## 怎么问
-一次性把关键信息说全,AI 解析准确率最高:
-
-- "在『官网改版』项目建一个任务:周五前完成首页banner切图,分给小王"
-- "建个明天 18 点截止的紧急任务:上线前回归测试,我负责"
-- "项目X里加一条任务『写 PRD』,无负责人无截止时间"
-
-## AI 通常会确认
-- 模糊的项目名 → 先调 `list_projects` 让你选
-- 模糊的"小王" → 调 `search_users` 列同名用户让你确认
-- 没说截止时间 → 直接不设置(不会乱猜)
-- 没说负责人 → 默认建未分配,可后续追加
-
-## 创建后能继续做什么
-- "打开它" → 调页面工具跳详情
-- "再加 3 个子任务:前端、后端、测试" → 调 `create_sub_task`
-- "把这条同步到 X 群" → 调 `send_message`
-
-## 不支持
-- 不能建跨项目任务(任务必须归属一个项目)
-- 不能在 AI 这步同时设置自定义字段(需打开任务详情手动改)
-- AI 不会主动给任务套已有模板,需明示「按 X 模板创建」
-
-## 相关
-- 列任务:[[ai-assistant.list-tasks.howto]]
-- 创建项目结构:[[ai-assistant.project-init.howto]]
-- 子任务建议:[[ai-assistant.subtask-suggest.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/element-action.md b/resources/ai-kb/zh/howto/ai-assistant/element-action.md
deleted file mode 100644
index 7b4e8274e..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/element-action.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-id: ai-assistant.element-action.howto
-title: 让 AI 操作页面元素
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 点按钮
- - AI 帮我输入
- - AI 选下拉
- - AI 滚动页面
- - AI 自动填表
- - AI 点击 X
-related_tools: []
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 应用市场已安装 mcp_server 插件
- - 当前页面已加载完成
-negative:
- - 元素必须可见且未被遮挡才能点击,被滚出视野时需先 scroll
- - 不能模拟键盘组合键(如 Cmd+S)、不能拖拽
- - AI 找不到匹配元素时会道歉并要求换种描述,不会盲点
-last_verified: v1.7.90
----
-
-# 让 AI 操作页面元素
-
-## 这是什么
-让 AI 助手在你当前页面上直接操作具体元素,包括点击按钮、输入文本、选下拉项、聚焦、滚动、悬停。常用于完成详细表单或触发某个隐藏在多级菜单里的功能。操作由 AI 助手在你的浏览器/桌面端页面上执行。打开了微应用插件(同源)时,这些操作会默认作用于最前那个微应用的内部。
-
-## 怎么问
-- "点击『保存』按钮"
-- "在标题框输入『官网首页改版』"
-- "把优先级下拉选成『高』"
-- "滚动到页面底部"
-- "悬停在第一个项目卡片上"
-
-## AI 的执行链路
-1. 先采集当前页面的可交互元素清单
-2. 用 `match_elements` 接口按描述("保存按钮"、"标题输入框")找到目标 ref
-3. 在你的页面上触发 click / type / select / focus / scroll / hover
-
-## 支持的动作
-| 动作 | 说明 |
-|---|---|
-| click | 触发原生 click 事件 |
-| type | 设置 input / textarea / contentEditable 的值并触发 input/change 事件 |
-| select | 原生 select 或 iView 下拉,按选项文本匹配 |
-| focus | 聚焦元素 |
-| scroll | 平滑滚动到屏幕中央 |
-| hover | 模拟 mouseenter/mouseover |
-
-## 不支持的动作
-- 不能模拟键盘按键、不能模拟组合键
-- 不能拖拽元素(drag/drop)
-- 不能操作跨源(外部站点)微应用 iframe 的内部元素(同源微应用插件内部可操作)
-- 不能等到某个异步加载完成再点(无 wait 机制,需用户重新触发)
-
-## 找不到元素怎么办
-- 改用更具体的描述("右上角保存按钮"代替"保存")
-- 先让 AI 跳到元素所在页(`open_task` 等)
-- 元素在折叠面板里,先让 AI 展开
-
-## 相关
-- 跳页面 / 打开任务:[[ai-assistant.page-action.howto]]
-- match_elements 接口:[[ai-assistant.match-elements.concept]]
-- 页面上下文:[[ai-assistant.page-context-tool.concept]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/entry.md b/resources/ai-kb/zh/howto/ai-assistant/entry.md
deleted file mode 100644
index f3738c39f..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/entry.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-id: ai-assistant.entry.howto
-title: AI 助手怎么打开
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 助手在哪
- - 怎么开 AI
- - 打开 AI
- - AI 入口
- - AI 浮窗
- - 怎么用 AI
-related_tools: []
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 管理员已在系统设置「AI 模型」中配置至少一个模型的 API key
-negative:
- - AI 助手本身不是「应用中心」里的卡片(区别于审批 / 签到等),是系统级特性
- - 未安装 ai 插件时所有 AI 入口都不会显示
- - 桌面端关闭浮窗后短时间内不会自动弹回,可手动唤起
-last_verified: v1.7.90
----
-
-# AI 助手怎么打开
-
-## 全局入口(桌面端)
-
-- **浮窗按钮**:屏幕右下角的圆形 AI 图标,点击展开聊天浮窗(位置可拖动,会贴边收起成竖条)
-- **快捷键**:Cmd + I(macOS)/ Ctrl + I(Win/Linux)任意页面都能呼出
-- **顶部「+」菜单**:右上角全局「+」下拉里有「AI 助手」项(需 ai 插件已安装)
-
-## 移动端入口
-
-- **悬浮按钮**:右下角小球,长按拖动到任意位置
-- 第一次打开会自动收起到屏幕边缘,点开后可全屏对话
-
-## 业务场景嵌入入口
-
-- **项目创建**:新建项目时项目名输入框旁边有 AI 按钮,点击让 AI 帮你生成项目结构
-- **任务详情**:任务讨论区可 @AI 让它分析任务、生成子任务建议
-- **工作报告**:报告编辑器内可让 AI 基于近期任务自动生成报告草稿
-- **消息会话**:群里 @AI 让它回答问题、总结对话、翻译消息
-
-## 切换模型
-浮窗顶部下拉框选择模型;可用模型由管理员在系统设置「AI 模型」中开启。如下拉框为空,联系管理员配置。
-
-## 关闭/隐藏
-- 桌面端:浮窗右上角「×」关闭,下次点浮按钮重新打开
-- 移动端:浮窗右上角下拉「关闭」
diff --git a/resources/ai-kb/zh/howto/ai-assistant/feedback.md b/resources/ai-kb/zh/howto/ai-assistant/feedback.md
deleted file mode 100644
index d43c75668..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/feedback.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-id: ai-assistant.feedback.howto
-title: 给 AI 回答点赞或点踩
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - 点赞
- - 点踩
- - AI 回答不好怎么反馈
- - 反馈 AI 回答
- - 有帮助 没帮助
- - 复制 AI 回答
- - 取消反馈
-related_tools: []
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
-negative:
- - 反馈只针对 AI 助手浮窗里的回复,聊天对话里 @AI 机器人的消息暂不支持
- - 点踩不会让 AI 立即重新回答,需要自己追问或重新提问
-last_verified: v1.7.91
----
-
-# 给 AI 回答点赞或点踩
-
-## 这是什么
-AI 助手浮窗中,每条 AI 回复完成后下方右侧会出现「复制 / 有帮助 / 没帮助」三个图标按钮(📋/👍/👎)。复制用于把回复内容复制到剪贴板,👍/👎 用于提交反馈,帮助官方改进 AI 回答质量和帮助文档内容。
-
-## 怎么操作
-1. 在 AI 助手浮窗中提问,等待回复完成(流式输出结束后按钮才出现)
-2. 回复下方右侧点击 📋(复制)可复制该条回复正文到剪贴板(不含推理过程)
-3. 点击 👍(有帮助)或 👎(没帮助)提交反馈
-4. 按钮高亮表示已提交;再点另一个按钮可以改票,同一条回复只记最新一次
-5. 再次点击当前已高亮的按钮可取消反馈
-
-## 反馈会被怎么用
-- 反馈与该回复引用的帮助文档关联,被频繁点踩的文档会被优先修订
-- 重新打开历史会话时,之前的反馈状态会保留显示
-
-## 不支持
-- 不支持填写文字原因,只有 👍/👎 两档
-
-## 相关
-- AI 查帮助文档:[[ai-assistant.search-help-docs.howto]]
-- 会话保存:[[ai-assistant.session-save.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/float-button.md b/resources/ai-kb/zh/howto/ai-assistant/float-button.md
deleted file mode 100644
index 13346fb42..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/float-button.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-id: ai-assistant.float-button.howto
-title: 移动 / 收起 AI 助手浮按钮
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - 怎么移动 AI 按钮
- - AI 球怎么挪
- - AI 浮窗按钮位置
- - AI 按钮挡住了
- - 浮按钮跑哪去了
- - 怎么收起 AI 按钮
-related_tools: []
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
-negative:
- - 浮按钮无法完全关闭按钮本身(除非卸载 ai 插件或管理员关闭模型)
- - 收起后不会自己消失,仍是屏幕边缘一根 48px 高的竖条
- - 多端位置不同步:桌面 / 移动 / 桌面 Electron 各自独立存储
-last_verified: v1.7.90
----
-
-# 移动 / 收起 AI 助手浮按钮
-
-## 移动位置
-
-### 桌面端
-1. 鼠标按住 AI 浮按钮
-2. 拖动到任意位置(距屏幕四边至少 12px)
-3. 松开鼠标完成移动;松手后位置自动写入 IndexedDB
-
-### 移动端
-1. 单指按住 AI 浮按钮
-2. 拖动到目标位置
-3. 抬起手指完成
-
-## 收起 / 展开
-
-- **自动收起**:拖到距屏幕左 / 右边缘 ≤ 12px 时,桌面端 1 秒后自动收起为竖条;移动端首次加载即自动收起到边缘
-- **展开**:点一下收起的竖条,按钮重新弹出并打开 AI 助手浮窗
-
-## 怎么判断点击 vs 拖动
-- 移动距离 < 5px **且** 按下时间 < 200ms → 算「点击」,呼出 AI 助手
-- 否则 → 算「拖动」,只移动位置不打开对话窗
-
-## 不同分辨率
-位置只存「距某边距离」+ 「靠哪边」,换屏 / 转屏不会跑到屏外。若发现按钮丢失,刷新页面后会回到默认位置(桌面右下、移动右侧中下)。
-
-## 不支持
-- 桌面端没有「关闭浮按钮」的用户开关:要彻底关闭需管理员侧关闭 ai 插件
-- 不支持把浮按钮拖到屏幕外(会被边距 12px 强制约束)
-- 位置不跨端同步(手机和电脑各自存)
-
-## 相关
-- 浮按钮的整体行为:[[ai-assistant.float-button.concept]]
-- 进 AI 助手的其他方法:[[ai-assistant.entry.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/image-upload.md b/resources/ai-kb/zh/howto/ai-assistant/image-upload.md
deleted file mode 100644
index a99aa19e2..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/image-upload.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-id: ai-assistant.image-upload.howto
-title: 给 AI 助手发图片
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 上传图片
- - 给 AI 发截图
- - AI 拍照分析
- - 粘贴图片给 AI
- - 拖图片给 AI
- - AI 看图
-related_tools: []
-related_pages: []
-prerequisites:
- - 已选中支持视觉的模型(如 gpt-4o / claude-3.5-sonnet / gemini-1.5-pro)
-negative:
- - 单次最多 5 张,超出会拒绝
- - 仅支持图片格式(image/*),不支持 PDF / 视频
- - 图片会被前端压缩到长边 1568px JPEG,原图不保留
- - 非视觉模型即使选了也会被上游报错或忽略图片
-last_verified: v1.7.90
----
-
-# 给 AI 助手发图片
-
-## 三种上传方式
-
-### 1. 点击图片按钮
-1. 打开 AI 助手浮窗
-2. 浮窗底部输入区**左侧**有图片图标
-3. 点击 → 弹系统文件选择器
-4. 选 1-5 张图片 → 确定
-
-### 2. 拖放
-1. 把图片从桌面或文件管理器拖到 AI 浮窗
-2. 浮窗内部出现「松开以上传图片」遮罩
-3. 在遮罩内松开鼠标完成上传
-
-### 3. 粘贴(Ctrl/Cmd + V)
-1. 截图(Mac Cmd+Shift+4、Win Snipping Tool 等)
-2. 焦点放在 AI 输入框
-3. 按 Ctrl/Cmd + V,剪贴板的图片直接进入预览区
-
-## 数量与压缩规则
-- 最多 5 张并存;超出 toast「最多上传 5 张图片」
-- 自动压缩:长边 ≤ 1568px、统一转 JPEG
-- 节省 token:上游按图片像素 / 大小计费
-
-## 预览与移除
-- 上传后缩略图出现在输入框上方
-- 点缩略图右上角「×」单张移除
-- 发送后图片自动从「待发送」区清空
-
-## 发送行为
-- 文本 + 图片**同时**作为多模态 content 发送
-- 历史会话里图片用占位符 `[image:imageId]` 存到 `data`,实际 base64 入 `images`
-- 再次打开历史会话通过 `serverImageMap` 拿 URL 渲染
-
-## 不支持
-- 不支持视频 / PDF / 音频
-- 不支持把图片拖到收起的浮按钮上(先展开浮窗)
-- 不支持「不压缩直发」开关
-
-## 相关
-- [[ai-assistant.multimodal.concept]]
-- [[ai-assistant.model-switch.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/intelligent-search.md b/resources/ai-kb/zh/howto/ai-assistant/intelligent-search.md
deleted file mode 100644
index f582c2087..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/intelligent-search.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-id: ai-assistant.intelligent-search.howto
-title: 让 AI 做智能搜索
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - 智能搜索
- - AI 搜一下
- - 全站搜索
- - 找一下 X
- - 不知道在哪
- - 跨模块搜索
-related_tools: [intelligent_search]
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 应用市场已安装 mcp_server 插件
-negative:
- - 只搜当前用户有权访问的内容
- - 默认结果上限 20 条,按相关度排序
- - 不返回系统设置 / 插件配置等管理项
-last_verified: v1.7.90
----
-
-# 让 AI 做智能搜索
-
-## 这是什么
-当你不确定要找的东西是任务、项目、文件还是人时,让 AI 调 `intelligent_search` 工具做跨类型语义搜索,结果合并任务 / 项目 / 文件 / 联系人 / 消息五大类,按相关度统一排序。
-
-## 怎么问
-- "搜一下『官网改版』有关的所有东西"
-- "找下『年终报告』,不管是什么类型"
-- "凡是提到上线日期的内容"
-- "我想找昨天讨论的接口设计,记不清是文件还是消息"
-
-## 与按类型搜的区别
-- **按类型搜**(如 `search_files` / `list_tasks`):你已经知道是文件 / 任务,能给出精确筛选
-- **智能搜索**:你只有一个关键词,让 AI 跨类型匹配,相关度排序
-
-## 结果通常长什么样
-分组返回:
-
-- 任务(前 N 条)
-- 项目(前 N 条)
-- 文件(前 N 条)
-- 联系人(前 N 条)
-- 消息(前 N 条)
-
-每项含标题、摘要、跳转链接,便于继续操作(打开 / 重新讨论 / 转发)。
-
-## 不支持
-- 不能跨工作空间 / 跨租户搜索
-- 不返回敏感字段(密码、邮箱手机号正文不会出现在摘要)
-- 不能精确按数值范围筛(如"金额 > 1000"),需用具体业务工具
-
-## 相关
-- 知识库检索:[[ai-assistant.search-help-docs.howto]]
-- 找文件:[[ai-assistant.search-files.howto]]
-- 找任务:[[ai-assistant.list-tasks.howto]]
-- 找人:[[ai-assistant.search-users.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/list-tasks.md b/resources/ai-kb/zh/howto/ai-assistant/list-tasks.md
deleted file mode 100644
index 91a33705b..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/list-tasks.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-id: ai-assistant.list-tasks.howto
-title: 让 AI 列我的任务
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - 我今天有什么任务
- - 帮我看下任务
- - 今天的待办
- - 这周要交什么
- - 列一下任务
- - 给我看待办
- - 我有哪些任务
-related_tools: [list_tasks]
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 应用市场已安装 mcp_server 插件
-negative:
- - 只能列出当前登录用户有权访问的任务(项目成员或负责人/协作者/可见用户)
- - 一次最多返回 100 条,超出请追加筛选条件
- - 不能列别人的私有任务(即便是同部门)
-last_verified: v1.7.90
----
-
-# 让 AI 列我的任务
-
-## 这是什么
-在 AI 浮窗用自然语言问任务列表,AI 会调 `list_tasks` 工具检索后端,按你说的条件筛选并返回结果摘要。结果通常含任务名、负责人、截止时间、所属项目。
-
-## 怎么问
-按你想筛的条件直接说:
-
-- "我今天到期的任务"
-- "本周要交的任务"
-- "项目 X 里我负责的进行中任务"
-- "已逾期未完成的任务"
-- "上个月完成的任务"
-- "标记了高优先级且没人负责的任务"
-
-## AI 通常会问回的信息
-模糊提问时,AI 可能反问以缩小范围:
-
-- 时间范围(今天/本周/本月/自定义)
-- 状态(未开始/进行中/已完成/已逾期)
-- 项目限定
-- 负责人是不是你
-
-## 后续动作
-列出任务后可以接续操作,无需重复说"在 X 项目":
-
-- "把第 2 条标完成" → 调 `complete_task`
-- "打开第一条" → AI 在你的页面上跳到任务详情
-- "给小王再加一条子任务" → 调 `create_sub_task`
-
-## 不支持
-- 不支持跨用户查询别人的任务列表
-- 模糊筛选「重要的」「紧急的」不保证命中:依赖任务已设置对应优先级/标签字段
-- 不返回已删除任务(除非显式说"被删的任务")
-
-## 相关
-- 创建任务:[[ai-assistant.create-task.howto]]
-- 子任务建议:[[ai-assistant.subtask-suggest.howto]]
-- 打开任务详情:[[ai-assistant.page-action.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/model-switch.md b/resources/ai-kb/zh/howto/ai-assistant/model-switch.md
deleted file mode 100644
index 0c27b93ae..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/model-switch.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-id: ai-assistant.model-switch.howto
-title: 切换 AI 助手使用的模型
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - 怎么换 AI 模型
- - 切换模型
- - 用 GPT 还是 Claude
- - 改用别的 AI
- - 模型下拉
-related_tools: []
-related_pages: []
-prerequisites:
- - AI 助手浮窗已打开
- - 管理员配置了 ≥ 1 个模型
-negative:
- - 切换模型不会重置当前会话历史,会带着已有 context 直接换模型续聊
- - 切模型不会回放之前的回答(不重生成已有的 message)
- - 不支持把同一个问题同时发到两个模型做对比
-last_verified: v1.7.90
----
-
-# 切换 AI 助手使用的模型
-
-## 入口
-- 打开 AI 助手浮窗(点浮按钮 / Cmd+I / Ctrl+I)
-- 浮窗**底部输入区**有一个「模型下拉框」,左侧位置
-- 下拉按服务商分组,如 ChatGPT / Claude / DeepSeek 等
-
-## 操作步骤
-1. 在浮窗底部点击模型选择下拉框
-2. 在分组列表中选目标模型(如 `Claude → claude-3.5-sonnet`)
-3. 选中后立即生效,下一次发送就用新模型
-
-## 选项排序逻辑
-- 服务商按 `openai` → `claude` → `deepseek` → `gemini` → `grok` → `ollama` → `zhipu` → `qianwen` → `wenxin` 固定顺序
-- 每个服务商分组最多显示 5 个候选 + 1 个管理员设置的默认模型(如不在前 5 内会追加)
-- 不在 `AIBotMap` 的自定义服务商按字母序排在最后
-
-## 自动记忆
-- 切换后的选择会写入 IndexedDB key `aiAssistant.model`
-- 下次打开 AI 助手时自动恢复到上次用过的模型
-
-## 切换后的会话影响
-- 历史消息(用户问 + AI 回)保留,会作为 context 发给新模型
-- AI 不会重新回答历史问题;只对**下一次新提问**生效
-- 多模态:如果切到不支持图片的模型,未来发图会失败(但已有图片预览仍可看)
-
-## 不支持
-- 不支持切换后清空历史(要清空需手动新建会话:[[ai-assistant.new-chat.howto]])
-- 不支持「这条回答用模型 A,下一条用模型 B」的单轮指定
-- 不支持下拉为空时自动 fallback(下拉空时直接禁用发送,详见 [[ai-assistant.model-empty.faq]])
-
-## 相关
-- 模型概念与服务商列表:[[ai-assistant.model.concept]]
-- 下拉为空:[[ai-assistant.model-empty.faq]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/new-chat.md b/resources/ai-kb/zh/howto/ai-assistant/new-chat.md
deleted file mode 100644
index ffd59e24f..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/new-chat.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-id: ai-assistant.new-chat.howto
-title: 新建一个 AI 助手会话
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - 新建 AI 会话
- - 重新开始 AI
- - 开一段新对话
- - 清空当前对话
- - 不要带上下文
- - AI 重新聊
-related_tools: []
-related_pages: []
-prerequisites:
- - AI 助手浮窗已打开
-negative:
- - 新建会话不会删除旧会话,只是把旧会话归档到历史列表
- - 新建会话只清空输出区与上下文,不影响模型选择 / 浮按钮位置
- - 嵌入入口的「新建」按钮不出现在浮窗,由各业务入口控制
-last_verified: v1.7.90
----
-
-# 新建一个 AI 助手会话
-
-## 何时需要新建
-- 想换话题,又不希望 AI 受当前会话历史影响
-- 当前会话上下文太长,回答变慢或质量下降
-- 不想让接下来的提问污染历史
-
-## 入口
-1. 打开 AI 助手浮窗
-2. 浮窗**右上角操作区**有一个「新建会话」图标
-3. 仅当 `sessionEnabled = true` **且**(当前会话有消息 **或** 历史列表非空)时显示
-
-## 行为
-点击「新建会话」按钮:
-1. 当前会话**自动保存**到历史列表(标题取首条提问前 20 字)
-2. 生成新 `session_id`(格式 `session-{时间戳}-{随机串}`)
-3. 清空 `responses`,页面输出区清空
-4. 上下文 context 归零,下一次提问只发当前消息 + 默认 system prompt
-5. 当前模型选择保留
-
-## 不会影响什么
-- 模型下拉的当前选择
-- 浮按钮位置 / 收起状态
-- 历史会话列表(仅多一条)
-- 图片缓存(已发送过的图片仍可被历史引用)
-
-## 其他「新建」的等价路径
-- **删除当前会话**:不想留底就直接删除当前会话,会自动建一个空会话进入(见 [[ai-assistant.session-delete.howto]])
-- **切到其他历史会话**:会切走当前会话,但当前会话仍保留在历史里
-
-## 不支持
-- 不支持「新建会话同时换模型」(先切模型再新建)
-- 不支持「新建空会话但保留前一轮上下文」
-- 不支持指定新会话标题(永远自动生成)
-
-## 相关
-- [[ai-assistant.session.concept]]
-- [[ai-assistant.session-list.howto]]
-- [[ai-assistant.session-save.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/page-action.md b/resources/ai-kb/zh/howto/ai-assistant/page-action.md
deleted file mode 100644
index 98103045f..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/page-action.md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-id: ai-assistant.page-action.howto
-title: 让 AI 帮我跳页面/打开任务
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 打开任务
- - AI 切换项目
- - AI 跳到仪表盘
- - 让 AI 帮我开 X
- - AI 跳转
- - AI 帮我打开
-related_tools: []
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 应用市场已安装 mcp_server 插件
- - 浏览器/桌面端会话所在页面已加载
-negative:
- - 只在当前浏览器标签内导航,不会新开标签
- - AI 不能打开你没权限访问的资源(会被后端拒绝)
- - 若任务被删,AI 跳转后会落到 404 / 提示「任务不存在」
-last_verified: v1.7.91
----
-
-# 让 AI 帮我跳页面/打开任务
-
-## 这是什么
-在 AI 浮窗用自然语言让 AI 把当前页跳转到任务详情、对话、项目、文件预览或功能页。AI 助手会在你当前的浏览器/桌面端页面上执行真实路由跳转。
-
-## 怎么问
-- "打开任务 1234"
-- "切到项目『官网改版』"
-- "打开和小王的对话"
-- "帮我打开仪表盘"
-- "跳到日历"
-- "打开文件 ID 5678"
-- "关闭这个应用" / "把当前应用关掉"(打开微应用插件后,可让 AI 直接关闭当前应用窗口,无需自己点关闭按钮)
-
-## 支持的跳转目标
-- 任务详情(open_task / goto_task / navigate_to_task)
-- 对话(open_dialog,可附带 msg_id 跳到指定消息)
-- 项目主页(open_project)
-- 文件预览(open_file)/ 文件夹(open_folder)
-- 功能页:仪表盘 / 消息 / 日历 / 文件管理
-
-## AI 怎么找到目标
-- 你给 ID 时直接跳
-- 你给名字时 AI 会先调 `list_tasks` / `search_dialogs` / `list_projects` / `search_files` 找候选
-- 同名多选时列候选让你确认
-
-## 跳转后还能继续
-跳到目标页后,浮窗保持打开,可继续:
-
-- "把它标完成" → 调 `complete_task`
-- "看下讨论" → 调 `get_message_list`
-- "拉到底部" → AI 在你的页面上滚动到底部
-
-## 不支持
-- 不能跳到外部网址(如 google.com)
-- 不能在新标签打开
-- 不能切换到其他用户的视图
-
-## 相关
-- 操作页面元素:[[ai-assistant.element-action.howto]]
-- 页面操作机制:[[ai-assistant.page-action.concept]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/project-init.md b/resources/ai-kb/zh/howto/ai-assistant/project-init.md
deleted file mode 100644
index 5efc870a1..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/project-init.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-id: ai-assistant.project-init.howto
-title: 让 AI 生成项目结构
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 建项目
- - AI 生成项目模板
- - 项目结构 AI
- - AI 帮我搭项目
- - 新项目让 AI 写
- - 创建项目时的 AI 按钮
-related_tools: [create_project, create_task]
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 管理员已开启至少一个支持 tool call 的模型
-negative:
- - 仅生成项目骨架(列 + 初始任务),不生成成员/权限设置
- - 一次最多生成 5 个列 + 每列 6 条任务,超出请二次追加
- - 不会自动创建已存在同名项目(会提示重命名)
-last_verified: v1.7.90
----
-
-# 让 AI 生成项目结构
-
-## 这是什么
-在「创建项目」弹窗里,项目名输入框右侧有 AI 按钮(仅 ai 插件已装且模型已配置时显示)。点击后描述项目目标,AI 会调 `create_project` 创建项目,再用 `create_task` 批量写入推荐的列和初始任务。
-
-## 入口
-- 桌面端:右上角全局「+」→「创建项目」→ 项目名输入框右侧 AI 图标
-- 桌面端:左侧栏「项目」→「+」→「创建项目」→ 同上
-- 移动端:「+」→「创建项目」→ AI 按钮
-
-## 操作步骤
-1. 打开创建项目弹窗,点项目名旁 AI 按钮
-2. 输入项目描述(如"3 个月官网改版,含 UI/前端/后端")
-3. AI 生成项目名 + 列结构 + 每列初始任务预览
-4. 点「采用并创建」批量建
-
-## AI 输出示例
-- **项目名**:官网改版 2026Q1
-- **列**:待办 / 设计中 / 开发中 / 测试中 / 已完成
-- **任务**:每列 3-6 条按角色分组
-
-## 后续动作
-项目创建完成后可继续:
-
-- "把这些任务都分给小王" → 调 `update_task` 批量改负责人
-- "再加一个『设计评审』列" → 调列管理工具
-- "把项目讨论组拉一下" → AI 暂不能自动建群
-
-## 不支持
-- 不能基于其他项目复制(要复制项目请用模板功能)
-- AI 不会自动设置任务截止时间,需后续追加
-- 创建后想撤销只能手动删项目(无 undo)
-
-## 相关
-- 浮窗里建单个任务:[[ai-assistant.create-task.howto]]
-- 入口总览:[[ai-assistant.entry.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/report-draft.md b/resources/ai-kb/zh/howto/ai-assistant/report-draft.md
deleted file mode 100644
index d44fb8ed9..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/report-draft.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-id: ai-assistant.report-draft.howto
-title: 用 AI 助手整理工作报告
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 写周报
- - AI 生成日报
- - 周报模板 AI
- - AI 帮我写报告
- - 工作总结 AI
- - AI 整理汇报怎么用
-related_tools: [generate_report_template]
-related_pages: []
-prerequisites:
- - 应用商店(应用市场)已安装 ai 插件
- - 管理员已配置至少一个可用 AI 模型
-negative:
- - AI 做的是「整理润色」,不是从零代写:汇报内容为空时按钮会提示「请先填写汇报内容」
- - 整理结果是草稿,需用户人工审阅、修改、手动提交(不自动发送)
- - 数据来源是周期内的任务记录,不读群聊
-last_verified: v1.7.90
----
-
-# 用 AI 助手整理工作报告
-
-## 这是什么
-写工作报告(日报 / 周报)时,可以让 AI 助手基于已填写的汇报内容做整理和润色。新建报告时系统已按你周期内的任务(已完成 / 未完成)自动生成内容初稿,AI 在此基础上加工,不会替你从零编造。
-
-## 入口
-桌面端:工作报告编辑页(「应用」→「工作报告」→ 写报告)底部,「提交」按钮旁的「**AI 整理汇报**」按钮。
-
-## 操作步骤
-1. 进入报告编辑页,选择类型(日报 / 周报),系统自动按任务生成汇报内容初稿
-2. 先补充 / 修改汇报内容(内容为空时点按钮会提示「请先填写汇报内容」)
-3. 点「AI 整理汇报」,弹出 AI 助手浮窗,可输入想强调的重点或特殊说明
-4. AI 在已填内容基础上整理、润色、生成总结
-5. 把整理结果应用回编辑器,人工检查后点「提交」
-
-## 让结果更贴合需求
-在浮窗里补充说明,例如:
-
-- "重点写官网改版项目,其他一笔带过"
-- "口语化一点 / 更正式一点"
-- "用英文写"
-
-## 不支持
-- 不会自动提交(始终需要人工点提交)
-- 不会跨用户整理(只能处理自己的报告)
-- 汇报内容为空时不能直接生成,必须先填写内容
-
-## 相关
-- 报告编辑页按钮详情:[[report.ai-generate.howto]]
-- 总结任务:[[ai-assistant.task-summary.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/search-files.md b/resources/ai-kb/zh/howto/ai-assistant/search-files.md
deleted file mode 100644
index a4dc081fb..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/search-files.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-id: ai-assistant.search-files.howto
-title: 让 AI 帮我找文件
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 找文件
- - 帮我找文档
- - AI 查文件
- - 我上传过的 X 文件
- - 找上次那个表
- - 谁分享过 X
-related_tools: [search_files]
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 应用市场已安装 mcp_server 插件
-negative:
- - 仅搜当前用户可见的文件(自己上传的 + 项目共享的 + 群里共享的)
- - 不能搜本地未上传到 DooTask 的文件
- - 文件内容搜索仅对支持解析的格式有效(txt/md/docx/pdf/xlsx 等)
-last_verified: v1.7.90
----
-
-# 让 AI 帮我找文件
-
-## 这是什么
-在 AI 浮窗描述要找的文件,AI 调 `search_files` 工具按文件名 / 内容关键词 / 创建人 / 时间检索,返回文件名、路径、所有者、修改时间,常带跳转链接。
-
-## 怎么问
-- "找一下我上周上传的 PRD 文档"
-- "搜叫『2026 年规划』的 Excel"
-- "项目 X 里所有 .pdf"
-- "小王最近共享给我的文件"
-- "包含『接口文档』关键字的文件"
-
-## 内容搜索 vs 文件名搜索
-- 提问含"文件名"、"叫…"时按文件名匹配
-- 提问含"包含…"、"提到…"、"关于…"时按内容关键词匹配(需后端文件内容索引可用)
-
-## 找到文件能继续做什么
-- "打开第一个" → AI 在你的页面上跳到文件预览
-- "下载它" → AI 会给下载链接(无法直接触发浏览器下载)
-- "把摘要发我" → 调 `fetch_file_content` 取文本,再让模型总结
-
-## 不支持
-- 不支持搜历史版本/已删除文件(默认过滤)
-- 加密文件(如带密码 PDF)的内容索引可能为空,只能文件名匹配
-- 不能跨用户搜别人不共享给你的文件
-
-## 相关
-- 取文件文字内容:`fetch_file_content`(暂未单独 chunk)
-- 跨类型语义搜索:[[ai-assistant.intelligent-search.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/search-help-docs.md b/resources/ai-kb/zh/howto/ai-assistant/search-help-docs.md
deleted file mode 100644
index 61042fc12..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/search-help-docs.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-id: ai-assistant.search-help-docs.howto
-title: AI 帮我查 DooTask 怎么用
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - 怎么用 DooTask
- - X 在哪
- - X 怎么操作
- - 帮我查文档
- - DooTask 怎么做 X
- - 找帮助
-related_tools: [search_help_docs]
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
-negative:
- - 知识库只覆盖 DooTask 自身功能,不回答行业知识或通用 IT 问题
- - 中英文知识库分别检索,所选会话语种决定查哪边
- - 没找到资料时 AI 会明示「未在知识库找到」而不是编造
-last_verified: v1.7.90
----
-
-# AI 帮我查 DooTask 怎么用
-
-## 这是什么
-当你在 AI 浮窗里问 DooTask 功能怎么用,例如"任务怎么设置可见用户"、"报告模板在哪改",AI 会自动触发 `search_help_docs` 工具,从内置知识库(本仓库)检索相关 chunk,再综合给出步骤。
-
-## 怎么触发
-直接用自然语言提问,无需特殊指令:
-
-- "如何创建项目?"
-- "权限不足提示怎么解决?"
-- "看板列怎么加?"
-- "微应用是什么?"
-- "签到怎么补打?"
-
-## 看 AI 调用了哪些资料
-- 浮窗中会出现 `search_help_docs` 工具气泡,展开可看检索关键词
-- 回答末尾通常会标注"参考自帮助文档"或附上相关功能名
-- 若回答错了,可继续追问"你查到的是哪一篇?",AI 会列出 chunk id
-
-## 让 AI 查得更准的小技巧
-- 一次只问一个具体功能,别堆三个问题
-- 出错时把错误提示原文贴上,AI 会同时去查 FAQ 类 chunk
-- 含产品名加上"DooTask"前缀(如"DooTask 的看板")能避开开放知识
-
-## 不支持
-- 不支持「教我怎么编程」「我项目用 React 怎么写」等编程问题
-- 英文知识库覆盖不全:知识库以中文为主,英文环境检索 en 库时覆盖度可能偏低
-
-## 相关
-- 入口:[[ai-assistant.entry.howto]]
-- 跨任务/项目/文件的语义搜索:[[ai-assistant.intelligent-search.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/search-users.md b/resources/ai-kb/zh/howto/ai-assistant/search-users.md
deleted file mode 100644
index 1b5d4d48c..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/search-users.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-id: ai-assistant.search-users.howto
-title: 让 AI 帮我找人
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 找人
- - AI 查同事
- - 帮我找小王
- - 找联系人
- - 找用户
- - 谁是 X 部门负责人
-related_tools: [search_users]
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 应用市场已安装 mcp_server 插件
-negative:
- - 搜索范围受当前用户可见性限制,不能搜到组织外的人
- - 同名用户会一并列出,需用工号/部门/邮箱再筛
- - 不返回登录密码、手机号等敏感字段
-last_verified: v1.7.90
----
-
-# 让 AI 帮我找人
-
-## 这是什么
-在 AI 浮窗问人,AI 调 `search_users` 工具按关键词、项目成员或对话成员筛选,返回昵称、邮箱、部门、头像等基础信息。常用于"加任务负责人 / 拉群"前的确认。
-
-## 怎么问
-- "找一下叫小王的同事"
-- "运维部有哪些人"
-- "项目『官网改版』里都有谁"
-- "群『前端组』里的成员"
-- "邮箱含 zhang 的同事"
-
-## 同名怎么办
-AI 会列出全部同名候选,附部门/邮箱 hint,让你回复"第 2 个"或"运维部那个",再继续后续操作。
-
-## 找到人之后能做什么
-- "给他发消息:明天 10 点开会" → 调 `send_message`
-- "把他加进这个项目任务的负责人" → 调 `update_task`
-- "拉个群把他们都加进去" → 仍需人工操作建群(AI 不能自动建群)
-
-## 限制范围
-默认搜全组织可见用户。可以加范围词收窄:
-
-- "项目 X 里的"
-- "对话 Y 里的"
-- "部门 Z 里的"
-
-## 不支持
-- 不能搜外部联系人(DooTask 没有公网通讯录)
-- 不能搜已离职/已禁用账号(默认过滤)
-- 不能按"今天在线的人"筛(无该字段)
-
-## 相关
-- 发消息:[[ai-assistant.send-message.howto]]
-- 创建任务时指派人:[[ai-assistant.create-task.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/send-message.md b/resources/ai-kb/zh/howto/ai-assistant/send-message.md
deleted file mode 100644
index 70f6da959..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/send-message.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-id: ai-assistant.send-message.howto
-title: 让 AI 帮我发消息
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 发消息
- - AI 发群
- - 帮我发给小王
- - AI 自动发通知
- - 让 AI 发到群里
- - AI 代发
-related_tools: [send_message]
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 应用市场已安装 mcp_server 插件
- - 当前用户与目标对话/用户已存在会话或有权发起
-negative:
- - 发送动作以当前登录用户名义执行,对方看到的是你发的(不是「AI 代发」标签)
- - AI 不会未经确认直接发,敏感/长内容会先弹消息预览让你确认
- - 不能发送已撤回/未上传完成的图片
-last_verified: v1.7.90
----
-
-# 让 AI 帮我发消息
-
-## 这是什么
-在 AI 浮窗描述要发的内容和对象,AI 会先调 `search_dialogs` 或 `search_users` 找到目标对话,再调 `send_message` 把消息发出去。消息以当前登录用户身份发送。
-
-## 怎么问
-- "给小王发:会议改到下午 3 点"
-- "在『前端组』群里发:今晚 8 点上线,请大家配合"
-- "把刚才那个总结发到项目讨论组"
-
-## AI 会先确认
-- **接收人/群歧义**:同名时列候选让你挑
-- **长消息**:超过 200 字会先在浮窗里贴出预览,等你说「确认发」
-- **跨群广播**:一次发多群通常会拆成多次确认
-
-## 发送结果
-发送成功后浮窗会显示消息 ID + 时间戳;如果对方禁言/不在好友列表/对话不存在,会回失败原因。
-
-## 后续动作
-- "撤回刚才那条" → 调 `update_message` 或 `delete_message`(依实现)
-- "看下回复" → 调 `get_message_list`
-- "发完顺便建个任务跟进" → 调 `create_task`
-
-## 不支持
-- 不能发语音/视频通话邀请
-- 不能定时发送(无 schedule 工具)
-- 不能伪装其他用户发送
-- AI 不会自动把"@小王"翻成用户 mention,需要明确说"@用户 ID"
-
-## 相关
-- 找人:[[ai-assistant.search-users.howto]]
-- 任务讨论区 @AI:[[ai-assistant.task-mention.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/session-delete.md b/resources/ai-kb/zh/howto/ai-assistant/session-delete.md
deleted file mode 100644
index f1be7c09f..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/session-delete.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-id: ai-assistant.session-delete.howto
-title: 删除 AI 助手历史会话
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - 删除 AI 历史
- - 清空 AI 对话
- - 删除 AI 会话
- - AI 历史不要了
- - 删除 AI 聊天记录
-related_tools: []
-related_pages: []
-prerequisites:
- - 当前桶有 ≥ 1 条会话
-negative:
- - 删除不可恢复,相关图片也会从 public/uploads 物理删除
- - 删除单条无二次确认;清空全部有确认弹窗
- - 删除当前桶不会影响其他桶
-last_verified: v1.7.90
----
-
-# 删除 AI 助手历史会话
-
-## 入口
-1. 打开 AI 助手浮窗
-2. 浮窗右上角点「历史」图标展开下拉
-
-## 删除单条
-1. 鼠标移到目标会话条目上
-2. 点条目右侧小垃圾桶图标
-3. **立即删除**(无确认):
- - 后端调 `POST api/assistant/session/delete`,参数 `{session_key, session_id}`
- - 服务端删除会话记录及对应 `public/uploads/assistant/YYYYMM/{userid}/` 图片
- - 如果删的是当前打开的会话,自动新建一个空会话替代
-
-## 清空整个桶(全部历史)
-1. 历史下拉最底部「清空历史记录」
-2. 弹出确认弹窗 → 「确定」
-3. 执行:
- - 调 `POST api/assistant/session/delete`,参数 `{session_key, clear_all: true}`
- - 后端清空当前桶所有会话 + 物理删除所有图片
- - 前端清空内存 `imageCache` 和 `serverImageMap`
- - 自动新建一个空会话进入
-
-## 不影响其他桶
-- 浮窗用 `session_key = global`,清空只删 `global` 桶
-- 嵌入入口(`project-create`、`task-add` 等)的会话**不受影响**
-
-## 误删可恢复吗?
-**不能。** 删除即写库 `DELETE`,物理删除关联图片,**无回收站、无 30 天保留**。要保留的对话请提前复制到笔记。
-
-## 不支持
-- 不支持选择多条批量删除(只能单删或清空全部)
-- 不支持「软删除 / 30 天回收」
-- 不支持按时间范围筛选删除
-
-## 相关
-- [[ai-assistant.session-list.howto]]
-- [[ai-assistant.session.concept]]
-- [[ai-assistant.new-chat.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/session-list.md b/resources/ai-kb/zh/howto/ai-assistant/session-list.md
deleted file mode 100644
index 36719b325..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/session-list.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-id: ai-assistant.session-list.howto
-title: 查看 AI 助手历史会话
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 历史会话
- - 我之前问过 AI 什么
- - 找回 AI 对话
- - AI 聊天记录
- - 看 AI 历史
-related_tools: []
-related_pages: []
-prerequisites:
- - 当前桶至少有 1 条已保存的会话
-negative:
- - 历史只显示当前用户、当前桶的会话
- - 嵌入入口的会话不出现在浮窗历史里
- - 历史按更新时间倒序,最近的在上面
-last_verified: v1.7.90
----
-
-# 查看 AI 助手历史会话
-
-## 入口
-1. 打开 AI 助手浮窗
-2. 浮窗**右上角操作区**有「历史」图标
-3. 点击展开下拉,列出当前桶内所有已保存会话
-
-仅当桶内有 ≥ 1 条会话时该图标才出现。
-
-## 显示内容
-每条会话显示三行:
-- 标题:取首条用户消息前 20 字
-- 删除按钮(右上角小垃圾桶)
-- 更新时间:今天 / 昨天 / MM-DD HH:mm / YYYY-MM-DD HH:mm
-
-排序:按更新时间倒序,最近聊的在最上面。
-
-## 操作步骤
-
-### 切换到某条历史会话
-1. 在历史下拉里点要打开的会话标题
-2. 当前对话内容自动保存
-3. 浮窗输出区切换为该会话的消息流
-
-### 删除单条会话
-1. 鼠标移到会话条目上
-2. 点条目右侧小垃圾桶图标
-3. 立即删除(无二次确认);同时清掉服务端会话图片
-
-### 清空全部历史
-1. 历史下拉最底部「清空历史记录」
-2. 弹出确认弹窗 → 「确定」
-3. 当前桶所有会话被删,图片缓存一并清空
-
-## 数据来源
-通过 `POST api/assistant/session/list` 拉取,按当前用户 + 当前 `session_key` 过滤。返回会话最多 20 条(受 `maxSessionsPerKey` 限制)。
-
-## 不支持
-- 不支持按关键词搜索历史
-- 不支持给会话改名(标题永远是首条提问截取)
-- 不支持把历史导出 CSV / 文本
-
-## 相关
-- [[ai-assistant.session.concept]]
-- [[ai-assistant.session-delete.howto]]
-- [[ai-assistant.new-chat.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/session-save.md b/resources/ai-kb/zh/howto/ai-assistant/session-save.md
deleted file mode 100644
index fad5295e8..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/session-save.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-id: ai-assistant.session-save.howto
-title: AI 助手会话自动保存
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 会话保存
- - AI 对话留底
- - AI 会话不保留
- - AI 没保存
- - 手动保存 AI
-related_tools: []
-related_pages: []
-prerequisites:
- - 会话管理已启用(`sessionEnabled = true`,浮窗自动开启)
-negative:
- - 没有「立即保存」按钮,全部自动;不会丢失最新一条
- - 嵌入入口未传 sessionKey 时不会启用保存(一次性对话)
- - streaming / waiting 状态会被归一为 error 再写库,避免重启卡 loading
-last_verified: v1.7.90
----
-
-# AI 助手会话自动保存
-
-## 是否需要手动保存
-**不需要。** AI 助手浮窗的会话保存全自动。以下时机触发保存:
-
-1. **流式回答完成**:AI 最后一个 chunk 到达,标记 `completed` 后立即保存
-2. **流式失败 / 用户中断**:归一未完成态为 `error` 后保存
-3. **手动新建会话 / 切换会话 / 切桶**:先保存当前会话再切换
-4. **常规编辑(删消息、编辑提问)**:2 秒防抖批量写入
-
-## 保存到哪
-- 数据库表:`ai_assistant_sessions`,按 `userid` 隔离
-- 接口:`POST api/assistant/session/save`
-- 字段:`session_key`、`session_id`、`title`、`data`(JSON 消息流)、`new_images`(新增图片 base64 列表)
-
-## 标题如何生成
-- 取首条 `role !== 'system'` 的 `prompt` 前 20 字
-- 无任何用户提问时显示「新会话」
-- 标题不可手动改
-
-## 图片同步上传
-- 保存时仅传**本次新增**的图片 base64
-- 后端写入 `public/uploads/assistant/YYYYMM/{userid}/xxx.jpg`
-- 返回 `image_urls` 映射,前端缓存到 `serverImageMap`,下次打开会话用 URL 显示
-
-## 防抖与容错
-- 普通编辑 2 秒防抖
-- 流式结束 / 失败立即写入
-- 写入失败仅 console.warn,下次保存补上
-
-## 什么时候不保存
-- 嵌入入口未传 sessionKey → 该入口走「一次性对话」,关闭后不留底
-- 当前会话内一条消息都没有 → 不创建空会话记录
-
-## 不支持
-- 不支持云端跨用户 / 跨工作区同步
-- 不支持「保存到本地文件」选项
-- 不支持暂停自动保存
-
-## 相关
-- [[ai-assistant.session.concept]]
-- [[ai-assistant.session-list.howto]]
-- [[ai-assistant.stop.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/shortcut.md b/resources/ai-kb/zh/howto/ai-assistant/shortcut.md
deleted file mode 100644
index 401d2b131..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/shortcut.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-id: ai-assistant.shortcut.howto
-title: 用快捷键呼出 AI 助手
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 助手快捷键
- - 怎么用键盘打开 AI
- - Cmd I
- - Ctrl I
- - AI 键盘打开
-related_tools: []
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
- - 管理员已配置至少一个 AI 模型
-negative:
- - 移动端没有键盘快捷键(用浮按钮 / Tabbar 入口替代)
- - 不支持自定义快捷键,固定为 Cmd+I / Ctrl+I
- - 在输入法候选状态下按 I 不会触发(不和 IME 抢键位)
-last_verified: v1.7.90
----
-
-# 用快捷键呼出 AI 助手
-
-## 快捷键
-
-| 终端 | 快捷键 | 说明 |
-|---|---|---|
-| macOS(桌面 / Web) | `Cmd + I` | 全局生效,无需点输入框 |
-| Windows / Linux(桌面 / Web) | `Ctrl + I` | 全局生效 |
-| 移动端 | — | 无键盘快捷键 |
-
-## 触发条件
-- ai 插件已安装(`microAppsIds.includes('ai')` 为 true)
-- 当前在已登录页面(路由非 `login`)
-- 按键时**未同时按 Shift 或 Alt**,否则会落入其他组合(如 Cmd+Shift+I 是浏览器开发者工具)
-
-## 行为
-按下快捷键时,等价于点击右上角全局「+」菜单里的「AI 助手」项,会:
-1. 阻止浏览器 / Electron 默认行为(如 Safari 的「显示书签栏」)
-2. 触发 `openAIAssistantGlobal` 事件
-3. 弹出 AI 助手弹窗(默认 modal 形态),自动聚焦到输入框
-
-## 不响应的场景
-- 当前页面是登录页 → 不触发
-- ai 插件未安装 → 不触发(按键被释放给浏览器)
-- 中文 / 日文输入法处于候选字状态 → 不触发
-
-## 不支持
-- 无法在「个人设置」改快捷键,键位固定
-- 不支持单独的「关闭 AI 助手」快捷键;按 Esc 仅在浮窗模式下关闭
-- 移动端长按虚拟键盘 I 不能触发(依赖物理键盘事件)
-
-## 相关
-- 完整入口清单:[[ai-assistant.entry.howto]]
-- 弹窗形态:[[ai-assistant.modal.concept]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/start-guide.md b/resources/ai-kb/zh/howto/ai-assistant/start-guide.md
deleted file mode 100644
index 04d17a6a4..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/start-guide.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-id: ai-assistant.start-guide.howto
-title: 让 AI 带我去对应页面(页面深链)
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - 带我去
- - 带我操作
- - 在哪里设置
- - 怎么去
- - 快捷跳转
-related_tools: []
-related_pages: []
-prerequisites:
- - 应用市场已安装 ai 插件
-negative:
- - 通过聊天对话 @AI 机器人暂不支持页面深链,需在 AI 助手浮窗中使用
-last_verified: v1.7.90
----
-
-# 让 AI 带我去对应页面(页面深链)
-
-## 怎么做
-1. 打开 AI 助手浮窗(右下角悬浮按钮)
-2. 问一个“在哪/怎么去”类问题,例如「在哪里设置端到端加密」「个人资料怎么改」
-3. AI 回答里把可跳转的页面/面板渲染成**蓝色链接**,点击即直达那一屏
-
-## 例子
-- 问「在哪里设置端到端加密」→ 回答里「系统设置」是蓝色链接,点它直达系统设置页
-- 问「怎么改个人资料」→ 点「个人设置」直达个人设置
-
-## 到达之后
-深链把你送到对应页面/面板,页面内的具体开关/按钮请按回答里的文字说明自己操作一下即可。
-
-## 链接没出现 / 不可点怎么办
-- 不是每个名词都会变成链接,只有命中系统已登记目的地的词才可点,其余是普通文字——可换个更明确的问法(如直接问「系统设置在哪」)
-- 若回答说“文档未说明”,多为知识库未覆盖该功能,可点踩 👎 反馈
-
-## 相关
-- 深链是什么:[[ai-assistant.guide.concept]]
-- 回答不好怎么反馈:[[ai-assistant.feedback.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/stop.md b/resources/ai-kb/zh/howto/ai-assistant/stop.md
deleted file mode 100644
index 520e99c36..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/stop.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-id: ai-assistant.stop.howto
-title: 中断 AI 助手回答
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - 停止 AI 回答
- - 让 AI 停下来
- - 取消 AI 输出
- - AI 一直在打字
- - 终止流式
- - 重发问题
-related_tools: []
-related_pages: []
-prerequisites:
- - AI 助手当前有一条流式回答正在输出
-negative:
- - 中断后的部分回答保留,但状态变为 error,不会再续传
- - 中断不向上游模型扣费返还(看服务商)
- - 不支持「暂停后再继续」,只能停 + 重新提问
-last_verified: v1.7.90
----
-
-# 中断 AI 助手回答
-
-## 何时需要中断
-- AI 跑偏,回答方向不对,想立即停下重提问
-- 模型陷入冗长输出
-- 想换个模型重发同一问题
-
-## 入口
-当 AI 正在流式输出时,主动中断方式:
-1. **新建会话**:右上角「新建会话」会先清掉当前流再开空会话(见 [[ai-assistant.new-chat.howto]])
-2. **关闭浮窗**:关闭浮窗会清理所有活跃 SSE 连接(见 [[ai-assistant.close.howto]])
-3. **发新问题**:发起新提问会自动清掉同会话的残留 SSE 流
-
-## 中断时发生了什么
-1. 前端调 SSE 客户端的 `unsunscribe()` 切断连接
-2. 已收到的部分回答(rawOutput)保留在 message
-3. 该 message 的 `status` 立即变为 `error`,附「会话中断」错误文案
-4. message 持久化到 session(带 error 状态),刷新不会再卡 loading
-
-## 流式中断恢复保护
-- 即使页面崩溃 / 刷新,加载会话时如果发现某条 message 仍是 `streaming` 或 `waiting`,会自动归一为 `error`
-- 避免「永远转圈」(见 `sanitizeResponsesForPersist`)
-
-## 重新提问
-中断后想重发同一问题:
-1. 鼠标移到刚才被中断的提问气泡
-2. 点编辑图标 → 修改后再发
-3. 或直接在输入框输入新的问题(按 ↑ 可调出最近 50 条历史输入)
-
-## 不支持
-- 不支持「暂停 → 继续」,只能停 + 重发
-- 不支持只中断单条;同会话所有进行中的流会一起停
-- 不支持中断后撤销(再次发送会生成新一条 message)
-
-## 相关
-- [[ai-assistant.streaming.concept]]
-- [[ai-assistant.close.howto]]
-- [[ai-assistant.new-chat.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/subtask-suggest.md b/resources/ai-kb/zh/howto/ai-assistant/subtask-suggest.md
deleted file mode 100644
index 94800c34c..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/subtask-suggest.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-id: ai-assistant.subtask-suggest.howto
-title: 让 AI 帮我拆子任务
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 拆任务
- - AI 建议子任务
- - 拆解任务
- - AI 帮我分解
- - 任务太大怎么拆
- - 子任务建议
-related_tools: [create_sub_task]
-related_pages: [task_detail]
-prerequisites:
- - 应用市场已安装 ai 插件
- - 应用市场已安装 mcp_server 插件
- - 当前用户能修改该任务(负责人/协作者/项目管理员)
-negative:
- - AI 建议不会自动落地,需用户在回复里点「全部创建」或逐条确认
- - 一次最多建议 10 条子任务,复杂任务可分多次
- - AI 拆分依赖任务标题 + 描述,描述过短时建议会很泛
-last_verified: v1.7.90
----
-
-# 让 AI 帮我拆子任务
-
-## 这是什么
-在任务讨论区 @AI 让它根据当前任务的标题、描述自动建议一组子任务清单,确认后通过 `create_sub_task` 工具一次性建到当前任务下。
-
-## 怎么触发
-- **任务讨论区**:@AI 说"帮我拆 5 个子任务" / "把这个任务分解成执行步骤"
-- **浮窗**:先 `open_task` 或带上任务 ID,然后说"按这个任务拆子任务"
-
-## AI 通常会返回
-1. 一组建议条目(如「需求评审 / 设计稿 / 前端开发 / 后端开发 / 联调测试 / 上线」)
-2. 每条带预估负责人角色提示
-3. 末尾问"是否一键创建"
-
-## 操作步骤
-1. 打开任务详情 → 讨论区 @AI
-2. 提示词如"按当前任务拆 5 个子任务,包括负责人建议"
-3. AI 列出建议
-4. 回复"全部创建",AI 调 `create_sub_task` 逐条建
-5. 若想改某条 → 回复"第 2 条改成 X",AI 重发建议
-6. 创建完成后讨论区会出现"已新建 N 条子任务"提示
-
-## 不支持
-- 子任务仅支持 1 层(AI 不会再为子任务建孙任务,建会被后端拒绝)
-- 拆分不会自动设置截止时间,需后续追加"第 1 条截止 X 日"
-- AI 不会自动分配人选,需追加"分给前端组成员"
-
-## 相关
-- 子任务概念:[[task.subtask.concept]]
-- 任务讨论区 @AI:[[ai-assistant.task-mention.howto]]
-- 创建任务:[[ai-assistant.create-task.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/task-mention.md b/resources/ai-kb/zh/howto/ai-assistant/task-mention.md
deleted file mode 100644
index 013cb333a..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/task-mention.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-id: ai-assistant.task-mention.howto
-title: 任务讨论区里 @AI
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - 任务里 @AI
- - 在任务下 at AI
- - AI 分析任务
- - 让 AI 看下这个任务
- - 任务讨论 @ 机器人
- - AI 接进任务
-related_tools: [send_task_ai_message]
-related_pages: [task_detail]
-prerequisites:
- - 应用市场已安装 ai 插件
- - 管理员已开启至少一个支持 tool call 的模型
- - 当前用户可访问该任务
-negative:
- - "@AI 后的提问会被全部讨论区成员看到(公开提问)"
- - "AI 仅读取本任务的标题、描述、子任务、评论作为上下文,不会跨任务查"
- - "群里 @AI 与任务讨论区 @AI 是两条不同链路,结果格式略有差异"
-last_verified: v1.7.90
----
-
-# 任务讨论区里 @AI
-
-## 这是什么
-在任务详情页的「讨论」区输入框 @AI(出现在 @ 下拉列表里)然后提问,AI 会以任务上下文(标题/描述/子任务/讨论历史)为基础回答,结果同步发到讨论区,所有成员可见。
-
-## 入口
-- 桌面端:任务详情页 → 右侧/底部「讨论」标签 → @ → 选「AI」
-- 移动端:任务详情页 → 「讨论」→ @ → 选「AI」
-
-## 操作步骤
-1. 打开任务详情,切到「讨论」
-2. 在评论输入框输入 `@` 弹出候选
-3. 选「AI 助手」
-4. 输入提问(如"帮我看下这个任务还差什么")
-5. 发送,AI 会以消息形式回答到同一条讨论
-
-## 适合问的
-- "总结一下这个任务的进展"
-- "根据描述帮我拆 5 个子任务"
-- "讨论里大家在争什么?给我个概要"
-- "下一步建议怎么做"
-
-## 与浮窗 AI 的区别
-- 浮窗:单人会话,结果只你能看到,可调全部工具
-- 任务 @AI:公开讨论,回答全员可见,主要做总结/分析,少调改写类工具
-
-## 不支持
-- 不能 @AI 后让它跨任务汇总(要总结多个任务请用浮窗)
-- 不能私聊它(@AI 的所有回复都对讨论区可见)
-- 任务设有可见用户白名单时,名单外的人看不到 AI 回复
-
-## 相关
-- 子任务建议:[[ai-assistant.subtask-suggest.howto]]
-- 任务总结:[[ai-assistant.task-summary.howto]]
-- 浮窗入口:[[ai-assistant.entry.howto]]
diff --git a/resources/ai-kb/zh/howto/ai-assistant/task-summary.md b/resources/ai-kb/zh/howto/ai-assistant/task-summary.md
deleted file mode 100644
index 303dc7ced..000000000
--- a/resources/ai-kb/zh/howto/ai-assistant/task-summary.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-id: ai-assistant.task-summary.howto
-title: 让 AI 总结任务进展
-type: howto
-feature: ai-assistant
-scope: end-user
-locale: zh
-aliases:
- - AI 总结任务
- - 任务进展总结
- - AI 看下进度
- - 帮我汇总任务
- - 任务状态怎么样
- - AI 复盘任务
-related_tools: [get_task, get_message_list]
-related_pages: [task_detail]
-prerequisites:
- - 应用市场已安装 ai 插件
- - 应用市场已安装 mcp_server 插件
- - 当前用户可访问该任务
-negative:
- - 总结仅基于任务详情 + 讨论历史 + 子任务状态,不读外部资料
- - 不会改任务状态,只读后输出文本
- - 历史评论超 100 条时只取最近 100 条
-last_verified: v1.7.90
----
-
-# 让 AI 总结任务进展
-
-## 这是什么
-让 AI 读取一个任务的标题、描述、子任务、讨论记录,输出当前进展概要,常用于会议汇报、周报、交接。AI 调 `get_task` + `get_message_list` 两个工具取数据,再综合生成。
-
-## 怎么触发
-- **任务讨论区** @AI:"总结一下这个任务到现在的进展"
-- **浮窗**:"帮我总结任务 ID 1234 的进展" 或先调 `open_task` 再说"总结这个"
-- **批量**:浮窗里说"帮我总结项目 X 下所有进行中的任务" → AI 会先 `list_tasks` 再逐个总结
-
-## 总结内容通常包含
-- 任务当前状态(未开始 / 进行中 / 已完成 / 已逾期)
-- 子任务完成度(如 3/5)
-- 关键讨论结论(最近的决策点)
-- 待解决/阻塞项(从评论中提取"需要"/"阻塞"/"等"等关键词)
-- 下一步建议(可选)
-
-## 让总结更准
-- 模糊任务请加 ID 或唯一标题词
-- 想突出某一面("只说阻塞"、"只说进度数字")就在提问中明示
-- 想发到群/写进报告 → 让 AI 直接 `send_message` 或追加"作为周报素材"
-
-## 不支持
-- 不会自动汇总跨项目(除非显式列出任务 ID)
-- 不读取任务附件正文(如 PDF 内容),需先 `fetch_file_content`
-- 不能生成图表/甘特图,只输出文字
-
-## 相关
-- 任务讨论 @AI:[[ai-assistant.task-mention.howto]]
-- 列任务:[[ai-assistant.list-tasks.howto]]
-- 生成工作报告:[[ai-assistant.report-draft.howto]]
diff --git a/resources/ai-kb/zh/howto/approve/cc.md b/resources/ai-kb/zh/howto/approve/cc.md
deleted file mode 100644
index e03fc05b4..000000000
--- a/resources/ai-kb/zh/howto/approve/cc.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-id: approve.cc.howto
-title: 抄送审批(抄送我 / 抄送他人)
-type: howto
-feature: approve
-scope: end-user
-locale: zh
-aliases:
- - 抄送我的审批
- - cc 给我的审批
- - 看别人发的审批
- - 怎么抄送给别人
- - 抄送在哪
- - 知会
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 approve 插件
-negative:
- - 普通用户不能在发起时手动指定抄送人,由所选模板的 notifier 节点决定
- - 抄送人不能审批(同意/拒绝按钮不可见),只能查看和评论
- - 抄送只在流程「到达 notifier 节点」或「整条流程已通过」时实际发送,被拒绝的流程不抄送
-last_verified: v1.7.90
----
-
-# 抄送审批(抄送我 / 抄送他人)
-
-## 抄送我(接收方)
-**入口**:审批中心 → Tab「抄送我」
-
-**列表内容**:流程模板里 notifier 节点候选人包含我的审批,无论审批中还是已结束。卡片含模板名、状态 Tag、发起人头像与昵称、提交时间、关键字段摘要。
-
-**筛选**:流程分类(全部审批 / 各模板名)、用户名(按发起人模糊搜)、点「搜索」触发。
-
-**详情**:点行进入右侧详情;可见所有节点和审批意见,但底部「同意/拒绝」按钮不显示(不是我的任务)。可点「+ 添加评论」补充意见([[approve.comment.howto]])。
-
-**接口**:审批中 `approve/process/findProcNotify`;已结束 `approve/procHistory/findProcNotify`。
-
-## 抄送他人(怎么让别人收到抄送)
-普通用户**无法**在发起表单里指定抄送人。抄送由所选模板的 `notifier` 节点固化,管理员在「流程设置」配模板时挂同事/部门/角色。普通用户只能选用**已包含 notifier 节点**的模板,抄送人会在两个时机收到机器人卡片:
-- **启动即抄送**:notifier 放在 starter 之后
-- **通过才抄送**:notifier 放在末节点;被拒绝则不抄送
-
-## 不支持
-- 普通用户在发起时无「添加抄送人」字段
-- 抄送卡片仅知会,不会主动催办
diff --git a/resources/ai-kb/zh/howto/approve/comment.md b/resources/ai-kb/zh/howto/approve/comment.md
deleted file mode 100644
index d418de5c2..000000000
--- a/resources/ai-kb/zh/howto/approve/comment.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-id: approve.comment.howto
-title: 给审批添加全文评论
-type: howto
-feature: approve
-scope: end-user
-locale: zh
-aliases:
- - 审批评论
- - 怎么评论审批
- - 审批留言
- - 添加评论
- - 给审批单加图片
- - 全文评论
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 approve 插件
- - 是该流程的发起人 / 审批人 / 抄送人之一
-negative:
- - 评论一经提交不可编辑也不可删除
- - 不支持 @ 提及他人到评论里
- - 不支持回复某条评论形成楼中楼
- - 评论与节点审批意见是两类数据:节点意见跟审批动作绑死,全文评论独立追加
-last_verified: v1.7.90
----
-
-# 给审批添加全文评论
-
-## 入口
-- 任意 Tab 进入审批详情 → 底部「+ 添加评论」按钮(任何角色和状态都可见)
-- 评论按钮与「同意/拒绝/撤销/删除」并排,处理类按钮按 [[approve.doto.howto]] 条件控制可见
-
-## 操作步骤
-1. 点「+ 添加评论」弹出评论窗
-2. **内容**:必填,多行文本
-3. **图片**:可选,最多 3 张(≤ 2048×2048)
-4. 点「确认」提交 → 调 `approve/process/addGlobalComment`,列表实时刷新并自动滚到底部新评论
-
-## 评论的显示位置
-详情页底部「全文评论」区,按时间顺序展示每条:
-- 发表人头像 + 昵称
-- 绝对时间 + 相对时间(如「3 小时前」)
-- 文字内容
-- 图片缩略图(点击放大查看)
-
-## 谁会收到提醒
-- 评论被推送到所有与该流程有关的用户的「审批助手」聊天
-- 推送类型 `approve_comment_notifier`,标题「{评论人} 评论了 {发起人} 的「{模板名}」审批」
-- 不会推给评论者本人
-
-## 与节点审批意见的区别
-- **节点审批意见**:审批人点同意/拒绝时填的那行文字,只能写一次,绑定到节点
-- **全文评论**:任何时候、任何相关方都可追加,是独立的对话流,详情页单独一段展示
-
-## 不支持
-- 评论不可改、不可删
-- 不支持 @ 别人、不支持回复楼中楼
diff --git a/resources/ai-kb/zh/howto/approve/delete.md b/resources/ai-kb/zh/howto/approve/delete.md
deleted file mode 100644
index 46c316f51..000000000
--- a/resources/ai-kb/zh/howto/approve/delete.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-id: approve.delete.howto
-title: 删除审批单
-type: howto
-feature: approve
-scope: admin
-locale: zh
-aliases:
- - 删除审批
- - 删审批单
- - 怎么删一条审批
- - 审批记录怎么清
- - 历史审批能删吗
- - 误发起怎么撤掉
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 approve 插件
- - 当前用户是该审批的**发起人**或系统管理员
- - 该审批已结束(通过 / 拒绝 / 撤回),未结束不可删
-negative:
- - 审批中(state=1)的单据不能删除,需要发起人先「撤回」结束再删
- - 普通处理人 / 抄送对象不能删除,即使是分配给自己的单据
- - 删除是物理删除,无回收站,删了找不回
- - 删除单条审批不会触发主程序通知撤回;机器人已推送的「待办」消息仍保留在群聊
-last_verified: v1.7.90
----
-
-# 删除审批单
-
-## 入口
-- 桌面端:审批中心 →「已发起」或「已办」Tab → 点开某条审批进详情 → 详情页底部「删除」按钮
-- 仅当满足"已结束 + 发起人或管理员"两个条件时按钮才出现,否则隐藏
-
-## 接口
-前端调 `api/approve/process/delById` → 控制器方法 `process__delById`:
-- 必传 `proc_inst_id`(流程实例 ID)
-- 自动透传 `is_admin` 标记给插件,决定能否绕过"仅发起人可删"的限制
-- 插件侧再校验"已结束"状态,未结束直接拒绝
-
-## 操作步骤
-1. 进入要删除的审批详情页
-2. 确认顶部状态显示 `已通过` / `已拒绝` / `已撤回` 任一终态
-3. 点击底部「删除」按钮
-4. 二次确认弹窗 → 确定
-5. 接口返回成功后该单从所有列表(已发起 / 已办 / 抄送)消失
-
-## 想删但删不掉的常见原因
-- **审批中**:先点「撤回」让状态变 `已撤回` 再删(发起人专属)
-- **不是我发起**:除非你是系统管理员(`userIsAdmin`),否则不能删别人发起的
-- **接口报错"无权限"**:说明插件认为当前 `userid` 不是发起人且 `is_admin=false`
-
-## 批量删除
-当前版本无批量删除入口,需要逐条删。如需大批量清理某个流程模板下的全部审批数据,可改用 [[approve.template.howto]] 中"删除模板"操作(会同时清空数据)。
-
-## 相关
-- 数据导出(删除前留底):[[approve.export.howto]]
diff --git a/resources/ai-kb/zh/howto/approve/detail.md b/resources/ai-kb/zh/howto/approve/detail.md
deleted file mode 100644
index f87d8ab5d..000000000
--- a/resources/ai-kb/zh/howto/approve/detail.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-id: approve.detail.howto
-title: 审批详情页与流程图
-type: howto
-feature: approve
-scope: end-user
-locale: zh
-aliases:
- - 审批详情
- - 看审批流程
- - 审批走到哪了
- - 流程图
- - 审批节点
- - 审批进度
- - 谁审过了
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 approve 插件
- - 自己是发起人 / 审批人 / 抄送人 之一才能进入对应审批的详情
-negative:
- - 详情页里不能修改任何表单字段,全部只读
- - 详情不显示其他人的私聊评论,仅显示全局评论
- - 流程图按节点定义渲染,不支持手动调整节点顺序
-last_verified: v1.7.90
----
-
-# 审批详情页与流程图
-
-## 入口
-- 任一 Tab(待办/已办/抄送我/已发起)→ 点列表行:宽屏(≥1010 px)右侧分栏;中屏(426-1010)右侧抽屉;窄屏(<426)跳独立路由 `manage-approve-details?id={id}`
-- 机器人卡片:在「审批助手」聊天点卡片「查看详情」
-
-## 顶部信息
-模板名 + 状态 Tag(青-审批中 / 绿-已通过 / 红-已拒绝/已撤回)、发起人头像和昵称、提交时间。
-
-## 表单字段区
-按模板渲染。请假类模板显示:假期类型、开始/结束时间(含周几)、时长(自动算秒/分/小时/天)、事由、图片(≤ 3 张可放大)。
-
-## 审批记录(流程图)
-Timeline 时间线渲染 `node_infos`,每节点显示类型、操作人头像与昵称、状态、相对/绝对时间。节点类型:
-- **提交** starter:绿色,发起人
-- **审批** approver:蓝-审批中 / 绿-已通过 / 红-拒绝或撤回 / 灰-待审批;有意见时显示在引号里
-- **抄送** notifier:完成绿、未到灰,显示「自动抄送 张三、李四 共 2 人」
-- **结束** end:到达后变绿
-
-被拒绝/撤回后下游节点自动隐藏。
-
-## 全文评论区
-有 `global_comments` 时显示,按时间倒序,每条含头像/昵称/内容/图片/相对时间。详见 [[approve.comment.howto]]。
-
-## 操作区
-底部按钮见 [[approve.doto.howto]]。接口:详情 `approve/process/detail`;历史 [[approve.history.concept]]。
diff --git a/resources/ai-kb/zh/howto/approve/doto.md b/resources/ai-kb/zh/howto/approve/doto.md
deleted file mode 100644
index 521d403ef..000000000
--- a/resources/ai-kb/zh/howto/approve/doto.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-id: approve.doto.howto
-title: 处理审批(同意/拒绝/撤销/删除)
-type: howto
-feature: approve
-scope: end-user
-locale: zh
-aliases:
- - 怎么同意审批
- - 怎么拒绝审批
- - 审批驳回
- - 撤回自己的审批
- - 撤销申请
- - 删除审批单
- - 怎么处理一条审批
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 approve 插件
-negative:
- - 不支持「转交他人」:当前版本无转交按钮和接口
- - 不支持「加签」:不能临时增加额外审批人
- - 不支持批量审批;要逐条进详情处理
- - 拒绝必须填审批意见(同意可不填)
- - 一旦后续节点审批人已处理,发起人就不能再撤销
- - 删除仅对已结束(通过/拒绝/撤回)的审批可用,审批中不能删
-last_verified: v1.7.90
----
-
-# 处理审批(同意/拒绝/撤销/删除)
-
-## 入口
-从「待办」「已办」「抄送我」「已发起」任一 Tab 点列表项 → 右侧详情面板底部「审批操作」区。
-
-## 四个动作的按钮可见条件
-- **同意 / 拒绝**:当前流程未结束,且我的用户 ID 在 `candidate` 字段里(即轮到我处理)
-- **撤销**:我是发起人,且整条流程未结束,且没有任何审批人已点过同意/拒绝
-- **删除**:状态是已通过/已拒绝/已撤回,且我是发起人或管理员
-- **+ 添加评论**:任意状态、任意角色可见,详见 [[approve.comment.howto]]
-
-## 同意
-点「同意」→ 弹「请输入审批意见」(可不填)→ 确认。调 `approve/task/complete` `pass=true`。推下一节点审批人 + 抄送人;末节点则推「您发起的「X」已通过」给发起人。
-
-## 拒绝
-点「拒绝」→ 弹意见框(**必填**,否则提示「请输入审批意见」)→ 确认。调 `approve/task/complete` `pass=false`。流程立即结束,发起人收到拒绝通知。
-
-## 撤销(仅发起人)
-点「撤销」→ 二次确认。调 `approve/task/withdraw`,state 置 4「已撤回」。撤回提醒推送给已收到卡片的审批人,原卡片改为「已撤回」。
-
-## 删除(已结束 + 发起人/管理员)
-点「删除」→ 二次确认「删除后不可恢复」。调 `approve/process/delById`,从所有列表移除,不可恢复。
diff --git a/resources/ai-kb/zh/howto/approve/export.md b/resources/ai-kb/zh/howto/approve/export.md
deleted file mode 100644
index e2bec9368..000000000
--- a/resources/ai-kb/zh/howto/approve/export.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-id: approve.export.howto
-title: 导出审批数据
-type: howto
-feature: approve
-scope: admin
-locale: zh
-aliases:
- - 导出审批
- - 审批数据导出
- - 下载审批 Excel
- - 审批报表
- - 请假记录导出
- - 审批怎么导出
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 approve 插件
- - 当前用户是系统管理员(普通成员看不到「导出」按钮)
-negative:
- - 单次导出**最多 35 天**,超过会报「日期范围限制最大35天」需分段导出
- - 必须选择"流程分类"(即流程模板名),不支持一次导全部模板
- - 导出文件为 zip 包内含一个 xlsx,**不支持** CSV / JSON 直接下载
- - 没有数据时会推送「没有任何数据」提示,不会生成空文件
-last_verified: v1.7.90
----
-
-# 导出审批数据
-
-## 入口
-- 桌面端:左侧栏「应用」→「审批中心」→ 右上角「导出审批数据」按钮(仅管理员可见)
-- 移动端:审批中心右上角图标条同名按钮(同样仅管理员)
-
-## 接口
-前端调 `api/approve/export`(POST)→ 控制器方法 `export`:
-- 必传 `proc_def_name`(流程模板名)+ `date`(`[start, end]` 两个日期)
-- 可选 `state`(0 全部 / 1 审批中 / 2 通过 / 3 拒绝 / 4 撤回)+ `is_finished`
-- 服务端用 Swoole 协程异步生成,不阻塞请求;接口立即返回 `success`
-
-## 操作步骤
-1. 弹窗中选择「流程分类」(下拉,来自已发布的流程模板列表)
-2. 选「状态」(默认全部)
-3. 选「日期范围」(开始 + 结束,≤ 35 天)
-4. 点「确定」→ 立即关闭弹窗
-5. 主程序系统机器人在私聊推送「正在导出审批数据,请稍等...」
-6. 协程异步处理完成后,机器人推送一条带下载链接的 `file_download` 模板消息
-
-## 导出列(24 列)
-申请编号、标题、申请状态、发起时间、完成时间、发起人工号、发起人 User ID、发起人姓名、发起人部门、发起人部门 ID、部门负责人、历史审批人、历史办理人、审批记录、当前处理人、审批节点、审批人数、审批耗时、假期类型、开始时间、结束时间、时长、请假事由、请假单位。
-
-## 文件命名与位置
-- 临时存放:`storage/app/temp/approve/export/<年月>/审批记录_<时间戳>.zip`
-- 链接形式:`api/approve/down?key=<加密 key>`(带签名,过期失效)
-
-## 常见报错
-- `日期选择错误`:日期未选或格式错;用日期选择器选
-- `日期范围限制最大35天`:缩短范围分段导出
-- `没有任何数据`:所选模板 + 状态 + 日期范围内无审批单
-- `系统机器人不存在`:联系超级管理员检查机器人初始化(极少见)
-
-## 相关
-- 模板列表来源:[[approve.template.concept]]
-- 单条记录删除:[[approve.delete.howto]]
diff --git a/resources/ai-kb/zh/howto/approve/install.md b/resources/ai-kb/zh/howto/approve/install.md
deleted file mode 100644
index c2f945542..000000000
--- a/resources/ai-kb/zh/howto/approve/install.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-id: approve.install.howto
-title: 安装审批插件
-type: howto
-feature: approve
-scope: admin
-locale: zh
-aliases:
- - 怎么装审批
- - 启用审批中心
- - 审批怎么开
- - 在哪开启审批
- - 安装 approve 插件
- - 审批中心没有怎么办
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 当前用户是系统管理员(userIsAdmin)
- - 服务器能拉取 `kuaifan/dooapprove` Docker 镜像
-negative:
- - 普通成员看不到「应用市场」入口,无法自行安装
- - 安装包约 25MB,下载较慢,必须看「安装日志」判断进度,不能凭感觉重试
- - 卸载时勾选「删除数据」会清空全部审批历史,且不可恢复
-last_verified: v1.7.90
----
-
-# 安装审批插件
-
-## 入口
-- 桌面端:左侧栏「应用」→ 右上角「应用市场」→ 顶部分类「插件」→ 找到「审批中心」
-
-## 操作步骤
-1. 在应用市场卡片上点击「安装」
-2. 弹窗确认参数(默认 `DEMO_DATA: "true"` 会随安装写入一份演示流程模板,正式环境可改 `false`)
-3. 点「确定」开始安装,主程序会创建一个 docker-compose 服务并拉起容器
-4. 安装过程中打开「安装日志」面板查看拉镜像进度(约 25MB)
-5. 状态变为 `installed` 后,左侧栏「应用」会自动出现「审批中心」入口
-
-## 启用后默认行为
-- 自动注册路由 `api/approve/*`,主程序 `ApproveController` 开始可用
-- 自动注册 nginx 反代 `/approve/`,把 iframe 内的流程模板编辑页透传给插件容器
-- 若 `DEMO_DATA: "true"`:随安装写入「请假申请」等演示流程模板,方便上线测试
-- 在主程序数据库里创建 `<前缀>approve_*` 表前缀的工作流表(不与主程序业务表混库)
-
-## 卸载/重装
-- 应用市场 → 已安装 →「卸载」
-- 弹窗有「同时删除数据」勾选:勾上则连同 `<前缀>approve_*` 表一并 drop;不勾则保留数据下次安装时自动接上
-- 仅升级版本走「更新」按钮,不会触发数据清理
-
-## 不支持
-- 没有「试用」/「禁用」中间态:要么 `installed` 要么 `uninstalled`
-- 不能同时存在新旧两个版本
-
-## 相关
-- 插件架构与数据隔离原理:[[approve.plugin.concept]]
-- 入口与四个 Tab 的常规用法:[[app-system.approve.howto]]
diff --git a/resources/ai-kb/zh/howto/approve/my-start.md b/resources/ai-kb/zh/howto/approve/my-start.md
deleted file mode 100644
index 88ed43f2d..000000000
--- a/resources/ai-kb/zh/howto/approve/my-start.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-id: approve.my-start.howto
-title: 查看我发起的审批
-type: howto
-feature: approve
-scope: end-user
-locale: zh
-aliases:
- - 我发起的审批
- - 我提交的审批
- - 已发起列表
- - 查我的审批
- - 我提的请假到哪了
- - 看我自己的申请
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 approve 插件
-negative:
- - 不能在此列表里改字段,提交后表单只读
- - 只能撤回未结束的审批;已通过/拒绝/撤回的只能删除或追加评论
- - 列表只显示自己发起的;要看别人发起的需要去「待办」「已办」或「抄送我」
-last_verified: v1.7.90
----
-
-# 查看我发起的审批
-
-## 入口
-- 桌面端 / 移动端:审批中心 → Tab「已发起」
-
-## 筛选条件
-列表上方四个控件,任改其一即触发刷新:
-- **流程分类**:全部审批 / 各模板名(如「请假申请」「报销申请」)
-- **状态**:全部 / 审批中 / 已通过 / 已拒绝 / 已撤回
-- **用户名**:按发起人模糊搜索(自己发的也可以搜,多用于管理员视角,普通用户一般留空)
-- 「搜索」按钮触发查询
-
-## 列表项显示
-每行卡片显示:模板名、状态 Tag(颜色对应:青-审批中、绿-通过、红-拒绝/撤回)、提交时间、发起人头像与昵称、事由摘要。点击进入右侧详情。
-
-## 详情与操作
-- 详情结构与处理面板见 [[approve.detail.howto]]
-- 状态为「审批中」且自己是发起人:右下角有「撤销」按钮(前提是后续审批人均未行动)
-- 状态为「已通过/已拒绝/已撤回」:可见「删除」按钮(仅发起人或管理员)
-- 任何状态均可点「+ 添加评论」追加 [[approve.comment.howto]]
-
-## 接口
-- 入口列表:`approve/process/startByMyselfAll`(按筛选)
-- 旧版仅审批中:`approve/process/startByMyself`
diff --git a/resources/ai-kb/zh/howto/approve/my-todo.md b/resources/ai-kb/zh/howto/approve/my-todo.md
deleted file mode 100644
index f55df5b13..000000000
--- a/resources/ai-kb/zh/howto/approve/my-todo.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-id: approve.my-todo.howto
-title: 待我审批列表
-type: howto
-feature: approve
-scope: end-user
-locale: zh
-aliases:
- - 待我审批
- - 待办审批
- - 需要我审批的
- - 我要审批什么
- - 找我审批的列表
- - 有多少待办
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 approve 插件
- - 已被某流程模板的审批人节点包含到候选人列表
-negative:
- - 待办只显示当前轮到自己处理的,未到节点的不会出现
- - 已处理的不会留在待办,会转到「已办」
- - 列表无法批量同意/拒绝,需要逐条进详情处理
-last_verified: v1.7.90
----
-
-# 待我审批列表
-
-## 入口
-- 桌面端 / 移动端:审批中心 → Tab「待办」
-- Tab 名旁有未读数量徽标(如「待办(5)」),数字来自 `approve/process/doto`,由 WebSocket `approve/unread` 推送实时刷新
-
-## 列表内容
-显示当前候选人字段(`candidate`)包含我,且流程未结束的审批:
-- 模板名 + 状态 Tag「审批中」
-- 发起人头像与昵称
-- 提交时间
-- 关键字段摘要(如开始/结束时间、事由)
-
-## 筛选条件
-列表上方:
-- **流程分类**:全部审批 / 各模板名
-- **用户名**:按发起人模糊搜
-- 点「搜索」或回车触发刷新
-
-## 处理流程
-1. 点列表任一项 → 右侧打开详情面板(窄屏抽屉打开)
-2. 详情底部出现「同意」「拒绝」「+ 添加评论」按钮(按钮可见性见 [[approve.doto.howto]])
-3. 处理完该条从列表消失,未读数 -1,下一审批人收到推送
-
-## 移动端
-- 屏宽 < 426 px 时点列表会通过事件 `approveDetails` 跳到独立详情路由
-- 屏宽 < 1010 px 时详情以右侧抽屉打开,不分屏
-
-## 接口
-- 列表:`approve/process/findTask`
-- 数量:`approve/process/doto`
diff --git a/resources/ai-kb/zh/howto/approve/start.md b/resources/ai-kb/zh/howto/approve/start.md
deleted file mode 100644
index 2789b6a7e..000000000
--- a/resources/ai-kb/zh/howto/approve/start.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-id: approve.start.howto
-title: 发起审批
-type: howto
-feature: approve
-scope: end-user
-locale: zh
-aliases:
- - 怎么发起审批
- - 提交审批
- - 申请请假
- - 报销怎么提
- - 新建审批单
- - 加申请
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 approve 插件
- - 管理员已配置至少一个审批流程模板
- - 当前账号已分配到部门(无部门时无法选择申请发起部门)
-negative:
- - 用户不能自定义审批人,审批人由所选模板的节点配置决定
- - 不能新建模板,只能选用管理员已配置的模板
- - 提交后不能改字段;只能撤回或等审批结束([[approve.process-inst.concept]])
- - 不支持定时延后提交、不支持草稿保存
-last_verified: v1.7.90
----
-
-# 发起审批
-
-## 入口
-- 桌面端:左侧栏「应用」→「审批」→ 页面右上角「+ 添加申请」按钮(窄屏显示为圆形「+」图标)
-- 移动端:底部 Tabbar「应用」→「审批」→ 右上角「+」
-
-## 操作步骤
-1. 点击「+ 添加申请」打开弹窗
-2. **选择部门**:当账号属于多个部门时显示,单部门自动选中
-3. **申请类型**:从模板下拉选(如「请假申请」「报销申请」),可选项由管理员预置
-4. **假期类型**(仅请假类模板显示):年假/事假/病假/调休/产假/陪产假/婚假/丧假/哺乳假/产检假/其他
-5. **开始时间 / 结束时间**:日期 + 小时(0-23)+ 分钟(00 或 30)
-6. **事由**:必填,多行文本
-7. **图片**:可选,最多 3 张(最大 2048×2048)
-8. 点「确认」提交
-
-## 提交后的行为
-- 系统按模板自动派任务给第一节点的审批人
-- 「审批助手」机器人向每个审批人推 1 条卡片消息:「{发起人} 提交的「{模板名}」待你审批」
-- 抄送节点上的人也会同时收到知会卡片
-- 自动跳到「已发起」Tab,置顶你这条
-- 调用接口 `approve/process/start`
-
-## 不支持
-- 申请类型不能由用户临时新建,必须用管理员配好的模板
-- 不能在发起时手动指定审批人,节点由模板决定
-- 不能保存草稿,关弹窗即丢失填写内容
diff --git a/resources/ai-kb/zh/howto/approve/template.md b/resources/ai-kb/zh/howto/approve/template.md
deleted file mode 100644
index d54a3365c..000000000
--- a/resources/ai-kb/zh/howto/approve/template.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-id: approve.template.howto
-title: 创建与管理流程模板
-type: howto
-feature: approve
-scope: admin
-locale: zh
-aliases:
- - 怎么建审批流程
- - 新建审批模板
- - 配置请假流程
- - 添加流程
- - 修改审批流程
- - 流程设置在哪
- - 流程编辑器
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 approve 插件
- - 当前用户是系统管理员(userIsAdmin)
-negative:
- - 只有管理员能进入流程设置,普通成员看不到「流程设置」按钮
- - 同名流程不允许重复创建,新建时会校验
- - 旧实例不随模板改动回滚:发布新版本只影响新发起的审批,已在跑的按旧版本走完
-last_verified: v1.7.90
----
-
-# 创建与管理流程模板
-
-## 入口
-- 桌面端:左侧栏「应用」→「审批中心」→ 右上角「流程设置」按钮
-- 进入设置页后看到所有已建模板卡片 + 一个「+」加号卡片
-
-## 新建模板
-1. 点击「+」卡片 → 弹窗输入流程名称(必填,作为「申请类型」给发起人选)
-2. 点「确定」打开右侧抽屉式流程编辑器(iframe 内,宽度约 1200px)
-3. 在编辑器中拖拽配置审批节点:发起 → 审批人 → 抄送 → 结束,参考 [[approve.node.concept]]
-4. 在编辑器中设计表单字段(文本、日期、选择、附件、明细等),参考 [[approve.form.concept]]
-5. 点编辑器内「保存并发布」按钮 → 弹窗关闭,提示「发布成功」
-6. 列表中出现新卡片,标记「已发布」,普通成员立即可在「添加申请」处选择
-
-## 编辑已有模板
-1. 在卡片列表点击对应模板卡片 → 抽屉打开同一个编辑器,载入当前版本
-2. 修改节点 / 表单字段
-3. 点「保存并发布」→ 版本号 +1
-4. 进行中的旧实例不受影响,按各自当时的版本继续;新发起的走新版本
-
-## 删除模板
-1. 卡片右下角小垃圾桶图标
-2. 二次确认「将会清空流程数据,此操作不可恢复」
-3. 确认后调 `approve/procdef/del` 删除模板及所有相关审批数据
-
-## 不支持
-- 草稿暂存不可见:编辑器只在点击「保存并发布」时落库,关掉抽屉不点保存内容会丢失
-- 同名流程不允许重复创建
-- 流程编辑器内的能力(如条件分支)受插件版本限制;当前版本不支持表单条件路由,需要按条件分流时应拆成多个流程模板供发起人选择
-
-## 相关
-- 模板概念详解:[[approve.template.concept]]
-- 节点类型说明:[[approve.node.concept]]
diff --git a/resources/ai-kb/zh/howto/checkin/face.md b/resources/ai-kb/zh/howto/checkin/face.md
deleted file mode 100644
index 793b619c2..000000000
--- a/resources/ai-kb/zh/howto/checkin/face.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-id: checkin.face.howto
-title: 人脸签到怎么用
-type: howto
-feature: checkin
-scope: end-user
-locale: zh
-aliases:
- - 人脸签到
- - 刷脸签到
- - 怎么录入人脸
- - 上传人脸图片
- - 人脸打卡
-related_tools: []
-related_pages: [user-settings]
-prerequisites:
- - 应用市场已安装 face 插件
- - 管理员已在「签到设置 → 签到方式」勾选「人脸签到」
- - 管理员已在「签到设置 → 允许修改」开启「允许成员自己上传人脸图片」
-last_verified: v1.7.90
----
-
-# 人脸签到怎么用
-
-## 录入人脸(成员侧)
-1. 打开「应用」→「签到打卡」抽屉 → 「签到设置」Tab → 切到「人脸签到」
-2. 点击「人脸图片」上传位 → 选择 / 拍摄一张正面照
-3. 建议尺寸 **500x500**,单张限制 1 张,会自动同步给 face 插件后端
-4. 点「提交」保存
-
-成功后 face 容器会保存对应人脸特征,后续人脸识别设备扫脸时自动匹配到该成员。
-
-## 现场打卡
-1. 走到办公场所的人脸识别一体机前
-2. 设备扫描成功 → 自动调用插件 API 写入一条签到记录
-3. 在「签到打卡」抽屉的时间线立即看到新记录
-
-## 替换或删除人脸
-- 替换:重新上传新图片即可覆盖
-- 删除:把图片清空后提交,face 插件后端会同步删除该成员的人脸数据
-
-## 不支持
-- 不支持纯软件刷脸(手机自拍打卡),必须有配套人脸识别硬件
-- 单成员只能录入 1 张人脸图(多张请通过设备后台管理)
-- face 插件未安装时上传会报错(详见 [[checkin.face-fail.faq]])
diff --git a/resources/ai-kb/zh/howto/drawio/create.md b/resources/ai-kb/zh/howto/drawio/create.md
deleted file mode 100644
index 0eb2aa30b..000000000
--- a/resources/ai-kb/zh/howto/drawio/create.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-id: drawio.create.howto
-title: 创建流程图
-type: howto
-feature: drawio
-scope: end-user
-locale: zh
-aliases:
- - 怎么建流程图
- - 新建 drawio
- - 创建图表
- - 加一张流程图
- - drawio 怎么开
-related_tools: []
-related_pages: [file]
-prerequisites:
- - 应用市场已安装 drawio 插件
- - 当前用户对目标文件夹/项目文件区有「编辑」权限
-negative:
- - 不能在任务详情页直接「附件 → 新建流程图」,需先在文件页创建再链接
- - 同一张图同一时间不支持多人并发编辑(后保存方覆盖前保存方)
- - 创建后无法把 `drawio` 文件转成 `mind` 或 `word` 文件
-last_verified: v1.7.90
----
-
-# 创建流程图
-
-## 入口
-流程图作为「文件」存在,入口都在文件页:
-
-- 桌面端:左侧栏「文件」→ 选定目标文件夹 → 右上角「新建」按钮 →「图表」
-- 桌面端(右键):文件列表空白处右键 →「新建」→「图表」
-- 移动端:底部 Tabbar「文件」→ 进入目标文件夹 → 右下角「+」→「图表」
-- 项目文件:进入项目 →「文件」标签页 → 新建菜单 →「图表」
-
-> 文件新建菜单里命名为「图表」,文件类型字段是 `drawio`,对应文件图标也是 drawio 风格。
-
-## 操作步骤
-1. 点击「新建 → 图表」,文件列表多出一个待命名行
-2. 输入文件名(≤ 100 字符),回车保存
-3. 双击或单击文件名进入编辑器
-4. 在 drawio 编辑器中绘图:左侧拖拽图形库,画布上连接、编辑文本
-5. 编辑器内自动保存,关闭即可
-
-## 字段默认值
-- 文件名:默认「未命名」
-- 模板:默认空白画布(可在 drawio 内通过菜单插入图形)
-- 主题:跟随 DooTask 当前主题(深色/浅色)和语言
-
-## 导出
-- 在 drawio 编辑器内:菜单 「File → Export As」选择 PNG/PDF/JPG 等
-- 导出依赖插件内置的 export-server,若安装不全会导出失败
-
-## 不支持
-- 不支持直接从云端模板拷贝(每次新建都是空白画布)
-- 不能在任务附件区直接「新建图表」,需先在文件页建好再附加
-
-## 相关
-- 入口与权限:[[drawio.entry.menu-map]]
-- 内置模板:[[drawio.template.concept]]
diff --git a/resources/ai-kb/zh/howto/kpi/create.md b/resources/ai-kb/zh/howto/kpi/create.md
deleted file mode 100644
index 3e5adc867..000000000
--- a/resources/ai-kb/zh/howto/kpi/create.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-id: kpi.create.howto
-title: 创建绩效考核
-type: howto
-feature: kpi
-scope: end-user
-locale: zh
-aliases:
- - 怎么发起考核
- - 新建考核
- - 创建 KPI
- - 录入绩效指标
- - 给员工打分
- - 怎么做 KPI 评估
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 kpi 插件
- - 当前账号在 KPI 中是 HR 或 manager 角色
-negative:
- - 普通员工(employee)不能发起考核,只能填写自己的考核
- - 每个考核只能提交一次异议(HR 处理后才能再次提交)
- - 仅 HR 可配置绩效规则(权重比例)
-last_verified: v1.7.90
----
-
-# 创建绩效考核
-
-## 入口
-- 桌面端:左侧栏「应用」→「绩效考核」(对应 URL `apps/kpi`)
-- 移动端:底部 Tabbar「应用」→「绩效考核」
-- 在 KPI 首页 / 考核管理页面有新建入口
-
-## 角色与权限
-- **HR**:完整流程,可创建考核、选模板、被考核人、邀请评分人、处理异议
-- **manager(部门主管)**:可发起对下属的考核
-- **employee**:只能在收到考核后填写自评,不能发起新考核
-
-## 操作步骤
-1. 打开「绩效考核」页面
-2. 在考核管理界面点击新建按钮
-3. 选择 KPI 模板(模板由 HR 在「KPI 模板」中维护)
-4. 选择被考核人员(一个或多个)
-5. 设置考核周期 / 截止时间
-6. 提交后系统自动通知被考核人进入「自评」环节
-
-## 完整考核流程
-1. **创建考核**:HR 或主管发起
-2. **员工自评**:员工填写自我评价并打分
-3. **主管评估**:主管打分并写反馈
-4. **邀请评分**(可选):HR 邀请第三方多角度打分
-5. **HR 审核**:依据绩效规则计算最终分
-6. **员工确认**:员工查看并确认最终得分
-7. **异议处理**(可选):员工在「待确认」时提交异议,HR 处理后调分
-
-## 邀请评分(可选)
-- HR 在主管评估完成后可发起邀请评分
-- 被邀请人可选择接受 / 拒绝;接受后对各项指标客观打分
-- 评分结果仅 HR 可查看完整详情(保密性)
-
-## 不支持
-- 已在「待确认」之前的状态不能提交异议
-- 邀请评分的被评估员工本人不参与邀请评分过程
-- 普通员工无法看到他人评分明细
-
-## 相关
-- KPI 是什么:[[kpi.concept]]
-- 评分机制 / 权重:[[kpi.scoring.concept]]
-- 入口在哪:[[kpi.entry.menu-map]]
diff --git a/resources/ai-kb/zh/howto/memos/create.md b/resources/ai-kb/zh/howto/memos/create.md
deleted file mode 100644
index a103150ec..000000000
--- a/resources/ai-kb/zh/howto/memos/create.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-id: memos.create.howto
-title: 写一条 Memo
-type: howto
-feature: memos
-scope: end-user
-locale: zh
-aliases:
- - 怎么写笔记
- - 新建 memo
- - 记一条想法
- - 加一条笔记
- - 我要写个备忘
- - memos 怎么用
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 memos 插件
-negative:
- - 不能用 Memos 原生账号登录(账号由 DooTask 自动建立)
- - 单条 memo 大小受 Memos 服务自身限制
- - Memos 不与 DooTask 任务 / 项目数据互通,写在这里的内容不会变成任务
-last_verified: v1.7.90
----
-
-# 写一条 Memo
-
-## 入口
-- 桌面端:左侧栏「应用」→「Memos 笔记」(对应 URL `apps/memos/`)
-- 移动端:底部 Tabbar「应用」→「Memos 笔记」
-- 首次打开会自动用当前 DooTask 账号登录 Memos,无需输入密码
-
-## 操作步骤
-1. 打开「Memos 笔记」页面
-2. 在顶部输入框直接输入内容(支持 Markdown)
-3. 可选:用 `#标签名` 语法添加标签分类(参见 [[memos.tag.concept]])
-4. 可选:调整可见性(私有 / 工作区 / 公开),默认是私有
-5. 点击「保存 / Save」提交,新 memo 立即出现在时间线顶部
-
-## 编辑与删除
-- 在时间线上找到要操作的 memo,点击右上角的「···」菜单
-- 可执行编辑内容、修改可见性、置顶、归档、删除等操作
-
-## Markdown 与附件
-- 支持标题、加粗、列表、代码块、链接等基础 Markdown
-- 支持上传图片 / 文件附件,存储在 SQLite 数据库或本地卷里
-- 不支持任意大附件,建议大文件用 DooTask 主程序的文件模块
-
-## 不支持
-- 不能跨 DooTask 用户共用同一个 memo 帐号(每个 DooTask 用户在 Memos 内是独立账号)
-- 不能从 DooTask 主程序的任务 / 文档直接「转存到 Memos」
-
-## 相关
-- Memos 是什么:[[memos.concept]]
-- 入口在哪:[[memos.entry.menu-map]]
-- 标签 / 分类:[[memos.tag.concept]]
diff --git a/resources/ai-kb/zh/howto/micro-app/install.md b/resources/ai-kb/zh/howto/micro-app/install.md
index d943903e7..6656e354a 100644
--- a/resources/ai-kb/zh/howto/micro-app/install.md
+++ b/resources/ai-kb/zh/howto/micro-app/install.md
@@ -45,7 +45,7 @@ last_verified: v1.7.90
## 失败排查
- 镜像源不通:检查服务器到镜像源网络
- 端口冲突:检查 `docker/appstore/apps//docker-compose.yml`
-- 详细排查模板见 [[okr.cannot-install.faq]]
+- 个别插件(如 OKR)有专属的安装失败排查说明,随对应插件知识库提供
## 不支持
- 普通成员不能安装微应用,「应用商店」对其隐藏
diff --git a/resources/ai-kb/zh/howto/minder/create.md b/resources/ai-kb/zh/howto/minder/create.md
deleted file mode 100644
index 3b3708009..000000000
--- a/resources/ai-kb/zh/howto/minder/create.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-id: minder.create.howto
-title: 创建思维导图
-type: howto
-feature: minder
-scope: end-user
-locale: zh
-aliases:
- - 怎么建思维导图
- - 新建脑图
- - 创建 mind map
- - 加一张思维导图
- - 思维导图怎么开
-related_tools: []
-related_pages: [file]
-prerequisites:
- - 应用市场已安装 minder 插件
- - 当前用户对目标文件夹/项目文件区有「编辑」权限
-negative:
- - 不能在任务详情页直接「附件 → 新建思维导图」,需先在文件页创建再链接
- - 同一张图同一时间不支持多人并发编辑(详见 [[minder.collaboration.concept]])
- - 创建后无法把 `mind` 文件转成 `drawio` 或 `word` 文件
-last_verified: v1.7.90
----
-
-# 创建思维导图
-
-## 入口
-思维导图作为一种「文件」存在,入口都在文件页:
-
-- 桌面端:左侧栏「文件」→ 选定目标文件夹 → 右上角「新建」按钮 →「思维导图」
-- 桌面端(右键):文件列表空白处右键 →「新建」→「思维导图」
-- 移动端:底部 Tabbar「文件」→ 进入目标文件夹 → 右下角「+」→「思维导图」
-- 项目文件:进入项目 →「文件」标签页 → 同上步骤
-
-## 操作步骤
-1. 在新建菜单点击「思维导图」,文件列表多出一个待命名行
-2. 输入文件名(≤ 100 字符),回车保存
-3. 双击或单击文件名进入编辑器
-4. 编辑:双击节点改名、Tab 加子节点、回车加同级、Del 删节点
-5. 编辑器内自动保存,关闭即可
-
-## 字段默认值
-- 文件名:默认「未命名」
-- 模板:默认(中心 + 第一圈分支);可在编辑器内切换「组织结构 / 文件树 / 右展开 / 鱼骨图 / 天盘」
-- 主题:天空蓝;可换「线框 / 鱼骨图 / 脑图经典 / 紧凑经典 / 温柔冷光 / 经典天盘」等
-
-## 不支持
-- 不支持直接从模板文件拷贝(每次新建都是空白根节点)
-- 不能在任务附件区直接「新建思维导图」,需先在文件页建好再附加
-
-## 相关
-- 入口与权限:[[minder.entry.menu-map]]
-- 协作能力:[[minder.collaboration.concept]]
diff --git a/resources/ai-kb/zh/howto/office/create.md b/resources/ai-kb/zh/howto/office/create.md
deleted file mode 100644
index 68568f32a..000000000
--- a/resources/ai-kb/zh/howto/office/create.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-id: office.create.howto
-title: 创建在线文档(Word/Excel/PPT)
-type: howto
-feature: office
-scope: end-user
-locale: zh
-aliases:
- - 怎么建在线 Word
- - 新建在线表格
- - 新建在线 PPT
- - 创建 docx
- - 怎么在 DooTask 写文档
- - 在线 office 怎么开
-related_tools: []
-related_pages: [file]
-prerequisites:
- - 应用市场已安装 office(OnlyOffice)插件
- - 当前用户对目标文件夹/项目文件区有「编辑」权限
-negative:
- - 创建后无法把在线 Word 转成 DooTask 自带的 `document` 文件类型
- - 创建后文件扩展名固定(docx/xlsx/pptx),不能在 DooTask 内改后缀
- - 不能在任务详情页直接「附件 → 新建 Word」,需先在文件页创建再链接
-last_verified: v1.7.90
----
-
-# 创建在线文档(Word/Excel/PPT)
-
-## 入口
-在线文档作为「文件」存在,入口都在文件页:
-
-- 桌面端:左侧栏「文件」→ 选定目标文件夹 → 右上角「新建」按钮 →「Word 文档 / Excel 工作表 / PPT 演示文稿」
-- 桌面端(右键):文件列表空白处右键 →「新建」→ 同上三选一
-- 移动端:底部 Tabbar「文件」→ 进入目标文件夹 → 右下角「+」→ 同上三选一
-- 项目文件:进入项目 →「文件」标签页 → 新建菜单 → 同上三选一
-
-## 操作步骤
-1. 点击「新建 → Word 文档(或 Excel / PPT)」,文件列表多出一个待命名行
-2. 输入文件名(≤ 100 字符),回车保存——文件扩展名按所选类型自动决定(docx/xlsx/pptx)
-3. 双击或单击文件名进入编辑器(iframe 加载 OnlyOffice)
-4. 直接在浏览器编辑:体验与桌面 Office 接近,支持公式、批注、修订、格式刷等
-5. 自动保存:OnlyOffice 在内容停止变更后约 10 秒触发保存,关闭也会触发
-
-## 上传已有文档
-- 上传扩展名在 `doc/docx/xls/xlsx/ppt/pptx/odt/ods/odp/csv/rtf` 等列表内的文件,双击即可在线编辑(不需要先转格式)
-
-## 字段默认值
-- 文件名:默认「未命名」(扩展名自动加 .docx / .xlsx / .pptx)
-- 模板:空白文档/工作表/演示文稿
-
-## 不支持
-- 不能在任务附件区直接「新建 Word」,需先在文件页建好再附加
-- 不能跨类型转换(docx 改不成 xlsx)
-
-## 相关
-- 入口与权限:[[office.entry.menu-map]]
-- 多人协作能力:[[office.collaboration.concept]]
diff --git a/resources/ai-kb/zh/howto/okr/align.md b/resources/ai-kb/zh/howto/okr/align.md
deleted file mode 100644
index 2d7c67203..000000000
--- a/resources/ai-kb/zh/howto/okr/align.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-id: okr.align.howto
-title: OKR 上下级对齐
-type: howto
-feature: okr
-scope: end-user
-locale: zh
-aliases:
- - OKR 对齐
- - 对齐上级 OKR
- - OKR 拆解
- - 个人 OKR 怎么跟团队
- - OKR 关联
- - OKR 上下游
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 okr 插件
- - 上级 / 团队 OKR 已经创建并可见
-negative:
- - 对齐不是抄袭,个人 KR 不应直接复制团队 KR
- - 对齐关系不会自动同步进度,需各自单独更新
-last_verified: v1.7.90
----
-
-# OKR 上下级对齐
-
-## 入口
-- 桌面端:左侧栏「应用」→「OKR 管理」→ 编辑自己的 OKR → 找到「对齐 / 关联上级」相关设置
-- 移动端:底部 Tabbar「应用」→「OKR 管理」→ 同上路径
-
-## 为什么要对齐
-对齐让个人 / 团队 OKR 与公司战略产生明确的因果链:上级的 O 拆成下级的 KR(或下级的某个 O),形成一棵目标树。这样团队成员能看到自己工作对全局的贡献。
-
-## 操作步骤
-1. 先了解上级 / 团队的 OKR 内容
-2. 创建或编辑自己的 OKR([[okr.create.howto]])
-3. 在 OKR 表单中关联到一条或多条上级 OKR
-4. 在自己的 KR 中明确「支撑了上级哪一项 KR」
-5. 保存后,上下级 OKR 之间会建立可追溯的关联
-
-## 对齐的几种方式
-- **垂直对齐**:个人 → 直属上级 → 团队 → 公司,自上而下的目标树
-- **横向对齐**:不同团队就同一战略协同时,互相关联 OKR
-- **混合对齐**:一个个人 OKR 可同时关联多条上级 OKR
-
-## 对齐时的建议
-- 不要把上级 KR 原文照搬到自己的 KR
-- 用「我做什么能帮上级达成 KR」的视角拆解
-- 与直属上级沟通后再正式对齐,确保理解一致
-
-## 不支持
-- 对齐不会自动复制 KR 内容
-- 上级 OKR 进度更新不会自动推算到下级,需各自单独更新
-
-## 相关
-- 团队 vs 个人 OKR:[[okr.team.concept]]
-- KR 更新:[[okr.update-progress.howto]]
diff --git a/resources/ai-kb/zh/howto/okr/create.md b/resources/ai-kb/zh/howto/okr/create.md
deleted file mode 100644
index 8efe89a99..000000000
--- a/resources/ai-kb/zh/howto/okr/create.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-id: okr.create.howto
-title: 创建 OKR
-type: howto
-feature: okr
-scope: end-user
-locale: zh
-aliases:
- - 怎么定 OKR
- - 写 OKR
- - 新建 OKR
- - 建一条 OKR
- - 加 OKR
- - 我要写 OKR
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 okr 插件
- - 已确定本周期的目标方向
-negative:
- - O 本身不带数字,量化交给 KR
- - 一个 O 建议配 2-5 个 KR,不要超过 5 个
-last_verified: v1.7.90
----
-
-# 创建 OKR
-
-## 入口
-- 桌面端:左侧栏「应用」→「OKR 管理」(`apps/okr/list`)
-- 移动端:底部 Tabbar「应用」→「OKR 管理」
-- 在「我的 OKR」或类似列表页有「+ 新建」入口
-
-## 操作步骤
-1. 打开「OKR 管理」页面
-2. 点击新建按钮,进入 OKR 编辑表单
-3. 填写 Objective(O):用一句话写清这个周期想达成什么(不写数字)
-4. 添加 Key Result(KR):按「+」逐条添加 2-5 个可量化的关键结果
-5. 选择所属周期(如 Q1/Q2/Q3/Q4 或年度,按团队约定)
-6. 可选:对齐到上级 / 团队 OKR(参见 [[okr.align.howto]])
-7. 保存提交
-
-## 写作建议
-- O 短小有方向感,例:「让新用户更快上手」
-- KR 必须可量化,带起点和目标值,例:「新用户首日留存率从 35% 提升到 50%」
-- 一次最多 3-5 个 O,避免分散注意力
-- 写完邀请直属上级或团队过审,确保方向对齐
-
-## 创建后能做什么
-- 周期内:定期更新 KR 进度([[okr.update-progress.howto]])
-- 周期内:在 OKR 详情接收同事反馈与点评
-- 周期末:参与评审复盘([[okr.review.howto]])
-
-## 不支持
-- O 字段不应填数字指标——量化交给 KR
-- 已创建的 OKR 不建议中途频繁改 O 内容,需要调整时建议留改动记录或新建版本
-
-## 相关
-- O 是什么:[[okr.objective.concept]]
-- KR 是什么:[[okr.kr.concept]]
-- 周期:[[okr.cycle.concept]]
diff --git a/resources/ai-kb/zh/howto/okr/review.md b/resources/ai-kb/zh/howto/okr/review.md
deleted file mode 100644
index 4e59222c5..000000000
--- a/resources/ai-kb/zh/howto/okr/review.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-id: okr.review.howto
-title: OKR 周期评审与复盘
-type: howto
-feature: okr
-scope: end-user
-locale: zh
-aliases:
- - OKR 复盘
- - OKR 评分
- - OKR 总结
- - OKR 周期末做什么
- - OKR 怎么打分
- - OKR review
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 okr 插件
- - 已在进行中的 OKR 接近周期末
-negative:
- - OKR 分数不直接等同于绩效,不应与薪酬强绑定
- - 60-70% 的完成度通常算合格,挑战性目标 100% 反而值得反思
-last_verified: v1.7.90
----
-
-# OKR 周期评审与复盘
-
-## 入口
-- 桌面端:左侧栏「应用」→「OKR 管理」→ 选中要评审的 OKR
-- 管理员视角:左侧栏「应用」→「OKR 结果」(`apps/okr/analysis`),可看全员汇总数据
-
-## 评审时机
-- 周期末(季度末 / 年末)的最后 1-2 周
-- 重大里程碑节点(可做中期评审)
-
-## 操作步骤
-1. 把所有 KR 的最终进度更新到位(参见 [[okr.update-progress.howto]])
-2. 打开 OKR 详情,逐条 KR 给出最终得分(0-100%)
-3. 写一段总结,回答:
- - 哪些 KR 达成 / 未达成?原因?
- - 过程中遇到什么阻碍?怎么解决的?
- - 下一周期需要保留 / 调整什么?
-4. 邀请直属上级 / 团队成员一起复盘(建议召开 OKR 回顾会议)
-5. 沉淀经验后开新周期 OKR
-
-## 打分参考
-- **0.6-0.7**:挑战性目标的合格线(O 通常视为达成)
-- **0.4-0.6**:部分达成,需复盘原因
-- **< 0.4**:未达成,需要分析战略 / 执行问题
-- **1.0**:满分;若所有 KR 都满分,可能目标定得不够挑战
-
-## 团队层面
-- 管理员可在「OKR 结果」页面查看团队整体完成度分布与趋势
-- 用于发现共性阻碍、跨团队对齐缺口
-
-## 不支持
-- 分数本身不是绩效结论,应结合背景与过程综合判断
-- 复盘不应只走过场打分,关键在于沉淀经验
-
-## 相关
-- KR 概念:[[okr.kr.concept]]
-- 周期:[[okr.cycle.concept]]
-- 团队 OKR:[[okr.team.concept]]
diff --git a/resources/ai-kb/zh/howto/okr/update-progress.md b/resources/ai-kb/zh/howto/okr/update-progress.md
deleted file mode 100644
index c90e44143..000000000
--- a/resources/ai-kb/zh/howto/okr/update-progress.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-id: okr.update-progress.howto
-title: 更新 KR 进度
-type: howto
-feature: okr
-scope: end-user
-locale: zh
-aliases:
- - 更新 OKR 进度
- - 改 KR 进度
- - OKR 打分
- - KR 怎么填进度
- - 我的 OKR 怎么推进
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 okr 插件
- - 已创建至少一条 OKR(参见 [[okr.create.howto]])
-negative:
- - 只能由 KR 负责人(或团队管理员)更新进度,他人无法替改
- - 不建议每天频繁改动,业界推荐每周一次节奏
-last_verified: v1.7.90
----
-
-# 更新 KR 进度
-
-## 入口
-- 桌面端:左侧栏「应用」→「OKR 管理」→ 进入「我的 OKR」→ 选中目标 O → 找到对应 KR
-- 移动端:底部 Tabbar「应用」→「OKR 管理」→ 我的 OKR
-
-## 操作步骤
-1. 打开自己负责的某条 OKR
-2. 找到要更新的 KR 行
-3. 编辑当前进度(百分比 0-100% 或更新实际数值,由插件按 KR 类型解析)
-4. 可选:写一段进度说明(这周做了什么、遇到什么阻碍)
-5. 保存
-
-## 更新节奏
-- 推荐每周更新一次,月初 / 月末额外回顾
-- 重大进展 / 阻碍随时更新,让协作者及时看到
-- 周期末必须填最终值,作为评审打分依据(参见 [[okr.review.howto]])
-
-## 进度的含义
-- 0%:完全未启动
-- 30-60%:稳步推进中
-- 60-70%:达到挑战性目标的合格线
-- 100%:完成全部目标值
-- > 100%:超额达成(部分团队允许,按团队约定)
-
-## 不支持
-- 不能由非负责人替改 KR 进度
-- 改动会留下记录,无法静默修改
-
-## 相关
-- KR 是什么:[[okr.kr.concept]]
-- 周期评审:[[okr.review.howto]]
-- 创建 OKR:[[okr.create.howto]]
diff --git a/resources/ai-kb/zh/howto/search/contact.md b/resources/ai-kb/zh/howto/search/contact.md
deleted file mode 100644
index ef32c86c0..000000000
--- a/resources/ai-kb/zh/howto/search/contact.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-id: search.contact.howto
-title: 搜索联系人
-type: howto
-feature: search
-scope: end-user
-locale: zh
-aliases:
- - 找人
- - 搜人
- - 搜同事
- - 怎么找联系人
- - 按技能找人
- - 搜邮箱
-related_tools: [search_users]
-related_pages: []
-prerequisites: []
-negative:
- - 不会返回已禁用账号(`disable_at` 不为空)
- - 不会返回机器人账号(`bot=1`)
- - 单次最多返回 50 条(默认 20)
-last_verified: v1.7.90
----
-
-# 搜索联系人
-
-## 入口
-- 全局搜索框([[search.entry.menu-map]])输入关键词,切换到「联系人」分类,或不切分类查看跨类结果
-- 在新建群、邀请项目成员等成员选择器里也会复用联系人搜索
-
-## 接口
-- 端点:`GET api/search/contact`
-- 参数:
- - `key`(必填):搜索关键词,空串直接返回空数组
- - `search_type`(可选):`text` / `vector` / `hybrid`,默认 `hybrid`,仅 Manticore 生效
- - `take`(可选):返回数量,默认 20,上限 50
-
-## 匹配字段
-装了 Manticore 时可命中:昵称、邮箱、个人简介、技能标签。MySQL 回退仅按昵称 / 邮箱 / 部门做 `LIKE` 模糊匹配。
-
-## 返回字段(每条)
-- 用户基础信息:`userid` / `nickname` / `email` / `avatar` / `profession`
-- `relevance`:相关度分(Manticore 才有,MySQL 回退恒为 0)
-- `introduction_preview`:命中简介片段
-- `search_tags`:命中的技能标签数组(最多 10 个,按认可数排序)
-
-## 不支持
-- 不会返回已禁用 / 已离职的账号
-- 不会返回机器人账号
-- 不会单次返回超过 50 条结果(最多 50 条)
-- 无权访问的用户也搜不到
-
-## 相关
-- 引擎差异:[[search.engine.concept]]
-- 入口与快捷键:[[search.entry.menu-map]]
diff --git a/resources/ai-kb/zh/howto/search/file.md b/resources/ai-kb/zh/howto/search/file.md
deleted file mode 100644
index 54bd0a489..000000000
--- a/resources/ai-kb/zh/howto/search/file.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-id: search.file.howto
-title: 搜索文件
-type: howto
-feature: search
-scope: end-user
-locale: zh
-aliases:
- - 找文件
- - 搜文件
- - 搜文档内容
- - 怎么搜文件内容
- - PDF 搜索
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 未装 search 插件时只能搜文件名,搜不到正文
- - Office 文件超过 50MB / 文本超过 5MB / 其他类型超过 20MB 不索引正文
- - 提取后正文超过 10 万字符会被截断
- - 单次最多返回 50 条(默认 20)
-last_verified: v1.7.90
----
-
-# 搜索文件
-
-## 入口
-- 全局搜索框([[search.entry.menu-map]])输入关键词,切到「文件」分类
-- 文件管理器(左侧栏「文件」)内的局部搜索复用同一接口
-
-## 接口
-- 端点:`GET api/search/file`
-- 参数:
- - `key`(必填):搜索关键词,空则返回空数组
- - `search_type`(可选):`text` / `vector` / `hybrid`,默认 `hybrid`,仅 Manticore 生效
- - `take`(可选):返回数量,默认 20,上限 50
-
-## 匹配字段
-- 装 Manticore:文件名 + 正文(支持 Word / Excel / PPT / PDF / TXT / Markdown / 代码文件等)
-- 未装 Manticore:仅文件名 `LIKE` 模糊匹配,先查用户自己的文件,再补充共享给当前用户的文件
-
-可索引正文的类型:`document` / `word` / `excel` / `ppt` / `txt` / `md` / `text` / `code`。
-
-## 权限范围
-只返回当前用户**自己上传**或**被共享给当前用户**的文件,且按 Manticore 索引的 `allowed_users` 二次过滤。
-
-## 返回字段(每条)
-- 文件基础信息:`id` / `name` / `type` / `ext` / `size` / `userid` / `pid` 等
-- `relevance`:相关度分(仅 Manticore,MySQL 回退恒为 0)
-- `content_preview`:命中正文片段(仅 Manticore)
-
-## 不支持
-- 未装 search 插件搜不到文件内部文本,搜不到内容 → [[search.engine.concept]]
-- 大文件不索引正文(限额见 frontmatter `negative`)
-- 不会单次返回超过 50 条结果(最多 50 条)
diff --git a/resources/ai-kb/zh/howto/search/message.md b/resources/ai-kb/zh/howto/search/message.md
deleted file mode 100644
index ef20d41cf..000000000
--- a/resources/ai-kb/zh/howto/search/message.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-id: search.message.howto
-title: 搜索消息
-type: howto
-feature: search
-scope: end-user
-locale: zh
-aliases:
- - 搜聊天记录
- - 找消息
- - 搜消息
- - 在群里搜消息
- - 怎么找以前的聊天
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 只能搜到当前用户能访问的会话内消息(私聊 / 自己加入的群)
- - 机器人消息不会被搜出(`bot=1` 过滤)
- - 指定 `dialog_id` 时会校验当前用户是否在该对话内,无权访问会报错
- - 单次最多返回 50 条(默认 20)
-last_verified: v1.7.90
----
-
-# 搜索消息
-
-## 入口
-- 全局搜索框([[search.entry.menu-map]])输入关键词,切到「消息」分类
-- 在某个聊天窗口内的「搜索本对话」框,会自动带上 `dialog_id` 只搜该对话
-
-## 接口
-- 端点:`GET api/search/message`
-- 参数:
- - `key`(必填):搜索关键词,空则返回空数组
- - `search_type`(可选):`text` / `vector` / `hybrid`,默认 `hybrid`,仅 Manticore 生效
- - `take`(可选):返回数量,默认 20,上限 50
- - `mode`(可选):`message` / `position` / `dialog`,默认 `message`
- - `dialog_id`(可选):筛选指定对话内的消息,非 0 时需有权访问
-
-## mode 三种返回格式
-- `message`(默认):返回完整消息,含发送者、消息体、时间、相关度
-- `position`:只返回消息 ID 数组,用于跳转定位
-- `dialog`:按会话聚合,每个会话只返回 1 条命中(带 `search_msg_id` 用于跳定位)
-
-## 权限范围
-通过 `accessibleByUser($userid)` 限制:只能搜到「当前用户在对话成员列表里的会话」中的消息。指定 `dialog_id` 时额外做 `WebSocketDialog::checkDialog` 校验。
-
-## 不支持
-- 搜不到机器人消息
-- 搜不到非成员会话的消息
-- 不会单次返回超过 50 条结果(最多 50 条)
-- 文件 / 图片消息只能按文件名命中,无法按图片内容搜索
-
-## 相关
-- 引擎差异:[[search.engine.concept]]
-- 搜不到怎么办:[[search.no-result.faq]]
diff --git a/resources/ai-kb/zh/howto/search/project.md b/resources/ai-kb/zh/howto/search/project.md
deleted file mode 100644
index 6efd1faaf..000000000
--- a/resources/ai-kb/zh/howto/search/project.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-id: search.project.howto
-title: 搜索项目
-type: howto
-feature: search
-scope: end-user
-locale: zh
-aliases:
- - 找项目
- - 搜项目
- - 怎么找项目
- - 项目搜不到
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - 不会返回已归档项目(`archived_at` 不为空)
- - 不会返回当前用户没有加入的项目
- - 单次最多返回 50 条(默认 20)
-last_verified: v1.7.90
----
-
-# 搜索项目
-
-## 入口
-- 全局搜索框([[search.entry.menu-map]])输入关键词,切到「项目」分类
-- 项目列表 / 项目选择器内的局部搜索复用同一接口
-
-## 接口
-- 端点:`GET api/search/project`
-- 参数:
- - `key`(必填):搜索关键词,空则返回空数组
- - `search_type`(可选):`text` / `vector` / `hybrid`,默认 `hybrid`,仅 Manticore 生效
- - `take`(可选):返回数量,默认 20,上限 50
-
-## 匹配字段
-装了 Manticore 时可命中:项目名、项目描述、文本类附加信息。MySQL 回退仅按项目名做 `LIKE` 模糊匹配。
-
-## 权限范围
-仅在「当前用户已加入的项目」范围内搜,使用 `Project::authData()` 限定。未加入的项目即使关键词匹配也不会返回。
-
-## 返回字段(每条)
-- 项目基础信息:`id` / `name` / `desc` / `owner_userid` / `created_at` 等
-- `relevance`:相关度分(仅 Manticore,MySQL 回退恒为 0)
-- `desc_preview`:命中描述片段(仅 Manticore)
-
-## 不支持
-- 已归档项目不返回(解归档后才能搜到,[[search.no-result.faq]])
-- 不在当前用户成员列表的项目不返回
-- 不会单次返回超过 50 条结果(最多 50 条)
-
-## 相关
-- 引擎差异:[[search.engine.concept]]
-- 搜不到怎么办:[[search.no-result.faq]]
diff --git a/resources/ai-kb/zh/howto/search/task.md b/resources/ai-kb/zh/howto/search/task.md
deleted file mode 100644
index 5cf957285..000000000
--- a/resources/ai-kb/zh/howto/search/task.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-id: search.task.howto
-title: 搜索任务
-type: howto
-feature: search
-scope: end-user
-locale: zh
-aliases:
- - 找任务
- - 搜任务
- - 找待办
- - 怎么搜到子任务
- - task 搜索
-related_tools: [list_tasks]
-related_pages: []
-prerequisites: []
-negative:
- - 不会返回已归档任务(`archived_at` 不为空)
- - 不会返回已删除任务(`deleted_at` 不为空)
- - 不会返回当前用户所在项目以外的任务
- - 单次最多返回 50 条(默认 20)
-last_verified: v1.7.90
----
-
-# 搜索任务
-
-## 入口
-- 全局搜索框([[search.entry.menu-map]])输入关键词,切到「任务」分类
-- 项目内 / 看板内的局部搜索也复用同一接口
-
-## 接口
-- 端点:`GET api/search/task`
-- 参数:
- - `key`(必填):搜索关键词,空则返回空数组
- - `search_type`(可选):`text` / `vector` / `hybrid`,默认 `hybrid`,仅 Manticore 生效
- - `take`(可选):返回数量,默认 20,上限 50
-
-## 匹配字段
-装了 Manticore 时可命中:任务名、任务描述、子任务内容、备注等正文。MySQL 回退仅按任务名做 `LIKE` 模糊匹配,描述里的关键词搜不到。
-
-## 权限范围
-仅在「当前用户已加入的项目」内的任务范围搜索,且排除已归档、已删除任务。子任务也会被命中并返回。
-
-## 返回字段(每条)
-- 任务基础信息:`id` / `name` / `desc` / `start_at` / `end_at` / `complete_at` 等
-- 关联信息:`task_user`(负责人 / 协作者)、`task_tag`(任务标签)
-- `relevance`:相关度分(仅 Manticore)
-- `desc_preview`:命中描述片段
-- `content_preview`:命中子任务 / 内容片段
-
-## 不支持
-- 已归档 / 已删除任务不返回(先恢复才能搜到)
-- 跨项目时只能搜当前用户参与的项目
-- 不会单次返回超过 50 条结果(最多 50 条)
-
-## 相关
-- 引擎差异:[[search.engine.concept]]
-- 搜不到怎么办:[[search.no-result.faq]]
diff --git a/resources/ai-kb/zh/menu-map/approve/entry.md b/resources/ai-kb/zh/menu-map/approve/entry.md
deleted file mode 100644
index d51c9d34f..000000000
--- a/resources/ai-kb/zh/menu-map/approve/entry.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-id: approve.entry.menu-map
-title: 审批中心入口在哪
-type: menu-map
-feature: approve
-scope: end-user
-locale: zh
-aliases:
- - 审批在哪
- - 怎么进审批
- - 审批中心入口
- - 走流程在哪
- - 找不到审批
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 approve 插件
- - 管理员已配置至少一个审批流程模板
-negative:
- - 未安装 approve 插件时左侧应用中心看不到「审批」卡片
- - 没有可用流程模板时进入页面会提示「暂无数据」,发起按钮无效
-last_verified: v1.7.90
----
-
-# 审批中心入口在哪
-
-## 路径
-- 桌面端:左侧栏「应用」→ 卡片「审批」
-- 移动端:底部 Tabbar「应用」→ 列表「审批」
-- 快捷键:无
-
-## 页面结构
-进入后顶部是 4 个 Tab,按用户视角分组:
-- **待办**:分配给我、需要我点同意/拒绝的审批,Tab 名后会带未读数量(如「待办(3)」)
-- **已办**:我曾经处理过(同意/拒绝/撤销)的审批
-- **抄送我**:流程节点把我设为抄送人的审批
-- **已发起**:我自己提交的审批,含审批中/通过/拒绝/撤回各状态
-
-## 权限要求
-- end-user 任何登录用户均可见入口和这 4 个 Tab
-- admin 会额外看到「流程设置」按钮(在页面右上角);管理员的流程模板配置不在本 chunk 范围
-
-## 相关
-- 简介与一图速览:[[app-system.approve.howto]]
-- 是什么:[[approve.concept]]
-- 怎么发起:[[approve.start.howto]]
diff --git a/resources/ai-kb/zh/menu-map/drawio/entry.md b/resources/ai-kb/zh/menu-map/drawio/entry.md
deleted file mode 100644
index 133641cd5..000000000
--- a/resources/ai-kb/zh/menu-map/drawio/entry.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-id: drawio.entry.menu-map
-title: 流程图入口在哪
-type: menu-map
-feature: drawio
-scope: end-user
-locale: zh
-aliases:
- - 流程图在哪
- - 找不到流程图
- - drawio 入口
- - 怎么打开 drawio
- - 图表在哪个菜单
-related_tools: []
-related_pages: [file, application]
-prerequisites:
- - 应用市场已安装 drawio 插件
-negative:
- - 流程图不是左侧栏一级菜单,要从「文件」页进入
- - 未安装 drawio 插件时,文件新建菜单不会出现「图表」选项
- - 没有「在线流程图中心」这种独立页面,所有图都散落在各自文件夹中
-last_verified: v1.7.90
----
-
-# 流程图入口在哪
-
-## 路径
-流程图作为「文件」存在,没有独立的一级菜单,入口都在文件相关页面:
-
-- 桌面端:左侧栏「文件」→ 文件列表右上角「新建」→「图表」
-- 桌面端(右键):文件页空白区右键 →「新建」→「图表」
-- 桌面端(项目):进入项目详情 →「文件」标签页 → 新建菜单 →「图表」
-- 移动端:底部 Tabbar「文件」→ 选定目标文件夹 → 右下角「+」按钮 →「图表」
-- 已有 drawio 文件:在文件列表直接双击/单击文件名即可打开
-
-> 菜单文案叫「图表」,文件类型字段叫 `drawio`,是同一个东西。
-
-## 编辑器布局
-进入后页面被 iframe 全屏占用,drawio 标准三栏:
-- 左侧:图形库(流程图、UML、网络、思维导图等多分类可勾选)
-- 中部:画布
-- 右侧:选中元素的样式/几何/排版面板
-- 顶部:菜单栏(File/Edit/View/Arrange/Extras/Help)
-
-## 权限要求
-- 普通成员:在自己有权访问的文件夹/项目内可建可编辑
-- 只读访问者:只能预览,无法编辑(drawio 以 `readOnly=true` 模式打开)
-
-## 看不到入口怎么办
-1. 确认应用市场已装 drawio 插件(约 700MB,安装较慢,按「安装日志」判断进度)
-2. 没有「新建」按钮通常是当前文件夹无写入权限,换文件夹再试
-
-## 相关
-- 插件元信息:[[drawio.plugin.concept]]
-- 是什么:[[drawio.concept]]
diff --git a/resources/ai-kb/zh/menu-map/kpi/entry.md b/resources/ai-kb/zh/menu-map/kpi/entry.md
deleted file mode 100644
index 7a56ebfc5..000000000
--- a/resources/ai-kb/zh/menu-map/kpi/entry.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-id: kpi.entry.menu-map
-title: KPI 绩效考核入口
-type: menu-map
-feature: kpi
-scope: end-user
-locale: zh
-aliases:
- - KPI 在哪
- - 怎么打开绩效
- - 找不到绩效考核
- - 绩效入口
- - 怎么进 KPI
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 kpi 插件
- - 主程序版本 > 1.4.67
-negative:
- - 主程序不内置 KPI,未装插件时入口不会出现
- - 主程序版本不够无法安装插件,入口也不会出现
- - 不同角色看到的页面功能不同,但入口是同一个
-last_verified: v1.7.90
----
-
-# KPI 绩效考核入口
-
-## 路径
-KPI 由独立插件 `community_kuaifan_kpi` 提供,安装后在应用中心注册一个菜单项:
-
-- 桌面端:左侧栏「应用」→「绩效考核」(对应 URL `apps/kpi`)
-- 移动端:底部 Tabbar「应用」→「绩效考核」
-- URL 上会自动附带 `theme` 参数,用于主题(亮 / 暗)同步
-
-## 加载方式
-- 菜单项类型 `url_type: iframe`,在 DooTask 主框架内嵌打开
-- `immersive: true`:进入后会全屏沉浸展示,左侧主导航被收起
-- 同一个入口对所有角色可见,进入后页面根据当前用户的 KPI 角色(employee / manager / hr)展示对应功能
-
-## 权限要求
-- 入口本身:所有已登录用户可见
-- 角色映射:
- - DooTask 系统管理员 → KPI 内部 hr 角色
- - DooTask 部门负责人 → KPI 内部 manager 角色
- - 其他用户 → KPI 内部 employee 角色
-- 注意:角色只在用户首次进入 KPI 时分配,后续 DooTask 角色变更不会自动同步
-
-## 看不到入口怎么办
-1. 确认应用市场已安装 `kpi` 插件
-2. 主程序版本必须 > 1.4.67,否则插件无法安装
-3. 容器首次启动需要拉取镜像,可能等待几分钟
-4. 安装完成后刷新页面或重新登录让菜单生效
-
-## 相关
-- 插件元信息:[[kpi.plugin.concept]]
-- KPI 是什么:[[kpi.concept]]
-- 创建考核:[[kpi.create.howto]]
diff --git a/resources/ai-kb/zh/menu-map/memos/entry.md b/resources/ai-kb/zh/menu-map/memos/entry.md
deleted file mode 100644
index 006098162..000000000
--- a/resources/ai-kb/zh/menu-map/memos/entry.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-id: memos.entry.menu-map
-title: Memos 笔记入口
-type: menu-map
-feature: memos
-scope: end-user
-locale: zh
-aliases:
- - Memos 在哪
- - 怎么打开 Memos
- - 找不到 Memos
- - 笔记入口
- - memos 应用入口
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 memos 插件
-negative:
- - 主程序不内置 Memos,未装插件时入口不会出现
- - 入口对所有登录用户可见,不要求管理员权限
-last_verified: v1.7.90
----
-
-# Memos 笔记入口
-
-## 路径
-Memos 由独立插件 `community_kuaifan_memos` 提供,安装后在应用中心注册一个菜单项:
-
-- 桌面端:左侧栏「应用」→「Memos 笔记」(对应 URL `apps/memos/`)
-- 移动端:底部 Tabbar「应用」→「Memos 笔记」
-- URL 上会自动附带 `token`、`lang`、`theme` 参数,用于单点登录与主题同步
-
-## 加载方式
-- 菜单项类型 `url_type: iframe`,在 DooTask 主框架内嵌打开
-- `immersive: true`:进入页面后会全屏沉浸展示
-- 隐藏 DooTask 的浮动胶囊条(与 Memos 自带顶栏重叠),返回主程序请使用 Memos 左侧栏的「关闭应用」按钮
-
-## 权限要求
-- 所有已登录的 DooTask 用户可见可用
-- 是否成为 Memos 管理员,由安装时的「管理员」配置决定(其余用户为普通成员)
-
-## 看不到入口怎么办
-1. 确认应用市场已安装 `memos` 插件
-2. 容器首次启动需要拉取镜像,可能等待几分钟
-3. 刷新页面或重新登录 DooTask 让菜单生效
-
-## 相关
-- 插件元信息:[[memos.plugin.concept]]
-- Memos 是什么:[[memos.concept]]
-- 写一条 memo:[[memos.create.howto]]
diff --git a/resources/ai-kb/zh/menu-map/menu-navigation/ai-assistant.md b/resources/ai-kb/zh/menu-map/menu-navigation/ai-assistant.md
index 1de7d8da5..09e92d277 100644
--- a/resources/ai-kb/zh/menu-map/menu-navigation/ai-assistant.md
+++ b/resources/ai-kb/zh/menu-map/menu-navigation/ai-assistant.md
@@ -37,6 +37,5 @@ last_verified: v1.7.90
- 单个会话由当前账号私有,不会跨账号
## 相关
-- 浮动入口与场景模式:[[ai-assistant.entry.howto]]
-- 快速开始:[[ai-assistant.entry.howto]]
+- 浮动入口、场景模式与快速开始等详细说明,随 AI 助手(ai)插件一并提供,安装后即可在 AI 助手中检索
- 模型与默认值由管理员配:[[system-setting.ai-model.howto]]
diff --git a/resources/ai-kb/zh/menu-map/menu-navigation/apps.md b/resources/ai-kb/zh/menu-map/menu-navigation/apps.md
index cad0d69ea..58acf4e9d 100644
--- a/resources/ai-kb/zh/menu-map/menu-navigation/apps.md
+++ b/resources/ai-kb/zh/menu-map/menu-navigation/apps.md
@@ -42,5 +42,5 @@ last_verified: v1.7.90
## 相关
- 应用排序:[[menu-navigation.apps-sort.menu-map]]
- 微应用入口:[[micro-app.entry.menu-map]]
-- 审批中心:[[approve.entry.menu-map]]
+- 审批中心:随审批(approve)插件提供,安装后可在 AI 助手中检索
- 在线会议:[[meeting.entry.menu-map]]
diff --git a/resources/ai-kb/zh/menu-map/menu-navigation/new-approve.md b/resources/ai-kb/zh/menu-map/menu-navigation/new-approve.md
index f71a6ccc4..d02c5f8b5 100644
--- a/resources/ai-kb/zh/menu-map/menu-navigation/new-approve.md
+++ b/resources/ai-kb/zh/menu-map/menu-navigation/new-approve.md
@@ -36,6 +36,4 @@ last_verified: v1.7.90
- 要看到具体模板,须管理员先在「流程设置」配置
## 相关
-- 审批中心总览:[[approve.entry.menu-map]]
-- 发起步骤:[[approve.start.howto]]
-- 概念:[[approve.concept]]
+- 审批的中心总览、发起步骤与概念等详细说明,随审批(approve)插件一并提供,安装后即可在 AI 助手中检索
diff --git a/resources/ai-kb/zh/menu-map/menu-navigation/search.md b/resources/ai-kb/zh/menu-map/menu-navigation/search.md
index d127abed3..e7ee0951b 100644
--- a/resources/ai-kb/zh/menu-map/menu-navigation/search.md
+++ b/resources/ai-kb/zh/menu-map/menu-navigation/search.md
@@ -32,12 +32,12 @@ last_verified: v1.7.90
## 搜索范围
- 任务名 / 项目名 / 文件名 / 联系人 / 历史消息内容
-- 支持语义搜索(详见 [[search.concept]])
+- 支持语义搜索(语义搜索能力由全文搜索 search 插件提供)
## 权限要求
- end-user 可用
- 结果只返回当前账号有权访问的对象
## 相关
-- 搜索能力总览:[[search.entry.menu-map]]
+- 搜索能力总览随全文搜索(search)插件提供,安装后可在 AI 助手中检索
- 高级搜索语法:高级筛选
diff --git a/resources/ai-kb/zh/menu-map/minder/entry.md b/resources/ai-kb/zh/menu-map/minder/entry.md
deleted file mode 100644
index b5e86b53f..000000000
--- a/resources/ai-kb/zh/menu-map/minder/entry.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-id: minder.entry.menu-map
-title: 思维导图入口在哪
-type: menu-map
-feature: minder
-scope: end-user
-locale: zh
-aliases:
- - 思维导图在哪
- - 找不到思维导图
- - 脑图入口
- - 怎么打开思维导图
- - 思维导图在哪个菜单
-related_tools: []
-related_pages: [file, application]
-prerequisites:
- - 应用市场已安装 minder 插件
-negative:
- - 思维导图不是左侧栏一级菜单,要从「文件」页进入
- - 未安装 minder 插件时,文件新建菜单不会出现「思维导图」选项
- - 移动端入口与桌面端一致,仅交互略有不同
-last_verified: v1.7.90
----
-
-# 思维导图入口在哪
-
-## 路径
-思维导图作为「文件」存在,没有独立的一级菜单,入口都在文件相关页面:
-
-- 桌面端:左侧栏「文件」→ 文件列表右上角「新建」→「思维导图」
-- 桌面端(右键):文件页空白区右键 →「新建」→「思维导图」
-- 桌面端(项目):进入项目详情 →「文件」标签页 → 新建菜单 →「思维导图」
-- 移动端:底部 Tabbar「文件」→ 选定目标文件夹 → 右下角「+」按钮 →「思维导图」
-- 已有 mind 文件:在文件列表直接双击/单击文件名即可打开
-
-## 编辑器布局
-进入后页面被 iframe 全屏占用:
-- 左下角浮动工具条:缩放、图形模板、主题切换、折叠层级、居中、移动模式
-- 节点直接双击即可编辑文本
-
-## 权限要求
-- 普通成员:在自己有权访问的文件夹/项目内可建可编辑
-- 只读访问者:只能预览,无法编辑
-
-## 看不到入口怎么办
-1. 确认应用市场已装 minder 插件(约 20MB,安装较慢)
-2. 没有「新建」按钮通常是当前文件夹无写入权限,换文件夹再试
-
-## 相关
-- 插件元信息:[[minder.plugin.concept]]
-- 是什么:[[minder.concept]]
diff --git a/resources/ai-kb/zh/menu-map/office/entry.md b/resources/ai-kb/zh/menu-map/office/entry.md
deleted file mode 100644
index 9e4c75d41..000000000
--- a/resources/ai-kb/zh/menu-map/office/entry.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-id: office.entry.menu-map
-title: 在线文档入口在哪
-type: menu-map
-feature: office
-scope: end-user
-locale: zh
-aliases:
- - 在线文档在哪
- - 在线 Word 入口
- - 在哪建在线表格
- - office 在哪
- - 找不到在线 PPT
-related_tools: []
-related_pages: [file, application]
-prerequisites:
- - 应用市场已安装 office(OnlyOffice)插件
-negative:
- - 在线文档不是左侧栏一级菜单,要从「文件」页进入
- - 未安装 office 插件时,双击 Word/Excel/PPT 文件不会进入编辑器,只显示静态预览(依赖 fileview 插件)
- - 没有「在线文档中心」这种独立页面,所有 office 文档散落在各自文件夹中
-last_verified: v1.7.90
----
-
-# 在线文档入口在哪
-
-## 路径
-在线 Word/Excel/PPT 作为「文件」存在,没有独立的一级菜单,入口都在文件相关页面:
-
-- 桌面端:左侧栏「文件」→ 文件列表右上角「新建」→「Word 文档 / Excel 工作表 / PPT 演示文稿」
-- 桌面端(右键):文件页空白区右键 →「新建」→ 同上三选一
-- 桌面端(项目):进入项目详情 →「文件」标签页 → 新建菜单 → 同上三选一
-- 移动端:底部 Tabbar「文件」→ 选定目标文件夹 → 右下角「+」按钮 → 同上三选一
-- 已有文档:在文件列表直接双击/单击文件名即可打开编辑
-
-## 上传后自动可编辑
-扩展名在以下列表内的上传文件,双击即可在线编辑(无需先转格式):
-- Word 系:doc, docx, dot, dotx, odt, ott, rtf
-- Excel 系:xls, xlsx, xlsm, xlt, xltx, ods, ots, csv, tsv
-- PPT 系:ppt, pptx, pps, ppsx, pot, potx, odp, otp
-
-## 编辑器布局
-进入后页面被 iframe 全屏占用,由 OnlyOffice 提供完整菜单:
-- 顶部:标题栏(含协作者头像)+ 菜单栏(文件、首页、插入、布局、引用、协作、视图等)
-- 中部:文档编辑区
-- 右侧:批注、聊天、协作状态浮层
-
-## 权限要求
-- 普通成员:在自己有权访问的文件夹/项目内可建可编辑
-- 只读访问者:只能预览,无法编辑
-
-## 看不到入口怎么办
-1. 确认应用市场已装 office 插件(约 1.3GB,安装较慢)
-2. 没有「新建」按钮通常是当前文件夹无写入权限,换文件夹再试
-
-## 相关
-- 插件元信息:[[office.plugin.concept]]
-- 是什么:[[office.concept]]
diff --git a/resources/ai-kb/zh/menu-map/okr/entry.md b/resources/ai-kb/zh/menu-map/okr/entry.md
deleted file mode 100644
index d0cb91968..000000000
--- a/resources/ai-kb/zh/menu-map/okr/entry.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-id: okr.entry.menu-map
-title: OKR 入口在哪里
-type: menu-map
-feature: okr
-scope: end-user
-locale: zh
-aliases:
- - OKR 在哪
- - 怎么打开 OKR
- - 找不到 OKR
- - OKR 管理入口
- - OKR 结果在哪看
-related_tools: []
-related_pages: [application]
-prerequisites:
- - 应用市场已安装 okr 插件(约 15MB)
-negative:
- - 主程序不内置 OKR,未装插件时入口不会出现
- - 「OKR 结果」(OKR Analysis)入口仅系统管理员可见
-last_verified: v1.7.90
----
-
-# OKR 入口在哪里
-
-## 路径
-OKR 由独立插件提供,安装后会在应用中心注册两个菜单项:
-
-- 桌面端:左侧栏「应用」→「OKR 管理」(对应 URL `apps/okr/list`)
-- 移动端:底部 Tabbar「应用」→「OKR 管理」
-- 管理员视角:左侧栏「应用」→「管理员应用」→「OKR 结果」(对应 URL `apps/okr/analysis`,仅 admin 可见)
-
-## 加载方式
-两个入口都是 `url_type: inline`,会在 DooTask 主框架内嵌打开插件页面,不跳转到外部站点。
-
-## 权限要求
-- 「OKR 管理」:所有已登录用户可见可用
-- 「OKR 结果」:只有系统管理员(`userIsAdmin`)能看到入口
-
-## 看不到入口怎么办
-1. 确认应用市场已安装 okr 插件,参见 [[okr.cannot-install.faq]]
-2. 安装较慢(约 15MB),首次安装后等几分钟刷新页面
-3. 「OKR 结果」入口缺失通常是因为当前用户不是系统管理员
-
-## 相关
-- 插件元信息:[[okr.plugin.concept]]
-- OKR 方法论:[[okr.concept]]
diff --git a/resources/ai-kb/zh/menu-map/search/entry.md b/resources/ai-kb/zh/menu-map/search/entry.md
deleted file mode 100644
index 5d4a6ef09..000000000
--- a/resources/ai-kb/zh/menu-map/search/entry.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-id: search.entry.menu-map
-title: 全局搜索入口在哪
-type: menu-map
-feature: search
-scope: end-user
-locale: zh
-aliases:
- - 搜索快捷键
- - 怎么打开搜索
- - 搜索框在哪
- - 搜索入口
- - Ctrl F
- - Cmd F
-related_tools: []
-related_pages: []
-prerequisites: []
-negative:
- - "桌面端无顶部固定搜索栏按钮,主要通过快捷键唤起"
- - "`Ctrl/Cmd + Shift + F` 不是全局搜索,会被浏览器或系统拦截"
-last_verified: v1.7.90
----
-
-# 全局搜索入口在哪
-
-## 路径
-- 桌面端:快捷键 `Ctrl + F` 或 `Cmd + F`(Mac)唤起全局搜索框
-- 桌面端备用快捷键:`Ctrl + /` 或 `Cmd + /`
-- 桌面端:左侧栏「仪表盘」页面中的「全局搜索」入口卡片
-- 移动端:底部 Tabbar / 仪表盘内的搜索按钮,点击弹出全屏搜索
-
-## 搜索框形态
-- 桌面端:居中弹窗,宽 768px,含输入框、5 个对象分类标签(任务 / 项目 / 消息 / 联系人 / 文件)和结果列表
-- 移动端(窗口宽 < 576px):自动全屏展开
-
-## 在搜索框内的操作
-- 输入关键词后自动延时触发搜索(无需回车)
-- 点击顶部标签可只看某一类对象的结果;再次点击取消筛选
-- 同时装了 search + ai 插件时,会出现「AI 搜索」按钮,把搜索词转给 AI 助手做语义对话
-
-## 权限要求
-- 所有登录用户均可使用,无角色限制
-- 但搜索结果会按用户权限过滤(见各子接口的权限说明,如 [[search.contact.howto]])
-
-## 不支持
-- 桌面端没有顶部常驻搜索栏,必须用快捷键或仪表盘入口
-- `Ctrl/Cmd + Shift + F` 已被快捷键路由忽略,不会触发全局搜索