AutoSteer 是一个桌面应用程序,通过多工作区管理增强了你的 Claude Code 使用体验。它使用 Electron 构建,支持 macOS、Linux 和 Windows(通过 WSL),允许你在多个隔离的工作区中管理持久会话,并实现无缝上下文切换。
https://github.com/user-attachments/assets/65219ff1-f600-412a-8a5f-fe7a1880704f
[!NOTE] 本项目与 Anthropic 无关,未得到 Anthropic 的认可或赞助。Claude 是 Anthropic, PBC 的商标。这是一个独立项目,使用 Claude。
前提条件:必须先安装 Claude Code。
从 发布页面 下载适用于你平台的最新版本:
.zip 文件并解压到应用程序.deb(Debian/Ubuntu)或 .rpm(Fedora/RHEL)有关包括 Windows 上 WSL2 设置在内的详细安装说明,请参阅 INSTALLATION.md
# 启动 AutoSteer
autosteer
# 启动带有调试日志
autosteer --debug
启动后,在设置中配置你的偏好设置,并开始使用 AutoSteer 中的 Claude Code!
AutoSteer 在所有平台上将配置存储在 ~/.autosteer/。
build-essential 包# 克隆仓库
git clone https://github.com/notch-ai/autosteer.git
cd autosteer
# 安装依赖
pnpm install
# 在开发模式下运行
pnpm dev
# 运行测试
pnpm test
# 构建应用
pnpm compile
# 打包分发
pnpm make
# 启动开发服务器
pnpm dev
# 运行单元测试
pnpm test:unit
# 运行集成测试
pnpm test:integration
# 运行所有测试
pnpm test
# 校验代码
pnpm lint
# 格式化代码
pnpm format
# 类型检查
pnpm typecheck
# 编译应用(TypeScript + Webpack)
pnpm compile
# 为当前平台打包应用
pnpm package
# 创建可分发的安装程序
pnpm make
autosteer/
├── src/
│ ├── main/ # Electron 主进程
│ │ └── ipc/ # 进程间通信层
│ │ ├── handlers/ # 4 个合并的领域处理器
│ │ │ ├── claude.handlers.ts # 代理、MCP、斜杠命令操作
│ │ │ ├── project.handlers.ts # 文件、资源管理
│ │ │ ├── git.handlers.ts # Git 操作
│ │ │ └── system.handlers.ts # 终端、徽章、配置、日志、存储、更新
│ │ ├── utils/handlerFactory.ts # 可重用的错误处理、日志记录、验证
│ │ └── IpcRegistrar.ts # 集中的处理器注册
│ ├── features/ # 基于领域的特性组织
│ │ ├── chat/ # 聊天特性领域(15 个组件)
│ │ ├── monitoring/ # 监控特性领域(10 个组件)
│ │ ├── settings/ # 设置特性领域(4 个组件)
│ │ └── shared/ # 特性间共享的组件(48 个组件)
│ │ └── components/ # 按子域组织
│ │ ├── agent/
│ │ ├── git/
│ │ ├── layout/
│ │ ├── projects/
│ │ ├── session/
│ │ ├── tasks/
│ │ ├── terminal/
│ │ └── ui/
│ ├── components/ # 常见的 UI 层(shadcn/ui 原语)
│ ├── services/ # 应用服务
│ ├── stores/ # 状态管理(Zustand)
│ ├── hooks/ # React 钩子
│ ├── commons/
│ │ ├── utils/ # 实用函数
│ │ │ └── slash-commands/ # 斜杠命令实用工具
│ │ ├── contexts/ # React 上下文
│ │ ├── constants/ # 常量和配置
│ │ └── config/ # 主题和样式
│ ├── entities/ # 数据模型(轻量级清洁架构)
│ └── types/ # TypeScript 类型
├── assets/ # 应用图标和图像
├── tests/
│ ├── unit/ # 单元测试(目标覆盖率为 80%)
│ ├── integration/ # 集成测试
│ ├── component/ # Playwright 组件测试
│ └── factories/ # 测试数据工厂
├── scripts/ # 构建和发布脚本
└── playwright-component.config.ts # 组件测试配置
导入模式:@/features/[domain]/components/[Component]
我们欢迎贡献!请参阅我们的 贡献指南 获取详细信息。
# 分叉并克隆
git clone https://github.com/YOUR_USERNAME/autosteer.git
cd autosteer
# 安装依赖
pnpm install
# 开始开发
pnpm dev
# 提交前运行测试
pnpm test
pnpm lint
pnpm typecheck
我们使用 Jest 进行单元/集成测试,使用 Playwright 进行组件/视觉测试:
# 运行所有测试
pnpm test
# 仅运行单元测试
pnpm test:unit
# 仅运行集成测试
pnpm test:integration
# 在监视模式下运行测试
pnpm test:watch
# 运行带有覆盖率报告的测试
pnpm test:coverage
关键测试文件涵盖关键功能:
tests/unit/commons/utils/slash-commands/slash_command_utils.test.ts - 自定义斜杠命令格式化tests/unit/hooks/useTerminalPool.test.ts - 终端池管理tests/unit/main/ipc/handlers/ - 合并的领域处理器tests/unit/services/ClaudeCodeService.test.ts - 核心 Claude Code 集成tests/unit/stores/core.test.ts - 状态管理tests/unit/types/terminal.types.test.ts - 终端类型安全tests/unit/entities/SessionBlock.test.ts - 数据模型验证AutoSteer 为调试 SDK 消息流创建追踪文件。这些文件存储在 ~/.autosteer/traces/ 并使用 JSONL 格式(每行一个 JSON 对象)。
~/.autosteer/traces/{sessionId}.trace.jsonl
每个追踪条目是一个具有以下结构的 JSON 对象:
{
"timestamp": "2025-11-09T18:51:35.123Z", // ISO 8601 时间戳
"sessionId": "session-abc123", // 会话标识符
"direction": "to-claude" | "from-claude", // 消息方向
"rawMessage": { /* SDK 消息对象 */ }, // 完整的 SDK 消息
"sdkVersion": "^0.1.0", // SDK 版本
"correlationId": "550e8400-e29b-41d4", // 请求/响应关联
"sequenceNumber": 42 // 每个会话的单调序列号
}
~/.autosteer/traces/ 中的文件以释放磁盘空间追踪文件可用于:
{
"timestamp": "2025-11-09T18:51:35.123Z",
"sessionId": "session-abc123",
"direction": "from-claude",
"rawMessage": {
"type": "assistant",
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"session_id": "session-abc123",
"message": {
"role": "assistant",
"content": [{ "type": "text", "text": "Hello!" }]
}
},
"sdkVersion": "^0.1.0",
"correlationId": "550e8400-e29b-41d4",
"sequenceNumber": 42,
"messageType": "assistant",
"messageSubtype": null
}
本指南帮助开发者处理 Anthropic Claude SDK 更新和 Pydantic 模型更改,而不会破坏现有的消息验证。
当更新 @anthropic-ai/claude-agent-sdk 时:
检查破坏性变更
更新 Zod 模式
src/services/MessageValidator.ts测试验证
pnpm test:unit -- MessageValidator.test.ts
更新追踪文档
.sketchpad/claude_message_types.py 中更新 Pydantic 模型更新 Python 模型
.sketchpad/claude_message_types.pySDKMessage 联合类型更新 TypeScript 模式
MessageValidator.ts 中添加相应的 Zod 模式添加测试
示例:
// 添加到 MessageValidator.ts
const NewMessageTypeSchema = z.object({
type: z.literal('new_type'),
uuid: z.string().uuid(),
session_id: z.string(),
// ... 其他字段
});
如果 SDK 更新破坏了验证:
识别破坏性变更
逐步更新模式
// 旧字段(已弃用但仍然支持)
old_field: z.string().optional(),
// 新字段(首选)
new_field: z.string().optional(),
添加迁移逻辑
版本兼容性
# 运行所有验证测试
pnpm test:unit -- MessageValidator
# 使用固定数据测试
pnpm test:integration -- message-validation
# 检查类型覆盖
pnpm typecheck
如果验证在生产环境中中断:
本项目根据 MIT 许可证发布 - 详情请参阅 LICENSE 文件。