diff --git a/src/routes/droidRoutes.js b/src/routes/droidRoutes.js index e2498dc9..5ae6c418 100644 --- a/src/routes/droidRoutes.js +++ b/src/routes/droidRoutes.js @@ -104,44 +104,41 @@ router.post('/claude/v1/messages/count_tokens', authenticateApiKey, async (req, }) // OpenAI 端点 - /v1/responses -router.post( - ['/openai/v1/responses', '/openai/responses'], - authenticateApiKey, - async (req, res) => { - try { - const sessionId = - req.headers['session_id'] || - req.headers['x-session-id'] || - req.body?.session_id || - req.body?.conversation_id || - null +router.post(['/openai/v1/responses', '/openai/responses'], authenticateApiKey, async (req, res) => { + try { + const sessionId = + req.headers['session_id'] || + req.headers['x-session-id'] || + req.body?.session_id || + req.body?.conversation_id || + null - const sessionHash = sessionId - ? crypto.createHash('sha256').update(String(sessionId)).digest('hex') - : null + const sessionHash = sessionId + ? crypto.createHash('sha256').update(String(sessionId)).digest('hex') + : null - if (!hasDroidPermission(req.apiKey)) { - logger.security( - `🚫 API Key ${req.apiKey?.id || 'unknown'} 缺少 Droid 权限,拒绝访问 ${req.originalUrl}` - ) - return res.status(403).json({ - error: 'permission_denied', - message: '此 API Key 未启用 Droid 权限' - }) - } - - const result = await droidRelayService.relayRequest( - req.body, - req.apiKey, - req, - res, - req.headers, - { endpointType: 'openai', sessionHash } + if (!hasDroidPermission(req.apiKey)) { + logger.security( + `🚫 API Key ${req.apiKey?.id || 'unknown'} 缺少 Droid 权限,拒绝访问 ${req.originalUrl}` ) + return res.status(403).json({ + error: 'permission_denied', + message: '此 API Key 未启用 Droid 权限' + }) + } - if (result.streaming) { - return - } + const result = await droidRelayService.relayRequest( + req.body, + req.apiKey, + req, + res, + req.headers, + { endpointType: 'openai', sessionHash } + ) + + if (result.streaming) { + return + } res.status(result.statusCode).set(result.headers).send(result.body) } catch (error) { @@ -151,8 +148,7 @@ router.post( message: error.message }) } - } -) +}) // 模型列表端点(兼容性) router.get('/*/v1/models', authenticateApiKey, async (req, res) => { diff --git a/web/admin-spa/src/views/TutorialView.vue b/web/admin-spa/src/views/TutorialView.vue index 6b719e83..38d3e5dc 100644 --- a/web/admin-spa/src/views/TutorialView.vue +++ b/web/admin-spa/src/views/TutorialView.vue @@ -604,10 +604,10 @@
Droid CLI 使用
~/.factory/config.json
- 保存自定义模型(Windows 路径为
+ 保存自定义模型;在 Windows 中可直接编辑
C:\Users\你的用户名\.factory\config.json)。
+ >。
- Droid CLI 使用
- ~/.factory/config.json
- 保存自定义模型(Windows 路径为
- C:\Users\你的用户名\.factory\config.json)。
-
- 将以下内容追加到配置文件中,并替换示例中的域名和 API 密钥: -
-- 💡 在 Droid CLI 中选择自定义模型即可使用新的 Droid 账号池;确保服务地址可被本地访问。 -
-
- Droid CLI 使用
- ~/.factory/config.json
- 保存自定义模型(Windows 路径为
- C:\Users\你的用户名\.factory\config.json)。
-
- 将以下内容追加到配置文件中,并替换示例中的域名和 API 密钥: -
-- 💡 在 Droid CLI 中选择自定义模型即可使用新的 Droid 账号池;确保服务地址可被本地访问。 -
-
+ Droid CLI 使用
+ ~/.factory/config.json
+ 保存自定义模型;你可以在 Finder 中按
+ ⌘ + Shift + G
+ 并输入路径,或运行
+ open ~/.factory
+ 快速打开配置目录。
+
+ 将以下内容追加到配置文件中,并替换示例中的域名和 API 密钥: +
++ 💡 在 Droid CLI 中选择自定义模型即可使用新的 Droid 账号池;确保服务地址可被本地访问。 +
+
- 现在你可以开始使用 Claude Code 了!
+ Droid CLI 使用
+ ~/.factory/config.json
+ 保存自定义模型;在 Linux 或 WSL2 中,可直接编辑
+ /home/你的用户名/.factory/config.json
+ 或在终端运行
+ xdg-open ~/.factory
+ 打开目录。
+ 将以下内容追加到配置文件中,并替换示例中的域名和 API 密钥: +
++ 💡 在 Droid CLI 中选择自定义模型即可使用新的 Droid 账号池;确保服务地址可被本地访问。 +
++ 现在你可以开始使用 Claude Code 了! +
+ +尝试以下解决方法:
-sudo npm install -g @anthropic-ai/claude-code
- npm config set prefix ~/.npm-global
- export PATH=~/.npm-global/bin:$PATH
- 某些 Linux 发行版需要安装额外依赖:
-尝试以下解决方法:
+sudo npm install -g @anthropic-ai/claude-code
+ npm config set prefix ~/.npm-global
+ export PATH=~/.npm-global/bin:$PATH
+ 某些 Linux 发行版需要安装额外依赖:
+检查以下几点:
-source ~/.bashrc
- echo $ANTHROPIC_BASE_URL
- 检查以下几点:
+source ~/.bashrc
+ echo $ANTHROPIC_BASE_URL
+ - 你已经成功安装并配置了 Claude Code,现在可以开始享受 AI 编程助手带来的便利了。 -
-- 如果在使用过程中遇到任何问题,可以查看官方文档或社区讨论获取帮助。 -
+ ++ 你已经成功安装并配置了 Claude Code,现在可以开始享受 AI 编程助手带来的便利了。 +
++ 如果在使用过程中遇到任何问题,可以查看官方文档或社区讨论获取帮助。 +
+