Skip to content

feat: Add new skill error handling and localization messages#6761

Merged
c121914yu merged 3 commits intolabring:mainfrom
ctlaltlaltc:feat/agent-skill-error-handling-and-i18n
Apr 20, 2026
Merged

feat: Add new skill error handling and localization messages#6761
c121914yu merged 3 commits intolabring:mainfrom
ctlaltlaltc:feat/agent-skill-error-handling-and-i18n

Conversation

@ctlaltlaltc
Copy link
Copy Markdown
Collaborator

No description provided.

Copy link
Copy Markdown
Collaborator

@c121914yu c121914yu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📋 需求理解

本 PR 的目标是将 agent skill 相关 API 的 ad-hoc 错误消息迁移到集中的 SkillErrEnum 并补齐 en/zh-CN/zh-Hant 三语 i18n 翻译;同时把 import.tssave-deploy.ts 从手写 NextApiRequest/jsonRes 形式迁移到统一的 NextAPI(handler) 包装器。

🧪 逻辑验证(测例推理)

我对关键路径做了阅读推理,均通过:

  • Promise.reject(SkillErrEnum.xxx)NextEntry catch → processError 按字符串查表 ERROR_RESPONSE['xxx'] → 命中 agentSkillErr 注册的 i18n message + code(509003+)。
  • ✅ 新增的 11 个枚举 append 到原有 3 个之后,已有错误码(509000~509002)数值稳定,客户端没有 breaking。
  • import.tstry/catch/finally 控制流:return Promise.reject(...) 在 try 里不会触发本地 catch,但 finallymulter.clearDiskTempFiles(filepaths) 仍然会运行,临时文件清理无泄漏。
  • save-deploy.tsmongoSessionRun 事务内部抛出 UserError 时,会被外层 NextAPI catch 正确映射为 500 + 可读 message。
  • ⚠️ import.ts:166 err.message?.includes('already exists') 依赖下层字符串,健壮性存疑(见行级评论)。

⚠️ 问题汇总

🟡 建议改进

  1. save-deploy.ts:多处具体错误(validateZipStructure 的 validation.error、SKILL.md 缺失)被折叠成同一个 invalidSkillPackage,调试体验倒退,至少应记录原始 detail。
  2. edit.ts:SSE 路径使用 new UserError('skillId is required'),而 sseErrRes 已支持字符串枚举查表。可改成 sseErrRes(res, SkillErrEnum.unExist) 享受 i18n,与其他 handler 保持一致。
  3. import.tsArchive is empty/Failed to extract archive/超大文件错误仍是英文 UserError,本 PR 的 i18n 目标没有覆盖到这里。
  4. import.ts:166 通过 err.message?.includes('already exists') 匹配业务错误,脆弱且容易被下层消息改动悄悄打破,建议在 importSkill 内部直接 throw SkillErrEnum.skillNameExists
  5. create.ts:68/71 两个语义不同的校验(name 为空 vs name > 50)合并为同一个 invalidSkillName。i18n 文案合并成 “empty or over 50 characters” 勉强覆盖,但不如拆成两个枚举值或两个独立 key 更精确。

🟢 可选优化

  • create.ts:71 name.length > 50 用的是原始长度而不是 name.trim().length,与后续 checkSkillNameExists(name.trim(), ...) 不一致(pre-existing,非本 PR 引入)。
  • zh-Hant 译文 存儲 在繁体语境下更常用的写法是 儲存欄位 正确,其余翻译 OK。
  • 本次没有配套单测。SkillErrEnum 新增值→i18n key 的闭环、以及 import.ts/save-deploy.ts NextAPI 改造后的错误响应结构可以加点 e2e/integration 断言。

✅ 做得好的地方

  • 错误码以 append 方式加到 skillErrList 末尾,保留了已有错误码的数值稳定性。
  • import.tssave-deploy.ts 去掉了手写 req.method !== 'POST' / jsonRes 分支,统一走 NextAPI,跟仓库其他路由风格对齐。
  • 三语 i18n 同步更新,没有漏翻。

🚀 审查结论

需修改:建议至少修复 save-deploy.ts 错误 detail 丢失、import.ts 的 magic string 匹配,并在后续补齐 edit.ts / import.ts 剩余英文字面量的 i18n。非 blocking 的可以跟进 PR。

Comment thread projects/app/src/pages/api/core/agentSkills/save-deploy.ts
Comment thread projects/app/src/pages/api/core/agentSkills/save-deploy.ts Outdated
Comment thread projects/app/src/pages/api/core/agentSkills/import.ts Outdated
Comment thread projects/app/src/pages/api/core/agentSkills/import.ts Outdated
Comment thread projects/app/src/pages/api/core/agentSkills/edit.ts Outdated
Comment thread projects/app/src/pages/api/core/agentSkills/create.ts
Comment thread packages/global/common/error/code/agentSkill.ts
@ctlaltlaltc ctlaltlaltc marked this pull request as draft April 17, 2026 06:35
@ctlaltlaltc ctlaltlaltc marked this pull request as ready for review April 17, 2026 07:26
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 17, 2026

Build Successful - Preview code-sandbox Image for this PR:

registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-pr:code-sandbox_a309e9d57346fb27b2144ba01d099a3fbd6ab1ea

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 17, 2026

Build Successful - Preview fastgpt Image for this PR:

registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-pr:fastgpt_a309e9d57346fb27b2144ba01d099a3fbd6ab1ea

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 17, 2026

Build Successful - Preview mcp_server Image for this PR:

registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-pr:mcp_server_a309e9d57346fb27b2144ba01d099a3fbd6ab1ea

@ctlaltlaltc ctlaltlaltc force-pushed the feat/agent-skill-error-handling-and-i18n branch from 20b15ca to 4804478 Compare April 17, 2026 08:04
c121914yu
c121914yu previously approved these changes Apr 17, 2026
@c121914yu c121914yu merged commit a50a9b9 into labring:main Apr 20, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants