mirror of
https://github.com/kuaifan/dootask.git
synced 2026-07-02 04:15:05 +00:00
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>
This commit is contained in:
parent
da095a1a80
commit
e74142e58d
@ -58,10 +58,17 @@ class AssistantController extends AbstractController
|
||||
$locale = str_contains(strtolower($locale), 'zh') ? 'zh' : 'en';
|
||||
$contextKey = mb_substr(trim(Request::input('session_id', '')), 0, 100);
|
||||
|
||||
// 当前用户 WebSocket fd:供 AI 经 doo page 操作本人浏览器(页面操作用)。
|
||||
// 复用 operation__dispatch 同款归属校验:在表即在线、归属即本人,否则置 0。
|
||||
$fd = intval(Base::headerOrInput('fd'));
|
||||
if ($fd > 0 && intval(WebSocket::whereFd($fd)->value('userid')) !== intval($user->userid)) {
|
||||
$fd = 0;
|
||||
}
|
||||
|
||||
// 灰度判定(参考 config/ai.php):总开关 + canary 白名单
|
||||
$ragEnabled = AI::ragEnabledFor((int) $user->userid);
|
||||
|
||||
return AI::createStreamKey($modelType, $modelName, $contextInput, $locale, $ragEnabled, $contextKey);
|
||||
return AI::createStreamKey($modelType, $modelName, $contextInput, $locale, $ragEnabled, $contextKey, $fd);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -164,7 +164,7 @@ class AI
|
||||
return in_array($userid, $allow, true);
|
||||
}
|
||||
|
||||
public static function createStreamKey($modelType, $modelName, $contextInput = [], $locale = 'zh', $ragEnabled = true, $contextKey = '')
|
||||
public static function createStreamKey($modelType, $modelName, $contextInput = [], $locale = 'zh', $ragEnabled = true, $contextKey = '', $fd = 0)
|
||||
{
|
||||
$modelType = trim((string)$modelType);
|
||||
$modelName = trim((string)$modelName);
|
||||
@ -250,6 +250,9 @@ class AI
|
||||
'rag_enabled' => $ragEnabled ? '1' : '0',
|
||||
// 前端会话ID,AI 服务存为 context_key 用于检索打点关联
|
||||
'context_key' => mb_substr(trim((string)$contextKey), 0, 100),
|
||||
// AI 助手路径启用 doo 执行工具;fd 为用户当前 WebSocket 连接(页面操作用,0 表示无)
|
||||
'doo_enabled' => '1',
|
||||
'fd' => intval($fd),
|
||||
];
|
||||
|
||||
$baseUrl = trim((string)($setting[$modelType . '_base_url'] ?? ''));
|
||||
|
||||
@ -34,6 +34,7 @@ DooTask AI 助手通过 MCP(Model Context Protocol)协议调用工具,把"
|
||||
## 工具来源
|
||||
- **dootask-mcp 内置工具**:29 个,覆盖任务/项目/消息/文件/报告/搜索
|
||||
- **AI 助手内置工具**:`search_help_docs`(检索本知识库)、`get_session_image`(取多模态图片)
|
||||
- **doo 命令行工具**:AI 助手还可经内置的 `doo` 命令行(以你的身份、在你的权限内)直接完成任务/项目/消息/文件/报告/搜索/页面等操作;它是把上述能力统一成一个命令行入口,权限同样由后端校验
|
||||
- 工具清单维护在仓库 `resources/ai-kb/_meta/tool-binding.yaml`
|
||||
|
||||
## 数据工具与页面操作
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user