@lemoncat7/dsh-partner 2.8.7 → 2.21.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -1
- package/docs/THIRD_PARTY_LICENSES.md +67 -0
- package/docs/blobfox-manifest.json +109 -0
- package/docs/character-cards-and-renewal.md +23 -0
- package/docs/chat-delivery.md +25 -0
- package/docs/licenses/Apache-2.0.txt +202 -0
- package/docs/natural-conversation-port.md +58 -0
- package/docs/qq-attention.md +51 -0
- package/docs/qq-channel.md +80 -0
- package/docs/releases/2.10.0.md +14 -0
- package/docs/releases/2.10.1.md +12 -0
- package/docs/releases/2.11.0.md +9 -0
- package/docs/releases/2.11.1.md +9 -0
- package/docs/releases/2.11.2.md +7 -0
- package/docs/releases/2.11.3.md +11 -0
- package/docs/releases/2.11.4.md +7 -0
- package/docs/releases/2.11.5.md +7 -0
- package/docs/releases/2.11.6.md +9 -0
- package/docs/releases/2.11.7.md +9 -0
- package/docs/releases/2.12.0.md +14 -0
- package/docs/releases/2.13.0.md +9 -0
- package/docs/releases/2.14.0.md +9 -0
- package/docs/releases/2.15.0.md +9 -0
- package/docs/releases/2.15.1.md +9 -0
- package/docs/releases/2.16.0.md +18 -0
- package/docs/releases/2.17.0.md +23 -0
- package/docs/releases/2.17.1.md +9 -0
- package/docs/releases/2.18.0.md +9 -0
- package/docs/releases/2.18.1.md +5 -0
- package/docs/releases/2.19.0.md +14 -0
- package/docs/releases/2.19.1.md +7 -0
- package/docs/releases/2.19.2.md +9 -0
- package/docs/releases/2.19.3.md +5 -0
- package/docs/releases/2.20.0.md +10 -0
- package/docs/releases/2.20.1.md +8 -0
- package/docs/releases/2.21.0.md +7 -0
- package/docs/releases/2.21.1.md +8 -0
- package/docs/releases/2.21.2.md +10 -0
- package/docs/releases/2.21.3.md +7 -0
- package/docs/releases/2.21.4.md +8 -0
- package/docs/releases/2.21.5.md +15 -0
- package/docs/releases/2.9.0.md +13 -0
- package/docs/releases/2.9.1.md +11 -0
- package/docs/releases/2.9.2.md +11 -0
- package/docs/storage-read-performance.md +35 -0
- package/docs/tool-entry-compatibility.md +11 -0
- package/lib/agent-runtime.d.ts +25 -2
- package/lib/agent-runtime.d.ts.map +1 -1
- package/lib/agent-runtime.js +498 -86
- package/lib/agent-runtime.js.map +1 -1
- package/lib/api/features/stickers-api.d.ts +5 -0
- package/lib/api/features/stickers-api.d.ts.map +1 -0
- package/lib/api/features/stickers-api.js +35 -0
- package/lib/api/features/stickers-api.js.map +1 -0
- package/lib/api.d.ts +3 -0
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +126 -26
- package/lib/api.js.map +1 -1
- package/lib/attachments/storage-admin.js +1 -1
- package/lib/attachments/storage-admin.js.map +1 -1
- package/lib/channel-message.d.ts +24 -0
- package/lib/channel-message.d.ts.map +1 -1
- package/lib/channel-message.js.map +1 -1
- package/lib/channels/delivery-policy.d.ts +3 -0
- package/lib/channels/delivery-policy.d.ts.map +1 -1
- package/lib/channels/delivery-policy.js +24 -3
- package/lib/channels/delivery-policy.js.map +1 -1
- package/lib/channels/direct/dispatcher.d.ts +2 -2
- package/lib/channels/direct/dispatcher.d.ts.map +1 -1
- package/lib/channels/direct/dispatcher.js +13 -4
- package/lib/channels/direct/dispatcher.js.map +1 -1
- package/lib/channels/direct/login.d.ts.map +1 -1
- package/lib/channels/direct/login.js +4 -0
- package/lib/channels/direct/login.js.map +1 -1
- package/lib/channels/direct/media.d.ts +2 -0
- package/lib/channels/direct/media.d.ts.map +1 -1
- package/lib/channels/direct/media.js +27 -23
- package/lib/channels/direct/media.js.map +1 -1
- package/lib/channels/direct/message-format.js +127 -127
- package/lib/channels/direct/message-format.js.map +1 -1
- package/lib/channels/direct/transport.d.ts +26 -3
- package/lib/channels/direct/transport.d.ts.map +1 -1
- package/lib/channels/direct/transport.js +31 -5
- package/lib/channels/direct/transport.js.map +1 -1
- package/lib/channels/manager.d.ts +34 -0
- package/lib/channels/manager.d.ts.map +1 -1
- package/lib/channels/manager.js +639 -135
- package/lib/channels/manager.js.map +1 -1
- package/lib/channels/notification-delivery.d.ts +4 -0
- package/lib/channels/notification-delivery.d.ts.map +1 -1
- package/lib/channels/notification-delivery.js +24 -10
- package/lib/channels/notification-delivery.js.map +1 -1
- package/lib/channels/notification-route.d.ts.map +1 -1
- package/lib/channels/notification-route.js +10 -4
- package/lib/channels/notification-route.js.map +1 -1
- package/lib/channels/notification-timeout.d.ts.map +1 -1
- package/lib/channels/notification-timeout.js +2 -0
- package/lib/channels/notification-timeout.js.map +1 -1
- package/lib/channels/outbound-media.d.ts.map +1 -1
- package/lib/channels/outbound-media.js +3 -1
- package/lib/channels/outbound-media.js.map +1 -1
- package/lib/channels/qq/action-catalog.d.ts +38 -0
- package/lib/channels/qq/action-catalog.d.ts.map +1 -0
- package/lib/channels/qq/action-catalog.js +2731 -0
- package/lib/channels/qq/action-catalog.js.map +1 -0
- package/lib/channels/qq/actions.d.ts +21 -0
- package/lib/channels/qq/actions.d.ts.map +1 -0
- package/lib/channels/qq/actions.js +226 -0
- package/lib/channels/qq/actions.js.map +1 -0
- package/lib/channels/qq/affection-adapter.d.ts +3 -0
- package/lib/channels/qq/affection-adapter.d.ts.map +1 -0
- package/lib/channels/qq/affection-adapter.js +16 -0
- package/lib/channels/qq/affection-adapter.js.map +1 -0
- package/lib/channels/qq/attention-classifier.d.ts +10 -0
- package/lib/channels/qq/attention-classifier.d.ts.map +1 -0
- package/lib/channels/qq/attention-classifier.js +62 -0
- package/lib/channels/qq/attention-classifier.js.map +1 -0
- package/lib/channels/qq/authority.d.ts +10 -0
- package/lib/channels/qq/authority.d.ts.map +1 -0
- package/lib/channels/qq/authority.js +50 -0
- package/lib/channels/qq/authority.js.map +1 -0
- package/lib/channels/qq/autonomy.d.ts +30 -0
- package/lib/channels/qq/autonomy.d.ts.map +1 -0
- package/lib/channels/qq/autonomy.js +88 -0
- package/lib/channels/qq/autonomy.js.map +1 -0
- package/lib/channels/qq/catalog.d.ts +14 -0
- package/lib/channels/qq/catalog.d.ts.map +1 -0
- package/lib/channels/qq/catalog.js +34 -0
- package/lib/channels/qq/catalog.js.map +1 -0
- package/lib/channels/qq/connection.d.ts +28 -0
- package/lib/channels/qq/connection.d.ts.map +1 -0
- package/lib/channels/qq/connection.js +200 -0
- package/lib/channels/qq/connection.js.map +1 -0
- package/lib/channels/qq/identity-binding.d.ts +14 -0
- package/lib/channels/qq/identity-binding.d.ts.map +1 -0
- package/lib/channels/qq/identity-binding.js +58 -0
- package/lib/channels/qq/identity-binding.js.map +1 -0
- package/lib/channels/qq/latency.d.ts +22 -0
- package/lib/channels/qq/latency.d.ts.map +1 -0
- package/lib/channels/qq/latency.js +21 -0
- package/lib/channels/qq/latency.js.map +1 -0
- package/lib/channels/qq/message.d.ts +6 -0
- package/lib/channels/qq/message.d.ts.map +1 -0
- package/lib/channels/qq/message.js +49 -0
- package/lib/channels/qq/message.js.map +1 -0
- package/lib/channels/qq/reply-rules.d.ts +30 -0
- package/lib/channels/qq/reply-rules.d.ts.map +1 -0
- package/lib/channels/qq/reply-rules.js +72 -0
- package/lib/channels/qq/reply-rules.js.map +1 -0
- package/lib/channels/qq/reply-tool.d.ts +6 -0
- package/lib/channels/qq/reply-tool.d.ts.map +1 -0
- package/lib/channels/qq/reply-tool.js +113 -0
- package/lib/channels/qq/reply-tool.js.map +1 -0
- package/lib/channels/qq/settings.d.ts +42 -0
- package/lib/channels/qq/settings.d.ts.map +1 -0
- package/lib/channels/qq/settings.js +68 -0
- package/lib/channels/qq/settings.js.map +1 -0
- package/lib/channels/qq/sticker-adapter.d.ts +5 -0
- package/lib/channels/qq/sticker-adapter.d.ts.map +1 -0
- package/lib/channels/qq/sticker-adapter.js +43 -0
- package/lib/channels/qq/sticker-adapter.js.map +1 -0
- package/lib/channels/qq/transport.d.ts +29 -0
- package/lib/channels/qq/transport.d.ts.map +1 -0
- package/lib/channels/qq/transport.js +187 -0
- package/lib/channels/qq/transport.js.map +1 -0
- package/lib/channels/reply-access.d.ts +25 -0
- package/lib/channels/reply-access.d.ts.map +1 -0
- package/lib/channels/reply-access.js +29 -0
- package/lib/channels/reply-access.js.map +1 -0
- package/lib/channels/reply-progress-controller.d.ts +1 -0
- package/lib/channels/reply-progress-controller.d.ts.map +1 -1
- package/lib/channels/reply-progress-controller.js +8 -0
- package/lib/channels/reply-progress-controller.js.map +1 -1
- package/lib/channels/weixin/connect.d.ts +3 -1
- package/lib/channels/weixin/connect.d.ts.map +1 -1
- package/lib/character/activity-tool.d.ts +7 -0
- package/lib/character/activity-tool.d.ts.map +1 -0
- package/lib/character/activity-tool.js +38 -0
- package/lib/character/activity-tool.js.map +1 -0
- package/lib/character/affection-adapter.d.ts +13 -0
- package/lib/character/affection-adapter.d.ts.map +1 -0
- package/lib/character/affection-adapter.js +13 -0
- package/lib/character/affection-adapter.js.map +1 -0
- package/lib/character/affection-context.d.ts +7 -0
- package/lib/character/affection-context.d.ts.map +1 -0
- package/lib/character/affection-context.js +33 -0
- package/lib/character/affection-context.js.map +1 -0
- package/lib/character/affection.d.ts +47 -0
- package/lib/character/affection.d.ts.map +1 -0
- package/lib/character/affection.js +41 -0
- package/lib/character/affection.js.map +1 -0
- package/lib/character/conversation-behavior.d.ts +10 -0
- package/lib/character/conversation-behavior.d.ts.map +1 -0
- package/lib/character/conversation-behavior.js +60 -0
- package/lib/character/conversation-behavior.js.map +1 -0
- package/lib/character/domain.d.ts +53 -0
- package/lib/character/domain.d.ts.map +1 -0
- package/lib/character/domain.js +124 -0
- package/lib/character/domain.js.map +1 -0
- package/lib/character/identity-guide.d.ts +4 -0
- package/lib/character/identity-guide.d.ts.map +1 -0
- package/lib/character/identity-guide.js +14 -0
- package/lib/character/identity-guide.js.map +1 -0
- package/lib/character/idle-contact.d.ts +42 -0
- package/lib/character/idle-contact.d.ts.map +1 -0
- package/lib/character/idle-contact.js +90 -0
- package/lib/character/idle-contact.js.map +1 -0
- package/lib/character/post-reply.d.ts +19 -0
- package/lib/character/post-reply.d.ts.map +1 -0
- package/lib/character/post-reply.js +33 -0
- package/lib/character/post-reply.js.map +1 -0
- package/lib/character/preview.d.ts +12 -0
- package/lib/character/preview.d.ts.map +1 -0
- package/lib/character/preview.js +74 -0
- package/lib/character/preview.js.map +1 -0
- package/lib/character/relationship-adapter.d.ts +18 -0
- package/lib/character/relationship-adapter.d.ts.map +1 -0
- package/lib/character/relationship-adapter.js +18 -0
- package/lib/character/relationship-adapter.js.map +1 -0
- package/lib/character/sleep-service.d.ts +35 -0
- package/lib/character/sleep-service.d.ts.map +1 -0
- package/lib/character/sleep-service.js +278 -0
- package/lib/character/sleep-service.js.map +1 -0
- package/lib/character/sleep.d.ts +43 -0
- package/lib/character/sleep.d.ts.map +1 -0
- package/lib/character/sleep.js +36 -0
- package/lib/character/sleep.js.map +1 -0
- package/lib/character/state-policy.d.ts +4 -0
- package/lib/character/state-policy.d.ts.map +1 -0
- package/lib/character/state-policy.js +14 -0
- package/lib/character/state-policy.js.map +1 -0
- package/lib/character/store.d.ts +8 -0
- package/lib/character/store.d.ts.map +1 -0
- package/lib/character/store.js +27 -0
- package/lib/character/store.js.map +1 -0
- package/lib/chat/conversation.d.ts +13 -0
- package/lib/chat/conversation.d.ts.map +1 -0
- package/lib/chat/conversation.js +36 -0
- package/lib/chat/conversation.js.map +1 -0
- package/lib/chat/protocol.d.ts +51 -0
- package/lib/chat/protocol.d.ts.map +1 -0
- package/lib/chat/protocol.js +90 -0
- package/lib/chat/protocol.js.map +1 -0
- package/lib/chat/sticker-adapter.d.ts +34 -0
- package/lib/chat/sticker-adapter.d.ts.map +1 -0
- package/lib/chat/sticker-adapter.js +30 -0
- package/lib/chat/sticker-adapter.js.map +1 -0
- package/lib/chat/sticker-builtins.d.ts +9 -0
- package/lib/chat/sticker-builtins.d.ts.map +1 -0
- package/lib/chat/sticker-builtins.js +243 -0
- package/lib/chat/sticker-builtins.js.map +1 -0
- package/lib/chat/sticker-import.d.ts +13 -0
- package/lib/chat/sticker-import.d.ts.map +1 -0
- package/lib/chat/sticker-import.js +27 -0
- package/lib/chat/sticker-import.js.map +1 -0
- package/lib/chat/stickers.d.ts +28 -0
- package/lib/chat/stickers.d.ts.map +1 -0
- package/lib/chat/stickers.js +113 -0
- package/lib/chat/stickers.js.map +1 -0
- package/lib/chat/tools.d.ts +8 -0
- package/lib/chat/tools.d.ts.map +1 -0
- package/lib/chat/tools.js +137 -0
- package/lib/chat/tools.js.map +1 -0
- package/lib/client-api.d.ts +25 -1
- package/lib/client-api.d.ts.map +1 -1
- package/lib/client-api.js.map +1 -1
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +7083 -2327
- package/lib/client.js.map +4 -4
- package/lib/collaboration/composition.d.ts +4 -0
- package/lib/collaboration/composition.d.ts.map +1 -1
- package/lib/collaboration/composition.js +36 -9
- package/lib/collaboration/composition.js.map +1 -1
- package/lib/collaboration/tool-discovery.d.ts +12 -0
- package/lib/collaboration/tool-discovery.d.ts.map +1 -0
- package/lib/collaboration/tool-discovery.js +148 -0
- package/lib/collaboration/tool-discovery.js.map +1 -0
- package/lib/companions/identity-tool.d.ts +176 -0
- package/lib/companions/identity-tool.d.ts.map +1 -0
- package/lib/companions/identity-tool.js +67 -0
- package/lib/companions/identity-tool.js.map +1 -0
- package/lib/companions/identity.d.ts +24 -0
- package/lib/companions/identity.d.ts.map +1 -0
- package/lib/companions/identity.js +49 -0
- package/lib/companions/identity.js.map +1 -0
- package/lib/companions/management-tool.d.ts +1 -1
- package/lib/companions/management-tool.d.ts.map +1 -1
- package/lib/companions/management-tool.js +4 -2
- package/lib/companions/management-tool.js.map +1 -1
- package/lib/companions/management.d.ts +21 -9
- package/lib/companions/management.d.ts.map +1 -1
- package/lib/companions/management.js +18 -4
- package/lib/companions/management.js.map +1 -1
- package/lib/companions/service.js +2 -0
- package/lib/companions/service.js.map +1 -1
- package/lib/companions/session-configuration.js +2 -2
- package/lib/companions/session-configuration.js.map +1 -1
- package/lib/concern-store.d.ts +1 -0
- package/lib/concern-store.d.ts.map +1 -1
- package/lib/concern-store.js +20 -7
- package/lib/concern-store.js.map +1 -1
- package/lib/context-renewal.d.ts +5 -0
- package/lib/context-renewal.d.ts.map +1 -0
- package/lib/context-renewal.js +30 -0
- package/lib/context-renewal.js.map +1 -0
- package/lib/daily-review.d.ts +9 -1
- package/lib/daily-review.d.ts.map +1 -1
- package/lib/daily-review.js +41 -12
- package/lib/daily-review.js.map +1 -1
- package/lib/domain.d.ts +45 -1
- package/lib/domain.d.ts.map +1 -1
- package/lib/domain.js +13 -1
- package/lib/domain.js.map +1 -1
- package/lib/execution/agent-support.d.ts +1 -1
- package/lib/execution/agent-support.d.ts.map +1 -1
- package/lib/execution/agent-support.js +14 -3
- package/lib/execution/agent-support.js.map +1 -1
- package/lib/execution/operation-tool-access.d.ts +13 -0
- package/lib/execution/operation-tool-access.d.ts.map +1 -0
- package/lib/execution/operation-tool-access.js +49 -0
- package/lib/execution/operation-tool-access.js.map +1 -0
- package/lib/execution/service.d.ts.map +1 -1
- package/lib/execution/service.js +2 -10
- package/lib/execution/service.js.map +1 -1
- package/lib/execution/tool-access-adapter.d.ts +23 -0
- package/lib/execution/tool-access-adapter.d.ts.map +1 -0
- package/lib/execution/tool-access-adapter.js +25 -0
- package/lib/execution/tool-access-adapter.js.map +1 -0
- package/lib/heartbeat.d.ts +1 -0
- package/lib/heartbeat.d.ts.map +1 -1
- package/lib/heartbeat.js +14 -2
- package/lib/heartbeat.js.map +1 -1
- package/lib/history-search.d.ts +6 -0
- package/lib/history-search.d.ts.map +1 -0
- package/lib/history-search.js +51 -0
- package/lib/history-search.js.map +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +35 -1
- package/lib/index.js.map +1 -1
- package/lib/memory-domain.d.ts +4 -0
- package/lib/memory-domain.d.ts.map +1 -1
- package/lib/memory-prompt-context.js +2 -0
- package/lib/memory-prompt-context.js.map +1 -1
- package/lib/memory-reflection.d.ts.map +1 -1
- package/lib/memory-reflection.js +19 -3
- package/lib/memory-reflection.js.map +1 -1
- package/lib/memory-scope.d.ts +2 -1
- package/lib/memory-scope.d.ts.map +1 -1
- package/lib/memory-scope.js +3 -1
- package/lib/memory-scope.js.map +1 -1
- package/lib/memory-store.d.ts +20 -1
- package/lib/memory-store.d.ts.map +1 -1
- package/lib/memory-store.js +78 -27
- package/lib/memory-store.js.map +1 -1
- package/lib/notifications/service.d.ts.map +1 -1
- package/lib/notifications/service.js +3 -1
- package/lib/notifications/service.js.map +1 -1
- package/lib/observation-knowledge-entry.d.ts +2 -0
- package/lib/observation-knowledge-entry.d.ts.map +1 -0
- package/lib/observation-knowledge-entry.js +13 -0
- package/lib/observation-knowledge-entry.js.map +1 -0
- package/lib/observation-loop.d.ts.map +1 -1
- package/lib/observation-loop.js +3 -0
- package/lib/observation-loop.js.map +1 -1
- package/lib/scheduler/final-reply.d.ts +2 -0
- package/lib/scheduler/final-reply.d.ts.map +1 -1
- package/lib/storage/split-state.d.ts +1 -0
- package/lib/storage/split-state.d.ts.map +1 -1
- package/lib/storage/split-state.js +9 -2
- package/lib/storage/split-state.js.map +1 -1
- package/lib/storage/sqlite-schema.d.ts +7 -0
- package/lib/storage/sqlite-schema.d.ts.map +1 -0
- package/lib/storage/sqlite-schema.js +36 -0
- package/lib/storage/sqlite-schema.js.map +1 -0
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +7 -0
- package/lib/store.js.map +1 -1
- package/lib/ui/affection-panel.d.ts +10 -0
- package/lib/ui/affection-panel.d.ts.map +1 -0
- package/lib/ui/affection-panel.js +44 -0
- package/lib/ui/affection-panel.js.map +1 -0
- package/lib/ui/capability-editor.d.ts.map +1 -1
- package/lib/ui/capability-editor.js +1 -1
- package/lib/ui/capability-editor.js.map +1 -1
- package/lib/ui/channels-panel.d.ts.map +1 -1
- package/lib/ui/channels-panel.js +13 -9
- package/lib/ui/channels-panel.js.map +1 -1
- package/lib/ui/character-editor.d.ts +11 -0
- package/lib/ui/character-editor.d.ts.map +1 -0
- package/lib/ui/character-editor.js +110 -0
- package/lib/ui/character-editor.js.map +1 -0
- package/lib/ui/character-memory-editor.d.ts +9 -0
- package/lib/ui/character-memory-editor.d.ts.map +1 -0
- package/lib/ui/character-memory-editor.js +56 -0
- package/lib/ui/character-memory-editor.js.map +1 -0
- package/lib/ui/character-stepper.d.ts +16 -0
- package/lib/ui/character-stepper.d.ts.map +1 -0
- package/lib/ui/character-stepper.js +42 -0
- package/lib/ui/character-stepper.js.map +1 -0
- package/lib/ui/companion-draft.d.ts +5 -0
- package/lib/ui/companion-draft.d.ts.map +1 -1
- package/lib/ui/companion-draft.js +1 -1
- package/lib/ui/companion-draft.js.map +1 -1
- package/lib/ui/identity-editor.d.ts.map +1 -1
- package/lib/ui/identity-editor.js +19 -5
- package/lib/ui/identity-editor.js.map +1 -1
- package/lib/ui/idle-contact-editor.d.ts +8 -0
- package/lib/ui/idle-contact-editor.d.ts.map +1 -0
- package/lib/ui/idle-contact-editor.js +18 -0
- package/lib/ui/idle-contact-editor.js.map +1 -0
- package/lib/ui/memory/automation-settings.d.ts.map +1 -1
- package/lib/ui/memory/automation-settings.js +9 -2
- package/lib/ui/memory/automation-settings.js.map +1 -1
- package/lib/ui/memory/memory-panel.d.ts.map +1 -1
- package/lib/ui/memory/memory-panel.js +5 -3
- package/lib/ui/memory/memory-panel.js.map +1 -1
- package/lib/ui/push-draft.d.ts +7 -7
- package/lib/ui/qq-capability-settings.d.ts +9 -0
- package/lib/ui/qq-capability-settings.d.ts.map +1 -0
- package/lib/ui/qq-capability-settings.js +24 -0
- package/lib/ui/qq-capability-settings.js.map +1 -0
- package/lib/ui/qq-channel-settings.d.ts +13 -0
- package/lib/ui/qq-channel-settings.d.ts.map +1 -0
- package/lib/ui/qq-channel-settings.js +51 -0
- package/lib/ui/qq-channel-settings.js.map +1 -0
- package/lib/ui/qq-identity-binding.d.ts +9 -0
- package/lib/ui/qq-identity-binding.d.ts.map +1 -0
- package/lib/ui/qq-identity-binding.js +6 -0
- package/lib/ui/qq-identity-binding.js.map +1 -0
- package/lib/ui/qq-voice-reply-settings.d.ts +9 -0
- package/lib/ui/qq-voice-reply-settings.d.ts.map +1 -0
- package/lib/ui/qq-voice-reply-settings.js +23 -0
- package/lib/ui/qq-voice-reply-settings.js.map +1 -0
- package/lib/ui/role-reference-data.d.ts +3 -0
- package/lib/ui/role-reference-data.d.ts.map +1 -0
- package/lib/ui/role-reference-data.js +4 -0
- package/lib/ui/role-reference-data.js.map +1 -0
- package/lib/ui/role-reference.d.ts +3 -0
- package/lib/ui/role-reference.d.ts.map +1 -0
- package/lib/ui/role-reference.js +10 -0
- package/lib/ui/role-reference.js.map +1 -0
- package/lib/ui/settings-sections.d.ts +14 -0
- package/lib/ui/settings-sections.d.ts.map +1 -0
- package/lib/ui/settings-sections.js +18 -0
- package/lib/ui/settings-sections.js.map +1 -0
- package/lib/ui/sleep-editor.d.ts +10 -0
- package/lib/ui/sleep-editor.d.ts.map +1 -0
- package/lib/ui/sleep-editor.js +45 -0
- package/lib/ui/sleep-editor.js.map +1 -0
- package/lib/ui/sticker-import.d.ts +7 -0
- package/lib/ui/sticker-import.d.ts.map +1 -0
- package/lib/ui/sticker-import.js +65 -0
- package/lib/ui/sticker-import.js.map +1 -0
- package/lib/ui/sticker-library.d.ts +5 -0
- package/lib/ui/sticker-library.d.ts.map +1 -0
- package/lib/ui/sticker-library.js +55 -0
- package/lib/ui/sticker-library.js.map +1 -0
- package/lib/ui/workspace-components.js +2 -2
- package/lib/ui/workspace-components.js.map +1 -1
- package/package.json +53 -5
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# QQ 渠道(SnowLuma / OneBot v11)
|
|
2
|
+
|
|
3
|
+
伙伴作为客户端连接 SnowLuma 的 **正向 Universal WebSocket**。同一条连接接收消息并调用 OneBot API,无需额外填写 HTTP API,也无需反向连接或开放 DSH 回调端口。
|
|
4
|
+
|
|
5
|
+
1. 在 SnowLuma 登录 QQ,启用正向 WebSocket(角色 `Universal`)。
|
|
6
|
+
2. 打开「伙伴 → 渠道 → QQ → 配置」。
|
|
7
|
+
3. 填写地址(同一 Docker 网络例如 `ws://snowluma:3001`)和该 **WS 服务**的 Access Token。HTTP 与 WS 的 Token 可能不同。跨公网连接应使用 `wss://`。
|
|
8
|
+
4. 测试连接、保存并启用。令牌仅存入 DSH 凭据库。
|
|
9
|
+
5. 群聊:开启群聊回复并选择接入群;加入自主回复白名单的群放行所有成员,其他已接入群需要审批发言账号。私聊:需要时单独开启,再核对好友的配对码并批准;只使用群聊时关闭私聊回复。
|
|
10
|
+
|
|
11
|
+
默认自动发现好友私聊;高级设置可限制为一个联系人 QQ 号。群聊默认关闭,可在分层设置中开启;群临时私聊、非好友私聊、匿名群消息和自身消息不触发伙伴。安装腾讯官方 `dsh-qqbot` 插件不是此渠道的前置条件,两者各自配置、独立连接。
|
|
12
|
+
|
|
13
|
+
渠道直接复用伙伴的身份、人格卡、记忆、工具、提问和通知路由;角色分段文字和表情包按原顺序发送。QQ 无法原地编辑普通消息,所以不伪造进度卡或额外发送“正在思考”。
|
|
14
|
+
|
|
15
|
+
支持普通文本、QQ 系统表情的文字说明、图片/表情图片发送、文件发送,以及带受支持 QQ 媒体下载地址的入站附件。附件接收限制沿用每批最多 8 个、总计 64 MB;缺少可用下载地址、超限或无法下载时会提示失败,不会悄悄忽略附件后执行文字。模型输出的 CQ 字符串按普通文字发送。
|
|
16
|
+
|
|
17
|
+
连接中断后自动退避重连,API 请求按 echo 匹配回执,发送接口不会在连接层自动重放。OneBot WS 是实时事件流,不能保证补回断线期间的消息;如发生掉线,请重发尚未收到回复的消息。处理失败后沿用伙伴的暂停/投递恢复机制,已开始执行的消息不会再次执行工具。
|
|
18
|
+
|
|
19
|
+
官方参考:https://snowluma.github.io/zh/docs/guide/connect-bot
|
|
20
|
+
|
|
21
|
+
## 分层配置
|
|
22
|
+
|
|
23
|
+
首页只显示账号状态和分类入口,详细设置在下一层,返回保留未保存的草稿,关闭时提示保存状态。
|
|
24
|
+
|
|
25
|
+
- **连接与账号**:测试/更新 WS 地址及令牌、启停、重连;移除渠道放在折叠项中。留空令牌保留原凭据,更新时核对同一 QQ 账号。
|
|
26
|
+
- **私聊回复**:默认开启,只有批准后的好友才能触发伙伴。
|
|
27
|
+
- **群聊回复 → 选择群组**:默认关闭,从已加入的群选择(最多 100 个);默认仅真正 @ 机器人时回复,可改为回复群内每条消息。可控制回复时是否 @ 发言人。
|
|
28
|
+
- **表情与图片**:分别控制原生 QQ 系统表情和图片/人格表情包发送。
|
|
29
|
+
- **访问权限**:填写多个归属账号;私聊核对配对码后批准。白名单群成员无需逐人批准,其他已接入群需要审批发言账号;已有记录可单独屏蔽。
|
|
30
|
+
- **发送消息**:从已授权的接收人选择好友或群成员,发送文字或原生 QQ 表情。表情目录支持分类、搜索、预览和加载更多;点击最终发送按钮才会发送。群成员接收项表示发送到对应群,不是私聊该成员。
|
|
31
|
+
|
|
32
|
+
默认每个群、每位私聊联系人使用独立会话,以群名或联系人名命名。「会话与记忆」中可选择哪些私聊用户、群聊使用本地主会话;未选择的对象继续独立。保存后对后续消息生效,取消勾选可接回原独立会话。启用记忆时,各会话共享该伙伴已整理的长期记忆,升级合并旧群记忆,不拼接原始聊天、不删除旧会话文件。群消息标注群号和发言人;群内任务的通知仍固定返回来源群。私聊的“最近联系人”自动路由不会选择群成员。身份、人格和已有工具权限仍沿用该伙伴的配置,共用工作目录;如需独立资料和身份,可使用单独伙伴。
|
|
33
|
+
|
|
34
|
+
群回复开启并选中群后,白名单群成员无需逐人配对;非白名单群需要审批发言账号。私聊与各群的账号审批分别记录,不互相继承。若连接创建时限制了固定私聊联系人,则仍只监听该联系人;要启用群聊需使用未限制联系人的连接。
|
|
35
|
+
|
|
36
|
+
原生表情目录来自 SnowLuma `fetch_sys_faces`,发送使用 `face` 消息段;经典预览使用目录的 `em_code` 对应 QQ 图片 CDN,无法加载的表情显示名称和编号。模型文本中的 CQ 字符串仍按文字发送,不强制每轮发表情。
|
|
37
|
+
|
|
38
|
+
## 自主回复白名单
|
|
39
|
+
|
|
40
|
+
「群聊回复 → 自主回复白名单」从已选群组中勾选。白名单群无需 @,普通消息进入有界的话题观察窗口;所有未屏蔽成员的发言均进入本地对话归属判断,连续聊天优先接续;可选本地语义分类辅助判断新话题,不另发远程大模型判断请求。真正回复使用所配置的独立或主会话,以及伙伴的角色和记忆;归属账号附加关系设定与既有授权工具,其他成员只提供当前会话回复工具。无需先 @ 或配对,群内聊天许可不授予私有能力。
|
|
41
|
+
|
|
42
|
+
每个群最多保留最近 16 条背景,每条最多 1200 字;判断至少间隔 15 秒,自主回复后至少间隔 45 秒,伙伴正在处理任务时不插入自主消息。明确 @ 不受自主判断影响。没有每日回复次数上限。
|
|
43
|
+
|
|
44
|
+
## 渠道表情适配器
|
|
45
|
+
|
|
46
|
+
`StickerAdapters` 默认委托伙伴的 `StickerLibrary`,渠道通过 `register(platform, factory)` 提供 `list` 和 `resolve`,工具按实际消息来源选择适配器,本地聊天或未知来源始终使用默认库。
|
|
47
|
+
|
|
48
|
+
QQ 的「表情与图片 → 聊天表情来源」默认选择 QQ 优先,也可改回默认库。QQ 目录优先提供 `fetch_custom_face_detail` 的收藏和 `fetch_sys_faces` 的系统表情;模型通过 `partner_stickers` 查找、查看并用 `partner_chat_reply` 发送。默认内置表情有匹配的原生对应项时也会适配;自定义上传图片保持原样。目录缓存最多五分钟,更新渠道配置会失效。
|
|
49
|
+
|
|
50
|
+
系统表情走 `face` 消息段,收藏表情走 `send_custom_face`,两者保留发送顺序、来源账号和渠道绑定。目录查询失败或找不到匹配可在发送前回退默认库;发送结果未知时不再补发默认图片,避免重复消息。QQ 当前无收藏时仍可使用系统表情。原生表情的页面展示使用宿主正常正文元素。
|
|
51
|
+
|
|
52
|
+
## 私有能力
|
|
53
|
+
|
|
54
|
+
在「QQ 设置 → 私有能力」启用总开关,再按分类选择单项能力,保存后生效。仅归属账号及系统自主执行可在已有授权范围内调用。关闭总开关不会影响已开启的文字、表情与当前会话语音回复;后者在「聊天回复 → 语音回复」独立设置。伙伴通过 `partner_qq` 先查目录,再查参数,最后调用;无需向每次对话注入全部 API 参数。
|
|
55
|
+
|
|
56
|
+
- **QQ 空间**:可浏览动态、发表说说、点赞、评论和管理自己的说说;默认发表范围为好友可见,可调整。空间访问范围由当前 QQ 账号决定。
|
|
57
|
+
- **语音**:本地音频文件发送到已授权私聊或已选群;QQ AI 音色生成及发送用于群。点击「读取 QQ 音色」选择默认音色,也可让伙伴选择。
|
|
58
|
+
- **其他分类**:聊天互动、记录、账号与好友资料、群资料、公告待办、群管理、文件及群相册。管理与删除操作独立开启,且受 QQ 实际权限约束。
|
|
59
|
+
|
|
60
|
+
未实现和凭据类接口不对伙伴开放。文件上传只读取伙伴工作目录内的非隐藏普通文件,不支持任意 URL 或远程容器路径。结果未知的对外操作不会自动重发;可在「最近操作记录」确认状态,再核对 QQ 实际结果。
|
|
61
|
+
|
|
62
|
+
自主接话判断与后台记忆整理独立;面板的「当前任务」显示记忆、归档、初始化或运行中的会话,最近判断显示接续、语义判断、降级放行或旁听原因。连续消息逐条进入本地判断,不会因接话冷却或伙伴忙碌直接跳过;判断可自主选择不回复。群白名单的所有未屏蔽成员都可进入接话判断;其他已接入群按发言账号审批,私聊由独立开关和配对控制。
|
|
63
|
+
|
|
64
|
+
AI 仅注册一个 `partner_qq` 入口。`list` 默认返回已开启的分类与数量,带 `category` / `query` 时最多返回 20 项操作概要(`offset` 翻页),`describe` 才返回单项参数。完整 89 项 API schema 不进入每轮工具定义。
|
|
65
|
+
|
|
66
|
+
## 归属账号
|
|
67
|
+
|
|
68
|
+
在 QQ 配置的“访问权限”中填写一个或多个归属 QQ 号,保存即可;留空关闭。只填写账号,不另写哥哥、弟弟等关系,不区分私聊或群聊。角色设定描述角色本身;具体关系、称呼和相处方式沿用身份中的独立「关系设定」,修改身份后同步使用新设定。
|
|
69
|
+
|
|
70
|
+
识别依据是渠道真实发言账号,昵称、自称和引用不改变归属。其他人按人物性格与各自交往相处。绑定决定是否附加关系以及能否使用既有授权的私有工具,不绕过私聊开关、群白名单或主会话选择。本地对话保持原设定。
|
|
71
|
+
|
|
72
|
+
## 工具入口与耗时诊断
|
|
73
|
+
|
|
74
|
+
启用“统一伙伴工具入口”后,模型常驻 `partner_tools` 和 `partner_channel_access`。前者按分类查询、describe 查看参数、call 调用真实能力;后者只根据真实渠道与当前发言账号返回已授权能力,不接受自报 QQ 号。默认适配器沿用既有授权;QQ 普通成员只查询和调用聊天、表情、语音能力,归属账号与可信自主任务可使用原本已授权的能力。工具实际执行仍复查当前权限,经过原审批与取消流程。换人不改变顶层工具表,也不改变身份或记忆配置。
|
|
75
|
+
|
|
76
|
+
群消息逐条通过会话归属与本地语义判断,不再使用独立远程模型门控。`channels/status` 的 `qqLatency` 保留最近 20 条消息的处理耗时;`beforeHandleMs` 包括前置队列与身份核验,`decisionMs` 是本地接话判断,`decisionMethod` 为 `local`、`decisionScore` 为规则结果或语义分类分值(不是接话抽签概率),`agent` 区分伙伴队列、输入准备、模型与空闲等待、回合结束后的等待、状态提交和出站准备。`sendMs` 包括投递记账、渠道校验、发送确认与完成记账,不能直接视为网络延迟。追加到运行中回合的消息标记 `steered`,不额外发送技术提示。
|
|
77
|
+
|
|
78
|
+
### 会话归属与本地语义(2.21.3)
|
|
79
|
+
|
|
80
|
+
已替换 2.21.2 的逐条评分抽签:明确呼唤、引用伙伴消息与正在进行的对话优先接续;按群和发言人保留五分钟成功回复窗口,换人插话不会清空。新话题由可选本地语义分类器辅助判断;低置信度或故障时交给正式回复模型,后者可以选择旁听而不发送消息。详情、资源占用与测试限制见 [QQ 接话设计](qq-attention.md)。
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# 2.10.0 — 角色设定与聊天行为分层
|
|
2
|
+
|
|
3
|
+
角色配置优先参考 qq-bridge 的自由文本角色与共享聊天预设设计,减少填写负担和服务式闲聊倾向。
|
|
4
|
+
|
|
5
|
+
- 角色设定支持一份自由文本,几条习惯即可启用;示例、动机、世界背景不再必填。
|
|
6
|
+
- 旧设定、开场参考和正反例完整合并展示。编辑后的新文档为唯一角色文本来源,旧字段与背景资料保留。
|
|
7
|
+
- 独立聊天规则强调直接反应、自己的态度、说到点上停止、相关记忆和自然收尾。可设置闲聊节奏、少量动作和额外偏好。
|
|
8
|
+
- 每轮刷新简短聊天提醒,记忆服务关闭时也生效;不更改原始历史,不额外调用模型。
|
|
9
|
+
- 工具注册、权限和真实任务交付能力完整保留;工作流程适用范围明确,普通闲聊无需自动进入看板。
|
|
10
|
+
- 分段配置为角色设定、聊天方式、试聊、相处记忆;首次三步引导使用通用示例,旧资料按需展开。
|
|
11
|
+
|
|
12
|
+
未新增 QQ 渠道、工具驱动发送、分段气泡、故意延时或潜水。正式私聊仍需可见回复。试聊是隔离预览,不执行工具或发送真实渠道消息;正式会话的工具能力不受影响。
|
|
13
|
+
|
|
14
|
+
兼容原 schemaVersion 1,新增可选 roleText/chatStyle 字段。关闭角色聊天继续使用旧身份。回退到旧包前应备份新角色文档,旧版本不会读取新增字段。
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# 2.10.1 — 修复正式对话中的角色与记忆注入
|
|
2
|
+
|
|
3
|
+
修复角色试聊与正式会话效果不一致的一条实际原因:动态记忆原来作为系统提示区块注入,支持 in-history 更新的模型每次变化都能追加整份系统提示;渠道入口还会重复召回记忆、人物画像和旧助手原文。
|
|
4
|
+
|
|
5
|
+
- 稳定身份与聊天行为放在 DSH 的人格后缀位置,动态角色状态、相关记忆、画像与本轮提醒改为原生 runtime context,使用字面量文本。
|
|
6
|
+
- 本地、渠道和插话共用 awaited assembly 准备点,每条输入只召回一次。记忆关闭时不自动读取长期记忆或画像。
|
|
7
|
+
- 开启角色聊天时,自动召回保留结构化记忆、场景与画像,停止附带历史助手原文;显式 `partner_memory_recall` 仍可检索历史细节,旧身份的自动历史检索不变。
|
|
8
|
+
- 用户纠正语气时直接调整接话,避免自动写人格诊断、整改承诺和加粗小结。实际任务仍照常使用全部授权工具。
|
|
9
|
+
|
|
10
|
+
不改写原始会话,不增设回复改写模型调用,不缩小工具集。重启后的原生会话恢复会按 DSH 的新消息系列规则归一化旧系统快照;以后角色配置不变时,伙伴动态记忆不再触发整份系统提示更新。其他插件仍可能独立改变系统提示。
|
|
11
|
+
|
|
12
|
+
用户界面的引导示例保持通用。自然程度仍需真实多轮体验判断,测试通过不等于所有回复都能达到同一种风格。
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# 2.11.1
|
|
2
|
+
|
|
3
|
+
渠道发出的结构化聊天回复现在会作为正文显示在网页会话中,不再随原生工具过程一起折叠。已有记录重新打开即可显示,无需修改日志或重发消息。结果事件继续传给原生工具节点,避免其结束状态丢失。
|
|
4
|
+
|
|
5
|
+
开启分段回复后,简短偏好约束单条消息,不再暗示整轮只能一句;有不同接话点时优先分别提交。每轮上下文会明确当前分段和表情开关。表情工具说明列出实际内置表情 ID,允许直接选择;自定义和不熟悉的图片仍可搜索、查看,服务端继续校验开关和库内资源。无需强制每轮拆句或附图,工具与工作能力保持不变。
|
|
6
|
+
|
|
7
|
+
验证:聊天投递、角色提示、记忆上下文回归测试;生产会话只读可见性检查使用 `ops/verify-chat-visibility.mjs`,断言实际聊天节点不属于折叠过程且高度大于零。隔离模型试验不执行工具、不写正式会话、不发送渠道消息。
|
|
8
|
+
|
|
9
|
+
部署验收(2026-10-28):785 项自动化测试全部通过,归档资源校验通过。使用当前伙伴模型 gpt-5.6-sol、近期对话及已注册工具声明进行三轮隔离试验,分别得到文字+内置表情、两条文字+内置表情、两条文字;仅观察模型返回,未执行或发送任何测试消息。生产 2.11.1 健康检查及伙伴 API 通过,浏览器确认原有四条结构化回复均可见且高度大于零。14 位伙伴保留,受检伙伴的角色卡、模型和能力配置与部署前一致。这些样本说明功能可触发,不保证每轮都分段或附表情。
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# 2.11.2
|
|
2
|
+
|
|
3
|
+
DeepSeek 等模型在同一条助手消息中先输出文字、再只用 `partner_chat_reply` 提交图片时,插件现在会保留该工具调用旁的公开文字,再按顺序发送文字和表情。只匹配当前输入后的同一个终结工具调用,不提取推理、历史步骤或其他工具的进度说明;重复文字去重,原有权限和大小限制继续生效。
|
|
4
|
+
|
|
5
|
+
网页中的结构化回复现在投影为 DSH 原生 `assistant-step` 正文,复用原生 Markdown 与图片显示,移除了插件自己的气泡渲染器及样式。渠道仍按消息顺序发送,网页按原顺序展示各段及表情。没有改写会话日志、伪造助手事件或修改主题源码。
|
|
6
|
+
|
|
7
|
+
每轮增加简短的当前角色开场设定与聊天偏好提醒,把角色反应与发送协议区分开;不限制工作工具。DeepSeek 隔离试聊覆盖角色接话和实际任务的工具选择,不执行任何试验工具,也不向渠道发送测试消息。
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# 2.11.3
|
|
2
|
+
|
|
3
|
+
分段开关改为“允许分段回复”:默认一条自然回应,删掉“优先分成两条”与“先顶嘴再补真实想法”等会诱导固定套路的规则。保留按需分段、纯表情和完整工作交付,不限制工具。
|
|
4
|
+
|
|
5
|
+
角色设定新增“大肥鱼参考”弹窗:说明 qq-bridge 小鲸鱼的身份、说话习惯、节奏、正反例结构,附对应提交的完整只读原文及来源链接。通用向导示例继续通用,现有角色内容不被覆盖。背景条目的勾选框和文字采用 12 px 间距及至少 44 px 高的点击区域。
|
|
6
|
+
|
|
7
|
+
表情库说明原项目取图自登录 QQ 账号收藏,而非随仓库发行的公开图片包。新增批量导入本地收藏图片,支持可选的 qq-bridge `state/stickers.json` 资料匹配:图片文件名与 ID / MD5 相同则带入名称、标签,未匹配则使用文件名。预览匹配结果,逐张报告失败;导入不访问 JSON 中的 URL,不登录 QQ。沿用现有图片格式、大小、容量与伙伴隔离校验。
|
|
8
|
+
|
|
9
|
+
补齐 2.11.2 的生产主题验收:原生 Markdown 只把绝对 HTTP(S) 地址识别为网络图片,伙伴现在用当前网页的 baseURI 解析表情 URL,避免将 `/partner-local` 当成本地文件。日志仍保留相对地址,切换访问域名后照常显示。网页验证要求真实图片元素存在并成功解码,不能仅凭没有报错判定通过。
|
|
10
|
+
|
|
11
|
+
工具参数已经含有文字时,以该最终正文为准,不再拼入工具调用旁的近义前言。只有工具参数完全没有文字时,才补入同一次终结调用旁的公开文字,修复 DeepSeek 只投递图片的问题并避免复述。
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# 2.11.5
|
|
2
|
+
|
|
3
|
+
- 身份新增独立的“闲时主动联系”,默认关闭。选择一个网页或已授权渠道会话,设置空闲时长、每天上限与免打扰时段;保存身份生效。不要求开启角色聊天。
|
|
4
|
+
- 复用每分钟心跳调度,不要求启用关注心跳。只根据真实用户输入判断是否可以再次联系;未回复不追发,忙碌时等待。默认空闲 2 小时、每日最多 2 次、23:00–09:00 免打扰,按服务时区计算。
|
|
5
|
+
- 主动联系在原生会话中生成,继承当前身份、记忆和工具权限。仅发往明确选中的会话,不广播通知渠道。新用户输入、关闭开关、设置变更或撤销授权后取消尚未投递的渠道问候。
|
|
6
|
+
- 生成前持久化尝试标识;重启不重复。失败或生成时被新输入打断也计入次数,等待下一次真实对话后才有资格再次联系。不为不确定的投递自动重生成。
|
|
7
|
+
- 替换旧几何脸,内置 Volpeon 的 20 张 Blobfox 小狐狸表情,Apache-2.0;完整来源和许可证随包提供。旧 builtin ID 与自定义收藏继续可用。发送时无需外链。
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# 2.11.6 — 减少记忆与关注读取的重复写盘
|
|
2
|
+
|
|
3
|
+
- 数据库结构初始化改为按 schema 版本升级执行;正常读取不再重复建表、检查字段和写入版本号,减少同步磁盘 I/O 对宿主线程的影响。
|
|
4
|
+
- 记忆 schema 升至 2,关注 schema 升至 5;保留旧字段兼容迁移,结构、数据和版本号在同一事务中提交,失败整体回滚。
|
|
5
|
+
- 全文索引和关注标题迁移采用保存点,兼容外层迁移事务;初始化失败关闭连接,冻结期间拒绝继续打开数据库。
|
|
6
|
+
- 不降低 SQLite 持久化保障,不删除既有记忆或会话;高于当前支持的数据库版本会明确拒绝访问。
|
|
7
|
+
- 包含 2.11.5 的 20 张 Blobfox 内置表情与身份中的闲时主动联系功能。
|
|
8
|
+
|
|
9
|
+
详细说明:[存储读取与初始化](../storage-read-performance.md)。
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# 2.11.7 — AI 生成人格与人工草稿分离
|
|
2
|
+
|
|
3
|
+
- 可在聊天中描述想要的人格,由伙伴通过 `partner_identity` 读取、生成并保存自己的完整身份;无需开启伙伴管理权限。支持人格正文、聊天偏好、背景资料、基本身份及闲时联系设置,其他工具能力保持原样。
|
|
4
|
+
- 页面编辑人工草稿,保存时同时应用到实际身份。AI 只编辑生效内容,不改人工原稿;旧身份在第一次修改前保留为草稿。页面可查看生效版本,也可将其复制到编辑区后手动保存为原稿。
|
|
5
|
+
- 身份保存带版本检查;并发编辑不会静默覆盖。页面保存是完整替换,AI 局部修改会保留未指定字段,数组完整替换。已授权的伙伴管理工具也支持人格配置,并保留目标的人工草稿。
|
|
6
|
+
- 免打扰可独立开关,关闭时保留时段。旧配置默认保留原先免打扰行为。
|
|
7
|
+
- 取消闲时主动联系每日上限,旧配置中的 dailyLimit 不再限制发送。仍遵守空闲间隔、用户未回复不追发、会话忙碌等待及渠道授权规则。
|
|
8
|
+
|
|
9
|
+
验证:身份生成与应用、旧身份原稿保留、重启持久化、页面保存、并发冲突、跨伙伴隔离、权限字段拒绝及免打扰/无限次回归测试;生产页面只进行不落盘交互验证,不发送渠道测试消息。
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# 2.12.0 — 自主睡眠与梦境
|
|
2
|
+
|
|
3
|
+
身份新增“睡眠与做梦”。角色可在聊天中调用 `partner_sleep` 自主选择休息 5–720 分钟,不设固定睡眠时间;后台也会在空闲时低频判断是否想休息,模型可以选择继续清醒。
|
|
4
|
+
|
|
5
|
+
- 已启用角色聊天的旧身份默认开启睡眠与做梦,工作型身份默认关闭;用户可单独修改开关。设置遵守人工草稿/生效身份的分离规则。
|
|
6
|
+
- 睡眠只暂停闲时主动搭话,不限制工具、任务、定时交付或直接回复。真实用户消息唤醒;时长结束自然醒;页面也可叫醒。未完成的排队/执行任务会阻止入睡。
|
|
7
|
+
- 移除身份里的固定免打扰时段,旧时段不再控制闲时联系。没有每日联系次数上限,未回复不连续追发的规则保持。
|
|
8
|
+
- 梦境仅从本会话已有的有效记忆产生虚构联想和主观感受。独立存储最近 12 个梦,不写入事实记忆、不执行每日终审、不触发上下文焕新、不自动发送梦境报告。记忆关闭或没有可用记忆时只休息。
|
|
9
|
+
- 梦境按会话隔离;共享同一个真实会话的渠道可共享梦境。聊天只提供近期一个梦作为非事实参考,并要求谈到时明确是梦或联想。睡眠与梦境在重启后保留。
|
|
10
|
+
- 用户叫醒或修改人格时,过期的后台结果不再写入。截断/断流不是成功;失败不会无限重试。
|
|
11
|
+
|
|
12
|
+
后台每分钟检查状态,一次最多发起一个模型请求。只有空闲至少 15 分钟、最近两天有活动且没有执行任务的角色才会进入自主判断;同一段活动只判断一次,两次判断至少间隔一小时。这是控制后台开销的检查节奏,不是强制入睡时间。梦境使用当前伙伴模型,最多生成一次;记忆整理流程继续独立运行。
|
|
13
|
+
|
|
14
|
+
验证包含自主判断、消息/手动唤醒、自然醒、并发失效、重启恢复、会话隔离、独立存储及闲时发送拦截;页面验证使用拦截保存与模拟状态,不向正式渠道发送测试消息。
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# 2.13.0
|
|
2
|
+
|
|
3
|
+
- 新增 QQ 渠道,通过 SnowLuma / OneBot v11 正向 Universal WebSocket 接收好友私聊与发送回复。
|
|
4
|
+
- QQ 配置只需 WS 地址和 WS Token,提供连接测试与可选固定联系人;复用凭据库和联系人配对授权。
|
|
5
|
+
- 复用伙伴人格、记忆、工具、分段聊天、表情包及通知流程;QQ群消息不会触发伙伴。
|
|
6
|
+
- 共享收发连接、关联 API 回执、断线退避重连、检查登录账号与好友身份;按文本段发送,避免 CQ 字符串被解释为动作。
|
|
7
|
+
- 图片和文件以字节上传,兼容 DSH 与 SnowLuma 分属不同容器;发送结果逐项确认。
|
|
8
|
+
|
|
9
|
+
验证:TypeScript/客户端构建、841 项自动化测试通过(含 9 项 QQ 协议测试);真实 SnowLuma 的 WS 连接与账号检查通过;QQ 配置弹窗通过手机/桌面、浅色/深色检查。
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# 2.14.0 · QQ 分层配置与群聊
|
|
2
|
+
|
|
3
|
+
QQ 渠道新增分层设置:总览 → 连接/私聊/群聊/表情/权限/发送,群列表放在群聊的下一级。支持深浅色、小屏布局、明确的开关状态、草稿关闭保护及配置冲突检查。
|
|
4
|
+
|
|
5
|
+
群聊默认关闭,仅选择的群可触发;默认被 @ 才回复,可选择回复全部已授权成员消息。成员按群单独配对,群会话不合并私聊模型历史和会话记忆,群通知固定返回来源。现有私聊连接保持兼容。
|
|
6
|
+
|
|
7
|
+
提供私聊、群聊、回复 @、系统表情、图片/表情包开关,以及手动文字/原生 QQ 表情发送。目录来自 SnowLuma,支持分类搜索和预览,发送前核对当前 QQ 身份、群/好友关系及授权,等待 API 回执。浏览不会发送消息。
|
|
8
|
+
|
|
9
|
+
验证包括模拟 OneBot 的路由、权限、媒体及群上下文测试,手机/桌面深浅色浏览器检查和线上只读目录查询;没有向真实联系人发送测试消息。
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# 2.15.0 · QQ 会话选择与渠道表情适配
|
|
2
|
+
|
|
3
|
+
新增「会话与记忆」:默认每个群、每位私聊用户使用独立会话,以群名/联系人名命名;勾选指定用户或群才接入主会话。取消勾选接回原独立会话,原始记录保留。所有会话沿用该伙伴长期记忆,升级合并旧群记忆但不拼接聊天原文。群消息保留发言人来源,群内交付仍返回来源群。
|
|
4
|
+
|
|
5
|
+
新增「自主回复白名单」:指定群不必 @,无工具的模型先判断接话时机,需要时再交给伙伴回复。普通成员消息作为背景,已授权成员才能触发操作;无效判断、超时和繁忙时保持安静。保留明确 @ 回复方式,不限制伙伴正常回复时的工具。
|
|
6
|
+
|
|
7
|
+
表情工具新增渠道适配层:默认库保持兼容,QQ 默认优先系统表情及收藏表情包,支持浏览、查看和原生发送,目录不可用可回退默认库。原生表情与文字保持原顺序;发送未确认时不会重复补发图片。
|
|
8
|
+
|
|
9
|
+
修正未保存提示的白底及表单、开关、底部按钮对齐,提示背景随当前主题。
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# 2.15.1
|
|
2
|
+
|
|
3
|
+
- 群聊接话判断不再继承正式对话的高推理强度,按模型能力选择关闭或低推理;输出预算由 120 提高到 1024 token。超时、截断、格式错误与主动旁听分别显示,授权不足和忙碌跳过也有原因。
|
|
4
|
+
- 渠道面板显示最近一次群聊判断及主动联系未送达状态。
|
|
5
|
+
- QQ 主会话选择在下一次主动联系检查时生效,不再等待用户先发私聊。
|
|
6
|
+
- 主动联系增加只读发送前检查。只有确认尚未发出的离线失败,在连接恢复后每 30 秒检查补发;沿用原正文、原接收人,最多保留一小时的自动补发有效期。
|
|
7
|
+
- 设置变化、新用户消息、会话变化、睡眠及撤销授权会阻止旧主动消息重发。发送结果不明、旧版未标记安全状态的记录不会自动补发。
|
|
8
|
+
|
|
9
|
+
运行环境排查:QQ 在 13:18 因 GPU 子进程反复退出而崩溃,随后 SnowLuma 注入失败,导致群消息未到达伙伴。部署移除了 `--disable-software-rasterizer`,保留软件渲染回退;`ops/snowluma-qq-rehook.*` 提供 supervisor 事件恢复,在 QQ 更换进程后等待 20 秒再重连桥接组件。需要持续观察是否仍有客户端崩溃;不把一次恢复视为长期稳定性证明。
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# 2.16.0
|
|
2
|
+
|
|
3
|
+
- QQ 自主接话不再被整个伙伴的忙碌状态提前丢弃。已授权发言正常交给判断模型,需要接话时由现有会话队列处理;未授权成员、冷却和模型判断保持原有规则。
|
|
4
|
+
- 渠道面板显示当前任务来源:后台记忆、回合归档、会话准备或具体运行会话。
|
|
5
|
+
- 修复角色记忆超过 20 条剧情事件导致后台整理持续重试。自动生成的摘要去重并保留近期条目,完整对话仍在日志中,手动编辑限制与固定记忆保护不变。
|
|
6
|
+
- 新增 `partner_qq` 工具,以 list / describe / call 发现并调用 89 项经过筛选的 SnowLuma 能力,按空间、语音、互动、消息记录、资料、群资料、公告、管理、文件和相册分组。
|
|
7
|
+
- 自主能力总开关和每项操作独立配置,旧渠道默认关闭;语音可选 QQ AI 音色,空间发布默认好友可见。配置位于渠道 → QQ 设置 → 自主能力。
|
|
8
|
+
- 私聊与群操作受已有授权、群白名单和渠道开关约束;消息 ID 操作先验证来源会话;跨伙伴调用、未列出的接口和凭据接口不可用。群成员管理由所选群与单项管理权限授权。
|
|
9
|
+
- 媒体来自伙伴工作目录内普通非隐藏文件,单文件 16 MB、每次最多 9 个、总计 32 MB;读取实际文件后以 base64 传输,不将工作目录路径交给 QQ 容器。
|
|
10
|
+
- 对外操作先持久化调用标识;断线或超时结果不明时保留记录并禁止相同调用自动重发。确认记录保留 30 天,未确认记录持续保留;页面显示最近 20 条。此机制不替代跨调用业务去重。
|
|
11
|
+
|
|
12
|
+
QQ AI 文字转语音是群能力;私聊支持已有音频文件。操作是否可用还取决于 SnowLuma 版本、QQ 账号和群权限、网络及平台限制。未进行真实发帖、评论、语音或管理操作测试。
|
|
13
|
+
|
|
14
|
+
本次环境排障还修正了 SnowLuma 容器继承的失效 Tailscale DNS:Compose 固定 `223.5.5.5` 与 `119.29.29.29`,当前容器同步应用;保持 `appnet`。修正后在线只读检查确认 QQ 空间说说列表、好友动态和 30 个 AI 音色均可读取。
|
|
15
|
+
|
|
16
|
+
AI 仅注册一个 `partner_qq` 入口。`list` 默认返回已开启的分类与数量,带 `category` / `query` 时最多返回 20 项操作概要(`offset` 翻页),`describe` 才返回单项参数。完整 89 项 API schema 不进入每轮工具定义。
|
|
17
|
+
|
|
18
|
+
伙伴「能力组合」新增可选的「按需加载伙伴工具」。开启后只常驻目录入口与聊天回复/表情,工作工具按分类发现,再 load 原工具;最多保留 4 项最近加载的工作工具。仍通过 DSH 原工具注册与执行流程运行,保留审批、能力撤回、超时、取消、输出和终结回合语义。旧伙伴未设置开关时保持原工具展示;本次先为莫殇开启。原生宿主、SSH/知识库等独立插件工具不由此功能收缩。
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# 2.17.0
|
|
2
|
+
|
|
3
|
+
## 闲时自主活动
|
|
4
|
+
|
|
5
|
+
身份中的「闲时主动联系」升级为「闲时自主活动」,沿用原有开关、目标会话和间隔,无需重新配置。间隔现在表示概率升到 100% 所需的空闲时间,不是平均活动间隔:每分钟以 `min(100%, 完整空闲分钟 / 间隔 × 100%)` 抽取一次。以 60 分钟为例,第 1 分钟约 1.7%,第 30 分钟 50%,第 60 分钟 100%;因为每分钟抽取,实际平均会明显提前。未抽中不调用模型。
|
|
6
|
+
|
|
7
|
+
抽中后重置周期,由角色选择聊天、调用已授权的 QQ 或其他工具,或者安静结束;不限制每日次数,也不要求用户回复后才能继续其他活动。新对话、最近完成的回合和已有活动会重置空闲计时。睡眠、前台任务和聊天运行期间等待,后台记忆整理不再阻挡闲时活动。检查结果和活动领取均持久化,同一分钟重复检查、并发检查、重启不会重复抽取或补发未知结果。
|
|
8
|
+
|
|
9
|
+
普通回复依旧发往所选会话;其他工具按自身权限、联系人和群范围执行,不自动扩大授权。新增按需发现的 `partner_activity_finish`,用工具回执安静结束,无需发送“无需回复”等特殊文本。只有当前系统自主活动可以使用,不能跳过用户消息和工作任务。
|
|
10
|
+
|
|
11
|
+
QQ 单项能力没有固定概率。AI 在用户对话、任务或自主活动被唤起后,根据场景选择查询和调用。配置页补充了这一区别。
|
|
12
|
+
|
|
13
|
+
## 人格生成与对话
|
|
14
|
+
|
|
15
|
+
角色聊天区域说明:用户在正式聊天里提出身份、关系、性格和语气要求,AI 读取当前生效身份和按需返回的写作指导,按「身份、相处方式、说话习惯、避免的表达、对话参考」生成并应用。通用需求示例可选中复制;手工编辑继续保留。AI 只修改生效内容,页面草稿不受影响。
|
|
16
|
+
|
|
17
|
+
验证工具按需加载前后完整人格提示完全一致,包括对话示例和聊天偏好。加强工具操作后的角色连续性:如实说明结果但不自动变成操作报告;遇到“太像 AI”反馈直接改进接话,不作自我分析。试聊使用同一份本轮接话规则。修正渠道说明固定称微信的问题。
|
|
18
|
+
|
|
19
|
+
自主活动拥有独立的本轮上下文标识,避免沿用上一条用户消息的“必须回复”提示;恢复用户对话时恢复正常回复要求。
|
|
20
|
+
|
|
21
|
+
## 验证
|
|
22
|
+
|
|
23
|
+
测试覆盖概率边界、并发/重启、未命中检查持久化、睡眠/忙碌、无新消息继续活动、后台记忆不阻塞、渠道静默投递、原生 ToolRuntime 终结语义、AI 写入与草稿隔离、工具发现前后人格一致及活动/用户上下文切换。实际对外 QQ 发送不作为部署测试。
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# 2.17.1
|
|
2
|
+
|
|
3
|
+
- 将身份 → 角色聊天中的“相处记忆”合并到记忆页,改为“当前相处状态”,默认折叠。共用记忆范围与学习开关,不新增定时任务或模型请求。
|
|
4
|
+
- 主要展示当前话题与关系;背景、近期互动与固定内容按需展开。保留现有数据库、接口、固定内容和手动修改保护,不批量清洗历史。
|
|
5
|
+
- 自动整理明确区分长期事实、当前接话状态与梦境。相处状态不重复人格卡或长期画像,不猜测关系,不把梦里的内容当成共同经历。
|
|
6
|
+
- 编辑时保留草稿,可撤销;未保存或正在处理时锁定范围选择,避免写错会话。并发更新仍需重新读取,不能覆盖后台的新状态。
|
|
7
|
+
- 角色聊天关闭时保留内容但不注入对话;学习关闭时保留已有状态但暂停自动整理。上下文焕新继续沿用现有安全检查。
|
|
8
|
+
|
|
9
|
+
梦境仍在身份 → 睡眠与做梦中查看。做梦产生联想,不能替代长期记忆或相处状态。
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# 2.18.0
|
|
2
|
+
|
|
3
|
+
QQ 渠道 → 访问权限新增可选的“身份关系绑定”。填写主归属 QQ 号及这个人在人设中的关系(例如角色是弟弟,对应关系为“哥哥”)。只有绑定账号对应这层专属关系;对其他人的态度由人物性格与实际交往决定,不额外规定冷淡或亲近。
|
|
4
|
+
|
|
5
|
+
- 私聊与群聊从渠道真实发送者和已存消息来源判定,不采用昵称、自称或正文中的号码;共用会话仍逐轮区分发言人。
|
|
6
|
+
- 绑定不授予配对、工具或主会话权限;默认关闭,旧配置继续生效,关闭后保留填写内容。
|
|
7
|
+
- 设置在后续回合生效;本地网页对话保持原有身份。群聊自主活动没有明确个人对象时不推定为绑定人。
|
|
8
|
+
- 群聊接话判断沿用同一绑定规则。记忆提炼携带 QQ 关系归属,不允许其他成员的轮次改写共享状态中的绑定关系;不迁移历史记忆。
|
|
9
|
+
- 关系是提示词中的明确约束,并非身份认证或新的访问权限。渠道授权与工具权限仍分别管理。
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# 2.19.0
|
|
2
|
+
|
|
3
|
+
角色与关系分开保存:角色设定只描述自身身份、性格、语气和通用示例;身份新增独立「关系设定」,描述与用户的关系、称呼和专属相处方式。默认适配器合并使用;QQ 适配器仅在真实发送账号匹配访问权限中的任一归属 QQ 时附加关系,群聊与私聊通用。未绑定或未知发送者不附加关系。原有工具授权仍是上限,不强制陌生人冷淡。
|
|
4
|
+
|
|
5
|
+
- 页面与 AI 共享一份生效身份,不再维护独立草稿。AI 使用 partner_identity 分别编辑 characterCard.roleText 与顶层 relationshipText;页面直接展示最新设定,正在编辑时保留未保存内容并提示版本冲突,防止覆盖。旧草稿仅保留在部署备份中。生成指导与参考说明同步更新。
|
|
6
|
+
- 试聊可选择普通会话、QQ 归属账号、QQ 其他账号;不投递渠道、不写正式记忆。
|
|
7
|
+
- 旧的独立 characterCard.relationship 兼容读取;显式清空新字段可取消旧关系。旧自由文本中的关系不自动猜测删除,页面提示人工或 AI 拆分,旧文本不丢弃。
|
|
8
|
+
- 每轮根据持久化消息来源核验发送者,不采用昵称、自称、引用或群号;共享会话切换不追加系统头。QQ 非归属对象不自动附加共享相处状态和用户画像。历史消息和显式记忆检索仍保留,不把关系选择器当作记忆访问权限。
|
|
9
|
+
|
|
10
|
+
QQ 归属支持多个账号(最多 100 个)。未归属 QQ 用户只获得当前会话的文字、表情与语音回复工具:模型请求不提供私有工具,执行入口使用 DSH 单调拒绝 guard 重新核验账号,阻断旧工具调用、按需发现与代码入口。已核验归属账号及系统发起的自主活动/内部任务沿用既有能力开关与授权。群聊自主接话仍按实际发言人核验,不因机器人决定回复而获得自主执行权限。
|
|
11
|
+
|
|
12
|
+
工具提供同样通过渠道适配器:默认保持会话既有工具;QQ 自行判定归属或系统自主执行,决定提供既有完整工具还是受限回复工具。模型装配与真实执行共用适配器结果。未归属聊天也不能通过记忆整理新建、停止或修改关注任务;含未归属发言的每日终审不变更关注,已归属发言仍可在逐轮整理中维护关注。
|
|
13
|
+
|
|
14
|
+
配置页面分为「聊天回复」与「私有能力」,标明适用对象。新增当前会话语音工具,只接受文字/音色,固定真实回复目标,不接受文件、URL、收件人或任意 API;群内直接使用 QQ 文字转语音,私聊借用所选已接入群的音色合成后仅发送到私聊。普通语音开关独立于私有能力,后者继续控制音频文件、空间、管理等操作。
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# 2.19.1
|
|
2
|
+
|
|
3
|
+
QQ 聊天许可按三种情况判断:私聊需要账号审批;自主回复白名单群放行所有成员,无需逐人配对;其他已接入群需要审批发言账号。私聊与各群的审批分别记录,不互相继承;明确屏蔽的成员仍不回复。群白名单无需 @,由伙伴判断是否接话,不保证每条必回;其他群沿用 @ / 全部消息的触发设置。
|
|
4
|
+
|
|
5
|
+
入站、文字、分段、表情、语音、原群通知和闲时联系共用许可判断;发送前重新核对群白名单、账号审批、开关与屏蔽状态,撤销后不继续发送。真实来源决定接收群,不创建隐式私聊授权、不转到其他会话。排队消息也读取最新设置。
|
|
6
|
+
|
|
7
|
+
群内许可只允许正常回复,不增加私有工具或关系权限。页面明确区分群接入范围、白名单、账号审批与归属账号。升级保留现有私聊开关、群列表和审批记录。
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# 2.19.2
|
|
2
|
+
|
|
3
|
+
降低 QQ 收发链路的本地等待:OneBot 的文字、图片等消息段已在同一个事件内,直接交接处理,不再等待一秒拼接窗口或每轮轮询后的一秒休眠。Matrix 附件拼接保持原行为。
|
|
4
|
+
|
|
5
|
+
QQ 按真实聊天目标分别准备输入;一个群的接话判断不会阻塞另一个群或私聊的准备。同一聊天仍按顺序处理,整条渠道共用 100 组积压上限。同一伙伴的模型执行继续串行,不并发改写共享上下文。
|
|
6
|
+
|
|
7
|
+
状态未改变时跳过磁盘提交与变更通知;收到消息时将最近联系时间和防重收据合并为一次持久化。实际修改仍校验、原子写入并同步到磁盘,发送前的账号、好友、群成员、审批和归属权限校验保持有效。
|
|
8
|
+
|
|
9
|
+
新增不包含消息正文或令牌的 `[qq-latency]` 分段日志:WS 到处理队列、接口验证、模型输入准备、模型回合、回合后处理及发送耗时。日志用于区分本地排队、磁盘处理与模型等待,不承诺固定回复时间。
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# 2.20.0
|
|
2
|
+
|
|
3
|
+
- 开启统一伙伴工具入口后,模型常驻 `partner_tools`(查询/调用)与 `partner_channel_access`(当前渠道账号能力)两个入口。聊天、表情、语音和工作工具都经入口调用。
|
|
4
|
+
- 默认渠道沿用既有授权,QQ 按可信发言来源实时过滤能力;归属账号、普通成员和可信自主任务仍各自遵守原权限。账号切换不再切换 native/PTC 或增删顶层工具。
|
|
5
|
+
- 原工具仍在 DSH 运行时执行,保留原参数校验、审批、取消、结果展示、附加上下文与回合终结。兼容 `load` 为查询说明,不再改变顶层工具集合。
|
|
6
|
+
- 连续消息追加到当前回合时,不再往渠道发送“已插入当前处理”提示。
|
|
7
|
+
- 并行执行独立 QQ 身份检查,合并首次通知记录与发送尝试的落盘,减少未变化伙伴的目录扫描;权限核验、原子提交、同步落盘与恢复语义保留。
|
|
8
|
+
- 渠道状态接口提供最近 20 条消息的阶段耗时,仅记录消息 ID、耗时与结果,不记录正文或凭据,便于区分模型判断、会话收尾、状态保存与发送等待。
|
|
9
|
+
|
|
10
|
+
此前生成结束后约 11 秒的等待已定位在会话收尾到发送记录建立之间;历史日志不能进一步确定具体阻塞点。本版增加阶段计时供下一轮实测,不宣称已达到 5 秒回复。
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# 2.20.1
|
|
2
|
+
|
|
3
|
+
- 闲时自主活动区分独立活动和联系对方:未收到新回复不再被提示为停止所有活动的理由,可依据兴趣浏览动态、分享感想或自然联系;仍可选择休息,不设置发消息、发说说或调用工具的次数指标。
|
|
4
|
+
- 每轮附上本伙伴当前已开启的 QQ 自主能力摘要,仅包含启用渠道的启用操作;具体参数按需查询,执行仍经过实时权限、目标范围和宿主审批。
|
|
5
|
+
- 引导每轮重新判断,避免照抄历史的“不打扰”结论;安静结束记录实际活动或本轮休息依据,记录不投递到渠道。
|
|
6
|
+
- 保留两个常驻工具入口、原触发概率、睡眠规则和防重复投递行为。
|
|
7
|
+
|
|
8
|
+
提示改进不保证模型一定采取某种行动;实际行为需通过后续自然触发记录观察。
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# 2.21.0
|
|
2
|
+
|
|
3
|
+
- 角色聊天新增好感度、等级与进度条。每个伙伴独立保存一份进度;同一伙伴适用的渠道与多个归属账号共用该伙伴的进度,不跨伙伴共享。
|
|
4
|
+
- 通用适配器默认参与;QQ 适配器只接纳核验的归属账号。群聊、私聊共用,普通 QQ 成员不累计、不应用加成,面向整个群的自主活动不借用归属身份。
|
|
5
|
+
- 角色聊天开启时默认累计,初始 20/100。有效对话完成后 +1,同一伙伴每 10 分钟最多累计一次;失败、中断、试聊、梦境和自主活动不加分,不追算历史,不因离线扣分。关闭功能保留进度。
|
|
6
|
+
- 五个等级对应自然接话、分享兴趣、主动话题、关心与语音、默契互动。适用对象的闲时自主活动概率乘以 1 + 好感度/100,上限仍为 100%;不绕过原睡眠、忙碌、渠道开关与权限检查,不强制发送。
|
|
7
|
+
- 好感度是独立运行状态,不因身份编辑或上下文焕新丢失,不触发工具重新注册;不使用额外模型请求评分。界面只在对应面板可见时每 30 秒读取进度。
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# 2.21.2
|
|
2
|
+
|
|
3
|
+
- 好感度缩成角色设定下方的小进度条,保留等级、累计开关与错误重试,不再单独占一个设置分段。
|
|
4
|
+
- 群聊自主接话改用本地加权评分,不再额外调用模型。结合称呼、提问、归属账号、好感度、近期成功回复、字符二元组话题相似度判断;不确定时按分数概率接话,同一消息固定抽签值。
|
|
5
|
+
- 明确 @ 或直接叫角色名优先接话;@ 他人不抢话。只有实际成功发送才建立两分钟内逐渐衰减的连续聊天加分,换人说话撤销。每条已接纳消息都进入判断,不因伙伴忙碌或冷却跳过。
|
|
6
|
+
- 最近群聊判断展示本地分数与接话概率,延迟诊断记录判断方式与分数。归属与好感度不改变工具权限。
|
|
7
|
+
- 闲时活动更积极探索已经开启的私有能力,仍遵守渠道权限、用户要求和发送去重,不强制每轮发消息或说说。
|
|
8
|
+
- 保留 2.21.1 的知识库统一工具入口兼容。
|
|
9
|
+
|
|
10
|
+
验证:覆盖本地评分、固定抽签、发送失败与权限撤销不建立连续聊天加分、结构化 @ 与引用、忙碌时逐条处理;好感度界面验证浅色/深色及手机/桌面布局。
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# 2.21.3
|
|
2
|
+
|
|
3
|
+
- QQ 群聊改用会话归属、连续对话状态和可选本地语义分类,不再对正常接续逐条抽签。明确叫名、关系称呼、引用伙伴消息直接进入处理。
|
|
4
|
+
- 按群及发言人分别保留成功回复后的五分钟对话窗口,其他成员插话不会清空或继承;发送失败、旁听不延长窗口,明确转向他人或停止会结束对应状态。
|
|
5
|
+
- 分类不确定、忙碌或不可用时放行至正式回复模型。语义服务独立限额运行,支持中文及多语言编码,无额外远程大模型判定调用。
|
|
6
|
+
- 自主群聊允许通过原聊天回复入口提交空消息选择旁听,不发送技术提示;私聊、浏览器来源和非白名单群不能使用该路径。常驻工具数量和权限不变。
|
|
7
|
+
- 引用对象根据实际收发记录核验;本地判定显示具体接话原因。使用与评估范围见 docs/qq-attention.md。
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# 2.21.5 · 好感度与主动延续
|
|
2
|
+
|
|
3
|
+
开启「闲时自主活动」及角色好感度后,正常回复成功送达会获得一次主动延续抽签。默认渠道沿用好感度适配器;QQ 只对已核验的归属账号生效。每个伙伴独立计算,多个归属账号共享同一进度;同一伙伴最多保留一项待执行机会。
|
|
4
|
+
|
|
5
|
+
概率为 `0.05 + 0.40 × (好感度 / 100)²`,20 分约 6.6%,60 分约 19.4%,100 分为 45%。这是唤起自主决策的概率,不是必定再发一条消息。抽中后可自然延续话题、发表情或语音、使用已开启的私有能力,也可安静结束。工具权限与原配置一致,不添加顶层工具,不增加每日联系上限。
|
|
6
|
+
|
|
7
|
+
随机等待 20–90 秒后,由现有每分钟自主调度检查执行;因此实际开始时间可能再延后不足一分钟。忙碌时短暂等待,超过送达后三分钟仍未开始则取消。待执行延续会暂缓同一伙伴的普通闲时抽签,开始后也会更新闲时活动时间,避免两个自主流程抢跑。
|
|
8
|
+
|
|
9
|
+
发送失败、静默结果、内部通知、主动延续自身不再触发抽签。每次抽签的命中和未命中都会持久保存,重启不重抽。任何会话的新输入、睡眠、取消归属、关闭好感度或自主活动、身份版本变化、目标会话变化会使旧机会失效;发送及 QQ 私有工具执行前再次核验实时权限。用户提出的安静、告别和停止要求由自主决策结合对话遵守,抽中也不强制发送。
|
|
10
|
+
|
|
11
|
+
网页正常回复在会话回合结束并空闲后登记;渠道回复在文本、表情与附件全部交付成功后登记。延续始终回到原始会话,普通闲时活动继续使用设置中的目标会话。
|
|
12
|
+
|
|
13
|
+
验证:概率边界、命中与未命中去重、并发领取、跨会话打断、忙碌/过期、原始目标、睡眠/权限撤销、归属群身份、持久化与发送成功/失败/静默回归;未向真实 QQ 发送测试消息。
|
|
14
|
+
|
|
15
|
+
保留生产 2.21.4 的 knowledge/ssh 操作级工具入口兼容与原权限边界。
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# 2.9.0 — 人格强化与每日上下文焕新
|
|
2
|
+
|
|
3
|
+
兼容 DSH 0.2.1-rc.2,Node.js ^22.19.0 或 >=24.0.0。
|
|
4
|
+
|
|
5
|
+
身份页新增可选人格卡:首次使用四步弹窗,已有内容直接编辑。包括角色核心、动机、语言、对话示例、关键词世界条目及独立角色记忆。试聊不写入正式会话或发送渠道。没有卡片或关闭人格强化时保留原身份逻辑;引导使用通用示例。
|
|
6
|
+
|
|
7
|
+
记忆设置新增独立的「每日上下文焕新」,默认开启、每日 04:00(插件时区)。关闭学习也会定时焕新;开启学习时先补齐未归档内容、提炼与终审,成功后才清空,失败延后重试。等待当前回合结束,保留受保护系统头和原始聊天历史。每天每会话最多一次,计划时间之后启动服务会等待下一天,不立即重置现有会话。每日终审开关不影响焕新所需的整理。
|
|
8
|
+
|
|
9
|
+
历史检索增加全文索引,解除最近 100 轮限制,提供限定当前会话范围的记忆检索工具。召回依赖保留的归档,不保证所有细节自动出现。
|
|
10
|
+
|
|
11
|
+
存储变更为新增角色状态、焕新记录与历史索引。部署前应备份伙伴状态与记忆数据库;原会话日志不重写。详情见 [功能说明](../character-cards-and-renewal.md)。
|
|
12
|
+
|
|
13
|
+
验证:758 项自动化测试通过;375px / 1280px、明暗主题的引导、试聊、保存与独立定时设置浏览器测试通过。原生 Session 测试覆盖系统头保护、历史重放、幂等、写入失败重试和并发消息保护。
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# 2.9.1 — 人格表达与试聊一致性
|
|
2
|
+
|
|
3
|
+
开启人格强化后,普通会话以当前角色参与交流;明确提出工作任务时继续遵守工具授权、事实和交付要求。旧身份、历史回复、记忆摘要和参考示例不能覆盖当前人格卡的表达风格。通过具体反应体现性格,减少解释自己在扮演什么性格、机械服务邀请和无依据的情绪推断。
|
|
4
|
+
|
|
5
|
+
试聊复用正式会话的身份提示,并将历史按 user / assistant 消息顺序发送,不再把整个对话包装成一条 JSON 用户消息。它仍是隔离试聊:不调用工具、不读写正式记忆、不发渠道消息;不能据此声称已验证完整生产会话的所有行为。
|
|
6
|
+
|
|
7
|
+
未启用人格卡的身份保持原行为。工作、心跳和结构化输出仍遵循原协议。通用向导示例与既有配置内容不会被迁移改写。没有新增润色模型调用,不增加额外生成轮次。
|
|
8
|
+
|
|
9
|
+
验证包括试聊消息角色、历史上限、隔离约束、模型选择、失败恢复、旧身份与工作场景兼容,以及已有会话与记忆回归。`ops/evaluate-character.mjs` 提供八个隔离模型试聊场景,输出仅供人工评审,不以关键词检测冒充人格质量评分。
|
|
10
|
+
|
|
11
|
+
部署脚本保留旧包与安装元数据,并在停写期间备份公共状态以及伙伴工作区中的 `.partner` 私有状态。生产验证要求插件 API 可用,不能仅凭容器健康状态判定完成。
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# 2.9.2
|
|
2
|
+
|
|
3
|
+
身份与人格设置改为分段编辑,避免将全部能力和内容铺在同一页。
|
|
4
|
+
|
|
5
|
+
- 基本身份与人格强化分开;人格内容按角色核心、说话方式、世界与关系、预览试聊、角色记忆展示。
|
|
6
|
+
- 对话示例、世界条目按需展开;新增空条目保持展开,输入时不自动收起。首次创建仍使用分步弹窗,示例保持通用。
|
|
7
|
+
- 切换分段保留草稿和试聊历史;后台配置刷新不会覆盖未保存的身份编辑,保存保留最新模型和能力配置。
|
|
8
|
+
- 记忆设置按学习、每日终审、上下文焕新分段。模型选择折叠在学习设置内,焕新在记忆关闭时仍可独立配置。
|
|
9
|
+
- 自然聊天行为独立维护,对话示例新增可选反例;旧人格卡兼容,工作及心跳协议不变。不增加额外模型调用或回复延迟。
|
|
10
|
+
|
|
11
|
+
本次不新增 QQ 渠道,尚未启用多气泡发送、连续输入合并或工具驱动发送。调研与后续落点见 `docs/natural-conversation-port.md`。
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# 伙伴存储读取与初始化
|
|
2
|
+
|
|
3
|
+
## 问题
|
|
4
|
+
|
|
5
|
+
记忆和持续关注存储此前每次打开数据库都重跑建表、字段检查,并无条件设置
|
|
6
|
+
`PRAGMA user_version`。即使版本值相同,SQLite 仍会提交一次写入。
|
|
7
|
+
`DatabaseSync` 与其他插件的 HTTP 处理共享宿主线程;磁盘同步慢时,这些额外写入
|
|
8
|
+
也会拖慢知识库等无关接口。这不等同于知识库目录查询本身耗时。
|
|
9
|
+
|
|
10
|
+
## 当前约束
|
|
11
|
+
|
|
12
|
+
- `storage/sqlite-schema.ts` 负责连接参数、版本检查、升级事务和失败回滚。
|
|
13
|
+
- 记忆 schema 升至 2,持续关注 schema 升至 5。旧版版本号没有覆盖后续字段添加,
|
|
14
|
+
因此首次升级仍运行全部兼容检查;之后同版本只读版本号,不重复迁移。
|
|
15
|
+
- 新增字段、表、索引或迁移逻辑时,必须递增对应 store 的 schema 常量。
|
|
16
|
+
- 升级持有写锁后再次检查版本;DDL、数据迁移和版本号同事务提交。
|
|
17
|
+
历史全文索引及关注标题修复采用保存点,兼容独立调用和外层迁移事务。
|
|
18
|
+
- 不修改 `synchronous`,不降低持久化保障。正常业务写入仍可能等待磁盘。
|
|
19
|
+
- 保留每次操作的独立连接和 `finally` 关闭,不共享跨 `await` 的事务连接。
|
|
20
|
+
初始化失败也会关闭连接;目录准备后再次检查冻结状态,禁止迁移期间新开连接。
|
|
21
|
+
- 不按路径缓存初始化状态,删除、恢复或迁移后的文件必须重新读取真实版本。
|
|
22
|
+
遇到高于当前支持的 schema 时拒绝访问,不静默降级。
|
|
23
|
+
|
|
24
|
+
## 验证
|
|
25
|
+
|
|
26
|
+
`test/sqlite-read-only.test.mjs` 使用临时数据库及外部观察连接检查:
|
|
27
|
+
|
|
28
|
+
- 重复、并发及重新实例化 store 的读取不改变 `data_version`,不增加 WAL 大小。
|
|
29
|
+
- 没有观察连接时,重开读取也不改动数据库文件时间。
|
|
30
|
+
- 真实写入可观察且在重开后保留;缺字段的旧库升级不丢数据。
|
|
31
|
+
- 初始化失败后结构、数据和版本一起回滚,可修复后重试。
|
|
32
|
+
- 清空后重新初始化、冻结期间拒绝打开、高版本拒绝访问。
|
|
33
|
+
|
|
34
|
+
这项修复消除已确认的无效写入,不承诺解决所有端到端加载延迟。
|
|
35
|
+
上线后仍需结合磁盘等待和接口首字节时间复测;不能把本地临时库耗时当作线上改善幅度。
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# 知识库与 SSH 工具入口兼容
|
|
2
|
+
|
|
3
|
+
伙伴沿用当前会话实际可见的 `knowledge`、`ssh` 工具,不注册重复的旧工具,也不接管原插件的授权逻辑。新版使用 `list → describe → call`;`tool` 是内部操作名,`arguments` 是原操作参数。旧版本仍真实暴露独立工具时,保留原调用方式。
|
|
4
|
+
|
|
5
|
+
通过 `partner_tools` 调用时,`name` 为 `knowledge` 或 `ssh`,`argumentsJson` 为该入口完整参数的 JSON 字符串。代码模式使用实际生成的 `tools.knowledge` 或 `tools.ssh`。协作指令中的临时 SSH 授权和执行也遵守这个规则,不再要求调用未注册的顶层 `ssh_request_temporary_access`。
|
|
6
|
+
|
|
7
|
+
fork Skill 的 `allowed-tools` 由同一个操作级策略适配:旧 `knowledge_*` 映射到知识库入口,旧 `ssh_*` 和明确列出的 SSH 文件传输操作映射到 SSH 入口。映射不修改 Skill、不扩大权限:目录可查询,但只能 describe/call 原白名单里的操作。其他插件的 `file_*` 不会自动获得 SSH 权限;显式允许入口名称时,仍受父级可见范围和原插件业务权限限制。
|
|
8
|
+
|
|
9
|
+
模型可见工具过滤与执行守卫同时生效,未允许的作用域 MCP 工具也会被拒绝。空白名单不能因稍后注册新工具而恢复访问。主机权限、任务绑定临时授权、文件操作审批、知识库挂载范围、笔记预览与确认流程保持原样;持续关注检查依旧只读,不能借统一入口写入或访问笔记。
|
|
10
|
+
|
|
11
|
+
验证使用真实 DSH ToolRuntime 检查操作级拒绝、父级撤权、作用域工具、空白名单、守卫销毁和伙伴入口嵌套调用。不会连接真实 SSH 主机或写入用户知识文档。
|