Files
JWeBot/docs/conversation-shadow-testing.md
T
JWeBot Contributors e4365841ed
check / local-gate (push) Failing after 1m38s
Release beta 2.0.0.1021
2026-10-21 17:05:09 +08:00

62 lines
2.0 KiB
Markdown

# Private Conversation Shadow Testing
This prototype observes one manually selected private conversation without
changing the production group workflow.
It is intentionally unable to switch conversations or send replies:
- The recorder never enqueues matching shadow events.
- Every observation carries `shadow_only=true` and `dispatch_allowed=false`.
- JWeBot Edge ignores marked observations before routing or persistence.
- The shadow registry accepts private targets only. The main group cannot be
added to it.
- No setting in the shadow registry can enable delivery.
## Local Configuration
Keep the real file outside the repository:
```text
~/.config/jwebot/conversation-shadow.json
```
Example with placeholder values:
```json
{
"format_version": 1,
"enabled": true,
"targets": [
{
"key": "test-direct",
"kind": "direct",
"title_fingerprint": "<64 lowercase SHA-256 characters>",
"sender": "<local test label>"
}
]
}
```
Set `JWEBOT_CONVERSATION_SHADOW_CONFIG` to that absolute path only in a local
test process. Without the variable, the feature is not imported or enabled.
The title fingerprint is the SHA-256 value returned by
`title_fingerprint(image)` for a screenshot where the intended conversation is
selected. It is an opaque routing value, not a trusted contact identity.
## Controlled Test
1. Keep production services unchanged.
2. Run the recorder in a separate local test state directory.
3. Select the allowlisted private conversation manually.
4. Let the first capture establish a baseline.
5. Send `/状态` or `JWeBot: 测试` from the other account.
6. Inspect the local history for `shadow_only=true`.
7. Assert that the OCR queue remains empty and no outgoing bubble appears.
Ordinary private messages are observed but do not set `mention_bot`. Only slash
commands and the configured wake word are treated as potential triggers.
Do not point this prototype at production state paths and do not add the
environment variable to a deployed runtime profile.