mirror of
https://github.com/sanbuphy/claude-code-source-code.git
synced 2026-04-03 11:34:54 +08:00
121 lines
3.4 KiB
Markdown
121 lines
3.4 KiB
Markdown
# 远程控制与紧急开关
|
||
|
||
> 基于网络公开资料与社区讨论整理的 Claude Code v2.1.88 分析报告。
|
||
|
||
## 概述
|
||
|
||
Claude Code 实现了远程管理机制,允许官方(和企业管理员)通过远程配置来管理和更新客户端的特定行为,以确保系统安全和企业合规。
|
||
|
||
## 1. 远程托管设置
|
||
|
||
### 架构
|
||
|
||
客户端会从以下端点获取最新的配置信息:
|
||
```
|
||
GET /api/claude_code/settings
|
||
```
|
||
|
||
来源: `src/services/remoteManagedSettings/index.ts`
|
||
|
||
### 轮询行为
|
||
|
||
```typescript
|
||
const POLLING_INTERVAL_MS = 60 * 60 * 1000 // 每小时
|
||
const DEFAULT_MAX_RETRIES = 5
|
||
```
|
||
|
||
系统默认每小时检查一次更新,以确保配置的及时性。
|
||
|
||
### 适用范围
|
||
|
||
- Console 用户 (API key): 默认适用
|
||
- OAuth 用户: 主要面向 Enterprise/C4E 和 Team 订阅者进行企业级管控
|
||
|
||
### 安全变更确认
|
||
|
||
当远程设置涉及关键或敏感的权限变更时,系统会弹出确认提示框:
|
||
|
||
```typescript
|
||
// src/services/remoteManagedSettings/securityCheck.tsx:67-73
|
||
export function handleSecurityCheckResult(result: SecurityCheckResult): boolean {
|
||
if (result === 'rejected') {
|
||
gracefulShutdownSync(1) // 拒绝后安全退出
|
||
return false
|
||
}
|
||
return true
|
||
}
|
||
```
|
||
|
||
为了保障环境安全,如果用户拒绝了必须的安全配置更新,程序将安全退出。这是一种常见的强制合规策略。
|
||
|
||
### 故障容灾
|
||
|
||
当远程服务器不可达时,系统会回退使用本地缓存的配置,保证基础功能的可用性。
|
||
|
||
## 2. 功能开关 (Feature Flags)
|
||
|
||
系统使用 GrowthBook feature flag 实现了灵活的功能管控,可以在发现严重问题时紧急禁用特定功能:
|
||
|
||
### 权限绕过功能管控
|
||
|
||
```typescript
|
||
// src/utils/permissions/bypassPermissionsKillswitch.ts
|
||
// 用于在必要时关闭"绕过权限"功能,防止安全风险
|
||
```
|
||
|
||
### 自动模式断路器
|
||
|
||
```typescript
|
||
// src/utils/permissions/autoModeState.ts
|
||
// autoModeCircuitBroken 状态用于在异常情况下暂停自动模式
|
||
```
|
||
|
||
### 快速模式开关
|
||
|
||
```typescript
|
||
// src/utils/fastMode.ts
|
||
// 从 /api/claude_code_penguin_mode 获取状态
|
||
// 动态管理快速模式的可用性
|
||
```
|
||
|
||
### 数据上报通道控制
|
||
|
||
```typescript
|
||
// src/services/analytics/sinkKillswitch.ts:4
|
||
const SINK_KILLSWITCH_CONFIG_NAME = 'tengu_frond_boric'
|
||
```
|
||
|
||
### 语音模式开关
|
||
|
||
```typescript
|
||
// src/voice/voiceModeEnabled.ts:21
|
||
// 'tengu_amber_quartz_disabled' — 用于在发现语音模块缺陷时紧急关闭
|
||
```
|
||
|
||
## 3. 模型覆盖系统
|
||
|
||
为了进行灰度测试或应对线上突发情况,系统支持对内部员工等特定群体进行模型版本的动态切换:
|
||
|
||
```typescript
|
||
// src/utils/model/antModels.ts:32-33
|
||
// @[MODEL LAUNCH]: Update tengu_ant_model_override with new ant-only models
|
||
```
|
||
|
||
`tengu_ant_model_override` GrowthBook flag 可以:
|
||
- 设置默认模型
|
||
- 设置默认 effort level
|
||
- 追加系统提示词
|
||
- 定义自定义模型别名
|
||
|
||
## 总结
|
||
|
||
| 机制 | 范围 | 用户同意 |
|
||
|------|------|---------|
|
||
| 远程托管设置 | Enterprise/Team | 接受或退出 |
|
||
| GrowthBook feature flags | 所有用户 | 无 |
|
||
| Kill switches | 所有用户 | 无 |
|
||
| 模型覆盖 | 内部 (ant) | 无 |
|
||
| 快速模式控制 | 所有用户 | 无 |
|
||
|
||
远程控制基础设施极其广泛,且在很大程度上没有用户可见性或同意机制。企业管理员可以强制执行用户无法覆盖的策略,Anthropic 可以通过 feature flag 远程更改任何用户的行为。
|