[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.95.0 for beta-1.96-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FsunO2%2Fscrs" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-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-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/sunO2/scrs on toolchain 1.95.0 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.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.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded engineioxide-core v0.2.0 [INFO] [stderr] Downloaded zmij v1.0.7 [INFO] [stderr] Downloaded toml v0.9.10+spec-1.1.0 [INFO] [stderr] Downloaded asn1-rs-derive v0.6.0 [INFO] [stderr] Downloaded openssl-probe v0.2.0 [INFO] [stderr] Downloaded socketioxide-core v0.17.0 [INFO] [stderr] Downloaded oid-registry v0.8.1 [INFO] [stderr] Downloaded socketioxide-parser-common v0.17.0 [INFO] [stderr] Downloaded rust-embed-impl v8.9.0 [INFO] [stderr] Downloaded rust-embed-utils v8.9.0 [INFO] [stderr] Downloaded engineioxide v0.17.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 rcgen v0.14.6 [INFO] [stderr] Downloaded rsa v0.9.9 [INFO] [stderr] Downloaded socketioxide v0.18.0 [INFO] [stderr] Downloaded aws-lc-rs v1.15.2 [INFO] [stderr] Downloaded syn v2.0.112 [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-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] fc36820e8e5e29b49c5f90fe7854c939a6a89c08517d64430e3297cf5af87155 [INFO] running `Command { std: "docker" "start" "-a" "fc36820e8e5e29b49c5f90fe7854c939a6a89c08517d64430e3297cf5af87155", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "fc36820e8e5e29b49c5f90fe7854c939a6a89c08517d64430e3297cf5af87155", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fc36820e8e5e29b49c5f90fe7854c939a6a89c08517d64430e3297cf5af87155", kill_on_drop: false }` [INFO] [stdout] fc36820e8e5e29b49c5f90fe7854c939a6a89c08517d64430e3297cf5af87155 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 9bfef57687ad80cffb22b9f9b7d8c9fe6f27f75108fd4e6f833e18445741a5af [INFO] running `Command { std: "docker" "start" "-a" "9bfef57687ad80cffb22b9f9b7d8c9fe6f27f75108fd4e6f833e18445741a5af", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.178 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling zerocopy v0.8.31 [INFO] [stderr] Compiling proc-macro2 v1.0.104 [INFO] [stderr] Compiling libm v0.2.15 [INFO] [stderr] Compiling const-oid v0.9.6 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling find-msvc-tools v0.1.6 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling aws-lc-rs v1.15.2 [INFO] [stderr] Compiling rustls-pki-types v1.13.2 [INFO] [stderr] Compiling simd-adler32 v0.3.8 [INFO] [stderr] Compiling zmij v1.0.7 [INFO] [stderr] Compiling rustls v0.23.35 [INFO] [stderr] Compiling serde_json v1.0.148 [INFO] [stderr] Compiling base64ct v1.8.1 [INFO] [stderr] Compiling arrayvec v0.7.6 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling as-slice v0.2.1 [INFO] [stderr] Compiling built v0.8.0 [INFO] [stderr] Compiling av-scenechange v0.14.1 [INFO] [stderr] Compiling regex-automata v0.4.13 [INFO] [stderr] Compiling sha1 v0.10.6 [INFO] [stderr] Compiling aligned v0.4.3 [INFO] [stderr] Compiling pem-rfc7468 v0.7.0 [INFO] [stderr] Compiling nom v8.0.0 [INFO] [stderr] Compiling core2 v0.4.0 [INFO] [stderr] Compiling pastey v0.1.1 [INFO] [stderr] Compiling der v0.7.10 [INFO] [stderr] Compiling quote v1.0.42 [INFO] [stderr] Compiling y4m v0.8.0 [INFO] [stderr] Compiling quick-error v2.0.1 [INFO] [stderr] Compiling time v0.3.44 [INFO] [stderr] Compiling bitstream-io v4.9.0 [INFO] [stderr] Compiling flate2 v1.1.5 [INFO] [stderr] Compiling syn v2.0.112 [INFO] [stderr] Compiling maybe-rayon v0.1.1 [INFO] [stderr] Compiling simd_helpers v0.1.0 [INFO] [stderr] Compiling rav1e v0.8.1 [INFO] [stderr] Compiling noop_proc_macro v0.3.0 [INFO] [stderr] Compiling weezl v0.1.12 [INFO] [stderr] Compiling imgref v1.12.0 [INFO] [stderr] Compiling zune-core v0.4.12 [INFO] [stderr] Compiling jobserver v0.1.34 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling socket2 v0.6.1 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling getrandom v0.2.16 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling num-bigint-dig v0.8.6 [INFO] [stderr] Compiling cc v1.2.51 [INFO] [stderr] Compiling data-encoding v2.9.0 [INFO] [stderr] Compiling rand_core v0.9.3 [INFO] [stderr] Compiling spki v0.7.3 [INFO] [stderr] Compiling new_debug_unreachable v1.0.6 [INFO] [stderr] Compiling loop9 v0.1.5 [INFO] [stderr] Compiling zune-jpeg v0.4.21 [INFO] [stderr] Compiling pkcs8 v0.10.2 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling avif-serialize v0.8.6 [INFO] [stderr] Compiling zune-inflate v0.2.54 [INFO] [stderr] Compiling fdeflate v0.3.7 [INFO] [stderr] Compiling rgb v0.8.52 [INFO] [stderr] Compiling bit_field v0.10.3 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Compiling pxfm v0.1.27 [INFO] [stderr] Compiling bytemuck v1.24.0 [INFO] [stderr] Compiling zune-core v0.5.0 [INFO] [stderr] Compiling virtue v0.0.18 [INFO] [stderr] Compiling openssl-probe v0.2.0 [INFO] [stderr] Compiling lebe v0.5.3 [INFO] [stderr] Compiling num-bigint v0.4.6 [INFO] [stderr] Compiling num-iter v0.1.45 [INFO] [stderr] Compiling byteorder-lite v0.1.0 [INFO] [stderr] Compiling qoi v0.4.1 [INFO] [stderr] Compiling rustls-native-certs v0.8.3 [INFO] [stderr] Compiling yasna v0.5.2 [INFO] [stderr] Compiling zune-jpeg v0.5.8 [INFO] [stderr] Compiling gif v0.14.1 [INFO] [stderr] Compiling rust-embed-utils v8.9.0 [INFO] [stderr] Compiling image-webp v0.2.4 [INFO] [stderr] Compiling png v0.18.0 [INFO] [stderr] Compiling cmake v0.1.57 [INFO] [stderr] Compiling pkcs1 v0.7.5 [INFO] [stderr] Compiling signature v2.2.0 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling bincode_derive v2.0.1 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling pem v3.0.6 [INFO] [stderr] Compiling aws-lc-sys v0.35.0 [INFO] [stderr] Compiling unty v0.0.4 [INFO] [stderr] Compiling num-rational v0.4.2 [INFO] [stderr] Compiling matchit v0.8.4 [INFO] [stderr] Compiling winnow v0.7.14 [INFO] [stderr] Compiling quick-protobuf v0.8.1 [INFO] [stderr] Compiling regex v1.12.2 [INFO] [stderr] Compiling toml_writer v1.0.6+spec-1.1.0 [INFO] [stderr] Compiling toml_datetime v0.7.5+spec-1.1.0 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [INFO] [stderr] Compiling serde_spanned v1.0.4 [INFO] [stderr] Compiling uuid v1.19.0 [INFO] [stderr] Compiling moxcms v0.7.11 [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 zerofrom-derive v0.1.6 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling thiserror-impl v2.0.17 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [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 num-derive v0.4.2 [INFO] [stderr] Compiling profiling v1.0.17 [INFO] [stderr] Compiling fax_derive v0.2.0 [INFO] [stderr] Compiling toml_parser v1.0.6+spec-1.1.0 [INFO] [stderr] Compiling serde_repr v0.1.20 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling equator v0.4.2 [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 fax v0.2.6 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling v_frame v0.3.9 [INFO] [stderr] Compiling thiserror v2.0.17 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling yoke v0.8.1 [INFO] [stderr] Compiling zerotrie v0.2.3 [INFO] [stderr] Compiling rust-embed v8.9.0 [INFO] [stderr] Compiling av1-grain v0.2.5 [INFO] [stderr] Compiling zerovec v0.11.5 [INFO] [stderr] Compiling tinystr v0.8.2 [INFO] [stderr] Compiling potential_utf v0.1.4 [INFO] [stderr] Compiling icu_locale_core v2.1.1 [INFO] [stderr] Compiling icu_collections v2.1.1 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling bytes v1.11.0 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling half v2.7.1 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling chrono v0.4.42 [INFO] [stderr] Compiling bincode v2.0.1 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling icu_provider v2.1.1 [INFO] [stderr] Compiling tracing-subscriber v0.3.22 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling icu_properties v2.1.2 [INFO] [stderr] Compiling icu_normalizer v2.1.1 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling tiff v0.10.3 [INFO] [stderr] Compiling exr v1.74.0 [INFO] [stderr] Compiling tokio v1.48.0 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling futures-executor v0.3.31 [INFO] [stderr] Compiling futures v0.3.31 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling axum-core v0.5.6 [INFO] [stderr] Compiling tracing-appender v0.2.4 [INFO] [stderr] Compiling engineioxide-core v0.2.0 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling tungstenite v0.28.0 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling socketioxide-core v0.17.0 [INFO] [stderr] Compiling rsa v0.9.9 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling socketioxide-parser-common v0.17.0 [INFO] [stderr] Compiling ravif v0.12.0 [INFO] [stderr] Compiling image v0.25.9 [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 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 { [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 { [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>>; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 55 | fn get_device_pool(&self) -> &RwLock>>; [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>>, [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) { [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; [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; [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, [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>>, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 62 | devices: RwLock>>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 63 | event_tx: broadcast::Sender, [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) { [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 { [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> { [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 { [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, AppError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | pub fn subscribe_events(&self) -> broadcast::Receiver { [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 { [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 { [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 { [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 { [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 { [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 { [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, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 16 | adb_device: Arc, [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 { [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) -> 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(&self, mut operation: F) -> Result [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 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub async fn get_recent_messages(&self, n: usize) -> Vec { [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>>, [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 { [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 { [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>(path: P) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn from_file_with_env>(path: P) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub fn save_to_file>(&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) { [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) -> Result src/agent/api/socketio.rs:79:10 [INFO] [stdout] | [INFO] [stdout] 79 | async fn handle_get_devices_with_pool(pool: Arc) -> Result { [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 { [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 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 330 | pub async fn get_device_info(&self, serial: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 342 | pub async fn cleanup_idle_devices(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 374 | pub async fn health_check(&self) -> Result, 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, [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, [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 { [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 2m 15s [INFO] running `Command { std: "docker" "inspect" "9bfef57687ad80cffb22b9f9b7d8c9fe6f27f75108fd4e6f833e18445741a5af", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9bfef57687ad80cffb22b9f9b7d8c9fe6f27f75108fd4e6f833e18445741a5af", kill_on_drop: false }` [INFO] [stdout] 9bfef57687ad80cffb22b9f9b7d8c9fe6f27f75108fd4e6f833e18445741a5af [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 6c0ce067b6f80b2afd9276449e7f13dee93d4a03d195aebda12a0877ab6d8b09 [INFO] running `Command { std: "docker" "start" "-a" "6c0ce067b6f80b2afd9276449e7f13dee93d4a03d195aebda12a0877ab6d8b09", 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 { [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 { [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>>; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 55 | fn get_device_pool(&self) -> &RwLock>>; [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>>, [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) { [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; [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; [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, [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>>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 63 | event_tx: broadcast::Sender, [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) { [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 { [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> { [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 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 218 | pub async fn broadcast_task(&self, task: String) -> Result, AppError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | pub fn subscribe_events(&self) -> broadcast::Receiver { [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 { [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 { [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 { [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 { [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, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 16 | adb_device: Arc, [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) -> 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 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub async fn get_recent_messages(&self, n: usize) -> Vec { [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 { [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>(path: P) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | pub fn from_file_with_env>(path: P) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub fn save_to_file>(&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) { [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) -> Result src/agent/api/socketio.rs:79:10 [INFO] [stdout] | [INFO] [stdout] 79 | async fn handle_get_devices_with_pool(pool: Arc) -> Result { [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 { [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 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 330 | pub async fn get_device_info(&self, serial: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 342 | pub async fn cleanup_idle_devices(&self) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 374 | pub async fn health_check(&self) -> Result, 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, [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, [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 { [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 15.82s [INFO] running `Command { std: "docker" "inspect" "6c0ce067b6f80b2afd9276449e7f13dee93d4a03d195aebda12a0877ab6d8b09", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6c0ce067b6f80b2afd9276449e7f13dee93d4a03d195aebda12a0877ab6d8b09", kill_on_drop: false }` [INFO] [stdout] 6c0ce067b6f80b2afd9276449e7f13dee93d4a03d195aebda12a0877ab6d8b09 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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.95.0" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 9f2a32dc8d87260cbb9d415b117f8734e9c830c8560c7f7da25553b31d848b35 [INFO] running `Command { std: "docker" "start" "-a" "9f2a32dc8d87260cbb9d415b117f8734e9c830c8560c7f7da25553b31d848b35", 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 { [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 { [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>>; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] 55 | fn get_device_pool(&self) -> &RwLock>>; [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>>, [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) { [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; [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; [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, [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>>, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] 63 | event_tx: broadcast::Sender, [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) { [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 { [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> { [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 { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 218 | pub async fn broadcast_task(&self, task: String) -> Result, AppError> { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 242 | pub fn subscribe_events(&self) -> broadcast::Receiver { [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 { [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 { [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 { [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 { [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, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] 16 | adb_device: Arc, [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) -> 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 { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 68 | pub async fn get_recent_messages(&self, n: usize) -> Vec { [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 { [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>(path: P) -> Result { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 36 | pub fn from_file_with_env>(path: P) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 52 | pub fn save_to_file>(&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) { [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) -> Result src/agent/api/socketio.rs:79:10 [INFO] [stderr] | [INFO] [stderr] 79 | async fn handle_get_devices_with_pool(pool: Arc) -> Result { [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 { [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 { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 330 | pub async fn get_device_info(&self, serial: &str) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 342 | pub async fn cleanup_idle_devices(&self) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 374 | pub async fn health_check(&self) -> Result, 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, [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, [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 { [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.38s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/scrcpy_rs-8f24e158c946622a) [INFO] [stdout] [INFO] [stdout] running 39 tests [INFO] [stdout] test agent::config::agent_config::tests::test_default_config ... ok [INFO] [stdout] test agent::core::agent_group::tests::test_agent_group_creation ... 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_launch_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_fixed_delay ... ok [INFO] [stdout] test agent::executor::handler::tests::test_convert_swipe_params ... ok [INFO] [stdout] test agent::executor::retry::tests::test_exponential_backoff ... ok [INFO] [stdout] test agent::executor::handler::tests::test_convert_tap_params ... ok [INFO] [stdout] test agent::executor::handler::tests::test_action_handler_creation ... ok [INFO] [stdout] test agent::executor::retry::tests::test_retry_config_execute ... 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::config::agent_config::tests::test_serialize_config ... ok [INFO] [stdout] test agent::llm::parser::tests::test_normalize_action_type ... ok [INFO] [stdout] test agent::llm::parser::tests::test_parse_finish_action ... ok [INFO] [stdout] test agent::context::memory::tests::test_memory_set_get ... ok [INFO] [stdout] test agent::llm::parser::tests::test_parse_json_action ... ok [INFO] [stdout] test agent::llm::prompts::tests::test_main_system_prompt_contains_required_elements ... 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::prompts::tests::test_auxiliary_system_prompt_contains_instructions ... ok [INFO] [stdout] test agent::logger::tests::test_log_entry_serialization ... ok [INFO] [stdout] test agent::llm::parser::tests::test_parse_do_action_launch ... ok [INFO] [stdout] test agent::llm::parser::tests::test_parse_do_action_tap ... ok [INFO] [stdout] test agent::llm::providers::tests::test_create_openai_client ... ok [INFO] [stdout] test agent::llm::providers::tests::test_create_autoglm_client ... ok [INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_finish_action ... ok [INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_priority ... ok [INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_no_markers ... ok [INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_finish_multiline ... ok [INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_do_action ... ok [INFO] [stdout] test agent::llm::providers::tests::test_create_autoglm_client_helper ... 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_thinking_with_do ... ok [INFO] [stdout] test agent::llm::autoglm_client::tests::test_parse_do_action_wait ... 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' (44) 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: 0x5fdcc5bbad3a - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::libunwind::trace [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9 [INFO] [stdout] 1: 0x5fdcc5bbad3a - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::trace_unsynchronized:: [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14 [INFO] [stdout] 2: 0x5fdcc5bbad3a - std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:74:9 [INFO] [stdout] 3: 0x5fdcc5bbad3a - <::print::DisplayBacktrace as core[c1f1a4ba060b9bfa]::fmt::Display>::fmt [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:44:26 [INFO] [stdout] 4: 0x5fdcc5bd33aa - ::fmt [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/fmt/rt.rs:152:76 [INFO] [stdout] 5: 0x5fdcc5bd33aa - core[c1f1a4ba060b9bfa]::fmt::write [INFO] [stdout] 6: 0x5fdcc5bbff02 - std[e28293b1aa0f68bd]::io::default_write_fmt::> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:639:11 [INFO] [stdout] 7: 0x5fdcc5bbff02 - as std[e28293b1aa0f68bd]::io::Write>::write_fmt [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:1994:13 [INFO] [stdout] 8: 0x5fdcc5b976af - ::print [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:47:9 [INFO] [stdout] 9: 0x5fdcc5b976af - std[e28293b1aa0f68bd]::panicking::default_hook::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:292:27 [INFO] [stdout] 10: 0x5fdcc5bb2099 - std[e28293b1aa0f68bd]::panicking::default_hook [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:316:9 [INFO] [stdout] 11: 0x5fdcc4fa79cc - core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9 [INFO] [stdout] 12: 0x5fdcc4fa79cc - test[273d7611820c9051]::test_main_with_exit_callback::::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:145:21 [INFO] [stdout] 13: 0x5fdcc5bb2312 - core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9 [INFO] [stdout] 14: 0x5fdcc5bb2312 - std[e28293b1aa0f68bd]::panicking::panic_with_hook [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:833:13 [INFO] [stdout] 15: 0x5fdcc5b97768 - std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:698:13 [INFO] [stdout] 16: 0x5fdcc5b8ed69 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_end_short_backtrace:: [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:182:18 [INFO] [stdout] 17: 0x5fdcc5b9863d - __rustc[b7974e8690430dd9]::rust_begin_unwind [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:689:5 [INFO] [stdout] 18: 0x5fdcc5bd3d3c - core[c1f1a4ba060b9bfa]::panicking::panic_fmt [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:80:14 [INFO] [stdout] 19: 0x5fdcc5bd3bc3 - core[c1f1a4ba060b9bfa]::panicking::assert_failed_inner [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:439:17 [INFO] [stdout] 20: 0x5fdcc4fda10c - core::panicking::assert_failed::h1b2f82cc8a29f215 [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:394:5 [INFO] [stdout] 21: 0x5fdcc4f48049 - scrcpy_rs::agent::llm::parser::tests::test_extract_launch_app::he6dea30f88c51f8d [INFO] [stdout] at /opt/rustwide/workdir/src/agent/llm/parser.rs:550:9 [INFO] [stdout] 22: 0x5fdcc4f480a7 - scrcpy_rs::agent::llm::parser::tests::test_extract_launch_app::{{closure}}::h1581af27b79041bc [INFO] [stdout] at /opt/rustwide/workdir/src/agent/llm/parser.rs:547:33 [INFO] [stdout] 23: 0x5fdcc4eb8b76 - core::ops::function::FnOnce::call_once::h13ac923915d29455 [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 24: 0x5fdcc4f9baab - core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 25: 0x5fdcc4f9baab - test[273d7611820c9051]::__rust_begin_short_backtrace::, fn() -> core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:663:18 [INFO] [stdout] 26: 0x5fdcc4fa849b - test[273d7611820c9051]::run_test_in_process::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:74 [INFO] [stdout] 27: 0x5fdcc4fa849b - as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 28: 0x5fdcc4fa849b - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40 [INFO] [stdout] 29: 0x5fdcc4fa849b - std[e28293b1aa0f68bd]::panicking::catch_unwind::, core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19 [INFO] [stdout] 30: 0x5fdcc4fa849b - std[e28293b1aa0f68bd]::panic::catch_unwind::, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14 [INFO] [stdout] 31: 0x5fdcc4fa849b - test[273d7611820c9051]::run_test_in_process [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:27 [INFO] [stdout] 32: 0x5fdcc4fa849b - test[273d7611820c9051]::run_test::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:607:43 [INFO] [stdout] 33: 0x5fdcc4fa3bb4 - test[273d7611820c9051]::run_test::{closure#1} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:637:41 [INFO] [stdout] 34: 0x5fdcc4fa3bb4 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_begin_short_backtrace:: [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:166:18 [INFO] [stdout] 35: 0x5fdcc4fab0a2 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::::{closure#1}::{closure#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:91:13 [INFO] [stdout] 36: 0x5fdcc4fab0a2 - ::{closure#1}::{closure#0}> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 37: 0x5fdcc4fab0a2 - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::::{closure#1}::{closure#0}>, ()> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40 [INFO] [stdout] 38: 0x5fdcc4fab0a2 - std[e28293b1aa0f68bd]::panicking::catch_unwind::<(), core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe::{closure#1}::{closure#0}>> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19 [INFO] [stdout] 39: 0x5fdcc4fab0a2 - std[e28293b1aa0f68bd]::panic::catch_unwind::::{closure#1}::{closure#0}>, ()> [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14 [INFO] [stdout] 40: 0x5fdcc4fab0a2 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::::{closure#1} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:89:26 [INFO] [stdout] 41: 0x5fdcc4fab0a2 - ::{closure#1} as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5 [INFO] [stdout] 42: 0x5fdcc5bb9def - + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2240:9 [INFO] [stdout] 43: 0x5fdcc5bb9def - ::new::thread_start [INFO] [stdout] at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/thread/unix.rs:118:17 [INFO] [stdout] 44: 0x7b1309763aa4 - [INFO] [stdout] 45: 0x7b13097f0a64 - clone [INFO] [stdout] 46: 0x0 - [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.01s [INFO] [stdout] [INFO] [stderr] error: test failed, to rerun pass `--bin scrcpy-rs` [INFO] running `Command { std: "docker" "inspect" "9f2a32dc8d87260cbb9d415b117f8734e9c830c8560c7f7da25553b31d848b35", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9f2a32dc8d87260cbb9d415b117f8734e9c830c8560c7f7da25553b31d848b35", kill_on_drop: false }` [INFO] [stdout] 9f2a32dc8d87260cbb9d415b117f8734e9c830c8560c7f7da25553b31d848b35