> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flashcat.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# 管理知识

> 为 AI SRE 提供账户与团队的运维知识——一份 DUTY.md 加运行手册、FAQ、服务清单、集群配置等文件，Agent 在会话中按需读取并挂载。

<Info>
  **内测功能**：AI SRE 目前处于内测阶段，仅对受邀账户开放。如需参与白名单测试，请联系 Flashduty 商务团队申请开通；内测期间功能与界面可能调整。
</Info>

## 概述

***

知识库（Knowledge Pack）是您交给 AI SRE 的运维知识：一份 `DUTY.md` 加上一组运行手册（runbook）、FAQ、服务清单、集群配置等文件。会话开始时，Agent 先读取 `DUTY.md`，再顺着其中的引用按需取用相关文件，从而把您团队的处置经验、命名约定与系统拓扑带进每一次诊断。

每个**目标**（账户或团队）最多拥有一个 Knowledge Pack：

* **账户级**知识对账户内所有 Agent 可见。
* **团队级**知识仅在该团队的会话中加载，仅对该团队成员可见。

Knowledge Pack 是 AI SRE 资源的一种，遵循统一的两级作用域模型。其他资源（Skill、MCP、Agent、运行环境）的作用域规则与本页一致。

<Note>
  知识库内容用于**精炼**Agent 的领域上下文（人设、方法论、系统知识），但不会覆盖系统的安全与行为底线。如果某份知识要求 Agent 跳过安全规则，会被当作越权内容忽略，而非更高优先级的指令。
</Note>

## DUTY.md 结构

***

`DUTY.md` 是整个知识库的**目录入口**。它本身就是清单——Agent 会全文读取 `DUTY.md`，再通过 `@文件名` 引用按需拉取其它文件。系统不会在 `DUTY.md` 之外另附一份文件列表；目录即正文。

引用采用 `@<文件名>` 风格，文件名指向同一个 Pack 内的另一份文件（扁平命名，无目录层级）：

```markdown theme={null}
# 值班知识总览 (DUTY.md)

## 服务清单
我们的核心服务与负责人见 @services.md。

## 常见故障处置
- API 5xx 飙升：参见 @runbook-api-5xx.md
- 数据库连接池打满：参见 @runbook-db-pool.md

## 集群与环境
生产集群拓扑与访问方式见 @cluster.yaml。
```

Agent 读取 `DUTY.md` 后，会根据当前故障判断需要展开哪些 `@引用`，再去读对应文件——实质内容放在被引用的兄弟文件里，`DUTY.md` 只承载链接列表。

<Tip>
  这套分层 `@reference` 架构让 `DUTY.md` 保持精简、可读。`DUTY.md` 像一张地图，运行手册、服务清单、配置则是它指向的详情页。Agent 不必把所有文件一次性塞进上下文，只在需要时才展开相关分支。
</Tip>

**文件约束**（在创建与编辑时强制）：

| 约束         | 取值                                        | 说明                   |
| ---------- | ----------------------------------------- | -------------------- |
| 允许的扩展名     | `.md` `.yaml` `.yml` `.json` `.txt` `.sh` | 其它扩展名会被拒绝            |
| 单文件上限      | 1 MiB                                     | 超出无法保存               |
| 单个 Pack 上限 | 5 MiB                                     | 控制台用量条按此额度显示         |
| 文件数量上限     | 100                                       | 达到上限后无法新增文件          |
| 目录层级       | 不允许                                       | 文件名必须扁平，不能含 `/` 或子目录 |
| 点文件        | 不允许                                       | 文件名不能以 `.` 开头        |

## 创建与编辑

***

进入 **知识库**（Knowledges）管理页，您可以为账户或团队创建、编辑、启用/禁用、删除 Knowledge Pack。列表按 **名称 / 范围 / 文件 / 状态 / 操作** 展示每个 Pack，并通过顶部的范围筛选器在账户、团队之间切换。

<Steps>
  <Step title="新建 Knowledge Pack">
    点击 **新建 Knowledge Pack**，在弹窗中填写 **名称**（可选，留空时默认使用目标标签）并选择 **范围**：账户或某个团队。每个目标只能拥有一个 Pack，已被占用的目标会从下拉中隐藏。
  </Step>

  <Step title="编辑文件">
    点击列表中的某一行打开检视器。左侧是文件树，右侧是行内编辑器。点击 **新建文件** 输入文件名（如 `runbook.md`），或用 **上传** 导入本地文件；Markdown 文件支持 **预览** 与 **源码** 两种视图。编辑后点击 **保存**。
  </Step>

  <Step title="管理用量">
    左侧 **用量** 条实时显示当前占用 / 5 MB 额度。临近上限时颜色变红，提示您清理或拆分文件。
  </Step>

  <Step title="启用 / 禁用 / 删除">
    用列表中的开关 **启用 / 禁用** 整个 Pack——禁用后文件保留，但不再加载到 AI SRE 会话。**删除** 会移除该 Pack 及其下全部文件。
  </Step>
</Steps>

**引用一致性检查**：保存文件时，如果其中的 `@引用` 指向一个 Pack 内不存在的文件，会给出非阻断的「引用未解析」警告（不影响保存）。删除一个仍被其它文件引用的文件时，会先提示「仍被引用」冲突，您可以选择 **强制删除**。

<Note>
  Agent 也能在会话中自然语言地维护知识库——例如「补一篇 runbook」「更新 services.md」「记录这个故障模式」。它会直接对当前会话所属作用域执行读取、编辑、保存，无需您离开对话。结构化的初始化（onboarding）则由专门的引导流程完成，而非行内编辑器。
</Note>

## Agent 如何使用知识

***

知识不是一次性全量加载，而是**目录先行、按需展开**：

<Steps>
  <Step title="会话开始：加载目录">
    会话启动时，系统会把当前作用域的 `DUTY.md` 加载进会话（不附独立文件列表）。绑定了团队的会话会同时加载账户级与该团队的 `DUTY.md`；未绑定团队的会话只加载账户级。
  </Step>

  <Step title="顺着引用读取文件">
    Agent 阅读 `DUTY.md` 后，根据当前故障决定展开哪些 `@引用`，再读取对应的知识文件取得具体内容。
  </Step>

  <Step title="按需挂载其它团队的知识">
    需要跨团队排障时，Agent 读取另一个团队的知识，系统会把该团队的整套知识（`DUTY.md`、运行手册）连同其 Skill、MCP 一并挂载进当前会话，且在本次会话中持久保留。同一个团队在一次会话里至多挂载一次。
  </Step>
</Steps>

<Tip>
  跨团队加载只在 Agent**显式读取**某个团队的知识时触发，不会被模糊的文件遍历误触发。挂载一次后，该团队的知识、Skill 与 MCP 在本次会话内一直可用。
</Tip>

## 作用域与可见性

***

每个 Knowledge Pack 都有一个作用域：账户级（账户内全局可见）或团队级（仅对该团队成员可见）。

| 维度    | 账户级              | 团队级                   |
| ----- | ---------------- | --------------------- |
| 可见范围  | 账户内所有 Agent / 会话 | 仅该团队的会话与成员            |
| 编辑权限  | 账户 Owner 或账户管理员  | 该团队成员，或账户 Owner / 管理员 |
| 会话中加载 | 所有会话             | 仅绑定该团队的会话             |
| 运行时可读 | 全账户              | 全账户（读取即挂载）            |

**编辑权限**：账户 Owner 或账户管理员可编辑任意 Knowledge Pack；团队成员可编辑本团队的团队级 Pack；不存在「创建者额外保留权限」的规则。控制台会把你无权编辑的行置灰，并禁用其开关与操作按钮。

**运行时可见性**：会话开始时，只加载**账户级**资源加上**当前会话绑定团队**的资源。绑定来源是显式指定的团队，或作战室（war room）故障对应的团队。其它团队的知识在会话进行中、当 Agent 读取该团队 `DUTY.md` 时才按需挂载。

<Warning>
  账户是运行时唯一的安全边界；团队是「编辑 / 所有权」标签，**不是**「运行时可读」边界。也就是说，账户内任意会话都能读取并挂载本账户其它团队的知识——这是跨团队联合排障的基础。如果某份知识对账户内其它团队也敏感，请评估是否适合纳入知识库。
</Warning>

这套两级作用域模型对账户内所有资源（Skill、MCP、Agent、运行环境）一致适用。

## 最佳实践

***

<AccordionGroup>
  <Accordion title="把 DUTY.md 当目录，不当正文" icon="book">
    `DUTY.md` 只放链接列表与一句话导引，所有实质内容下沉到被 `@引用` 的兄弟文件。这样目录精简、可读，Agent 也能只展开当前故障相关的分支，避免无关内容占用上下文。
  </Accordion>

  <Accordion title="一个主题一个文件" icon="wrench">
    每篇运行手册聚焦一类故障或一个服务（如 `runbook-api-5xx.md`、`runbook-db-pool.md`），用清晰的文件名做语义索引。由于 Pack 是扁平命名（无子目录），文件名前缀就是您的「目录结构」。
  </Accordion>

  <Accordion title="善用结构化文件类型" icon="code">
    服务清单、集群拓扑、阈值配置等结构化信息适合用 `.yaml` / `.json` 承载（如 `services.md`、`cluster.yaml`），让 Agent 既能阅读也能直接解析。脚本片段可用 `.sh`。
  </Accordion>

  <Accordion title="保持引用一致" icon="bug">
    新增或重命名文件后，同步更新 `DUTY.md` 与相关文件里的 `@引用`。保存时的「引用未解析」警告与删除时的「仍被引用」提示，能帮您及时发现断链。
  </Accordion>

  <Accordion title="账户级放通用、团队级放专属" icon="users">
    账户级 Pack 放跨团队通用的约定（命名规范、通用排障方法、平台访问方式）；团队级 Pack 放该团队专属的服务清单、值班手册与上下游。绑定团队的会话会同时拿到两者。
  </Accordion>

  <Accordion title="让 Agent 帮你维护" icon="comments">
    排障过程中沉淀出的新处置经验，可以直接让 Agent「补一篇 runbook」或「记录这个故障模式」，它会对当前作用域读取→编辑→保存，把经验回写进知识库，形成持续积累的闭环。
  </Accordion>
</AccordionGroup>

## 相关页面

***

<CardGroup cols={2}>
  <Card title="Skill" icon="rocket" href="/zh/ai-sre/skills">
    把可复用的诊断流程封装为 Skill，与知识库共享同一套作用域。
  </Card>

  <Card title="MCP（外部工具）" icon="plug" href="/zh/ai-sre/mcp">
    通过 MCP 接入外部系统，让 Agent 调用您的工具与数据。
  </Card>

  <Card title="控制台" icon="comments" href="/zh/ai-sre/sessions">
    了解会话如何绑定团队，以及知识在会话中如何被读取与挂载。
  </Card>
</CardGroup>
