kuaifan e74142e58d feat(ai-assistant): auth 注入用户 fd + doo_enabled,供 AI 经 doo 操作
P2 后端:把当前用户 WebSocket fd 透传给 AI 会话,让 AI 助手能经 doo CLI
驱动本人浏览器做页面操作。
- AssistantController::auth() 读 header fd 并做归属校验(复用 operation
  __dispatch 同款 WebSocket::whereFd 校验),传给 createStreamKey
- AI::createStreamKey() 透传 fd + doo_enabled=1 到 /ai/invoke/auth
- ai-kb tools.concept 补「doo 命令行工具」能力来源

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 01:42:12 +00:00

53 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: ai-assistant.tools.concept
title: AI 助手的工具调用机制
type: concept
feature: ai-assistant
scope: end-user
locale: zh
aliases:
- AI 工具
- AI 调工具
- 怎么让 AI 调工具
- 让 AI 调用工具
- MCP 工具
- AI 怎么操作系统
- function calling
- AI 能做什么
related_tools: []
related_pages: []
prerequisites:
- 应用市场已安装 ai 插件
- 应用市场已安装 mcp_server 插件
negative:
- 工具是否可用取决于所选模型是否支持 tool/function calling部分模型仅能纯文本回答
- 工具调用结果会展示给用户,不会静默执行
- 用户没权限的操作(如读不到的任务)即使 AI 调工具也会被后端拒绝
last_verified: v1.7.90
---
# AI 助手的工具调用机制
## 定义
DooTask AI 助手通过 MCPModel Context Protocol协议调用工具把"问 AI"扩展为"让 AI 帮我做事"。AI 收到用户请求后判断是否需要调工具,例如查任务、发消息、跳页面,由插件 `mcp_server` 把请求路由到对应的后端 API 或前端动作执行器,再把结果回灌给模型,模型基于结果继续回答。
## 工具来源
- **dootask-mcp 内置工具**29 个,覆盖任务/项目/消息/文件/报告/搜索
- **AI 助手内置工具**`search_help_docs`(检索本知识库)、`get_session_image`(取多模态图片)
- **doo 命令行工具**AI 助手还可经内置的 `doo` 命令行(以你的身份、在你的权限内)直接完成任务/项目/消息/文件/报告/搜索/页面等操作;它是把上述能力统一成一个命令行入口,权限同样由后端校验
- 工具清单维护在仓库 `resources/ai-kb/_meta/tool-binding.yaml`
## 数据工具与页面操作
- **数据工具MCP**:直接调后端 API`create_task``send_message`),不依赖前端 UI
- **页面操作(非 MCP 工具)**AI 助手还能在你当前的浏览器/桌面端页面上打开任务/跳页面、点击/输入页面元素;这类能力不在 MCP 工具清单内,由 AI 助手在你的页面上执行
## 触发条件
- AI 模型本身必须支持 tool callingOpenAI / Claude / DeepSeek / Qwen 等主流模型均支持)
- 管理员在系统设置「AI 模型」中开启该模型
- `mcp_server` 插件已安装并运行
## 相关
- 工具完整清单:[[ai-assistant.tools-list.concept]]
- 工具调用流式事件结构:[[ai-assistant.tool-call.concept]]
- 工具调用失败处理:[[ai-assistant.tool-failed.faq]]