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)。 + >。

{{ line }}
@@ -634,91 +634,6 @@

- - -
-
- - 配置 Droid CLI -
-

- Droid CLI 使用 - ~/.factory/config.json - 保存自定义模型(Windows 路径为 - C:\Users\你的用户名\.factory\config.json)。 -

-
-
- 配置文件示例 -
-

- 将以下内容追加到配置文件中,并替换示例中的域名和 API 密钥: -

-
-
- {{ line }} -
-
-

- 💡 在 Droid CLI 中选择自定义模型即可使用新的 Droid 账号池;确保服务地址可被本地访问。 -

-
-
- - -
-
- - 配置 Droid CLI -
-

- Droid CLI 使用 - ~/.factory/config.json - 保存自定义模型(Windows 路径为 - C:\Users\你的用户名\.factory\config.json)。 -

-
-
- 配置文件示例 -
-

- 将以下内容追加到配置文件中,并替换示例中的域名和 API 密钥: -

-
-
- {{ line }} -
-
-

- 💡 在 Droid CLI 中选择自定义模型即可使用新的 Droid 账号池;确保服务地址可被本地访问。 -

-
-
-

+ +
+
+ + 配置 Droid CLI +
+

+ Droid CLI 使用 + ~/.factory/config.json + 保存自定义模型;你可以在 Finder 中按 + ⌘ + Shift + G + 并输入路径,或运行 + open ~/.factory + 快速打开配置目录。 +

+
+
+ 配置文件示例 +
+

+ 将以下内容追加到配置文件中,并替换示例中的域名和 API 密钥: +

+
+
+ {{ line }} +
+
+

+ 💡 在 Droid CLI 中选择自定义模型即可使用新的 Droid 账号池;确保服务地址可被本地访问。 +

+
+
+

-
}
- - -
-

- 4 +
+
- 开始使用 Claude Code -
-
+ + 配置 Droid CLI +

- 现在你可以开始使用 Claude Code 了! + Droid CLI 使用 + ~/.factory/config.json + 保存自定义模型;在 Linux 或 WSL2 中,可直接编辑 + /home/你的用户名/.factory/config.json + 或在终端运行 + xdg-open ~/.factory + 打开目录。

- -
-
-
- 启动 Claude Code -
+
+
+ 配置文件示例 +
+

+ 将以下内容追加到配置文件中,并替换示例中的域名和 API 密钥: +

+
-
claude
+ {{ line }}
+

+ 💡 在 Droid CLI 中选择自定义模型即可使用新的 Droid 账号池;确保服务地址可被本地访问。 +

+
+
-
-
- 在特定项目中使用 -
-
-
# 进入你的项目目录
-
cd /path/to/your/project
-
# 启动 Claude Code
-
claude
+ +
+

+ 4 + 开始使用 Claude Code +

+
+

+ 现在你可以开始使用 Claude Code 了! +

+ +
+
+
+ 启动 Claude Code +
+
+
claude
+
+
+ +
+
+ 在特定项目中使用 +
+
+
# 进入你的项目目录
+
cd /path/to/your/project
+
# 启动 Claude Code
+
claude
+
-
- -
-

- - Linux 常见问题解决 -

-
-
+
+

- + Linux 常见问题解决 +

+
+
- 安装时提示权限错误 - -
-

尝试以下解决方法:

-
    -
  • - 使用 sudo 安装:sudo npm install -g @anthropic-ai/claude-code -
  • -
  • - 或者配置 npm 使用用户目录:npm config set prefix ~/.npm-global -
  • -
  • - 然后添加到 PATH:export PATH=~/.npm-global/bin:$PATH -
  • -
-
-
- -
- - 缺少依赖库 - -
-

某些 Linux 发行版需要安装额外依赖:

-
-
# Ubuntu/Debian
-
sudo apt install build-essential
-
# CentOS/RHEL
-
- sudo dnf groupinstall "Development Tools" + 安装时提示权限错误 + +
+

尝试以下解决方法:

+
    +
  • + 使用 sudo 安装:sudo npm install -g @anthropic-ai/claude-code +
  • +
  • + 或者配置 npm 使用用户目录:npm config set prefix ~/.npm-global +
  • +
  • + 然后添加到 PATH:export PATH=~/.npm-global/bin:$PATH +
  • +
+
+
+ +
+ + 缺少依赖库 + +
+

某些 Linux 发行版需要安装额外依赖:

+
+
# Ubuntu/Debian
+
+ sudo apt install build-essential +
+
# CentOS/RHEL
+
+ sudo dnf groupinstall "Development Tools" +
-
-
+ -
- - 环境变量不生效 - -
-

检查以下几点:

-
    -
  • 确认修改了正确的配置文件(.bashrc 或 .zshrc)
  • -
  • - 重新启动终端或运行 - source ~/.bashrc -
  • -
  • - 验证设置:echo $ANTHROPIC_BASE_URL -
  • -
-
-
+ + 环境变量不生效 + +
+

检查以下几点:

+
    +
  • 确认修改了正确的配置文件(.bashrc 或 .zshrc)
  • +
  • + 重新启动终端或运行 + source ~/.bashrc +
  • +
  • + 验证设置:echo $ANTHROPIC_BASE_URL +
  • +
+
+ +
-
- -
-
🎉 恭喜你!
-

- 你已经成功安装并配置了 Claude Code,现在可以开始享受 AI 编程助手带来的便利了。 -

-

- 如果在使用过程中遇到任何问题,可以查看官方文档或社区讨论获取帮助。 -

+ +
+
🎉 恭喜你!
+

+ 你已经成功安装并配置了 Claude Code,现在可以开始享受 AI 编程助手带来的便利了。 +

+

+ 如果在使用过程中遇到任何问题,可以查看官方文档或社区讨论获取帮助。 +

+