Skip to content

附录 · UI 系统逆向工程命令索引

本文档收集第十一章(UI 系统)所有报告中使用的逆向工程命令与样本输出 日期: 2026-06-29


1. CLI 参数提取

bash
# 提取所有 CLI 子命令
strings atomcode.bin.bak | grep -E "^  [a-z]+$" | sort -u | head -30
# 输出:
# daemon
# webui
# setup
# login
# hook
# mcp
# marketplace
# telemetry
# upgrade
# fixissue

# 提取全局选项
strings atomcode.bin.bak | grep -oP '--[a-z-]+' | sort -u | head -30
# 输出:
# --continue-last
# --prompt
# --prompt-file
# --verbose
# --no-telemetry
# --dev
# --disable-tools
# --dangerously-skip-permissions
# --provider
# --model
# --config
# --dir
# --lang
# --port
# --host
# --yes
# --force
# --purge
# --keep-data
# --dry-run
# --pretty

2. TUIX 终端 UI 字符串提取

bash
# 提取所有 TUIX 源文件
strings atomcode.bin.bak | grep "^crates/atomcode-tuix/src/" | sort -u
# 输出 (24 文件):
# crates/atomcode-tuix/src/commands.rs
# crates/atomcode-tuix/src/event_loop/bg_runtime.rs
# crates/atomcode-tuix/src/event_loop/commands.rs
# crates/atomcode-tuix/src/event_loop/file_index.rs
# crates/atomcode-tuix/src/event_loop/live_sync.rs
# crates/atomcode-tuix/src/event_loop/mod.rs
# crates/atomcode-tuix/src/event_loop/monitor.rs
# crates/atomcode-tuix/src/event_loop/oauth_poll.rs
# crates/atomcode-tuix/src/event_loop/usage_monitor.rs
# crates/atomcode-tuix/src/lib.rs
# crates/atomcode-tuix/src/markdown.rs
# crates/atomcode-tuix/src/modals/language_picker.rs
# crates/atomcode-tuix/src/modals/model_picker.rs
# crates/atomcode-tuix/src/modals/onboarding_wizard.rs
# crates/atomcode-tuix/src/modals/plugin_manager.rs
# crates/atomcode-tuix/src/modals/provider_wizard.rs
# crates/atomcode-tuix/src/modals/session_picker.rs
# crates/atomcode-tuix/src/render/qr.rs
# crates/atomcode-tuix/src/render/retained.rs
# crates/atomcode-tuix/src/render/screen.rs
# crates/atomcode-tuix/src/render/worker.rs
# crates/atomcode-tuix/src/terminal_bg.rs
# crates/atomcode-tuix/src/think.rs
# crates/atomcode-tuix/src/width.rs

# 提取终端检测字符串
strings atomcode.bin.bak | grep -E "KITTY_WINDOW|WEZTERM|ghostty|apple_terminal|terminal_bg|unfocused" | sort -u
# 输出:
# KITTY_WINDOW_ID
# WEZTERM_PANE
# wezterm
# ghostty
# apple_terminal
# terminal.app
# kitty
# unfocused

3. 模态对话框字符串

bash
# 提取向导步骤
strings atomcode.bin.bak | grep -E "currentStep|Step [0-9]/[0-9]" | sort -u
# 输出:
# currentStep 1/2
# currentStep 2/2
# Step 3/3

# 提取提供商类型提示
strings atomcode.bin.bak | grep -E "Type\?.*openai|Unknown type|(keep)" | sort -u
# 输出:
# Type? (openai / claude / ollama)
# Unknown type. Choose openai / claude / ollama.
# (keep)

4. WebUI SPA 提取

bash
# 从运行中的 daemon 提取 SPA JS
curl -s http://localhost:13457/assets/index-*.js > /tmp/spa_analysis.js 2>/dev/null
wc -c /tmp/spa_analysis.js
# 输出: 约 800KB+ 的 JS 文件

# 分析 SPA 中引用的 API 端点
grep -oP '"[a-z]+/[a-z_-]+"' /tmp/spa_analysis.js | sort -u | head -20
# 输出:
# "auth/status"
# "chat"
# "chat/permission"
# "chat/stop"
# "cd"
# "config"
# "fs/list"
# "fs/mkdir"
# "live"
# "live/message"
# "live/permission"
# "live/provider"
# "providers"
# "sessions"
# "skills"
# "tunnel/status"

# 分析 SPA 中的翻译键
grep -oP '`settings\.[a-z]+`' /tmp/spa_analysis.js | sort -u | head -10
# 输出:
# `settings.addModel`
# `settings.apiKey`
# `settings.baseUrl`
# `settings.close`
# `settings.configFile`
# `settings.contextWindow`
# `settings.default`
# `settings.defaultProvider`
# `settings.delete`
# `settings.edit`

5. 通知系统字符串

bash
# 提取通知相关字符串
strings atomcode.bin.bak | grep -iE "notify-send|notify|notification|AtomCode.*need|AtomCode.*done|AtomCode.*failed" | sort -u | head -10
# 输出:
# notify-send
# AtomCode approval needed
# AtomCode done
# AtomCode cancelled
# AtomCode failed

6. 运行时验证:流式 SSE

bash
# 捕获纯文本 SSE 流
curl -N -X POST http://localhost:13456/chat \
  -H "Authorization: Bearer $(cat ~/.atomcode/auth.toml | grep access_token | cut -d'"' -f2)" \
  -H "Content-Type: application/json" \
  -d '{"message":"回复一句话:hi"}' 2>&1 | head -20

# 输出示例:
# data: {"type":"reasoning","content":"The user just said hi..."}
# data: {"type":"text","content":"你好!"}
# data: {"type":"tokens","prompt":6193,"completion":88,"total":6281}
# data: {"type":"done","tokens":6281,"tool_calls":0,"session_id":"..."}

📅 生成: 2026-06-29

基于 VitePress 构建 · AtomCode v4.25.3 逆向工程分析文档