@e-llm-studio/instant-learning

中文文档
1.3.34发布于 2026/11/13MITTypeScriptESM + CJS近 30 天下载 9155

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

中文使用文档
文档目录19 节
  1. 使用和整合
  2. 1. 联合国. LearningManagement
  3. 2. 联合国. TeachMePlugin
  4. 配置参考
  5. 高层结构
  6. teachMe 字段
  7. learningManagement 字段
  8. 更改日志
  9. 1.3.0-阿尔法.31-2026年6月10日
  10. 1.3.0-阿尔法.31-2026年6月10日
  11. 1.3.0-α.21-2026,6月8日 (中文(简体) )
  12. 1.3.0-α.20-2026,6月8日 (中文(简体) )
  13. 1.3.0-α.19-2026年6月6日,农历六月六日
  14. 1.3.0-α.18 - 2026年6月6日 (中文(简体) )
  15. 1.3.0-α.17 - 2026年6月6日 (中文(简体) )
  16. 1.3.0-α.16 - 2026年6月5日,美国
  17. 1.3.0-α.15-2026年6月5日,农历六月五日
  18. 1.3.0-α.14-2026年6月5日,纽约
  19. 阿尔法发布命令

即时学习图书馆

使用和整合

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

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

安装 :

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

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

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)

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

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


2. 联合国. TeachMePlugin

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

导入样本使用( S)

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

需求 config 字段

外地类型需求说明
BASE_URLstring✅LLM Studio Base URL;用于聊天/REST呼叫.
BASE_WEBSOCKET_URLstring✅WebSocket (GraphQL) 直播聊天所使用的端点.
ORGANIZATION_NAMEstring✅助手的组织标识符 .
ASSISTANT_NAMEstring✅授权"教导我"的助手的名字.
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);任何缺失的密钥会回落到内置默认值,所以您只需要覆盖您想要更改的内容.

高层结构

{
  "template": "Default",
  "agents": { "LearningTerm": "Instruction" },
  "teachMe": { "...": "TeachMe popup labels" },
  "learningManagement": { "...": "Learning Management screen labels" }
}
密钥类型需求说明
templatestring✅铸出者钥. 必须 用于应用任何自定义;必须与 TemplateRegistry 键"Default", (中文(简体) ), "Radio Traffic Learning", (中文(简体) ), "Guidelines"(中文(简体) ). 未知值返回到 "Default"。 。 。 .
agents.LearningTermstring❌跨UI(如. "Instruction", (中文(简体) ), "Guideline") (中文(简体) ).
teachMeobject❌给老师的标签 见 teachMe 字段。 。 。 .
learningManagementobject❌学习管理屏幕的标签(图至 LMSConfig) (中文(简体) ). 见 learningManagement 字段。 。 。 .

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

QQ 完整配置 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()。 。 。 .

"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
}
外地类型说明默认
welcomeMessagestring主打问候在聊天的顶端."Hi! 👋 I'm your Instant Learning Concierge."
welcomeMessageSubtitlestring副标题下打招呼。 支助 标记 财务报告和审定财务报表 \n 换行."How would you like to get started?…"
actionsArray<{ label, value }>快速动作按钮. label 是按钮文本; value 是在单击时发送给代理服务器的消息.6 个默认动作
chatTitlestring弹出标题 添加 模式。 支助 {scope}。 。 。 ."Teach Me OTJ - {scope} - Add Learning"
chatTitleEditstring弹出标题 编辑 模式。 支助 {scope}。 。 。 ."Teach Me OTJ - {scope} - Edit Learning"
chatTextareaPlaceholderstring免费聊天文本区的占位符 ."Tell me more about this learning.."
formTitlestring内置规则格式部分的标题."Rule setup"
setupLabelstring设置/配置区域的标签 ."Configure your IL"
ruleTitlestring规则/学习名称字段的标签 ."Main Rule Name"
scopeLabelstring瞄准镜选择器的标签 ."Define Scope"
tierLabelstring分级选择器的标签 ."Select Tiers"
ruleDescriptionTitlestring描述字段的标签 ."Learning Explanation"
whenToApplyTitlestring触发事件的标题 ."Trigger Events (When to Apply)"
addWhenToApplyBtnLabelstring按钮以添加"何时应用"条目."Add WTA"
whenNotToApplyTitlestring排除事件的标题."Exclusion Events (When NOT to Apply)"
addWhenNotToApplyBtnLabelstring按钮以添加"当不应用时"条目."Add WNTA"
configTitlestring高级设置区域的标题 ."Advanced Settings"
saveBtnLabelstring保存按钮标签 ."Save Rule"
saveBtnLoadingLabelstring保存时保存按钮标签 ."Saving Rule..."
showScopeboolean是否显示范围选择部分 .false
showConfigurationboolean是否显示高级配置部分 .false

learningManagement 字段

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

页中抽屉( M)

"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 标题中显示标题 .
scopestring当前范围的标题.
addScope 编号 : addSubScope 编号 : subScopestring用于添加镜,添加子镜按钮和子镜节点的标签.
treeMenu.searchstring搜索范围树输入的占位符 .
treeMenu.submenu.{learnings, access, changeHistory}string树子菜单标签.
treeMenu.contextMenu.{addScope, rename, delete, addSubScope}string右键单击上下文菜单动作 . delete 支持 {scope}。 。 。 .
addScopeDialog.title 编号 : globalTitle 编号 : subScopeTitlestring创建范围/ 全球范围/ 子范围的对话框标题 . subScopeTitle 打开对话框时使用 childType="SUBSCOPE"; 倒计时 middleDrawer.addSubScope 如果未设置.
addScopeDialog.subtitle 编号 : globalSubtitle 编号 : subScopeSubtitlestring对话框字幕. 支助 {parent}。 。 。 .
addScopeDialog.scopeName 编号 : subScopeNamestring瞄准镜名称字段/子瞄准镜名称字段的标签 . subScopeName 倒计时 middleDrawer.subScope + " Name" 如果未设置.
addScopeDialog.submitButton 编号 : cancelstring对话框动作按钮 .
addScopeDialog.learningApprovalSettings.titlestring审批设置部分标题.
…approvalRequired.{title, subtitle}string复制“ 需要批准” 选项 .
…publishWithoutApproval.{title, subtitle}string复制"未经批准推出"选项.
scopeDisplayLimit.enabledstring (单位:千美元)"true"编号 :"false"(中文(简体) )切换每个级别显示限制.
scopeDisplayLimit.countstring (数目)崩溃前要显示多少项 .
scopeDisplayLimit.compactViewstring (单位:千美元)"true"编号 :"false"(中文(简体) )启用压缩渲染 .
scopeDisplayLimit.applyToLevelsstringJSON 阵列 1- 指数级以限制,例如. "[1,2]"。空 = 所有级别.
scopeDisplayLimit.viewMoreTextstring"再看"切换文本. 支助 {count}。 。 。 .
scopeDisplayLimit.titlestring取而代之的是标题中的"Stations". 支助 {scope}。 。 。 .
scopeDisplayLimit.descriptionstring站名下方描述. 支助 {scope}。 。 。 .
scopeDisplayLimit.searchPlaceholderstring车站搜索占位符.
scopeDisplayLimit.onboardBtnstring"一站上"按钮标签.
scopeDisplayLimit.viewTextstring每站"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…", "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.titlestring学习页标题. 支助 {scope}。 。 。 .
header.exportButtonstring导出按钮标签 .
header.addNewLearningButtonstring"添加新学习"按钮标签.
tier.showTierHeaderboolean是否显示分级标题区域 .
tier.tierHeaderstring等级标题 .
tier.subtitlestring第一级字幕/说明.
tier.tierHeaderNoOfLearningsstring学习的文字 计数标签.
tier.deleteDialog.{title, description, cancel, submit}string分级删除对话框副本 . title 支持 {N}。 。 。 .
tier.learning.inheritancestring继承指标标签 .
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单一学习删除对话框副本 .

空状态

"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"
}
外地类型需求说明
titlestring✅空状态正向.
descstring✅空态描述 .
createNewLearningstring✅CTA来创造学习.
createGlobalScopestring✅CTA创建全球范围.
noAccessTitlestring❌用户无法访问时的标题 .
noAccessDescstring❌用户无法访问时描述 .
requestAccessButtonstring❌"请求访问"按钮标签.
requestSentButtonstring❌"请求发送"国标.

更改日志

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.showConfigurationfalse
    teachMe.showScopefalse

    完整样本 value_type_config 贾森:

  {
    "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 中,配置值不能被应用.

{
  "template": "Default"
}

值必须与在 TemplateRegistry数字 :

template 价值渲染器
"Default"DefaultTeachMeRenderer
"Radio Traffic Learning"RadioTrafficLearningRenderer
"Guidelines"GuidelinesTeachMeRenderer

对于自定义插件,请使用您注册的确切密钥 TemplateRegistry 内 TeachMePlugin.tsx数字 :

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() ——在任何地方读取配置值

  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 当未找到密钥或配置未加载时.

实例:

  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/[email protected] 互联网档案馆的存檔,存档日期2013-12-21

版本与发布记录

@e-llm-studio/instant-learning 共发布 739 个版本,首次发布于 2025/07/08;过去 12 个月发布了 653 个版本。

版本发布日期距今
1.3.34latest2026/11/13今天
1.3.332026/11/121 天前
1.3.322026/11/121 天前
1.3.312026/11/112 天前
1.3.31-alpha.3alpha2026/11/112 天前
1.3.31-alpha.22026/11/103 天前

其他发布通道:beta → 1.3.0-beta.2,test → 1.3.0-alpha.288,alpha → 1.3.31-alpha.3。

关于 @e-llm-studio/instant-learning 的常见问题

@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 和提交记录判断。