Skip to content

QQ tracer: opted-in ordinary group observation and intentional participation #1155

Closed

Description

@DoodleBears

Parent

QQ group chat specification #1149

What to build

Explicitly opt one QQ group into ordinary-message collection, let its Bot observe the real conversation through existing attention/harvest behavior, and demonstrate an intentional own-app contribution in that group without answering every message.

Collection and external speech remain distinct decisions. Extend the official QQ Provider's ordinary-event path and qualify its real permissions and current receiver lease; do not run its standalone bridge alongside Core or invent remote group-history support.

Acceptance criteria

  • Mentions-only remains the default. The actual Client makes ordinary collection an explicit per-conversation choice and shows saved preference separately from full-message permission and current receiver evidence.
  • Qualification includes a fresh non-mentioned real QQ group event delivered on the active exclusive receiver lease through the checked Provider boundary. Official documentation or a persisted old capability flag alone does not enable the claimed capability.
  • In mentions-only mode, ordinary content does not enter canonical collection or trigger a Bot wake. In the opted-in mode, eligible ordinary events preserve source attribution and follow the existing authorized Inbox/Channel path.
  • Existing Observation, count/time harvest and independent member wake rules read received local context without forcing a reply for every event. A trusted direct mention retains its own attention semantics.
  • In the real group, demonstrate one ordinary-context understanding and one intentional own-identity contribution under current posting authority, including native receipt and correlation with the originating conversation.
  • Ordinary participation uses the qualified proactive path where required by QQ. Apply the existing safe-turn/loop policies and native limits; collecting content does not itself grant external speech.
  • Disabling collection, blocking the conversation or losing the receiver lease stops future collection/effects as applicable. Reconnect preserves valid policy without duplicate events, missing-message invention or replaying blocked intervals.
  • Public-contract regressions cover mention/ordinary qualification, switch-off races, stale lease evidence, attention/harvest behavior, own echoes, authority fences and unavailable full-message/proactive conditions.
  • If account eligibility or actual ordinary delivery is unavailable, retain verified mentions-only use with a reason. The ordinary participation scope is not completed and no personal-account fallback is introduced.
  • Supply the real QQ/Client runnable acceptance, UI evidence, affected bilingual guides and ledgers, focused checks and immutable artifact qualification; contribute reusable Provider changes to the maintained fork and upstream.

Blocked by

Activity

  1. added this to the v1.2 milestone on Oct 7, 2026
  2. added
    ready-for-agentFully specified, ready for an AFK agent
    area:fullstackEnd-to-end Host and Client implementation
    feature:messagingMessaging module and external providers
    scope:tracerHuman-testable implementation slice
    on Oct 7, 2026
  3. modified the milestones: v1.2, v1.3 on Oct 11, 2026
  4. DoodleBears commented on Oct 14, 2026

    @DoodleBears
    ContributorAuthor

    Agent work claim

    • Agent: Codex
    • Task: codex/local/01a13902-0d72-7872-ac0f-440e152155d5 (not a DSH Session)
    • Issue scope: checked QQ ordinary group ingress through the exclusive Provider consumer; reuse per-conversation collection and current-lease evidence, then qualify local observation and intentional own-app posting. Start with the smallest ordinary-ingress slice. Shared posting changes remain in draft PR Enable checked QQ posts for retained delayed results #1647; its proactive send has native receipt and Human rendering confirmation, while full delayed-task qualification remains pending.
    • Branch: codex/1155-qq-ordinary-main (Core and maintained Provider fork)
    • Started: 2026-10-14 07:50 UTC
    • State: active
    • Receiver: the Human-authorized temporary QA2 window has ended; the test Host is stopped and the original dual-App Host reports both Apps connected. No test receiver is active during implementation.
  5. added
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Oct 14, 2026
  6. DoodleBears commented on Oct 14, 2026

    @DoodleBears
    ContributorAuthor

    Agent work progress

    Task: codex/local/01a13902-0d72-7872-ac0f-440e152155d5 · Core draft #1670 · Maintained Provider #29 · Upstream dependency draft #359.

    The checked ordinary-text path, current receiver qualification after intake cutoff, and default mentions-only collection regressions are implemented. The existing Client supplies per-conversation collection and wake controls. Core exact-head CI passes; focused results include final Core QQ 7/7, shared inbound 108, development Provider pin 6/6 and maintained Provider QQ 218/218. The upstream layer separately passes 204 QQ tests, build and package verification; its unmerged prerequisites and native-runtime gap are explicit.

    QA2 alone connected to the candidate and the real Client showed saved mentions-only preference separately from unverified ordinary delivery. No fresh non-mentioned probe arrived in the controlled window, so canonical ordinary collection, understanding and intentional group contribution remain unqualified. No ordinary opt-in or ordinary-context post was performed. The test receiver was stopped; both original Apps are connected again and the original receiver registration is unchanged. The earlier Human screenshot verifies normal replies after the #1154 restoration, not this subsequent window.

    Remaining: a fresh coordinated native QQ/Client run (non-@ probe, explicit opt-in, observation/harvest, one understood own-App contribution, switch-off/reconnect evidence), paired visual evidence, immutable packed-product qualification and Provider release integration. The published product still uses .20; the immutable development candidate is not a released Provider. Local head-bound HTML pages are generated but have no reviewer-accessible hosting. This draft does not close #1155 and is not ready to merge.

  7. 7 remaining items

  8. moved this from Todo to In Progress in Roadmapon Oct 15, 2026
  9. DoodleBears commented on Oct 15, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome — accepted ordinary-text slice merged and deployed

    • Task: codex/local/01a13902-0d72-7872-ac0f-440e152155d5 (not a DSH Session).
    • State: completed for this task's bounded text implementation, native acceptance, merge and local deployment scope. Post-upgrade Human QQ smoke confirmation remains pending; the issue stays open for that handoff.
    • Core PR #1670 merged as f069c211edf9c8f4af6814da804907cfe4e3ad9b.
    • Maintained Provider PR #29 merged as b1ebee7409e2b58eab204d7c570d621b1beca2cc.
    • Upstream contribution #359 remains a dependency draft with unresolved prerequisites/conflicts. Its native runtime is not qualified or deployed.

    Native acceptance is recorded in the final qualification document: failed D exposed the production-factory option loss; fresh E qualified the repair without collecting ordinary content by default. Actual Client opt-in collected genuine context, the real ten-minute timer harvested it, and one Owner Schedule read the two genuine Sources before posting a single correct own-App/original-group summary. The Human confirmed its visible contents and uniqueness. A/B were one native message; this run does not claim a real count-two trigger. Fresh collection-off text created no Source/wake/post. Native Session records and the receipt support the independent posting path.

    Final Core CI and package preparation passed. The integrated focused suite passed 89/89; maintained QQ regressions passed 219/219; separate upstream QQ regressions passed 205/205. Full Windows Provider tests are not declared green: unrelated image/update failures were reproduced on the unchanged baseline, and the candidate HTTP subset passed independently after the broad parallel run failed.

    Product packaging now pins Provider .21 to immutable runtime source beaed4a6dabb583654d28fb09298716267039b4a. Six actual tarballs were installed and verified through an independent official DSH 0.2.0-rc.2 CLI. Actual Client/model execution returned 17; the real screenshot is embedded in the merged PR. It is package execution evidence, not a QQ screenshot. Matched QQ screenshots remain unavailable because this environment lacks an operable signed-in QQ web chat; the runnable Human path and exception are documented. Local exact-head HTML is not reviewer-hosted evidence.

    The Human-authorized original dual-App Host was backed up and upgraded to 1.3.0-test.1155.3 from merged main. Both Apps connected; the saved identities and per-group mentions-only policies are preserved. Both Orchestrator/default Assignment routes remain official DeepSeek Flash following the separately authorized Go-quota recovery. New receiver evidence correctly starts unverified. Receiver registration is unchanged, and the temporary candidate/package-smoke Hosts are stopped. No global npm release/tag or unrelated VPS deployment occurred.

    Remaining handoff: fresh genuine @mentions to both Apps plus a new unquoted/non-@ ordinary probe on the deployed receiver. Verify native delivery evidence and mentions-only exclusion, then obtain Human QQ rendering confirmation. Do not reuse older receiver proof as proof of this final upgrade. Ordinary media, remote history and native own-echo qualification remain separate scope.

  10. added and removed
    ready-for-agentFully specified, ready for an AFK agent
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Oct 15, 2026
  11. DoodleBears commented on Oct 15, 2026

    @DoodleBears
    ContributorAuthor

    Final deployed QQ acceptance — completed

    Task: codex/local/01a13902-0d72-7872-ac0f-440e152155d5 · State: completed.

    The final local package 1.3.0-test.1155.3 / Provider 4.32.0-botharness.21 now has fresh post-upgrade native and Human QQ confirmation:

    • Fresh genuine QA1/QA2 @mentions arrived at 2026-10-15 16:44:27/28 UTC. Each produced one handled Admission and exactly one provider-accepted source reply with a native receipt and the exact text 部署正常. The Human confirmed both appeared in the original group.
    • Native Session records for both fresh turns confirm deepseek-official / deepseek-flash, with bridge_reply. This verifies the actual invocation, beyond saved model configuration.
    • The fresh unquoted/non-@ ordinary probe reached both active receivers at 16:44:47 UTC as GROUP_MESSAGE_CREATE, type 0, with zero mentions, quoted elements or attachments. Both original-group grants now show current-lease ordinary delivery verified while their saved collection stays mentions-only.
    • The ordinary marker created zero canonical Sources. Only the two expected reply Outbox intents exist after cutover, with no additional external action. Saved identities, policies and receiver registration remain unchanged.

    This completes the final deployment handoff described in the preceding outcome. The pre-upgrade delayed C and ordinary-context acceptance remain separately documented; they are not relabeled as post-upgrade runs. The bounded delayed-result and ordinary-text scopes are complete and deployed locally. Global publication, ordinary media/own-echo work and the dependency-draft upstream PR remain separate; no broader completion is claimed.

  12. moved this from In Progress to Done in Roadmapon Oct 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:fullstackEnd-to-end Host and Client implementationfeature:messagingMessaging module and external providersscope:tracerHuman-testable implementation slice

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions