第23章 · 企业功能
第23章 · 企业功能
23.1 策略限制系统
services/policyLimits/实现了组织级别的功能限制:
资格模型:
- Console用户(API Key):全部有资格
- OAuth用户(Claude.ai):仅Team和Enterprise/C4E
- Fail-Open设计:API获取失败时不阻塞,继续运行不受限
export type PolicyLimitsResponse = {
restrictions: {
disabledTools?: string[] // 禁用的工具列表
disabledFeatures?: string[] // 禁用的功能列表
maxTokensPerMinute?: number // Token速率限制
customLimits?: Record<string, unknown> // 自定义限制
}
}后台轮询:每小时(POLLING_INTERVAL_MS = 60 * 60 * 1000)从服务端拉取最新限制。
缓存:结果缓存到policy-limits.json文件,重启后立即可用。
超时:单次请求10秒超时,最多5次重试。
23.2 远程管理设置
services/remoteManagedSettings/允许企业管理员远程推送Claude Code设置:
- 使用ETag/If-None-Match进行条件请求,最小化带宽
- 签名验证确保设置未被篡改(
securityCheck.tsx) - Checksum验证(
crypto.createHash()) - Settings Schema验证确保格式正确
- 30秒超时防止死锁(其他系统等待初始加载完成)
- 安全检查失败时优雅降级
23.3 设置同步
services/settingsSync/实现了设置的持久化与跨设备同步。
23.4 OAuth认证流程
services/oauth/client.ts实现了完整的OAuth 2.0 PKCE流程:
export function buildAuthUrl({
codeChallenge: string,
state: string,
port: number,
isManual: boolean,
loginWithClaudeAi?: boolean, // Claude.ai vs Console
inferenceOnly?: boolean,
orgUUID?: string,
loginHint?: string,
loginMethod?: string,
}): string关键特性:
- 支持Claude.ai和Console两个认证端点
- PKCE(Proof Key for Code Exchange)增强安全性
- 组织选择(
orgUUID) - 登录提示(
loginHint) - Claude Max升级引导
两个作用域:
CLAUDE_AI_INFERENCE_SCOPE— Claude.ai推理权限PROFILE_SCOPE— 用户身份
23.5 GrowthBook灰度发布
services/analytics/growthbook.ts集成了GrowthBook特性门控和A/B测试:
用户维度属性:
export type GrowthBookUserAttributes = {
id: string
sessionId: string
deviceID: string
platform: 'win32' | 'darwin' | 'linux'
apiBaseUrlHost?: string
organizationUUID?: string
accountUUID?: string
userType?: string
subscriptionType?: string
rateLimitTier?: string
firstTokenTime?: number
email?: string
appVersion?: string
github?: GitHubActionsMetadata
}这些维度允许极其精细的灰度控制:
- 按平台(仅macOS用户)
- 按组织(仅特定企业)
- 按订阅类型(仅Pro/Max用户)
- 按Rate Limit层级
- 按GitHub Actions环境
特性门控在整个代码库中被广泛使用——tengu_session_memory、tengu_harbor、tengu_brief、tengu_onyx_plover、tengu_ccr_bridge_multi_session等。所有门控名称都以tengu为前缀,这可能是一个内部代号。
23.6 分析与遥测
分析系统包含多个层次:
GrowthBook:特性标志和A/B测试
Datadog:APM和日志(datadog.ts)
第一方事件日志:
firstPartyEventLogger.ts— 事件记录firstPartyEventLoggingExporter.ts— 事件导出- PII保护:不记录代码内容和文件路径
- 事件采样:高频事件按比例采样,避免数据爆炸
实验追踪:
- 实验ID(
experimentId)、变体ID(variationId)、哈希值(hashValue) - 曝光日志按会话去重(同一实验在同一会话中只记录一次曝光)
- 强制特性用于测试环境