[INFO] cloning repository https://github.com/sunO2/scrs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sunO2/scrs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FsunO2%2Fscrs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FsunO2%2Fscrs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 93d02e05dac6d3a08bd7314e862ad8c05ec075f0
[INFO] testing sunO2/scrs against 1.94.0 for beta-1.95-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FsunO2%2Fscrs" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/sunO2/scrs
[INFO] finished tweaking git repo https://github.com/sunO2/scrs
[INFO] tweaked toml for git repo https://github.com/sunO2/scrs written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/sunO2/scrs on toolchain 1.94.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.94.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/sunO2/scrs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.94.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded engineioxide-core v0.2.0
[INFO] [stderr]   Downloaded toml v0.9.10+spec-1.1.0
[INFO] [stderr]   Downloaded socketioxide-parser-common v0.17.0
[INFO] [stderr]   Downloaded bincode_derive v2.0.1
[INFO] [stderr]   Downloaded asn1-rs-derive v0.6.0
[INFO] [stderr]   Downloaded rust-embed-utils v8.9.0
[INFO] [stderr]   Downloaded oid-registry v0.8.1
[INFO] [stderr]   Downloaded rust-embed-impl v8.9.0
[INFO] [stderr]   Downloaded zune-core v0.5.0
[INFO] [stderr]   Downloaded virtue v0.0.18
[INFO] [stderr]   Downloaded rustls-pki-types v1.13.2
[INFO] [stderr]   Downloaded der-parser v10.0.0
[INFO] [stderr]   Downloaded asn1-rs v0.7.1
[INFO] [stderr]   Downloaded x509-parser v0.18.0
[INFO] [stderr]   Downloaded rsa v0.9.9
[INFO] [stderr]   Downloaded socketioxide v0.18.0
[INFO] [stderr]   Downloaded rcgen v0.14.6
[INFO] [stderr]   Downloaded zune-jpeg v0.5.8
[INFO] [stderr]   Downloaded aws-lc-rs v1.15.2
[INFO] [stderr]   Downloaded engineioxide v0.17.2
[INFO] [stderr]   Downloaded base64ct v1.8.1
[INFO] [stderr]   Downloaded zmij v1.0.7
[INFO] [stderr]   Downloaded socketioxide-core v0.17.0
[INFO] [stderr]   Downloaded asn1-rs-impl v0.2.0
[INFO] [stderr]   Downloaded openssl-probe v0.2.0
[INFO] [stderr]   Downloaded tracing-appender v0.2.4
[INFO] [stderr]   Downloaded rust-embed v8.9.0
[INFO] [stderr]   Downloaded aws-lc-sys v0.35.0
[INFO] [stderr]   Downloaded adb_client v3.0.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 9a3747e5be70fbee0d7eaf05de7c50f6b184cf0e86328e152d9ca26f40dae190
[INFO] running `Command { std: "docker" "start" "-a" "9a3747e5be70fbee0d7eaf05de7c50f6b184cf0e86328e152d9ca26f40dae190", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9a3747e5be70fbee0d7eaf05de7c50f6b184cf0e86328e152d9ca26f40dae190", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9a3747e5be70fbee0d7eaf05de7c50f6b184cf0e86328e152d9ca26f40dae190", kill_on_drop: false }`
[INFO] [stdout] 9a3747e5be70fbee0d7eaf05de7c50f6b184cf0e86328e152d9ca26f40dae190
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 042b12e6444807a50ea0ac0386ab58152cda8192c97af7a535ce46a28856fedf
[INFO] running `Command { std: "docker" "start" "-a" "042b12e6444807a50ea0ac0386ab58152cda8192c97af7a535ce46a28856fedf", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.104
[INFO] [stderr]    Compiling libc v0.2.178
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling zerocopy v0.8.31
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling find-msvc-tools v0.1.6
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling thiserror v2.0.17
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling aws-lc-rs v1.15.2
[INFO] [stderr]    Compiling simd-adler32 v0.3.8
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling zmij v1.0.7
[INFO] [stderr]    Compiling litemap v0.8.1
[INFO] [stderr]    Compiling rustls-pki-types v1.13.2
[INFO] [stderr]    Compiling writeable v0.6.2
[INFO] [stderr]    Compiling icu_normalizer_data v2.1.1
[INFO] [stderr]    Compiling icu_properties_data v2.1.2
[INFO] [stderr]    Compiling base64ct v1.8.1
[INFO] [stderr]    Compiling rustls v0.23.35
[INFO] [stderr]    Compiling serde_json v1.0.148
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling as-slice v0.2.1
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling av-scenechange v0.14.1
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]    Compiling built v0.8.0
[INFO] [stderr]    Compiling aligned v0.4.3
[INFO] [stderr]    Compiling deranged v0.5.5
[INFO] [stderr]    Compiling pem-rfc7468 v0.7.0
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling der v0.7.10
[INFO] [stderr]    Compiling nom v8.0.0
[INFO] [stderr]    Compiling core2 v0.4.0
[INFO] [stderr]    Compiling quick-error v2.0.1
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling pastey v0.1.1
[INFO] [stderr]    Compiling time-core v0.1.6
[INFO] [stderr]    Compiling y4m v0.8.0
[INFO] [stderr]    Compiling rav1e v0.8.1
[INFO] [stderr]    Compiling flate2 v1.1.5
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling bitstream-io v4.9.0
[INFO] [stderr]    Compiling maybe-rayon v0.1.1
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling weezl v0.1.12
[INFO] [stderr]    Compiling noop_proc_macro v0.3.0
[INFO] [stderr]    Compiling syn v2.0.112
[INFO] [stderr]    Compiling new_debug_unreachable v1.0.6
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]    Compiling data-encoding v2.9.0
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling socket2 v0.6.1
[INFO] [stderr]    Compiling cc v1.2.51
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling rand_core v0.9.3
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling spki v0.7.3
[INFO] [stderr]    Compiling time v0.3.44
[INFO] [stderr]    Compiling imgref v1.12.0
[INFO] [stderr]    Compiling num-bigint-dig v0.8.6
[INFO] [stderr]    Compiling zune-core v0.4.12
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling pkcs8 v0.10.2
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling loop9 v0.1.5
[INFO] [stderr]    Compiling avif-serialize v0.8.6
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling zune-jpeg v0.4.21
[INFO] [stderr]    Compiling zune-inflate v0.2.54
[INFO] [stderr]    Compiling pxfm v0.1.27
[INFO] [stderr]    Compiling rgb v0.8.52
[INFO] [stderr]    Compiling cmake v0.1.57
[INFO] [stderr]    Compiling virtue v0.0.18
[INFO] [stderr]    Compiling openssl-probe v0.2.0
[INFO] [stderr]    Compiling bytemuck v1.24.0
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling zune-core v0.5.0
[INFO] [stderr]    Compiling bit_field v0.10.3
[INFO] [stderr]    Compiling lebe v0.5.3
[INFO] [stderr]    Compiling qoi v0.4.1
[INFO] [stderr]    Compiling rustls-native-certs v0.8.3
[INFO] [stderr]    Compiling png v0.18.0
[INFO] [stderr]    Compiling rust-embed-utils v8.9.0
[INFO] [stderr]    Compiling gif v0.14.1
[INFO] [stderr]    Compiling zune-jpeg v0.5.8
[INFO] [stderr]    Compiling image-webp v0.2.4
[INFO] [stderr]    Compiling pkcs1 v0.7.5
[INFO] [stderr]    Compiling aws-lc-sys v0.35.0
[INFO] [stderr]    Compiling signature v2.2.0
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling bincode_derive v2.0.1
[INFO] [stderr]    Compiling yasna v0.5.2
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling pem v3.0.6
[INFO] [stderr]    Compiling matchit v0.8.4
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling iri-string v0.7.10
[INFO] [stderr]    Compiling ryu v1.0.22
[INFO] [stderr]    Compiling unty v0.0.4
[INFO] [stderr]    Compiling quick-protobuf v0.8.1
[INFO] [stderr]    Compiling toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling serde_spanned v1.0.4
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling toml_writer v1.0.6+spec-1.1.0
[INFO] [stderr]    Compiling uuid v1.19.0
[INFO] [stderr]    Compiling moxcms v0.7.11
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerocopy-derive v0.8.31
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]    Compiling profiling-procmacros v1.0.17
[INFO] [stderr]    Compiling fax_derive v0.2.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling toml_parser v1.0.6+spec-1.1.0
[INFO] [stderr]    Compiling profiling v1.0.17
[INFO] [stderr]    Compiling equator v0.4.2
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]    Compiling rust-embed-impl v8.9.0
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling aligned-vec v0.6.4
[INFO] [stderr]    Compiling toml v0.9.10+spec-1.1.0
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling v_frame v0.3.9
[INFO] [stderr]    Compiling fax v0.2.6
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]    Compiling av1-grain v0.2.5
[INFO] [stderr]    Compiling rust-embed v8.9.0
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling bytes v1.11.0
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling tiff v0.10.3
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling bincode v2.0.1
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling icu_normalizer v2.1.1
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling exr v1.74.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.22
[INFO] [stderr]    Compiling tokio v1.48.0
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling engineioxide-core v0.2.0
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling socketioxide-core v0.17.0
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling socketioxide-parser-common v0.17.0
[INFO] [stderr]    Compiling rsa v0.9.9
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling tungstenite v0.28.0
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling tracing-appender v0.2.4
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling ravif v0.12.0
[INFO] [stderr]    Compiling tokio-util v0.7.17
[INFO] [stderr]    Compiling tower v0.5.2
[INFO] [stderr]    Compiling tokio-tungstenite v0.28.0
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling image v0.25.9
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling h2 v0.4.13
[INFO] [stderr]    Compiling rustls-webpki v0.103.8
[INFO] [stderr]    Compiling rcgen v0.14.6
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling hyper-util v0.1.19
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling rustls-platform-verifier v0.6.2
[INFO] [stderr]    Compiling adb_client v3.0.0
[INFO] [stderr]    Compiling hyper-rustls v0.27.7
[INFO] [stderr]    Compiling engineioxide v0.17.2
[INFO] [stderr]    Compiling axum v0.8.8
[INFO] [stderr]    Compiling reqwest v0.13.1
[INFO] [stderr]    Compiling socketioxide v0.18.0
[INFO] [stderr]    Compiling scrcpy-rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/context/mod.rs:3:19
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub use context::{Context, IContext};
[INFO] [stdout]   |                   ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> src/agent/core/agent_group.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{debug, info, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ModelClient`
[INFO] [stdout]  --> src/agent/core/agent_group.rs:5:49
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::agent::core::traits::{Agent, Device, ModelClient};
[INFO] [stdout]   |                                                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]  --> src/agent/llm/client.rs:4:29
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{debug, error, info};
[INFO] [stdout]   |                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/agent/llm/parser.rs:2:22
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tracing::{debug, warn};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]  --> src/agent/llm/autoglm_client.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tokio::sync::RwLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `client::*`
[INFO] [stdout]  --> src/agent/llm/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use client::*;
[INFO] [stdout]   |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parser::*`
[INFO] [stdout]   --> src/agent/llm/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use parser::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `autoglm_client::*`
[INFO] [stdout]   --> src/agent/llm/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use autoglm_client::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prompts::*`
[INFO] [stdout]   --> src/agent/llm/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use prompts::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]  --> src/agent/executor/device_wrapper.rs:8:28
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{debug, info, error, warn};
[INFO] [stdout]   |                            ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]    --> src/agent/executor/device_wrapper.rs:579:36
[INFO] [stdout]     |
[INFO] [stdout] 579 |         use tracing::{info, debug, warn, error};
[INFO] [stdout]     |                                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::agent::core::traits::ParsedAction`
[INFO] [stdout]  --> src/agent/executor/handler.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::agent::core::traits::ParsedAction;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/agent/executor/handler.rs:6:34
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{debug, info, warn, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `retry::*`
[INFO] [stdout]  --> src/agent/executor/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use retry::*;
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `socketio::*`
[INFO] [stdout]  --> src/agent/api/mod.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub use socketio::*;
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `adb_client::server_device::ADBServerDevice`
[INFO] [stdout]   --> src/agent/pool/device_pool.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use adb_client::server_device::ADBServerDevice;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `device_entry::DeviceEntry`
[INFO] [stdout]   --> src/agent/pool/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use device_entry::DeviceEntry;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DevicePoolError`
[INFO] [stdout]   --> src/agent/pool/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     DevicePoolError,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/agent/logger.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Action`, `AgentError`, `AgentGroupConfig`, `AgentGroupEvent`, `AgentGroup`, `AgentRuntime`, `AgentState`, `Agent`, `Device`, `ModelClient`, and `agent::PhoneAgent`
[INFO] [stdout]   --> src/agent/mod.rs:18:14
[INFO] [stdout]    |
[INFO] [stdout] 18 |     traits::{Device, Action, Agent, ModelClient, AgentError},
[INFO] [stdout]    |              ^^^^^^  ^^^^^^  ^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 19 |     state::{AgentConfig, AgentState, AgentRuntime},
[INFO] [stdout]    |                          ^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 20 |     agent::PhoneAgent,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     agent_group::{AgentGroup, AgentGroupConfig, AgentGroupEvent},
[INFO] [stdout]    |                   ^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ActionEnum`, `BackAction`, `DoubleTapAction`, `FinishAction`, `HomeAction`, `LaunchAction`, `LongPressAction`, `NotificationAction`, `PressKeyAction`, `RecentAction`, `ScreenshotAction`, `ScrollAction`, `SwipeAction`, `TapAction`, `TypeAction`, and `WaitAction`
[INFO] [stdout]   --> src/agent/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     ActionEnum, TapAction, LongPressAction, DoubleTapAction, SwipeAction, ScrollAction,
[INFO] [stdout]    |     ^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 26 |     TypeAction, PressKeyAction, BackAction, HomeAction, RecentAction, NotificationAction,
[INFO] [stdout]    |     ^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 27 |     LaunchAction, WaitAction, ScreenshotAction, FinishAction,
[INFO] [stdout]    |     ^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `create_model_client`
[INFO] [stdout]   --> src/agent/mod.rs:29:28
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use llm::{ModelConfig, create_model_client};
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ActionHandler` and `ScrcpyDeviceWrapper`
[INFO] [stdout]   --> src/agent/mod.rs:30:20
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub use executor::{ScrcpyDeviceWrapper, ActionHandler};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ConversationContext` and `ShortTermMemory`
[INFO] [stdout]   --> src/agent/mod.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use context::{ConversationContext, ShortTermMemory};
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FullAgentConfig`
[INFO] [stdout]   --> src/agent/mod.rs:32:18
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub use config::{FullAgentConfig};
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DevicePoolEvent` and `DeviceStatus`
[INFO] [stdout]   --> src/agent/mod.rs:33:46
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub use pool::{DevicePool, DevicePoolConfig, DevicePoolEvent, DeviceStatus};
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `screenshot_duration`
[INFO] [stdout]    --> src/agent/core/agent.rs:182:17
[INFO] [stdout]     |
[INFO] [stdout] 182 |             let screenshot_duration = screenshot_start.elapsed();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_screenshot_duration`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `messages_for_log`
[INFO] [stdout]    --> src/agent/core/agent.rs:189:17
[INFO] [stdout]     |
[INFO] [stdout] 189 |             let messages_for_log = current_messages.clone();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_messages_for_log`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query_duration`
[INFO] [stdout]    --> src/agent/core/agent.rs:205:17
[INFO] [stdout]     |
[INFO] [stdout] 205 |             let query_duration = query_start.elapsed();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_query_duration`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `finish_action`
[INFO] [stdout]    --> src/agent/core/agent.rs:228:25
[INFO] [stdout]     |
[INFO] [stdout] 228 |             if let Some(finish_action) = parsed_actions.iter().find(|a| a.action_type() == "finish") {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_finish_action`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `distance_y`
[INFO] [stdout]    --> src/agent/actions/swipe.rs:117:13
[INFO] [stdout]     |
[INFO] [stdout] 117 |         let distance_y = (height * self.distance_pct / 100) as u32;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_distance_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `distance_x`
[INFO] [stdout]    --> src/agent/actions/swipe.rs:118:13
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let distance_x = (width * self.distance_pct / 100) as u32;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_distance_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device`
[INFO] [stdout]    --> src/agent/actions/system.rs:228:29
[INFO] [stdout]     |
[INFO] [stdout] 228 |     async fn execute(&self, device: &dyn Device) -> Result<ActionResult, AppError> {
[INFO] [stdout]     |                             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_device`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `task`
[INFO] [stdout]    --> src/agent/core/agent.rs:432:21
[INFO] [stdout]     |
[INFO] [stdout] 432 |                 let task = self.runtime.current_task.read().await.clone().unwrap_or_default();
[INFO] [stdout]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `thinking`
[INFO] [stdout]    --> src/agent/llm/autoglm_client.rs:562:14
[INFO] [stdout]     |
[INFO] [stdout] 562 |         let (thinking, parsed_actions) = self.parse_response(&content);
[INFO] [stdout]     |              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_thinking`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `step_number`
[INFO] [stdout]   --> src/agent/logger.rs:92:35
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn save_screenshot(&self, step_number: usize, screenshot_base64: &str) -> Result<String, std::io::Error> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_step_number`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_agent_group` and `get_device_pool` are never used
[INFO] [stdout]   --> src/context/context.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub trait IContext: Send + Sync {
[INFO] [stdout]    |           -------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 54 |     fn get_agent_group(&self) -> &RwLock<Option<Arc<AgentGroup>>>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 55 |     fn get_device_pool(&self) -> &RwLock<Option<Arc<DevicePool>>>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `agent_group` is never read
[INFO] [stdout]   --> src/context/context.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct Context {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 62 |     agent_group: RwLock<Option<Arc<AgentGroup>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_agent_group` is never used
[INFO] [stdout]   --> src/context/context.rs:78:18
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl Context {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub async fn set_agent_group(&self, group: Arc<AgentGroup>) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `serial`, `name`, `is_connected`, and `current_app` are never used
[INFO] [stdout]   --> src/agent/core/traits.rs:8:8
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait Device: Send + Sync {
[INFO] [stdout]    |           ------ methods in this trait
[INFO] [stdout]  7 |     /// 获取设备序列号
[INFO] [stdout]  8 |     fn serial(&self) -> &str;
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 11 |     fn name(&self) -> &str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     async fn is_connected(&self) -> bool;
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     async fn current_app(&self) -> Result<String, AppError>;
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_reversible` and `estimated_duration` are never used
[INFO] [stdout]   --> src/agent/core/traits.rs:81:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub trait Action: Send + Sync + std::fmt::Debug {
[INFO] [stdout]    |           ------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 81 |     fn is_reversible(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     fn estimated_duration(&self) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `InvalidText` is never constructed
[INFO] [stdout]    --> src/agent/core/traits.rs:133:5
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub enum ActionError {
[INFO] [stdout]     |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 133 |     InvalidText(String),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ActionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/agent/core/traits.rs:146:5
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub enum AgentError {
[INFO] [stdout]     |          ---------- variants in this enum
[INFO] [stdout] 145 |     #[error("Agent 未找到: {0}")]
[INFO] [stdout] 146 |     NotFound(String),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     TimeoutError(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     NotRunning,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     MaxStepsExceeded(usize),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     ExecutionTimeout(u64),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     TaskFailed(String),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     InvalidStateTransition(String, String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     RecoveryFailed(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AgentError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `pause`, `resume`, `status`, `history`, and `feedback` are never used
[INFO] [stdout]    --> src/agent/core/traits.rs:192:14
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub trait Agent: Send + Sync {
[INFO] [stdout]     |           ----- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 192 |     async fn pause(&self) -> Result<(), AppError>;
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     async fn resume(&self) -> Result<(), AppError>;
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     async fn status(&self) -> AgentStatus;
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     async fn history(&self) -> Vec<ExecutionStep>;
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     async fn feedback(&self, feedback: AgentFeedback) -> Result<(), AppError>;
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AgentStatus` is never used
[INFO] [stdout]    --> src/agent/core/traits.rs:209:10
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub enum AgentStatus {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AgentFeedback` is never used
[INFO] [stdout]    --> src/agent/core/traits.rs:235:10
[INFO] [stdout]     |
[INFO] [stdout] 235 | pub enum AgentFeedback {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `info` is never used
[INFO] [stdout]    --> src/agent/core/traits.rs:260:8
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub trait ModelClient: Send + Sync {
[INFO] [stdout]     |           ----------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 260 |     fn info(&self) -> ModelInfo;
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `confidence` and `tokens_used` are never read
[INFO] [stdout]    --> src/agent/core/traits.rs:284:9
[INFO] [stdout]     |
[INFO] [stdout] 281 | pub struct ModelResponse {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub confidence: f32,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 285 |     pub reasoning: Option<String>,
[INFO] [stdout] 286 |     pub tokens_used: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ModelResponse` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Timeout` is never constructed
[INFO] [stdout]    --> src/agent/core/traits.rs:316:5
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub enum ModelError {
[INFO] [stdout]     |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 316 |     Timeout,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ModelError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ModelInfo` is never constructed
[INFO] [stdout]    --> src/agent/core/traits.rs:321:12
[INFO] [stdout]     |
[INFO] [stdout] 321 | pub struct ModelInfo {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `AgentCreated`, `AgentStarted`, `AgentCompleted`, `AgentFailed`, `AgentStopped`, and `Custom` are never constructed
[INFO] [stdout]   --> src/agent/core/agent_group.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum AgentGroupEvent {
[INFO] [stdout]    |          --------------- variants in this enum
[INFO] [stdout] 16 |     /// Agent 创建
[INFO] [stdout] 17 |     AgentCreated { agent_id: String, device_serial: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     AgentStarted { agent_id: String, task: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     AgentCompleted { agent_id: String, result: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     AgentFailed { agent_id: String, error: String },
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     AgentStopped { agent_id: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     Custom { agent_id: String, event_type: String, data: String },
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AgentGroupEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `max_concurrent_agents`, `task_queue_size`, and `enable_event_broadcast` are never read
[INFO] [stdout]   --> src/agent/core/agent_group.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct AgentGroupConfig {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 38 |     /// 最大并发 Agent 数量
[INFO] [stdout] 39 |     pub max_concurrent_agents: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub task_queue_size: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub enable_event_broadcast: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AgentGroupConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `agents`, `devices`, `event_tx`, `config`, and `model_config` are never read
[INFO] [stdout]   --> src/agent/core/agent_group.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct AgentGroup {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 60 |     id: String,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 61 |     agents: RwLock<HashMap<String, Arc<PhoneAgent>>>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 62 |     devices: RwLock<HashMap<String, Arc<dyn Device>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 63 |     event_tx: broadcast::Sender<AgentGroupEvent>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 64 |     config: AgentGroupConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 65 |     model_config: ModelConfig,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/agent/core/agent_group.rs:70:12
[INFO] [stdout]     |
[INFO] [stdout]  68 | impl AgentGroup {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  69 |     /// 创建新的 Agent 组
[INFO] [stdout]  70 |     pub fn new(config: AgentGroupConfig, model_config: ModelConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub fn id(&self) -> &str {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub async fn register_device(&self, device: Arc<dyn Device>) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn unregister_device(&self, serial: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub async fn get_devices(&self) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub async fn create_agent(
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub async fn get_agent(&self, agent_id: &str) -> Option<Arc<PhoneAgent>> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub async fn start_agent(&self, agent_id: &str, task: String) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub async fn stop_agent(&self, agent_id: &str) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub async fn remove_agent(&self, agent_id: &str) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub async fn list_agents(&self) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub async fn active_agent_count(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub async fn broadcast_task(&self, task: String) -> Result<Vec<String>, AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn subscribe_events(&self) -> broadcast::Receiver<AgentGroupEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_json` is never used
[INFO] [stdout]    --> src/agent/actions/base.rs:501:12
[INFO] [stdout]     |
[INFO] [stdout] 499 | impl ActionEnum {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 500 |     /// 从 JSON 创建 ActionEnum
[INFO] [stdout] 501 |     pub fn from_json(action_type: &str, params: serde_json::Value) -> Result<Self, serde_json::Error> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_app_name` is never used
[INFO] [stdout]    --> src/agent/actions/system.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl LaunchAction {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 106 |     /// 从应用名称创建 LaunchAction
[INFO] [stdout] 107 |     pub fn from_app_name(app_name: &str) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `from_env`, `local`, and `azure` are never used
[INFO] [stdout]    --> src/agent/llm/types.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 156 | impl ModelConfig {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] 157 |     /// 从环境变量加载配置
[INFO] [stdout] 158 |     pub fn from_env() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn local(base_url: String, model_name: String) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub fn azure(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_coordinates` is never used
[INFO] [stdout]    --> src/agent/llm/parser.rs:426:4
[INFO] [stdout]     |
[INFO] [stdout] 426 | fn extract_coordinates(text: &str) -> Option<(u32, u32)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_launch_app` is never used
[INFO] [stdout]    --> src/agent/llm/parser.rs:438:4
[INFO] [stdout]     |
[INFO] [stdout] 438 | fn extract_launch_app(text: &str) -> Option<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_text_after` is never used
[INFO] [stdout]    --> src/agent/llm/parser.rs:462:4
[INFO] [stdout]     |
[INFO] [stdout] 462 | fn extract_text_after(text: &str, keywords: &[&str]) -> Option<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_duration` is never used
[INFO] [stdout]    --> src/agent/llm/parser.rs:483:4
[INFO] [stdout]     |
[INFO] [stdout] 483 | fn extract_duration(text: &str) -> Option<u32> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_autoglm_client` is never used
[INFO] [stdout]   --> src/agent/llm/providers.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn create_autoglm_client(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `StreamEvent` is never used
[INFO] [stdout]   --> src/agent/llm/autoglm_client.rs:20:6
[INFO] [stdout]    |
[INFO] [stdout] 20 | enum StreamEvent {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerformanceMetrics` is never constructed
[INFO] [stdout]   --> src/agent/llm/autoglm_client.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct PerformanceMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `send_stream_request` is never used
[INFO] [stdout]    --> src/agent/llm/autoglm_client.rs:117:14
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl AutoGLMClient {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 117 |     async fn send_stream_request(&self, request: ChatRequest) -> Result<String, ModelError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `scrcpy_connect`, and `adb_device` are never read
[INFO] [stdout]   --> src/agent/executor/device_wrapper.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ScrcpyDeviceWrapper {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 13 |     serial: String,
[INFO] [stdout] 14 |     name: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 15 |     scrcpy_connect: Arc<ScrcpyConnect>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 16 |     adb_device: Arc<ADBServerDevice>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `parse_screen_size` is never used
[INFO] [stdout]    --> src/agent/executor/device_wrapper.rs:141:8
[INFO] [stdout]     |
[INFO] [stdout]  23 | impl ScrcpyDeviceWrapper {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 141 |     fn parse_screen_size(&self, output: &str) -> Result<(u32, u32), AppError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_max_retries`, `with_retry_delay`, `execute_parsed_action`, and `convert_action_params` are never used
[INFO] [stdout]    --> src/agent/executor/handler.rs:26:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl ActionHandler {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub fn with_max_retries(mut self, max_retries: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn with_retry_delay(mut self, delay_ms: u64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub async fn execute_parsed_action(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     fn convert_action_params(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_uninitialized` is never used
[INFO] [stdout]    --> src/agent/executor/handler.rs:354:8
[INFO] [stdout]     |
[INFO] [stdout] 352 | impl ActionHandler {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 353 |     /// 用于测试的构造函数（不需要 device）
[INFO] [stdout] 354 |     fn new_uninitialized() -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RetryStrategy` is never used
[INFO] [stdout]  --> src/agent/executor/retry.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum RetryStrategy {
[INFO] [stdout]   |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `next_delay`, `exponential`, and `fixed` are never used
[INFO] [stdout]   --> src/agent/executor/retry.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl RetryStrategy {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 35 |     /// 获取下一次重试的延迟时间
[INFO] [stdout] 36 |     pub fn next_delay(&self, attempt: u32) -> Option<Duration> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn exponential(initial_delay_ms: u64, max_delay_ms: u64, multiplier: f64) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn fixed(delay_ms: u64) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RetryConfig` is never constructed
[INFO] [stdout]   --> src/agent/executor/retry.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct RetryConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_retryable_errors`, `is_retryable`, and `execute` are never used
[INFO] [stdout]    --> src/agent/executor/retry.rs:93:12
[INFO] [stdout]     |
[INFO] [stdout]  91 | impl RetryConfig {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  92 |     /// 创建新的重试配置
[INFO] [stdout]  93 |     pub fn new(max_attempts: u32, strategy: RetryStrategy) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn with_retryable_errors(mut self, errors: Vec<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn is_retryable(&self, error_message: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub async fn execute<F, Fut, T, E>(&self, mut operation: F) -> Result<T, E>
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_messages`, `get_recent_messages`, `clear`, `len`, and `build_prompt` are never used
[INFO] [stdout]   --> src/agent/context/conversation.rs:63:18
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl ConversationContext {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub async fn get_messages(&self) -> Vec<ConversationMessage> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub async fn get_recent_messages(&self, n: usize) -> Vec<ConversationMessage> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub async fn clear(&self) {
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub async fn len(&self) -> usize {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub async fn build_prompt(&self, task: &str) -> String {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_expired` is never used
[INFO] [stdout]   --> src/agent/context/memory.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl MemoryEntry {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 17 |     /// 检查是否过期
[INFO] [stdout] 18 |     pub fn is_expired(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `entries` and `default_ttl_seconds` are never read
[INFO] [stdout]   --> src/agent/context/memory.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct ShortTermMemory {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 29 |     entries: Arc<RwLock<HashMap<String, MemoryEntry>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 30 |     default_ttl_seconds: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/agent/context/memory.rs:43:18
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl ShortTermMemory {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub async fn set(&self, key: String, value: String) {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub async fn set_with_ttl(&self, key: String, value: String, ttl_seconds: u64) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub async fn get(&self, key: &str) -> Option<String> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub async fn remove(&self, key: &str) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub async fn clear(&self) {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn cleanup_expired(&self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub async fn get_all(&self) -> HashMap<String, String> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FullAgentConfig` is never constructed
[INFO] [stdout]  --> src/agent/config/agent_config.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct FullAgentConfig {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_file`, `from_file_with_env`, `save_to_file`, `default_config`, and `with_local_model` are never used
[INFO] [stdout]   --> src/agent/config/agent_config.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl FullAgentConfig {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 24 |     /// 从 TOML 文件加载配置
[INFO] [stdout] 25 |     pub fn from_file<P: AsRef<Path>>(path: P) -> Result<Self, ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn from_file_with_env<P: AsRef<Path>>(path: P) -> Result<Self, ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn save_to_file<P: AsRef<Path>>(&self, path: P) -> Result<(), ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn default_config() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn with_local_model(base_url: String, model_name: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConfigError` is never used
[INFO] [stdout]   --> src/agent/config/agent_config.rs:78:10
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub enum ConfigError {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `register_agent_handlers` is never used
[INFO] [stdout]  --> src/agent/api/socketio.rs:8:14
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub async fn register_agent_handlers(socket: SocketRef, context: Arc<dyn IContext>) {
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_agent_start_with_pool` is never used
[INFO] [stdout]   --> src/agent/api/socketio.rs:70:10
[INFO] [stdout]    |
[INFO] [stdout] 70 | async fn handle_agent_start_with_pool(request: AgentStartRequest, pool: Arc<crate::agent::pool::DevicePool>) -> Result<serde_json::V...
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_get_devices_with_pool` is never used
[INFO] [stdout]   --> src/agent/api/socketio.rs:79:10
[INFO] [stdout]    |
[INFO] [stdout] 79 | async fn handle_get_devices_with_pool(pool: Arc<crate::agent::pool::DevicePool>) -> Result<serde_json::Value, crate::error::AppError> {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AgentStartRequest` is never constructed
[INFO] [stdout]   --> src/agent/api/socketio.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct AgentStartRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/agent/pool/device_pool.rs:65:12
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl DevicePool {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn subscribe_events(&self) -> broadcast::Receiver<DevicePoolEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub async fn unregister_device(&self, serial: &str) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub async fn disconnect_device(&self, serial: &str) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub async fn get_all_devices_status(&self) -> Vec<(String, DeviceStatus)> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 324 |     pub async fn list_devices(&self) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub async fn get_device_info(&self, serial: &str) -> Option<crate::agent::pool::types::DeviceInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub async fn cleanup_idle_devices(&self) -> Result<usize, AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 374 |     pub async fn health_check(&self) -> Result<HashMap<String, bool>, AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     pub async fn mark_task_completed(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 449 |     pub async fn mark_task_failed(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `created_at` is never read
[INFO] [stdout]   --> src/agent/pool/device_entry.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct DeviceEntry {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub created_at: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_idle`, `is_connected`, and `is_busy` are never used
[INFO] [stdout]   --> src/agent/pool/device_entry.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl DeviceEntry {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn is_idle(&self, threshold_seconds: i64) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn is_connected(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn is_busy(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `serial` is never read
[INFO] [stdout]   --> src/agent/pool/types.rs:74:24
[INFO] [stdout]    |
[INFO] [stdout] 74 |     DeviceRegistered { serial: String },
[INFO] [stdout]    |     ----------------   ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `serial` is never read
[INFO] [stdout]   --> src/agent/pool/types.rs:77:23
[INFO] [stdout]    |
[INFO] [stdout] 77 |     DeviceConnected { serial: String },
[INFO] [stdout]    |     ---------------   ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `serial` and `agent_id` are never read
[INFO] [stdout]   --> src/agent/pool/types.rs:83:20
[INFO] [stdout]    |
[INFO] [stdout] 83 |     AgentCreated { serial: String, agent_id: String },
[INFO] [stdout]    |     ------------   ^^^^^^          ^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `serial` and `agent_id` are never read
[INFO] [stdout]   --> src/agent/pool/types.rs:86:22
[INFO] [stdout]    |
[INFO] [stdout] 86 |     AgentDestroyed { serial: String, agent_id: String },
[INFO] [stdout]    |     --------------   ^^^^^^          ^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `serial` and `task` are never read
[INFO] [stdout]   --> src/agent/pool/types.rs:92:19
[INFO] [stdout]    |
[INFO] [stdout] 92 |     TaskStarted { serial: String, task: String },
[INFO] [stdout]    |     -----------   ^^^^^^          ^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `DeviceDisconnected`, `DeviceIdle`, `TaskCompleted`, `TaskFailed`, and `Error` are never constructed
[INFO] [stdout]    --> src/agent/pool/types.rs:80:5
[INFO] [stdout]     |
[INFO] [stdout]  72 | pub enum DevicePoolEvent {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  80 |     DeviceDisconnected { serial: String },
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     DeviceIdle { serial: String, idle_seconds: u64 },
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     TaskCompleted { serial: String, result: String },
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     TaskFailed { serial: String, error: String },
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     Error { serial: String, error: String },
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DevicePoolError` is never used
[INFO] [stdout]    --> src/agent/pool/types.rs:106:10
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub enum DevicePoolError {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `io` is never read
[INFO] [stdout]   --> src/agent/socket_server.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct AgentSocketServer {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 20 |     io: Arc<SocketIo>,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `io` and `port` are never used
[INFO] [stdout]   --> src/agent/socket_server.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl AgentSocketServer {
[INFO] [stdout]    | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn io(&self) -> &Arc<SocketIo> {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn port(&self) -> u16 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 03s
[INFO] running `Command { std: "docker" "inspect" "042b12e6444807a50ea0ac0386ab58152cda8192c97af7a535ce46a28856fedf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "042b12e6444807a50ea0ac0386ab58152cda8192c97af7a535ce46a28856fedf", kill_on_drop: false }`
[INFO] [stdout] 042b12e6444807a50ea0ac0386ab58152cda8192c97af7a535ce46a28856fedf
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] cdce4d18c5182730813a34ac152546dd51140b30211691c4fc4f1f0ddcb4e151
[INFO] running `Command { std: "docker" "start" "-a" "cdce4d18c5182730813a34ac152546dd51140b30211691c4fc4f1f0ddcb4e151", kill_on_drop: false }`
[INFO] [stderr]    Compiling scrcpy-rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/context/mod.rs:3:19
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub use context::{Context, IContext};
[INFO] [stdout]   |                   ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> src/agent/core/agent_group.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{debug, info, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ModelClient`
[INFO] [stdout]  --> src/agent/core/agent_group.rs:5:49
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::agent::core::traits::{Agent, Device, ModelClient};
[INFO] [stdout]   |                                                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]  --> src/agent/llm/client.rs:4:29
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{debug, error, info};
[INFO] [stdout]   |                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/agent/llm/parser.rs:2:22
[INFO] [stdout]   |
[INFO] [stdout] 2 | use tracing::{debug, warn};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]  --> src/agent/llm/autoglm_client.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tokio::sync::RwLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `client::*`
[INFO] [stdout]  --> src/agent/llm/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use client::*;
[INFO] [stdout]   |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parser::*`
[INFO] [stdout]   --> src/agent/llm/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use parser::*;
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `autoglm_client::*`
[INFO] [stdout]   --> src/agent/llm/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use autoglm_client::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prompts::*`
[INFO] [stdout]   --> src/agent/llm/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use prompts::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]  --> src/agent/executor/device_wrapper.rs:8:28
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{debug, info, error, warn};
[INFO] [stdout]   |                            ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]    --> src/agent/executor/device_wrapper.rs:579:36
[INFO] [stdout]     |
[INFO] [stdout] 579 |         use tracing::{info, debug, warn, error};
[INFO] [stdout]     |                                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::agent::core::traits::ParsedAction`
[INFO] [stdout]  --> src/agent/executor/handler.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::agent::core::traits::ParsedAction;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/agent/executor/handler.rs:6:34
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{debug, info, warn, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::agent::actions::TapAction`
[INFO] [stdout]    --> src/agent/executor/handler.rs:261:9
[INFO] [stdout]     |
[INFO] [stdout] 261 |     use crate::agent::actions::TapAction;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::agent::core::traits::ParsedAction`
[INFO] [stdout]    --> src/agent/executor/handler.rs:262:9
[INFO] [stdout]     |
[INFO] [stdout] 262 |     use crate::agent::core::traits::ParsedAction;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `retry::*`
[INFO] [stdout]  --> src/agent/executor/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use retry::*;
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `socketio::*`
[INFO] [stdout]  --> src/agent/api/mod.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub use socketio::*;
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `adb_client::server_device::ADBServerDevice`
[INFO] [stdout]   --> src/agent/pool/device_pool.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use adb_client::server_device::ADBServerDevice;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `device_entry::DeviceEntry`
[INFO] [stdout]   --> src/agent/pool/mod.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use device_entry::DeviceEntry;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DevicePoolError`
[INFO] [stdout]   --> src/agent/pool/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     DevicePoolError,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/agent/logger.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Action`, `AgentError`, `AgentGroupConfig`, `AgentGroupEvent`, `AgentGroup`, `AgentRuntime`, `AgentState`, `Agent`, `Device`, `ModelClient`, and `agent::PhoneAgent`
[INFO] [stdout]   --> src/agent/mod.rs:18:14
[INFO] [stdout]    |
[INFO] [stdout] 18 |     traits::{Device, Action, Agent, ModelClient, AgentError},
[INFO] [stdout]    |              ^^^^^^  ^^^^^^  ^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 19 |     state::{AgentConfig, AgentState, AgentRuntime},
[INFO] [stdout]    |                          ^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 20 |     agent::PhoneAgent,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     agent_group::{AgentGroup, AgentGroupConfig, AgentGroupEvent},
[INFO] [stdout]    |                   ^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ActionEnum`, `BackAction`, `DoubleTapAction`, `FinishAction`, `HomeAction`, `LaunchAction`, `LongPressAction`, `NotificationAction`, `PressKeyAction`, `RecentAction`, `ScreenshotAction`, `ScrollAction`, `SwipeAction`, `TapAction`, `TypeAction`, and `WaitAction`
[INFO] [stdout]   --> src/agent/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     ActionEnum, TapAction, LongPressAction, DoubleTapAction, SwipeAction, ScrollAction,
[INFO] [stdout]    |     ^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 26 |     TypeAction, PressKeyAction, BackAction, HomeAction, RecentAction, NotificationAction,
[INFO] [stdout]    |     ^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 27 |     LaunchAction, WaitAction, ScreenshotAction, FinishAction,
[INFO] [stdout]    |     ^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `create_model_client`
[INFO] [stdout]   --> src/agent/mod.rs:29:28
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use llm::{ModelConfig, create_model_client};
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ActionHandler` and `ScrcpyDeviceWrapper`
[INFO] [stdout]   --> src/agent/mod.rs:30:20
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub use executor::{ScrcpyDeviceWrapper, ActionHandler};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ConversationContext` and `ShortTermMemory`
[INFO] [stdout]   --> src/agent/mod.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use context::{ConversationContext, ShortTermMemory};
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FullAgentConfig`
[INFO] [stdout]   --> src/agent/mod.rs:32:18
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub use config::{FullAgentConfig};
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DevicePoolEvent` and `DeviceStatus`
[INFO] [stdout]   --> src/agent/mod.rs:33:46
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub use pool::{DevicePool, DevicePoolConfig, DevicePoolEvent, DeviceStatus};
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `screenshot_duration`
[INFO] [stdout]    --> src/agent/core/agent.rs:182:17
[INFO] [stdout]     |
[INFO] [stdout] 182 |             let screenshot_duration = screenshot_start.elapsed();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_screenshot_duration`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `messages_for_log`
[INFO] [stdout]    --> src/agent/core/agent.rs:189:17
[INFO] [stdout]     |
[INFO] [stdout] 189 |             let messages_for_log = current_messages.clone();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_messages_for_log`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `query_duration`
[INFO] [stdout]    --> src/agent/core/agent.rs:205:17
[INFO] [stdout]     |
[INFO] [stdout] 205 |             let query_duration = query_start.elapsed();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_query_duration`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `finish_action`
[INFO] [stdout]    --> src/agent/core/agent.rs:228:25
[INFO] [stdout]     |
[INFO] [stdout] 228 |             if let Some(finish_action) = parsed_actions.iter().find(|a| a.action_type() == "finish") {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_finish_action`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `distance_y`
[INFO] [stdout]    --> src/agent/actions/swipe.rs:117:13
[INFO] [stdout]     |
[INFO] [stdout] 117 |         let distance_y = (height * self.distance_pct / 100) as u32;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_distance_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `distance_x`
[INFO] [stdout]    --> src/agent/actions/swipe.rs:118:13
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let distance_x = (width * self.distance_pct / 100) as u32;
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_distance_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `device`
[INFO] [stdout]    --> src/agent/actions/system.rs:228:29
[INFO] [stdout]     |
[INFO] [stdout] 228 |     async fn execute(&self, device: &dyn Device) -> Result<ActionResult, AppError> {
[INFO] [stdout]     |                             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_device`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `task`
[INFO] [stdout]    --> src/agent/core/agent.rs:432:21
[INFO] [stdout]     |
[INFO] [stdout] 432 |                 let task = self.runtime.current_task.read().await.clone().unwrap_or_default();
[INFO] [stdout]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `thinking`
[INFO] [stdout]    --> src/agent/llm/autoglm_client.rs:562:14
[INFO] [stdout]     |
[INFO] [stdout] 562 |         let (thinking, parsed_actions) = self.parse_response(&content);
[INFO] [stdout]     |              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_thinking`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `step_number`
[INFO] [stdout]   --> src/agent/logger.rs:92:35
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub fn save_screenshot(&self, step_number: usize, screenshot_base64: &str) -> Result<String, std::io::Error> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_step_number`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_agent_group` and `get_device_pool` are never used
[INFO] [stdout]   --> src/context/context.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub trait IContext: Send + Sync {
[INFO] [stdout]    |           -------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 54 |     fn get_agent_group(&self) -> &RwLock<Option<Arc<AgentGroup>>>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 55 |     fn get_device_pool(&self) -> &RwLock<Option<Arc<DevicePool>>>;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `agent_group` is never read
[INFO] [stdout]   --> src/context/context.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct Context {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 62 |     agent_group: RwLock<Option<Arc<AgentGroup>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_agent_group` is never used
[INFO] [stdout]   --> src/context/context.rs:78:18
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl Context {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub async fn set_agent_group(&self, group: Arc<AgentGroup>) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `serial`, `name`, `is_connected`, and `current_app` are never used
[INFO] [stdout]   --> src/agent/core/traits.rs:8:8
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub trait Device: Send + Sync {
[INFO] [stdout]    |           ------ methods in this trait
[INFO] [stdout]  7 |     /// 获取设备序列号
[INFO] [stdout]  8 |     fn serial(&self) -> &str;
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 11 |     fn name(&self) -> &str;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     async fn is_connected(&self) -> bool;
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     async fn current_app(&self) -> Result<String, AppError>;
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_reversible` and `estimated_duration` are never used
[INFO] [stdout]   --> src/agent/core/traits.rs:81:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub trait Action: Send + Sync + std::fmt::Debug {
[INFO] [stdout]    |           ------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 81 |     fn is_reversible(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     fn estimated_duration(&self) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `InvalidText` is never constructed
[INFO] [stdout]    --> src/agent/core/traits.rs:133:5
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub enum ActionError {
[INFO] [stdout]     |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 133 |     InvalidText(String),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ActionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/agent/core/traits.rs:146:5
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub enum AgentError {
[INFO] [stdout]     |          ---------- variants in this enum
[INFO] [stdout] 145 |     #[error("Agent 未找到: {0}")]
[INFO] [stdout] 146 |     NotFound(String),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     TimeoutError(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     NotRunning,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     MaxStepsExceeded(usize),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     ExecutionTimeout(u64),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     TaskFailed(String),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     InvalidStateTransition(String, String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     RecoveryFailed(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AgentError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `pause`, `resume`, `history`, and `feedback` are never used
[INFO] [stdout]    --> src/agent/core/traits.rs:192:14
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub trait Agent: Send + Sync {
[INFO] [stdout]     |           ----- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 192 |     async fn pause(&self) -> Result<(), AppError>;
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     async fn resume(&self) -> Result<(), AppError>;
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     async fn history(&self) -> Vec<ExecutionStep>;
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     async fn feedback(&self, feedback: AgentFeedback) -> Result<(), AppError>;
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AgentFeedback` is never used
[INFO] [stdout]    --> src/agent/core/traits.rs:235:10
[INFO] [stdout]     |
[INFO] [stdout] 235 | pub enum AgentFeedback {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `info` is never used
[INFO] [stdout]    --> src/agent/core/traits.rs:260:8
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub trait ModelClient: Send + Sync {
[INFO] [stdout]     |           ----------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 260 |     fn info(&self) -> ModelInfo;
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `confidence` and `tokens_used` are never read
[INFO] [stdout]    --> src/agent/core/traits.rs:284:9
[INFO] [stdout]     |
[INFO] [stdout] 281 | pub struct ModelResponse {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub confidence: f32,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 285 |     pub reasoning: Option<String>,
[INFO] [stdout] 286 |     pub tokens_used: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ModelResponse` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Timeout` is never constructed
[INFO] [stdout]    --> src/agent/core/traits.rs:316:5
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub enum ModelError {
[INFO] [stdout]     |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 316 |     Timeout,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ModelError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ModelInfo` is never constructed
[INFO] [stdout]    --> src/agent/core/traits.rs:321:12
[INFO] [stdout]     |
[INFO] [stdout] 321 | pub struct ModelInfo {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `AgentCreated`, `AgentStarted`, `AgentCompleted`, `AgentFailed`, `AgentStopped`, and `Custom` are never constructed
[INFO] [stdout]   --> src/agent/core/agent_group.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum AgentGroupEvent {
[INFO] [stdout]    |          --------------- variants in this enum
[INFO] [stdout] 16 |     /// Agent 创建
[INFO] [stdout] 17 |     AgentCreated { agent_id: String, device_serial: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     AgentStarted { agent_id: String, task: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     AgentCompleted { agent_id: String, result: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     AgentFailed { agent_id: String, error: String },
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     AgentStopped { agent_id: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     Custom { agent_id: String, event_type: String, data: String },
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AgentGroupEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `max_concurrent_agents`, `task_queue_size`, and `enable_event_broadcast` are never read
[INFO] [stdout]   --> src/agent/core/agent_group.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct AgentGroupConfig {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 38 |     /// 最大并发 Agent 数量
[INFO] [stdout] 39 |     pub max_concurrent_agents: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub task_queue_size: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub enable_event_broadcast: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AgentGroupConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `devices`, `event_tx`, `config`, and `model_config` are never read
[INFO] [stdout]   --> src/agent/core/agent_group.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub struct AgentGroup {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 62 |     devices: RwLock<HashMap<String, Arc<dyn Device>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 63 |     event_tx: broadcast::Sender<AgentGroupEvent>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 64 |     config: AgentGroupConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 65 |     model_config: ModelConfig,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/agent/core/agent_group.rs:89:18
[INFO] [stdout]     |
[INFO] [stdout]  68 | impl AgentGroup {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub async fn register_device(&self, device: Arc<dyn Device>) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn unregister_device(&self, serial: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub async fn get_devices(&self) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub async fn create_agent(
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub async fn get_agent(&self, agent_id: &str) -> Option<Arc<PhoneAgent>> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub async fn start_agent(&self, agent_id: &str, task: String) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub async fn stop_agent(&self, agent_id: &str) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub async fn remove_agent(&self, agent_id: &str) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub async fn list_agents(&self) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub async fn broadcast_task(&self, task: String) -> Result<Vec<String>, AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn subscribe_events(&self) -> broadcast::Receiver<AgentGroupEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_json` is never used
[INFO] [stdout]    --> src/agent/actions/base.rs:501:12
[INFO] [stdout]     |
[INFO] [stdout] 499 | impl ActionEnum {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 500 |     /// 从 JSON 创建 ActionEnum
[INFO] [stdout] 501 |     pub fn from_json(action_type: &str, params: serde_json::Value) -> Result<Self, serde_json::Error> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_app_name` is never used
[INFO] [stdout]    --> src/agent/actions/system.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl LaunchAction {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 106 |     /// 从应用名称创建 LaunchAction
[INFO] [stdout] 107 |     pub fn from_app_name(app_name: &str) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `from_env` and `azure` are never used
[INFO] [stdout]    --> src/agent/llm/types.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 156 | impl ModelConfig {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] 157 |     /// 从环境变量加载配置
[INFO] [stdout] 158 |     pub fn from_env() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub fn azure(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_text_after` is never used
[INFO] [stdout]    --> src/agent/llm/parser.rs:462:4
[INFO] [stdout]     |
[INFO] [stdout] 462 | fn extract_text_after(text: &str, keywords: &[&str]) -> Option<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `StreamEvent` is never used
[INFO] [stdout]   --> src/agent/llm/autoglm_client.rs:20:6
[INFO] [stdout]    |
[INFO] [stdout] 20 | enum StreamEvent {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerformanceMetrics` is never constructed
[INFO] [stdout]   --> src/agent/llm/autoglm_client.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct PerformanceMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `send_stream_request` is never used
[INFO] [stdout]    --> src/agent/llm/autoglm_client.rs:117:14
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl AutoGLMClient {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 117 |     async fn send_stream_request(&self, request: ChatRequest) -> Result<String, ModelError> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `scrcpy_connect`, and `adb_device` are never read
[INFO] [stdout]   --> src/agent/executor/device_wrapper.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ScrcpyDeviceWrapper {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 13 |     serial: String,
[INFO] [stdout] 14 |     name: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 15 |     scrcpy_connect: Arc<ScrcpyConnect>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 16 |     adb_device: Arc<ADBServerDevice>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `parse_screen_size` is never used
[INFO] [stdout]    --> src/agent/executor/device_wrapper.rs:141:8
[INFO] [stdout]     |
[INFO] [stdout]  23 | impl ScrcpyDeviceWrapper {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 141 |     fn parse_screen_size(&self, output: &str) -> Result<(u32, u32), AppError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_max_retries`, `with_retry_delay`, and `execute_parsed_action` are never used
[INFO] [stdout]   --> src/agent/executor/handler.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl ActionHandler {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn with_max_retries(mut self, max_retries: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn with_retry_delay(mut self, delay_ms: u64) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     pub async fn execute_parsed_action(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `None` is never constructed
[INFO] [stdout]   --> src/agent/executor/retry.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub enum RetryStrategy {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 21 |     None,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RetryStrategy` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `with_retryable_errors` are never used
[INFO] [stdout]    --> src/agent/executor/retry.rs:93:12
[INFO] [stdout]     |
[INFO] [stdout]  91 | impl RetryConfig {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  92 |     /// 创建新的重试配置
[INFO] [stdout]  93 |     pub fn new(max_attempts: u32, strategy: RetryStrategy) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn with_retryable_errors(mut self, errors: Vec<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_messages`, `get_recent_messages`, `clear`, `len`, and `build_prompt` are never used
[INFO] [stdout]   --> src/agent/context/conversation.rs:63:18
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl ConversationContext {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub async fn get_messages(&self) -> Vec<ConversationMessage> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub async fn get_recent_messages(&self, n: usize) -> Vec<ConversationMessage> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub async fn clear(&self) {
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub async fn len(&self) -> usize {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub async fn build_prompt(&self, task: &str) -> String {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_with_ttl`, `remove`, `clear`, `cleanup_expired`, and `get_all` are never used
[INFO] [stdout]    --> src/agent/context/memory.rs:58:18
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl ShortTermMemory {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub async fn set_with_ttl(&self, key: String, value: String, ttl_seconds: u64) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub async fn remove(&self, key: &str) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub async fn clear(&self) {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn cleanup_expired(&self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub async fn get_all(&self) -> HashMap<String, String> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_file`, `from_file_with_env`, `save_to_file`, `default_config`, and `with_local_model` are never used
[INFO] [stdout]   --> src/agent/config/agent_config.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl FullAgentConfig {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 24 |     /// 从 TOML 文件加载配置
[INFO] [stdout] 25 |     pub fn from_file<P: AsRef<Path>>(path: P) -> Result<Self, ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn from_file_with_env<P: AsRef<Path>>(path: P) -> Result<Self, ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn save_to_file<P: AsRef<Path>>(&self, path: P) -> Result<(), ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn default_config() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn with_local_model(base_url: String, model_name: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConfigError` is never used
[INFO] [stdout]   --> src/agent/config/agent_config.rs:78:10
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub enum ConfigError {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `register_agent_handlers` is never used
[INFO] [stdout]  --> src/agent/api/socketio.rs:8:14
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub async fn register_agent_handlers(socket: SocketRef, context: Arc<dyn IContext>) {
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_agent_start_with_pool` is never used
[INFO] [stdout]   --> src/agent/api/socketio.rs:70:10
[INFO] [stdout]    |
[INFO] [stdout] 70 | async fn handle_agent_start_with_pool(request: AgentStartRequest, pool: Arc<crate::agent::pool::DevicePool>) -> Result<serde_json::V...
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_get_devices_with_pool` is never used
[INFO] [stdout]   --> src/agent/api/socketio.rs:79:10
[INFO] [stdout]    |
[INFO] [stdout] 79 | async fn handle_get_devices_with_pool(pool: Arc<crate::agent::pool::DevicePool>) -> Result<serde_json::Value, crate::error::AppError> {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AgentStartRequest` is never constructed
[INFO] [stdout]   --> src/agent/api/socketio.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct AgentStartRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/agent/pool/device_pool.rs:65:12
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl DevicePool {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn subscribe_events(&self) -> broadcast::Receiver<DevicePoolEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub async fn unregister_device(&self, serial: &str) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub async fn disconnect_device(&self, serial: &str) -> Result<(), AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub async fn get_all_devices_status(&self) -> Vec<(String, DeviceStatus)> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 324 |     pub async fn list_devices(&self) -> Vec<String> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub async fn get_device_info(&self, serial: &str) -> Option<crate::agent::pool::types::DeviceInfo> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub async fn cleanup_idle_devices(&self) -> Result<usize, AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 374 |     pub async fn health_check(&self) -> Result<HashMap<String, bool>, AppError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     pub async fn mark_task_completed(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 449 |     pub async fn mark_task_failed(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `created_at` is never read
[INFO] [stdout]   --> src/agent/pool/device_entry.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct DeviceEntry {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub created_at: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_idle`, `is_connected`, and `is_busy` are never used
[INFO] [stdout]   --> src/agent/pool/device_entry.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl DeviceEntry {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn is_idle(&self, threshold_seconds: i64) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn is_connected(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn is_busy(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `serial` is never read
[INFO] [stdout]   --> src/agent/pool/types.rs:74:24
[INFO] [stdout]    |
[INFO] [stdout] 74 |     DeviceRegistered { serial: String },
[INFO] [stdout]    |     ----------------   ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `serial` is never read
[INFO] [stdout]   --> src/agent/pool/types.rs:77:23
[INFO] [stdout]    |
[INFO] [stdout] 77 |     DeviceConnected { serial: String },
[INFO] [stdout]    |     ---------------   ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `serial` and `agent_id` are never read
[INFO] [stdout]   --> src/agent/pool/types.rs:83:20
[INFO] [stdout]    |
[INFO] [stdout] 83 |     AgentCreated { serial: String, agent_id: String },
[INFO] [stdout]    |     ------------   ^^^^^^          ^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `serial` and `agent_id` are never read
[INFO] [stdout]   --> src/agent/pool/types.rs:86:22
[INFO] [stdout]    |
[INFO] [stdout] 86 |     AgentDestroyed { serial: String, agent_id: String },
[INFO] [stdout]    |     --------------   ^^^^^^          ^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `serial` and `task` are never read
[INFO] [stdout]   --> src/agent/pool/types.rs:92:19
[INFO] [stdout]    |
[INFO] [stdout] 92 |     TaskStarted { serial: String, task: String },
[INFO] [stdout]    |     -----------   ^^^^^^          ^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `DeviceDisconnected`, `DeviceIdle`, `TaskCompleted`, `TaskFailed`, and `Error` are never constructed
[INFO] [stdout]    --> src/agent/pool/types.rs:80:5
[INFO] [stdout]     |
[INFO] [stdout]  72 | pub enum DevicePoolEvent {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  80 |     DeviceDisconnected { serial: String },
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     DeviceIdle { serial: String, idle_seconds: u64 },
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     TaskCompleted { serial: String, result: String },
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     TaskFailed { serial: String, error: String },
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     Error { serial: String, error: String },
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DevicePoolError` is never used
[INFO] [stdout]    --> src/agent/pool/types.rs:106:10
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub enum DevicePoolError {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `io` is never read
[INFO] [stdout]   --> src/agent/socket_server.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct AgentSocketServer {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 20 |     io: Arc<SocketIo>,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `io` and `port` are never used
[INFO] [stdout]   --> src/agent/socket_server.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl AgentSocketServer {
[INFO] [stdout]    | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn io(&self) -> &Arc<SocketIo> {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn port(&self) -> u16 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 17.08s
[INFO] running `Command { std: "docker" "inspect" "cdce4d18c5182730813a34ac152546dd51140b30211691c4fc4f1f0ddcb4e151", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cdce4d18c5182730813a34ac152546dd51140b30211691c4fc4f1f0ddcb4e151", kill_on_drop: false }`
[INFO] [stdout] cdce4d18c5182730813a34ac152546dd51140b30211691c4fc4f1f0ddcb4e151
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.94.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 61386cb9828e3dc71296f64fc49f6489b23cc54122754c2a534d013cd7233f66
[INFO] running `Command { std: "docker" "start" "-a" "61386cb9828e3dc71296f64fc49f6489b23cc54122754c2a534d013cd7233f66", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `Context`
[INFO] [stderr]  --> src/context/mod.rs:3:19
[INFO] [stderr]   |
[INFO] [stderr] 3 | pub use context::{Context, IContext};
[INFO] [stderr]   |                   ^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `debug`
[INFO] [stderr]  --> src/agent/core/agent_group.rs:4:15
[INFO] [stderr]   |
[INFO] [stderr] 4 | use tracing::{debug, info, warn};
[INFO] [stderr]   |               ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ModelClient`
[INFO] [stderr]  --> src/agent/core/agent_group.rs:5:49
[INFO] [stderr]   |
[INFO] [stderr] 5 | use crate::agent::core::traits::{Agent, Device, ModelClient};
[INFO] [stderr]   |                                                 ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `info`
[INFO] [stderr]  --> src/agent/llm/client.rs:4:29
[INFO] [stderr]   |
[INFO] [stderr] 4 | use tracing::{debug, error, info};
[INFO] [stderr]   |                             ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `warn`
[INFO] [stderr]  --> src/agent/llm/parser.rs:2:22
[INFO] [stderr]   |
[INFO] [stderr] 2 | use tracing::{debug, warn};
[INFO] [stderr]   |                      ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio::sync::RwLock`
[INFO] [stderr]  --> src/agent/llm/autoglm_client.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use tokio::sync::RwLock;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `client::*`
[INFO] [stderr]  --> src/agent/llm/mod.rs:8:9
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub use client::*;
[INFO] [stderr]   |         ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `parser::*`
[INFO] [stderr]   --> src/agent/llm/mod.rs:10:9
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub use parser::*;
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `autoglm_client::*`
[INFO] [stderr]   --> src/agent/llm/mod.rs:12:9
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub use autoglm_client::*;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `prompts::*`
[INFO] [stderr]   --> src/agent/llm/mod.rs:13:9
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub use prompts::*;
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `error` and `warn`
[INFO] [stderr]  --> src/agent/executor/device_wrapper.rs:8:28
[INFO] [stderr]   |
[INFO] [stderr] 8 | use tracing::{debug, info, error, warn};
[INFO] [stderr]   |                            ^^^^^  ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `warn`
[INFO] [stderr]    --> src/agent/executor/device_wrapper.rs:579:36
[INFO] [stderr]     |
[INFO] [stderr] 579 |         use tracing::{info, debug, warn, error};
[INFO] [stderr]     |                                    ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::agent::core::traits::ParsedAction`
[INFO] [stderr]  --> src/agent/executor/handler.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use crate::agent::core::traits::ParsedAction;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `error`
[INFO] [stderr]  --> src/agent/executor/handler.rs:6:34
[INFO] [stderr]   |
[INFO] [stderr] 6 | use tracing::{debug, info, warn, error};
[INFO] [stderr]   |                                  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::agent::actions::TapAction`
[INFO] [stderr]    --> src/agent/executor/handler.rs:261:9
[INFO] [stderr]     |
[INFO] [stderr] 261 |     use crate::agent::actions::TapAction;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::agent::core::traits::ParsedAction`
[INFO] [stderr]    --> src/agent/executor/handler.rs:262:9
[INFO] [stderr]     |
[INFO] [stderr] 262 |     use crate::agent::core::traits::ParsedAction;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `retry::*`
[INFO] [stderr]  --> src/agent/executor/mod.rs:7:9
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub use retry::*;
[INFO] [stderr]   |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `socketio::*`
[INFO] [stderr]  --> src/agent/api/mod.rs:3:9
[INFO] [stderr]   |
[INFO] [stderr] 3 | pub use socketio::*;
[INFO] [stderr]   |         ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `adb_client::server_device::ADBServerDevice`
[INFO] [stderr]   --> src/agent/pool/device_pool.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 16 | use adb_client::server_device::ADBServerDevice;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `device_entry::DeviceEntry`
[INFO] [stderr]   --> src/agent/pool/mod.rs:10:9
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub use device_entry::DeviceEntry;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `DevicePoolError`
[INFO] [stderr]   --> src/agent/pool/mod.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 15 |     DevicePoolError,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::path::Path`
[INFO] [stderr]  --> src/agent/logger.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use std::path::Path;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Action`, `AgentError`, `AgentGroupConfig`, `AgentGroupEvent`, `AgentGroup`, `AgentRuntime`, `AgentState`, `Agent`, `Device`, `ModelClient`, and `agent::PhoneAgent`
[INFO] [stderr]   --> src/agent/mod.rs:18:14
[INFO] [stderr]    |
[INFO] [stderr] 18 |     traits::{Device, Action, Agent, ModelClient, AgentError},
[INFO] [stderr]    |              ^^^^^^  ^^^^^^  ^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stderr] 19 |     state::{AgentConfig, AgentState, AgentRuntime},
[INFO] [stderr]    |                          ^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 20 |     agent::PhoneAgent,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 21 |     agent_group::{AgentGroup, AgentGroupConfig, AgentGroupEvent},
[INFO] [stderr]    |                   ^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `ActionEnum`, `BackAction`, `DoubleTapAction`, `FinishAction`, `HomeAction`, `LaunchAction`, `LongPressAction`, `NotificationAction`, `PressKeyAction`, `RecentAction`, `ScreenshotAction`, `ScrollAction`, `SwipeAction`, `TapAction`, `TypeAction`, and `WaitAction`
[INFO] [stderr]   --> src/agent/mod.rs:25:5
[INFO] [stderr]    |
[INFO] [stderr] 25 |     ActionEnum, TapAction, LongPressAction, DoubleTapAction, SwipeAction, ScrollAction,
[INFO] [stderr]    |     ^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 26 |     TypeAction, PressKeyAction, BackAction, HomeAction, RecentAction, NotificationAction,
[INFO] [stderr]    |     ^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 27 |     LaunchAction, WaitAction, ScreenshotAction, FinishAction,
[INFO] [stderr]    |     ^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `create_model_client`
[INFO] [stderr]   --> src/agent/mod.rs:29:28
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub use llm::{ModelConfig, create_model_client};
[INFO] [stderr]    |                            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `ActionHandler` and `ScrcpyDeviceWrapper`
[INFO] [stderr]   --> src/agent/mod.rs:30:20
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub use executor::{ScrcpyDeviceWrapper, ActionHandler};
[INFO] [stderr]    |                    ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `ConversationContext` and `ShortTermMemory`
[INFO] [stderr]   --> src/agent/mod.rs:31:19
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub use context::{ConversationContext, ShortTermMemory};
[INFO] [stderr]    |                   ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `FullAgentConfig`
[INFO] [stderr]   --> src/agent/mod.rs:32:18
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub use config::{FullAgentConfig};
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `DevicePoolEvent` and `DeviceStatus`
[INFO] [stderr]   --> src/agent/mod.rs:33:46
[INFO] [stderr]    |
[INFO] [stderr] 33 | pub use pool::{DevicePool, DevicePoolConfig, DevicePoolEvent, DeviceStatus};
[INFO] [stderr]    |                                              ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `screenshot_duration`
[INFO] [stderr]    --> src/agent/core/agent.rs:182:17
[INFO] [stderr]     |
[INFO] [stderr] 182 |             let screenshot_duration = screenshot_start.elapsed();
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_screenshot_duration`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `messages_for_log`
[INFO] [stderr]    --> src/agent/core/agent.rs:189:17
[INFO] [stderr]     |
[INFO] [stderr] 189 |             let messages_for_log = current_messages.clone();
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_messages_for_log`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `query_duration`
[INFO] [stderr]    --> src/agent/core/agent.rs:205:17
[INFO] [stderr]     |
[INFO] [stderr] 205 |             let query_duration = query_start.elapsed();
[INFO] [stderr]     |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_query_duration`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `finish_action`
[INFO] [stderr]    --> src/agent/core/agent.rs:228:25
[INFO] [stderr]     |
[INFO] [stderr] 228 |             if let Some(finish_action) = parsed_actions.iter().find(|a| a.action_type() == "finish") {
[INFO] [stderr]     |                         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_finish_action`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `distance_y`
[INFO] [stderr]    --> src/agent/actions/swipe.rs:117:13
[INFO] [stderr]     |
[INFO] [stderr] 117 |         let distance_y = (height * self.distance_pct / 100) as u32;
[INFO] [stderr]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_distance_y`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `distance_x`
[INFO] [stderr]    --> src/agent/actions/swipe.rs:118:13
[INFO] [stderr]     |
[INFO] [stderr] 118 |         let distance_x = (width * self.distance_pct / 100) as u32;
[INFO] [stderr]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_distance_x`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `device`
[INFO] [stderr]    --> src/agent/actions/system.rs:228:29
[INFO] [stderr]     |
[INFO] [stderr] 228 |     async fn execute(&self, device: &dyn Device) -> Result<ActionResult, AppError> {
[INFO] [stderr]     |                             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_device`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `task`
[INFO] [stderr]    --> src/agent/core/agent.rs:432:21
[INFO] [stderr]     |
[INFO] [stderr] 432 |                 let task = self.runtime.current_task.read().await.clone().unwrap_or_default();
[INFO] [stderr]     |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_task`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `thinking`
[INFO] [stderr]    --> src/agent/llm/autoglm_client.rs:562:14
[INFO] [stderr]     |
[INFO] [stderr] 562 |         let (thinking, parsed_actions) = self.parse_response(&content);
[INFO] [stderr]     |              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_thinking`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `step_number`
[INFO] [stderr]   --> src/agent/logger.rs:92:35
[INFO] [stderr]    |
[INFO] [stderr] 92 |     pub fn save_screenshot(&self, step_number: usize, screenshot_base64: &str) -> Result<String, std::io::Error> {
[INFO] [stderr]    |                                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_step_number`
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_agent_group` and `get_device_pool` are never used
[INFO] [stderr]   --> src/context/context.rs:54:8
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub trait IContext: Send + Sync {
[INFO] [stderr]    |           -------- methods in this trait
[INFO] [stderr] ...
[INFO] [stderr] 54 |     fn get_agent_group(&self) -> &RwLock<Option<Arc<AgentGroup>>>;
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 55 |     fn get_device_pool(&self) -> &RwLock<Option<Arc<DevicePool>>>;
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `agent_group` is never read
[INFO] [stderr]   --> src/context/context.rs:62:5
[INFO] [stderr]    |
[INFO] [stderr] 59 | pub struct Context {
[INFO] [stderr]    |            ------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 62 |     agent_group: RwLock<Option<Arc<AgentGroup>>>,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `set_agent_group` is never used
[INFO] [stderr]   --> src/context/context.rs:78:18
[INFO] [stderr]    |
[INFO] [stderr] 66 | impl Context {
[INFO] [stderr]    | ------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 78 |     pub async fn set_agent_group(&self, group: Arc<AgentGroup>) {
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `serial`, `name`, `is_connected`, and `current_app` are never used
[INFO] [stderr]   --> src/agent/core/traits.rs:8:8
[INFO] [stderr]    |
[INFO] [stderr]  6 | pub trait Device: Send + Sync {
[INFO] [stderr]    |           ------ methods in this trait
[INFO] [stderr]  7 |     /// 获取设备序列号
[INFO] [stderr]  8 |     fn serial(&self) -> &str;
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 11 |     fn name(&self) -> &str;
[INFO] [stderr]    |        ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 14 |     async fn is_connected(&self) -> bool;
[INFO] [stderr]    |              ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 63 |     async fn current_app(&self) -> Result<String, AppError>;
[INFO] [stderr]    |              ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `is_reversible` and `estimated_duration` are never used
[INFO] [stderr]   --> src/agent/core/traits.rs:81:8
[INFO] [stderr]    |
[INFO] [stderr] 67 | pub trait Action: Send + Sync + std::fmt::Debug {
[INFO] [stderr]    |           ------ methods in this trait
[INFO] [stderr] ...
[INFO] [stderr] 81 |     fn is_reversible(&self) -> bool {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 86 |     fn estimated_duration(&self) -> u32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `InvalidText` is never constructed
[INFO] [stderr]    --> src/agent/core/traits.rs:133:5
[INFO] [stderr]     |
[INFO] [stderr] 125 | pub enum ActionError {
[INFO] [stderr]     |          ----------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 133 |     InvalidText(String),
[INFO] [stderr]     |     ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ActionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: multiple variants are never constructed
[INFO] [stderr]    --> src/agent/core/traits.rs:146:5
[INFO] [stderr]     |
[INFO] [stderr] 144 | pub enum AgentError {
[INFO] [stderr]     |          ---------- variants in this enum
[INFO] [stderr] 145 |     #[error("Agent 未找到: {0}")]
[INFO] [stderr] 146 |     NotFound(String),
[INFO] [stderr]     |     ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 158 |     TimeoutError(String),
[INFO] [stderr]     |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 164 |     NotRunning,
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 167 |     MaxStepsExceeded(usize),
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 170 |     ExecutionTimeout(u64),
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 173 |     TaskFailed(String),
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 176 |     InvalidStateTransition(String, String),
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 179 |     RecoveryFailed(String),
[INFO] [stderr]     |     ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `AgentError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `pause`, `resume`, `history`, and `feedback` are never used
[INFO] [stderr]    --> src/agent/core/traits.rs:192:14
[INFO] [stderr]     |
[INFO] [stderr] 184 | pub trait Agent: Send + Sync {
[INFO] [stderr]     |           ----- methods in this trait
[INFO] [stderr] ...
[INFO] [stderr] 192 |     async fn pause(&self) -> Result<(), AppError>;
[INFO] [stderr]     |              ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 195 |     async fn resume(&self) -> Result<(), AppError>;
[INFO] [stderr]     |              ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 201 |     async fn history(&self) -> Vec<ExecutionStep>;
[INFO] [stderr]     |              ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 204 |     async fn feedback(&self, feedback: AgentFeedback) -> Result<(), AppError>;
[INFO] [stderr]     |              ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `AgentFeedback` is never used
[INFO] [stderr]    --> src/agent/core/traits.rs:235:10
[INFO] [stderr]     |
[INFO] [stderr] 235 | pub enum AgentFeedback {
[INFO] [stderr]     |          ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `info` is never used
[INFO] [stderr]    --> src/agent/core/traits.rs:260:8
[INFO] [stderr]     |
[INFO] [stderr] 243 | pub trait ModelClient: Send + Sync {
[INFO] [stderr]     |           ----------- method in this trait
[INFO] [stderr] ...
[INFO] [stderr] 260 |     fn info(&self) -> ModelInfo;
[INFO] [stderr]     |        ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `confidence` and `tokens_used` are never read
[INFO] [stderr]    --> src/agent/core/traits.rs:284:9
[INFO] [stderr]     |
[INFO] [stderr] 281 | pub struct ModelResponse {
[INFO] [stderr]     |            ------------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 284 |     pub confidence: f32,
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr] 285 |     pub reasoning: Option<String>,
[INFO] [stderr] 286 |     pub tokens_used: u32,
[INFO] [stderr]     |         ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ModelResponse` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variant `Timeout` is never constructed
[INFO] [stderr]    --> src/agent/core/traits.rs:316:5
[INFO] [stderr]     |
[INFO] [stderr] 299 | pub enum ModelError {
[INFO] [stderr]     |          ---------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 316 |     Timeout,
[INFO] [stderr]     |     ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `ModelError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ModelInfo` is never constructed
[INFO] [stderr]    --> src/agent/core/traits.rs:321:12
[INFO] [stderr]     |
[INFO] [stderr] 321 | pub struct ModelInfo {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `AgentCreated`, `AgentStarted`, `AgentCompleted`, `AgentFailed`, `AgentStopped`, and `Custom` are never constructed
[INFO] [stderr]   --> src/agent/core/agent_group.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub enum AgentGroupEvent {
[INFO] [stderr]    |          --------------- variants in this enum
[INFO] [stderr] 16 |     /// Agent 创建
[INFO] [stderr] 17 |     AgentCreated { agent_id: String, device_serial: String },
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 20 |     AgentStarted { agent_id: String, task: String },
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 23 |     AgentCompleted { agent_id: String, result: String },
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 26 |     AgentFailed { agent_id: String, error: String },
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 29 |     AgentStopped { agent_id: String },
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 32 |     Custom { agent_id: String, event_type: String, data: String },
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `AgentGroupEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `max_concurrent_agents`, `task_queue_size`, and `enable_event_broadcast` are never read
[INFO] [stderr]   --> src/agent/core/agent_group.rs:39:9
[INFO] [stderr]    |
[INFO] [stderr] 37 | pub struct AgentGroupConfig {
[INFO] [stderr]    |            ---------------- fields in this struct
[INFO] [stderr] 38 |     /// 最大并发 Agent 数量
[INFO] [stderr] 39 |     pub max_concurrent_agents: usize,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 42 |     pub task_queue_size: usize,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 45 |     pub enable_event_broadcast: bool,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `AgentGroupConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `devices`, `event_tx`, `config`, and `model_config` are never read
[INFO] [stderr]   --> src/agent/core/agent_group.rs:62:5
[INFO] [stderr]    |
[INFO] [stderr] 59 | pub struct AgentGroup {
[INFO] [stderr]    |            ---------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 62 |     devices: RwLock<HashMap<String, Arc<dyn Device>>>,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 63 |     event_tx: broadcast::Sender<AgentGroupEvent>,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 64 |     config: AgentGroupConfig,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 65 |     model_config: ModelConfig,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/agent/core/agent_group.rs:89:18
[INFO] [stderr]     |
[INFO] [stderr]  68 | impl AgentGroup {
[INFO] [stderr]     | --------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  89 |     pub async fn register_device(&self, device: Arc<dyn Device>) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  96 |     pub async fn unregister_device(&self, serial: &str) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 102 |     pub async fn get_devices(&self) -> Vec<String> {
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 107 |     pub async fn create_agent(
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 147 |     pub async fn get_agent(&self, agent_id: &str) -> Option<Arc<PhoneAgent>> {
[INFO] [stderr]     |                  ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 152 |     pub async fn start_agent(&self, agent_id: &str, task: String) -> Result<(), AppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 169 |     pub async fn stop_agent(&self, agent_id: &str) -> Result<(), AppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 184 |     pub async fn remove_agent(&self, agent_id: &str) -> Result<(), AppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 199 |     pub async fn list_agents(&self) -> Vec<String> {
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 218 |     pub async fn broadcast_task(&self, task: String) -> Result<Vec<String>, AppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 242 |     pub fn subscribe_events(&self) -> broadcast::Receiver<AgentGroupEvent> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `from_json` is never used
[INFO] [stderr]    --> src/agent/actions/base.rs:501:12
[INFO] [stderr]     |
[INFO] [stderr] 499 | impl ActionEnum {
[INFO] [stderr]     | --------------- associated function in this implementation
[INFO] [stderr] 500 |     /// 从 JSON 创建 ActionEnum
[INFO] [stderr] 501 |     pub fn from_json(action_type: &str, params: serde_json::Value) -> Result<Self, serde_json::Error> {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `from_app_name` is never used
[INFO] [stderr]    --> src/agent/actions/system.rs:107:12
[INFO] [stderr]     |
[INFO] [stderr] 105 | impl LaunchAction {
[INFO] [stderr]     | ----------------- associated function in this implementation
[INFO] [stderr] 106 |     /// 从应用名称创建 LaunchAction
[INFO] [stderr] 107 |     pub fn from_app_name(app_name: &str) -> Option<Self> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `from_env` and `azure` are never used
[INFO] [stderr]    --> src/agent/llm/types.rs:158:12
[INFO] [stderr]     |
[INFO] [stderr] 156 | impl ModelConfig {
[INFO] [stderr]     | ---------------- associated functions in this implementation
[INFO] [stderr] 157 |     /// 从环境变量加载配置
[INFO] [stderr] 158 |     pub fn from_env() -> Self {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 195 |     pub fn azure(
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `extract_text_after` is never used
[INFO] [stderr]    --> src/agent/llm/parser.rs:462:4
[INFO] [stderr]     |
[INFO] [stderr] 462 | fn extract_text_after(text: &str, keywords: &[&str]) -> Option<String> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `StreamEvent` is never used
[INFO] [stderr]   --> src/agent/llm/autoglm_client.rs:20:6
[INFO] [stderr]    |
[INFO] [stderr] 20 | enum StreamEvent {
[INFO] [stderr]    |      ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PerformanceMetrics` is never constructed
[INFO] [stderr]   --> src/agent/llm/autoglm_client.rs:29:12
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub struct PerformanceMetrics {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `send_stream_request` is never used
[INFO] [stderr]    --> src/agent/llm/autoglm_client.rs:117:14
[INFO] [stderr]     |
[INFO] [stderr]  50 | impl AutoGLMClient {
[INFO] [stderr]     | ------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 117 |     async fn send_stream_request(&self, request: ChatRequest) -> Result<String, ModelError> {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `name`, `scrcpy_connect`, and `adb_device` are never read
[INFO] [stderr]   --> src/agent/executor/device_wrapper.rs:14:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub struct ScrcpyDeviceWrapper {
[INFO] [stderr]    |            ------------------- fields in this struct
[INFO] [stderr] 13 |     serial: String,
[INFO] [stderr] 14 |     name: String,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 15 |     scrcpy_connect: Arc<ScrcpyConnect>,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 16 |     adb_device: Arc<ADBServerDevice>,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `parse_screen_size` is never used
[INFO] [stderr]    --> src/agent/executor/device_wrapper.rs:141:8
[INFO] [stderr]     |
[INFO] [stderr]  23 | impl ScrcpyDeviceWrapper {
[INFO] [stderr]     | ------------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 141 |     fn parse_screen_size(&self, output: &str) -> Result<(u32, u32), AppError> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `with_max_retries`, `with_retry_delay`, and `execute_parsed_action` are never used
[INFO] [stderr]   --> src/agent/executor/handler.rs:26:12
[INFO] [stderr]    |
[INFO] [stderr] 15 | impl ActionHandler {
[INFO] [stderr]    | ------------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 26 |     pub fn with_max_retries(mut self, max_retries: u32) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 32 |     pub fn with_retry_delay(mut self, delay_ms: u64) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 97 |     pub async fn execute_parsed_action(
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `None` is never constructed
[INFO] [stderr]   --> src/agent/executor/retry.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr]  6 | pub enum RetryStrategy {
[INFO] [stderr]    |          ------------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 21 |     None,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `RetryStrategy` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new` and `with_retryable_errors` are never used
[INFO] [stderr]    --> src/agent/executor/retry.rs:93:12
[INFO] [stderr]     |
[INFO] [stderr]  91 | impl RetryConfig {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr]  92 |     /// 创建新的重试配置
[INFO] [stderr]  93 |     pub fn new(max_attempts: u32, strategy: RetryStrategy) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 102 |     pub fn with_retryable_errors(mut self, errors: Vec<String>) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_messages`, `get_recent_messages`, `clear`, `len`, and `build_prompt` are never used
[INFO] [stderr]   --> src/agent/context/conversation.rs:63:18
[INFO] [stderr]    |
[INFO] [stderr] 30 | impl ConversationContext {
[INFO] [stderr]    | ------------------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 63 |     pub async fn get_messages(&self) -> Vec<ConversationMessage> {
[INFO] [stderr]    |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 68 |     pub async fn get_recent_messages(&self, n: usize) -> Vec<ConversationMessage> {
[INFO] [stderr]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 79 |     pub async fn clear(&self) {
[INFO] [stderr]    |                  ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 84 |     pub async fn len(&self) -> usize {
[INFO] [stderr]    |                  ^^^
[INFO] [stderr] ...
[INFO] [stderr] 89 |     pub async fn build_prompt(&self, task: &str) -> String {
[INFO] [stderr]    |                  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `set_with_ttl`, `remove`, `clear`, `cleanup_expired`, and `get_all` are never used
[INFO] [stderr]    --> src/agent/context/memory.rs:58:18
[INFO] [stderr]     |
[INFO] [stderr]  33 | impl ShortTermMemory {
[INFO] [stderr]     | -------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  58 |     pub async fn set_with_ttl(&self, key: String, value: String, ttl_seconds: u64) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  86 |     pub async fn remove(&self, key: &str) {
[INFO] [stderr]     |                  ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  91 |     pub async fn clear(&self) {
[INFO] [stderr]     |                  ^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  96 |     pub async fn cleanup_expired(&self) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 102 |     pub async fn get_all(&self) -> HashMap<String, String> {
[INFO] [stderr]     |                  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `from_file`, `from_file_with_env`, `save_to_file`, `default_config`, and `with_local_model` are never used
[INFO] [stderr]   --> src/agent/config/agent_config.rs:25:12
[INFO] [stderr]    |
[INFO] [stderr] 23 | impl FullAgentConfig {
[INFO] [stderr]    | -------------------- associated items in this implementation
[INFO] [stderr] 24 |     /// 从 TOML 文件加载配置
[INFO] [stderr] 25 |     pub fn from_file<P: AsRef<Path>>(path: P) -> Result<Self, ConfigError> {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 36 |     pub fn from_file_with_env<P: AsRef<Path>>(path: P) -> Result<Self, ConfigError> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 52 |     pub fn save_to_file<P: AsRef<Path>>(&self, path: P) -> Result<(), ConfigError> {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 63 |     pub fn default_config() -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 68 |     pub fn with_local_model(base_url: String, model_name: String) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `ConfigError` is never used
[INFO] [stderr]   --> src/agent/config/agent_config.rs:78:10
[INFO] [stderr]    |
[INFO] [stderr] 78 | pub enum ConfigError {
[INFO] [stderr]    |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `register_agent_handlers` is never used
[INFO] [stderr]  --> src/agent/api/socketio.rs:8:14
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub async fn register_agent_handlers(socket: SocketRef, context: Arc<dyn IContext>) {
[INFO] [stderr]   |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `handle_agent_start_with_pool` is never used
[INFO] [stderr]   --> src/agent/api/socketio.rs:70:10
[INFO] [stderr]    |
[INFO] [stderr] 70 | async fn handle_agent_start_with_pool(request: AgentStartRequest, pool: Arc<crate::agent::pool::DevicePool>) -> Result<serde_json::V...
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `handle_get_devices_with_pool` is never used
[INFO] [stderr]   --> src/agent/api/socketio.rs:79:10
[INFO] [stderr]    |
[INFO] [stderr] 79 | async fn handle_get_devices_with_pool(pool: Arc<crate::agent::pool::DevicePool>) -> Result<serde_json::Value, crate::error::AppError> {
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `AgentStartRequest` is never constructed
[INFO] [stderr]   --> src/agent/api/socketio.rs:85:12
[INFO] [stderr]    |
[INFO] [stderr] 85 | pub struct AgentStartRequest {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/agent/pool/device_pool.rs:65:12
[INFO] [stderr]     |
[INFO] [stderr]  44 | impl DevicePool {
[INFO] [stderr]     | --------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  65 |     pub fn subscribe_events(&self) -> broadcast::Receiver<DevicePoolEvent> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 111 |     pub async fn unregister_device(&self, serial: &str) -> Result<(), AppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 176 |     pub async fn disconnect_device(&self, serial: &str) -> Result<(), AppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 315 |     pub async fn get_all_devices_status(&self) -> Vec<(String, DeviceStatus)> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 324 |     pub async fn list_devices(&self) -> Vec<String> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 330 |     pub async fn get_device_info(&self, serial: &str) -> Option<crate::agent::pool::types::DeviceInfo> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 342 |     pub async fn cleanup_idle_devices(&self) -> Result<usize, AppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 374 |     pub async fn health_check(&self) -> Result<HashMap<String, bool>, AppError> {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 421 |     pub async fn mark_task_completed(
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 449 |     pub async fn mark_task_failed(
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `created_at` is never read
[INFO] [stderr]   --> src/agent/pool/device_entry.rs:32:9
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub struct DeviceEntry {
[INFO] [stderr]    |            ----------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 32 |     pub created_at: DateTime<Utc>,
[INFO] [stderr]    |         ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `is_idle`, `is_connected`, and `is_busy` are never used
[INFO] [stderr]   --> src/agent/pool/device_entry.rs:71:12
[INFO] [stderr]    |
[INFO] [stderr] 41 | impl DeviceEntry {
[INFO] [stderr]    | ---------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 71 |     pub fn is_idle(&self, threshold_seconds: i64) -> bool {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 78 |     pub fn is_connected(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 85 |     pub fn is_busy(&self) -> bool {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `serial` is never read
[INFO] [stderr]   --> src/agent/pool/types.rs:74:24
[INFO] [stderr]    |
[INFO] [stderr] 74 |     DeviceRegistered { serial: String },
[INFO] [stderr]    |     ----------------   ^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     field in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: field `serial` is never read
[INFO] [stderr]   --> src/agent/pool/types.rs:77:23
[INFO] [stderr]    |
[INFO] [stderr] 77 |     DeviceConnected { serial: String },
[INFO] [stderr]    |     ---------------   ^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     field in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `serial` and `agent_id` are never read
[INFO] [stderr]   --> src/agent/pool/types.rs:83:20
[INFO] [stderr]    |
[INFO] [stderr] 83 |     AgentCreated { serial: String, agent_id: String },
[INFO] [stderr]    |     ------------   ^^^^^^          ^^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     fields in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `serial` and `agent_id` are never read
[INFO] [stderr]   --> src/agent/pool/types.rs:86:22
[INFO] [stderr]    |
[INFO] [stderr] 86 |     AgentDestroyed { serial: String, agent_id: String },
[INFO] [stderr]    |     --------------   ^^^^^^          ^^^^^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     fields in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: fields `serial` and `task` are never read
[INFO] [stderr]   --> src/agent/pool/types.rs:92:19
[INFO] [stderr]    |
[INFO] [stderr] 92 |     TaskStarted { serial: String, task: String },
[INFO] [stderr]    |     -----------   ^^^^^^          ^^^^
[INFO] [stderr]    |     |
[INFO] [stderr]    |     fields in this variant
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variants `DeviceDisconnected`, `DeviceIdle`, `TaskCompleted`, `TaskFailed`, and `Error` are never constructed
[INFO] [stderr]    --> src/agent/pool/types.rs:80:5
[INFO] [stderr]     |
[INFO] [stderr]  72 | pub enum DevicePoolEvent {
[INFO] [stderr]     |          --------------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr]  80 |     DeviceDisconnected { serial: String },
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  89 |     DeviceIdle { serial: String, idle_seconds: u64 },
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  95 |     TaskCompleted { serial: String, result: String },
[INFO] [stderr]     |     ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  98 |     TaskFailed { serial: String, error: String },
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 101 |     Error { serial: String, error: String },
[INFO] [stderr]     |     ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `DevicePoolEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: enum `DevicePoolError` is never used
[INFO] [stderr]    --> src/agent/pool/types.rs:106:10
[INFO] [stderr]     |
[INFO] [stderr] 106 | pub enum DevicePoolError {
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `io` is never read
[INFO] [stderr]   --> src/agent/socket_server.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub struct AgentSocketServer {
[INFO] [stderr]    |            ----------------- field in this struct
[INFO] [stderr] 20 |     io: Arc<SocketIo>,
[INFO] [stderr]    |     ^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `io` and `port` are never used
[INFO] [stderr]   --> src/agent/socket_server.rs:75:12
[INFO] [stderr]    |
[INFO] [stderr] 25 | impl AgentSocketServer {
[INFO] [stderr]    | ---------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 75 |     pub fn io(&self) -> &Arc<SocketIo> {
[INFO] [stderr]    |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 80 |     pub fn port(&self) -> u16 {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `scrcpy-rs` (bin "scrcpy-rs" test) generated 88 warnings (run `cargo fix --bin "scrcpy-rs" -p scrcpy-rs --tests` to apply 39 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.50s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/scrcpy_rs-ef8353d2ddf5ad2d)
[INFO] [stdout] 
[INFO] [stdout] running 39 tests
[INFO] [stdout] test agent::config::agent_config::tests::test_serialize_config ... ok
[INFO] [stdout] test agent::config::agent_config::tests::test_default_config ... ok
[INFO] [stdout] test agent::context::memory::tests::test_memory_set_get ... ok
[INFO] [stdout] test agent::core::agent_group::tests::test_agent_group_creation ... ok
[INFO] [stdout] test agent::executor::handler::tests::test_convert_swipe_params ... ok
[INFO] [stdout] test agent::executor::handler::tests::test_convert_launch_params ... ok
[INFO] [stdout] test agent::executor::handler::tests::test_action_handler_creation ... ok
[INFO] [stdout] test agent::executor::handler::tests::test_convert_tap_params ... ok
[INFO] [stdout] test agent::executor::handler::tests::test_convert_type_params ... ok
[INFO] [stdout] test agent::executor::handler::tests::test_convert_wait_params ... ok
[INFO] [stdout] test agent::executor::handler::tests::test_convert_wait_params_with_string_duration ... ok
[INFO] [stdout] test agent::executor::retry::tests::test_exponential_backoff ... ok
[INFO] [stdout] test agent::executor::retry::tests::test_fixed_delay ... ok
[INFO] [stdout] test agent::llm::parser::tests::test_normalize_action_type ... ok
[INFO] [stdout] test agent::llm::client::tests::test_model_config_default ... ok
[INFO] [stdout] test agent::llm::client::tests::test_model_config_local ... ok
[INFO] [stdout] test agent::llm::parser::tests::test_extract_coordinates ... ok
[INFO] [stdout] test agent::llm::parser::tests::test_extract_duration ... ok
[INFO] [stdout] test agent::llm::parser::tests::test_parse_do_action_launch ... ok
[INFO] [stdout] test agent::executor::retry::tests::test_retry_config_execute ... ok
[INFO] [stdout] test agent::llm::prompts::tests::test_auxiliary_system_prompt_contains_instructions ... ok
[INFO] [stdout] test agent::llm::prompts::tests::test_main_system_prompt_contains_required_elements ... ok
[INFO] [stdout] test agent::llm::parser::tests::test_parse_do_action_tap ... ok
[INFO] [stdout] test agent::logger::tests::test_log_entry_serialization ... ok
[INFO] [stdout] test agent::llm::parser::tests::test_parse_finish_action ... ok
[INFO] [stdout] test agent::llm::parser::tests::test_parse_json_action ... ok
[INFO] [stdout] test agent::llm::providers::tests::test_create_openai_client ... ok
[INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_finish_multiline ... ok
[INFO] [stdout] test agent::llm::providers::tests::test_create_autoglm_client_helper ... ok
[INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_finish_action ... ok
[INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_no_markers ... ok
[INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_do_action_wait ... ok
[INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_do_action_launch ... ok
[INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_priority ... ok
[INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_do_action ... ok
[INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_thinking_with_do ... ok
[INFO] [stdout] test agent::llm::providers::tests::test_create_autoglm_client ... ok
[INFO] [stdout] test agent::llm::parser::tests::test_extract_launch_app ... FAILED
[INFO] [stdout] test agent::context::memory::tests::test_memory_expiration ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- agent::llm::parser::tests::test_extract_launch_app stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'agent::llm::parser::tests::test_extract_launch_app' (52) panicked at src/agent/llm/parser.rs:550:9:
[INFO] [stdout] assertion `left == right` failed
[INFO] [stdout]   left: None
[INFO] [stdout]  right: Some("weixin")
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x61e55c7429f2 - std::backtrace_rs::backtrace::libunwind::trace::hff358a60abf734fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x61e55c7429f2 - std::backtrace_rs::backtrace::trace_unsynchronized::h3b121f916dd95ec6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x61e55c7429f2 - std::sys::backtrace::_print_fmt::hde0a62ded68798e9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x61e55c7429f2 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h93773fc827e3113d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x61e55c75639a - core::fmt::rt::Argument::fmt::h01eff69902dad97f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x61e55c75639a - core::fmt::write::hed7b5c73d82ecb7c
[INFO] [stdout]    6:     0x61e55c70f4d6 - std::io::default_write_fmt::h2f696ff5b8bbaa4b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x61e55c70f4d6 - std::io::Write::write_fmt::h5e66814db8a9cfce
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x61e55c721409 - std::sys::backtrace::BacktraceLock::print::h8b1d6fcc5a56d1a3
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x61e55c721409 - std::panicking::default_hook::{{closure}}::h2be84df4f189ae36
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x61e55c7212a1 - std::panicking::default_hook::hf0ea8939246f43a9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x61e55bb439de - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h02d35e3888986252
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x61e55bb439de - test::test_main_with_exit_callback::{{closure}}::h939640a27d647173
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x61e55c721732 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc9df09ff391af3e7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x61e55c721732 - std::panicking::panic_with_hook::hb4bd9ac1123582a0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x61e55c7214c8 - std::panicking::panic_handler::{{closure}}::hde00dd15f5637fe2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x61e55c71c569 - std::sys::backtrace::__rust_end_short_backtrace::hb72197fa777c1785
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x61e55c702c0d - __rustc[4425a7e20b4c8619]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x61e55c75f5cc - core::panicking::panic_fmt::ha59b517dd231f4da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x61e55c75f453 - core::panicking::assert_failed_inner::h3c3301979dc81b81
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:439:17
[INFO] [stdout]   20:     0x61e55bb63aab - core::panicking::assert_failed::h92e6dfec86fdd31a
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:394:5
[INFO] [stdout]   21:     0x61e55bae3ba9 - scrcpy_rs::agent::llm::parser::tests::test_extract_launch_app::h3bdb9fc33724f534
[INFO] [stdout]                                at /opt/rustwide/workdir/src/agent/llm/parser.rs:550:9
[INFO] [stdout]   22:     0x61e55bae3c07 - scrcpy_rs::agent::llm::parser::tests::test_extract_launch_app::{{closure}}::h569c933c70e7e8c6
[INFO] [stdout]                                at /opt/rustwide/workdir/src/agent/llm/parser.rs:547:33
[INFO] [stdout]   23:     0x61e55ba47526 - core::ops::function::FnOnce::call_once::hea409ca7c8281dba
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   24:     0x61e55bb4379b - core::ops::function::FnOnce::call_once::hddb3cd395c36bfbb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x61e55bb4379b - test::__rust_begin_short_backtrace::h0b6a7601d9750bfa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:663:18
[INFO] [stdout]   26:     0x61e55bb571aa - test::run_test_in_process::{{closure}}::h444209903f00b347
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:74
[INFO] [stdout]   27:     0x61e55bb571aa - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfb3ba8f46e537649
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   28:     0x61e55bb571aa - std::panicking::catch_unwind::do_call::h1672a45911fcf9dc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   29:     0x61e55bb571aa - std::panicking::catch_unwind::h0fadaee22787a6dd
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   30:     0x61e55bb571aa - std::panic::catch_unwind::hc47ad190f2c8e188
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   31:     0x61e55bb571aa - test::run_test_in_process::hcd7faaf934f29999
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:27
[INFO] [stdout]   32:     0x61e55bb571aa - test::run_test::{{closure}}::hddc4550da4871867
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:607:43
[INFO] [stdout]   33:     0x61e55bb31604 - test::run_test::{{closure}}::h98ae26689f13ed94
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:637:41
[INFO] [stdout]   34:     0x61e55bb31604 - std::sys::backtrace::__rust_begin_short_backtrace::h3ec4d1f21ad44588
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   35:     0x61e55bb34fa2 - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::hd8bf2c73d479939f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   36:     0x61e55bb34fa2 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h3b4248f358af2491
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   37:     0x61e55bb34fa2 - std::panicking::catch_unwind::do_call::hda10a64f4b8daebe
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   38:     0x61e55bb34fa2 - std::panicking::catch_unwind::h659e5ee8336ec8c7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   39:     0x61e55bb34fa2 - std::panic::catch_unwind::h9d4d66a538912c18
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   40:     0x61e55bb34fa2 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h7557906bb51d79f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   41:     0x61e55bb34fa2 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9e460d1d7fc83d35
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   42:     0x61e55c71760f - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61282da819d64ea9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   43:     0x61e55c71760f - std::sys::thread::unix::Thread::new::thread_start::h982f9ea829d1b5fb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   44:     0x7dbf12dd9aa4 - <unknown>
[INFO] [stdout]   45:     0x7dbf12e66a64 - clone
[INFO] [stdout]   46:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     agent::llm::parser::tests::test_extract_launch_app
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 38 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.00s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin scrcpy-rs`
[INFO] running `Command { std: "docker" "inspect" "61386cb9828e3dc71296f64fc49f6489b23cc54122754c2a534d013cd7233f66", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "61386cb9828e3dc71296f64fc49f6489b23cc54122754c2a534d013cd7233f66", kill_on_drop: false }`
[INFO] [stdout] 61386cb9828e3dc71296f64fc49f6489b23cc54122754c2a534d013cd7233f66
