| 维度 | Amazon Q CLI | Claude Code |
|---|---|---|
| 实现语言 | Rust(编译时安全、零成本抽象) | TypeScript 核心 + Python 插件 |
| 架构模式 | 单体 Agent + Actor 消息传递💡 这里的 Actor 就是把 Agent 内部的功能模块当作独立的"小演员",它们各自干各自的活,需要协作时就互相发消息,而不是直接调用对方的方法或共享数据。 | 核心引擎 + 插件生态 |
| LLM 通信 | AWS SDK Streaming (CodeWhisperer API) | Anthropic API (SSE) |
| 工具执行 | 内置 Rust 原生 + MCP 工具 | 内置 + MCP 工具 |
| 并发模型 | Tokio async + FuturesUnordered💡 类比 JS:FuturesUnordered ≈ Promise.all() 但流式逐个返回结果,且 Rust 编译器在编译期就杜绝了并行任务间的数据竞争。 | Node.js 事件循环 + 子进程 |
| 状态管理 | SQLite + 内存状态机 (6 种状态) | 文件系统 + 会话状态 |
Stream(非 Future)→ 逐 chunk 流式处理;内置 CancellationToken 支持用户随时 Ctrl+C 中断
delegate 工具委派子任务agents/ 目录声明专业 Agent"cancelled" 占位符dummy tool specMAX_CONVERSATION_STATE_HISTORY_LEN = 500 条消息PreCompact Hook 可自定义压缩策略(详见 Slide 6)skills/ 注入专业能力(如前端设计、代码审查)canonicalize_path_sys() 防止路径遍历攻击Allow / Ask / Deny 三级模型
--- CONTEXT ENTRY BEGIN/END --- 包裹,注入时间、OS、CWD 等环境信息
100 条消息 (200K tokens) → 摘要 (~2K) + 最近 20 条 ≈ 30K tokens
[前 10000 字符]...truncatedMAX_RESOURCE_FILE_LENGTH = 10KB
[default] 42% > _ ← Context Window 使用率 ·
[default] 85% !> _ ← ⚠️ 考虑 /clear 或 /compact
@builtin/ · @github-tools/.amazonq/mcp.json.claude-plugin/plugin.jsonmcpServers 字段声明 Server/home/user/../etc/passwd → /etc/passwd → ❌ Deny./src/../../secrets → /secrets → ❌ Deny/home/user/project/src → ✅ Allow
Edit|Write|MultiEdit,不影响其他工具性能
.amazonq/cli-agents/reviewer.jsonPreToolUse — 工具执行前拦截/修改PostToolUse — 工具执行后审计/补充Stop — Agent 停止前触发SubagentStop — 子 Agent 完成时触发
SessionStart — 注入初始上下文SessionEnd — 清理/持久化UserPromptSubmit — 用户输入预处理PreCompact — 压缩前保留关键信息Notification — 自定义通知