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

2.0 KiB

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:

~/.config/jwebot/conversation-shadow.json

Example with placeholder values:

{
  "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.