You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
npmrun
d847f5531f
feat: agent-tools 工具审批机制
基于 ai-sdk v7 的 toolApproval API 实现工具调用审批:
数据库:
- agent_tools 表新增 needs_approval 字段(默认 0)
- 迁移 0015_high_red_shift.sql
Service 层:
- getEnabledToolsForLlm 返回 { tools, approvalConfig }
- approvalConfig 按工具 needsApproval 映射为 user-approval / approved
- createAgentTool / updateAgentTool 支持 needsApproval 读写
- tool() 定义 parameters → inputSchema(v7 适配)
服务端 chat 端点:
- 使用 convertToModelMessages 转换 UIMessage 格式
- streamText 添加 toolApproval 配置
- maxTokens → maxOutputTokens, maxSteps → stopWhen(v7 适配)
- toDataStreamResponse → toUIMessageStreamResponse(v7 适配)
前端 useLlmChat:
- 流处理从 processDataStream 改为 parseJsonEventStream + 手动 chunk 处理(v7 适配)
- 新增 toUIMessageParts() / buildRequestBody() / processStream()
- 处理 tool-approval-request chunk(记录 isAutomatic 标志)
- 处理 tool-approval-response chunk(更新审批状态)
- 新增 respondToApproval() 函数
- validateAssistantContent 排除 isAutomaticApproval 的 pending part
Admin UI:
- 工具管理页面新增审批列和切换按钮
- 工具表单弹窗新增 needsApproval 复选框
聊天审批 UI:
- tool-call 显示审批状态(等待审批/自动批准中/已批准/已拒绝)
- 仅对非自动审批显示批准/拒绝按钮
- 拒绝后显示拒绝原因
Bug 修复:
- 无需审批的工具(approved 状态)不再显示审批按钮
- 原因:v7 中 approved 工具也会发送 tool-approval-request chunk(isAutomatic: true),
前端之前未处理 tool-approval-response chunk 且未区分 isAutomatic
Co-authored-by: CodeFree <codefree@chinatelcom.cn>
|
2 days ago |
| .. |
|
schema
|
feat: agent-tools 工具审批机制
|
2 days ago |
|
db.ts
|
feat: 引入 env 包以集中管理环境变量,更新相关代码以使用新的 env 结构
|
1 month ago |
|
paths.ts
|
add
|
3 months ago |
|
resolve-sqlite-url.ts
|
add
|
3 months ago |