Skip to content

Commit 94a4e39

Browse files
feat: remove some config for hermes channel (#12560)
1 parent 1864dee commit 94a4e39

8 files changed

Lines changed: 110 additions & 413 deletions

File tree

agent/app/service/agents_hermes.go

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -159,15 +159,19 @@ func readHermesTelegramChannelConfig(confDir string) (*dto.AgentTelegramConfig,
159159

160160
allowFrom := splitHermesEnvList(envMap["TELEGRAM_ALLOWED_USERS"])
161161
requireMention := extractBoolValue(childMap(cfg, "telegram")["require_mention"], false)
162-
dmPolicy := "pairing"
162+
dmPolicy := ""
163163
if extractHermesEnvBool(envMap, "TELEGRAM_ALLOW_ALL_USERS", false) {
164164
dmPolicy = "open"
165165
} else if len(allowFrom) > 0 {
166166
dmPolicy = "allowlist"
167+
} else if envMap["TELEGRAM_BOT_TOKEN"] != "" {
168+
dmPolicy = "pairing"
167169
}
168-
groupPolicy := "open"
170+
groupPolicy := ""
169171
if requireMention {
170172
groupPolicy = "allowlist"
173+
} else if envMap["TELEGRAM_BOT_TOKEN"] != "" {
174+
groupPolicy = "open"
171175
}
172176
token := envMap["TELEGRAM_BOT_TOKEN"]
173177
result := &dto.AgentTelegramConfig{
@@ -177,8 +181,8 @@ func readHermesTelegramChannelConfig(confDir string) (*dto.AgentTelegramConfig,
177181
RequireMention: requireMention,
178182
GroupPolicy: groupPolicy,
179183
GroupAllowFrom: []string{},
180-
Streaming: "partial",
181-
DefaultAccount: "default",
184+
Streaming: "",
185+
DefaultAccount: "",
182186
}
183187
if token != "" {
184188
result.Bots = []dto.AgentTelegramBot{
@@ -192,7 +196,7 @@ func readHermesTelegramChannelConfig(confDir string) (*dto.AgentTelegramConfig,
192196
BotToken: token,
193197
DmPolicy: dmPolicy,
194198
GroupPolicy: groupPolicy,
195-
Streaming: "partial",
199+
Streaming: "",
196200
},
197201
}
198202
}
@@ -250,16 +254,20 @@ func readHermesDiscordChannelConfig(confDir string) (*dto.AgentDiscordConfig, er
250254
}
251255

252256
allowFrom := splitHermesEnvList(envMap["DISCORD_ALLOWED_USERS"])
253-
requireMention := extractBoolValue(childMap(cfg, "discord")["require_mention"], true)
254-
dmPolicy := "pairing"
257+
requireMention := extractBoolValue(childMap(cfg, "discord")["require_mention"], false)
258+
dmPolicy := ""
255259
if extractHermesEnvBool(envMap, "DISCORD_ALLOW_ALL_USERS", false) {
256260
dmPolicy = "open"
257261
} else if len(allowFrom) > 0 {
258262
dmPolicy = "allowlist"
263+
} else if envMap["DISCORD_BOT_TOKEN"] != "" {
264+
dmPolicy = "pairing"
259265
}
260-
groupPolicy := "open"
266+
groupPolicy := ""
261267
if requireMention {
262268
groupPolicy = "allowlist"
269+
} else if envMap["DISCORD_BOT_TOKEN"] != "" {
270+
groupPolicy = "open"
263271
}
264272
token := envMap["DISCORD_BOT_TOKEN"]
265273
result := &dto.AgentDiscordConfig{
@@ -268,7 +276,7 @@ func readHermesDiscordChannelConfig(confDir string) (*dto.AgentDiscordConfig, er
268276
AllowFrom: allowFrom,
269277
RequireMention: requireMention,
270278
GroupPolicy: groupPolicy,
271-
DefaultAccount: "default",
279+
DefaultAccount: "",
272280
}
273281
if token != "" {
274282
result.Bots = []dto.AgentDiscordBot{

agent/app/service/agents_hermes_channels.go

Lines changed: 17 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,8 @@ func readHermesQQBotChannelConfig(confDir string) (*dto.AgentQQBotConfig, error)
4848
appID := envMap["QQ_APP_ID"]
4949
clientSecret := envMap["QQ_CLIENT_SECRET"]
5050
dmPolicy := extractStringValue(extra["dm_policy"])
51-
if dmPolicy == "" {
52-
dmPolicy = "open"
53-
}
5451
allowFrom := splitHermesEnvList(envMap["QQ_ALLOWED_USERS"])
5552
groupPolicy := extractStringValue(extra["group_policy"])
56-
if groupPolicy == "" {
57-
groupPolicy = "open"
58-
}
5953
groupAllowFrom := splitHermesEnvList(envMap["QQ_GROUP_ALLOWED_USERS"])
6054

6155
result := &dto.AgentQQBotConfig{
@@ -181,18 +175,8 @@ func readHermesWecomChannelConfig(confDir string) (*dto.AgentWecomConfig, error)
181175
platform := childMap(childMap(cfg, "platforms"), "wecom")
182176
allowFrom := splitHermesEnvList(envMap["WECOM_ALLOWED_USERS"])
183177
groupAllowFrom := splitHermesEnvList(envMap["WECOM_GROUP_ALLOWED_USERS"])
184-
dmPolicy := "pairing"
185-
if envMap["WECOM_DM_POLICY"] == "open" {
186-
dmPolicy = "open"
187-
} else if len(allowFrom) > 0 {
188-
dmPolicy = "allowlist"
189-
} else if policy := envMap["WECOM_DM_POLICY"]; policy != "" {
190-
dmPolicy = policy
191-
}
178+
dmPolicy := envMap["WECOM_DM_POLICY"]
192179
groupPolicy := envMap["WECOM_GROUP_POLICY"]
193-
if groupPolicy == "" {
194-
groupPolicy = "open"
195-
}
196180

197181
botID := envMap["WECOM_BOT_ID"]
198182
secret := envMap["WECOM_SECRET"]
@@ -309,22 +293,24 @@ func readHermesDingTalkChannelConfig(confDir string) (*dto.AgentDingTalkConfig,
309293

310294
platform := childMap(childMap(cfg, "platforms"), "dingtalk")
311295
extra := childMap(platform, "extra")
296+
clientID := envMap["DINGTALK_CLIENT_ID"]
297+
clientSecret := envMap["DINGTALK_CLIENT_SECRET"]
312298
allowFrom := splitHermesEnvList(envMap["DINGTALK_ALLOWED_USERS"])
313-
dmPolicy := "pairing"
299+
dmPolicy := ""
314300
if extractHermesEnvBool(envMap, "DINGTALK_ALLOW_ALL_USERS", false) {
315301
dmPolicy = "open"
316302
} else if len(allowFrom) > 0 {
317303
dmPolicy = "allowlist"
318304
} else if extractStringValue(extra["unauthorized_dm_behavior"]) == "ignore" {
319305
dmPolicy = "disabled"
306+
} else if clientID != "" || clientSecret != "" {
307+
dmPolicy = "pairing"
320308
}
321-
clientID := envMap["DINGTALK_CLIENT_ID"]
322-
clientSecret := envMap["DINGTALK_CLIENT_SECRET"]
323309
result := &dto.AgentDingTalkConfig{
324310
Enabled: extractBoolValue(platform["enabled"], clientID != "" && clientSecret != ""),
325311
DmPolicy: dmPolicy,
326312
AllowFrom: allowFrom,
327-
GroupPolicy: "open",
313+
GroupPolicy: "",
328314
GroupAllowFrom: []string{},
329315
}
330316
if clientID != "" || clientSecret != "" {
@@ -422,29 +408,28 @@ func readHermesFeishuChannelConfig(confDir string) (*dto.AgentFeishuConfig, erro
422408
}
423409

424410
platform := childMap(childMap(cfg, "platforms"), "feishu")
411+
appID := envMap["FEISHU_APP_ID"]
412+
appSecret := envMap["FEISHU_APP_SECRET"]
425413
allowFrom := splitHermesEnvList(envMap["FEISHU_ALLOWED_USERS"])
426-
dmPolicy := "pairing"
414+
dmPolicy := ""
427415
if extractHermesEnvBool(envMap, "FEISHU_ALLOW_ALL_USERS", false) {
428416
dmPolicy = "open"
429417
} else if len(allowFrom) > 0 {
430418
dmPolicy = "allowlist"
419+
} else if appID != "" || appSecret != "" {
420+
dmPolicy = "pairing"
431421
}
432422
groupPolicy := envMap["FEISHU_GROUP_POLICY"]
433-
if groupPolicy == "" {
434-
groupPolicy = "allowlist"
435-
}
436-
appID := envMap["FEISHU_APP_ID"]
437-
appSecret := envMap["FEISHU_APP_SECRET"]
438423
result := &dto.AgentFeishuConfig{
439424
Enabled: extractBoolValue(platform["enabled"], appID != "" && appSecret != ""),
440-
ThreadSession: true,
441-
ReplyMode: "auto",
425+
ThreadSession: false,
426+
ReplyMode: "",
442427
Streaming: false,
443-
RequireMention: "true",
428+
RequireMention: "",
444429
GroupPolicy: groupPolicy,
445430
GroupAllowFrom: []string{},
446-
Domain: firstHermesEnvValue(envMap, "FEISHU_DOMAIN", "feishu"),
447-
ConnectionMode: firstHermesEnvValue(envMap, "FEISHU_CONNECTION_MODE", "websocket"),
431+
Domain: envMap["FEISHU_DOMAIN"],
432+
ConnectionMode: envMap["FEISHU_CONNECTION_MODE"],
448433
}
449434
if appID != "" || appSecret != "" {
450435
result.Bots = []dto.AgentFeishuBot{
@@ -595,13 +580,6 @@ func firstHermesFeishuBot(bots []dto.AgentFeishuBot) dto.AgentFeishuBot {
595580
return bots[0]
596581
}
597582

598-
func firstHermesEnvValue(envMap map[string]string, key string, defaultValue string) string {
599-
if envMap[key] != "" {
600-
return envMap[key]
601-
}
602-
return defaultValue
603-
}
604-
605583
func buildHermesWeixinLoginArgs(containerName string) []string {
606584
return buildHermesDockerExecCommandArgs(
607585
containerName,

frontend/src/views/ai/agents/agent/config/tabs/channels/hermes/dingtalk.vue

Lines changed: 9 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,9 @@
1515
<el-select v-model="form.dmPolicy">
1616
<el-option :label="t('aiTools.agents.pairingCode')" value="pairing" />
1717
<el-option :label="t('aiTools.agents.policyOpen')" value="open" />
18-
<el-option :label="t('aiTools.agents.policyAllowlist')" value="allowlist" />
1918
<el-option :label="t('aiTools.agents.policyDisabled')" value="disabled" />
2019
</el-select>
2120
</el-form-item>
22-
<el-form-item v-if="form.dmPolicy === 'allowlist'" :label="t('aiTools.agents.allowFrom')" prop="allowFromText">
23-
<el-input
24-
v-model="form.allowFromText"
25-
type="textarea"
26-
:rows="3"
27-
:placeholder="t('aiTools.agents.allowFromPlaceholder')"
28-
/>
29-
<span class="input-help">{{ t('aiTools.agents.allowFromHelper') }}</span>
30-
</el-form-item>
3121
<el-form-item>
3222
<el-button type="primary" :loading="saving" @click="save">
3323
{{ t('commons.button.save') }}
@@ -63,8 +53,7 @@ import { MsgSuccess, MsgWarning } from '@/utils/message';
6353
interface DingTalkForm {
6454
clientId: string;
6555
clientSecret: string;
66-
dmPolicy: 'pairing' | 'open' | 'allowlist' | 'disabled';
67-
allowFromText: string;
56+
dmPolicy: 'pairing' | 'open' | 'disabled';
6857
}
6958
7059
const { t } = useI18n();
@@ -79,47 +68,28 @@ const form = reactive<DingTalkForm>({
7968
clientId: '',
8069
clientSecret: '',
8170
dmPolicy: 'pairing',
82-
allowFromText: '',
8371
});
8472
85-
const parseTextList = (value: string): string[] => {
86-
return Array.from(
87-
new Set(
88-
String(value || '')
89-
.split(/\r?\n/)
90-
.map((item) => item.trim())
91-
.filter(Boolean),
92-
),
93-
);
94-
};
95-
9673
const rules = reactive({
9774
clientId: [Rules.requiredInput],
9875
clientSecret: [Rules.requiredInput],
9976
dmPolicy: [Rules.requiredSelect],
100-
allowFromText: [
101-
{
102-
validator: (_rule, value, callback) => {
103-
if (form.dmPolicy === 'allowlist' && parseTextList(String(value || '')).length === 0) {
104-
callback(new Error(t('aiTools.agents.allowFromRequired')));
105-
return;
106-
}
107-
callback();
108-
},
109-
trigger: 'blur',
110-
},
111-
],
11277
});
11378
11479
const load = async (id: number) => {
11580
agentId.value = id;
11681
pairingCode.value = '';
11782
const res = await getAgentDingTalkConfig({ agentId: id });
11883
configured.value = !!res.data?.enabled;
84+
if (!configured.value) {
85+
form.clientId = '';
86+
form.clientSecret = '';
87+
form.dmPolicy = 'pairing';
88+
return;
89+
}
11990
form.clientId = res.data?.bots?.[0]?.clientId || '';
12091
form.clientSecret = res.data?.bots?.[0]?.clientSecret || '';
121-
form.dmPolicy = (res.data?.dmPolicy as DingTalkForm['dmPolicy']) || 'pairing';
122-
form.allowFromText = (res.data?.allowFrom || []).join('\n');
92+
form.dmPolicy = res.data?.dmPolicy === 'disabled' ? 'disabled' : res.data?.dmPolicy === 'open' ? 'open' : 'pairing';
12393
};
12494
12595
const save = async () => {
@@ -133,7 +103,7 @@ const save = async () => {
133103
agentId: agentId.value,
134104
enabled: true,
135105
dmPolicy: form.dmPolicy,
136-
allowFrom: form.dmPolicy === 'allowlist' ? parseTextList(form.allowFromText) : [],
106+
allowFrom: [],
137107
groupPolicy: 'open',
138108
groupAllowFrom: [],
139109
separateSessionByConversation: true,
@@ -211,12 +181,3 @@ defineExpose({
211181
load,
212182
});
213183
</script>
214-
215-
<style scoped lang="scss">
216-
.input-help {
217-
display: block;
218-
margin-top: 8px;
219-
color: var(--el-text-color-secondary);
220-
font-size: 12px;
221-
}
222-
</style>

0 commit comments

Comments
 (0)