Skip to content

Commit 49983ab

Browse files
committed
feat(aichat): add agent mode
1 parent 4dd5189 commit 49983ab

5 files changed

Lines changed: 32 additions & 4 deletions

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1634,6 +1634,7 @@ print("run[CQ:image,file="+j["img"]+"]")
16341634
- [x] 设置AI聊天触发概率10
16351635
- [x] 设置AI聊天温度80
16361636
- [x] 设置AI聊天接口类型[OpenAI|OLLaMA|GenAI]
1637+
- [x] 设置AI聊天(不)使用Agent模式
16371638
- [x] 设置AI聊天(不)支持系统提示词
16381639
- [x] 设置AI聊天接口地址https://api.siliconflow.cn/v1/chat/completions
16391640
- [x] 设置AI聊天密钥xxx
@@ -1649,6 +1650,7 @@ print("run[CQ:image,file="+j["img"]+"]")
16491650
- [x] 查看AI聊天配置
16501651
- [x] 重置AI聊天
16511652
- [x] 群聊总结 [消息数目]|群聊总结 1000
1653+
- [x] /gpt [内容](使用大模型聊天)
16521654

16531655
</details>
16541656
<details>

go.mod

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ require (
1212
github.com/FloatTech/sqlite v1.7.1
1313
github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562
1414
github.com/FloatTech/zbpctrl v1.7.0
15-
github.com/FloatTech/zbputils v1.7.2-0.20250921072315-465a1f1d1fbb
15+
github.com/FloatTech/zbputils v1.7.2-0.20250921143810-bb64d87a5416
1616
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7
1717
github.com/RomiChan/websocket v1.4.3-0.20220227141055-9b2c6168c9c5
1818
github.com/Tnze/go-mc v1.20.2
@@ -24,6 +24,7 @@ require (
2424
github.com/fumiama/cron v1.3.0
2525
github.com/fumiama/deepinfra v0.0.0-20250920170049-e3d1b92cc3a1
2626
github.com/fumiama/go-base16384 v1.7.0
27+
github.com/fumiama/go-onebot-agent v0.0.0-20250921143402-d55156efbd5b
2728
github.com/fumiama/go-registry v0.2.7
2829
github.com/fumiama/gotracemoe v0.0.3
2930
github.com/fumiama/jieba v0.0.0-20221203025406-36c17a10b565

go.sum

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562 h1:snfw7FNFym1eNnLrQ
1717
github.com/FloatTech/ttl v0.0.0-20240716161252-965925764562/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs=
1818
github.com/FloatTech/zbpctrl v1.7.0 h1:Hxo6EIhJo+pHjcQP9QgIJgluaT1pHH99zkk3njqTNMo=
1919
github.com/FloatTech/zbpctrl v1.7.0/go.mod h1:xmM4dSwHA02Gei3ogCRiG+RTrw/7Z69PfrN5NYf8BPE=
20-
github.com/FloatTech/zbputils v1.7.2-0.20250921072315-465a1f1d1fbb h1:/3nfw+rPFvTNsEdj+QmslUL67QZeeO7Xkx2bxOnLtLo=
21-
github.com/FloatTech/zbputils v1.7.2-0.20250921072315-465a1f1d1fbb/go.mod h1:mkH3Tii83bsO7+gj5s3wLUWEIYY2+5G948aW4TtUxbg=
20+
github.com/FloatTech/zbputils v1.7.2-0.20250921143810-bb64d87a5416 h1:aBhn9/QltOId6bbjkSXYP+p4vZLB1RfjYUK48XGwjc4=
21+
github.com/FloatTech/zbputils v1.7.2-0.20250921143810-bb64d87a5416/go.mod h1:Mb9JQb4MpU0GHRQv9PS+Qq+F0UBRVPrjU+ZlAjhPccQ=
2222
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
2323
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7 h1:S/ferNiehVjNaBMNNBxUjLtVmP/YWD6Yh79RfPv4ehU=
2424
github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7/go.mod h1:vD7Ra3Q9onRtojoY5sMCLQ7JBgjUsrXDnDKyFxqpf9w=
@@ -63,6 +63,8 @@ github.com/fumiama/deepinfra v0.0.0-20250920170049-e3d1b92cc3a1 h1:6PglFpNVm3Dal
6363
github.com/fumiama/deepinfra v0.0.0-20250920170049-e3d1b92cc3a1/go.mod h1:wW05PQSn8mo1mZIoa6LBUE+3xIBjkoONvnfPTV5ZOhY=
6464
github.com/fumiama/go-base16384 v1.7.0 h1:6fep7XPQWxRlh4Hu+KsdH+6+YdUp+w6CwRXtMWSsXCA=
6565
github.com/fumiama/go-base16384 v1.7.0/go.mod h1:OEn+947GV5gsbTAnyuUW/SrfxJYUdYupSIQXOuGOcXM=
66+
github.com/fumiama/go-onebot-agent v0.0.0-20250921143402-d55156efbd5b h1:LToVa4PSTFD3H2jyDFA2jFd3BFcKaHgsefqLlZt9WZo=
67+
github.com/fumiama/go-onebot-agent v0.0.0-20250921143402-d55156efbd5b/go.mod h1:wVMgFWkR3GpipL05FkokvrV/jWFIgoEWN1jzUGa0bWg=
6668
github.com/fumiama/go-registry v0.2.7 h1:tLEqgEpsiybQMqBv0dLHm5leia/z1DhajMupwnOHeNs=
6769
github.com/fumiama/go-registry v0.2.7/go.mod h1:m+wp5fF8dYgVoFkBPZl+vlK90loymaJE0JCtocVQLEs=
6870
github.com/fumiama/go-simple-protobuf v0.2.0 h1:ACyN1MAlu7pDR3EszWgzUeNP+IRsSHwH6V9JCJA5R5o=

plugin/aichat/cfg.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ type config struct {
3030
NoReplyAT bool
3131
NoSystemP bool
3232
NoRecord bool
33+
NoAgent bool
3334
}
3435

3536
func newconfig() config {

plugin/aichat/main.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

1111
"github.com/fumiama/deepinfra"
1212
"github.com/fumiama/deepinfra/model"
13+
goba "github.com/fumiama/go-onebot-agent"
1314
"github.com/sirupsen/logrus"
1415
"github.com/tidwall/gjson"
1516

@@ -33,6 +34,7 @@ var (
3334
Help: "- 设置AI聊天触发概率10\n" +
3435
"- 设置AI聊天温度80\n" +
3536
"- 设置AI聊天接口类型[OpenAI|OLLaMA|GenAI]\n" +
37+
"- 设置AI聊天(不)使用Agent模式\n" +
3638
"- 设置AI聊天(不)支持系统提示词\n" +
3739
"- 设置AI聊天接口地址https://api.siliconflow.cn/v1/chat/completions\n" +
3840
"- 设置AI聊天密钥xxx\n" +
@@ -142,6 +144,24 @@ func init() {
142144
return
143145
}
144146

147+
if !cfg.NoAgent {
148+
role := goba.PermRoleUser
149+
if zero.AdminPermission(ctx) {
150+
role = goba.PermRoleAdmin
151+
if zero.SuperUserPermission(ctx) {
152+
role = goba.PermRoleOwner
153+
}
154+
}
155+
req, err := chat.AgentOf(ctx.Event.SelfID).GetAction(x, mod, gid, role, false)
156+
if err != nil {
157+
logrus.Warnln("[aichat] agent err:", err, &req)
158+
return
159+
}
160+
logrus.Infoln("[aichat] agent do:", &req)
161+
ctx.CallAction(req.Action, req.Params)
162+
return
163+
}
164+
145165
data, err := x.Request(chat.GetChatContext(mod, gid, cfg.SystemP, cfg.NoSystemP))
146166
if err != nil {
147167
logrus.Warnln("[aichat] post err:", err)
@@ -150,7 +170,7 @@ func init() {
150170

151171
txt := chat.Sanitize(strings.Trim(data, "\n  "))
152172
if len(txt) > 0 {
153-
chat.AddChatReply(gid, zero.BotConfig.NickName[0], txt)
173+
chat.AddChatReply(gid, txt)
154174
nick := zero.BotConfig.NickName[rand.Intn(len(zero.BotConfig.NickName))]
155175
txt = strings.ReplaceAll(txt, "{name}", ctx.CardOrNickName(ctx.Event.UserID))
156176
txt = strings.ReplaceAll(txt, "{me}", nick)
@@ -302,6 +322,8 @@ func init() {
302322
Handle(newextrasetbool(&cfg.NoReplyAT))
303323
en.OnRegex("^设置AI聊天(不)?支持系统提示词$", ensureconfig, zero.OnlyPrivate, zero.SuperUserPermission).SetBlock(true).
304324
Handle(newextrasetbool(&cfg.NoSystemP))
325+
en.OnRegex("^设置AI聊天(不)?使用Agent模式$", ensureconfig, zero.OnlyPrivate, zero.SuperUserPermission).SetBlock(true).
326+
Handle(newextrasetbool(&cfg.NoAgent))
305327
en.OnPrefix("设置AI聊天最大长度", ensureconfig, zero.OnlyPrivate, zero.SuperUserPermission).SetBlock(true).
306328
Handle(newextrasetuint(&cfg.MaxN))
307329
en.OnPrefix("设置AI聊天TopP", ensureconfig, zero.OnlyPrivate, zero.SuperUserPermission).SetBlock(true).

0 commit comments

Comments
 (0)