Skip to content

PersonaBot output: committed-output extension event #125

Closed

Description

@DoodleBears

Remaining outcome — reconciled 2026-09-30

The canonical Channel commit callback exists. Remaining: the separate public PersonaBot Output Committed Host event definition/producer, safe payload/correlation, listener isolation and lifecycle tests. Channel SSE is not this extension contract.

Feature Project

What to build

在 PersonaBot Plugin 内定义并发布 application-defined PersonaBot Output Committed Cordis Event。只有 PersonaBot 的 user-visible Channel message 已由当前 canonical writer 成功提交后,才使用 process-local emit 通知可选消费者。

本票只交付稳定的 producer contract、生命周期和 contract tests。TTS、Live2D、3D avatar 或任何具体 consumer plugin 均不在本票实现;外部 IM Provider 也不是前置条件。

Event boundary

  • Payload 提供 PersonaBot、Session、Channel、message、reply/source correlation references,以及已经提交且允许公开的 message content。
  • Event 不是 durable authority,不承诺跨进程 exactly-once 或 replay。messageId 是 consumer 幂等键。
  • Raw tool arguments/results、credentials、private prompts 与 model reasoning 不进入 payload。
  • Consumer failure 不回滚 Channel message,也不阻塞其他 listeners。

Acceptance criteria

  • append/commit 成功后才 emit;rollback、writer failure 与 transient model delta 不触发。
  • 同一次 in-process commit path 最多 emit 一次,并携带稳定 messageId/correlation references。
  • payload contract 明确 public content 与禁止字段,具有隐私回归测试。
  • neutral fake listener 可按 PersonaBot/Channel 过滤并验证 lifecycle cleanup;测试不实现 TTS/Live2D。
  • 无 listener 时 producer 行为和消息提交结果不变。
  • restart 后 durable message 仍由 Channel authority 查询;process-local Event 不被误当作 replay log。
  • 未来 Messaging writer 替换当前 writer 时保持同一 producer contract。

Blocked by

Activity

  1. added this to the v1.0 milestone on Sep 20, 2026
  2. changed the title [-]Tracer 6: PersonaBot output event 驱动 TTS / Live2D[/-] [+]Tracer 6: PersonaBot committed output event contract[/+] on Sep 20, 2026
  3. DoodleBears commented on Sep 20, 2026

    @DoodleBears
    ContributorAuthor

    This was generated by AI during triage.

    Scope correction applied: this ticket now owns only the PersonaBot Plugin's Output Committed producer contract. Concrete TTS, Live2D, 3D or speech consumers are future V2/independent-plugin work. The unrelated #46 Messaging blocker was replaced with #81, which owns the current BotRuntime/Channel commit seam.

  4. DoodleBears commented on Sep 21, 2026

    @DoodleBears
    ContributorAuthor

    补充一条参考信息(不影响本票范围):桌宠 / Live2D 接入的调研已归档到 docs/research/2026-09-21-desktop-pet-and-live2d.md。

    • 与本票的接口点:未来 Live2D / 口型同步 consumer 只以 PersonaBot Output Committed 为输入 seam,消费已提交且允许公开的内容;研究文档里有状态与事件映射草图。
    • 技术可选性:untitled-pixi-live2d-engine(Pixi v8 / Cubism 2–5 / MIT)与 easy-live2d(BongoCat 在生产使用,MPL-2.0 / Cubism 3/4/5)都可作为 renderer;真正的闸门是 Cubism Core 专有许可与模型授权。
    • 参考实现:BongoCat 的窗口 / 输入 / 渲染三层解耦(Tauri 透明窗、原生拖动、DPI、鼠标穿透)可整体复用;dsh-tauri 桌面端目前走 WebM/HEVC-alpha 视频路线,绕开 WebGL 与 Live2D 许可。
    • 范围不变:本票只交付 producer contract,不实现 TTS/Live2D consumer。
  5. DoodleBears commented on Sep 21, 2026

    @DoodleBears
    ContributorAuthor

    另一条参考信息(同样不影响本票范围):AnySoul(DoodleBears/anysoul)的 Live2D 组合方式与动画运行时复盘已归档到 docs/research/2026-09-21-anysoul-live2d-runtime.md。

    • 它当时用 untitled-pixi-live2d-engine@1.0.1,无 patch,靠单一 Live2DService 边界隔离引擎;自建了 rule/clip/keyframe/track-modifier 运行时与 priority/weight 混合语义。
    • 与本票的接口点:文本随 reveal 时序匹配、lip sync 按音源路由,对 BotHarness 应只消费已提交的 Output(即本票的 producer contract),文档里列了设计输入。
    • 该文档也记录了引擎 1.0.1→1.4.0 的 delta:blob 纹理识别与 Cubism teardown 已被上游原生修复。
  6. added
    V1.0Milestone v1.0; mirrors the GitHub milestone
    area:backendHost-side implementation
    on Sep 22, 2026
  7. 1 remaining item

  8. changed the title [-]Tracer 6: PersonaBot committed output event contract[/-] [+]PersonaBot output: committed-output extension event[/+] on Sep 30, 2026
  9. moved this to Todo in Roadmapon Sep 30, 2026
  10. DoodleBears commented on Oct 4, 2026

    @DoodleBears
    ContributorAuthor

    Agent work claim

  11. added
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Oct 4, 2026
  12. DoodleBears commented on Oct 4, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome

    • Agent: Codex
    • Task: codex/local/01a0e445-0c0f-70e1-bad4-fd99c8cfaa21 (not a DSH Session)
    • Issue scope: committed public PersonaBot output Host event, trusted correlation, listener isolation and lifecycle.
    • Branch: codex/125-output-committed
    • State: paused — waiting for Human QA; issue and PR remain open.
    • PR: feat(core): publish committed PersonaBot output events (#125) #810; head c6aa7793ae8341e102177630ed27d23ab67010fa.
    • Verification: full Linux CI passed (2,333 tests); six output contract tests; real isolated DSH DM/group sends, failing consumers, filtered Consumer Fiber disposal, and restart without replay. Independent Spec and Standards reviews found no actionable issues; CodeRabbit completed without actionable comments. Its generic docstring advisory conflicts with the enforced source policy forbidding code comments.
    • Evidence: actual screenshots and reproduction, with all three images verified HTTP200 and rendered in GitHub. No credentials or raw Session/tool payloads are published.
    • Remaining: Human QA and merge only; concrete TTS/Live2D consumers remain outside PersonaBot output: committed-output extension event #125.
  13. added and removed
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Oct 4, 2026
  14. DoodleBears commented on Oct 4, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome

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

    V1.0Milestone v1.0; mirrors the GitHub milestonearea:backendHost-side implementationenhancementNew feature or requestfeature:activityPersonaBot activity, presence, and output signalsfeature:messagingMessaging module and external providersready-for-agentFully specified, ready for an AFK agentscope:tracerHuman-testable implementation slice

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions