Skip to content

附录 · Agent 引擎逆向工程命令索引

本文档收集第六章(Agent 引擎)所有报告中使用的逆向工程命令与样本输出 日期: 2026-06-29


1. 回合执行引擎字符串提取

bash
# 提取 Turn 相关字符串
strings atomcode.bin.bak | grep -iE "turn|runner|tool_dispatch|loop_guard" | grep -v "https\?://" | sort -u

# 提取 TurnStat 和 CountersSnapshot
strings atomcode.bin.bak | grep -A2 -B2 "TurnStat\|CountersSnapshot"
# 输出:
# struct TurnStat with 6 elements
# struct CountersSnapshot with 7 elements

# 提取回合保护机制
strings atomcode.bin.bak | grep -E "NaturalTurnLimit|StepLimit|loop_detected" | sort -u
# 输出:
# NaturalTurnLimit
# StepLimit
# loop_detected

2. 工具系统结构体提取

bash
# 提取所有工具参数结构体
strings atomcode.bin.bak | grep -E "struct (ReadFile|WriteFile|EditFile|SearchReplace|Bash|Glob|Grep|ListDir|WebFetch|WebSearch|Todo|Cd|OpenFile|BlastRadius|FileDeps|TraceCallers|TraceCallees|TraceChain|ParallelEdit|UseSkill|Diagnostics|FileHistory)Args" | sort -u
# 输出:
# struct BashArgs with 3 elements
# struct BlastRadiusArgs with 1 element
# struct CdArgs with 1 element
# struct DiagnosticsArgs
# struct EditFileArgs with 8 elements
# struct FileDepsArgs with 1 element
# struct GlobArgs with 2 elements
# struct GrepArgs with 4 elements
# struct ListDirArgs with 2 elements
# struct OpenFileArgs with 1 element
# struct ParallelEditArgs with 2 elements
# struct ReadFileArgs with 3 elements
# struct SearchReplaceArgs with 5 elements
# struct TodoArgs with 4 elements
# struct TraceCalleesArgs with 2 elements
# struct TraceCallersArgs with 2 elements
# struct TraceChainArgs with 2 elements
# struct UseSkillArgs with 2 elements
# struct WebFetchArgs with 3 elements
# struct WebSearchArgs with 2 elements
# struct WriteFileArgs with 2 elements

# 统计工具结构体总数
strings atomcode.bin.bak | grep -oP 'struct \w+Args with \d+ element' | wc -l
# 输出: 22

3. Hook 系统字符串提取

bash
# 提取钩子事件枚举
strings atomcode.bin.bak | grep -E "SessionStart|SessionEnd|PreToolUse|PostToolUse|TurnComplete|HookEvent" | sort -u
# 输出:
# SessionStart
# SessionEnd
# PreToolUse
# PostToolUse
# TurnComplete

# 提取 HookEntry 和配置
strings atomcode.bin.bak | grep -E "struct HookEntry|struct ScriptHookConfig|struct WebhookConfig|struct AsyncWebhookConfig|struct HooksConfig|struct CCHook|struct UserPromptHook" | sort -u
# 输出:
# struct HookEntry with 5 elements
# struct ScriptHookConfig with 7 elements
# struct WebhookConfig with 9 elements
# struct AsyncWebhookConfig with 10 elements
# struct CCHookGroup with 2 elements
# struct CCHookSpec with 3 elements

# 提取 PreHookResult 枚举变体
strings atomcode.bin.bak | grep "struct variant PreHookResult" | sort -u
# 输出:
# struct variant PreHookResult::Block with 1 element
# struct variant PreHookResult::Modify with 1 element

4. Provider 提供商系统字符串提取

bash
# 提取所有提供商路径
strings atomcode.bin.bak | grep "^crates/atomcode-core/src/provider/" | sort -u
# 输出:
# crates/atomcode-core/src/provider/claude.rs
# crates/atomcode-core/src/provider/mod.rs
# crates/atomcode-core/src/provider/ollama.rs
# crates/atomcode-core/src/provider/openai.rs
# crates/atomcode-core/src/provider/retry.rs

# 提取提供商类型字符串
strings atomcode.bin.bak | grep -E "openai|claude|ollama" | grep -v "https\?://\|^images/\|^audio/" | sort -u | head -10
# 输出:
# claude
# ollama
# openai
# Unknown type. Choose openai / claude / ollama.

5. 对话系统字符串提取

bash
# 提取消息内容变体
strings atomcode.bin.bak | grep -E "MessageContent|MultiPart|AssistantWithToolCalls|ToolResultRef" | sort -u
# 输出:
# struct variant MessageContent::MultiPart with 2 elements
# struct variant MessageContent::AssistantWithToolCalls with 4 elements

# 提取上下文压缩提示
strings atomcode.bin.bak | grep -iE "emergency|compaction|compress|prior.*conversation|dropped|preserved" | sort -u
# 输出:
# [Emergency: prior conversation was dropped during compaction. Only the latest user message is preserved.]
# The system will automatically compress prior messages as context fills up...

# 提取内容块变体
strings atomcode.bin.bak | grep "struct variant ContentBlock" | sort -u
# 输出:
# struct variant ContentBlock::Image with 2 elements
# struct variant ContentBlock::Text with 1 element
# struct variant ContentBlock::Resource with 1 element

6. 运行时 datalog 分析

bash
# 查看 LLM 调用日志
ls ~/.atomcode/datalog/*/llm/ | tail -5
# 输出示例:
# 2026-06-29_12-00-00_001.json
# 2026-06-29_12-01-00_002.json

# 查看特定日志内容
cat ~/.atomcode/datalog/*/llm/2026-06-29_12-00-00_001.json | python3 -m json.tool | head -30

# 查看汇总统计
cat ~/.atomcode/datalog/*/calls.log | tail -5
# 输出示例:
# 2026-06-29_12-00-00_001  deepseek-v4-flash  step=0  msgs=4/6391tok  →  1528ms  tools=0 text_only
# 2026-06-29_12-01-00_002  deepseek-v4-flash  step=1  msgs=5/12430tok →  3891ms  tools=1 glob

7. 所有 Agent 源文件路径

bash
strings atomcode.bin.bak | grep "^crates/atomcode-core/src/agent/" | sort -u
# 输出:
# crates/atomcode-core/src/agent/background.rs
# crates/atomcode-core/src/agent/diagnose.rs
# crates/atomcode-core/src/agent/git_auto_commit.rs
# crates/atomcode-core/src/agent/local_shell.rs
# crates/atomcode-core/src/agent/mod.rs
# crates/atomcode-core/src/agent/parallel_edit.rs
# crates/atomcode-core/src/agent/services.rs
# crates/atomcode-core/src/agent/subtask_driver.rs
# crates/atomcode-core/src/agent/tool_dispatch.rs

📅 生成: 2026-06-29

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