62 lines
2.0 KiB
Markdown
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.
|