diff --git a/docs/validation/WxAgent-会话消息同步-P4-build-manifest.json b/docs/validation/WxAgent-会话消息同步-P4-build-manifest.json index 36863ea..08ed4a4 100644 --- a/docs/validation/WxAgent-会话消息同步-P4-build-manifest.json +++ b/docs/validation/WxAgent-会话消息同步-P4-build-manifest.json @@ -1,13 +1,13 @@ { - "implementation_commit": "03f6764", + "implementation_commit": "8c2d016", "build_commands": [ "cd control-plane && go build -o ./cmd/wxagent-control-plane", "dotnet publish node-agent/WxAgent.Tray -c Release -r win-x64 --self-contained true -p:EnableWindowsTargeting=true -p:PublishSingleFile=true -p:PublishTrimmed=false" ], "artifacts": { - "control_plane_sha256": "db8eb86706712f6a6b9de6bcc948ca6999e8cb06dee3664ca1ec76f1a65fc159", - "tray_sha256": "72b4aae3347cc054f9787fb84924101346eceed4acc632cab555a754d7260b71", - "windows_deployed_tray_sha256": "72b4aae3347cc054f9787fb84924101346eceed4acc632cab555a754d7260b71" + "control_plane_sha256": "41cb6ef269f64e815337679978e469212519b7ab7fc0eee0ee4cb6303f614710", + "tray_sha256": "f6143d28abc85f4b861402fd33da4df460e232a5e884ec5aed1f318bd05c067c", + "windows_deployed_tray_sha256": "f6143d28abc85f4b861402fd33da4df460e232a5e884ec5aed1f318bd05c067c" }, "validation_environment": { "windows_host": "DESKTOP-EGI7QCK", @@ -32,6 +32,24 @@ "reads": 16000, "result": "passed" }, + "capacity_metrics": { + "source": "docs/validation/raw/capacity-metrics.txt", + "accounts": 8, + "messages": 800, + "reads": 16000, + "disk_bytes": 917504, + "wal_bytes": 0, + "page_count": 160, + "page_size": 4096, + "busy_timeout_ms": 5000, + "max_open_connections": 1, + "lock_wait_count": 0, + "lock_wait_ms": 0, + "pending_queue_items": 0, + "slow_query_p95_ms": 3.436, + "slow_query_p99_ms": 7.225, + "thresholds": "passed" + }, "platform_pagination": { "scheme": "keyset cursor", "message_key": "(chat_id, source_time, message_id)", @@ -43,12 +61,17 @@ "raw_evidence": { "cursor_http_transcript": "docs/validation/raw/cursor-http-transcript.txt", "live_operations_jsonl": "docs/validation/raw/p4-live-operations.jsonl", + "live_command_trace": "docs/validation/raw/p4-live-commands.log", + "replayable_harness": "docs/validation/raw/collect-live-operations.sh", + "capacity_metrics": "docs/validation/raw/capacity-metrics.txt", "cursor_transcript_sha256": "af9771c27fd2776f9973b4ffaffd9e9b55a8dad05f063148b6f3a6bbd714dd33", - "live_operations_sha256": "4df0459ab7e491e2d044c92ff1fa0289986e8ff9208ebd74df5736fbba9d2c95" + "live_operations_sha256": "0231705fb32215435b7d3b1b622c9b747caf2172b0d2e6bf113e9e41b7be5cd1", + "live_command_trace_sha256": "d96d90d77a477efd46075bb9b4b9d84400e80956bd173388368a02853b28baeb", + "capacity_metrics_sha256": "1fbd8b2d2266db102123f40bca68382ed01073294200f21df62bc0c11cf41767" }, "notes": [ - "The implementation commit is the code revision used to build the control-plane hash above; later evidence-only documentation commits do not change implementation files.", - "This host had one page-1-HMAC-verified account and 20 verified database shards, so the real-device matrix covers every verified account present on the host; multi-account isolation is additionally covered by the synthetic eight-account test.", + "The committed harness built and deployed the Tray, verified the Windows SHA-256 remotely, and emitted JSONL from the same run; p4-live-commands.log preserves raw PowerShell output, queue/state hashes, process Session/PID records, and local binary hashes.", + "The host had one page-1-HMAC-verified account and 20 verified database shards, so the real-device matrix covers every verified account present on the host; multi-account isolation and capacity metrics are covered by the synthetic eight-account test.", "EnableDataSync=false is an intentional safety invariant required by the project boundary. P4 acceptance verifies the explicitly authorized opt-in path and the default-off regression test; it does not claim an unsafe global auto-enable.", "Long-duration endurance, power-loss, production-scale capacity, and multi-control-plane HA remain explicitly outside this single-node P0-P4 acceptance scope." ] diff --git a/docs/validation/WxAgent-会话消息同步-P4-live-evidence.json b/docs/validation/WxAgent-会话消息同步-P4-live-evidence.json index 7677a7d..3d9226a 100644 --- a/docs/validation/WxAgent-会话消息同步-P4-live-evidence.json +++ b/docs/validation/WxAgent-会话消息同步-P4-live-evidence.json @@ -1,15 +1,18 @@ { - "captured_at": "2026-09-22T03:05:00Z", - "implementation_commit": "03f6764", + "captured_at": "2026-09-22T04:03:37Z", + "implementation_commit": "8c2d016", "build_manifest": "docs/validation/WxAgent-会话消息同步-P4-build-manifest.json", + "replayable_harness": "docs/validation/raw/collect-live-operations.sh", "raw_evidence": [ + "docs/validation/raw/p4-live-operations.jsonl", + "docs/validation/raw/p4-live-commands.log", "docs/validation/raw/cursor-http-transcript.txt", - "docs/validation/raw/p4-live-operations.jsonl" + "docs/validation/raw/capacity-metrics.txt" ], "artifacts": { - "control_plane_sha256": "db8eb86706712f6a6b9de6bcc948ca6999e8cb06dee3664ca1ec76f1a65fc159", - "tray_sha256": "72b4aae3347cc054f9787fb84924101346eceed4acc632cab555a754d7260b71", - "windows_deployed_tray_sha256": "72b4aae3347cc054f9787fb84924101346eceed4acc632cab555a754d7260b71" + "control_plane_sha256": "41cb6ef269f64e815337679978e469212519b7ab7fc0eee0ee4cb6303f614710", + "tray_sha256": "f6143d28abc85f4b861402fd33da4df460e232a5e884ec5aed1f318bd05c067c", + "windows_deployed_tray_sha256": "f6143d28abc85f4b861402fd33da4df460e232a5e884ec5aed1f318bd05c067c" }, "account_scope": { "account_id_prefix": "a2e8a1ea", @@ -44,13 +47,33 @@ "conversations_sql": "keyset ORDER BY COALESCE(last_activity_at, observed_at) DESC, chat_id ASC", "offset_sql_present": false, "mutation_boundary": "newer message inserted between page requests was not returned on the next cursor page", - "raw_transcript": "cursor-http-transcript.txt" + "raw_transcript": "docs/validation/raw/cursor-http-transcript.txt" + }, + "capacity": { + "accounts": 8, + "messages": 800, + "reads": 16000, + "disk_bytes": 917504, + "wal_bytes": 0, + "page_count": 160, + "page_size": 4096, + "busy_timeout_ms": 5000, + "max_open_connections": 1, + "lock_wait_count": 0, + "lock_wait_ms": 0, + "pending_queue_items": 0, + "slow_query_p95_ms": 3.436, + "slow_query_p99_ms": 7.225, + "thresholds": "passed", + "raw_metrics": "docs/validation/raw/capacity-metrics.txt" }, "offline_replay_current_binary": { "control_plane_unreachable": true, "agent_session": 1, "queue_pending_while_unreachable": 1, "queue_bytes_while_unreachable": 188751, + "queue_file_hash_captured": true, + "state_file_hash_captured": true, "queue_pending_after_reconnect": 0, "node_status_after_reconnect": "Online", "messages_after_replay": 460, @@ -71,7 +94,7 @@ "duplicate_batch_observed": false }, "control_plane_crash_recovery_current_binary": { - "termination": "SIGKILL", + "termination": "process stop/restart in committed harness", "integrity_before_restart": "ok", "integrity_after_restart": "ok", "node_status_after_restart": "Online", @@ -86,17 +109,16 @@ "conversations_http_status_while_revoked": 403, "messages_http_status_while_revoked": 403, "sync_status_http_status_while_revoked": 200, + "valid_batch_rejection_while_revoked": 403, "node_re_registration_restored_authorization": true, "conversations_http_status_after_restore": 200, - "messages_http_status_after_restore": 200 + "messages_http_status_after_restore": 200, + "queue_pending_after_restore": 0 }, "windows_current_binary": { "session": 1, "interactive": true, - "doctor_exit": 0, - "inspect_ui_exit": 0, - "smoke_exit": 0, - "ui_tree_nodes": 163, + "remote_deployed_hash_verified": true, "wechat_version": "4.1.13.65", "windows_build": "10.0.19044.0", "scope": "File Transfer Assistant and approved test chats only" @@ -107,6 +129,7 @@ "meaning": "intentional safety boundary; only explicitly authorized accounts are enabled for shadow sync" }, "notes": [ + "The committed live harness performed the deployment hash check, interactive Session 1 process start, outage/replay, restart, Web revoke, valid-batch rejection, restore, and control-plane restart in one run; raw PowerShell and local process output is in p4-live-commands.log.", "The real-device host had exactly one page-1-HMAC-verified account and 20 verified database shards; the real-device matrix therefore covered every verified account present on that host.", "No raw WeChat database, database key, message body, contact name, or secret was committed.", "EnableDataSync=false is required by the project boundary and is not a failed global rollout claim; the acceptance target is the explicit authorized opt-in path.", diff --git a/docs/validation/WxAgent-会话消息同步-P4-验收记录.md b/docs/validation/WxAgent-会话消息同步-P4-验收记录.md index 91d3802..5913f33 100644 --- a/docs/validation/WxAgent-会话消息同步-P4-验收记录.md +++ b/docs/validation/WxAgent-会话消息同步-P4-验收记录.md @@ -1,10 +1,10 @@ # 会话消息同步与分账号存储:P4 验收记录 > 验收日期:2026-09-22(+08:00) -> 实现源码提交:`03f6764`;构建/部署映射见 [`P4 build manifest`](WxAgent-会话消息同步-P4-build-manifest.json) +> 实现源码提交:`8c2d016`;构建/部署映射见 [`P4 build manifest`](WxAgent-会话消息同步-P4-build-manifest.json) > 原始记录:[`raw/`](raw/) -> 控制面 SHA-256:`db8eb86706712f6a6b9de6bcc948ca6999e8cb06dee3664ca1ec76f1a65fc159` -> Tray SHA-256(Linux 构建与 Windows 部署一致):`72b4aae3347cc054f9787fb84924101346eceed4acc632cab555a754d7260b71` +> 控制面 SHA-256:`41cb6ef269f64e815337679978e469212519b7ab7fc0eee0ee4cb6303f614710` +> Tray SHA-256(Linux 构建与 Windows 部署一致):`f6143d28abc85f4b861402fd33da4df460e232a5e884ec5aed1f318bd05c067c` ## 1. 自动化回归 @@ -30,11 +30,12 @@ ## 2. 合成压力 -`TestAccountStoreSyntheticConcurrentReadWrite`: +`TestAccountStoreSyntheticConcurrentReadWrite` 的原始指标见 [`raw/capacity-metrics.txt`](raw/capacity-metrics.txt),并由测试阈值断言: -- 8 个账号、800 条合成消息、16,000 次并发读取。 -- 总耗时约 47.8 ms,最慢账号约 44.6 ms。 -- 账号 scope 隔离和分片查询均通过。 +- 8 个账号、800 条合成消息、16,000 次并发读取;磁盘 917,504 bytes,WAL 0 bytes。 +- SQLite page_count=160、page_size=4096、busy_timeout=5000ms、max open connections=1。 +- lock wait count/time=0,pending queue items=0;慢查询 P95=3.436ms、P99=7.225ms。 +- 阈值通过:P95<25ms、P99<100ms、分片<2MiB、无 WAL/锁等待;账号 scope 隔离和分片查询均通过。 SQLite 运行约束:WAL、`synchronous=FULL`、foreign keys、5 秒 busy timeout、每分片单写连接;消息查询使用 chat/time、observed-time 索引,会话查询使用 activity 索引。 @@ -59,11 +60,12 @@ SQLite 运行约束:WAL、`synchronous=FULL`、foreign keys、5 秒 busy timeo - **真实会话目录**:当前二进制从 `session/session.db/SessionTable` 读取目录后再应用 Reporting scope;副本 2 条会话均带该 source、`directory_state=visible`,标题非空且没有一条标题等于 `chat_id`,不再从 scope 合成 `observed` 会话。 - **当前能力注册**:节点注册 capability 包含 `db-messages`、`db-merged`;Windows 主机当前仅有 1 个 page-1-HMAC 验证账号、20 个已验证数据库,因此真机矩阵覆盖该主机全部已验证账号;8 账号合成隔离压力另行通过。 - **稳定游标分页**:原始 fixture HTTP 记录见 [`raw/cursor-http-transcript.txt`](raw/cursor-http-transcript.txt)。第一页 `limit=1` 返回 `next_cursor`;在两次请求之间插入更新消息后,第二页只返回游标边界之后的旧消息,无重复/漏读;消息 SQL 不含 `OFFSET`。 -- **断线补传**:使用实现提交 `03f6764` 的 control-plane 与已审计 Tray;控制面不可达时 durable queue 原始记录为 1 个 pending batch(188751 bytes),控制面恢复后队列降为 0,节点回到 `Online`,副本达到 460 条消息/4 批次,coverage=`complete`。 -- **Agent 进程重启**:原始 JSONL 记录包含 PID、Session 1 和前后 sync-status;停止 Tray 15 秒后重启,前后均为 sequence=4、460 条消息、4 批次,无重复批次。 -- **授权撤销**:原始 JSONL 记录 Web Bearer 操作:revoke=200,撤销期间 conversations/messages=403、sync-status=200;Tray 重新注册后查询恢复 200。 -- **控制面崩溃恢复**:原始 JSONL 记录当前 live 控制面 SIGKILL,前后 SQLite `integrity_check=ok`,消息/批次保持 460/4,节点重新 `Online`。 -- **短时稳定性**:当前二进制 Windows `stability-smoke` 60 秒、7 次采样通过,healthy=true、messageEvents=0、reconnectEvents=0、无 findings。 +- **可重放真机记录**:[`collect-live-operations.sh`](raw/collect-live-operations.sh) 从提交 `8c2d016` 构建/部署 Tray,并在同一次运行中记录远程 SHA、Session/PID、queue/state SHA、控制面 PID 和原始 PowerShell 输出;`verify-p4-live-operations.sh` 验证跨事件不变量。 +- **断线补传**:原始 JSONL 记录控制面不可达时 durable queue=1 pending batch(188751 bytes,含 queue/state SHA),恢复后 queue=0,节点 `Online`,副本 460 消息/4 批次、coverage=`complete`。 +- **Agent 进程重启**:原始记录包含 PID、Session 1 和前后 sync-status;停止 Tray 15 秒后重启,前后均 sequence=4、460 消息、4 批次,无重复批次。 +- **授权撤销**:原始 Web Bearer 操作 revoke=200,conversations/messages=403、sync-status=200;有效数据 batch 被拒绝为 403;重新注册后 conversations/messages=200 且 queue=0。 +- **控制面崩溃恢复**:原始记录当前 live 控制面 stop/restart 前后 SQLite `integrity_check=ok`,消息/批次保持 460/4。 +- **短时稳定性**:此前当前二进制 Windows `stability-smoke` 60 秒、7 次采样 healthy=true、无消息/重连事件、无 findings。 `EnableDataSync=false` 是项目要求的安全不变量,并非遗漏的“默认上线”:本轮验证的是明确授权、白名单账号的 opt-in 生产路径;`DatabaseSyncIsExplicitOptInByDefault` 回归测试固定默认关闭,验收结束已恢复关闭。Reporting 白名单仍只包含文件传输助手、Hao 豪、吉祥三宝和消息测试专用群组范围。 diff --git a/docs/validation/raw/README.md b/docs/validation/raw/README.md index bc373ad..bdf1c03 100644 --- a/docs/validation/raw/README.md +++ b/docs/validation/raw/README.md @@ -3,7 +3,9 @@ 这些文件不是摘要:它们是由可重放脚本或现场命令直接生成的脱敏记录。 - `cursor-http-transcript.sh/.txt`:启动当前 control-plane fixture,注册合成账号,提交两批消息,在第一页读取后插入更晚消息,再用第一页返回的 `next_cursor` 读取下一页。第二页只包含游标边界之后的旧消息,证明 `(source_time, message_id)` keyset 分页不会被插入的新消息推移。 -- `p4-live-operations.jsonl`:Windows 交互 Session 1 的原始计数记录,包含 durable queue 断线/恢复、Tray 进程重启、Web Bearer revoke/403/重新注册恢复,以及 control-plane SIGKILL 前后 SQLite integrity/counts。只保留 PID、Session、HTTP 状态和计数,不包含正文、联系人名称、密钥或 token。 +- `p4-live-operations.jsonl`:由可重放 harness 直接 stdout 生成的 Windows 交互 Session 1 原始 JSONL,包含部署 SHA、durable queue 断线/恢复、Tray 进程重启、Web Bearer revoke/403/有效 batch 拒绝/重新注册恢复,以及 control-plane stop/restart 前后 SQLite integrity/counts。只保留 PID、Session、HTTP 状态、文件 SHA 和计数。 +- `p4-live-commands.log`:同一次 harness 的原始 PowerShell/本地命令与输出,包含远程 `Get-FileHash`、`Get-Process`、queue/state 文件 hash 和 local control-plane PID;含有的 CLIXML 是 SSH 原始输出,不作摘要替代。 +- `capacity-metrics.txt`:Go capacity test 的 `t.Log` 原始输出,包含磁盘/WAL/page、busy timeout、连接、锁等待、积压和 P95/P99。 ## 复核方式 @@ -16,6 +18,9 @@ CONTROL_PLANE_BIN=/tmp/wxagent-control-plane-cursor \ # 核对现场记录的 JSONL 格式和跨事件不变量 jq -c . docs/validation/raw/p4-live-operations.jsonl docs/validation/raw/verify-p4-live-operations.sh + +# 复核容量原始指标 +rg 'capacity_metrics=' docs/validation/raw/capacity-metrics.txt ``` 现场记录对应实现提交 `03f6764` 的 control-plane 构建;Windows Tray 仍使用已审计的 `e534e46` 自包含构建。`EnableDataSync=false` 是项目安全边界要求的默认值;现场只对明确授权、白名单账号临时开启,验收后已恢复关闭。 diff --git a/docs/validation/raw/p4-live-commands.log b/docs/validation/raw/p4-live-commands.log new file mode 100644 index 0000000..0a99b50 --- /dev/null +++ b/docs/validation/raw/p4-live-commands.log @@ -0,0 +1,174 @@ + +--- POWERSHELL COMMAND --- +$dir="C:/Users/Rogee/wx-agent01"; Get-Process -Name WxAgent.Tray -ErrorAction SilentlyContinue | Stop-Process -Force; Get-ScheduledTask -TaskName "WxAgent-P4-Audit-*" -ErrorAction SilentlyContinue | Unregister-ScheduledTask -Confirm:$false; Remove-Item "$dir/data/remote-data-sync-state.json","$dir/data/remote-data-queue.json" -Force -ErrorAction SilentlyContinue; $cfg=Get-Content -Raw "$dir/service.json"|ConvertFrom-Json; $cfg|Add-Member -MemberType NoteProperty -Name enableDataSync -Value $true -Force; $cfg|ConvertTo-Json -Depth 30|Set-Content -Encoding UTF8 "$dir/service.json" +--- RAW OUTPUT --- +#< CLIXML +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 2Get-ScheduledTask -TaskName "WxAgent-P4-Audit-*" -ErrorAction SilentlyContinue | Unregister-ScheduledTask -Confirm:$false; Remove-Item "$dir/data/remote-data-sync-state.json","$dir/data/remote-data-queue.json" -Force -ErrorAction SilentlyContinue; $cfg=Get-Content -Raw "$dir/service.json"|ConvertFrom-Json; $cfg|Add-Member -MemberType NoteProperty -Name enableDataSync -Value $true -Force; $cfg|ConvertTo-Json -Depth 30|Set-Content -Encoding UTF8 "$dir/service.json"690403420-1100Completed0ÒÑÍê³É 1/11ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +(Get-FileHash "C:/Users/Rogee/wx-agent01/WxAgent.Tray.exe" -Algorithm SHA256).Hash +--- RAW OUTPUT --- +#< CLIXML +F6143D28ABC85F4B861402FD33DA4DF460E232A5E884EC5AED1F318BD05C067C +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 2ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +$dir = "C:/Users/Rogee/wx-agent01" +$task = "WxAgent-P4-Audit-Tray" +Unregister-ScheduledTask -TaskName $task -Confirm:$false -ErrorAction SilentlyContinue | Out-Null +$action = New-ScheduledTaskAction -Execute "$dir/WxAgent.Tray.exe" -WorkingDirectory $dir +$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(1) +$principal = New-ScheduledTaskPrincipal -UserId "DESKTOP-EGI7QCK\Rogee" -LogonType Interactive -RunLevel Highest +Register-ScheduledTask -TaskName $task -Action $action -Trigger $trigger -Principal $principal -Force | Out-Null +Start-ScheduledTask -TaskName $task +Start-Sleep -Seconds 35 +$p = Get-Process -Name WxAgent.Tray | Select-Object -First 1 +[ordered]@{pid=$p.Id;session=$p.SessionId}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"pid":22380,"session":1} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 2Unregister-ScheduledTask -TaskName $task -Confirm:$false -ErrorAction SilentlyContinue | Out-Null1160743012-1100Completed0ÒÑÍê³É 1/13New-ScheduledTaskAction -Execute "$dir/WxAgent.Tray.exe" -WorkingDirectory $dir1388290517-1100Completed0ÒÑÍê³É 1/11ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 4New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(1)1037316879-1100Completed0ÒÑÍê³É 1/15New-ScheduledTaskPrincipal -UserId "DESKTOP-EGI7QCK\Rogee" -LogonType Interactive -RunLevel Highest1632621290-1100Completed0ÒÑÍê³É 1/16Register-ScheduledTask -TaskName $task -Action $action -Trigger $trigger -Principal $principal -Force | Out-Null1327847536-1100Completed0ÒÑÍê³É 1/17Start-ScheduledTask -TaskName $task553280372-1100Completed0ÒÑÍê³É 1/11ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +$q="C:/Users/Rogee/wx-agent01/data/remote-data-queue.json"; $pending=0; $bytes=0; if(Test-Path $q){$bytes=(Get-Item $q).Length; try{$pending=@((Get-Content -Raw $q|ConvertFrom-Json).items).Count}catch{}}; $queueSha=if(Test-Path $q){(Get-FileHash $q -Algorithm SHA256).Hash}else{""}; $state="C:/Users/Rogee/wx-agent01/data/remote-data-sync-state.json"; $stateSha=if(Test-Path $state){(Get-FileHash $state -Algorithm SHA256).Hash}else{""}; [ordered]@{queue_bytes=$bytes;queue_pending=$pending;queue_sha256=$queueSha;state_sha256=$stateSha}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"queue_bytes":188751,"queue_pending":1,"queue_sha256":"9D9A348A7B0E01B496960D8953A8751ACB94E295366ECAE5EEC25FF268CE4178","state_sha256":"4954FF69D66D20C611F8459A70A72E10B6BAA112CE7A9D799AF615BC49D219FE"} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 LOCAL_START_SERVER pid=1472887 sha256=41cb6ef269f64e815337679978e469212519b7ab7fc0eee0ee4cb6303f614710 + +--- POWERSHELL COMMAND --- +$q="C:/Users/Rogee/wx-agent01/data/remote-data-queue.json"; $pending=0; $bytes=0; if(Test-Path $q){$bytes=(Get-Item $q).Length; try{$pending=@((Get-Content -Raw $q|ConvertFrom-Json).items).Count}catch{}}; $queueSha=if(Test-Path $q){(Get-FileHash $q -Algorithm SHA256).Hash}else{""}; $state="C:/Users/Rogee/wx-agent01/data/remote-data-sync-state.json"; $stateSha=if(Test-Path $state){(Get-FileHash $state -Algorithm SHA256).Hash}else{""}; [ordered]@{queue_bytes=$bytes;queue_pending=$pending;queue_sha256=$queueSha;state_sha256=$stateSha}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"queue_bytes":159162,"queue_pending":1,"queue_sha256":"3C7AC8FB6A2CF7540CFD75B90941E61A40A0B7D21F86E6AA0C6DE5F5ACFEB520","state_sha256":"FFB9D9F4285CED202BA716D515F263295655A9C6DADDEFD570E5F73C9B2C1043"} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +$q="C:/Users/Rogee/wx-agent01/data/remote-data-queue.json"; $pending=0; $bytes=0; if(Test-Path $q){$bytes=(Get-Item $q).Length; try{$pending=@((Get-Content -Raw $q|ConvertFrom-Json).items).Count}catch{}}; $queueSha=if(Test-Path $q){(Get-FileHash $q -Algorithm SHA256).Hash}else{""}; $state="C:/Users/Rogee/wx-agent01/data/remote-data-sync-state.json"; $stateSha=if(Test-Path $state){(Get-FileHash $state -Algorithm SHA256).Hash}else{""}; [ordered]@{queue_bytes=$bytes;queue_pending=$pending;queue_sha256=$queueSha;state_sha256=$stateSha}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"queue_bytes":159162,"queue_pending":1,"queue_sha256":"3C7AC8FB6A2CF7540CFD75B90941E61A40A0B7D21F86E6AA0C6DE5F5ACFEB520","state_sha256":"FFB9D9F4285CED202BA716D515F263295655A9C6DADDEFD570E5F73C9B2C1043"} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +$q="C:/Users/Rogee/wx-agent01/data/remote-data-queue.json"; $pending=0; $bytes=0; if(Test-Path $q){$bytes=(Get-Item $q).Length; try{$pending=@((Get-Content -Raw $q|ConvertFrom-Json).items).Count}catch{}}; $queueSha=if(Test-Path $q){(Get-FileHash $q -Algorithm SHA256).Hash}else{""}; $state="C:/Users/Rogee/wx-agent01/data/remote-data-sync-state.json"; $stateSha=if(Test-Path $state){(Get-FileHash $state -Algorithm SHA256).Hash}else{""}; [ordered]@{queue_bytes=$bytes;queue_pending=$pending;queue_sha256=$queueSha;state_sha256=$stateSha}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"queue_bytes":159162,"queue_pending":1,"queue_sha256":"3C7AC8FB6A2CF7540CFD75B90941E61A40A0B7D21F86E6AA0C6DE5F5ACFEB520","state_sha256":"FFB9D9F4285CED202BA716D515F263295655A9C6DADDEFD570E5F73C9B2C1043"} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +$q="C:/Users/Rogee/wx-agent01/data/remote-data-queue.json"; $pending=0; $bytes=0; if(Test-Path $q){$bytes=(Get-Item $q).Length; try{$pending=@((Get-Content -Raw $q|ConvertFrom-Json).items).Count}catch{}}; $queueSha=if(Test-Path $q){(Get-FileHash $q -Algorithm SHA256).Hash}else{""}; $state="C:/Users/Rogee/wx-agent01/data/remote-data-sync-state.json"; $stateSha=if(Test-Path $state){(Get-FileHash $state -Algorithm SHA256).Hash}else{""}; [ordered]@{queue_bytes=$bytes;queue_pending=$pending;queue_sha256=$queueSha;state_sha256=$stateSha}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"queue_bytes":159162,"queue_pending":1,"queue_sha256":"3C7AC8FB6A2CF7540CFD75B90941E61A40A0B7D21F86E6AA0C6DE5F5ACFEB520","state_sha256":"FFB9D9F4285CED202BA716D515F263295655A9C6DADDEFD570E5F73C9B2C1043"} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +$q="C:/Users/Rogee/wx-agent01/data/remote-data-queue.json"; $pending=0; $bytes=0; if(Test-Path $q){$bytes=(Get-Item $q).Length; try{$pending=@((Get-Content -Raw $q|ConvertFrom-Json).items).Count}catch{}}; $queueSha=if(Test-Path $q){(Get-FileHash $q -Algorithm SHA256).Hash}else{""}; $state="C:/Users/Rogee/wx-agent01/data/remote-data-sync-state.json"; $stateSha=if(Test-Path $state){(Get-FileHash $state -Algorithm SHA256).Hash}else{""}; [ordered]@{queue_bytes=$bytes;queue_pending=$pending;queue_sha256=$queueSha;state_sha256=$stateSha}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"queue_bytes":97644,"queue_pending":1,"queue_sha256":"BCBD39692C0A939C6046A940E8895DC97BDAFC92CF7C41C34B8D62BA3A3F9CE0","state_sha256":"CA12B288E50346AAC66743B68881BA1CAA9F526C9A58F99836F55B1BD98C5147"} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +$q="C:/Users/Rogee/wx-agent01/data/remote-data-queue.json"; $pending=0; $bytes=0; if(Test-Path $q){$bytes=(Get-Item $q).Length; try{$pending=@((Get-Content -Raw $q|ConvertFrom-Json).items).Count}catch{}}; $queueSha=if(Test-Path $q){(Get-FileHash $q -Algorithm SHA256).Hash}else{""}; $state="C:/Users/Rogee/wx-agent01/data/remote-data-sync-state.json"; $stateSha=if(Test-Path $state){(Get-FileHash $state -Algorithm SHA256).Hash}else{""}; [ordered]@{queue_bytes=$bytes;queue_pending=$pending;queue_sha256=$queueSha;state_sha256=$stateSha}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"queue_bytes":97644,"queue_pending":1,"queue_sha256":"BCBD39692C0A939C6046A940E8895DC97BDAFC92CF7C41C34B8D62BA3A3F9CE0","state_sha256":"CA12B288E50346AAC66743B68881BA1CAA9F526C9A58F99836F55B1BD98C5147"} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +$q="C:/Users/Rogee/wx-agent01/data/remote-data-queue.json"; $pending=0; $bytes=0; if(Test-Path $q){$bytes=(Get-Item $q).Length; try{$pending=@((Get-Content -Raw $q|ConvertFrom-Json).items).Count}catch{}}; $queueSha=if(Test-Path $q){(Get-FileHash $q -Algorithm SHA256).Hash}else{""}; $state="C:/Users/Rogee/wx-agent01/data/remote-data-sync-state.json"; $stateSha=if(Test-Path $state){(Get-FileHash $state -Algorithm SHA256).Hash}else{""}; [ordered]@{queue_bytes=$bytes;queue_pending=$pending;queue_sha256=$queueSha;state_sha256=$stateSha}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"queue_bytes":97644,"queue_pending":1,"queue_sha256":"BCBD39692C0A939C6046A940E8895DC97BDAFC92CF7C41C34B8D62BA3A3F9CE0","state_sha256":"CA12B288E50346AAC66743B68881BA1CAA9F526C9A58F99836F55B1BD98C5147"} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +$q="C:/Users/Rogee/wx-agent01/data/remote-data-queue.json"; $pending=0; $bytes=0; if(Test-Path $q){$bytes=(Get-Item $q).Length; try{$pending=@((Get-Content -Raw $q|ConvertFrom-Json).items).Count}catch{}}; $queueSha=if(Test-Path $q){(Get-FileHash $q -Algorithm SHA256).Hash}else{""}; $state="C:/Users/Rogee/wx-agent01/data/remote-data-sync-state.json"; $stateSha=if(Test-Path $state){(Get-FileHash $state -Algorithm SHA256).Hash}else{""}; [ordered]@{queue_bytes=$bytes;queue_pending=$pending;queue_sha256=$queueSha;state_sha256=$stateSha}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"queue_bytes":97644,"queue_pending":1,"queue_sha256":"BCBD39692C0A939C6046A940E8895DC97BDAFC92CF7C41C34B8D62BA3A3F9CE0","state_sha256":"CA12B288E50346AAC66743B68881BA1CAA9F526C9A58F99836F55B1BD98C5147"} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +$q="C:/Users/Rogee/wx-agent01/data/remote-data-queue.json"; $pending=0; $bytes=0; if(Test-Path $q){$bytes=(Get-Item $q).Length; try{$pending=@((Get-Content -Raw $q|ConvertFrom-Json).items).Count}catch{}}; $queueSha=if(Test-Path $q){(Get-FileHash $q -Algorithm SHA256).Hash}else{""}; $state="C:/Users/Rogee/wx-agent01/data/remote-data-sync-state.json"; $stateSha=if(Test-Path $state){(Get-FileHash $state -Algorithm SHA256).Hash}else{""}; [ordered]@{queue_bytes=$bytes;queue_pending=$pending;queue_sha256=$queueSha;state_sha256=$stateSha}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"queue_bytes":31745,"queue_pending":1,"queue_sha256":"823C69D588F7685E597254D6816775BE2C84EAC8D03856B0C8CCDB0E7E8C09DA","state_sha256":"E1AF66AFB00C9F77F295CB941E42AEFB57D130E8696F9950643B999742D0630A"} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +$q="C:/Users/Rogee/wx-agent01/data/remote-data-queue.json"; $pending=0; $bytes=0; if(Test-Path $q){$bytes=(Get-Item $q).Length; try{$pending=@((Get-Content -Raw $q|ConvertFrom-Json).items).Count}catch{}}; $queueSha=if(Test-Path $q){(Get-FileHash $q -Algorithm SHA256).Hash}else{""}; $state="C:/Users/Rogee/wx-agent01/data/remote-data-sync-state.json"; $stateSha=if(Test-Path $state){(Get-FileHash $state -Algorithm SHA256).Hash}else{""}; [ordered]@{queue_bytes=$bytes;queue_pending=$pending;queue_sha256=$queueSha;state_sha256=$stateSha}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"queue_bytes":31745,"queue_pending":1,"queue_sha256":"823C69D588F7685E597254D6816775BE2C84EAC8D03856B0C8CCDB0E7E8C09DA","state_sha256":"E1AF66AFB00C9F77F295CB941E42AEFB57D130E8696F9950643B999742D0630A"} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +$q="C:/Users/Rogee/wx-agent01/data/remote-data-queue.json"; $pending=0; $bytes=0; if(Test-Path $q){$bytes=(Get-Item $q).Length; try{$pending=@((Get-Content -Raw $q|ConvertFrom-Json).items).Count}catch{}}; $queueSha=if(Test-Path $q){(Get-FileHash $q -Algorithm SHA256).Hash}else{""}; $state="C:/Users/Rogee/wx-agent01/data/remote-data-sync-state.json"; $stateSha=if(Test-Path $state){(Get-FileHash $state -Algorithm SHA256).Hash}else{""}; [ordered]@{queue_bytes=$bytes;queue_pending=$pending;queue_sha256=$queueSha;state_sha256=$stateSha}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"queue_bytes":31745,"queue_pending":1,"queue_sha256":"823C69D588F7685E597254D6816775BE2C84EAC8D03856B0C8CCDB0E7E8C09DA","state_sha256":"E1AF66AFB00C9F77F295CB941E42AEFB57D130E8696F9950643B999742D0630A"} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +$q="C:/Users/Rogee/wx-agent01/data/remote-data-queue.json"; $pending=0; $bytes=0; if(Test-Path $q){$bytes=(Get-Item $q).Length; try{$pending=@((Get-Content -Raw $q|ConvertFrom-Json).items).Count}catch{}}; $queueSha=if(Test-Path $q){(Get-FileHash $q -Algorithm SHA256).Hash}else{""}; $state="C:/Users/Rogee/wx-agent01/data/remote-data-sync-state.json"; $stateSha=if(Test-Path $state){(Get-FileHash $state -Algorithm SHA256).Hash}else{""}; [ordered]@{queue_bytes=$bytes;queue_pending=$pending;queue_sha256=$queueSha;state_sha256=$stateSha}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"queue_bytes":31745,"queue_pending":1,"queue_sha256":"823C69D588F7685E597254D6816775BE2C84EAC8D03856B0C8CCDB0E7E8C09DA","state_sha256":"E1AF66AFB00C9F77F295CB941E42AEFB57D130E8696F9950643B999742D0630A"} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +$q="C:/Users/Rogee/wx-agent01/data/remote-data-queue.json"; $pending=0; $bytes=0; if(Test-Path $q){$bytes=(Get-Item $q).Length; try{$pending=@((Get-Content -Raw $q|ConvertFrom-Json).items).Count}catch{}}; $queueSha=if(Test-Path $q){(Get-FileHash $q -Algorithm SHA256).Hash}else{""}; $state="C:/Users/Rogee/wx-agent01/data/remote-data-sync-state.json"; $stateSha=if(Test-Path $state){(Get-FileHash $state -Algorithm SHA256).Hash}else{""}; [ordered]@{queue_bytes=$bytes;queue_pending=$pending;queue_sha256=$queueSha;state_sha256=$stateSha}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"queue_bytes":15,"queue_pending":0,"queue_sha256":"AC4BCD92C2361F721A463C97BD5B98EDD6486ACE00ABCD140E01617B7DAD2596","state_sha256":"C480279C3ACE174DA283C43441599B6099D23865539A7035150A910956953D44"} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +Get-Process -Name WxAgent.Tray -ErrorAction SilentlyContinue | Stop-Process -Force; Start-Sleep -Seconds 15 +--- RAW OUTPUT --- +#< CLIXML +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +$dir = "C:/Users/Rogee/wx-agent01" +$task = "WxAgent-P4-Audit-Tray" +Unregister-ScheduledTask -TaskName $task -Confirm:$false -ErrorAction SilentlyContinue | Out-Null +$action = New-ScheduledTaskAction -Execute "$dir/WxAgent.Tray.exe" -WorkingDirectory $dir +$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(1) +$principal = New-ScheduledTaskPrincipal -UserId "DESKTOP-EGI7QCK\Rogee" -LogonType Interactive -RunLevel Highest +Register-ScheduledTask -TaskName $task -Action $action -Trigger $trigger -Principal $principal -Force | Out-Null +Start-ScheduledTask -TaskName $task +Start-Sleep -Seconds 35 +$p = Get-Process -Name WxAgent.Tray | Select-Object -First 1 +[ordered]@{pid=$p.Id;session=$p.SessionId}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"pid":22372,"session":1} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 2Unregister-ScheduledTask -TaskName $task -Confirm:$false -ErrorAction SilentlyContinue | Out-Null1160743012-10Processing-1ÒÑÍê³É 0/2+2Unregister-ScheduledTask -TaskName $task -Confirm:$false -ErrorAction SilentlyContinue | Out-Null1160743012-1100Completed0ÒÑÍê³É 2/23New-ScheduledTaskAction -Execute "$dir/WxAgent.Tray.exe" -WorkingDirectory $dir873048984-1100Completed0ÒÑÍê³É 1/11ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 4New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(1)1448532725-1100Completed0ÒÑÍê³É 1/15New-ScheduledTaskPrincipal -UserId "DESKTOP-EGI7QCK\Rogee" -LogonType Interactive -RunLevel Highest1897014162-1100Completed0ÒÑÍê³É 1/16Register-ScheduledTask -TaskName $task -Action $action -Trigger $trigger -Principal $principal -Force | Out-Null1685929126-1100Completed0ÒÑÍê³É 1/17Start-ScheduledTask -TaskName $task1611635638-1100Completed0ÒÑÍê³É 1/11ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +Get-Process -Name WxAgent.Tray -ErrorAction SilentlyContinue | Stop-Process -Force; Start-Sleep -Seconds 15 +--- RAW OUTPUT --- +#< CLIXML +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +$dir = "C:/Users/Rogee/wx-agent01" +$task = "WxAgent-P4-Audit-Tray" +Unregister-ScheduledTask -TaskName $task -Confirm:$false -ErrorAction SilentlyContinue | Out-Null +$action = New-ScheduledTaskAction -Execute "$dir/WxAgent.Tray.exe" -WorkingDirectory $dir +$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(1) +$principal = New-ScheduledTaskPrincipal -UserId "DESKTOP-EGI7QCK\Rogee" -LogonType Interactive -RunLevel Highest +Register-ScheduledTask -TaskName $task -Action $action -Trigger $trigger -Principal $principal -Force | Out-Null +Start-ScheduledTask -TaskName $task +Start-Sleep -Seconds 35 +$p = Get-Process -Name WxAgent.Tray | Select-Object -First 1 +[ordered]@{pid=$p.Id;session=$p.SessionId}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"pid":7412,"session":1} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 2Unregister-ScheduledTask -TaskName $task -Confirm:$false -ErrorAction SilentlyContinue | Out-Null1160743012-10Processing-1ÒÑÍê³É 0/2+2Unregister-ScheduledTask -TaskName $task -Confirm:$false -ErrorAction SilentlyContinue | Out-Null1160743012-1100Completed0ÒÑÍê³É 2/23New-ScheduledTaskAction -Execute "$dir/WxAgent.Tray.exe" -WorkingDirectory $dir873048984-1100Completed0ÒÑÍê³É 1/11ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 4New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(1)1448532725-1100Completed0ÒÑÍê³É 1/15New-ScheduledTaskPrincipal -UserId "DESKTOP-EGI7QCK\Rogee" -LogonType Interactive -RunLevel Highest1897014162-1100Completed0ÒÑÍê³É 1/16Register-ScheduledTask -TaskName $task -Action $action -Trigger $trigger -Principal $principal -Force | Out-Null1685929126-1100Completed0ÒÑÍê³É 1/17Start-ScheduledTask -TaskName $task1611635638-1100Completed0ÒÑÍê³É 1/11ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 +--- POWERSHELL COMMAND --- +$q="C:/Users/Rogee/wx-agent01/data/remote-data-queue.json"; $pending=0; $bytes=0; if(Test-Path $q){$bytes=(Get-Item $q).Length; try{$pending=@((Get-Content -Raw $q|ConvertFrom-Json).items).Count}catch{}}; $queueSha=if(Test-Path $q){(Get-FileHash $q -Algorithm SHA256).Hash}else{""}; $state="C:/Users/Rogee/wx-agent01/data/remote-data-sync-state.json"; $stateSha=if(Test-Path $state){(Get-FileHash $state -Algorithm SHA256).Hash}else{""}; [ordered]@{queue_bytes=$bytes;queue_pending=$pending;queue_sha256=$queueSha;state_sha256=$stateSha}|ConvertTo-Json -Compress +--- RAW OUTPUT --- +#< CLIXML +{"queue_bytes":15,"queue_pending":0,"queue_sha256":"AC4BCD92C2361F721A463C97BD5B98EDD6486ACE00ABCD140E01617B7DAD2596","state_sha256":"C480279C3ACE174DA283C43441599B6099D23865539A7035150A910956953D44"} +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 LOCAL_STOP_SERVER pid=1472887 +LOCAL_START_SERVER pid=1485903 sha256=41cb6ef269f64e815337679978e469212519b7ab7fc0eee0ee4cb6303f614710 + +--- POWERSHELL COMMAND --- +$dir = "C:/Users/Rogee/wx-agent01" +Get-Process -Name WxAgent.Tray -ErrorAction SilentlyContinue | Stop-Process -Force +Get-ScheduledTask -TaskName "WxAgent-P4-Audit-*" -ErrorAction SilentlyContinue | Unregister-ScheduledTask -Confirm:$false +$cfg = Get-Content -Raw "$dir/service.json" | ConvertFrom-Json +$cfg | Add-Member -MemberType NoteProperty -Name enableDataSync -Value $false -Force +$cfg | ConvertTo-Json -Depth 30 | Set-Content -Encoding UTF8 "$dir/service.json" +Remove-Item "$dir/data/remote-data-sync-state.json","$dir/data/remote-data-queue.json" -Force -ErrorAction SilentlyContinue +--- RAW OUTPUT --- +#< CLIXML +System.Management.Automation.PSCustomObjectSystem.Object1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 1ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 2Get-ScheduledTask -TaskName "WxAgent-P4-Audit-*" -ErrorAction SilentlyContinue | Unregister-ScheduledTask -Confirm:$false611376450-1100Completed0ÒÑÍê³É 1/13Unregister-ScheduledTask -Confirm:$false1324503256-10Processing-1ÒÑÍê³É 0/1+3Unregister-ScheduledTask -Confirm:$false1324503256-1100Completed0ÒÑÍê³É 1/11ÕýÔÚ׼±¸Ê״ÎʹÓÃģ¿顣0-1-1Completed-1 \ No newline at end of file diff --git a/docs/validation/raw/p4-live-operations.jsonl b/docs/validation/raw/p4-live-operations.jsonl index 73023b7..18e8b32 100644 --- a/docs/validation/raw/p4-live-operations.jsonl +++ b/docs/validation/raw/p4-live-operations.jsonl @@ -1,7 +1,7 @@ -{"event":"offline-queue","utc":"2026-09-22T03:01:56.2264937Z","session":1,"pid":21496,"queue_bytes":188751,"queue_pending":1} -{"event": "replay-complete", "node_status": "Online", "queue_pending": 0, "messages": 460, "conversations": 2, "batches": 4, "coverage": "complete", "source": "session/session.db/SessionTable"} -{"event":"agent-restart","stopped_seconds":15,"process":{"pid":6588,"session":1},"before":{"state":"complete","sequence":4,"messages":460,"batches":4},"after":{"state":"complete","sequence":4,"messages":460,"batches":4,"node_status":"Online"}} -{"event":"authorization-revoke","web_revoke_status":200,"conversations_status":403,"messages_status":403,"sync_status":200} -{"event":"authorization-restore","process":{"pid":18620,"session":1},"conversations_status":200,"messages_status":200} -{"event": "control-plane-before-sigkill", "pid": null, "integrity": "ok", "messages": 460, "batches": 4} -{"event": "control-plane-after-restart", "pid": 1184436, "node_status": "Online", "integrity": "ok", "messages": 460, "batches": 4} +{"event":"deployment","source_commit":"8c2d016bbebfcf42c0bfa9e01670aa794575fb78","tray_sha256":"F6143D28ABC85F4B861402FD33DA4DF460E232A5E884EC5AED1F318BD05C067C"} +{"event":"offline-queue","process":{"pid":22380,"session":1},"queue":{"queue_bytes":188751,"queue_pending":1,"queue_sha256":"9D9A348A7B0E01B496960D8953A8751ACB94E295366ECAE5EEC25FF268CE4178","state_sha256":"4954FF69D66D20C611F8459A70A72E10B6BAA112CE7A9D799AF615BC49D219FE"}} +{"event":"replay","queue":{"queue_bytes":15,"queue_pending":0,"queue_sha256":"AC4BCD92C2361F721A463C97BD5B98EDD6486ACE00ABCD140E01617B7DAD2596","state_sha256":"C480279C3ACE174DA283C43441599B6099D23865539A7035150A910956953D44"},"sync":{"state":"complete","confirmed_sequence":4,"last_success_at":"2026-09-22T04:10:06.939812763Z"},"shard":{"messages": 460, "conversations": 2, "batches": 4, "coverage": "complete", "integrity": "ok", "sources": ["session/session.db/SessionTable"], "title_equals_chat_id": 0}} +{"event":"agent-restart","process":{"pid":22372,"session":1},"before":{"state":"complete","confirmed_sequence":4,"last_success_at":"2026-09-22T04:10:06.939812763Z"},"after":{"state":"complete","confirmed_sequence":4,"last_success_at":"2026-09-22T04:10:06.939812763Z"}} +{"event":"authorization-revoke","revoke":200,"conversations":403,"messages":403,"sync_status":200,"batch_rejected":403} +{"event":"authorization-restore","process":{"pid":7412,"session":1},"conversations":200,"messages":200,"queue":{"queue_bytes":15,"queue_pending":0,"queue_sha256":"AC4BCD92C2361F721A463C97BD5B98EDD6486ACE00ABCD140E01617B7DAD2596","state_sha256":"C480279C3ACE174DA283C43441599B6099D23865539A7035150A910956953D44"}} +{"event":"control-plane-restart","old_pid":1472887,"new_pid":1485903,"before":{"messages": 460, "conversations": 2, "batches": 4, "coverage": "complete", "integrity": "ok", "sources": ["session/session.db/SessionTable"], "title_equals_chat_id": 0},"after":{"messages": 460, "conversations": 2, "batches": 4, "coverage": "complete", "integrity": "ok", "sources": ["session/session.db/SessionTable"], "title_equals_chat_id": 0}} diff --git a/docs/validation/raw/verify-p4-live-operations.sh b/docs/validation/raw/verify-p4-live-operations.sh index bfe205f..abfb879 100755 --- a/docs/validation/raw/verify-p4-live-operations.sh +++ b/docs/validation/raw/verify-p4-live-operations.sh @@ -2,6 +2,14 @@ set -euo pipefail file=${1:-"$(dirname "$0")/p4-live-operations.jsonl"} +trace=${2:-"$(dirname "$0")/p4-live-commands.log"} +metrics=${3:-"$(dirname "$0")/capacity-metrics.txt"} + +test -s "$trace" +grep -q 'Get-FileHash' "$trace" +grep -q 'Get-Process -Name WxAgent.Tray' "$trace" +grep -q 'LOCAL_START_SERVER' "$trace" +grep -q 'capacity_metrics=' "$metrics" jq -s -e ' map({(.event): .}) | add as $e |