feat: 添加MCP调试插件并优化流式超时处理
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
refactor(relay): 将Provider Key管理路由移至model_config模块 fix(saas): 修复demo_keys与provider_keys的匹配逻辑 perf(runtime): 将流式响应超时从60秒延长至180秒以适配思考型模型 docs: 新增模块化审计和上线前功能测试方案文档 chore: 添加tauri-plugin-mcp依赖及相关配置
This commit is contained in:
15
.mcp.json
Normal file
15
.mcp.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"mcpServers": {
|
||||
"tauri-mcp": {
|
||||
"command": "node",
|
||||
"args": [
|
||||
"C:/Users/szend/AppData/Roaming/npm/node_modules/tauri-plugin-mcp-server/build/index.js"
|
||||
],
|
||||
"env": {
|
||||
"TAURI_MCP_CONNECTION_TYPE": "tcp",
|
||||
"TAURI_MCP_TCP_HOST": "127.0.0.1",
|
||||
"TAURI_MCP_TCP_PORT": "4000"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
411
Cargo.lock
generated
411
Cargo.lock
generated
@@ -498,6 +498,12 @@ version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
|
||||
|
||||
[[package]]
|
||||
name = "bit_field"
|
||||
version = "0.10.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "1.3.2"
|
||||
@@ -900,6 +906,12 @@ dependencies = [
|
||||
"thiserror 2.0.18",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "color_quant"
|
||||
version = "1.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
|
||||
|
||||
[[package]]
|
||||
name = "combine"
|
||||
version = "4.6.7"
|
||||
@@ -964,6 +976,16 @@ dependencies = [
|
||||
"version_check",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
version = "0.9.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-foundation"
|
||||
version = "0.10.1"
|
||||
@@ -980,6 +1002,32 @@ version = "0.8.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
|
||||
|
||||
[[package]]
|
||||
name = "core-graphics"
|
||||
version = "0.22.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"core-foundation 0.9.4",
|
||||
"core-graphics-types 0.1.3",
|
||||
"foreign-types 0.3.2",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-graphics"
|
||||
version = "0.23.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"core-foundation 0.9.4",
|
||||
"core-graphics-types 0.1.3",
|
||||
"foreign-types 0.5.0",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-graphics"
|
||||
version = "0.25.0"
|
||||
@@ -987,12 +1035,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "064badf302c3194842cf2c5d61f56cc88e54a759313879cdf03abdd27d0c3b97"
|
||||
dependencies = [
|
||||
"bitflags 2.11.0",
|
||||
"core-foundation",
|
||||
"core-graphics-types",
|
||||
"core-foundation 0.10.1",
|
||||
"core-graphics-types 0.2.0",
|
||||
"foreign-types 0.5.0",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-graphics-types"
|
||||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"core-foundation 0.9.4",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "core-graphics-types"
|
||||
version = "0.2.0"
|
||||
@@ -1000,7 +1059,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
|
||||
dependencies = [
|
||||
"bitflags 2.11.0",
|
||||
"core-foundation",
|
||||
"core-foundation 0.10.1",
|
||||
"libc",
|
||||
]
|
||||
|
||||
@@ -1388,6 +1447,17 @@ version = "2.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea"
|
||||
|
||||
[[package]]
|
||||
name = "dbus"
|
||||
version = "0.9.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "21b3aa68d7e7abee336255bd7248ea965cc393f3e70411135a6f6a4b651345d4"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"libdbus-sys",
|
||||
"windows-sys 0.59.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "der"
|
||||
version = "0.7.10"
|
||||
@@ -1480,6 +1550,7 @@ dependencies = [
|
||||
"sqlx 0.7.4",
|
||||
"tauri",
|
||||
"tauri-build",
|
||||
"tauri-plugin-mcp",
|
||||
"tauri-plugin-opener",
|
||||
"thiserror 2.0.18",
|
||||
"tokio",
|
||||
@@ -1583,6 +1654,12 @@ dependencies = [
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "doctest-file"
|
||||
version = "1.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c2db04e74f0a9a93103b50e90b96024c9b2bdca8bce6a632ec71b88736d3d359"
|
||||
|
||||
[[package]]
|
||||
name = "dom_query"
|
||||
version = "0.27.0"
|
||||
@@ -1852,6 +1929,21 @@ dependencies = [
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "exr"
|
||||
version = "1.74.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4300e043a56aa2cb633c01af81ca8f699a321879a7854d3896a0ba89056363be"
|
||||
dependencies = [
|
||||
"bit_field",
|
||||
"half",
|
||||
"lebe",
|
||||
"miniz_oxide",
|
||||
"rayon-core",
|
||||
"smallvec",
|
||||
"zune-inflate",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fantoccini"
|
||||
version = "0.21.5"
|
||||
@@ -2332,6 +2424,16 @@ dependencies = [
|
||||
"polyval",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gif"
|
||||
version = "0.13.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b"
|
||||
dependencies = [
|
||||
"color_quant",
|
||||
"weezl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gimli"
|
||||
version = "0.33.0"
|
||||
@@ -2941,6 +3043,24 @@ dependencies = [
|
||||
"icu_properties",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "image"
|
||||
version = "0.24.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d"
|
||||
dependencies = [
|
||||
"bytemuck",
|
||||
"byteorder",
|
||||
"color_quant",
|
||||
"exr",
|
||||
"gif",
|
||||
"jpeg-decoder",
|
||||
"num-traits",
|
||||
"png",
|
||||
"qoi",
|
||||
"tiff",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "1.9.3"
|
||||
@@ -2982,6 +3102,21 @@ dependencies = [
|
||||
"generic-array",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "interprocess"
|
||||
version = "2.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6be5e5c847dbdb44564bd85294740d031f4f8aeb3464e5375ef7141f7538db69"
|
||||
dependencies = [
|
||||
"doctest-file",
|
||||
"futures-core",
|
||||
"libc",
|
||||
"recvmsg",
|
||||
"tokio",
|
||||
"widestring",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "io-extras"
|
||||
version = "0.18.4"
|
||||
@@ -3141,6 +3276,15 @@ dependencies = [
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "jpeg-decoder"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "00810f1d8b74be64b13dbf3db89ac67740615d6c891f0e7b6179326533011a07"
|
||||
dependencies = [
|
||||
"rayon",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
version = "0.3.91"
|
||||
@@ -3242,6 +3386,12 @@ version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
|
||||
|
||||
[[package]]
|
||||
name = "lebe"
|
||||
version = "0.5.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8"
|
||||
|
||||
[[package]]
|
||||
name = "libappindicator"
|
||||
version = "0.9.0"
|
||||
@@ -3272,6 +3422,16 @@ version = "0.2.183"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d"
|
||||
|
||||
[[package]]
|
||||
name = "libdbus-sys"
|
||||
version = "0.2.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"pkg-config",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libloading"
|
||||
version = "0.7.4"
|
||||
@@ -3632,6 +3792,15 @@ dependencies = [
|
||||
"minimal-lexical",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ntapi"
|
||||
version = "0.4.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c3b335231dfd352ffb0f8017f3b6027a4917f7df785ea2143d8af2adc66980ae"
|
||||
dependencies = [
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nu-ansi-term"
|
||||
version = "0.50.3"
|
||||
@@ -4341,7 +4510,7 @@ checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"indexmap 2.13.0",
|
||||
"quick-xml",
|
||||
"quick-xml 0.38.4",
|
||||
"serde",
|
||||
"time 0.3.47",
|
||||
]
|
||||
@@ -4577,6 +4746,24 @@ dependencies = [
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "qoi"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001"
|
||||
dependencies = [
|
||||
"bytemuck",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quick-xml"
|
||||
version = "0.30.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quick-xml"
|
||||
version = "0.38.4"
|
||||
@@ -4798,6 +4985,12 @@ dependencies = [
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "recvmsg"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175"
|
||||
|
||||
[[package]]
|
||||
name = "redox_syscall"
|
||||
version = "0.5.18"
|
||||
@@ -5221,7 +5414,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"
|
||||
dependencies = [
|
||||
"bitflags 2.11.0",
|
||||
"core-foundation",
|
||||
"core-foundation 0.10.1",
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
"security-framework-sys",
|
||||
@@ -6244,6 +6437,21 @@ dependencies = [
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sysinfo"
|
||||
version = "0.30.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
"ntapi",
|
||||
"once_cell",
|
||||
"rayon",
|
||||
"windows 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "system-deps"
|
||||
version = "6.2.2"
|
||||
@@ -6281,8 +6489,8 @@ checksum = "9103edf55f2da3c82aea4c7fab7c4241032bfeea0e71fa557d98e00e7ce7cc20"
|
||||
dependencies = [
|
||||
"bitflags 2.11.0",
|
||||
"block2",
|
||||
"core-foundation",
|
||||
"core-graphics",
|
||||
"core-foundation 0.10.1",
|
||||
"core-graphics 0.25.0",
|
||||
"crossbeam-channel",
|
||||
"dispatch2",
|
||||
"dlopen2",
|
||||
@@ -6305,7 +6513,7 @@ dependencies = [
|
||||
"tao-macros",
|
||||
"unicode-segmentation",
|
||||
"url",
|
||||
"windows",
|
||||
"windows 0.61.3",
|
||||
"windows-core 0.61.2",
|
||||
"windows-version",
|
||||
"x11-dl",
|
||||
@@ -6382,7 +6590,7 @@ dependencies = [
|
||||
"webkit2gtk",
|
||||
"webview2-com",
|
||||
"window-vibrancy",
|
||||
"windows",
|
||||
"windows 0.61.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -6465,6 +6673,31 @@ dependencies = [
|
||||
"walkdir",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-mcp"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/P3GLEG/tauri-plugin-mcp#ac709a71d30ac2f167dd79c4f803500a236262f6"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"base64 0.22.1",
|
||||
"core-foundation 0.9.4",
|
||||
"core-graphics 0.22.3",
|
||||
"foreign-types-shared 0.1.1",
|
||||
"image",
|
||||
"interprocess",
|
||||
"log",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"subtle",
|
||||
"tauri",
|
||||
"tauri-plugin",
|
||||
"thiserror 2.0.18",
|
||||
"tokio",
|
||||
"uuid",
|
||||
"win-screenshot",
|
||||
"xcap",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-opener"
|
||||
version = "2.5.3"
|
||||
@@ -6483,7 +6716,7 @@ dependencies = [
|
||||
"tauri-plugin",
|
||||
"thiserror 2.0.18",
|
||||
"url",
|
||||
"windows",
|
||||
"windows 0.61.3",
|
||||
"zbus",
|
||||
]
|
||||
|
||||
@@ -6509,7 +6742,7 @@ dependencies = [
|
||||
"url",
|
||||
"webkit2gtk",
|
||||
"webview2-com",
|
||||
"windows",
|
||||
"windows 0.61.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -6534,7 +6767,7 @@ dependencies = [
|
||||
"url",
|
||||
"webkit2gtk",
|
||||
"webview2-com",
|
||||
"windows",
|
||||
"windows 0.61.3",
|
||||
"wry",
|
||||
]
|
||||
|
||||
@@ -6679,6 +6912,17 @@ dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tiff"
|
||||
version = "0.9.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e"
|
||||
dependencies = [
|
||||
"flate2",
|
||||
"jpeg-decoder",
|
||||
"weezl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "time"
|
||||
version = "0.2.27"
|
||||
@@ -7984,7 +8228,7 @@ checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a"
|
||||
dependencies = [
|
||||
"webview2-com-macros",
|
||||
"webview2-com-sys",
|
||||
"windows",
|
||||
"windows 0.61.3",
|
||||
"windows-core 0.61.2",
|
||||
"windows-implement",
|
||||
"windows-interface",
|
||||
@@ -8008,10 +8252,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c"
|
||||
dependencies = [
|
||||
"thiserror 2.0.18",
|
||||
"windows",
|
||||
"windows 0.61.3",
|
||||
"windows-core 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "weezl"
|
||||
version = "0.1.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88"
|
||||
|
||||
[[package]]
|
||||
name = "whoami"
|
||||
version = "1.6.1"
|
||||
@@ -8022,6 +8272,12 @@ dependencies = [
|
||||
"wasite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "widestring"
|
||||
version = "1.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471"
|
||||
|
||||
[[package]]
|
||||
name = "wiggle"
|
||||
version = "43.0.0"
|
||||
@@ -8062,6 +8318,15 @@ dependencies = [
|
||||
"wiggle-generate",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "win-screenshot"
|
||||
version = "4.0.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e46fb2d7cb00430b7c433b05cc37a0f2f03a5305a975b1886a6ce5e1d8977d4b"
|
||||
dependencies = [
|
||||
"windows 0.62.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "winapi"
|
||||
version = "0.3.9"
|
||||
@@ -8127,17 +8392,39 @@ dependencies = [
|
||||
"windows-version",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
|
||||
dependencies = [
|
||||
"windows-core 0.52.0",
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows"
|
||||
version = "0.61.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893"
|
||||
dependencies = [
|
||||
"windows-collections",
|
||||
"windows-collections 0.2.0",
|
||||
"windows-core 0.61.2",
|
||||
"windows-future",
|
||||
"windows-future 0.2.1",
|
||||
"windows-link 0.1.3",
|
||||
"windows-numerics",
|
||||
"windows-numerics 0.2.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows"
|
||||
version = "0.62.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580"
|
||||
dependencies = [
|
||||
"windows-collections 0.3.2",
|
||||
"windows-core 0.62.2",
|
||||
"windows-future 0.3.2",
|
||||
"windows-numerics 0.3.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -8149,6 +8436,24 @@ dependencies = [
|
||||
"windows-core 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-collections"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610"
|
||||
dependencies = [
|
||||
"windows-core 0.62.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-core"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
|
||||
dependencies = [
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-core"
|
||||
version = "0.61.2"
|
||||
@@ -8183,7 +8488,18 @@ checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
|
||||
dependencies = [
|
||||
"windows-core 0.61.2",
|
||||
"windows-link 0.1.3",
|
||||
"windows-threading",
|
||||
"windows-threading 0.1.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-future"
|
||||
version = "0.3.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb"
|
||||
dependencies = [
|
||||
"windows-core 0.62.2",
|
||||
"windows-link 0.2.1",
|
||||
"windows-threading 0.2.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -8230,6 +8546,16 @@ dependencies = [
|
||||
"windows-link 0.1.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-numerics"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26"
|
||||
dependencies = [
|
||||
"windows-core 0.62.2",
|
||||
"windows-link 0.2.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-result"
|
||||
version = "0.3.4"
|
||||
@@ -8392,6 +8718,15 @@ dependencies = [
|
||||
"windows-link 0.1.3",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-threading"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37"
|
||||
dependencies = [
|
||||
"windows-link 0.2.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "windows-version"
|
||||
version = "0.1.7"
|
||||
@@ -8791,7 +9126,7 @@ dependencies = [
|
||||
"webkit2gtk",
|
||||
"webkit2gtk-sys",
|
||||
"webview2-com",
|
||||
"windows",
|
||||
"windows 0.61.3",
|
||||
"windows-core 0.61.2",
|
||||
"windows-version",
|
||||
"x11-dl",
|
||||
@@ -8818,6 +9153,35 @@ dependencies = [
|
||||
"pkg-config",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "xcap"
|
||||
version = "0.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6776c1b371ea7c73bc98a40ae5c6a69c648669ff2e6d8a03fc8b80ddc58a0498"
|
||||
dependencies = [
|
||||
"core-foundation 0.9.4",
|
||||
"core-graphics 0.23.2",
|
||||
"dbus",
|
||||
"image",
|
||||
"log",
|
||||
"percent-encoding",
|
||||
"sysinfo",
|
||||
"thiserror 1.0.69",
|
||||
"windows 0.52.0",
|
||||
"xcb",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "xcb"
|
||||
version = "1.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ee4c580d8205abb0a5cf4eb7e927bd664e425b6c3263f9c5310583da96970cf6"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"libc",
|
||||
"quick-xml 0.30.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yoke"
|
||||
version = "0.8.1"
|
||||
@@ -9251,6 +9615,15 @@ dependencies = [
|
||||
"simd-adler32",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zune-inflate"
|
||||
version = "0.2.54"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02"
|
||||
dependencies = [
|
||||
"simd-adler32",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zvariant"
|
||||
version = "5.10.0"
|
||||
|
||||
@@ -713,7 +713,11 @@ impl AgentLoop {
|
||||
let mut text_delta_count: usize = 0;
|
||||
let mut thinking_delta_count: usize = 0;
|
||||
let mut stream_errored = false;
|
||||
let chunk_timeout = std::time::Duration::from_secs(60);
|
||||
// 180s per-chunk timeout — thinking models (Kimi, DeepSeek R1) can have
|
||||
// long gaps between reasoning_content and content phases (observed: ~60s).
|
||||
// The SaaS relay sends SSE heartbeat comments during idle periods, but these
|
||||
// are filtered out by the OpenAI driver and don't yield StreamChunks.
|
||||
let chunk_timeout = std::time::Duration::from_secs(180);
|
||||
|
||||
loop {
|
||||
match tokio::time::timeout(chunk_timeout, stream.next()).await {
|
||||
|
||||
@@ -896,7 +896,10 @@ async fn fix_seed_data(pool: &PgPool) -> SaasResult<()> {
|
||||
(format!("demo-akey-3-{}", &admin_id[..8]), "DeepSeek API Key", "sk-demo-deepseek-key-1-xxxxx", "[\"relay:use\"]"),
|
||||
];
|
||||
for (idx, (id, label, key_val, perms)) in demo_keys.iter().enumerate() {
|
||||
let provider_id = provider_keys.get(idx).map(|(_, pid)| pid.as_str()).unwrap_or("demo-openai");
|
||||
let provider_id = match provider_keys.get(idx).map(|(_, pid)| pid.as_str()) {
|
||||
Some(pid) => pid,
|
||||
None => continue, // skip if no matching provider exists
|
||||
};
|
||||
sqlx::query(
|
||||
"INSERT INTO account_api_keys (id, account_id, provider_id, key_value, key_label, permissions, enabled, created_at, updated_at)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, true, $7, $7) ON CONFLICT (id) DO NOTHING"
|
||||
|
||||
@@ -4,7 +4,7 @@ pub mod types;
|
||||
pub mod service;
|
||||
pub mod handlers;
|
||||
|
||||
use axum::routing::{delete, get, post};
|
||||
use axum::routing::{delete, get, post, put};
|
||||
use crate::state::AppState;
|
||||
|
||||
/// 模型配置路由 (需要认证)
|
||||
@@ -14,6 +14,10 @@ pub fn routes() -> axum::Router<AppState> {
|
||||
.route("/api/v1/providers", get(handlers::list_providers).post(handlers::create_provider))
|
||||
.route("/api/v1/providers/:id", get(handlers::get_provider).patch(handlers::update_provider).delete(handlers::delete_provider))
|
||||
.route("/api/v1/providers/:id/models", get(handlers::list_provider_models))
|
||||
// Provider Key Pool (admin only, moved from relay to avoid quota middleware)
|
||||
.route("/api/v1/providers/:provider_id/keys", get(crate::relay::handlers::list_provider_keys).post(crate::relay::handlers::add_provider_key))
|
||||
.route("/api/v1/providers/:provider_id/keys/:key_id/toggle", put(crate::relay::handlers::toggle_provider_key))
|
||||
.route("/api/v1/providers/:provider_id/keys/:key_id", delete(crate::relay::handlers::delete_provider_key))
|
||||
// Models
|
||||
.route("/api/v1/models", get(handlers::list_models).post(handlers::create_model))
|
||||
.route("/api/v1/models/:id", get(handlers::get_model).patch(handlers::update_model).delete(handlers::delete_model))
|
||||
|
||||
@@ -230,7 +230,7 @@ pub async fn create_model(db: &PgPool, req: &CreateModelRequest) -> SaasResult<M
|
||||
"INSERT INTO models (id, provider_id, model_id, alias, context_window, max_output_tokens, supports_streaming, supports_vision, enabled, pricing_input, pricing_output, created_at, updated_at)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, true, $9, $10, $11, $11)"
|
||||
)
|
||||
.bind(&id).bind(&req.provider_id).bind(&req.model_id).bind(&req.alias)
|
||||
.bind(&id).bind(&req.provider_id).bind(&req.model_id).bind(req.alias.as_deref().unwrap_or(&req.model_id))
|
||||
.bind(ctx).bind(max_out).bind(streaming).bind(vision).bind(pi).bind(po).bind(&now)
|
||||
.execute(db).await.map_err(|e| SaasError::from_sqlx_unique(e, &format!("模型 '{}' 在 Provider '{}'", req.model_id, req.provider_id)))?;
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ pub struct ModelInfo {
|
||||
pub struct CreateModelRequest {
|
||||
pub provider_id: String,
|
||||
pub model_id: String,
|
||||
pub alias: String,
|
||||
pub alias: Option<String>,
|
||||
pub context_window: Option<i64>,
|
||||
pub max_output_tokens: Option<i64>,
|
||||
pub supports_streaming: Option<bool>,
|
||||
|
||||
@@ -5,10 +5,10 @@ pub mod service;
|
||||
pub mod handlers;
|
||||
pub mod key_pool;
|
||||
|
||||
use axum::routing::{delete, get, post, put};
|
||||
use axum::routing::{get, post};
|
||||
use crate::state::AppState;
|
||||
|
||||
/// 中转服务路由 (需要认证)
|
||||
/// 中转服务路由 (需要认证 + quota 中间件)
|
||||
pub fn routes() -> axum::Router<AppState> {
|
||||
axum::Router::new()
|
||||
// Relay 核心端点
|
||||
@@ -17,9 +17,4 @@ pub fn routes() -> axum::Router<AppState> {
|
||||
.route("/api/v1/relay/tasks/:id", get(handlers::get_task))
|
||||
.route("/api/v1/relay/tasks/:id/retry", post(handlers::retry_task))
|
||||
.route("/api/v1/relay/models", get(handlers::list_available_models))
|
||||
// Key Pool 管理 (admin only)
|
||||
.route("/api/v1/providers/:provider_id/keys", get(handlers::list_provider_keys))
|
||||
.route("/api/v1/providers/:provider_id/keys", post(handlers::add_provider_key))
|
||||
.route("/api/v1/providers/:provider_id/keys/:key_id/toggle", put(handlers::toggle_provider_key))
|
||||
.route("/api/v1/providers/:provider_id/keys/:key_id", delete(handlers::delete_provider_key))
|
||||
}
|
||||
|
||||
@@ -15,8 +15,9 @@ use super::types::*;
|
||||
/// 上游无数据时,发送 SSE 心跳注释行的间隔
|
||||
const STREAMBRIDGE_HEARTBEAT_INTERVAL: Duration = Duration::from_secs(15);
|
||||
|
||||
/// 上游无数据时,丢弃连接的超时阈值(90s = 6 个心跳,给 thinking 模型更多时间)
|
||||
const STREAMBRIDGE_TIMEOUT: Duration = Duration::from_secs(90);
|
||||
/// 上游无数据时,丢弃连接的超时阈值(180s = 12 个心跳)
|
||||
/// 实测 Kimi for Coding 的 thinking→content 间隔可达 60s+,需要更宽容的超时。
|
||||
const STREAMBRIDGE_TIMEOUT: Duration = Duration::from_secs(180);
|
||||
|
||||
/// 流结束后延迟清理的时间窗口
|
||||
const STREAMBRIDGE_CLEANUP_DELAY: Duration = Duration::from_secs(60);
|
||||
@@ -767,9 +768,9 @@ fn build_stream_bridge(
|
||||
idle_heartbeats as u64 * STREAMBRIDGE_HEARTBEAT_INTERVAL.as_secs(),
|
||||
);
|
||||
|
||||
// After 6 consecutive heartbeats without real data (90s),
|
||||
// After 12 consecutive heartbeats without real data (180s),
|
||||
// terminate the stream to prevent connection leaks.
|
||||
if idle_heartbeats >= 6 {
|
||||
if idle_heartbeats >= 12 {
|
||||
tracing::warn!(
|
||||
"[StreamBridge] Timeout ({:?}) no real data, closing stream for task {}",
|
||||
STREAMBRIDGE_TIMEOUT,
|
||||
|
||||
BIN
deerflow-ui-screenshot.png
Normal file
BIN
deerflow-ui-screenshot.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 400 KiB |
@@ -37,6 +37,9 @@ zclaw-protocols = { workspace = true }
|
||||
tauri = { version = "2", features = [] }
|
||||
tauri-plugin-opener = "2"
|
||||
|
||||
# MCP debug plugin (dev-only, allows AI agents to interact with the app)
|
||||
tauri-plugin-mcp = { git = "https://github.com/P3GLEG/tauri-plugin-mcp" }
|
||||
|
||||
# Async runtime
|
||||
tokio = { workspace = true }
|
||||
futures = { workspace = true }
|
||||
|
||||
@@ -107,8 +107,20 @@ pub fn run() {
|
||||
let classroom_chat_state = classroom_commands::chat::create_chat_state();
|
||||
let classroom_gen_tasks = classroom_commands::create_generation_tasks();
|
||||
|
||||
tauri::Builder::default()
|
||||
.plugin(tauri_plugin_opener::init())
|
||||
let mut builder = tauri::Builder::default()
|
||||
.plugin(tauri_plugin_opener::init());
|
||||
|
||||
// MCP debug plugin — only in debug builds, allows AI agents to interact with the app
|
||||
#[cfg(debug_assertions)]
|
||||
{
|
||||
builder = builder.plugin(tauri_plugin_mcp::init_with_config(
|
||||
tauri_plugin_mcp::PluginConfig::new("ZCLAW".to_string())
|
||||
.start_socket_server(true)
|
||||
.tcp_localhost(4000),
|
||||
));
|
||||
}
|
||||
|
||||
builder
|
||||
.manage(browser_state)
|
||||
.manage(memory_state)
|
||||
.manage(heartbeat_state)
|
||||
|
||||
279
docs/superpowers/specs/2026-04-04-module-audit-design.md
Normal file
279
docs/superpowers/specs/2026-04-04-module-audit-design.md
Normal file
@@ -0,0 +1,279 @@
|
||||
# ZCLAW 模块化端到端深度功能验证审计方案
|
||||
|
||||
> **版本**: v1.1 (review fix)
|
||||
> **日期**: 2026-04-04
|
||||
> **状态**: 设计完成,待执行
|
||||
> **审计目标**: 端到端功能验证——系统性找出每个模块从 UI 到后端的断链
|
||||
|
||||
---
|
||||
|
||||
## 1. 背景与动机
|
||||
|
||||
ZCLAW 项目已有 14 次审计历史(V1-V11 共 11 轮版本化审计 + 3 轮专项审计),前几轮以"技术层横向扫描"为主:检查 Tauri 命令调用率、SaaS API 前端消费、死代码清理等。这些审计修复了大量问题,但存在三个结构性盲区:
|
||||
|
||||
1. **缺乏功能视角** — 已知 24 个 Tauri 命令无前端调用,但不知属于哪些用户故事
|
||||
2. **缺乏边界验证** — 只查"调了没有",没查"调错了怎么表现"、"空数据怎么表现"
|
||||
3. **缺乏累积性** — 每轮从头扫,无模块级基线
|
||||
|
||||
本方案以**功能领域为主轴**组织审计,以标准化的**五维检查清单**确保不遗漏,以**三波并行策略**高效执行。
|
||||
|
||||
---
|
||||
|
||||
## 2. 审计模块划分
|
||||
|
||||
### 模块清单
|
||||
|
||||
| 模块 | 功能领域 | 核心链路 | 涉及关键文件 |
|
||||
|------|---------|---------|-------------|
|
||||
| **M1** | 智能对话 | 用户输入 → ChatArea → chatStore → Kernel → LLM Driver → 流式回传 | `components/ai/*`, `store/chat/*`, `lib/kernel-chat.ts`, `kernel_commands/chat.rs`, `zclaw-runtime/src/driver/*` |
|
||||
| **M2** | Agent 分身 | 创建/切换/配置 Agent → agentStore → Kernel → SQLite | `agentStore.ts`, `lib/kernel-agent.ts`, `kernel_commands/agent.rs`, `zclaw-memory/src/agent_store.rs` |
|
||||
| **M3** | Hands 自主能力 | 触发 Hand → handStore → Kernel → Hand 执行 → 事件回调 | `handStore.ts`, `lib/kernel-hands.ts`, `crates/zclaw-hands/src/hands/*`, `hands/*.HAND.toml` |
|
||||
| **M4** | 智能层 | 记忆/身份/反思/心跳/自主授权/压缩 各链路 | `intelligence-client/*`, `store/memoryGraphStore.ts`, `intelligence/*.rs` |
|
||||
| **M5** | 技能生态 | 技能浏览/搜索/执行 → Skills 语义路由 → SKILL.md | `lib/kernel-skills.ts`, `crates/zclaw-skills/src/*`, `skills/*.md` |
|
||||
| **M6** | Pipeline 工作流 | 创建/编辑/执行 Pipeline → workflowStore → DSL Engine | `components/pipeline/*`, `workflowStore.ts`, `crates/zclaw-pipeline/src/*` |
|
||||
| **M7** | SaaS 平台(Desktop) | 登录/配置/支付 → saasStore → saas-client → SaaS API | `components/SaaS/*`, `saasStore.ts`, `lib/saas-client.ts`, `crates/zclaw-saas/src/*` |
|
||||
| **M8** | Admin V2 | 14 页面 CRUD → 18 services → SaaS API → PostgreSQL | `admin-v2/src/pages/*`, `admin-v2/src/services/*` |
|
||||
| **M9** | 通信与安全 | 连接管理/认证/TOTP/加密/限流/MCP 协议 | `connectionStore.ts`, `securityStore.ts`, `gateway-client.ts`, `lib/mcp-client.ts`, `crates/zclaw-saas/src/auth/*`, `crates/zclaw-protocols/src/mcp/*` |
|
||||
| **M10** | 横切关注点 | 错误一致性、类型一致性、并发安全(汇总分析) | 全局横切 |
|
||||
| **M11** | Classroom 课堂 | 课堂场景播放/聊天/笔记/白板/TTS | `store/classroomStore.ts`, `components/classroom_player/*`, `lib/classroom-adapter.ts` |
|
||||
|
||||
---
|
||||
|
||||
## 3. 五维检查模板
|
||||
|
||||
每个模块必须完成以下五个维度的检查:
|
||||
|
||||
### 维度 1: 链路完整性
|
||||
|
||||
- 画出该模块的完整调用链(UI → Store → Client → IPC/API → Rust → DB/网络)
|
||||
- 标注每个节点的文件路径
|
||||
- 检查每条边的连通性("写了没接"检查)
|
||||
|
||||
### 维度 2: 参数/类型一致性
|
||||
|
||||
| 检查点 | 方法 |
|
||||
|--------|------|
|
||||
| 前端调用参数 vs Rust 命令签名 | 逐字段比对名称、类型、Optionality |
|
||||
| 返回值类型链路 | Rust struct → Tauri IPC → TS type → Store state |
|
||||
| 枚举值/常量两端同步 | 比对 Rust enum 与 TS union type |
|
||||
| 数据库字段与 API 字段对齐 | SQL 列 vs handler struct field |
|
||||
|
||||
### 维度 3: 边界与错误处理
|
||||
|
||||
| 场景 | 检查内容 |
|
||||
|------|---------|
|
||||
| 空状态 | 数据库无数据时 UI 表现;空字符串/空数组/null 参数传递 |
|
||||
| 错误状态 | 网络 5xx / 4xx / 超时 / 序列化失败 → 是否有用户可见反馈 |
|
||||
| 并发 | 快速双击;多操作并行;Token 刷新并发 |
|
||||
| 性能降级 | 大数据量(1000+ 消息);FTS 全表扫描;连接池满 |
|
||||
| 输入边界 | 超长文本、特殊字符、非 UTF-8、负数、零值 |
|
||||
|
||||
### 维度 4: 状态管理
|
||||
|
||||
- Store 状态机完整性(loading / success / error / reset)
|
||||
- 组件是否正确订阅 Store 变化
|
||||
- 持久化/恢复路径是否完整
|
||||
- 竞态条件风险(stale closure、过期 setState)
|
||||
|
||||
### 维度 5: 安全与资源
|
||||
|
||||
- 敏感数据加密/脱敏
|
||||
- 资源泄漏(事件监听器未清理、定时器未清除、连接未释放)
|
||||
- 权限检查完整性
|
||||
- 日志是否包含敏感信息
|
||||
|
||||
---
|
||||
|
||||
## 4. 断链检测方法
|
||||
|
||||
### 步骤 1: Tauri 命令调用矩阵
|
||||
|
||||
```
|
||||
对模块涉及的所有 Tauri 命令:
|
||||
1. 从 kernel_commands/mod.rs 提取 #[tauri::command] 注册名
|
||||
2. grep desktop/src/ 找 invoke('commandName') 调用
|
||||
3. 对比 → 标注 connected / reserved / broken
|
||||
```
|
||||
|
||||
### 步骤 2: 参数签名级比对
|
||||
|
||||
```
|
||||
对每个 connected 命令:
|
||||
1. 提取 Rust 端参数类型定义 (struct/derive)
|
||||
2. 提取 TS 端调用参数
|
||||
3. 逐字段比对名称/类型/Optionality
|
||||
4. 不匹配 → 记为 P1 断链
|
||||
```
|
||||
|
||||
### 步骤 3: 事件链路追踪
|
||||
|
||||
```
|
||||
1. grep desktop/src-tauri/src/ 找 .emit("event-name") 发射点
|
||||
2. grep desktop/src/ 找 .listen("event-name") 监听点
|
||||
3. 交叉比对 → 找出 emit 但无 listen 的断裂
|
||||
```
|
||||
|
||||
### 步骤 4: 数据库-API-UI 三端对齐
|
||||
|
||||
```
|
||||
1. grep crates/zclaw-saas/src/ 找 SELECT/INSERT 语句
|
||||
2. 对比 API handler 暴露的端点
|
||||
3. 对比前端 service 层调用
|
||||
4. 找出"有表无 API" 或 "有 API 前端未调"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. 边界验证方法
|
||||
|
||||
采用三层验证策略:
|
||||
|
||||
### 第一层: 静态分析(工具辅助,60% 工作量)
|
||||
|
||||
| 检查 | 命令 |
|
||||
|------|------|
|
||||
| TypeScript 类型安全 | `tsc --noEmit` |
|
||||
| Rust 编译检查 | `cargo check` |
|
||||
| 潜在 panic | `grep -rn "unwrap()" crates/` |
|
||||
| 静默忽略 | `grep -rn "let _ =" crates/` |
|
||||
| 类型逃逸 | `grep -rn "as any" desktop/src/` |
|
||||
| 技术债标记 | `grep -rn "TODO\|FIXME\|HACK"` |
|
||||
|
||||
### 第二层: 代码推理(人工审查,30% 工作量)
|
||||
|
||||
对每条链路的每个"edge",推理:
|
||||
- 上游返回 null/undefined/Err 时,下游如何处理?
|
||||
- 上游超时 30s 无响应,UI 如何表现?
|
||||
- 用户在 loading 期间切换页面,状态如何恢复?
|
||||
|
||||
### 第三层: 实机验证(P0/P1 必须,高频模块加强)
|
||||
|
||||
**标准模块(M2/M4-M11)**: 10% 工作量,仅 P0/P1 级发现做实机验证。
|
||||
|
||||
**高频模块(M1/M3)**: 20-30% 工作量,除 P0/P1 外还需验证:
|
||||
- 并发场景:快速连续发送消息、快速连续触发 Hand
|
||||
- 流式中断:中途断网、切换模型、切换 Agent
|
||||
- 大数据场景:1000+ 消息加载、长时间会话压缩
|
||||
|
||||
实机验证启动命令:`pnpm start:dev`
|
||||
- 空数据场景:清空相关表,验证 UI 不崩溃
|
||||
- 错误场景:关闭后端服务,验证前端降级提示
|
||||
- 并发场景:快速连续触发同一操作
|
||||
|
||||
---
|
||||
|
||||
## 6. 优先级分级标准
|
||||
|
||||
| 级别 | 定义 | 示例 | 修复时限 |
|
||||
|------|------|------|---------|
|
||||
| **P0** | 必然崩溃或数据丢失,用户无法绕过 | skill_execute 空参数导致 serde panic | 立即 |
|
||||
| **P1** | 功能失效但不崩溃;核心功能断链 | API 路径 404、参数不匹配静默失败 | 24h |
|
||||
| **P2** | 功能部分可用但不完整;可能演变为 P1 | 静默忽略错误、fire-and-forget spawn | 1 周 |
|
||||
| **P3** | 不影响功能但影响可维护性 | 类型命名不一致、文档数字偏差 | 下个迭代 |
|
||||
| **P4** | 信息级建议改进 | 配置参数预留未消费、feature-gated 未启用 | backlog |
|
||||
|
||||
### 判断流程
|
||||
|
||||
```
|
||||
用户是否看到异常? → 是 → P0/P1
|
||||
数据是否丢失/损坏? → 是 → P0
|
||||
核心路径是否受阻? → 是 → P1
|
||||
是否可能引发 P1? → 是 → P2
|
||||
是否仅影响开发者体验? → 是 → P3/P4
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. 执行策略
|
||||
|
||||
### 执行假设与节奏
|
||||
|
||||
- **执行者假设**: 单人执行(AI Agent 辅助 + 人工决策)
|
||||
- **模块粒度**: 每模块约 1 个工作日(含五维检查 + 报告编写)
|
||||
- **总工期**: 11 个工作日(11 模块 x 1 天/模块),跨约 2.5 周
|
||||
|
||||
### 波次安排
|
||||
|
||||
| 波次 | 模块 | 耗时 | 说明 |
|
||||
|------|------|------|------|
|
||||
| **第一波** | M1(对话) + M2(Agent) + M3(Hands) | 3 天 | 核心路径,历史断链最密集区 |
|
||||
| **第二波** | M4(智能层) + M5(技能) + M6(Pipeline) | 3 天 | 智能与编排 |
|
||||
| **第三波** | M7(SaaS) + M8(Admin) + M11(Classroom) | 3 天 | 平台层 |
|
||||
| **第四波** | M9(通信安全) + M10(横切汇总) | 2 天 | 基础设施+全量汇总 |
|
||||
|
||||
每波内模块顺序执行(单 Agent 每日 1 模块),避免 context 窗口溢出。
|
||||
|
||||
### 模块内部执行顺序
|
||||
|
||||
五维检查串行执行:链路图 → 参数比对 → 边界验证 → 状态管理 → 安全检查
|
||||
|
||||
---
|
||||
|
||||
## 8. 报告格式
|
||||
|
||||
每个模块独立输出一份审计报告,格式如下:
|
||||
|
||||
```markdown
|
||||
# 模块 [Mx] [模块名] 审计报告
|
||||
|
||||
## 1. 模块概况
|
||||
- 功能描述
|
||||
- 涉及文件清单(按层分类)
|
||||
- 调用链路图
|
||||
- 前次审计已知问题继承
|
||||
|
||||
## 2. 五维检查结果
|
||||
|
||||
### 2.1 链路完整性
|
||||
| 链路 | 起点 | 终点 | 状态 | 断裂点 |
|
||||
|
||||
### 2.2 参数/类型一致性
|
||||
| 接口 | 前端类型 | 后端类型 | 一致性 | 不匹配字段 |
|
||||
|
||||
### 2.3 边界与错误处理
|
||||
| 场景 | 输入 | 预期行为 | 实际行为 | 级别 |
|
||||
|
||||
### 2.4 状态管理
|
||||
| Store | 状态机完整性 | 持久化 | 竞态风险 |
|
||||
|
||||
### 2.5 安全与资源
|
||||
| 检查项 | 状态 | 说明 |
|
||||
|
||||
## 3. 问题清单
|
||||
| ID | 描述 | 文件:行号 | 级别 | 修复建议 | 验证方法 |
|
||||
|
||||
## 4. 改进建议
|
||||
- 短期修复项(按优先级排序)
|
||||
- 长期架构建议
|
||||
```
|
||||
|
||||
最终汇总为 `docs/features/MODULE_AUDIT_SUMMARY.md`,包含:
|
||||
- 各模块问题统计表
|
||||
- P0/P1 问题优先修复清单
|
||||
- 整体健康度评分
|
||||
- 对 TRUTH.md 数字更新的建议
|
||||
|
||||
---
|
||||
|
||||
## 9. 与已有审计的衔接
|
||||
|
||||
- **继承 AUDIT_TRACKER.md**:每个模块开头从已有追踪表继承已知问题
|
||||
- **更新 TRUTH.md**:审计中发现的数字偏差回写真相源
|
||||
- **延续版本线**:本审计为 V12(第 15 次),报告编号继续递增
|
||||
- **新 P0 处理流程**:审计中发现的 P0 级问题立即中断当前模块审计,优先修复并验证,再继续审计
|
||||
- **避免重复**:已标记为"已修复"的问题仅做验证性检查,不重新审计
|
||||
|
||||
---
|
||||
|
||||
## 10. 前几轮审计盲区(本次重点关注)
|
||||
|
||||
| 盲区 | 说明 | 本次覆盖维度 |
|
||||
|------|------|-------------|
|
||||
| Store 状态机完整性 | 前几轮几乎未检查 loading/error/reset | 维度 4 |
|
||||
| 错误传播链路 | 后端 Err 是否能传到 UI | 维度 3 |
|
||||
| 事件监听对称性 | emit 但无 listen 的断裂 | 维度 1 |
|
||||
| 并发安全 | 约 15 处 fire-and-forget spawn 未审计 | 维度 5 |
|
||||
| 空数据降级 | Desktop 端空数据表现未验证 | 维度 3 |
|
||||
| Desktop 前端零测试 | 边界验证只能靠代码推理+实机 | 维度 3,M1/M3 加强实机验证 |
|
||||
| Classroom 课堂 | 27 个 Tauri 命令中 7 个无前端调用,未审计 | 新增 M11 |
|
||||
| MCP 协议链路 | MCP 服务发现→工具列举→执行 链路未验证 | M9 增加检查项 |
|
||||
@@ -0,0 +1,363 @@
|
||||
# ZCLAW 上线前功能审计方案
|
||||
|
||||
> **目标**: 对 ZCLAW 全部功能模块进行系统性的端到端验证,确保每个功能按设计文档正常工作,发现并修复所有 P0/P1 缺陷。
|
||||
> **方法**: 基于 V12 模块化审计框架,12 模块逐个测试 + 端到端用户场景集成验证。
|
||||
> **状态**: 设计完成,待执行。
|
||||
|
||||
---
|
||||
|
||||
## 1. 背景
|
||||
|
||||
### 1.1 当前状态
|
||||
|
||||
ZCLAW 已完成稳定化阶段(2026-04-03),V12 模块化审计给出了 76/100 的整体健康度。各模块健康度差异显著(58-91/100),低分模块存在未发现的功能缺陷风险。上线前需要一次系统性的全量功能验证。
|
||||
|
||||
### 1.2 已有基础设施
|
||||
|
||||
- **V12 审计**: V12 审计覆盖了 11 个功能模块(M1-M9, M11;M10 编号跳过无对应报告),含健康度评分和已知问题清单。本测试方案重组为 12 个测试模块(T1-T12),其中 T11(SaaS 后端 API)无独立 V12 审计报告,T12 为跨模块集成测试。
|
||||
- **自动化测试**: Vitest (desktop + admin) + Playwright E2E (~278 tests) + cargo test (~595 tests, 含 386 同步 + 209 异步)
|
||||
- **测试工具**: tauri-mcp(Tauri 端)、Playwright(Web E2E)、cargo test(Rust)、HTTP 脚本(SaaS API)
|
||||
- **环境**: Tauri 桌面端 + SaaS 后端 + Admin V2 + LLM API Key 全部可用
|
||||
|
||||
### 1.3 设计决策
|
||||
|
||||
| 决策 | 选择 | 理由 |
|
||||
|------|------|------|
|
||||
| 测试方案 | 模块化系统测试 + 端到端用户场景 | 与 V12 审计对齐,效率最高 |
|
||||
| Tauri 端测试工具 | tauri-mcp | 用户指定 |
|
||||
| SaaS API 测试工具 | cargo test + HTTP | 已有 86+ 单元测试基础 |
|
||||
| Admin V2 测试工具 | Playwright + vitest | 已有 ~71 单元测试 + Playwright 配置 |
|
||||
| 测试范围 | 全量覆盖(12 模块) | 上线前无死角验证 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 测试模块矩阵
|
||||
|
||||
### 2.1 模块清单(按风险排序)
|
||||
|
||||
| 序号 | 模块 | V12 健康度 | 风险等级 | 主要测试工具 | 关键验证点 |
|
||||
|------|------|-----------|---------|------------|-----------|
|
||||
| T1 | Hands 自主能力 | 58/100 | HIGH | tauri-mcp + cargo test | 9 Hands 触发/执行/审批闭环 |
|
||||
| T2 | 智能层(记忆/反思/心跳/自主) | 61/100 | HIGH | tauri-mcp + cargo test | 记忆提取/注入、反思触发、心跳周期 |
|
||||
| T3 | Agent 分身 | 67/100 | HIGH | tauri-mcp | Agent CRUD、身份切换、SOUL.md |
|
||||
| T4 | 课堂系统 | 70/100 | HIGH | tauri-mcp | 场景播放、TTS、白板、笔记(含 3 个 P1 问题) |
|
||||
| T5 | Pipeline 工作流 | 72/100 | MEDIUM | tauri-mcp + cargo test | DSL 解析、7 种 Action 执行、导出 |
|
||||
| T6 | SaaS 桌面集成 | 85/100 | MEDIUM | tauri-mcp + HTTP | 登录/订阅/Relay/配置同步 |
|
||||
| T7 | 技能生态 | 85/100 | LOW | tauri-mcp + cargo test | 75 Skills 加载/路由/执行(采样策略:5 个/执行模式 + 全量解析验证;重点验证 M5-01 tags-triggers 映射问题) |
|
||||
| T8 | 智能对话 | 91/100 | LOW | tauri-mcp | 8 Provider 流式响应/Markdown/多模型切换 |
|
||||
| T9 | Admin V2 后台 | 82/100 | MEDIUM | Playwright + vitest | 15 页面 CRUD、认证、数据流(10 页有测试,5 页缺失:Billing/ConfigSync/Knowledge/Roles/ScheduledTasks) |
|
||||
| T10 | 通信与安全 | 86/100 | LOW | cargo test + HTTP | JWT/TOTP/Ed25519/CSP/限流 |
|
||||
| T11 | SaaS 后端 API | N/A | MEDIUM | cargo test + HTTP | 131 API 端点、34 表、7 Worker |
|
||||
| T12 | 端到端用户场景 | N/A | HIGH | tauri-mcp | 跨模块真实用户流程 |
|
||||
|
||||
### 2.1.1 T-M 映射表
|
||||
|
||||
本测试方案按风险重排了模块顺序。V12 审计编号 M10 跳过(无对应报告),T11 无 V12 审计基线。
|
||||
|
||||
| 测试模块 | V12 审计模块 | 说明 |
|
||||
|---------|------------|------|
|
||||
| T1 Hands 自主能力 | M3 | 健康度最低 (58/100) |
|
||||
| T2 智能层 | M4 | 含 2 个 P0 问题 |
|
||||
| T3 Agent 分身 | M2 | 14 个已知问题 |
|
||||
| T4 课堂系统 | M11 | 3 个 P1 问题 |
|
||||
| T5 Pipeline 工作流 | M6 | 2 个 P1 问题 |
|
||||
| T6 SaaS 桌面集成 | M7 | SaaS 前端集成 |
|
||||
| T7 技能生态 | M5 | 重点验证 M5-01 |
|
||||
| T8 智能对话 | M1 | 健康度最高 (91/100) |
|
||||
| T9 Admin V2 后台 | M8 | 15 页面,5 页缺测试 |
|
||||
| T10 通信与安全 | M9 | 安全基线验证 |
|
||||
| T11 SaaS 后端 API | 无 | 无 V12 审计,使用功能文档 + 集成测试作为基线 |
|
||||
| T12 端到端用户场景 | 多模块 | 跨模块集成验证 |
|
||||
|
||||
### 2.2 测试工具分配
|
||||
|
||||
| 端 | 测试工具 | 用途 |
|
||||
|----|---------|------|
|
||||
| Tauri 桌面端 | tauri-mcp | UI 交互、组件状态、Tauri 命令调用、实时截图 |
|
||||
| Rust 后端 | cargo test | 单元测试、集成测试(~595 已有 + 补充) |
|
||||
| SaaS API | cargo test + HTTP | API 端点验证、权限检查、并发测试 |
|
||||
| Admin V2 | Playwright + vitest | 页面交互、数据流(~71 已有测试,5 页需新增) |
|
||||
| E2E 集成 | tauri-mcp | 跨模块端到端用户场景(桌面端真实交互) |
|
||||
|
||||
---
|
||||
|
||||
## 3. 测试用例设计
|
||||
|
||||
### 3.1 用例模板
|
||||
|
||||
```
|
||||
TC-{模块编号}-{序号} | {用例名称}
|
||||
前置条件: ...
|
||||
测试步骤: ...
|
||||
预期结果: ...
|
||||
优先级: P0/P1/P2
|
||||
场景类型: 正常(Normal) / 边界(Boundary) / 异常(Exception)
|
||||
验证方法: tauri-mcp query_page + screenshot / cargo test / HTTP
|
||||
```
|
||||
|
||||
### 3.2 三类场景定义
|
||||
|
||||
| 场景类型 | 定义 | 示例 |
|
||||
|---------|------|------|
|
||||
| **正常** | 核心功能的 Happy Path | 发送消息 -> 收到流式响应 -> 消息正确显示 |
|
||||
| **边界** | 极限输入和状态转换 | 10000 字消息、同时触发 5 个 Hands、模型列表为空 |
|
||||
| **异常** | 错误处理和降级 | API Key 无效错误提示、网络断开离线模式、LLM 超时重试 |
|
||||
|
||||
### 3.3 每模块用例数量
|
||||
|
||||
风险分级规则:HIGH = 健康度 < 75 或 P1 问题 >= 3;MEDIUM = 健康度 75-89;LOW = 健康度 >= 90 或安全模块。
|
||||
|
||||
| 风险等级 | 正常 | 边界 | 异常 | 合计 | 适用模块 |
|
||||
|---------|------|------|------|------|---------|
|
||||
| HIGH | 8-12 | 4-6 | 4-6 | 16-24 | T1, T2, T3, T4 |
|
||||
| MEDIUM | 6-8 | 3-4 | 3-4 | 12-16 | T5, T6, T9, T11 |
|
||||
| LOW | 4-6 | 2-3 | 2-3 | 8-12 | T7, T8, T10 |
|
||||
| 集成 | 8-10 | 2-3 | 2-3 | 12-16 | T12 |
|
||||
|
||||
**预估总用例数: ~170-230 个**
|
||||
|
||||
### 3.4 缺陷分级标准
|
||||
|
||||
| 级别 | 定义 | 示例 | 修复时限 |
|
||||
|------|------|------|---------|
|
||||
| **P0 阻塞** | 核心功能完全不可用 | 聊天无法发送、App 崩溃 | 立即修复 |
|
||||
| **P1 严重** | 主要功能异常但有 workaround | Hand 触发失败但手动可恢复 | 当天修复 |
|
||||
| **P2 一般** | 次要功能异常或体验问题 | 设置页布局错位 | 本周修复 |
|
||||
| **P3 轻微** | 视觉/文案/优化建议 | 按钮间距不一致 | 下个迭代 |
|
||||
| **P4 建议** | 改进建议 | 交互体验优化 | 记录不修 |
|
||||
|
||||
---
|
||||
|
||||
## 4. 测试执行流程
|
||||
|
||||
### 4.1 四阶段执行计划
|
||||
|
||||
```
|
||||
阶段 1: 环境准备 (预计 0.5-1 天)
|
||||
1.1 启动所有服务 (Tauri + SaaS + Admin + PostgreSQL)
|
||||
1.2 验证 tauri-mcp 连接
|
||||
1.3 确认至少 1 个 LLM Provider API Key 可用
|
||||
1.4 执行现有自动化测试基线
|
||||
- cargo test --workspace
|
||||
- cd desktop && pnpm vitest run
|
||||
- cd admin-v2 && pnpm vitest run
|
||||
1.5 记录基线结果
|
||||
|
||||
阶段 2: 高风险模块 (T1-T4) (预计 3-5 天)
|
||||
T1 Hands 自主能力 (58/100) -- 最优先
|
||||
T2 智能层 (61/100)
|
||||
T3 Agent 分身 (67/100)
|
||||
T4 课堂系统 (70/100)
|
||||
目标: P0/P1 缺陷清零
|
||||
注: 测试与修复并行,每发现 P0/P1 立即修复并回归验证
|
||||
|
||||
阶段 3: 中低风险模块 (T5-T11) (预计 3-5 天)
|
||||
T5 Pipeline -> T6 SaaS 集成 -> T7 技能 -> T8 对话
|
||||
T9 Admin V2 -> T10 安全 -> T11 SaaS API
|
||||
每模块完成后立即修复发现的问题
|
||||
注: T11 无 V12 审计报告,以功能文档 (docs/features/08-saas-platform/)
|
||||
和现有集成测试 (crates/zclaw-saas/tests/) 为基线
|
||||
|
||||
阶段 4: 端到端集成验证 (T12) (预计 2-3 天)
|
||||
8-10 个跨模块用户场景
|
||||
回归验证阶段 2-3 修复的问题
|
||||
生成最终测试报告
|
||||
|
||||
总计预估: 8-14 天
|
||||
```
|
||||
|
||||
### 4.2 每模块执行流程
|
||||
|
||||
```
|
||||
Step 1: 读取该模块的 V12 审计报告 (docs/features/audit-v12/M{n}-{name}.md)
|
||||
确认已知问题清单
|
||||
注: T11 (SaaS 后端 API) 无 V12 审计报告,跳过此步,
|
||||
以 docs/features/08-saas-platform/ 和 crates/zclaw-saas/tests/ 为基线
|
||||
|
||||
Step 2: 读取功能设计文档 (docs/features/{module-dir}/{doc}.md)
|
||||
理解预期行为和设计规范
|
||||
具体路径参见 Section 8 文件索引
|
||||
|
||||
Step 3: 执行该模块的现有自动化测试
|
||||
cargo test / vitest run -- 相关文件
|
||||
记录基线通过率
|
||||
|
||||
Step 4: 用 tauri-mcp 执行手动测试用例
|
||||
- query_page(mode='map') 获取页面结构
|
||||
- 执行用户交互 (click, type_text, navigate)
|
||||
- take_screenshot 截图记录
|
||||
- 验证 Store 状态 (execute_js 检查 Zustand)
|
||||
|
||||
Step 5: 发现问题 -> 立即修复 -> 回归验证
|
||||
修复后重新执行相关用例
|
||||
|
||||
Step 6: 模块完成 -> 生成测试报告
|
||||
更新 docs/features/audit-v12/ 中的模块报告
|
||||
```
|
||||
|
||||
### 4.3 tauri-mcp 测试工作流
|
||||
|
||||
Tauri 端测试的标准化流程:
|
||||
|
||||
```
|
||||
1. 窗口管理
|
||||
manage_window(action='list') -> 获取窗口列表
|
||||
manage_window(action='focus') -> 聚焦目标窗口
|
||||
|
||||
2. 页面状态检查
|
||||
query_page(mode='state') -> URL/title/scroll 状态
|
||||
query_page(mode='map') -> DOM 元素结构
|
||||
query_page(mode='find_element') -> 精确定位交互目标
|
||||
|
||||
3. 用户交互
|
||||
click(selector_type='ref', selector_value='{ref}') -> 点击
|
||||
type_text(text='{text}') -> 输入
|
||||
mouse_action(action='scroll', direction='down') -> 滚动
|
||||
navigate(action='goto', url='{url}') -> 导航
|
||||
|
||||
4. 状态验证
|
||||
take_screenshot() -> 截图记录
|
||||
wait_for(text=['{expected}']) -> 等待预期结果
|
||||
Store 状态验证优先级:
|
||||
a) DOM 元素内容检查 (query_page mode='map' 验证渲染结果)
|
||||
b) execute_js 检查 React 组件渲染状态 (document.querySelector)
|
||||
c) 如需直接访问 Store,通过 query_page(mode='map') 的 interactive_only=true
|
||||
检查受控组件值间接推断 Store 状态
|
||||
|
||||
5. 结果记录
|
||||
截图保存到 docs/test-results/{module}/
|
||||
测试结果记录到测试报告
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. 端到端用户场景 (T12)
|
||||
|
||||
### 5.1 核心用户场景
|
||||
|
||||
| # | 场景名称 | 涉及模块 | 关键步骤 |
|
||||
|---|---------|---------|---------|
|
||||
| E2E-01 | 新用户首次对话 | T8, T3, T7 | 打开应用 -> 首次引导 -> 选择模型 -> 发送消息 -> 收到回复 |
|
||||
| E2E-02 | Agent 创建与使用 | T3, T8, T2 | 创建新 Agent -> 配置个性/技能 -> 切换到新 Agent -> 发送消息验证身份 |
|
||||
| E2E-03 | Hand 触发与审批 | T1, T2, T8 | 对话中触发 Hand -> 查看执行状态 -> 审批确认 -> 查看结果 |
|
||||
| E2E-04 | SaaS 登录与订阅 | T6, T10 | 登录 SaaS -> 查看订阅状态 -> 配置同步 -> 验证本地状态 |
|
||||
| E2E-05 | Pipeline 创建与执行 | T5, T1 | 创建 Pipeline -> 配置 Action -> 执行 -> 查看结果 -> 导出 |
|
||||
| E2E-06 | 记忆与反思闭环 | T2, T3, T8 | 多轮对话 -> 触发记忆提取 -> 验证记忆存储 -> 反思触发 -> 身份演化 |
|
||||
| E2E-07 | Admin 管理全流程 | T9, T11 | 登录 Admin -> 管理账户 -> 配置模型 -> 查看日志 -> 管理 Prompt |
|
||||
| E2E-08 | 离线与重连 | T1, T2, T6, T8 | 断开网络(tauri-mcp: 关闭 SaaS 后端模拟服务端不可达)-> 离线模式验证(聊天降级、Hand 事件队列、心跳检测)-> 恢复网络 -> 自动重连 -> 消息同步 |
|
||||
| E2E-09 | 课堂场景播放 | T4, T1 | 进入课堂 -> 播放场景 -> TTS 朗读 -> 白板互动 -> 笔记记录 |
|
||||
| E2E-10 | 技能发现与执行 | T7, T8 | 浏览技能市场 -> 安装技能 -> 对话中触发技能 -> 验证执行结果 |
|
||||
|
||||
---
|
||||
|
||||
## 6. 上线达标标准
|
||||
|
||||
### 6.1 强制达标项(全部必须通过)
|
||||
|
||||
| # | 达标项 | 标准 |
|
||||
|---|--------|------|
|
||||
| 1 | P0 缺陷 | 0 个 |
|
||||
| 2 | P1 缺陷 | <= 2 个(且有明确修复计划) |
|
||||
| 3 | 核心流程 | 聊天、Agent CRUD、Hand 触发、SaaS 登录 4 条主路径 100% 通过 |
|
||||
| 4 | 自动化测试 | `cargo test --workspace` + `cd desktop && pnpm vitest run` + `cd admin-v2 && pnpm vitest run` + `cargo check --workspace` 全部通过 |
|
||||
| 5 | 安全 | 无 HIGH 级别安全缺陷(复用渗透测试 V1 标准) |
|
||||
|
||||
### 6.2 建议达标项
|
||||
|
||||
| # | 达标项 | 目标 |
|
||||
|---|--------|------|
|
||||
| 1 | 整体通过率 | >= 95% |
|
||||
| 2 | 模块最低健康度 | >= 65/100(所有模块),争取 >= 70/100。健康度重评采用与 V12 相同的 5 维度框架(功能完整性、代码质量、测试覆盖、文档完备、集成连通性),由测试执行者在每模块完成后打分 |
|
||||
| 3 | 平均健康度 | >= 85/100 |
|
||||
| 4 | E2E 用户场景通过率 | >= 90% |
|
||||
|
||||
---
|
||||
|
||||
## 7. 测试报告格式
|
||||
|
||||
### 7.1 模块测试报告模板
|
||||
|
||||
```markdown
|
||||
## T{n} {模块名} 测试报告
|
||||
|
||||
### 摘要
|
||||
- 执行用例数: X/Y
|
||||
- 通过率: Z%
|
||||
- 发现缺陷: P0: a, P1: b, P2: c, P3: d
|
||||
|
||||
### V12 已知问题验证
|
||||
| V12 Issue ID | 描述 | V12 严重度 | 验证结果 | 备注 |
|
||||
|-------------|------|-----------|---------|------|
|
||||
|
||||
### 新发现问题
|
||||
| TC-ID | 描述 | 场景类型 | 优先级 | 状态 | 截图 |
|
||||
|-------|------|---------|--------|------|------|
|
||||
|
||||
### 健康度评估
|
||||
- V12 基线: XX/100
|
||||
- 本次评估: YY/100
|
||||
- 变化: +/-ZZ
|
||||
- 关键改善: ...
|
||||
- 残留风险: ...
|
||||
```
|
||||
|
||||
### 7.2 最终交付物
|
||||
|
||||
| # | 交付物 | 路径 |
|
||||
|---|--------|------|
|
||||
| 1 | 测试计划文档 | `docs/test-results/TEST_PLAN.md` |
|
||||
| 2 | 模块测试报告 | `docs/test-results/T{n}-{module}/REPORT.md` |
|
||||
| 3 | 缺陷清单 | `docs/test-results/DEFECT_LIST.md` |
|
||||
| 4 | 截图证据 | `docs/test-results/T{n}-{module}/screenshots/` |
|
||||
| 5 | 上线评估 | `docs/test-results/RELEASE_READINESS.md` |
|
||||
| 6 | 自动化脚本 | 新增的测试脚本(如有) |
|
||||
|
||||
---
|
||||
|
||||
## 8. 关键文件索引
|
||||
|
||||
### 8.1 功能设计文档
|
||||
|
||||
| 模块 | 文档路径 |
|
||||
|------|---------|
|
||||
| 通信层 | `docs/features/00-architecture/01-communication-layer.md` |
|
||||
| 状态管理 | `docs/features/00-architecture/02-state-management.md` |
|
||||
| 安全认证 | `docs/features/00-architecture/03-security-auth.md` |
|
||||
| 聊天界面 | `docs/features/01-core-features/00-chat-interface.md` |
|
||||
| Agent 分身 | `docs/features/01-core-features/01-agent-clones.md` |
|
||||
| Hands 系统 | `docs/features/01-core-features/02-hands-system.md` + `docs/features/05-hands-system/` |
|
||||
| 智能层 | `docs/features/02-intelligence-layer/` (8 files) |
|
||||
| 技能生态 | `docs/features/04-skills-ecosystem/` |
|
||||
| Pipeline | `docs/features/07-pipeline-dsl/` |
|
||||
| SaaS 平台 | `docs/features/08-saas-platform/` |
|
||||
| Tauri 后端 | `docs/features/06-tauri-backend/` |
|
||||
|
||||
### 8.2 V12 审计报告
|
||||
|
||||
| 模块 | 报告路径 |
|
||||
|------|---------|
|
||||
| M1 智能对话 | `docs/features/audit-v12/M1-intelligent-chat.md` |
|
||||
| M2 Agent 分身 | `docs/features/audit-v12/M2-agent-clones.md` |
|
||||
| M3 Hands | `docs/features/audit-v12/M3-hands-system.md` |
|
||||
| M4 智能层 | `docs/features/audit-v12/M4-intelligence-layer.md` |
|
||||
| M5 技能生态 | `docs/features/audit-v12/M5-skill-ecosystem.md` |
|
||||
| M6 Pipeline | `docs/features/audit-v12/M6-pipeline-workflow.md` |
|
||||
| M7 SaaS 桌面 | `docs/features/audit-v12/M7-saas-desktop.md` |
|
||||
| M8 Admin V2 | `docs/features/audit-v12/M8-admin-v2.md` |
|
||||
| M9 安全 | `docs/features/audit-v12/M9-communication-security.md` |
|
||||
| M11 课堂 | `docs/features/audit-v12/M11-classroom.md` |
|
||||
|
||||
### 8.3 测试基础设施
|
||||
|
||||
| 类型 | 路径 |
|
||||
|------|------|
|
||||
| Desktop Vitest 配置 | `desktop/vitest.config.ts` |
|
||||
| Desktop 测试文件 | `desktop/tests/` |
|
||||
| E2E Playwright 配置 | `desktop/tests/e2e/playwright.config.ts` |
|
||||
| E2E 测试文件 | `desktop/tests/e2e/specs/` |
|
||||
| E2E 测试工具 | `desktop/tests/e2e/fixtures/` + `utils/` |
|
||||
| Admin Vitest 配置 | `admin-v2/vitest.config.ts` |
|
||||
| Admin 测试文件 | `admin-v2/tests/` |
|
||||
| Root 测试文件 | `tests/` |
|
||||
| Root Mock Server | `tests/fixtures/zclaw-mock-server.ts` |
|
||||
| SaaS 集成测试 | `crates/zclaw-saas/tests/` |
|
||||
0
registry_fixed.rs
Normal file
0
registry_fixed.rs
Normal file
@@ -1 +1 @@
|
||||
{"rustc_fingerprint":5915500824126575890,"outputs":{"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\szend\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"cmpxchg16b\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"pc\"\nwindows\n","stderr":""},"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.93.1 (01f6ddf75 2026-02-11)\nbinary: rustc\ncommit-hash: 01f6ddf7588f42ae2d7eb0a2f21d44e8e96674cf\ncommit-date: 2026-02-11\nhost: x86_64-pc-windows-msvc\nrelease: 1.93.1\nLLVM version: 21.1.8\n","stderr":""}},"successes":{}}
|
||||
{"rustc_fingerprint":5915500824126575890,"outputs":{"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.93.1 (01f6ddf75 2026-02-11)\nbinary: rustc\ncommit-hash: 01f6ddf7588f42ae2d7eb0a2f21d44e8e96674cf\ncommit-date: 2026-02-11\nhost: x86_64-pc-windows-msvc\nrelease: 1.93.1\nLLVM version: 21.1.8\n","stderr":""},"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\szend\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"cmpxchg16b\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"pc\"\nwindows\n","stderr":""}},"successes":{}}
|
||||
@@ -1,65 +1,6 @@
|
||||
0.761181200s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop_lib"}: cargo::core::compiler::fingerprint: dependency on `zclaw_types` is newer than we are 13419612711.569322800s > 13419567873.616809800s "G:\\ZClaw_openfang\\crates\\zclaw-growth"
|
||||
0.761922300s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop_lib"}: cargo::core::compiler::fingerprint: dependency on `zclaw_types` is newer than we are 13419612711.569322800s > 13419567873.616809800s "G:\\ZClaw_openfang\\crates\\zclaw-memory"
|
||||
0.762291500s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop_lib"}: cargo::core::compiler::fingerprint: dependency on `zclaw_types` is newer than we are 13419612711.569322800s > 13419567880.887460500s "G:\\ZClaw_openfang\\crates\\zclaw-protocols"
|
||||
0.762378200s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop_lib"}: cargo::core::compiler::fingerprint: dependency on `zclaw_types` is newer than we are 13419612711.569322800s > 13419567880.381728900s "G:\\ZClaw_openfang\\crates\\zclaw-skills"
|
||||
0.765819100s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop_lib"}: cargo::core::compiler::fingerprint: fingerprint dirty for desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri)/Check { test: false }/TargetInner { ..: lib_target("desktop_lib", ["staticlib", "cdylib", "rlib"], "G:\\ZClaw_openfang\\desktop\\src-tauri\\src\\lib.rs", Edition2021) }
|
||||
0.765877200s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop_lib"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_runtime" })
|
||||
0.973255700s INFO prepare_target{force=false package_id=zclaw-growth v0.1.0 (G:\ZClaw_openfang\crates\zclaw-growth) target="zclaw_growth"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-growth v0.1.0 (G:\ZClaw_openfang\crates\zclaw-growth)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("zclaw_growth", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-growth\\src\\lib.rs", Edition2021) }
|
||||
0.973331200s INFO prepare_target{force=false package_id=zclaw-growth v0.1.0 (G:\ZClaw_openfang\crates\zclaw-growth) target="zclaw_growth"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDependency { name: "zclaw_types", dep_mtime: FileTime { seconds: 13419612711, nanos: 569322800 }, max_mtime: FileTime { seconds: 13419567873, nanos: 616809800 } })
|
||||
0.976265200s INFO prepare_target{force=false package_id=zclaw-hands v0.1.0 (G:\ZClaw_openfang\crates\zclaw-hands) target="zclaw_hands"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-hands v0.1.0 (G:\ZClaw_openfang\crates\zclaw-hands)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("zclaw_hands", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-hands\\src\\lib.rs", Edition2021) }
|
||||
0.976323200s INFO prepare_target{force=false package_id=zclaw-hands v0.1.0 (G:\ZClaw_openfang\crates\zclaw-hands) target="zclaw_hands"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_runtime" })
|
||||
0.980483500s INFO prepare_target{force=false package_id=zclaw-runtime v0.1.0 (G:\ZClaw_openfang\crates\zclaw-runtime) target="zclaw_runtime"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-runtime v0.1.0 (G:\ZClaw_openfang\crates\zclaw-runtime)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("zclaw_runtime", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-runtime\\src\\lib.rs", Edition2021) }
|
||||
0.980553900s INFO prepare_target{force=false package_id=zclaw-runtime v0.1.0 (G:\ZClaw_openfang\crates\zclaw-runtime) target="zclaw_runtime"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_memory" })
|
||||
0.986151800s INFO prepare_target{force=false package_id=zclaw-memory v0.1.0 (G:\ZClaw_openfang\crates\zclaw-memory) target="zclaw_memory"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-memory v0.1.0 (G:\ZClaw_openfang\crates\zclaw-memory)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("zclaw_memory", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-memory\\src\\lib.rs", Edition2021) }
|
||||
0.986220700s INFO prepare_target{force=false package_id=zclaw-memory v0.1.0 (G:\ZClaw_openfang\crates\zclaw-memory) target="zclaw_memory"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDependency { name: "zclaw_types", dep_mtime: FileTime { seconds: 13419612711, nanos: 569322800 }, max_mtime: FileTime { seconds: 13419567873, nanos: 616809800 } })
|
||||
0.989812100s INFO prepare_target{force=false package_id=zclaw-kernel v0.1.0 (G:\ZClaw_openfang\crates\zclaw-kernel) target="zclaw_kernel"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-kernel v0.1.0 (G:\ZClaw_openfang\crates\zclaw-kernel)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("zclaw_kernel", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-kernel\\src\\lib.rs", Edition2021) }
|
||||
0.989872300s INFO prepare_target{force=false package_id=zclaw-kernel v0.1.0 (G:\ZClaw_openfang\crates\zclaw-kernel) target="zclaw_kernel"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_runtime" })
|
||||
0.993520200s INFO prepare_target{force=false package_id=zclaw-protocols v0.1.0 (G:\ZClaw_openfang\crates\zclaw-protocols) target="zclaw_protocols"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-protocols v0.1.0 (G:\ZClaw_openfang\crates\zclaw-protocols)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("zclaw_protocols", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-protocols\\src\\lib.rs", Edition2021) }
|
||||
0.993571400s INFO prepare_target{force=false package_id=zclaw-protocols v0.1.0 (G:\ZClaw_openfang\crates\zclaw-protocols) target="zclaw_protocols"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDependency { name: "zclaw_types", dep_mtime: FileTime { seconds: 13419612711, nanos: 569322800 }, max_mtime: FileTime { seconds: 13419567880, nanos: 887460500 } })
|
||||
0.995967100s INFO prepare_target{force=false package_id=zclaw-skills v0.1.0 (G:\ZClaw_openfang\crates\zclaw-skills) target="zclaw_skills"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-skills v0.1.0 (G:\ZClaw_openfang\crates\zclaw-skills)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("zclaw_skills", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-skills\\src\\lib.rs", Edition2021) }
|
||||
0.996014100s INFO prepare_target{force=false package_id=zclaw-skills v0.1.0 (G:\ZClaw_openfang\crates\zclaw-skills) target="zclaw_skills"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDependency { name: "zclaw_types", dep_mtime: FileTime { seconds: 13419612711, nanos: 569322800 }, max_mtime: FileTime { seconds: 13419567880, nanos: 381728900 } })
|
||||
1.000585200s INFO prepare_target{force=false package_id=zclaw-pipeline v0.1.0 (G:\ZClaw_openfang\crates\zclaw-pipeline) target="zclaw_pipeline"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-pipeline v0.1.0 (G:\ZClaw_openfang\crates\zclaw-pipeline)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("zclaw_pipeline", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-pipeline\\src\\lib.rs", Edition2021) }
|
||||
1.000665500s INFO prepare_target{force=false package_id=zclaw-pipeline v0.1.0 (G:\ZClaw_openfang\crates\zclaw-pipeline) target="zclaw_pipeline"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_runtime" })
|
||||
1.005478500s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop_lib"}: cargo::core::compiler::fingerprint: fingerprint dirty for desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri)/Check { test: true }/TargetInner { ..: lib_target("desktop_lib", ["staticlib", "cdylib", "rlib"], "G:\\ZClaw_openfang\\desktop\\src-tauri\\src\\lib.rs", Edition2021) }
|
||||
1.005518700s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop_lib"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_runtime" })
|
||||
1.010495900s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop"}: cargo::core::compiler::fingerprint: fingerprint dirty for desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri)/Check { test: false }/TargetInner { name: "desktop", doc: true, ..: with_path("G:\\ZClaw_openfang\\desktop\\src-tauri\\src\\main.rs", Edition2021) }
|
||||
1.010562100s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_runtime" })
|
||||
1.014940800s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop"}: cargo::core::compiler::fingerprint: fingerprint dirty for desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri)/Check { test: true }/TargetInner { name: "desktop", doc: true, ..: with_path("G:\\ZClaw_openfang\\desktop\\src-tauri\\src\\main.rs", Edition2021) }
|
||||
1.014980500s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_runtime" })
|
||||
1.019079400s INFO prepare_target{force=false package_id=zclaw-growth v0.1.0 (G:\ZClaw_openfang\crates\zclaw-growth) target="zclaw_growth"}: cargo::core::compiler::fingerprint: dependency on `zclaw_types` is newer than we are 13419612711.569322800s > 13419567881.668522500s "G:\\ZClaw_openfang\\crates\\zclaw-growth"
|
||||
1.019693000s INFO prepare_target{force=false package_id=zclaw-growth v0.1.0 (G:\ZClaw_openfang\crates\zclaw-growth) target="zclaw_growth"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-growth v0.1.0 (G:\ZClaw_openfang\crates\zclaw-growth)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("zclaw_growth", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-growth\\src\\lib.rs", Edition2021) }
|
||||
1.019734700s INFO prepare_target{force=false package_id=zclaw-growth v0.1.0 (G:\ZClaw_openfang\crates\zclaw-growth) target="zclaw_growth"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDependency { name: "zclaw_types", dep_mtime: FileTime { seconds: 13419612711, nanos: 569322800 }, max_mtime: FileTime { seconds: 13419567881, nanos: 668522500 } })
|
||||
1.021993900s INFO prepare_target{force=false package_id=zclaw-growth v0.1.0 (G:\ZClaw_openfang\crates\zclaw-growth) target="integration_test"}: cargo::core::compiler::fingerprint: dependency on `zclaw_types` is newer than we are 13419612711.569322800s > 13419567881.430780800s "G:\\ZClaw_openfang\\crates\\zclaw-growth"
|
||||
1.022553300s INFO prepare_target{force=false package_id=zclaw-growth v0.1.0 (G:\ZClaw_openfang\crates\zclaw-growth) target="integration_test"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-growth v0.1.0 (G:\ZClaw_openfang\crates\zclaw-growth)/Check { test: true }/TargetInner { kind: "test", name: "integration_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-growth\\tests\\integration_test.rs", Edition2021) }
|
||||
1.022580400s INFO prepare_target{force=false package_id=zclaw-growth v0.1.0 (G:\ZClaw_openfang\crates\zclaw-growth) target="integration_test"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDependency { name: "zclaw_types", dep_mtime: FileTime { seconds: 13419612711, nanos: 569322800 }, max_mtime: FileTime { seconds: 13419567881, nanos: 430780800 } })
|
||||
1.025557200s INFO prepare_target{force=false package_id=zclaw-hands v0.1.0 (G:\ZClaw_openfang\crates\zclaw-hands) target="zclaw_hands"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-hands v0.1.0 (G:\ZClaw_openfang\crates\zclaw-hands)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("zclaw_hands", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-hands\\src\\lib.rs", Edition2021) }
|
||||
1.025629200s INFO prepare_target{force=false package_id=zclaw-hands v0.1.0 (G:\ZClaw_openfang\crates\zclaw-hands) target="zclaw_hands"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_runtime" })
|
||||
1.029904200s INFO prepare_target{force=false package_id=zclaw-kernel v0.1.0 (G:\ZClaw_openfang\crates\zclaw-kernel) target="zclaw_kernel"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-kernel v0.1.0 (G:\ZClaw_openfang\crates\zclaw-kernel)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("zclaw_kernel", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-kernel\\src\\lib.rs", Edition2021) }
|
||||
1.029960500s INFO prepare_target{force=false package_id=zclaw-kernel v0.1.0 (G:\ZClaw_openfang\crates\zclaw-kernel) target="zclaw_kernel"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_runtime" })
|
||||
1.032635700s INFO prepare_target{force=false package_id=zclaw-memory v0.1.0 (G:\ZClaw_openfang\crates\zclaw-memory) target="zclaw_memory"}: cargo::core::compiler::fingerprint: dependency on `zclaw_types` is newer than we are 13419612711.569322800s > 13419567910.424279900s "G:\\ZClaw_openfang\\crates\\zclaw-memory"
|
||||
1.033209000s INFO prepare_target{force=false package_id=zclaw-memory v0.1.0 (G:\ZClaw_openfang\crates\zclaw-memory) target="zclaw_memory"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-memory v0.1.0 (G:\ZClaw_openfang\crates\zclaw-memory)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("zclaw_memory", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-memory\\src\\lib.rs", Edition2021) }
|
||||
1.033238900s INFO prepare_target{force=false package_id=zclaw-memory v0.1.0 (G:\ZClaw_openfang\crates\zclaw-memory) target="zclaw_memory"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDependency { name: "zclaw_types", dep_mtime: FileTime { seconds: 13419612711, nanos: 569322800 }, max_mtime: FileTime { seconds: 13419567910, nanos: 424279900 } })
|
||||
1.035486400s INFO prepare_target{force=false package_id=zclaw-pipeline v0.1.0 (G:\ZClaw_openfang\crates\zclaw-pipeline) target="zclaw_pipeline"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-pipeline v0.1.0 (G:\ZClaw_openfang\crates\zclaw-pipeline)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("zclaw_pipeline", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-pipeline\\src\\lib.rs", Edition2021) }
|
||||
1.035520700s INFO prepare_target{force=false package_id=zclaw-pipeline v0.1.0 (G:\ZClaw_openfang\crates\zclaw-pipeline) target="zclaw_pipeline"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_runtime" })
|
||||
1.037793000s INFO prepare_target{force=false package_id=zclaw-protocols v0.1.0 (G:\ZClaw_openfang\crates\zclaw-protocols) target="zclaw_protocols"}: cargo::core::compiler::fingerprint: dependency on `zclaw_types` is newer than we are 13419612711.569322800s > 13419567909.911161100s "G:\\ZClaw_openfang\\crates\\zclaw-protocols"
|
||||
1.038224300s INFO prepare_target{force=false package_id=zclaw-protocols v0.1.0 (G:\ZClaw_openfang\crates\zclaw-protocols) target="zclaw_protocols"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-protocols v0.1.0 (G:\ZClaw_openfang\crates\zclaw-protocols)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("zclaw_protocols", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-protocols\\src\\lib.rs", Edition2021) }
|
||||
1.038246100s INFO prepare_target{force=false package_id=zclaw-protocols v0.1.0 (G:\ZClaw_openfang\crates\zclaw-protocols) target="zclaw_protocols"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDependency { name: "zclaw_types", dep_mtime: FileTime { seconds: 13419612711, nanos: 569322800 }, max_mtime: FileTime { seconds: 13419567909, nanos: 911161100 } })
|
||||
1.043467400s INFO prepare_target{force=false package_id=zclaw-runtime v0.1.0 (G:\ZClaw_openfang\crates\zclaw-runtime) target="zclaw_runtime"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-runtime v0.1.0 (G:\ZClaw_openfang\crates\zclaw-runtime)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("zclaw_runtime", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-runtime\\src\\lib.rs", Edition2021) }
|
||||
1.043562100s INFO prepare_target{force=false package_id=zclaw-runtime v0.1.0 (G:\ZClaw_openfang\crates\zclaw-runtime) target="zclaw_runtime"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_memory" })
|
||||
1.065776300s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw_saas"}: cargo::core::compiler::fingerprint: dependency on `zclaw_types` is newer than we are 13419612711.569322800s > 13419563288.054079500s "G:\\ZClaw_openfang\\crates\\zclaw-saas"
|
||||
1.066624400s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw_saas"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("zclaw_saas", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-saas\\src\\lib.rs", Edition2021) }
|
||||
1.066680400s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw_saas"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDependency { name: "zclaw_types", dep_mtime: FileTime { seconds: 13419612711, nanos: 569322800 }, max_mtime: FileTime { seconds: 13419563288, nanos: 54079500 } })
|
||||
1.091692800s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw_saas"}: cargo::core::compiler::fingerprint: dependency on `zclaw_types` is newer than we are 13419612711.569322800s > 13419563319.648178200s "G:\\ZClaw_openfang\\crates\\zclaw-saas"
|
||||
1.092045500s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw_saas"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("zclaw_saas", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-saas\\src\\lib.rs", Edition2021) }
|
||||
1.092074000s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw_saas"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDependency { name: "zclaw_types", dep_mtime: FileTime { seconds: 13419612711, nanos: 569322800 }, max_mtime: FileTime { seconds: 13419563319, nanos: 648178200 } })
|
||||
1.095548300s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw-saas"}: cargo::core::compiler::fingerprint: dependency on `zclaw_types` is newer than we are 13419612711.569322800s > 13419563292.618327300s "G:\\ZClaw_openfang\\crates\\zclaw-saas"
|
||||
1.095878800s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw-saas"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: false }/TargetInner { name: "zclaw-saas", doc: true, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\src\\main.rs", Edition2021) }
|
||||
1.095908100s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw-saas"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDependency { name: "zclaw_types", dep_mtime: FileTime { seconds: 13419612711, nanos: 569322800 }, max_mtime: FileTime { seconds: 13419563292, nanos: 618327300 } })
|
||||
1.099259500s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw-saas"}: cargo::core::compiler::fingerprint: dependency on `zclaw_types` is newer than we are 13419612711.569322800s > 13419563317.514688300s "G:\\ZClaw_openfang\\crates\\zclaw-saas"
|
||||
1.099703300s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw-saas"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { name: "zclaw-saas", doc: true, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\src\\main.rs", Edition2021) }
|
||||
1.099735400s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw-saas"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDependency { name: "zclaw_types", dep_mtime: FileTime { seconds: 13419612711, nanos: 569322800 }, max_mtime: FileTime { seconds: 13419563317, nanos: 514688300 } })
|
||||
1.103082400s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="account_test"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "account_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\account_test.rs", Edition2021) }
|
||||
1.103127900s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="account_test"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-saas-a9269a9ffd32d2df\test-integration-test-account_test`
|
||||
Blocking waiting for file lock on build directory
|
||||
176.768543900s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop_lib"}: cargo::core::compiler::fingerprint: fingerprint error for desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri)/Check { test: false }/TargetInner { ..: lib_target("desktop_lib", ["staticlib", "cdylib", "rlib"], "G:\\ZClaw_openfang\\desktop\\src-tauri\\src\\lib.rs", Edition2021) }
|
||||
176.769862900s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop_lib"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\desktop-6e8501c1619b0281\lib-desktop_lib`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
@@ -86,8 +27,184 @@ Stack backtrace:
|
||||
18: git_midx_writer_dump
|
||||
19: BaseThreadInitThunk
|
||||
20: RtlUserThreadStart
|
||||
1.146405300s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="agent_template_test"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "agent_template_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\agent_template_test.rs", Edition2021) }
|
||||
1.146458300s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="agent_template_test"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-saas-8c58be8f51866c7a\test-integration-test-agent_template_test`
|
||||
177.066556900s INFO prepare_target{force=false package_id=tauri-plugin-mcp v0.1.0 (https://github.com/P3GLEG/tauri-plugin-mcp#ac709a71) target="tauri_plugin_mcp"}: cargo::core::compiler::fingerprint: fingerprint error for tauri-plugin-mcp v0.1.0 (https://github.com/P3GLEG/tauri-plugin-mcp#ac709a71)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("tauri_plugin_mcp", ["lib"], "C:\\Users\\szend\\.cargo\\git\\checkouts\\tauri-plugin-mcp-2fd5dc058bb53a96\\ac709a7\\src\\lib.rs", Edition2024) }
|
||||
177.066892400s INFO prepare_target{force=false package_id=tauri-plugin-mcp v0.1.0 (https://github.com/P3GLEG/tauri-plugin-mcp#ac709a71) target="tauri_plugin_mcp"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\tauri-plugin-mcp-ee0b93d062615ff8\lib-tauri_plugin_mcp`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
|
||||
Stack backtrace:
|
||||
0: git_midx_writer_dump
|
||||
1: git_midx_writer_dump
|
||||
2: git_midx_writer_dump
|
||||
3: git_midx_writer_dump
|
||||
4: git_filter_source_repo
|
||||
5: git_filter_source_repo
|
||||
6: git_filter_source_repo
|
||||
7: git_filter_source_repo
|
||||
8: git_filter_source_repo
|
||||
9: git_filter_source_repo
|
||||
10: git_filter_source_repo
|
||||
11: git_filter_source_repo
|
||||
12: git_libgit2_prerelease
|
||||
13: <unknown>
|
||||
14: <unknown>
|
||||
15: <unknown>
|
||||
16: <unknown>
|
||||
17: git_midx_writer_dump
|
||||
18: git_filter_source_repo
|
||||
19: git_midx_writer_dump
|
||||
20: BaseThreadInitThunk
|
||||
21: RtlUserThreadStart
|
||||
177.086614900s INFO prepare_target{force=false package_id=zclaw-hands v0.1.0 (G:\ZClaw_openfang\crates\zclaw-hands) target="zclaw_hands"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-hands v0.1.0 (G:\ZClaw_openfang\crates\zclaw-hands)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("zclaw_hands", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-hands\\src\\lib.rs", Edition2021) }
|
||||
177.086653300s INFO prepare_target{force=false package_id=zclaw-hands v0.1.0 (G:\ZClaw_openfang\crates\zclaw-hands) target="zclaw_hands"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-hands-f4c480b5de073169\lib-zclaw_hands`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
|
||||
Stack backtrace:
|
||||
0: git_midx_writer_dump
|
||||
1: git_midx_writer_dump
|
||||
2: git_midx_writer_dump
|
||||
3: git_midx_writer_dump
|
||||
4: git_filter_source_repo
|
||||
5: git_filter_source_repo
|
||||
6: git_filter_source_repo
|
||||
7: git_filter_source_repo
|
||||
8: git_filter_source_repo
|
||||
9: git_filter_source_repo
|
||||
10: git_filter_source_repo
|
||||
11: git_filter_source_repo
|
||||
12: git_libgit2_prerelease
|
||||
13: <unknown>
|
||||
14: <unknown>
|
||||
15: <unknown>
|
||||
16: <unknown>
|
||||
17: git_midx_writer_dump
|
||||
18: git_filter_source_repo
|
||||
19: git_midx_writer_dump
|
||||
20: BaseThreadInitThunk
|
||||
21: RtlUserThreadStart
|
||||
177.088542800s INFO prepare_target{force=false package_id=zclaw-runtime v0.1.0 (G:\ZClaw_openfang\crates\zclaw-runtime) target="zclaw_runtime"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-runtime v0.1.0 (G:\ZClaw_openfang\crates\zclaw-runtime)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("zclaw_runtime", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-runtime\\src\\lib.rs", Edition2021) }
|
||||
177.088574000s INFO prepare_target{force=false package_id=zclaw-runtime v0.1.0 (G:\ZClaw_openfang\crates\zclaw-runtime) target="zclaw_runtime"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-runtime-7f4477c3695961ef\lib-zclaw_runtime`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
|
||||
Stack backtrace:
|
||||
0: git_midx_writer_dump
|
||||
1: git_midx_writer_dump
|
||||
2: git_midx_writer_dump
|
||||
3: git_midx_writer_dump
|
||||
4: git_filter_source_repo
|
||||
5: git_filter_source_repo
|
||||
6: git_filter_source_repo
|
||||
7: git_filter_source_repo
|
||||
8: git_filter_source_repo
|
||||
9: git_filter_source_repo
|
||||
10: git_filter_source_repo
|
||||
11: git_filter_source_repo
|
||||
12: git_filter_source_repo
|
||||
13: git_libgit2_prerelease
|
||||
14: <unknown>
|
||||
15: <unknown>
|
||||
16: <unknown>
|
||||
17: <unknown>
|
||||
18: git_midx_writer_dump
|
||||
19: git_filter_source_repo
|
||||
20: git_midx_writer_dump
|
||||
21: BaseThreadInitThunk
|
||||
22: RtlUserThreadStart
|
||||
177.100820300s INFO prepare_target{force=false package_id=zclaw-kernel v0.1.0 (G:\ZClaw_openfang\crates\zclaw-kernel) target="zclaw_kernel"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-kernel v0.1.0 (G:\ZClaw_openfang\crates\zclaw-kernel)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("zclaw_kernel", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-kernel\\src\\lib.rs", Edition2021) }
|
||||
177.100862200s INFO prepare_target{force=false package_id=zclaw-kernel v0.1.0 (G:\ZClaw_openfang\crates\zclaw-kernel) target="zclaw_kernel"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-kernel-1cabd63edddfb297\lib-zclaw_kernel`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
|
||||
Stack backtrace:
|
||||
0: git_midx_writer_dump
|
||||
1: git_midx_writer_dump
|
||||
2: git_midx_writer_dump
|
||||
3: git_midx_writer_dump
|
||||
4: git_filter_source_repo
|
||||
5: git_filter_source_repo
|
||||
6: git_filter_source_repo
|
||||
7: git_filter_source_repo
|
||||
8: git_filter_source_repo
|
||||
9: git_filter_source_repo
|
||||
10: git_filter_source_repo
|
||||
11: git_filter_source_repo
|
||||
12: git_libgit2_prerelease
|
||||
13: <unknown>
|
||||
14: <unknown>
|
||||
15: <unknown>
|
||||
16: <unknown>
|
||||
17: git_midx_writer_dump
|
||||
18: git_filter_source_repo
|
||||
19: git_midx_writer_dump
|
||||
20: BaseThreadInitThunk
|
||||
21: RtlUserThreadStart
|
||||
177.102460700s INFO prepare_target{force=false package_id=zclaw-protocols v0.1.0 (G:\ZClaw_openfang\crates\zclaw-protocols) target="zclaw_protocols"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-protocols v0.1.0 (G:\ZClaw_openfang\crates\zclaw-protocols)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("zclaw_protocols", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-protocols\\src\\lib.rs", Edition2021) }
|
||||
177.102482500s INFO prepare_target{force=false package_id=zclaw-protocols v0.1.0 (G:\ZClaw_openfang\crates\zclaw-protocols) target="zclaw_protocols"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-protocols-1f555b2e70e7ac27\lib-zclaw_protocols`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
|
||||
Stack backtrace:
|
||||
0: git_midx_writer_dump
|
||||
1: git_midx_writer_dump
|
||||
2: git_midx_writer_dump
|
||||
3: git_midx_writer_dump
|
||||
4: git_filter_source_repo
|
||||
5: git_filter_source_repo
|
||||
6: git_filter_source_repo
|
||||
7: git_filter_source_repo
|
||||
8: git_filter_source_repo
|
||||
9: git_filter_source_repo
|
||||
10: git_filter_source_repo
|
||||
11: git_filter_source_repo
|
||||
12: git_filter_source_repo
|
||||
13: git_libgit2_prerelease
|
||||
14: <unknown>
|
||||
15: <unknown>
|
||||
16: <unknown>
|
||||
17: <unknown>
|
||||
18: git_midx_writer_dump
|
||||
19: git_filter_source_repo
|
||||
20: git_midx_writer_dump
|
||||
21: BaseThreadInitThunk
|
||||
22: RtlUserThreadStart
|
||||
177.105473800s INFO prepare_target{force=false package_id=zclaw-pipeline v0.1.0 (G:\ZClaw_openfang\crates\zclaw-pipeline) target="zclaw_pipeline"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-pipeline v0.1.0 (G:\ZClaw_openfang\crates\zclaw-pipeline)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("zclaw_pipeline", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-pipeline\\src\\lib.rs", Edition2021) }
|
||||
177.105513900s INFO prepare_target{force=false package_id=zclaw-pipeline v0.1.0 (G:\ZClaw_openfang\crates\zclaw-pipeline) target="zclaw_pipeline"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-pipeline-bbe3cb327ae98249\lib-zclaw_pipeline`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
|
||||
Stack backtrace:
|
||||
0: git_midx_writer_dump
|
||||
1: git_midx_writer_dump
|
||||
2: git_midx_writer_dump
|
||||
3: git_midx_writer_dump
|
||||
4: git_filter_source_repo
|
||||
5: git_filter_source_repo
|
||||
6: git_filter_source_repo
|
||||
7: git_filter_source_repo
|
||||
8: git_filter_source_repo
|
||||
9: git_filter_source_repo
|
||||
10: git_filter_source_repo
|
||||
11: git_filter_source_repo
|
||||
12: git_libgit2_prerelease
|
||||
13: <unknown>
|
||||
14: <unknown>
|
||||
15: <unknown>
|
||||
16: <unknown>
|
||||
17: git_midx_writer_dump
|
||||
18: git_filter_source_repo
|
||||
19: git_midx_writer_dump
|
||||
20: BaseThreadInitThunk
|
||||
21: RtlUserThreadStart
|
||||
177.110560300s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop_lib"}: cargo::core::compiler::fingerprint: fingerprint error for desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri)/Check { test: true }/TargetInner { ..: lib_target("desktop_lib", ["staticlib", "cdylib", "rlib"], "G:\\ZClaw_openfang\\desktop\\src-tauri\\src\\lib.rs", Edition2021) }
|
||||
177.110603100s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop_lib"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\desktop-eb9c019f02725457\test-lib-desktop_lib`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
@@ -114,8 +231,8 @@ Stack backtrace:
|
||||
18: git_midx_writer_dump
|
||||
19: BaseThreadInitThunk
|
||||
20: RtlUserThreadStart
|
||||
1.149047900s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="auth_test"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "auth_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\auth_test.rs", Edition2021) }
|
||||
1.149089300s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="auth_test"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-saas-7b698637d97dcd96\test-integration-test-auth_test`
|
||||
177.114281800s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop"}: cargo::core::compiler::fingerprint: fingerprint error for desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri)/Check { test: false }/TargetInner { name: "desktop", doc: true, ..: with_path("G:\\ZClaw_openfang\\desktop\\src-tauri\\src\\main.rs", Edition2021) }
|
||||
177.114317800s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\desktop-e81c53ba3047e90c\bin-desktop`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
@@ -142,8 +259,8 @@ Stack backtrace:
|
||||
18: git_midx_writer_dump
|
||||
19: BaseThreadInitThunk
|
||||
20: RtlUserThreadStart
|
||||
1.152412500s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="migration_test"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "migration_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\migration_test.rs", Edition2021) }
|
||||
1.152451000s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="migration_test"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-saas-245216b4fc36fe76\test-integration-test-migration_test`
|
||||
177.116827500s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop"}: cargo::core::compiler::fingerprint: fingerprint error for desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri)/Check { test: true }/TargetInner { name: "desktop", doc: true, ..: with_path("G:\\ZClaw_openfang\\desktop\\src-tauri\\src\\main.rs", Edition2021) }
|
||||
177.116853400s INFO prepare_target{force=false package_id=desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri) target="desktop"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\desktop-999130f0694f9525\test-bin-desktop`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
@@ -170,8 +287,8 @@ Stack backtrace:
|
||||
18: git_midx_writer_dump
|
||||
19: BaseThreadInitThunk
|
||||
20: RtlUserThreadStart
|
||||
1.155511600s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="model_config_test"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "model_config_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\model_config_test.rs", Edition2021) }
|
||||
1.155575100s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="model_config_test"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-saas-61cf145d5b843730\test-integration-test-model_config_test`
|
||||
177.136913000s INFO prepare_target{force=false package_id=zclaw-growth v0.1.0 (G:\ZClaw_openfang\crates\zclaw-growth) target="extractor_e2e_test"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-growth v0.1.0 (G:\ZClaw_openfang\crates\zclaw-growth)/Check { test: true }/TargetInner { kind: "test", name: "extractor_e2e_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-growth\\tests\\extractor_e2e_test.rs", Edition2021) }
|
||||
177.136946400s INFO prepare_target{force=false package_id=zclaw-growth v0.1.0 (G:\ZClaw_openfang\crates\zclaw-growth) target="extractor_e2e_test"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-growth-e1a9bef36b0ee6ef\test-integration-test-extractor_e2e_test`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
@@ -198,8 +315,8 @@ Stack backtrace:
|
||||
18: git_midx_writer_dump
|
||||
19: BaseThreadInitThunk
|
||||
20: RtlUserThreadStart
|
||||
1.158974600s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="prompt_test"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "prompt_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\prompt_test.rs", Edition2021) }
|
||||
1.159016500s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="prompt_test"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-saas-fa9fc1b4b095cc65\test-integration-test-prompt_test`
|
||||
177.141408200s INFO prepare_target{force=false package_id=zclaw-hands v0.1.0 (G:\ZClaw_openfang\crates\zclaw-hands) target="zclaw_hands"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-hands v0.1.0 (G:\ZClaw_openfang\crates\zclaw-hands)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("zclaw_hands", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-hands\\src\\lib.rs", Edition2021) }
|
||||
177.141462500s INFO prepare_target{force=false package_id=zclaw-hands v0.1.0 (G:\ZClaw_openfang\crates\zclaw-hands) target="zclaw_hands"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-hands-dd78a0107ee05f8c\test-lib-zclaw_hands`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
@@ -226,8 +343,8 @@ Stack backtrace:
|
||||
18: git_midx_writer_dump
|
||||
19: BaseThreadInitThunk
|
||||
20: RtlUserThreadStart
|
||||
1.162175400s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="relay_test"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "relay_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\relay_test.rs", Edition2021) }
|
||||
1.162218300s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="relay_test"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-saas-2c13c07841280228\test-integration-test-relay_test`
|
||||
177.144299400s INFO prepare_target{force=false package_id=zclaw-kernel v0.1.0 (G:\ZClaw_openfang\crates\zclaw-kernel) target="zclaw_kernel"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-kernel v0.1.0 (G:\ZClaw_openfang\crates\zclaw-kernel)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("zclaw_kernel", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-kernel\\src\\lib.rs", Edition2021) }
|
||||
177.144327700s INFO prepare_target{force=false package_id=zclaw-kernel v0.1.0 (G:\ZClaw_openfang\crates\zclaw-kernel) target="zclaw_kernel"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-kernel-e9941c0d9a419586\test-lib-zclaw_kernel`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
@@ -254,8 +371,8 @@ Stack backtrace:
|
||||
18: git_midx_writer_dump
|
||||
19: BaseThreadInitThunk
|
||||
20: RtlUserThreadStart
|
||||
1.165054400s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="role_test"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "role_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\role_test.rs", Edition2021) }
|
||||
1.165093500s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="role_test"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-saas-b646bc755230c7d7\test-integration-test-role_test`
|
||||
177.147510900s INFO prepare_target{force=false package_id=zclaw-pipeline v0.1.0 (G:\ZClaw_openfang\crates\zclaw-pipeline) target="zclaw_pipeline"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-pipeline v0.1.0 (G:\ZClaw_openfang\crates\zclaw-pipeline)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("zclaw_pipeline", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-pipeline\\src\\lib.rs", Edition2021) }
|
||||
177.147550700s INFO prepare_target{force=false package_id=zclaw-pipeline v0.1.0 (G:\ZClaw_openfang\crates\zclaw-pipeline) target="zclaw_pipeline"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-pipeline-f4305cf6012db6e3\test-lib-zclaw_pipeline`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
@@ -282,8 +399,8 @@ Stack backtrace:
|
||||
18: git_midx_writer_dump
|
||||
19: BaseThreadInitThunk
|
||||
20: RtlUserThreadStart
|
||||
1.168497100s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="telemetry_test"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "telemetry_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\telemetry_test.rs", Edition2021) }
|
||||
1.168540800s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="telemetry_test"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-saas-029800a48d822c1a\test-integration-test-telemetry_test`
|
||||
177.149693000s INFO prepare_target{force=false package_id=zclaw-protocols v0.1.0 (G:\ZClaw_openfang\crates\zclaw-protocols) target="zclaw_protocols"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-protocols v0.1.0 (G:\ZClaw_openfang\crates\zclaw-protocols)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("zclaw_protocols", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-protocols\\src\\lib.rs", Edition2021) }
|
||||
177.149719100s INFO prepare_target{force=false package_id=zclaw-protocols v0.1.0 (G:\ZClaw_openfang\crates\zclaw-protocols) target="zclaw_protocols"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-protocols-98f5cea71f9f293c\test-lib-zclaw_protocols`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
@@ -310,32 +427,159 @@ Stack backtrace:
|
||||
18: git_midx_writer_dump
|
||||
19: BaseThreadInitThunk
|
||||
20: RtlUserThreadStart
|
||||
1.173226900s INFO prepare_target{force=false package_id=zclaw-skills v0.1.0 (G:\ZClaw_openfang\crates\zclaw-skills) target="zclaw_skills"}: cargo::core::compiler::fingerprint: dependency on `zclaw_types` is newer than we are 13419612711.569322800s > 13419567909.469676500s "G:\\ZClaw_openfang\\crates\\zclaw-skills"
|
||||
1.174130700s INFO prepare_target{force=false package_id=zclaw-skills v0.1.0 (G:\ZClaw_openfang\crates\zclaw-skills) target="zclaw_skills"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-skills v0.1.0 (G:\ZClaw_openfang\crates\zclaw-skills)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("zclaw_skills", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-skills\\src\\lib.rs", Edition2021) }
|
||||
1.174193300s INFO prepare_target{force=false package_id=zclaw-skills v0.1.0 (G:\ZClaw_openfang\crates\zclaw-skills) target="zclaw_skills"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDependency { name: "zclaw_types", dep_mtime: FileTime { seconds: 13419612711, nanos: 569322800 }, max_mtime: FileTime { seconds: 13419567909, nanos: 469676500 } })
|
||||
1.175740300s INFO prepare_target{force=false package_id=zclaw-types v0.1.0 (G:\ZClaw_openfang\crates\zclaw-types) target="zclaw_types"}: cargo::core::compiler::fingerprint: stale: changed "G:\\ZClaw_openfang\\crates\\zclaw-types\\src\\capability.rs"
|
||||
1.175766400s INFO prepare_target{force=false package_id=zclaw-types v0.1.0 (G:\ZClaw_openfang\crates\zclaw-types) target="zclaw_types"}: cargo::core::compiler::fingerprint: (vs) "G:\\ZClaw_openfang\\target\\debug\\.fingerprint\\zclaw-types-207c8f412c64ef2b\\dep-test-lib-zclaw_types"
|
||||
1.175773400s INFO prepare_target{force=false package_id=zclaw-types v0.1.0 (G:\ZClaw_openfang\crates\zclaw-types) target="zclaw_types"}: cargo::core::compiler::fingerprint: FileTime { seconds: 13419567910, nanos: 842970900 } < FileTime { seconds: 13419612005, nanos: 190136000 }
|
||||
1.176296900s INFO prepare_target{force=false package_id=zclaw-types v0.1.0 (G:\ZClaw_openfang\crates\zclaw-types) target="zclaw_types"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-types v0.1.0 (G:\ZClaw_openfang\crates\zclaw-types)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("zclaw_types", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-types\\src\\lib.rs", Edition2021) }
|
||||
1.176327500s INFO prepare_target{force=false package_id=zclaw-types v0.1.0 (G:\ZClaw_openfang\crates\zclaw-types) target="zclaw_types"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleItem(ChangedFile { reference: "G:\\ZClaw_openfang\\target\\debug\\.fingerprint\\zclaw-types-207c8f412c64ef2b\\dep-test-lib-zclaw_types", reference_mtime: FileTime { seconds: 13419567910, nanos: 842970900 }, stale: "G:\\ZClaw_openfang\\crates\\zclaw-types\\src\\capability.rs", stale_mtime: FileTime { seconds: 13419612005, nanos: 190136000 } }))
|
||||
Checking zclaw-growth v0.1.0 (G:\ZClaw_openfang\crates\zclaw-growth)
|
||||
Checking zclaw-memory v0.1.0 (G:\ZClaw_openfang\crates\zclaw-memory)
|
||||
177.151484800s INFO prepare_target{force=false package_id=zclaw-runtime v0.1.0 (G:\ZClaw_openfang\crates\zclaw-runtime) target="zclaw_runtime"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-runtime v0.1.0 (G:\ZClaw_openfang\crates\zclaw-runtime)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("zclaw_runtime", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-runtime\\src\\lib.rs", Edition2021) }
|
||||
177.151509600s INFO prepare_target{force=false package_id=zclaw-runtime v0.1.0 (G:\ZClaw_openfang\crates\zclaw-runtime) target="zclaw_runtime"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-runtime-3bf53d5d4652bdbb\test-lib-zclaw_runtime`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
|
||||
Stack backtrace:
|
||||
0: git_midx_writer_dump
|
||||
1: git_midx_writer_dump
|
||||
2: git_midx_writer_dump
|
||||
3: git_midx_writer_dump
|
||||
4: git_filter_source_repo
|
||||
5: git_filter_source_repo
|
||||
6: git_filter_source_repo
|
||||
7: git_filter_source_repo
|
||||
8: git_filter_source_repo
|
||||
9: git_filter_source_repo
|
||||
10: git_filter_source_repo
|
||||
11: git_libgit2_prerelease
|
||||
12: <unknown>
|
||||
13: <unknown>
|
||||
14: <unknown>
|
||||
15: <unknown>
|
||||
16: git_midx_writer_dump
|
||||
17: git_filter_source_repo
|
||||
18: git_midx_writer_dump
|
||||
19: BaseThreadInitThunk
|
||||
20: RtlUserThreadStart
|
||||
177.210432400s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw_saas"}: cargo::core::compiler::fingerprint: stale: changed "G:\\ZClaw_openfang\\crates\\zclaw-saas\\src\\billing\\payment.rs"
|
||||
177.210469500s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw_saas"}: cargo::core::compiler::fingerprint: (vs) "G:\\ZClaw_openfang\\target\\debug\\.fingerprint\\zclaw-saas-616e665ea1f84b08\\dep-lib-zclaw_saas"
|
||||
177.210477800s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw_saas"}: cargo::core::compiler::fingerprint: FileTime { seconds: 13419968410, nanos: 307242000 } < FileTime { seconds: 13420006010, nanos: 250356400 }
|
||||
177.217118800s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw_saas"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("zclaw_saas", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-saas\\src\\lib.rs", Edition2021) }
|
||||
177.217162900s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw_saas"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleItem(ChangedFile { reference: "G:\\ZClaw_openfang\\target\\debug\\.fingerprint\\zclaw-saas-616e665ea1f84b08\\dep-lib-zclaw_saas", reference_mtime: FileTime { seconds: 13419968410, nanos: 307242000 }, stale: "G:\\ZClaw_openfang\\crates\\zclaw-saas\\src\\billing\\payment.rs", stale_mtime: FileTime { seconds: 13420006010, nanos: 250356400 } }))
|
||||
177.254954300s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw_saas"}: cargo::core::compiler::fingerprint: stale: changed "G:\\ZClaw_openfang\\crates\\zclaw-saas\\src\\tasks\\mod.rs"
|
||||
177.254985200s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw_saas"}: cargo::core::compiler::fingerprint: (vs) "G:\\ZClaw_openfang\\target\\debug\\.fingerprint\\zclaw-saas-20e14acc146bdec5\\dep-test-lib-zclaw_saas"
|
||||
177.254992500s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw_saas"}: cargo::core::compiler::fingerprint: FileTime { seconds: 13419968432, nanos: 618535000 } < FileTime { seconds: 13420006265, nanos: 364589400 }
|
||||
177.263123600s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw_saas"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("zclaw_saas", ["lib"], "G:\\ZClaw_openfang\\crates\\zclaw-saas\\src\\lib.rs", Edition2021) }
|
||||
177.263179600s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw_saas"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleItem(ChangedFile { reference: "G:\\ZClaw_openfang\\target\\debug\\.fingerprint\\zclaw-saas-20e14acc146bdec5\\dep-test-lib-zclaw_saas", reference_mtime: FileTime { seconds: 13419968432, nanos: 618535000 }, stale: "G:\\ZClaw_openfang\\crates\\zclaw-saas\\src\\tasks\\mod.rs", stale_mtime: FileTime { seconds: 13420006265, nanos: 364589400 } }))
|
||||
177.287900200s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw-saas"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: false }/TargetInner { name: "zclaw-saas", doc: true, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\src\\main.rs", Edition2021) }
|
||||
177.287966000s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw-saas"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_saas" })
|
||||
177.297350800s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw-saas"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { name: "zclaw-saas", doc: true, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\src\\main.rs", Edition2021) }
|
||||
177.297395000s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="zclaw-saas"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_saas" })
|
||||
177.313622900s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="account_test"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "account_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\account_test.rs", Edition2021) }
|
||||
177.313678900s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="account_test"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_saas" })
|
||||
177.326434600s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="agent_template_test"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "agent_template_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\agent_template_test.rs", Edition2021) }
|
||||
177.326486500s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="agent_template_test"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_saas" })
|
||||
177.350558400s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="auth_test"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "auth_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\auth_test.rs", Edition2021) }
|
||||
177.350602700s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="auth_test"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_saas" })
|
||||
177.353565300s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="billing_test"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "billing_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\billing_test.rs", Edition2021) }
|
||||
177.353589400s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="billing_test"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-saas-989426a3b0a1bcbc\test-integration-test-billing_test`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
|
||||
Stack backtrace:
|
||||
0: git_midx_writer_dump
|
||||
1: git_midx_writer_dump
|
||||
2: git_midx_writer_dump
|
||||
3: git_midx_writer_dump
|
||||
4: git_filter_source_repo
|
||||
5: git_filter_source_repo
|
||||
6: git_filter_source_repo
|
||||
7: git_filter_source_repo
|
||||
8: git_filter_source_repo
|
||||
9: git_filter_source_repo
|
||||
10: git_filter_source_repo
|
||||
11: git_libgit2_prerelease
|
||||
12: <unknown>
|
||||
13: <unknown>
|
||||
14: <unknown>
|
||||
15: <unknown>
|
||||
16: git_midx_writer_dump
|
||||
17: git_filter_source_repo
|
||||
18: git_midx_writer_dump
|
||||
19: BaseThreadInitThunk
|
||||
20: RtlUserThreadStart
|
||||
177.356339400s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="knowledge_test"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "knowledge_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\knowledge_test.rs", Edition2021) }
|
||||
177.356376300s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="knowledge_test"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-saas-8332dec159e4717e\test-integration-test-knowledge_test`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
|
||||
Stack backtrace:
|
||||
0: git_midx_writer_dump
|
||||
1: git_midx_writer_dump
|
||||
2: git_midx_writer_dump
|
||||
3: git_midx_writer_dump
|
||||
4: git_filter_source_repo
|
||||
5: git_filter_source_repo
|
||||
6: git_filter_source_repo
|
||||
7: git_filter_source_repo
|
||||
8: git_filter_source_repo
|
||||
9: git_filter_source_repo
|
||||
10: git_filter_source_repo
|
||||
11: git_libgit2_prerelease
|
||||
12: <unknown>
|
||||
13: <unknown>
|
||||
14: <unknown>
|
||||
15: <unknown>
|
||||
16: git_midx_writer_dump
|
||||
17: git_filter_source_repo
|
||||
18: git_midx_writer_dump
|
||||
19: BaseThreadInitThunk
|
||||
20: RtlUserThreadStart
|
||||
177.379547100s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="migration_test"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "migration_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\migration_test.rs", Edition2021) }
|
||||
177.379592100s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="migration_test"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_saas" })
|
||||
177.390475100s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="model_config_test"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "model_config_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\model_config_test.rs", Edition2021) }
|
||||
177.390520600s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="model_config_test"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_saas" })
|
||||
177.443065600s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="prompt_test"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "prompt_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\prompt_test.rs", Edition2021) }
|
||||
177.443113300s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="prompt_test"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_saas" })
|
||||
177.485665400s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="relay_test"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "relay_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\relay_test.rs", Edition2021) }
|
||||
177.485728700s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="relay_test"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_saas" })
|
||||
177.494455700s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="role_test"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "role_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\role_test.rs", Edition2021) }
|
||||
177.494494300s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="role_test"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_saas" })
|
||||
177.497743400s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="scheduled_task_test"}: cargo::core::compiler::fingerprint: fingerprint error for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "scheduled_task_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\scheduled_task_test.rs", Edition2021) }
|
||||
177.497766200s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="scheduled_task_test"}: cargo::core::compiler::fingerprint: err: failed to read `G:\ZClaw_openfang\target\debug\.fingerprint\zclaw-saas-8522ac5844378ccc\test-integration-test-scheduled_task_test`
|
||||
|
||||
Caused by:
|
||||
系统找不到指定的文件。 (os error 2)
|
||||
|
||||
Stack backtrace:
|
||||
0: git_midx_writer_dump
|
||||
1: git_midx_writer_dump
|
||||
2: git_midx_writer_dump
|
||||
3: git_midx_writer_dump
|
||||
4: git_filter_source_repo
|
||||
5: git_filter_source_repo
|
||||
6: git_filter_source_repo
|
||||
7: git_filter_source_repo
|
||||
8: git_filter_source_repo
|
||||
9: git_filter_source_repo
|
||||
10: git_filter_source_repo
|
||||
11: git_libgit2_prerelease
|
||||
12: <unknown>
|
||||
13: <unknown>
|
||||
14: <unknown>
|
||||
15: <unknown>
|
||||
16: git_midx_writer_dump
|
||||
17: git_filter_source_repo
|
||||
18: git_midx_writer_dump
|
||||
19: BaseThreadInitThunk
|
||||
20: RtlUserThreadStart
|
||||
177.506553800s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="telemetry_test"}: cargo::core::compiler::fingerprint: fingerprint dirty for zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)/Check { test: true }/TargetInner { kind: "test", name: "telemetry_test", benched: false, ..: with_path("G:\\ZClaw_openfang\\crates\\zclaw-saas\\tests\\telemetry_test.rs", Edition2021) }
|
||||
177.506611300s INFO prepare_target{force=false package_id=zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas) target="telemetry_test"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleDepFingerprint { name: "zclaw_saas" })
|
||||
Checking zclaw-saas v0.1.0 (G:\ZClaw_openfang\crates\zclaw-saas)
|
||||
Checking zclaw-runtime v0.1.0 (G:\ZClaw_openfang\crates\zclaw-runtime)
|
||||
Checking zclaw-hands v0.1.0 (G:\ZClaw_openfang\crates\zclaw-hands)
|
||||
Checking zclaw-skills v0.1.0 (G:\ZClaw_openfang\crates\zclaw-skills)
|
||||
Checking zclaw-protocols v0.1.0 (G:\ZClaw_openfang\crates\zclaw-protocols)
|
||||
Checking tauri-plugin-mcp v0.1.0 (https://github.com/P3GLEG/tauri-plugin-mcp#ac709a71)
|
||||
Checking zclaw-kernel v0.1.0 (G:\ZClaw_openfang\crates\zclaw-kernel)
|
||||
Checking zclaw-pipeline v0.1.0 (G:\ZClaw_openfang\crates\zclaw-pipeline)
|
||||
Checking desktop v0.1.0 (G:\ZClaw_openfang\desktop\src-tauri)
|
||||
error: could not compile `zclaw-saas` (test "account_test") due to 3 previous errors
|
||||
warning: build failed, waiting for other jobs to finish...
|
||||
error: could not compile `zclaw-saas` (test "telemetry_test") due to 3 previous errors
|
||||
error: could not compile `zclaw-saas` (test "role_test") due to 3 previous errors
|
||||
error: could not compile `zclaw-saas` (test "agent_template_test") due to 3 previous errors
|
||||
error: could not compile `zclaw-saas` (test "model_config_test") due to 3 previous errors
|
||||
error: could not compile `zclaw-saas` (test "prompt_test") due to 3 previous errors
|
||||
error: could not compile `zclaw-saas` (test "auth_test") due to 3 previous errors; 2 warnings emitted
|
||||
error: could not compile `zclaw-saas` (test "relay_test") due to 3 previous errors; 1 warning emitted
|
||||
error: could not compile `zclaw-saas` (test "migration_test") due to 3 previous errors
|
||||
Checking zclaw-types v0.1.0 (G:\ZClaw_openfang\crates\zclaw-types)
|
||||
Checking zclaw-growth v0.1.0 (G:\ZClaw_openfang\crates\zclaw-growth)
|
||||
Finished `dev` profile [unoptimized + debuginfo] target(s) in 4m 12s
|
||||
warning: the following packages contain code that will be rejected by a future version of Rust: sqlx-postgres v0.7.4
|
||||
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user