Skip to content
Merged
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
4 changes: 4 additions & 0 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -1503,6 +1503,10 @@
"source": "/en/rum/error-tracking/erro-reporting/web",
"destination": "/en/rum/error-tracking/error-reporting/web"
},
{
"source": "/en/rum/quickstart/faq",
"destination": "/en/rum/sdk/web/faq"
},
{
"source": "/account/info",
"destination": "/zh/api-reference/platform/account/account-read-info"
Expand Down
34 changes: 15 additions & 19 deletions en/ai-sre/im.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ keywords: ["AI SRE", "IM", "Slack", "Lark", "DingTalk", "WeCom", "war room", "@m
sidebarTitle: IM platform
---

> Activate AI SRE separately; it does not require an On-call subscription or a member license. Every plan can create IM applications for AI conversations. Using an application for On-call notifications, including escalation policies and on-call reminders, still requires an active On-call Professional plan.
> Activate AI SRE separately; it does not require an On-call subscription or a member license. Every plan can create IM applications for AI conversations. Using an application for On-call notifications, including escalation policies and on-call reminders, still requires an active On-call Pro plan.

## Overview

Expand Down Expand Up @@ -49,10 +49,10 @@ IM interaction requires that you have already connected the corresponding platfo

## AI SRE settings in IM integrations

Open the corresponding IM integration under **On-call → Integration Center → Integration List → Instant Messaging** and configure its AI SRE behavior under **Enhanced features**. Of the three switches below, the first two are on by default and the last one is off by default:
Open the corresponding IM integration under **On-call → Integration Center → Integration List → Instant Messaging** and configure its AI SRE behavior under **Advanced Features**. Of the three switches below, the first two are on by default and the last one is off by default:

- **Allow AI SRE conversations in IM**: available without enabling War Room. It controls both entry points — **group @mentions** and **direct chats with the bot**; in Slack it also controls the `/fd` command. Turning it off makes group @mentions and direct chats with the bot (and, in Slack, `/fd`) silent. In WeCom's Third-party App mode, only direct chats with the bot are available; group @mentions require Custom App Integration mode.
- **Use thread replies in normal group chats**: available only for Feishu/Lark and Slack. When enabled, each normal-group thread has an independent session; War Rooms still receive replies directly in the group.
- **AI SRE uses thread replies in regular group chats**: available only for Feishu/Lark and Slack. When enabled, each normal-group thread has an independent session; War Rooms still receive replies directly in the group.
- **Allow AI to reply proactively**: available only on Slack, Lark / Feishu and Microsoft Teams; DingTalk and WeCom have no such switch. When enabled, AI reads messages in the connected group chats that **do not mention it** and replies only when it judges a reply worthwhile; @mentions always get a reply. A message it reads but judges not worth answering gets neither a receipt nor a reply. Each group can opt out with `/ambient off` (see [/ambient command](#ambient-command)).

<Note>
Expand All @@ -76,7 +76,7 @@ In a connected IM group with **Allow AI SRE conversations in IM** on, **@mention
</Steps>

<Tip>
The **reply mode** is configurable (off / first / all), controlling whether AI SRE @mentions the person who asked, and whether it replies **in-thread** or in the main channel. In a busy large group, in-thread replies keep the investigation discussion focused without flooding the channel.
In normal group chats on Feishu / Lark and Slack, whether AI SRE replies inside the thread is set by **AI SRE uses thread replies in regular group chats** under **Advanced Features** of the IM integration (on by default). In a busy large group, enabling it gives each thread its own session, so the investigation discussion stays focused without flooding the channel.
</Tip>

### Attachments and images
Expand All @@ -98,22 +98,10 @@ Per turn, the attachment quota is counted by type. The current message's attachm

### Processing receipt

Once the bot has your message, it first puts an emoji reaction on **the message you sent**, as an immediate "received, working on it" signal. The emoji is picked at random from a small set for each platform:

| Platform | Emoji |
| --- | --- |
| Slack | eyes, hourglass_flowing_sand |
| Lark / Feishu | Typing, OneSecond |
| DingTalk | Platform built-in emotions: 专注, 忙疯了 |

On Slack this sits alongside a native "is working on it" status, which the bot also shows.

The reaction is removed once the answer is delivered.
Once the bot has your message, it puts an emoji reaction on **the message you sent** as a "received, working on it" signal (WeCom has no emoji API, so it posts a placeholder message that the task checklist card and the final answer then replace in place). The reaction is removed once the answer is delivered. Slack also shows a native "is working on it" status.

With **Allow AI to reply proactively** on, a receipt is added only to the message AI decides to answer: a message it read but judged not worth answering gets neither a receipt nor a reply.

WeCom has no emoji API, so its "processing" receipt is a placeholder message, such as a random "On it…". The task checklist card and the final answer then replace it in place.

### How a reply reaches the chat

Once you hand AI SRE an investigation, every message that appears in the group is one of two kinds:
Expand Down Expand Up @@ -187,7 +175,15 @@ On the automation channel, nobody is watching and no reply will arrive. The agen

## In-session switch commands

IM sessions have no picker UI like the console. Instead, three slash commands let you adjust session bindings and proactive replies **mid-conversation**. Console sessions don't support these commands: their environment and team bindings are fixed at creation, and proactive replies are configured only in IM groups.
IM sessions have no picker UI like the console. Instead, slash commands let you adjust session bindings and proactive replies **mid-conversation**. Console sessions don't support these commands: their environment and team bindings are fixed at creation, and proactive replies are configured only in IM groups. On Slack, write a command as `/fd <command>`, for example `/fd stop`.

| Command | What it does |
| --- | --- |
| `/new [message]` | Starts a fresh conversation and resets the context; with a message, starts from it. Not available in groups with thread replies on; open a new top-level @mention instead |
| `/stop` | Stops the current analysis |
| `/help` | Lists the commands |

The next three switch bindings and proactive replies.

### /env — Switch Runner environment

Expand Down Expand Up @@ -260,7 +256,7 @@ Once an AI SRE reply lands in a group chat, anyone in the group can rate it —
Whether you start a session from IM or the console, it's **the same AI SRE**. It handles messages one at a time and streams output. It compacts context automatically in long conversations and supports optional team and environment bindings. The only difference is the entry point —

- **Console**: ask questions one at a time in the **Chat** workspace and view the full tool-call and sub-session panels. Environment and team bindings are fixed at creation and cannot be changed.
- **IM**: @mention it in the group where your team already works; findings are posted back to the thread. Use `/env` and `/scope` to switch bindings mid-conversation, and `/ambient` to control whether the group gets proactive replies. Great for grabbing a quick analysis at the incident scene, then diving deeper in the console.
- **IM**: @mention it in the group where your team already works; findings are posted back to the thread. Use `/env` and `/scope` to switch bindings mid-conversation, `/ambient` to control whether the group gets proactive replies, and `/stop` to stop the current analysis at any time. Great for grabbing a quick analysis at the incident scene, then diving deeper in the console.

For more about sessions, see [Conversations](/en/ai-sre/sessions).

Expand Down
2 changes: 1 addition & 1 deletion en/ai-sre/knowledge.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ After reading `DUTY.md`, the agent decides which `@references` to expand based o
| Constraint | Value | Notes |
| --- | --- | --- |
| File content | Plain text (UTF-8) | Validated by **content**, not extension: a file saves as long as it contains no NUL bytes and decodes as valid UTF-8. So `.py`, `.sql`, and even an extension-less `Dockerfile` can be uploaded alongside `.md` `.yaml` `.json` `.txt` `.sh`; conversely, a file with a `.txt` extension but binary content is rejected |
| Per-file size limit | 1 MiB | Files exceeding this cannot be saved |
| Per-file size limit | 1 MiB; 32 KB for `DUTY.md` | Files exceeding this cannot be saved. `DUTY.md` is loaded into the context in full on every turn, so its limit is smaller; move detail into other files |
| Per-knowledge size limit | 5 MiB | The usage bar in the console reflects this quota |
| File count limit | 100 | No new files can be added once the limit is reached |
| Subdirectories | Allowed | Paths may contain `/` (for example, `runbooks/api-5xx.md`); path segments cannot start with `.` |
Expand Down
2 changes: 1 addition & 1 deletion en/ai-sre/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ After closing:

Billing and gift-credit periods run in consecutive 30-day windows from the first AI SRE activation. Disabling and re-enabling the service does not reset the period or grant that period’s gift credits again. Existing accounts retain their current period and continue with independent 30-day periods when it ends.

IM applications can be created, authorized, and enabled on every plan for AI SRE direct or group conversations. Using an application as an On-call notification target, including escalation policies and on-call reminders, still requires an active On-call Professional plan. Otherwise, selection is disabled, the server rejects the configuration, and restricted notifications from existing configurations are not sent. On-call expiry or downgrade does not interrupt AI SRE conversations.
IM applications can be created, authorized, and enabled on every plan for AI SRE direct or group conversations. Using an application as an On-call notification target, including escalation policies and on-call reminders, still requires an active On-call Pro plan. Otherwise, selection is disabled, the server rejects the configuration, and restricted notifications from existing configurations are not sent. On-call expiry or downgrade does not interrupt AI SRE conversations.

On-call actions such as acknowledging or resolving an incident retain their existing permission and license requirements. AI SRE analysis does not grant additional incident-management permissions.

Expand Down
14 changes: 1 addition & 13 deletions en/ai-sre/sessions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -286,19 +286,7 @@ As a conversation grows, AI SRE automatically summarizes older history while kee

Progress is shown while compacting; afterwards the **Context** percentage in the chat header drops (hover for token usage).

A summary paraphrases the conversation, but the text before it is not lost: the messages and tool results it replaced are still stored exactly as they were returned. When an investigation depends on an exact value (an ID, a host, a metric value, a threshold, a log line, the text of an error, a command), the agent calls the built-in `session_transcript` tool to write that text into the `.history/<session_id>/` directory of its execution environment, then searches it with `grep` / `read` instead of repeating the summary's wording. If the value really is not there, it says so plainly rather than guessing.

| File | Content |
| --- | --- |
| `seg_NNN.md` | The text replaced by the Nth summary |
| `tail.md` | Everything after the latest summary (always present, may be empty) |
| `index.md` | How many rows each file covers and its time span |

What gets recorded is **what the agent was given at the time**: images and attachments leave only an `[inline …]` / `[file …]` placeholder, a truncated result keeps only the `file_path` of its full output, and a Subagent's internal steps stay in its own session rather than in these files.

<Note>
This recall only works for agents that **have the tool**: the main session and a Subagent with full tools can use it, while a restricted Subagent such as a read-only one does not have the tool and can only go by the summary after compaction.
</Note>
Compaction only replaces what is sent to the model; the original messages and tool results stay stored. When an investigation depends on an exact value (an ID, a host, a metric value, a threshold, a log line, the text of an error, a command), the agent looks the original text up instead of repeating the summary's wording; if the value really is not there, it says so plainly rather than guessing. Images and attachments leave only a placeholder with no original text, and a truncated large output keeps only the file path of its full result.

## Choosing a runtime environment

Expand Down
13 changes: 4 additions & 9 deletions en/developer/cli.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ Read the latest version from the [CDN latest version pointer](https://static.fla
| `FLASHDUTY_VERSION` | Install a specific version, for example, `v1.5.12` | latest |
| `FLASHDUTY_INSTALL_DIR` | Custom install directory | the directory of the `flashduty` already on `PATH`, else `/usr/local/bin` (shell); `~\.flashduty\bin` (PowerShell) |
| `MIRROR_URL` | Override the release asset download mirror prefix used by the installer script; must use `https://` | `https://static.flashcat.cloud/flashduty-cli` |
| `FLASHDUTY_UPDATE_BASE_URL` | Override the base URL used by `flashduty update` and the automatic update check | `https://static.flashcat.cloud/flashduty-cli` |
| `INSTALLED_NAME` | Command name to install as, for example, `fduty` | `flashduty` |

A copy installed under another command name uses that name in help output, error messages, and shell completion scripts; `flashduty update` replaces the running binary in place, under its own name and directory, instead of installing a default-named copy elsewhere.
Expand Down Expand Up @@ -501,7 +500,7 @@ flashduty rum resource-info [--no-cache] # View the RUM plan version, quotas,
flashduty oncall license-list # List people with active On-call licenses in the current account
```

This read-only command returns each person's ID, name, and license type: `fixed` is explicitly assigned, while `temporary` is active for the current temporary-license window. The response also carries `release_limited`, which is `true` once the account has used up its license-release quota for the current billing period; while it is `true`, releasing a member's seat fails with the error code `NoLicense`. That quota is the [limit on the number of License releases in each billing period](/en/platform/pricing).
This read-only command returns each person's ID, name, and license type: `fixed` is explicitly assigned, while `temporary` is active for the current temporary-license window.

### calendar — Service calendars

Expand Down Expand Up @@ -694,7 +693,7 @@ Panel runtime and variable resolution take their time window and variable select

#### `prometheus-api-v1-label-{label_name}-values` — Query Prometheus label values

`GET /monit/prometheus/api/v1/label/{label_name}/values` (operationId `monit-prometheus-read-label-values`) carries a path parameter, so it is excluded from code generation and provided by a hand-written command. The command name is derived from the API path: the `monit` group plus the remaining path segments joined by hyphens. It appears under `flashduty monit --help` but is hard to guess, so use it as written here:
Lists every value of a label on a Prometheus-compatible data source. The command is named `monit prometheus-api-v1-label-{label_name}-values` (visible under `flashduty monit --help`); use it as written here:

```bash
flashduty monit prometheus-api-v1-label-{label_name}-values <label_name> --data-source-id <datasource-id>
Expand Down Expand Up @@ -960,7 +959,7 @@ inc_def456 High memory usage Warning Processing Staging 2026
Showing 2 results (page 1, total 2).
```

A generated command's list response that carries fields beyond the row array (`items` / `docs` / `list`) — for example `calendar event-list`'s `days` or `oncall license-list`'s `release_limited` — prints an extra line after the row table: `Also in the response: <fields> (use --json to see it).` Those fields never appear in the table; use `--json` or `--output-format toon` to read them.
A generated command's list response that carries fields beyond the row array (`items` / `docs` / `list`) (for example `calendar event-list`'s `days`) prints an extra line after the row table: `Also in the response: <fields> (use --json to see it).` Those fields never appear in the table; use `--json` or `--output-format toon` to read them.
</Tab>

<Tab title="JSON (--json / --output-format json)">
Expand Down Expand Up @@ -1036,11 +1035,7 @@ For example, export only an incident ID, title, and progress:
flashduty incident list --json --fields incident_id,title,progress
```

When a list projection (`incident list`, `incident similar`, `alert-event list`, `channel escalate-rule-list`, `insight incidents`) exceeds its 16 KiB limit, the CLI handles it in three tiers, with every note going to stderr and stdout left untouched:

1. **Whole page overflows**: only the leading rows that fit are emitted, with values intact. A stderr note reports how many rows were emitted. Narrow `--fields` or lower `--limit` to fit more rows per page.
2. **A single row overflows the budget**: that row's string values are shortened and end with `...`, and a stderr note names the clipped fields. Matching or filtering on a shortened field misses, so narrow `--fields` or `--limit` to get full values. Identifier fields (keys ending in `_id` or `_key`) are never shortened at any tier.
3. **A row cannot be reduced enough to fit**: the command fails with an error naming the largest fields (up to 3, with their byte sizes); reduce the fields in `--fields` or lower `--limit` and retry.
When a list projection (`incident list`, `incident similar`, `alert-event list`, `channel escalate-rule-list`, `insight incidents`) exceeds its 16 KiB limit, the three-tier reduction is the same as in "Generated-command output bound" above, with every note going to stderr and stdout left untouched. The difference is that you narrow the output with `--fields` or `--limit` to fit more rows per page or to get full values. Matching or filtering on a shortened field misses; identifier fields (keys ending in `_id` or `_key`) are never shortened at any tier.

`incident detail` behaves differently when its projection overflows: the detail is a single object, and a truncated value is indistinguishable from a genuinely short one, so silently shortening it would hand you wrong data. A projection over 8 KiB therefore fails the command outright, and the error names the largest fields (up to 3, with their byte sizes). Reduce the fields in `--fields`, or omit `--fields` entirely to get the full detail, which is not subject to the projection limit.

Expand Down
Loading
Loading