
我们在工作流的开发中会需要用到“当前时间”。
比如存入飞书表格,避免名字重复或者根据需要在画板上展示当前日期,比如拼接文件名,我们会在后面拼接一个当前时间(以python为例):

但是如果多个工作流需要就需要重复写代码,这时候为了减少工作量,也可以选择调用获取时间的插件,在插件商店里搜索,发现有很多别人发布的时间相关的插件:

可能大家会觉得,既然有现成的插件可以用,为什么我还要自己去封装、重复的造轮子呢?
一是因为我们要从简单的插件入手,学习如何编写、测试、发布;二是因为不是所有插件都能直接符合我们的需求,所以我们要学习,写出符合我们自己项目需要的插件。
需求分析
比如说这些时间插件都是直接返回当前时间,如果我要把返回的时间拼接上文件名,那在工作流中还需要添加一个文本节点或者代码节点将数据拼接起来,那为什么不能考虑写一个插件一步到位呢?
可以的朋友!可以的!
创建插件
在资源库中点击+资源>插件填写插件的基础信息新建一个插件,我们直接选择在coze IDE中创建,这里IDE的运行环境选择python3,

创建工具
创建工具就相当于一个接口、api,一个插件里可以创建多个工具。

以下几个地方都可以点击:

写上名字splice_current_time,然后对这个工具的用途写个介绍。

创建完成之后会看到有一段默认的代码

中间的文本可以看作是一个简单的教程,它为我们解释了为什么代码的基础结构是这样的,每个参数是什么意思:

添加元数据
切换到元数据,分别编辑输入、输出参数,参数名的格式只支持字母、数字或下划线,编辑完记得点击保存。

用AI写代码
这个代码我们直接就让AI帮我们写就行了
第一种,我们选中代码范围,会出来一个AI的按钮:

第二种,使用ctrl+I唤起 
AI在写的时候会参考我们测试里的测试数据,所以需要提前生成一下测试数据

这时候就可以唤起AI写代码了,我的指令是:将content拼接上当前时间并输出,因为我设置的输入参数名字叫做content,如果你写的别的,需要替换成对应的名字。
可以看到右侧绿色部分就是AI新增的代码,我们点击接受,那右侧绿色的部分会替换掉左侧红色的部分,如果单独点击ALT+Y表示接受替换这一块的代码,ALT+N就是不接受这一块的代码,维持原来的代码

测试代码
点击右上角的绿色按钮打开测试,点击自动生成生成测试的数据,也可以自己替换,最后点击运行,看一下代码是否能运行成功

看一下运行结果

{args.input.content}这个就是输入的content的值
{current_time}是当前时间,时间的格式我们是可以通过strftime里传参控制的%Y-%m-%d %H:%M:%S中Y取的Year的首字母,代表年,后面依次次是月-日 时:分:秒

如果我这里的最终的展示格式我想呈现为:输入的内容-年/月/日 X时X分,那么我可以修改代码为:

优化代码
但现在有个问题,拼接的效果实现了,如果我不传值的情况我预期是只输出时间的,我们测试一下:

从输出结果可以看出来,输出的数据并不符合我们的要求,多了一个-,这个作为连接符被我们写死在了代码里,那怎么处理呢?
优化1.0
可以在这里添加一个逻辑,如果content不为空就输出当前这个拼接的result,如果为空就直接输出当前时间,那么我可以告诉AI:

那么AI运行后给了我们解决方案,可以看到代码里使用了if-else来判断,

再来运行一下,就正常了:

优化2.0
但是又有新的问题出来了,现在的代码意味着,我在输入内容拼接时间的时候,中间永远有个-,那可能有时候我不想要这个-,我想换成一个空格或者一个冒号:,甚至换成文字生成于,这都是不固定的,那就有两种解决方案:
- 方案一:把现在代码里的
-删掉,想用什么作为中间的拼接桥梁就和content一起传入进来,比如:智能体来了、智能体来了:、智能体来了生成于。但是这样做有个问题,比如用户输入的是`智能体来了我还是得添加一个节点把中间的这个桥梁给拼接上再传给创建,这就又麻烦了一步。 - 方案二:新增一个输入参数作为中间的桥梁,连接两边的内容,传什么就是什么,更加灵活。
那这里我们再在元数据里添加一个输入参数

然后回到我们的代码界面,先更新一下测试数据

然后告诉AI我们的需求无论content是否为空,直接输出content拼接middle str拼接当前时间的值,这个IDE自带的AI生成的代码不是一次性就符合要求的,有时候可能需要多尝试几次

因为原代码里有if-else,所以重新生成的时候可能会出现还是有if-else的情况,但是我不希望出现,提示词里也写了,所以重新生成几次,测试一下输出效果。

发布
测试通过后结果没问题就可以发布了



发布成功了

发布后如果是自己使用的话,可以在自己的资源库工具中添加使用

如果想让别人也搜索到,能够使用,可以上架到插件商店

关于插件的内容会根据你创建插件时写的描述以及对输出参数的描述自动生成:

然后提交,等待审核

上架插件注意事项
上架插件的时候记得把插件的默认题标换掉,不然会审核不通过,最新的就是更改了图标后重新发布上架的

拓展
我们的插件还有优化的地方,现在我们的时间格式是固定死的,那是不是可以再新增一个输入参数,通过输入%Y-%m-%d %H:%M:%S,用来控制时间的格式呢?
大家可以自己优化一下代码哦~


