You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用jQuery Terminal搭建无预设命令的问答系统?兼释解释器类型差异

使用jQuery Terminal搭建无预设命令的问答系统及解释器类型解析

问题描述

我已阅读jQuery Terminal的文档及相关文章,目前将其用于GUI而非命令行终端功能,希望实现问答交互:输出问题并读取答案,类似选择类游戏的交互逻辑。

文章中的示例代码(基于对象解释器):

<script>
$('body').terminal({
    hello: function(what) {
        this.echo('Hello, ' + what +
                  '. Welcome to this terminal.');
    }
}, {
    greetings: 'My First Web Terminal'
});
</script>

会生成问候语,但需知晓预设命令'hello'才能使用,输入错误命令会提示“Command x not found”。

文档中读取输入的示例代码:

$('#term').terminal({
   name: function(name) {
      this.read('last name: ', last_name => {
         this.echo('Your name is ' + name + ' ' + last_name);
      });
   }
});

同样需要知晓预设命令'name'才能使用。

请问是否有简便方法搭建无需预先设定命令的问答系统?同时我未理解将解释器创建为函数、对象或字符串的不同适用场景,望解答。


一、搭建无预设命令的问答系统

使用函数式解释器即可实现无需预设命令的问答逻辑,它会接收用户的所有输入并交由自定义逻辑处理,完全摆脱预设命令的限制。以下是一个类似选择类游戏的示例:

$('body').terminal(function(input) {
    // 清除当前输入行
    this.clear();
    
    // 用自定义变量跟踪当前问答阶段
    if (!this.currentStage) {
        // 初始问题
        this.echo('欢迎来到选择游戏!请输入你的名字:');
        this.currentStage = 'name';
    } else if (this.currentStage === 'name') {
        this.echo(`你好,${input}!接下来请选择你的冒险方向:1. 森林 2. 城堡`);
        this.currentStage = 'choice';
    } else if (this.currentStage === 'choice') {
        switch(input.trim()) {
            case '1':
                this.echo('你进入了森林,发现了一只可爱的小鹿!');
                break;
            case '2':
                this.echo('你来到了城堡门前,守卫向你敬礼!');
                break;
            default:
                this.echo('请输入有效的选项(1或2)!');
                this.echo('请选择你的冒险方向:1. 森林 2. 城堡');
                return;
        }
        this.echo('接下来你想做什么?输入"继续"开启下一段旅程:');
        this.currentStage = 'next';
    } else if (this.currentStage === 'next' && input.trim() === '继续') {
        this.echo('新的冒险即将开始...');
        // 重置流程,可循环交互
        this.currentStage = null;
    } else {
        this.echo('请按照提示输入正确内容!');
        if (this.currentStage === 'next') {
            this.echo('输入"继续"开启下一段旅程:');
        }
    }
}, {
    greetings: '选择类游戏问答系统',
    prompt: '请输入你的答案:'
});

核心逻辑:

  • 以函数作为解释器,所有用户输入都会传入该函数
  • 通过自定义变量(如currentStage)跟踪当前问答节点
  • 根据输入内容和当前节点,动态输出下一个问题或反馈

二、三种解释器的适用场景

1. 对象解释器

  • 适用场景:需要预设明确命令的传统终端式交互,比如模拟命令行工具、后台管理终端等。
  • 特点:对象的每个键对应一个命令名,值为处理该命令的函数。用户必须输入预设命令名才能触发逻辑,输入未定义命令会提示“Command not found”。
  • 典型场景:你提供的hello、name命令示例,适合有固定操作指令的场景。

2. 函数解释器

  • 适用场景:需要完全自定义输入处理逻辑的场景,比如问答系统、聊天机器人、选择类游戏等。
  • 特点:所有用户输入都会传入该函数,可自由处理输入内容,无需预设命令,完全控制交互流程。
  • 典型场景:上面的问答系统代码,适合无固定命令、需要动态引导用户的交互。

3. 字符串解释器

  • 适用场景:需要自定义小型脚本语言或解析表达式的场景,比如让用户输入数学表达式、简单脚本指令等。
  • 特点:将用户输入的字符串当作代码执行(需配合自定义解析逻辑),可实现复杂的自定义语法。
  • 典型场景:支持用户输入2+3*4这类数学表达式并返回结果,或自定义一套简单的指令语法。

内容的提问来源于stack exchange,提问作者jm007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:54:54