# @e-llm-studio/instant-learning 中文文档

规范地址：https://npmcn.com/package/%40e-llm-studio/instant-learning/

版本：1\.3\.34
npm 元数据更新时间：2026-11-13T13:37:58.189Z
中文译文更新时间：2026-11-13T03:03:29.654Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40e-llm-studio/instant-learning
原文对照：https://npmcn.com/package/%40e-llm-studio/instant-learning/?lang=original
源码仓库：https://github.com/Techolution/bpa-ai

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：25.1 MB，2540 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：31 个
- peer 依赖：axios ^1\.7\.9，react \>=16\.8\.0 \<19\.0\.0，react-dom \>=16\.8\.0 \<19\.0\.0，react-router-dom ^7\.5\.2
- 首次发布：2025-07-08T07:53:17.110Z
- 最新版本发布：2026-11-13T13:37:57.971Z
- 近 30 天下载量：9155（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：739（近 12 个月 653 个）

## 中文简介

用于即时学习的可再使用再激活组件 .

## 安装

```sh
npm install @e-llm-studio/instant-learning
```

也可以使用：`pnpm add @e-llm-studio/instant-learning`、`yarn add @e-llm-studio/instant-learning`、`bun add @e-llm-studio/instant-learning`

## README

# 即时学习图书馆

## 使用和整合

图书馆暴露出两个独立的消耗成分:

-   **`LearningManagement`** ——使学习管理全屏(镜树,学习,访问,改变历史).
-   **`TeachMePlugin`** - 使 _教我吧 教给我_ 弹出,一个AI辅助规则/学习创建界面. 可以自己搭车,任何地方.

安装 :

```bash
npm install @e-llm-studio/instant-learning
```

图书馆的工作没有创意工作空间. 它的内置范围树和 共享原件 `@e-llm-studio/prompt-editor` 默认使用。 主机可以覆盖 当需要特定主机行为时, 任一组件:

```tsx
import {
  CreativeWorkspaceAdapterProvider,
  LearningManagement,
} from '@e-llm-studio/instant-learning';

<CreativeWorkspaceAdapterProvider value={{ TreeSidebar, AIPromptEditor }}>
  <LearningManagement {...props} />
</CreativeWorkspaceAdapterProvider>
```

此适配器可选 。 在单簧管, `cw-core` 提供它从 组成根,因此即时学习和创造性工作空间保持独立.

* * *

### 1\. 联合国. `LearningManagement`

渲染学习管理屏. 用这个 `@tanstack/react-query` 内部,所以 **必须包裹在 `QueryClientProvider`** 由消费者.

#### 导入样本使用( S)

```tsx
import LearningManagement from '@e-llm-studio/instant-learning';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';

const queryClient = new QueryClient();

function App() {
  return (
    <QueryClientProvider client={queryClient}>
      <LearningManagement
        userDetails={userDetails}                 // logged-in user + access token
        llmStudioUrl="https://devllmstudio.creativeworkspace.ai"
        audacyBackendUrl="https://dev-audacy-traffic-manager.techo.camp"
        config={config}                           // runtime config (BASE_URL, ASSISTANT_NAME, …)
        rbacConfig={rbacConfig}                   // RBAC / AppSec identifiers
        auditLogConfig={{ configId: '6a1825e9fb722c37637b9490' }}
        ilLabels={{
          setupLabel: 'Learning Setup',
          ruleTitle: 'Learning Title',
          ruleDescriptionTitle: 'Learning Description',
        }}
        app_integration_id="019eb639-8eca-715a-95c1-efe0ee237ecc"
        backwardCompatibility={false}
        cognitiveCompareCompatibility={false}
        modeDetails={{
          activeModeName: 'Instant Learning Mode',
          modeNameFromURL: 'Instant Learning Mode',
          submodeNameFromURL: '',
        }}
      />
    </QueryClientProvider>
  );
}
```

#### 道具

| Prop | 类型 | 需求 | 说明 |
| --- | --- | :-: | --- |
| `userDetails` | `User` | ✅ | 登录用户对象 。 必须包括 `accessToken` (用于所有 API 调用并作为 GraphQL ) `userDetails` (第1款). |
| `llmStudioUrl` | `string` | ✅ | LLM Studio的基础URL;用于分级,IL实例和规则API. |
| `audacyBackendUrl` | `string` | ✅ | 客户端/产品后端的基础URL. |
| `config` | `object` (单位:千美元)`any`(中文(简体) ) | ✅ | 规则创建流程所消耗的运行时配置( E)`BASE_URL`, (中文(简体) ), `BASE_WEBSOCKET_URL`, (中文(简体) ), `ASSISTANT_NAME`, (中文(简体) ), `ORGANIZATION_NAME`, (中文(简体) ), `CHAT_TITLE`, (中文(简体) ), `SOCKET_TIMEOUT`(见a/c.5/49/70,附件). |
| `rbacConfig` | `RbacConfig` | ✅ | 非洲区域局/阿普塞克识别标志: `applicationName`, (中文(简体) ), `applicationId`, (中文(简体) ), `moduleId`, (中文(简体) ), `applicationModuleId`, (中文(简体) ), `applicationResourceId`, (中文(简体) ), `appsecRbacUrl`, (中文(简体) ), `appsecBaseUrl`。驱动权限解析. |
| `auditLogConfig` | `AuditLogConfig` | ✅ | 审计日志配置 - `{ configId: string }`。 。 。 . |
| `ilLabels` | `{ setupLabel; ruleTitle; ruleDescriptionTitle }` | ✅ | 规则设置格式的标签覆盖( 需要全部三个字符串) . |
| `app_integration_id` | `string` | \* 可选\* | 用于加载每个集成远程 JSON 配置的集成上下文( Q)`dt()`编号 :`dtt()` )和范围化的API调用. \*在非后向相容模式中有效要求——没有它,远程配置不会加载. |
| `backwardCompatibility` | `boolean` | 备选 | 启用遗留模式( 遗留创建模式, 遗留继承 API) 。 默认 `false`。 。 。 . |
| `cognitiveCompareCompatibility` | `boolean` | 备选 | 允许认知对比行为. 默认 `false`。 。 。 . |
| `modeId` | `string` | 备选 | 模式标识符传递到布局/规则内容. |
| `modeDetails` | `{ activeModeName; modeNameFromURL; submodeNameFromURL }` | 备选 | 用于基模命名的活性模式元数据. |

> **说明:** 何时 `backwardCompatibility={false}`,屏幕从远程配置中读取其标签/对话框 `app_integration_id` 使用 `dt()` 帮手 缺少的密钥会回到内置默认值 .

* * *

### 2\. 联合国. `TeachMePlugin`

提供人工智能协助 _教我吧 教给我_ 创造规则弹出。 与 `LearningManagement`,这个 **自行提供 `QueryClientProvider` 内部** 不需要额外包装.

#### 导入样本使用( S)

```tsx
import TeachMePlugin from '@e-llm-studio/instant-learning';

// Required config fields for TeachMePlugin
const configuration = {
  BASE_URL: 'https://devllmstudio.creativeworkspace.ai',
  BASE_WEBSOCKET_URL: 'wss://devllmstudio.creativeworkspace.ai/graphql',
  ORGANIZATION_NAME: 'techolution',
  ASSISTANT_NAME: 'preview',
};

function CreateLearningButton({ open, setOpen, token }) {
  return (
    <TeachMePlugin
      app_integration_id="019ecbcf-98c9-71bb-a663-ea962085c118"
      isOpen={open}
      onClose={() => setOpen(false)}
      token={token}                 // bearer token for API calls
      mode="ADD"                    // "ADD" | "EDIT"
      config={configuration}        // required runtime config (see table below)
      pluginPayload={{
        initialScope: 'global',     // {scope} value for titles
        ruleSet: selectedRuleSet,   // optional ruleset context
        // renderer-specific context (Radio Traffic, etc.):
        editingRule: null,
        editingTier: null,
        editingVariants: null,
        // optionally inline the config instead of remote-loading:
        // teachMe: { teachMe, template, learningManagement, agents },
        // tiers: [...],
      }}
    />
  );
}
```

#### 道具

| Prop | 类型 | 需求 | 说明 |
| --- | --- | :-: | --- |
| `isOpen` | `boolean` | ✅ | 控制弹出能见度. |
| `onClose` | `() => void` | ✅ | 当对话框要求关闭时调用 . |
| `token` | `string` | ✅ | API电话的接听器. |
| `mode` | `"ADD" | "EDIT"` | ✅ | 弹出是否正在创建新的学习或编辑已有的学习 . |
| `config` | `object` | ✅ | 聊天/聊天的运行时间配置 。 见 [所需经费 `config` 字段](https://npmcn.com/package/%40e-llm-studio/instant-learning/#readme-config-fields) 见下文. |
| `app_integration_id` | `string` | \* 可选\* | 确定正确的渲染器模板和远程配置。 \* 只能选择后相匹配模式;否则需要加载模板/配置. |
| `pluginPayload` | `Record<string, any>` | 备选 | 自由形式数据直接传递到活性渲染器. 识别密钥 : `initialScope` (单位:千美元)`{scope}` 数值, `ruleSet`, (中文(简体) ), `tiers` (直接设置等级)和 `teachMe` (单位:千美元)`{ teachMe, template, learningManagement, agents }` 以内置配置代替远程装入。 任何其他密钥都会被传送到渲染器上(例如. `editingRule`, (中文(简体) ), `editingTier`, (中文(简体) ), `editingVariants`, (中文(简体) ), `focusedVariantIndex`, (中文(简体) ), `triggerAddVariant`, (中文(简体) ), `triggerFixGaps`, (中文(简体) ), `copiedRule`, (中文(简体) ), `initialDraftMessage`, (中文(简体) ), `modeId`) (中文(简体) ). |

**需求 `config` 字段**

| 外地 | 类型 | 需求 | 说明 |
| --- | --- | :-: | --- |
| `BASE_URL` | `string` | ✅ | LLM Studio Base URL;用于聊天/REST呼叫. |
| `BASE_WEBSOCKET_URL` | `string` | ✅ | WebSocket (GraphQL) 直播聊天所使用的端点. |
| `ORGANIZATION_NAME` | `string` | ✅ | 助手的组织标识符 . |
| `ASSISTANT_NAME` | `string` | ✅ | 授权"教导我"的助手的名字. |

```ts
const configuration = {
  BASE_URL: 'https://devllmstudio.creativeworkspace.ai',
  BASE_WEBSOCKET_URL: 'wss://devllmstudio.creativeworkspace.ai/graphql',
  ORGANIZATION_NAME: 'techolution',
  ASSISTANT_NAME: 'preview',
};
```

> **模板分辨率 :** 制造器从 `template` 键 `pluginPayload.teachMe.template` 或远程配置)通过 `TemplateRegistry`。未知值返回到 `"Default"`。关于注册和完整的配置,见下文v17更改日志条目.

* * *

## 配置参考

两者 `LearningManagement` 财务报告和审定财务报表 `TeachMePlugin` 为: **完全由标签驱动**。UI文本——标题、按钮、对话框副本、占位符——来自装入的 JSON 配置 `appIntegrationId` (或通过 `pluginPayload.teachMe`) (中文(简体) ). 值在运行时与 `dt()` (语文)和 `dtt()` 帮助者(TeachMe);任何缺失的密钥会回落到内置默认值,所以您只需要覆盖您想要更改的内容.

### 高层结构

```json
{
  "template": "Default",
  "agents": { "LearningTerm": "Instruction" },
  "teachMe": { "...": "TeachMe popup labels" },
  "learningManagement": { "...": "Learning Management screen labels" }
}
```

| 密钥 | 类型 | 需求 | 说明 |
| --- | --- | :-: | --- |
| `template` | `string` | ✅ | 铸出者钥. **必须** 用于应用任何自定义;必须与 `TemplateRegistry` 键`"Default"`, (中文(简体) ), `"Radio Traffic Learning"`, (中文(简体) ), `"Guidelines"`(中文(简体) ). 未知值返回到 `"Default"`。 。 。 . |
| `agents.LearningTerm` | `string` | ❌ | 跨UI(如. `"Instruction"`, (中文(简体) ), `"Guideline"`) (中文(简体) ). |
| `teachMe` | `object` | ❌ | 给老师的标签 见 [`teachMe` 字段](https://npmcn.com/package/%40e-llm-studio/instant-learning/#readme-teachme-fields)。 。 。 . |
| `learningManagement` | `object` | ❌ | 学习管理屏幕的标签(图至 `LMSConfig`) (中文(简体) ). 见 [`learningManagement` 字段](https://npmcn.com/package/%40e-llm-studio/instant-learning/#readme-learningmanagement-fields)。 。 。 . |

值支持的占位符 : `{scope}` 编号 : `{scope_name}` 编号 : `{parent}` (名称), `{count}` 编号 : `{N}` (计数), `{variant_name}` (同意/拒绝对话框), `{rule_title}` (可操作/残疾对话框). 它们在运行时被插入.

**QQ 完整配置 JSON( 复制- 复制启动器)** ——点击以扩展

```json
{
  "template": "Default",
  "agents": {
    "LearningTerm": "Instruction"
  },
  "teachMe": {
    "welcomeMessage": "Hi! 👋 I'm your Instant Learning Concierge.",
    "welcomeMessageSubtitle": "I can help you create and manage instructions.\nSelect an option below or type your requirement.",
    "actions": [
      { "label": "Add new instruction",  "value": "I would want to add a new Instruction" },
      { "label": "Update an instruction", "value": "I would want to edit an existing instruction" }
    ],
    "chatTitle": "Teach Me ILOTJ - {scope} - Add Instruction",
    "chatTitleEdit": "Teach Me ILOTJ - {scope} - Edit Instruction",
    "chatTextareaPlaceholder": "Tell me about the instruction you want to create",
    "formTitle": "Add Instruction",
    "setupLabel": "Configure your IL",
    "ruleTitle": "Main Instruction Name",
    "scopeLabel": "Define Scope",
    "tierLabel": "Select Tiers",
    "ruleDescriptionTitle": "Explanation of the instruction",
    "whenToApplyTitle": "Trigger Events (When to Apply)",
    "addWhenToApplyBtnLabel": "Add WTA",
    "whenNotToApplyTitle": "Exclusion Events (When NOT to Apply)",
    "addWhenNotToApplyBtnLabel": "Add WNTA",
    "configTitle": "Advanced Settings",
    "saveBtnLabel": "Save Instruction",
    "saveBtnLoadingLabel": "Saving Instruction...",
    "showScope": false,
    "showConfiguration": false
  },
  "learningManagement": {
    "pageTitle": "Instruction Management",
    "middleDrawer": {
      "scope": "Scope",
      "addScope": "Add Scope",
      "addSubScope": "Add Subscope",
      "subScope": "Subscope",
      "treeMenu": {
        "search": "Search for scopes",
        "submenu": {
          "learnings": "Instructions",
          "access": "Access",
          "changeHistory": "Change History"
        },
        "contextMenu": {
          "addScope": "Add Scope",
          "rename": "Rename",
          "delete": "Delete {scope}",
          "addSubScope": "Add SubScope"
        }
      },
      "addScopeDialog": {
        "title": "Add Scope",
        "globalTitle": "Add Global Scope",
        "subScopeTitle": "Add Subscope",
        "subtitle": "This scope will be created under {parent} and will inherit its Learnings by default.",
        "globalSubtitle": "This global scope defines base learnings that apply across all scopes.",
        "subScopeSubtitle": "This subscope will be created under {parent} and will inherit its Learnings by default.",
        "scopeName": "Scope Name",
        "submitButton": "Create Scope",
        "cancel": "Cancel",
        "learningApprovalSettings": {
          "title": "Instruction Approval Settings",
          "approvalRequired": {
            "title": "Approval Required before Publishing",
            "subtitle": "Learnings require approval before publishing"
          },
          "publishWithoutApproval": {
            "title": "Publish Without Approval",
            "subtitle": "Instructions can be published directly"
          }
        }
      },
      "scopeDisplayLimit": {
        "enabled": "true",
        "count": "3",
        "compactView": "true",
        "applyToLevels": "",
        "viewMoreText": "show {count} more...",
        "title": "Stations",
        "description": "Manage the stations assigned to the {scope} scope.",
        "searchPlaceholder": "Search station...",
        "onboardBtn": "Onboard a station",
        "viewText": "View"
      }
    },
    "learnings": {
      "header": {
        "title": "{scope} Instructions",
        "exportButton": "Export",
        "addNewLearningButton": "Add New Instruction"
      },
      "tier": {
        "showTierHeader": true,
        "tierHeader": "Tier",
        "subtitle": "These are the system-wide instructions applied across all documents.",
        "tierHeaderNoOfLearnings": "Instructions",
        "deleteDialog": {
          "title": "Delete Tier {N}?",
          "description": "This will permanently delete all rules and variants under this tier, including any inherited rules. This action cannot be undone.",
          "cancel": "Cancel",
          "submit": "Yes, Delete"
        },
        "learning": {
          "inheritance": "Inheritance",
          "actions": {
            "disable": "Disable",
            "enable": "Enable",
            "approve": "Approve All",
            "reject": "Reject All",
            "delete": "Delete"
          },
          "approveDialog": {
            "title": "Approve Guideline",
            "desc": "{variant_name} will be published and become active within the selected scope after approval.",
            "footer": "Take a moment to check the configuration before moving forward.",
            "cancel": "Cancel",
            "approveLearning": "Approve Guideline"
          },
          "rejectDialog": {
            "title": "Reject Guideline",
            "desc": "{variant_name} will not be published or applied within the selected scope. You can provide feedback before rejecting.",
            "feedbackTitle": "Feedback",
            "feedbackPlaceholder": "Add feedback or reason for rejection",
            "deleteCheckboxLabel": "Also delete this guideline",
            "cancel": "Cancel",
            "rejectLearning": "Reject Guideline"
          },
          "deleteDialog": {
            "title": "Delete",
            "desc": "Are you sure you want to delete this rule? This action cannot be undone.",
            "warningText": "This will permanently delete the rule configuration.",
            "cancelText": "Cancel",
            "deleteText": "Delete"
          }
        }
      }
    },
    "emptyStateLearning": {
      "title": "No instructions have been added !",
      "desc": "Start by adding instructions that should apply across all documents.",
      "createNewLearning": "Create New Instruction",
      "createGlobalScope": "Create Global Scope",
      "noAccessTitle": "Access Restricted",
      "noAccessDesc": "You do not have access for this application.",
      "requestAccessButton": "Request Access",
      "requestSentButton": "Request Sent"
    }
  }
}
```

* * *

### `teachMe` 字段

驱动 Teach Me 弹出式的 LHS (发光, 动作快, 格式标签). 通过 `dtt()`。 。 。 .

```json
"teachMe": {
  "welcomeMessage": "Hi! 👋 I'm your Instant Learning Concierge.",
  "welcomeMessageSubtitle": "I can help you create and manage instructions.\nSelect an option below or type your requirement.",
  "actions": [
    { "label": "Add new instruction",   "value": "I would want to add a new Instruction" },
    { "label": "Update an instruction",  "value": "I would want to edit an existing instruction" }
  ],
  "chatTitle": "Teach Me ILOTJ - {scope} - Add Instruction",
  "chatTitleEdit": "Teach Me ILOTJ - {scope} - Edit Instruction",
  "chatTextareaPlaceholder": "Tell me about the instruction you want to create",
  "formTitle": "Add Instruction",
  "setupLabel": "Configure your IL",
  "ruleTitle": "Main Instruction Name",
  "scopeLabel": "Define Scope",
  "tierLabel": "Select Tiers",
  "ruleDescriptionTitle": "Explanation of the instruction",
  "whenToApplyTitle": "Trigger Events (When to Apply)",
  "addWhenToApplyBtnLabel": "Add WTA",
  "whenNotToApplyTitle": "Exclusion Events (When NOT to Apply)",
  "addWhenNotToApplyBtnLabel": "Add WNTA",
  "configTitle": "Advanced Settings",
  "saveBtnLabel": "Save Instruction",
  "saveBtnLoadingLabel": "Saving Instruction...",
  "showScope": false,
  "showConfiguration": false
}
```

| 外地 | 类型 | 说明 | 默认 |
| --- | --- | :-: | --- |
| `welcomeMessage` | `string` | 主打问候在聊天的顶端. | `"Hi! 👋 I'm your Instant Learning Concierge."` |
| `welcomeMessageSubtitle` | `string` | 副标题下打招呼。 支助 **标记** 财务报告和审定财务报表 `\n` 换行. | `"How would you like to get started?…"` |
| `actions` | `Array<{ label, value }>` | 快速动作按钮. `label` 是按钮文本; `value` 是在单击时发送给代理服务器的消息. | 6 个默认动作 |
| `chatTitle` | `string` | 弹出标题 **添加** 模式。 支助 `{scope}`。 。 。 . | `"Teach Me OTJ - {scope} - Add Learning"` |
| `chatTitleEdit` | `string` | 弹出标题 **编辑** 模式。 支助 `{scope}`。 。 。 . | `"Teach Me OTJ - {scope} - Edit Learning"` |
| `chatTextareaPlaceholder` | `string` | 免费聊天文本区的占位符 . | `"Tell me more about this learning.."` |
| `formTitle` | `string` | 内置规则格式部分的标题. | `"Rule setup"` |
| `setupLabel` | `string` | 设置/配置区域的标签 . | `"Configure your IL"` |
| `ruleTitle` | `string` | 规则/学习名称字段的标签 . | `"Main Rule Name"` |
| `scopeLabel` | `string` | 瞄准镜选择器的标签 . | `"Define Scope"` |
| `tierLabel` | `string` | 分级选择器的标签 . | `"Select Tiers"` |
| `ruleDescriptionTitle` | `string` | 描述字段的标签 . | `"Learning Explanation"` |
| `whenToApplyTitle` | `string` | 触发事件的标题 . | `"Trigger Events (When to Apply)"` |
| `addWhenToApplyBtnLabel` | `string` | 按钮以添加"何时应用"条目. | `"Add WTA"` |
| `whenNotToApplyTitle` | `string` | 排除事件的标题. | `"Exclusion Events (When NOT to Apply)"` |
| `addWhenNotToApplyBtnLabel` | `string` | 按钮以添加"当不应用时"条目. | `"Add WNTA"` |
| `configTitle` | `string` | 高级设置区域的标题 . | `"Advanced Settings"` |
| `saveBtnLabel` | `string` | 保存按钮标签 . | `"Save Rule"` |
| `saveBtnLoadingLabel` | `string` | 保存时保存按钮标签 . | `"Saving Rule..."` |
| `showScope` | `boolean` | 是否显示范围选择部分 . | `false` |
| `showConfiguration` | `boolean` | 是否显示高级配置部分 . | `false` |

* * *

### `learningManagement` 字段

地图到 `LMSConfig` 并驱动学习管理屏幕。 通过 `dt()`下文按地区分类.

#### 页中抽屉( M)

```json
"learningManagement": {
  "pageTitle": "Instruction Management",
  "middleDrawer": {
    "scope": "Scope",
    "addScope": "Add Scope",
    "addSubScope": "Add Subscope",
    "subScope": "Subscope",
    "treeMenu": {
      "search": "Search for scopes",
      "submenu": { "learnings": "Instructions", "access": "Access", "changeHistory": "Change History" },
      "contextMenu": { "addScope": "Add Scope", "rename": "Rename", "delete": "Delete {scope}", "addSubScope": "Add SubScope" }
    },
    "addScopeDialog": {
      "title": "Add Scope",
      "subtitle": "This scope will be created under {parent} and will inherit its Learnings by default.",
      "scopeName": "Scope Name",
      "submitButton": "Create Scope",
      "cancel": "Cancel",
      "learningApprovalSettings": {
        "title": "Instruction Approval Settings",
        "approvalRequired": { "title": "Approval Required before Publishing", "subtitle": "Learnings require approval before publishing" },
        "publishWithoutApproval": { "title": "Publish Without Approval", "subtitle": "Instructions can be published directly" }
      }
    },
    "scopeDisplayLimit": {
      "enabled": "true",
      "count": "3",
      "compactView": "true",
      "applyToLevels": "",
      "viewMoreText": "show {count} more...",
      "title": "Stations",
      "description": "Manage the stations assigned to the {scope} scope.",
      "searchPlaceholder": "Search station...",
      "onboardBtn": "Onboard a station",
      "viewText": "View"
    }
  }
}
```

| 字段(路径 `middleDrawer`(中文(简体) ) | 类型 | 说明 |
| --- | --- | :-: |
| `pageTitle` _(兄弟的中间拖拉机)_ | `string` | 在 LMS 标题中显示标题 . |
| `scope` | `string` | 当前范围的标题. |
| `addScope` 编号 : `addSubScope` 编号 : `subScope` | `string` | 用于添加镜,添加子镜按钮和子镜节点的标签. |
| `treeMenu.search` | `string` | 搜索范围树输入的占位符 . |
| `treeMenu.submenu.{learnings, access, changeHistory}` | `string` | 树子菜单标签. |
| `treeMenu.contextMenu.{addScope, rename, delete, addSubScope}` | `string` | 右键单击上下文菜单动作 . `delete` 支持 `{scope}`。 。 。 . |
| `addScopeDialog.title` 编号 : `globalTitle` 编号 : `subScopeTitle` | `string` | 创建范围/ 全球范围/ 子范围的对话框标题 . `subScopeTitle` 打开对话框时使用 `childType="SUBSCOPE"`; 倒计时 `middleDrawer.addSubScope` 如果未设置. |
| `addScopeDialog.subtitle` 编号 : `globalSubtitle` 编号 : `subScopeSubtitle` | `string` | 对话框字幕. 支助 `{parent}`。 。 。 . |
| `addScopeDialog.scopeName` 编号 : `subScopeName` | `string` | 瞄准镜名称字段/子瞄准镜名称字段的标签 . `subScopeName` 倒计时 `middleDrawer.subScope + " Name"` 如果未设置. |
| `addScopeDialog.submitButton` 编号 : `cancel` | `string` | 对话框动作按钮 . |
| `addScopeDialog.learningApprovalSettings.title` | `string` | 审批设置部分标题. |
| `…approvalRequired.{title, subtitle}` | `string` | 复制“ 需要批准” 选项 . |
| `…publishWithoutApproval.{title, subtitle}` | `string` | 复制"未经批准推出"选项. |
| `scopeDisplayLimit.enabled` | `string` (单位:千美元)`"true"`编号 :`"false"`(中文(简体) ) | 切换每个级别显示限制. |
| `scopeDisplayLimit.count` | `string` (数目) | 崩溃前要显示多少项 . |
| `scopeDisplayLimit.compactView` | `string` (单位:千美元)`"true"`编号 :`"false"`(中文(简体) ) | 启用压缩渲染 . |
| `scopeDisplayLimit.applyToLevels` | `string` | JSON 阵列 1- 指数级以限制,例如. `"[1,2]"`。空 = 所有级别. |
| `scopeDisplayLimit.viewMoreText` | `string` | "再看"切换文本. 支助 `{count}`。 。 。 . |
| `scopeDisplayLimit.title` | `string` | 取而代之的是标题中的"Stations". 支助 `{scope}`。 。 。 . |
| `scopeDisplayLimit.description` | `string` | 站名下方描述. 支助 `{scope}`。 。 。 . |
| `scopeDisplayLimit.searchPlaceholder` | `string` | 车站搜索占位符. |
| `scopeDisplayLimit.onboardBtn` | `string` | "一站上"按钮标签. |
| `scopeDisplayLimit.viewText` | `string` | 每站"View"按钮标签. |

#### 学习、层次和对话框

```json
"learnings": {
  "header": { "title": "{scope} Instructions", "exportButton": "Export", "addNewLearningButton": "Add New Instruction" },
  "tier": {
    "showTierHeader": true,
    "tierHeader": "Tier",
    "subtitle": "These are the system-wide instructions applied across all documents.",
    "tierHeaderNoOfLearnings": "Instructions",
    "deleteDialog": { "title": "Delete Tier {N}?", "description": "This will permanently delete all rules…", "cancel": "Cancel", "submit": "Yes, Delete" },
    "learning": {
      "inheritance": "Inheritance",
      "actions": { "disable": "Disable", "enable": "Enable", "approve": "Approve All", "reject": "Reject All", "delete": "Delete" },
      "approveDialog": { "title": "Approve Guideline", "desc": "{variant_name} will be published…", "footer": "Take a moment to check…", "cancel": "Cancel", "approveLearning": "Approve Guideline" },
      "rejectDialog": { "title": "Reject Guideline", "desc": "{variant_name} will not be published…", "feedbackTitle": "Feedback", "feedbackPlaceholder": "Add feedback…", "deleteCheckboxLabel": "Also delete this guideline", "cancel": "Cancel", "rejectLearning": "Reject Guideline" },
      "deleteDialog": { "title": "Delete", "desc": "Are you sure…", "warningText": "This will permanently delete…", "cancelText": "Cancel", "deleteText": "Delete" }
    }
  }
}
```

| 字段(路径 `learnings`(中文(简体) ) | 类型 | 说明 |
| --- | --- | :-: |
| `header.title` | `string` | 学习页标题. 支助 `{scope}`。 。 。 . |
| `header.exportButton` | `string` | 导出按钮标签 . |
| `header.addNewLearningButton` | `string` | "添加新学习"按钮标签. |
| `tier.showTierHeader` | `boolean` | 是否显示分级标题区域 . |
| `tier.tierHeader` | `string` | 等级标题 . |
| `tier.subtitle` | `string` | 第一级字幕/说明. |
| `tier.tierHeaderNoOfLearnings` | `string` | 学习的文字 计数标签. |
| `tier.deleteDialog.{title, description, cancel, submit}` | `string` | 分级删除对话框副本 . `title` 支持 `{N}`。 。 。 . |
| `tier.learning.inheritance` | `string` | 继承指标标签 . |
| `tier.learning.actions.{disable, enable, approve, reject, delete}` | `string` | 学习动作标签. |
| `tier.learning.approveDialog.{title, desc, footer, cancel, approveLearning}` | `string` | 批准对话框副本 . `desc` 支持 `{variant_name}`。 。 。 . |
| `tier.learning.rejectDialog.{title, desc, feedbackTitle, feedbackPlaceholder, deleteCheckboxLabel, cancel, rejectLearning}` | `string` | 拒绝对话框副本 . `desc` 支持 `{variant_name}`。 。 。 . |
| `tier.learning.deleteDialog.{title, desc, warningText, cancelText, deleteText}` | `string` | 单一学习删除对话框副本 . |

#### 空状态

```json
"emptyStateLearning": {
  "title": "No instructions have been added !",
  "desc": "Start by adding instructions that should apply across all documents.",
  "createNewLearning": "Create New Instruction",
  "createGlobalScope": "Create Global Scope",
  "noAccessTitle": "Access Restricted",
  "noAccessDesc": "You do not have access for this application.",
  "requestAccessButton": "Request Access",
  "requestSentButton": "Request Sent"
}
```

| 外地 | 类型 | 需求 | 说明 |
| --- | --- | :-: | --- |
| `title` | `string` | ✅ | 空状态正向. |
| `desc` | `string` | ✅ | 空态描述 . |
| `createNewLearning` | `string` | ✅ | CTA来创造学习. |
| `createGlobalScope` | `string` | ✅ | CTA创建全球范围. |
| `noAccessTitle` | `string` | ❌ | 用户无法访问时的标题 . |
| `noAccessDesc` | `string` | ❌ | 用户无法访问时描述 . |
| `requestAccessButton` | `string` | ❌ | "请求访问"按钮标签. |
| `requestSentButton` | `string` | ❌ | "请求发送"国标. |

* * *

## 更改日志

### 1.3.0-阿尔法.31-2026年6月10日

\- 隐藏“ 复制到水平” 选项 - 学习管理屏幕中隐藏了蒂尔协议人 - 设计来自 ILKB 配置的 Max 雇佣公司及其用户界面变化

### 1.3.0-阿尔法.31-2026年6月10日

从 AI 更改中保存后向兼容性支持

### 1.3.0-α.21-2026,6月8日 (中文(简体) )

**权限——基于联盟的访问解决方案**

-   **联盟模式**:当一个用户在同一资源上拥有多个角色(如被继承的组角色+直接指派)时,所有角色的权限被合并. 如果有任何角色给予许可,用户拥有.
-   **删除**数字 : `ROLE_HIERARCHY`, (中文(简体) ), `getRolePrecedence()`, (中文(简体) ), `resolveHighestRolePerResource()`,则 `resolvedData` 存储域都不见了.
-   **`hasPermission()`** 财务报告和审定财务报表 **`hasApplicationAccess()`** 现在与生为敌 `accessData` 通过新的内部 `getUnionPermissionsForResource()` 帮助构建 `Set` 用于匹配记录的所有权限.
-   `fetchPermissions()` 不再调用解析器——只存储原始API响应.

### 1.3.0-α.20-2026,6月8日 (中文(简体) )

**教会我弹出——LHS自定义通过 `dtt()`**

-   **聊天标题**: 用于添加和编辑模式的配置 `teachMe.chatTitle` 财务报告和审定财务报表 `teachMe.chatTitleEdit`两种支持 `{scope}` 占位符,在运行时替换为选定的范围名称.
-   **欢迎留言**: 通过配置式问候 `teachMe.welcomeMessage`。通过 `teachMe.welcomeMessageSubtitle` 装满 **标记** 通过下列方式提供的支助: `ReactMarkdown`。 。 。 .
-   **动作按钮**: 可通过配置 `teachMe.actions` 数组——每个条目有一个 `label` (按钮文本)和 `value` (点击时向代理发送消息).
-   **文本区域占位符**: 可通过配置 `teachMe.textareaPlaceholder`。 。 。 .
-   **后向兼容性**: 支持 TeachMe 弹出自定义 `backwardCompatibility` 旗帜.

此版本中添加的密钥 :

| JSON 键 | 默认 |
| --- | --- |
| `teachMe.chatTitle` | `"Teach Me OTJ - {scope} - Add Learning"` |
| `teachMe.chatTitleEdit` | `"Teach Me OTJ - {scope} - Edit Learning"` |
| `teachMe.welcomeMessageSubtitle` | `"How would you like to get started?..."` |
| `teachMe.actions` | 矩阵 `{ label, value }` 在v17中,见JSON样本 |
| `teachMe.textareaPlaceholder` | `"Tell me more about this learning.."` |

### 1.3.0-α.19-2026年6月6日,农历六月六日

-   **认知比较工具**: 更新了与视觉变化的比较
-   **图QL 参数**数字 : `userDetails` 对象现在作为 GraphQL 参数传递

### 1.3.0-α.18 - 2026年6月6日 (中文(简体) )

补丁修补:删除所有标签的下划线

### 1.3.0-α.17 - 2026年6月6日 (中文(简体) )

**不向后兼容支持**

-   **教会我渲染者**: 添加了值类型 json 支持来渲染 TeachMe 弹出并创建规则 .
    
    **可配置的用户界面 `dtt()`** ——"TeachMe"弹出中所有LHS标签都是由驱动的 `value_type_config.teachMe` 已装入 JSON 每架 `appIntegrationId` 并在运行时解决 `dtt()` 帮手.
    
    **支持的密钥 :**
    
    | JSON 键 | 默认 |
    | --- | --- |
    | `teachMe.welcomeMessage` | `"Hi! 👋 I'm your Instant Learning Concierge."` |
    | `teachMe.formTitle` | `"Rule setup"` |
    | `teachMe.setupLabel` | `"Configure your IL"` |
    | `teachMe.ruleTitle` | `"Main Rule Name"` |
    | `teachMe.scopeLabel` | `"Define Scope"` |
    | `teachMe.tierLabel` | `"Select Tiers"` |
    | `teachMe.ruleDescriptionTitle` | `"Learning Explanation"` |
    | `teachMe.whenToApplyTitle` | `"Trigger Events (When to Apply)"` |
    | `teachMe.addWhenToApplyBtnLabel` | `"Add WTA"` |
    | `teachMe.whenNotToApplyTitle` | `"Exclusion Events (When NOT to Apply)"` |
    | `teachMe.addWhenNotToApplyBtnLabel` | `"Add WNTA"` |
    | `teachMe.configTitle` | `"Advanced Settings"` |
    | `teachMe.saveBtnLabel` | `"Save Rule"` |
    | `teachMe.saveBtnLoadingLabel` | `"Saving Rule..."` |
    | `teachMe.showConfiguration` | `false` |
    | `teachMe.showScope` | `false` |
    
    **完整样本 `value_type_config` 贾森:**
    

```json
  {
    "template": "Default",
    "teachMe": {
      "welcomeMessage": "Hi! 👋 I'm your Instant Learning Concierge.",
      "welcomeMessageSubtitle": "How would you like to get started?\nYou can select an option below or **describe the rule** you'd like to create.",
      "actions": [
        { "label": "Separation rule",          "value": "I would want to add a separation rule" },
        { "label": "Max priority rule",        "value": "I would want to set a max priority rule" },
        { "label": "Break code matching",      "value": "I would want to add a break code matching rule" },
        { "label": "Inventory code matching",  "value": "I would want to add a inventory window matching rule" },
        { "label": "Enter a rule description", "value": "I want to add a rule description" },
        { "label": "Tester Genie",             "value": "Loading prompt..." }
      ],
      "chatTitle": "Teach Me OTJ - {scope} - Add Learning",
      "chatTitleEdit": "Teach Me OTJ - {scope} - Edit Learning",
      "formTitle": "Rule Setup",
      "setupLabel": "Configure your IL",
      "ruleTitle": "Main Rule Name",
      "scopeLabel": "Define Scope",
      "tierLabel": "Select Tiers",
      "ruleDescriptionTitle": "Learning Explanation",
      "whenToApplyTitle": "Trigger Events (When to Apply)",
      "addWhenToApplyBtnLabel": "Add WTA",
      "whenNotToApplyTitle": "Exclusion Events (When NOT to Apply)",
      "addWhenNotToApplyBtnLabel": "Add WNTA",
      "configTitle": "Advanced Settings",
      "saveBtnLabel": "Save Rule",
      "saveBtnLoadingLabel": "Saving Rule...",
      "textareaPlaceholder": "Tell me more about this learning..",
      "showConfiguration": false,
      "showScope": false
    },
    "learningManagement": {}
  }
```

> ⚠️ **重要**编号: `template` 键在根部 `value_type_config` **必须** 规定任何JSON自定义生效。 没有它,系统会回到通过 `value_type_name` 从 API 中,配置值不能被应用.
> 
> ```json
> {
>   "template": "Default"
> }
> ```
> 
> 值必须与在 `TemplateRegistry`数字 :
> 
> | `template` 价值 | 渲染器 |
> | --- | --- |
> | `"Default"` | `DefaultTeachMeRenderer` |
> | `"Radio Traffic Learning"` | `RadioTrafficLearningRenderer` |
> | `"Guidelines"` | `GuidelinesTeachMeRenderer` |
> 
> 对于自定义插件,请使用您注册的确切密钥 `TemplateRegistry` 内 `TeachMePlugin.tsx`数字 :
> 
> ```ts
> export const TemplateRegistry: Record<string, React.FC<TeachMeWrapperProps>> = {
>   "Default": DefaultTeachMeRenderer,
>   "Radio Traffic Learning": RadioTrafficLearningRenderer,
>   "Guidelines": GuidelinesTeachMeRenderer,
>   "Your Template Name": YourCustomRenderer, // ← use this exact string in "template"
> };
> ```
> 
> 如果提供 `template` 值在 `TemplateRegistry`,系统自动返回到 `"Default"`。 。 。 .

-   **学习管理设计师**: 添加了值类型json支持来渲染学习管理屏幕,并从同一角度创建规则.
    
    **可配置的用户界面 `dt()`**
    
    LMS 用户界面由远程 JSON 配置驱动 `appIntegrationId`。每个标签、按钮文本和对话框副本在运行时通过 `dt()` 帮助者而不是被硬码.
    
    `dt()` ——在任何地方读取配置值
    

```ts
  function dt(
    path: string,                             // dot-notation key into LMSConfig
    fallback?: string,                        // returned when key is missing
    params?: Record<string, string | number>  // fills {placeholder} tokens in the value
  ): string
```

-   从Zustand商店直接读取(无钩子-在React组件外工作).
-   回返 `fallback ?? path` 当未找到密钥或配置未加载时.

**实例:**

```ts
  dt('pageTitle')
  // → value of lmsConfig.pageTitle

  dt('middleDrawer.addScope', 'Add Scope')
  // → config value or fallback 'Add Scope'

  dt('learnings.tier.deleteDialog.title', 'Delete {N} learnings', { N: 3 })
  // → "Delete 3 learnings"  (placeholder replaced)

  dt('learnings.tier.learning.approveDialog.desc', undefined, { variant_name: 'Rule A' })
  // → config string with {variant_name} replaced by "Rule A"
```

### 1.3.0-α.16 - 2026年6月5日,美国

-   **范围 管理**: 在 AddScopeModal 和相关 API 端点中添加了对创建和删除范围的支持
-   **覆盖历史**: 获取覆盖历史时包含应用集成Id,以确保正确的集成上下文
-   **规则检索**: 通过 RulesId 获取规则时添加了应用程序集成Id支持
-   **删除范围**: 站台范围固定删除逻辑,以便在类型=站台时将相关站台正确删除

### 1.3.0-α.15-2026年6月5日,农历六月五日

-   **教我的发条**: 已修改的默认 Teach Me 渲染器——从通用渲染器切换为无线电交通值类型渲染器,支持规则创建流程

### 1.3.0-α.14-2026年6月5日,纽约

-   **IL 模式 - 范围创建**数字 : `parentScopeId` 现在在从儿童节点创建出一个新的范围时,正确接收了父母范围的ID(全球ID),而不是总是 `null`
-   **自动后退**: 添加可选链条(`?.`继续 `userDetails.accessToken` 防止在重新装入时发生相撞
-   **访问科**: 隐藏 Access 部分的固定逻辑——它现在总是可见的,不管它是什么 `backwardCompatibility` 旗帜

* * *

## 阿尔法发布命令

# 创建第一个α版本( 如 0.1. 0- alpha. 0)

npm 版本预发 -- preid=alpha

# 增加α版本(例如:0.1.0-α.1)

npm 版本预发 -- preid=alpha

# 在 Alpha 标签下发布软件包

npm 发布 -- tag alpha

# 安装特定的 Alpha 版本

npm 安装@e-llm-studio/instant-learning@.1.0-alpha.1 互联网档案馆的存檔,存档日期2013-12-21

## 常见问题

### @e-llm-studio/instant-learning 是什么？

用于即时学习的可再使用再激活组件 \.

### 如何安装 @e-llm-studio/instant-learning？

在项目目录运行 npm install @e-llm-studio/instant-learning，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：axios（^1\.7\.9）、react（\>=16\.8\.0 \<19\.0\.0）、react-dom（\>=16\.8\.0 \<19\.0\.0）、react-router-dom（^7\.5\.2）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @e-llm-studio/instant-learning 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @e-llm-studio/instant-learning 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @e-llm-studio/instant-learning 可以商用吗？

@e-llm-studio/instant-learning 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @e-llm-studio/instant-learning 的下载量有多少？

根据 npm 官方下载统计，@e-llm-studio/instant-learning 在 2026/10/13 – 2026/11/11 这 30 天内被下载 9,155 次，日均约 305 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @e-llm-studio/instant-learning 还在维护吗？

最新版本 1\.3\.34 发布于 2026/11/13（今天）；至今共发布 739 个版本，其中过去 12 个月发布了 653 个；首次发布于 2025/07/08。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

