开发状态:
基于抽象CIN接口库BabelNAR的具体CIN实现
- 对接的两端
- 前端:
- 后端NARS实现(OpenNARS、ONA、NARS-Python、PyNARS、OpenJunars、Narjure、NARS-Swift……)
- 为其它使用Narsese的库提供数据结构表征、存取、互转支持
相关概念可参考BabelNAR.jl的相应部分
作为一个Julia包,您只需:
- 在安装
Pkg
包管理器的情况下, - 在REPL(
julia.exe
)运行如下代码:
using Pkg
Pkg.add(url="https://github.com/ARCJ137442/BabelNAR-Implements")
要运行BabelNAR,首先需要在scripts
目录下配置CIN-paths.local.jl
- 🎯其将被脚本用
include
函数引入,并作为字典类型Dict{Symbol,String}
使用 - 📌为方便对接脚本代码,可使用上下文相关的特殊变量作为CIN名称
- 📄具体类型
TYPE_OPENNARS
: 对应CIN类型 OpenNARSTYPE_ONA
: 对应CIN类型 ONATYPE_NARS_PYTHON
: 对应CIN类型 NARS-PythonTYPE_OPEN_JUNARS
: 对应CIN类型 OpenJunarsTYPE_PYNARS
: 对应CIN类型 PyNARS
- 🔗参考链接:native.jl#L46
- 📄具体类型
格式:
"【CIN类名】" => "【文件名】"
参考代码:
# CIN-paths.local.jl
# ! 文件的上下文由`console.jl`提供
# * 使用 `../` 表示所在目录的上一级目录
Dict([
TYPE_OPENNARS => "../executables/opennars.jar"
TYPE_ONA => "../executables/NAR.exe"
TYPE_NARS_PYTHON => "../executables/main.exe"
TYPE_OPEN_JUNARS => "../executables/OpenJunars-main"
TYPE_PYNARS => "../executables/launch-pynars-console-plus.cmd"
])
要运行统一的聚合终端,可直接运行scripts/console.jl
:
cd BabelNAR
julia scripts/console.jl
进入终端后,通过命令行输入选择相应CIN,即可进行交互。
要运行【带Websocket服务端】的聚合终端scripts/console_WSServer.jl
- 为使Websocket服务器能正常工作,需要Julia环境安装有 SimpleWebsockets 、 JSON 包
cd BabelNAR
julia scripts/console_WSServer.jl
当终端输出 [ Info: Listening on: 【IP地址:端口】, thread id: 【XXX】
时,BabelNAR Websocket服务器已成功启动
- 外部程序可与之连接并互传信息
- 传入:向其发送NAVM指令(NAIR指令)
- 传出:接收CIN运行输出(JSON)
其中,CIN运行输出为JSON格式,其内容用TypeScript定义如下:
type WebNARSOutput = {
/** 输出类型 */
output_type: string
/** 输出内容 */
content: string
/** 接口名称 */
interface_name?: string // 【2024-01-25 17:38:44】目前只在PyNARS中用到
/** 输出的操作及其参数 */
output_operation?: NARSOperation // 只在`EXE`中出现
}
/** NARS操作 = [操作符(不带尖号"^"), 操作参数...] */
type NARSOperation = [string, ...string[]]