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

# 安全与信任策略

## 安全与信任策略

自定义组件的风险不取决于“是否用了 RunCommand”或“是否会在线更新”，而取决于：

1. **可执行内容从哪里来**
2. **可执行内容是否会在运行时变化**

因此，本地快捷启动组件可以静默执行命令；新闻组件可以静默更新数据；只有远程内容生成或改变可执行内容时才需要确认。

## 风险矩阵

| 场景 | 行为 |
| :- | :- |
| 本地组件，字面量命令，如 `calc` / `explorer .` | 点击直接执行，不弹窗 |
| 本地组件，命令来自 `{Inputs.*}` 用户输入 | 直接执行，不弹窗 |
| 远程组件自带静态命令 | 导入或命令变更时确认一次；之后点击不再重复确认 |
| 远程组件只更新数据源、文本、布局、样式 | 静默更新，不提示 |
| 远程更新新增/修改 `RunCommand`、`PluginApi`、命令参数，或新增可触发命令的脚本/触发器 | 更新前确认；拒绝则保留旧 XML |
| 命令来自 `{Data.*}` / `{Results.*}` / `{Children.*}` 等在线内容 | 首次执行确认；同一最终命令按哈希记住，命令变化时再次确认 |
| 命令来自远程组件的 `{Inputs.*}` | 按动态远程命令处理 |
| `Loaded` / `Resize` 等自动触发器执行命令 | 使用同一套来源规则；动态远程命令仍需确认 |

## 可执行内容指纹

远程更新时只比较“可执行内容”：

* `RunCommand` 的 `Command`、`WorkingDirectory`
* `PluginApi` 的 `PluginId`、`Method`、`Arguments`
* 当存在上述动作时，相关函数脚本和触发器

单纯的 `Data` 刷新、文本变化、布局变化不会触发确认。新闻、公告、状态类组件可以继续实时更新。

## 动态命令

```xml theme={null}
<Button Text="执行" OnClick="RunCommand"
        Command="{Data.Command}" />
```

这类命令的最终值来自在线数据，执行前会显示最终命令并确认。确认后只信任**当前这条命令的哈希**；远程数据换成另一条命令时会再次确认。

命令模板只识别以下绑定命名空间：

`Data`、`Resources`、`Inputs`、`Results`、`Children`、`Size`、`State`。

普通 shell 花括号（例如 PowerShell 脚本块）不会被当作绑定替换。

## 仍然存在的边界

* 本地导入的 `.qwidget` 被视为用户主动选择的本地内容；本地组件内的字面量命令不逐次确认。
* 用户确认过的远程静态命令在命令未变化时不再逐次确认；这是有意设计。
* 只使用你信任的组件来源。启动器开发者不对自定义组件造成的风险负责。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.