ShellAgent v3.0升级方法

ShellAgent v3.0升级方法

经过长时间更新,v0.3.0终于更新啦!在0.2.23-beta的基础上,此次更新包括

  • 丰富Widget

    1. 支持Runninghub Widget

    2. 支持Custom Widget开发与部署

    3. 支持Web3相关Widgets

    4. 支持MyShell主站许多生产力型Widgets

  • 丰富App模式

    1. 支持创建Twitter bot(X Agent)

  • 丰富ShellAgent基础功能

    1. 拓展变量类型,变量支持Number, Integer, Boolean, Object和Array类型

    2. 新增Timer Transition,支持主动推送消息给用户

    3. 新增Form, Condition节点类型

    4. Chat/IM输入支持文件上传

  • 优化ShellAgent安装与更新

    1. 本地版改为安装包一键安装模式

    2. 支持数据的备份与恢复

    3. 支持版本更新数据一键迁移

  • 还有

    1. 采用新版视觉风格

    2. 大量问题的修复

因为包含了非常多的功能,所以即便是我们修复了大量问题也依然还需要持续优化。同时还有不少功能仍在持续开发中。

另外有些功能的改动(尤其是Form, Condition, Chat的改动),可能会影响到您的操作习惯,我们下面会仔细介绍。

一、安装和数据迁移

安装地址:https://huggingface.co/cherway/ShellAgent/tree/main/v0.3.0

Windows用户

退出旧版ShellAgent。双击exe启动新版ShellAgent。

如果不需要旧数据,启动过程就结束了。否则请执行下面数据导入的操作

打开原ShellAgent目录,找到data文件夹,稍后复制该文件夹

新打开一个Windows窗口,地址栏输入 %APPDATA%/shellagent

复制原data文件夹,在新窗口粘贴data

刷新ShellAgent网页

Mac用户

退出旧版ShellAgent。双击dmg,拖拽到Application中,启动新版ShellAgent。


系统会阻止你打开,此时进入系统设置,点击“仍要打开”允许ShellAgent运行。

稍等十几秒。如果弹出一个包含 ShellAgent_macos_portable.dmg 文件的Finder窗口请无视它。

完成。



如果不需要旧数据,启动过程就结束了。否则请执行下面数据导入的操作

打开原ShellAgent目录,找到data文件夹,稍后复制该文件夹


新打开一个Finder窗口,command+shift+G,输入 ~/Library/Application Support/shellagent


复制原data文件夹,在新窗口粘贴data

刷新ShellAgent网页


二、新增功能使用简介

Runninghub Widget使用  


Runninghub Widget非常简单

1.Settings里设置 RUNNINGHUB_API_KEY 为你在Runninghub上的API key。

2.正常添加Widget,并用输入Runninghub workflow id替代导入ComfyUI Workflow的步骤即可。

      使用Runninghub Widget之后,会使用MyShell的电量,不再消耗Runninghub API调用的额度。

使用Runninghub Widget不再需要保存Bot时部署ComfyUI环境,能大大简化您的部署流程。

2. Custom Widget的开发与部署

参考ShellAgent Custom Widgets 开发

PS:仍在内测中

3. Web3功能使用介绍

参考Web3 Widget 中文

4. Twitter Bot

参考如何创建X Agent

5. 拓展变量类型


定义数组

Type选择Array后需要在Items.Type中定义数组元素的类型。


在赋值时则会显示成类似效果

定义对象

Type选择Object后需要在Properties中定义对象各成员属性的类型。



在赋值时则会展示成类似效果

6. 支持主动推送

参考主动推送消息

7. 数据的备份与恢复

备份会将工作区所有文件包含它的所有版本保存下来,其中每个App的latest会保存为一份单独的version。


在恢复时,如果是相同的App,恢复的备份也会以版本的形式出现,可以选择指定版本restore。

三、使用方式变化

所有的设计变化来源于一个原则:状态机在ShellAgent画布上的样子,应该和开发者用纸笔画的样子一致。

虽然有些功能基于人力限制我们还没法立刻实现,但我们一定会持续努力优化。

假设你希望开发一个根据用户输入不断生成图片形成一个绘本的chatbot,可能会画出下面的chatbot状态机


那么在现在的ShellAgent下它就会长这样

除了连线不太清楚,整体结构是一模一样的。

1. Form节点


为什么

我们现在把填入表单变成了一个独立的Form节点。为什么要这么做呢?或者说,为什么要删除原来的 User Input 选项呢?

有好几个原因让我们决定把它从State的 User Input: true, Source: "form" 中挪出来

  1. 非常多的新开发者不能直观地了解 User InputSource 两个选项的含义,它们的限制也很让人困惑,并且藏得比较深

  2. Regenerate等需求需要复制State才能实现,一个State需要打开User Input接受表单输入,一个State需要关掉User Input引用变量

  3. 大部分State的输入不需要考虑UI展示、校验项,而表单需要。未来也可以为Form节点做针对性的优化,包括更多表单UI的选项、表单预览等等功能。

因此我们决定让Form成为一个单独的节点,State在概念上就是一个单纯接受输入、返回输出、输出大概率会渲染一条bot消息的实体。

User Input 选项从 State 中删除之后,我们就可以方便的做到:

1.Regenerate


2.同时接受Form和IM输入

3.多种表单输入使用同一个State

Form的使用方式和优化

但是使用单独的Form节点也会带来一些代价,核心代价就是需要在Form节点和State节点重复创建同一个变量,并且让它们关联起来。

1.State创建变量


2.Form创建变量


3.Transition传递变量

如果不需要Regenerate,这一切在原先的方案上只需要给每个Input选择 Source: "form" 就行了,现在繁琐多了。

为了解决这个问题,我们开发了几个功能:

  1. 批量复制变量。可以变量定义直接从一个节点复制到另一个节点,这样变量新建两遍的问题就得到了缓解

    • 使用方法:按住command/ctrl+点击Inputs/Outputs即可选择待复制的变量,command/ctrl+c复制。 再command/ctrl+点击粘贴的目的地,command/ctrl+v粘贴。

  2. 自动引用变量。在Transition里点击自动引用变量,会寻找变量名称相同的两个变量自动建立关联,减少手动赋值成本。

    • 使用方法:在Target Inputs,为需要引用的变量切换成ref模式,右上角选择Auto ref。

  3. [正在排期]自动创建表单变量。在Form里点击自动创建,将自动实现上述第1、第2步。

2. Chat Transition


为什么

Chat和Form有一样的问题,它让State变得更复杂也更难复用了。而且Chat输入框和Chat变量是定义在两个State中,后一个State的变量可以修改前一个State消息的样式,这非常奇怪。

但是Chat不像Form一样存在自定义Form表单,输入框只能支持:文本、音频、文件上传有限的三种操作。所以我们没有设置一个单独的IM输入State,而是设计成Transition里可以直接使用Chat的值。

使用

和Form节点一样,它也有类似的代价,但是它的代价更小,就是在Chat Transition的连线中根据需要通过Target Inputs传递相应参数即可。

1.State创建变量


2.在所有相关Chat Transition为它赋值

除了文本,你还可以通过

  • Payload.audio:获得用户的语音输入

  • Payload.files:获取用户上传的文件

  • Payload.file:获取用户上传的第一个文件

没有使用的Payload,其相应的选项在聊天输入框内会被禁用。

3. Condition节点

为什么

我们把原先Conditional Transition的功能也迁移成一个单独的Condition节点了。因为大部分开发者都用不到Transition的Condition条件判断,但是它使得传递Target Inputs藏在齿轮里,几乎没人愿意使用。


使用

新建Condition节点后,通过节点连接各种其他节点即可。


但是条件判断需要的变量依然需要传递给Condition节点

这里也建议使用批量复制+自动引用的方式来传递变量

为了解决这个问题,我们开发了几个功能: