fix: address review feedback from PR #1

1. switch 后提示重启 gateway 以生效
2. auxiliary tasks 从 config.yaml 动态读取,不再硬编码
3. Telegram 删消息加 3s delay,确保 hermes 先处理
4. api_key_env 已在前一个 commit 修复

Ref: PR #1 review by tuanzi
Signed-off-by: Xiaonuo <xiaonuo@shazhou.work>
This commit is contained in:
Xiaonuo 2026-04-21 10:50:18 +08:00
parent b6ee3e071f
commit a11bb53539

View File

@ -36,7 +36,7 @@ interface Config {
[key: string]: unknown; [key: string]: unknown;
} }
const AUXILIARY_TASKS = [ const DEFAULT_AUXILIARY_TASKS = [
"vision", "vision",
"web_extract", "web_extract",
"compression", "compression",
@ -47,6 +47,18 @@ const AUXILIARY_TASKS = [
"approval", "approval",
]; ];
function getAuxiliaryTasks(): string[] {
try {
const config = loadConfig();
const aux = config.auxiliary || {};
const tasks = Object.keys(aux).filter(
(k) => typeof aux[k] === "object" && aux[k]?.provider !== undefined
);
if (tasks.length > 0) return tasks;
} catch {}
return DEFAULT_AUXILIARY_TASKS;
}
// ── Helpers ──────────────────────────────────────────────────────────── // ── Helpers ────────────────────────────────────────────────────────────
function loadConfig(): Config { function loadConfig(): Config {
@ -324,7 +336,7 @@ function switchConfig(opts: SwitchOptions) {
} }
saveConfig(config); saveConfig(config);
console.log("\nConfig saved. New sessions will use the updated settings."); console.log("\nConfig saved. Run 'hermes gateway restart' or start a new session to apply.");
} }
async function switchTelegram(opts: SwitchOptions) { async function switchTelegram(opts: SwitchOptions) {
@ -386,16 +398,19 @@ async function switchTelegram(opts: SwitchOptions) {
if (result.ok) { if (result.ok) {
console.log(`Sent: ${command}`); console.log(`Sent: ${command}`);
console.log(opts.global ? "Persistent change (--global)." : "Current session only."); console.log(opts.global ? "Persistent change (--global)." : "Current session only.");
// Clean up the command message // Clean up the command message after a delay so hermes can process it
if (result.result?.message_id) { if (result.result?.message_id) {
await fetch(`https://api.telegram.org/bot${token}/deleteMessage`, { const msgId = result.result.message_id;
method: "POST", setTimeout(async () => {
headers: { "Content-Type": "application/json" }, await fetch(`https://api.telegram.org/bot${token}/deleteMessage`, {
body: JSON.stringify({ method: "POST",
chat_id: chatId, headers: { "Content-Type": "application/json" },
message_id: result.result.message_id, body: JSON.stringify({
}), chat_id: chatId,
}).catch(() => {}); message_id: msgId,
}),
}).catch(() => {});
}, 3000);
} }
} else { } else {
console.error(`Telegram API error: ${result.description}`); console.error(`Telegram API error: ${result.description}`);
@ -476,11 +491,12 @@ export async function models(args: string[]) {
i++; i++;
} else if (args[i] === "--aux" && i + 1 < args.length) { } else if (args[i] === "--aux" && i + 1 < args.length) {
const task = args[i + 1]; const task = args[i + 1];
if (!AUXILIARY_TASKS.includes(task)) { const knownTasks = getAuxiliaryTasks();
console.error(`Unknown auxiliary task: ${task}`); if (!knownTasks.includes(task)) {
console.error(`Available: ${AUXILIARY_TASKS.join(", ")}`); console.error(`Unknown auxiliary task: ${task}`);
process.exit(1); console.error(`Available: ${knownTasks.join(", ")}`);
} process.exit(1);
}
auxTasks.push(task); auxTasks.push(task);
i += 2; i += 2;
} else { } else {