Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions en/ai-sre/im.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,17 @@ After the switch, AI SRE:
Knowledge bundles already mounted into this session are not removed — mounts are conversation-scoped, so switching back to a previously-mounted team will not duplicate the mount reminder.
</Note>

### When the group's team or environment is unusable

A group conversation pins its team and runtime environment when it is created, and once those settings stop working an investigation cannot begin: the team was deleted or you are no longer in it, the pinned runner is offline or gone, the cloud sandbox template was deleted, the environment belongs to another team, or this deployment offers no cloud sandbox at all.

AI SRE does not run a turn on the broken configuration. It turns that turn into **configuration repair only**: it says whether the team, the runtime environment, or both are the problem, states the evidence (for example "the cloud-template query succeeded and the pinned template is absent"), and offers only the changes you can actually make — pick another team, pick another runtime environment, or go back to **Auto**. That turn has no investigation tools and no runtime environment, so it does not start an analysis and does not pretend to.

You can still fix it with `/env` or `/scope`, or just say in the conversation which team or environment to use. Once the new setting is saved:

- if your original question has not been taken up yet, AI SRE **runs that question again automatically** and posts the conclusion to the group as usual, so you need not resend it;
- if the original question was already taken up (a turn had begun, for example), it is not replayed, and the next message runs on the repaired configuration.

<span id="ambient-command"></span>
### /ambient — Control whether this group gets proactive replies

Expand Down
16 changes: 16 additions & 0 deletions en/changelog/changelog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,22 @@ description: "This page documents important updates and feature releases for Fla
keywords: ["Changelog", "Product Release", "Feature Updates", "Flashduty", "Version History"]
---

<Update label="2026-10-30" description="🛠 AI SRE repairs a group's broken team or environment and then resumes the original question, RUM natural-language queries understand native apps, and incident filters take several label or custom-field values">

### AI SRE: repair a group's broken team or environment, then resume the original question

AI SRE conversations in a group chat pin their team and runtime environment when they are created. Once the pinned team is deleted, the runner goes offline or disappears, the cloud sandbox template is deleted, the environment belongs to another team, or the deployment has no cloud sandbox, the question that group asked can no longer run — and before this change you had to spot it and fix it yourself. Now AI SRE turns that turn into **configuration repair only**: it says whether the team, the runtime environment, or both are the problem, gives the evidence, and lists only the changes you can actually make — pick another team, pick another runtime environment, or go back to **Auto**. That turn has no investigation tools and no runtime environment, so it does not start an analysis. After the repair, if the original question has not been taken up yet, AI SRE **runs it again automatically** and posts the conclusion to the group; a question already taken up is not replayed, and the next message runs on the repaired configuration. `/env` and `/scope` work as before. See [IM platforms](/en/ai-sre/im).

### RUM: natural-language queries understand native apps

The basic natural-language query in the RUM Explorer — the one you get when AI SRE is not enabled or out of credits — now reads your sentence against the current application's platform. On an Android, iOS or HarmonyOS app, or a Flutter / React Native app, it uses the objects and fields those apps report: pages are screens named by `view_name`, with no browser, page URL or Web Vitals; crashes are `is_crash`, and sessions or pages that crashed are `session_crash_count` / `view_crash_count`; Android ANR and iOS App Hang are told apart by `error_category`; jank is `view_frozen_frame_count`. The example questions under the input box switch to crash, ANR and App Hang wording to match. See [Data query syntax guide](/en/rum/explorer/data-query).

### Incident filters: several values for one label or custom field

In **More Filters** on the incident list, one label or custom field can now hold several values: values chosen under the same item match **any of them**, while different labels and different fields still must all match. A checkbox field only has `true` / `false`, so choosing both says nothing extra and only the first applies. Labels and custom fields still match exactly — no wildcards, no regex. See [Search and view incidents](/en/on-call/incident/search-view-incident).

</Update>

<Update label="2026-10-25" description="🧭 Query and analyze in the RUM Explorer with AI SRE, a custom dashboard belongs to one application, errors split into Issues by where they were raised">

### RUM Explorer: query and analyze with AI SRE
Expand Down
1 change: 1 addition & 0 deletions en/on-call/incident/search-view-incident.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ To improve performance, in aggregate view, the system matches at most **100** re

- A label value must equal the value stored on the incident, case included. A value containing `*` or wrapped in `/…/` is compared literally: the system doesn't expand it into a wildcard or a regex, tells you "Label values match exactly; * and /…/ are not supported. Use the search box for a partial match", and leaves that condition out of the query
- **Custom fields** list single-select, multi-select, and checkbox fields only, and their values also match exactly. Text fields can't be filtered by field; use **Search** instead. Unsupported fields show "Only single-select, multi-select and checkbox fields can be filtered. Use the search box for text fields". Saved filters are cleaned by the same rules when restored
- One label or custom field can hold several values at once: the values chosen under the same item match **any of them** (a multi-select field matches by containment), while different labels and different fields still must all match. A checkbox field only has `true` / `false`, so choosing both says nothing extra and only the first applies
- For a partial match, use **Search** at the end of the filter bar. Wildcard and regex syntax applies only inside [Filter Conditions](/en/on-call/configuration/filter-conditions), which configure rules such as escalation, silence, and inhibit rules

<Tip>
Expand Down
4 changes: 4 additions & 0 deletions en/rum/error-tracking/error-viewing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,10 @@ Click any Issue to open the details panel and view more information.
- click **Upload** on an unparsed image to upload its symbols;
- click **Re-symbolicate** after uploading to refresh the stack.

**Download crash log**

The stack area can export this crash as a plain-text log file (**Download crash log**) containing the summary, the crashing stack, every thread's stack and the binary images. Stacks are symbolicated first with the symbol files you uploaded; every stack that was symbolicated is repeated in an **Original Stacks** section at the end of the file, in its pre-symbolication text with frame addresses and modules kept, so a frame can be checked against its address or re-symbolicated locally.

**Flutter Support**

Flutter native crashes (with `source_type` of `ndk`, `android`, or `ios`) carry thread stacks and Binary Images, and are rendered with the same native view described above as Android/iOS native crashes. Dart exceptions are symbolicated by matching the build_id in the stack against uploaded Flutter symbol files.
Expand Down
6 changes: 4 additions & 2 deletions en/rum/explorer/data-query.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,14 @@ Say in one sentence what you want to look at; AI SRE writes the result onto the
- **Follow-up and examples**: the status line offers the most likely next request — press <kbd>Tab</kbd> to fill it in, Enter to send. When AI SRE asks something back, the status line shows **Needs your input** and the input prompts you to reply. Before there is any conversation, a few example questions sit under the input: pick with <kbd>↑</kbd> <kbd>↓</kbd>, press <kbd>Tab</kbd> to fill in, or Enter to send.
- **Draft while it runs**: pressing Enter before the turn ends only keeps a draft — "Still running; your draft is kept, send it when this finishes" — and you send it once the turn is over.
- **Another application is another conversation**: switching the application at the top right, or leaving the Explorer, ends this conversation, and the next one starts fresh; pressing the button again (it then reads **End this AI SRE conversation**) ends it too.
- **Credits and enablement**: when credits are used up (this period's allowance spent, wallet empty, or no On-call subscription), AI SRE cannot start a turn: its status line shows **Out of credits** with **Top up** (**Go to On-Call subscription** when the subscription is what is missing). After that the button opens the basic natural-language query instead, and the top of that panel states the reason in one line with the same link beside it. Accounts without AI SRE always get the basic query.
- **Credits and enablement**: when credits are used up (this period's allowance spent or the wallet empty), AI SRE cannot start a turn: its status line shows **Out of credits** with **Top up**, which opens AI SRE billing. After that the button opens the basic natural-language query instead, and the top of that panel states the reason in one line with the same link beside it. AI SRE is enabled and billed separately from any On-call subscription. Accounts without AI SRE always get the basic query.

### Basic natural-language query

The button opens this basic panel when AI SRE is not enabled or out of credits: describe the data you want in plain Chinese or English and AI converts it into a standard query (DQL) with the same fields and syntax as a manual query. The input border is highlighted while this panel is active.

The conversion reads the sentence against the current application's platform. When that application is a native one (Android, iOS, HarmonyOS, and Flutter / React Native apps), it uses the objects and fields those apps report: pages are screens named by `view_name`, and there is no browser, page URL or Web Vitals; crashes are `is_crash`, and sessions or pages that crashed are `session_crash_count` / `view_crash_count`; Android ANR and iOS App Hang are told apart by `error_category`, and a HarmonyOS app freeze is recorded as a crash; jank is `view_frozen_frame_count`, while OS version, device model and app version are `os_version`, `device_model` and `version`. The example questions under the input box switch to crash, ANR and App Hang wording to match.

<Steps>
<Step title="Describe what you want to find">
Describe the data in plain language and press <kbd>Enter</kbd> to generate a preview. For example:
Expand Down Expand Up @@ -72,7 +74,7 @@ Once the query is generated, the server runs it once against real data in the ti

#### Analysis questions go to AI SRE

Requests that want a conclusion — "why is this page slow", "do we still get this error after the release", "how does this compare with last week", "which page is slowest" — cannot be answered by the query box. AI classifies them as a question rather than a filter condition and the panel says **This is a question for analysis; a query cannot answer it**, with the way to AI SRE beside it: **AI SRE can analyze this** plus **Enable AI SRE** when AI SRE is not enabled, or **Top up** / **Go to On-Call subscription** when credits are used up or the On-call subscription is missing.
Requests that want a conclusion — "why is this page slow", "do we still get this error after the release", "how does this compare with last week", "which page is slowest" — cannot be answered by the query box. AI classifies them as a question rather than a filter condition and the panel says **This is a question for analysis; a query cannot answer it**, with the way to AI SRE beside it: **AI SRE can analyze this** plus **Enable AI SRE** when AI SRE is not enabled, or **Top up** when credits are used up.

<Note>
- Time expressions such as "last hour," "yesterday," and "past 7 days" update the Explorer time picker; they are not written as DQL conditions such as `client_time`. Performance-duration conditions remain DQL, for example `view_loading_time:>2s`.
Expand Down
11 changes: 11 additions & 0 deletions zh/ai-sre/im.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,17 @@ IM 会话没有控制台那样的选择器 UI,但支持三条斜杠命令在**
已挂载到本次会话的知识不会被移除——挂载是对话级别的,切回之前挂载过的团队不会重复注入提醒。
</Note>

### 群绑定的团队或环境不可用时

群聊里的会话把团队和运行环境钉定在创建时,这些设置一旦失效,排查就无从开始:团队被删除或您已不在其中、钉定的 Runner 离线或已不存在、云端沙箱模板被删除、环境属于别的团队,或者当前部署根本没有云端沙箱。

这时 AI SRE 不会带着坏配置硬跑一轮,而是把这一轮降级成**只改配置**:它说明失效的是团队、运行环境还是两者,讲清判定依据(例如「云端模板查询成功但钉定的模板不存在」),并只给出您现在真能做的调整——改选团队、改选运行环境,或改回 **自动选择**。这一轮没有排查工具,也拿不到运行环境,所以它不会开始分析,也不会假装在分析。

您可以照常用 `/env`、`/scope` 改,也可以直接在对话里说要换成哪个团队或环境。保存成功后:

- 您原来那个问题还没被接走时,AI SRE 会**自动把原问题再跑一次**,结论照常回帖到群里,不用重发一遍;
- 原问题已经被接走(例如上一轮已经开始执行)时不会再自动重放,下一条消息按修好的配置正常执行。

<span id="ambient-command"></span>
### /ambient — 控制本群是否主动接话

Expand Down
16 changes: 16 additions & 0 deletions zh/changelog/changelog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,22 @@ description: "本页面记录 Flashduty 产品的重要更新和功能发布"
keywords: ["更新日志", "产品发布", "功能更新", "Flashduty", "版本记录"]
---

<Update label="2026-10-30" description="🛠 群里团队或环境失效时 AI SRE 先修配置再自动续跑原问题,RUM 自然语言查询认识原生应用,故障筛选的标签与自定义字段可以多选">

### AI SRE:群绑定的团队或环境失效时,先修配置再续跑原问题

群聊里的 AI SRE 会话把团队和运行环境钉定在创建时。一旦钉定的团队被删除、Runner 离线或不存在、云端沙箱模板被删除、环境属于别的团队,或者当前部署没有云端沙箱,这个群原本问的那句话就跑不起来了。以前这种情况只能自己发现、自己改;现在 AI SRE 会把这一轮降级成**只改配置**:说明失效的是团队、运行环境还是两者,给出判定依据,并只列出您现在真能做的调整——改选团队、改选运行环境,或改回 **自动选择**。这一轮没有排查工具、也拿不到运行环境,所以它不会开始分析。修好后,如果原来那个问题还没被接走,AI SRE 会**自动把原问题再跑一次**并把结论回帖到群里;已经被接走的那一轮不会重放,下一条消息按修好的配置执行。`/env`、`/scope` 照常可用。详见 [IM 平台](/zh/ai-sre/im#群绑定的团队或环境不可用时)。

### RUM:自然语言查询认识原生应用

RUM 查看器里的基础自然语言查询(账户未开通 AI SRE 或额度用尽时打开的那个入口)现在按当前应用的平台理解您那句话。应用是 Android、iOS、鸿蒙,或 Flutter / React Native 应用时,它认的是原生应用自己的对象和字段:页面是 `view_name` 的屏幕,没有浏览器、页面 URL 和 Web Vitals;崩溃看 `is_crash`,发生过崩溃的会话与页面按 `session_crash_count` / `view_crash_count` 判断;Android 的 ANR 与 iOS 的 App Hang 按 `error_category` 区分;卡顿看 `view_frozen_frame_count`。输入框下方的示例问题也换成崩溃、ANR、App Hang 这类原生说法。详见 [数据查询语法指南](/zh/rum/explorer/data-query#基础自然语言查询)。

### 故障筛选:标签与自定义字段可以一次选多个值

故障列表的 **更多筛选** 里,同一个标签或自定义字段现在能选多个值:同一项内选中的值之间是「任一匹配」,不同标签、不同字段之间仍是「同时满足」。勾选字段只有 `true` / `false` 两态,同时选中没有意义,只按第一个生效。标签与自定义字段仍然只做精确匹配,不支持通配与正则。详见 [检索与查看故障](/zh/on-call/incident/search-view-incident)。

</Update>

<Update label="2026-10-25" description="🧭 RUM 查看器可以用 AI SRE 查询和分析、自定义看板归属到单个应用、异常按出错位置拆成不同 Issue">

### RUM 查看器:用 AI SRE 查询和分析
Expand Down
1 change: 1 addition & 0 deletions zh/on-call/incident/search-view-incident.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ keywords: ["故障检索", "故障列表", "聚合视图", "时间线", "故障

- 标签值必须与故障上存储的值完全一致(区分大小写)。值里带 `*` 或用 `/…/` 包裹时不会按通配或正则展开,只按这几个字符本身比较:系统提示「标签值只支持精确匹配,不支持 * 或 /…/ 写法;模糊查找请用搜索框」,并且不把这条条件用于查询
- **自定义字段** 只列出单选、多选、勾选三类字段,值同样精确匹配;文本字段无法按字段筛选,请改用 **键入检索**;不支持的字段会提示「只能按单选、多选、勾选字段筛选;文本字段请用搜索框」。保存过的筛选条件恢复时也按这些规则清理
- 同一个标签或自定义字段可以一次选多个值:同一项内选中的值之间是「任一匹配」(多选字段按包含判断),不同标签、不同字段之间仍是「同时满足」。勾选字段只有 `true` / `false` 两态,同时选中没有意义,只按第一个生效
- 需要模糊查找时用行尾的 **键入检索**。通配与正则写法只在[过滤条件](/zh/on-call/configuration/filter-conditions)里生效:分派策略、静默策略、抑制策略等规则的条件用的就是那套语法

<Tip>
Expand Down
4 changes: 4 additions & 0 deletions zh/rum/error-tracking/error-viewing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,10 @@ Issue 列表支持两种查看模式:侧栏模式和全屏模式。默认以
- 对未解析的镜像点击 **去上传** 上传符号文件;
- 上传后点击 **重新解析** 刷新堆栈。

**下载崩溃日志**

堆栈区可以把当前这条崩溃导出一个纯文本日志文件(**下载崩溃日志**),内容包含错误摘要、崩溃堆栈、各线程堆栈和 Binary Images。堆栈会先按已上传的符号文件还原;还原过的堆栈会在文件末尾的 **Original Stacks** 区块里再附一份符号化之前的原始文本(保留帧地址与模块名),便于按地址核对,或在本地用符号文件重新还原。

**Flutter 支持**

Flutter 原生崩溃(`source_type` 为 `ndk`、`android` 或 `ios`)携带线程堆栈和 Binary Images,与 Android/iOS 原生崩溃一样使用上述 Native 渲染展示;Dart 异常则按堆栈中的 build_id 匹配已上传的 Flutter 符号文件,进行符号化还原。
Expand Down
Loading