Repository Analysis

Wei-Shaw/claude-relay-service

CRS-自建Claude Code镜像,一站式开源中转服务,让 Claude、OpenAI、Gemini、Droid 订阅统一接入,支持拼车共享,更高效分摊成本,原生工具无缝使用。

0.8 Likely human-written View on GitHub
0.8
Adjusted Score
0.8
Raw Score
100%
Time Factor
2026-05-29
Last Push
11,926
Stars
JavaScript
Language
205,072
Lines of Code
339
Files
134
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 0MEDIUM 17LOW 117

Pattern Findings

134 matches across 7 categories. Click a row to expand file-level details.

Hyper-Verbose Identifiers103 hits · 106 pts
SeverityFileLineSnippet
LOWweb/admin-spa/src/views/DashboardView.vue1270function createApiKeysUsageTrendChart() {
LOWweb/admin-spa/src/views/DashboardView.vue1464async function updateApiKeysUsageTrendChart() {
LOWweb/admin-spa/src/views/DashboardView.vue1470function createAccountUsageTrendChart() {
LOWweb/admin-spa/src/views/DashboardView.vue1637async function handleAccountUsageGroupChange(group) {
LOWtests/metadataUserIdHelper.integration.test.js131function oldExtractSessionFromMetadata(userId) {
LOWtests/metadataUserIdHelper.integration.test.js137function oldExtractOriginalSessionId(userId) {
LOWscripts/reset-request-detail-retention-hours.js58async function resetRequestDetailRetentionHours() {
LOWsrc/middleware/auth.js29async function shouldRejectDueToOverload(apiKeyId, timeoutMs, queueConfig, maxQueueSize) {
LOWsrc/utils/signatureCache.js43function getOrCreateSessionCache(sessionId) {
LOWsrc/utils/testPayloadHelper.js303function createChatCompletionsTestPayload(model = 'gpt-4o-mini', options = {}) {
LOWsrc/utils/requestDetailHelper.js133function extractOpenAIReasoningInfo(payload) {
LOWsrc/utils/requestDetailHelper.js147function extractAnthropicReasoningInfo(payload) {
LOWsrc/utils/requestDetailHelper.js205function extractGeminiReasoningInfo(payload) {
LOWsrc/utils/requestDetailHelper.js243function extractRequestReasoningInfo(payload) {
LOWsrc/utils/requestDetailHelper.js289function extractPreviewReasoningInfo(preview) {
LOWsrc/utils/requestDetailHelper.js363function resolveRequestDetailReasoning(detail = {}) {
LOWsrc/utils/requestDetailHelper.js515function sanitizeRequestBodySnapshot(body, options = {}) {
LOWsrc/utils/requestDetailHelper.js590function finalizeRequestDetailMeta(requestMeta = null) {
LOWsrc/utils/requestDetailHelper.js607function extractOpenAICacheReadTokens(usage = {}) {
LOWsrc/utils/requestDetailHelper.js654function getRequestDetailCacheMetrics(detail = {}) {
LOWsrc/utils/oauthHelper.js100function generateSetupTokenAuthUrl(codeChallenge, state) {
LOWsrc/utils/antigravityUpstreamDump.js67async function dumpAntigravityUpstreamRequest(requestInfo) {
LOWsrc/utils/anthropicResponseDump.js55function summarizeAnthropicResponseBody(body) {
LOWsrc/utils/anthropicResponseDump.js102async function dumpAnthropicNonStreamResponse(req, statusCode, body, meta = {}) {
LOWsrc/utils/anthropicResponseDump.js110async function dumpAnthropicStreamSummary(req, summary, meta = {}) {
LOWsrc/utils/antigravityUpstreamResponseDump.js68async function dumpAntigravityUpstreamResponse(responseInfo) {
LOWsrc/utils/antigravityUpstreamResponseDump.js105async function dumpAntigravityStreamEvent(eventInfo) {
LOWsrc/utils/antigravityUpstreamResponseDump.js133async function dumpAntigravityStreamSummary(summaryInfo) {
LOWsrc/utils/contents.js316function getTrailingPlaceholderAnchor(template) {
LOWsrc/utils/contents.js339function trimRawValueByTrailingPlaceholder(rawValue, template) {
LOWsrc/utils/contents.js404function normalizeValueForTemplate(normalizedValue, template, normalizedTemplate) {
LOWsrc/utils/contents.js425function matchesTemplateIgnoringPlaceholders(normalizedValue, parts) {
LOWsrc/utils/contents.js450function bestSimilarityByTemplates(value) {
LOWsrc/utils/warmupInterceptor.js69function isTitleExtractionSystemPrompt(systemText) {
LOWsrc/utils/performanceOptimizer.js62function getHttpsAgentForNonStream() {
LOWsrc/utils/anthropicRequestDump.js89async function dumpAnthropicMessagesRequest(req, meta = {}) {
LOWsrc/utils/antigravityModel.js99function normalizeAntigravityModelInput(model, defaultModel = DEFAULT_ANTIGRAVITY_MODEL) {
LOWsrc/utils/antigravityModel.js114function getAntigravityModelMetadata(modelName) {
LOWsrc/utils/antigravityModel.js132function mapAntigravityUpstreamModel(model) {
LOWsrc/routes/unified.js428function buildGeminiRequestFromOpenAI(body) {
LOWsrc/routes/openaiGeminiRoutes.js24function ensureAntigravityProjectId(account) {
LOWsrc/routes/openaiGeminiRoutes.js143function convertGeminiResponseToOpenAI(geminiResponse, model, stream = false) {
LOWsrc/routes/admin/apiKeys.js409async function getApiKeysSortedByCostPrecomputed(options) {
LOWsrc/routes/admin/apiKeys.js517async function getApiKeysSortedByCostCustom(options) {
LOWsrc/routes/admin/sync.js52function buildModelMappingFromSupportedModels(supportedModels) {
LOWsrc/handlers/geminiHandlers.js203function ensureGeminiPermissionMiddleware(req, res, next) {
LOWsrc/handlers/geminiHandlers.js259function sanitizeFunctionResponsesForApiKey(contents) {
LOWsrc/handlers/geminiHandlers.js322async function normalizeAxiosStreamError(error) {
LOWsrc/handlers/geminiHandlers.js1806async function handleStreamGenerateContent(req, res) {
LOWsrc/handlers/geminiHandlers.js2212async function handleStandardGenerateContent(req, res) {
LOWsrc/handlers/geminiHandlers.js2506async function handleStandardStreamGenerateContent(req, res) {
LOWsrc/services/apiKeyService.js146function parseOpenAIResponsesPayloadRules(rawRules) {
LOWsrc/services/antigravityClient.js32function getAntigravityApiUrlCandidates() {
LOWsrc/services/antigravityClient.js72function generateAntigravityProjectId() {
LOWsrc/services/antigravityClient.js76function generateAntigravitySessionId() {
LOWsrc/services/antigravityClient.js80function resolveAntigravityProjectId(projectId, requestData) {
LOWsrc/services/antigravityClient.js85function resolveAntigravitySessionId(sessionId, requestData) {
LOWsrc/services/antigravityClient.js123function normalizeAntigravityThinking(model, requestPayload) {
LOWsrc/services/antigravityClient.js188function normalizeAntigravityEnvelope(envelope) {
LOWsrc/services/anthropicGeminiBridgeService.js102function ensureAntigravityProjectId(account) {
43 more matches not shown…
Decorative Section Separators11 hits · 33 pts
SeverityFileLineSnippet
MEDIUMsrc/utils/contents.js100 text: '## Insights\nIn order to encourage learning, before and after writing code, always provide brief educational
MEDIUMsrc/utils/contents.js105 text: 'You are an interactive CLI tool that helps users with software engineering tasks. In addition to software eng
MEDIUMsrc/utils/contents.js110 text: 'You are an interactive CLI tool that helps users with software engineering tasks. In addition to software eng
MEDIUMsrc/routes/userRoutes.js764// ═══════════════════════════════════════════════════════════════════════════
MEDIUMsrc/routes/userRoutes.js766// ═══════════════════════════════════════════════════════════════════════════
MEDIUMsrc/routes/admin/quotaCards.js11// ═══════════════════════════════════════════════════════════════════════════
MEDIUMsrc/routes/admin/quotaCards.js13// ═══════════════════════════════════════════════════════════════════════════
MEDIUMsrc/routes/admin/quotaCards.js166// ═══════════════════════════════════════════════════════════════════════════
MEDIUMsrc/routes/admin/quotaCards.js168// ═══════════════════════════════════════════════════════════════════════════
MEDIUMsrc/services/apiKeyService.js2702 // ═══════════════════════════════════════════════════════════════════════════
MEDIUMsrc/services/apiKeyService.js2704 // ═══════════════════════════════════════════════════════════════════════════
AI Slop Vocabulary5 hits · 12 pts
SeverityFileLineSnippet
MEDIUMsrc/utils/contents.js70 text: 'You are an interactive CLI tool that helps users __PLACEHOLDER__ Use the instructions below and the tools ava
MEDIUMsrc/utils/contents.js165 text: 'Your job is to create a custom output style, which modifies the Claude Code system prompt, based on the user\
MEDIUMsrc/utils/contents.js165 text: 'Your job is to create a custom output style, which modifies the Claude Code system prompt, based on the user\
MEDIUMsrc/routes/openaiRoutes.js26 "You are Codex, based on GPT-5. You are running as a coding agent in the Codex CLI on a user's computer.\n\n## General
MEDIUMsrc/routes/openaiRoutes.js26 "You are Codex, based on GPT-5. You are running as a coding agent in the Codex CLI on a user's computer.\n\n## General
Over-Commented Block11 hits · 11 pts
SeverityFileLineSnippet
LOWweb/admin-spa/src/views/AccountsView.vue5101// const fieldMap = {
LOWweb/admin-spa/src/views/ApiKeysView.vue4241// }
LOWweb/admin-spa/src/views/ApiKeysView.vue4261// if (progress >= 100) return 'bg-red-500'
LOWcli/index.js621// async function listClaudeAccounts() {
LOWcli/index.js641// account.email || '-',
LOWsrc/middleware/auth.js321 // 槽位所有权转移说明:
LOWsrc/middleware/auth.js581 // 当第一个请求正在处理,第二个请求进入排队时,它们共用同一个 socket
LOWsrc/middleware/auth.js2001
LOWsrc/middleware/auth.js2021// points: 1000, // 请求数量
LOWsrc/utils/modelHelper.js161 // Match: -{major}-{minor}-{date} or -{major}-{date} or -{major}
LOWsrc/routes/api.js221 const isStream = req.body.stream === true
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippet
LOWweb/admin-spa/src/views/SettingsView.vue1797 placeholder="user@example.com"
LOWweb/admin-spa/src/views/SettingsView.vue1853 placeholder="admin@example.com"
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippet
MEDIUMsrc/utils/contents.js70 text: 'You are an interactive CLI tool that helps users __PLACEHOLDER__ Use the instructions below and the tools ava
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippet
LOWsrc/utils/contents.js165 text: 'Your job is to create a custom output style, which modifies the Claude Code system prompt, based on the user\