@lemoncat7/dsh-partner 2.8.6 → 2.11.6
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 +3 -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/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.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/lib/agent-runtime.d.ts +8 -2
- package/lib/agent-runtime.d.ts.map +1 -1
- package/lib/agent-runtime.js +201 -50
- 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 +2 -0
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +35 -1
- 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 +10 -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/manager.d.ts +8 -0
- package/lib/channels/manager.d.ts.map +1 -1
- package/lib/channels/manager.js +126 -12
- package/lib/channels/manager.js.map +1 -1
- package/lib/channels/notification-delivery.d.ts.map +1 -1
- package/lib/channels/notification-delivery.js +9 -5
- package/lib/channels/notification-delivery.js.map +1 -1
- package/lib/channels/outbound-media.js +1 -1
- package/lib/channels/outbound-media.js.map +1 -1
- 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.map +1 -1
- 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 +58 -0
- package/lib/character/conversation-behavior.js.map +1 -0
- package/lib/character/domain.d.ts +48 -0
- package/lib/character/domain.d.ts.map +1 -0
- package/lib/character/domain.js +107 -0
- package/lib/character/domain.js.map +1 -0
- package/lib/character/idle-contact.d.ts +35 -0
- package/lib/character/idle-contact.d.ts.map +1 -0
- package/lib/character/idle-contact.js +61 -0
- package/lib/character/idle-contact.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 +66 -0
- package/lib/character/preview.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 +43 -0
- package/lib/chat/protocol.d.ts.map +1 -0
- package/lib/chat/protocol.js +71 -0
- package/lib/chat/protocol.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 +7 -0
- package/lib/chat/tools.d.ts.map +1 -0
- package/lib/chat/tools.js +91 -0
- package/lib/chat/tools.js.map +1 -0
- package/lib/client-api.d.ts +4 -0
- 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 +3295 -2242
- package/lib/client.js.map +4 -4
- package/lib/collaboration/composition.d.ts +2 -0
- package/lib/collaboration/composition.d.ts.map +1 -1
- package/lib/collaboration/composition.js +5 -0
- package/lib/collaboration/composition.js.map +1 -1
- package/lib/companions/service.js +1 -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 +8 -0
- package/lib/domain.d.ts.map +1 -1
- package/lib/domain.js +7 -1
- package/lib/domain.js.map +1 -1
- package/lib/execution/agent-support.d.ts.map +1 -1
- package/lib/execution/agent-support.js +7 -1
- package/lib/execution/agent-support.js.map +1 -1
- 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 +5 -1
- package/lib/index.js.map +1 -1
- package/lib/memory-domain.d.ts +3 -0
- package/lib/memory-domain.d.ts.map +1 -1
- package/lib/memory-prompt-context.js +1 -0
- package/lib/memory-prompt-context.js.map +1 -1
- package/lib/memory-reflection.d.ts.map +1 -1
- package/lib/memory-reflection.js +7 -2
- package/lib/memory-reflection.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/scheduler/final-reply.d.ts +2 -0
- package/lib/scheduler/final-reply.d.ts.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/ui/character-editor.d.ts +9 -0
- package/lib/ui/character-editor.d.ts.map +1 -0
- package/lib/ui/character-editor.js +108 -0
- package/lib/ui/character-editor.js.map +1 -0
- package/lib/ui/character-memory-editor.d.ts +4 -0
- package/lib/ui/character-memory-editor.d.ts.map +1 -0
- package/lib/ui/character-memory-editor.js +50 -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 +2 -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 +11 -3
- 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 +17 -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/push-draft.d.ts +3 -3
- 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/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 +22 -2
package/README.md
CHANGED
|
@@ -6,10 +6,11 @@
|
|
|
6
6
|
|
|
7
7
|
## 功能
|
|
8
8
|
|
|
9
|
-
- 伙伴身份、Agent Preset
|
|
9
|
+
- 伙伴身份、Agent Preset、模型与能力管理;可选人格卡、创建引导、角色记忆与独立试聊。
|
|
10
10
|
- 微信 iLink Bot、Matrix、Mattermost 私聊,支持附件与交互提问。
|
|
11
11
|
- Bark 单向结果通知,支持多个服务器及设备、持久投递队列和重试。
|
|
12
12
|
- 长期记忆、人物画像、每日回顾和持续关注,可查看依据、状态与失败原因。
|
|
13
|
+
- 每日上下文焕新默认开启、独立定时;开启记忆时整理成功后清空,关闭记忆时直接清空,保留聊天历史。
|
|
13
14
|
- 任务看板、伙伴委派、定时任务与长任务续接。
|
|
14
15
|
- Skill 市场、导入与按伙伴启用,以及 HTTP / stdio MCP 服务授权。
|
|
15
16
|
- 伙伴挂饰、消息收件箱、通知与交付重试。
|
|
@@ -33,6 +34,7 @@ dsh plugin --profile web add @lemoncat7/dsh-partner@latest
|
|
|
33
34
|
## 文档
|
|
34
35
|
|
|
35
36
|
- [使用与配置](docs/usage.md)
|
|
37
|
+
- [人格强化与每日上下文焕新](docs/character-cards-and-renewal.md)
|
|
36
38
|
- [渠道与附件](docs/direct-channels.md)
|
|
37
39
|
- [Bark 单向通知](docs/bark-notifications.md)
|
|
38
40
|
- [持续关注检查与执行流程](docs/concern-workflow.md)
|
|
@@ -291,3 +291,70 @@ Apache License
|
|
|
291
291
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
292
292
|
See the License for the specific language governing permissions and
|
|
293
293
|
limitations under the License.
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
## React Bits Stepper
|
|
297
|
+
|
|
298
|
+
Adapted from the Stepper supplied by the user and the SSH plugin integration. Used only as the character setup UI, with controlled validation and host theme tokens. Source: https://reactbits.dev/components/stepper
|
|
299
|
+
|
|
300
|
+
MIT + Commons Clause License Condition v1.0
|
|
301
|
+
|
|
302
|
+
Copyright (c) 2026 David Haz
|
|
303
|
+
|
|
304
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
305
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
306
|
+
in the Software without restriction, including without limitation the rights
|
|
307
|
+
to use, copy, modify, merge, publish, and distribute the Software **as part of an application, website, or product**, subject to the following conditions:
|
|
308
|
+
|
|
309
|
+
The above copyright notice and this permission notice shall be included in all
|
|
310
|
+
copies or substantial portions of the Software.
|
|
311
|
+
|
|
312
|
+
## Commons Clause Restriction
|
|
313
|
+
|
|
314
|
+
You may use this Software, including for any commercial purpose, **so long as you do not sell, sublicense, or redistribute the components themselves-whether alone, in a bundle, or as a ported version.**
|
|
315
|
+
|
|
316
|
+
The same restriction covers the React Bits tools (Background Studio, Texture Lab, Shape Magic, Center Stage, Sound Lab and any tools added later) and the sounds in the sound library. **You may not sell, sublicense, or redistribute the tools or the sounds themselves, or offer the tools or a substantially similar copy of them as a hosted service-whether alone, in a bundle, or as a ported version.**
|
|
317
|
+
|
|
318
|
+
What you make with the tools is yours to use. You can use exported code, images, videos, and audio files in any personal or commercial application, website, or product, including paid ones. **You may not sell or redistribute the exports on their own, either individually or as the product itself, such as a sound, texture, background, or template pack.**
|
|
319
|
+
|
|
320
|
+
## No Warranty
|
|
321
|
+
|
|
322
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
323
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
324
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
325
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
326
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
327
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
328
|
+
SOFTWARE.
|
|
329
|
+
|
|
330
|
+
## qq-bridge 聊天预设设计
|
|
331
|
+
|
|
332
|
+
角色 / 聊天行为分层和部分表达约束参考 Derpyu520/qq-bridge,提交 `a49877f4e58d04e47532d44b803360d0f001160d`。`src/ui/role-reference-data.ts` 收录该版本 `roles/小鲸鱼.md` 原文,供只读参考,不注入伙伴提示词。未引入其 QQ / SnowLuma 代码或依赖,也未复制第三方 QQ 收藏图片。
|
|
333
|
+
|
|
334
|
+
MIT License
|
|
335
|
+
|
|
336
|
+
Copyright (c) 2026 Derpyu520 and qq-bridge / QSH contributors
|
|
337
|
+
|
|
338
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
339
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
340
|
+
in the Software without restriction, including without limitation the rights
|
|
341
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
342
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
343
|
+
furnished to do so, subject to the following conditions:
|
|
344
|
+
|
|
345
|
+
The above copyright notice and this permission notice shall be included in all
|
|
346
|
+
copies or substantial portions of the Software.
|
|
347
|
+
|
|
348
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
349
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
350
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
351
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
352
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
353
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
354
|
+
SOFTWARE.
|
|
355
|
+
|
|
356
|
+
## Blobfox chat stickers — Volpeon
|
|
357
|
+
|
|
358
|
+
20 unmodified PNGs from the author's official [Blobfox collection](https://volpeon.ink/emojis/blobfox/), licensed **Apache-2.0** on that page. Author: **Volpeon**. Download: https://strapi.volpeon.ink/uploads/blobfox_1703c01b78.zip. Retrieved 2026-10-28.
|
|
359
|
+
|
|
360
|
+
Chinese display names and search tags were added by this plugin; image bytes are unchanged. See [the bundled license](licenses/Apache-2.0.txt) and [archive/file SHA-256 provenance](blobfox-manifest.json). `ops/import-blobfox-stickers.py` reproduces the selected assets from the pinned archive. The pack includes `meta.json` and PNGs; no separate NOTICE file is present. Images are bundled locally, with no hotlinking or runtime third-party fetches. Existing six builtin IDs remain valid.
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
{
|
|
2
|
+
"author": "Volpeon",
|
|
3
|
+
"license": "Apache-2.0",
|
|
4
|
+
"page": "https://volpeon.ink/emojis/blobfox/",
|
|
5
|
+
"download": "https://strapi.volpeon.ink/uploads/blobfox_1703c01b78.zip",
|
|
6
|
+
"sha256": "6fe992c847558d795d5bf51025a5b2d9c9f4685fcd01dfd1051a16fcad2fd9b6",
|
|
7
|
+
"files": [
|
|
8
|
+
{
|
|
9
|
+
"id": "builtin-happy",
|
|
10
|
+
"file": "blobfoxhappy.png",
|
|
11
|
+
"sha256": "f5782a92f22f1849a52c4e2ef6617629e523b1ca1ce228f9028c9a1d0c6ab668"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"id": "builtin-grumpy",
|
|
15
|
+
"file": "blobfoxangry.png",
|
|
16
|
+
"sha256": "65e318330cc715887548d48e9c0ccd641ec8031db89f0fb5e8422cd7c2889af7"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "builtin-surprise",
|
|
20
|
+
"file": "blobfox0_0.png",
|
|
21
|
+
"sha256": "e3a626fd97f3b9e14d0ca9f9dcdb19027bf0e3a528e6f9893640aa2e811b19d2"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "builtin-tired",
|
|
25
|
+
"file": "blobfoxsleep.png",
|
|
26
|
+
"sha256": "bd0ccd7358150e086e9729765df90b12d0020db1ae127a8349bc60e1a607dc48"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "builtin-care",
|
|
30
|
+
"file": "blobfoxcatsnuggle.png",
|
|
31
|
+
"sha256": "1bd273275c628fc8746202a93d37c9d9afe333118b53acabc50c29eaafd00bdb"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "builtin-skeptic",
|
|
35
|
+
"file": "blobfoxglare.png",
|
|
36
|
+
"sha256": "b39df46c2e7852f7f41d9528e92ab7e82220adc601b511f91be14421e469dd9f"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "builtin-fox-blush",
|
|
40
|
+
"file": "blobfoxblush.png",
|
|
41
|
+
"sha256": "35c8a772b5c8a7c394c82ea3f018643217a675d2538cd437f04724b8939f35b6"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "builtin-fox-smug",
|
|
45
|
+
"file": "blobfoxcomfysmug.png",
|
|
46
|
+
"sha256": "e38d63ffb9c873028ff4665ab74304499e81af2ceb6fafaac3180c94c6c96f22"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "builtin-fox-laugh",
|
|
50
|
+
"file": "blobfoxcrylaugh.png",
|
|
51
|
+
"sha256": "6f6c8d1830547995d16717024b5bcc692034dd4c01deae973704fc238f49d876"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "builtin-fox-cry",
|
|
55
|
+
"file": "blobfoxcry.png",
|
|
56
|
+
"sha256": "ae33dc88f4f2f5070199e9f1b53d35cc49cdad8c856b66945747350e603a65ad"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "builtin-fox-think",
|
|
60
|
+
"file": "blobfoxthinking.png",
|
|
61
|
+
"sha256": "e9d46cc4a906441332bcde661027ffa372ae42f035505f20c76d29813fda12db"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "builtin-fox-facepalm",
|
|
65
|
+
"file": "blobfoxfacepalm.png",
|
|
66
|
+
"sha256": "da1890fb51381813e3154ab46fe702b09c2673b8f1e907134a3c1e2e52f90390"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"id": "builtin-fox-peek",
|
|
70
|
+
"file": "blobfoxlurk.png",
|
|
71
|
+
"sha256": "d156fe509170c86efb14c86d7eda8e9a4fc0f9ec38c4c1fa4a98aa15f299a8c8"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"id": "builtin-fox-heart",
|
|
75
|
+
"file": "blobfoxheartcute.png",
|
|
76
|
+
"sha256": "89f4da224afc99120a6204220d95f0905cd571841459b8f4effdb70d19e23b7c"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"id": "builtin-fox-cheer",
|
|
80
|
+
"file": "blobfoxcheer.png",
|
|
81
|
+
"sha256": "8ac7dafdf4826e62f540ae1ba364dde68b88ae2b6d55e391b6a45dbe7fcff6fa"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "builtin-fox-boop",
|
|
85
|
+
"file": "blobfoxboop.png",
|
|
86
|
+
"sha256": "925c0f122b706aead38a2b5080f2e2c2b9384da17e1b402f0a1fae8d3ebdb27f"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "builtin-fox-coffee",
|
|
90
|
+
"file": "blobfoxcofe.png",
|
|
91
|
+
"sha256": "09cc197b3d6f969fd5b33b9691a935f9a41aad4c6b35eadcff89204d6e6491d3"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"id": "builtin-fox-cookie",
|
|
95
|
+
"file": "blobfoxnomcookie.png",
|
|
96
|
+
"sha256": "fe481da46c79dc67bde3c06aae4e659ed68af4967c7c5c20ab679ab1da4d6715"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "builtin-fox-comfy",
|
|
100
|
+
"file": "blobfoxcomfy.png",
|
|
101
|
+
"sha256": "486307ad309a711a42b14f99cd7326678fb59568ef2e2e93fc77f8b06dbd3d1b"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"id": "builtin-fox-flower",
|
|
105
|
+
"file": "blobfoxflower.png",
|
|
106
|
+
"sha256": "b9de5b54b41c9381c20fbfbaac8ae0e6c4f08aacdcb3987ac96811ecb6186e5c"
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# 人格强化与每日上下文焕新
|
|
2
|
+
|
|
3
|
+
人格强化是身份页中的可选能力。没有卡片或关闭开关时,继续使用原名字、角色、定位和行为准则。首次创建通过四步弹窗引导;已有内容直接展示和编辑。关闭开关保留卡片,应用草稿后需要保存身份。
|
|
4
|
+
|
|
5
|
+
开启后,角色核心、行为动机、语言风格、关系起点与对话示例成为持续生效的提示词约束。世界条目按最近交流中的关键词加载,每轮最多五条、正文总计最多 5000 字。任务、工具权限与 JSON 输出协议不被角色表现覆盖。模型遵循程度仍需试聊验证。
|
|
6
|
+
|
|
7
|
+
通用示例只用于创作起点。试聊使用伙伴模型,最多保留八组对话,不使用工具、不写入正式记忆,也不会发送到渠道。独立试聊支持预览未保存的草稿。
|
|
8
|
+
|
|
9
|
+
角色的场景、关系、事实、事件与固定记忆按实际会话范围保存,与真实用户画像分离。开启学习后,在原有后台提炼中一并更新剧情,无需给每轮回复增加一次串行润色调用。固定记忆只能由用户修改;编辑采用版本检查,避免覆盖后台更新。来源仍以实际对话为准,不允许用虚构剧情生成现实用户画像。
|
|
10
|
+
|
|
11
|
+
## 每日上下文焕新
|
|
12
|
+
|
|
13
|
+
- 独立开关,默认开启;独立时间,默认每日 04:00,使用插件配置的时区(默认上海)。不依赖每日终审开关。
|
|
14
|
+
- 开启记忆:先补齐当前上下文中未归档的旧消息或中断消息,再等待逐轮提炼完成,再补齐包括当天已有对话的终审。所有待整理内容成功落库、当前可见用户消息确认已归档后,才释放上下文。
|
|
15
|
+
- 关闭记忆:到点且空闲后直接释放上下文,不等待提炼或终审,也不声称已经记住这些对话。
|
|
16
|
+
- 当前回合、后台记忆任务或会话准备未结束时延后;失败保留原上下文并重试。每日终审原有的重试退避仍生效。
|
|
17
|
+
- 服务在当天计划时间之后启动时,等待下一次计划,避免部署或重启立即清空上下文。
|
|
18
|
+
- 同一会话每日最多焕新一次。焕新使用 DSH 的 `runMaintenance` 和原生 surface replacement,保留第一个系统节点,不改写原始日志文件;聊天历史仍可查看。
|
|
19
|
+
- 记忆开启时保留简短的近期日记与未完成事项交接;身份和角色状态由系统段重新载入,具体旧细节按需检索,不把全部历史重新塞回上下文。
|
|
20
|
+
|
|
21
|
+
历史检索覆盖记忆库中保留的原始对话,包含中文二元词索引和英文标识,解除原先“只查最近 100 轮”的限制。`partner_memory_recall` 只能查询当前伙伴、当前联系人的范围;默认返回有限条带时间与来源的片段。用户设置的历史保留期限仍然有效;未启用记忆时未归档的内容不能由此工具恢复。相关信息召回不等于保证每个细节都自动记得。
|
|
22
|
+
|
|
23
|
+
关闭每日终审只关闭独立的日记终审计划;如果“每日上下文焕新”开启且学习开启,焕新前仍会进行必要的整理。想保留工作上下文,应关闭“每日上下文焕新”。
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# 分段聊天与表情库
|
|
2
|
+
|
|
3
|
+
参考 qq-bridge 的显式消息数组和独立表情消息,将同一机制接到 DSH 网页和已有微信、Matrix、Mattermost 渠道;不增加 QQ 渠道。不复制其专用提示词、工具白名单或等待策略。
|
|
4
|
+
|
|
5
|
+
身份 → 角色聊天 → 聊天方式增加「分段回复」「表情包」,旧配置缺省关闭。开关随身份保存,原角色文档和已授权工作工具保持完整。表情管理独立弹窗,上传/移除立即生效;内置六张原创几何表情,各伙伴可额外上传 50 张、合计 50 MB,每张最多 2 MB 的 PNG/JPEG/GIF/WebP。上传不接受外部 URL 或 SVG。PNG/GIF 限制 2048 像素,JPEG/WebP 以文件体积限制。标签用于选择,不作为执行指令。
|
|
6
|
+
|
|
7
|
+
## 回复机制
|
|
8
|
+
|
|
9
|
+
`partner_stickers` 支持按名称/标签查询和真实图片查看。`partner_chat_reply` 一次接收 1–8 条显式文字/表情消息,最多 2 张表情。每条文字可以包含完整段落和代码,不做标点拆分。应先完成查证与工作,最后提交回复;长文仍可走普通最终回复。
|
|
10
|
+
|
|
11
|
+
成功调用使用 DSH rc.2 的 `concludeTurn()`,提交工具结果后结束回合,无额外模型润色请求。工具结果的持久化 metadata 同时用于网页气泡、渠道投递和历史重放;不修改系统头或压缩日志。嵌套 `run_code` 的 `tool/ptc-dispatch` 同样支持。失败不结束回合,保留普通最终回复的回退。内部任务和心跳禁止使用这个结束工具,既有任务交付继续按原协议工作。
|
|
12
|
+
|
|
13
|
+
网页显示独立文字气泡和图片。渠道按数组顺序发送;现有处理进度用于第一条文字,图片优先时先收起进度。图片通过附件服务保存不可变副本,删除表情库原图不影响已准备的消息。清理历史附件后,网页保留表情名称与图片不可用提示。分段内容仍进入记忆整理、历史检索、通知摘要;不把文件路径当作说过的话。
|
|
14
|
+
|
|
15
|
+
## 发送恢复
|
|
16
|
+
|
|
17
|
+
结构化直接回复沿用持久化通知账本,以入站回执标识去重,逐条记录成功。进程重启后每 30 秒检查待发送项,仅尝试未确认成功的部分,不重新执行用户请求。原始会话、伙伴、渠道账号、服务地址、房间与联系人授权须仍然匹配,每一部分发送前再次检查。目标变更保留待发送记录,绝不自动转到其他渠道。相同接收人的整组消息串行发送。
|
|
18
|
+
|
|
19
|
+
网络在远端成功但本地收到确认前中断时仍可能重复单条消息,渠道未提供通用 exactly-once 保证。服务器在模型回合结束、尚未写入投递账本的极短窗口崩溃,回复仍在历史中,但不承诺自动补发。原普通回复投递路径保持现有行为。本版本不人为增加首条等待或仿打字延时。
|
|
20
|
+
|
|
21
|
+
## 验证
|
|
22
|
+
|
|
23
|
+
`test/chat-delivery.test.mjs` 覆盖分段边界、正常/错误/中断回合、PTC 结果、图片持久化、上传隔离、开关撤销、原目标冻结、逐条重试及原生会话组件注册。`scripts/verify-character-ui.mjs` 覆盖桌面/手机、亮/暗主题、表情库筛选、焦点返回、开关保存与通用示例。测试渠道使用替身,不向真实联系人发送测试消息。
|
|
24
|
+
|
|
25
|
+
共享会话中的跨渠道消息不会插入其他来源正在执行的回合,而是排队。结构化回复携带真实入站消息对应的 route ID;来源变成网页或其他渠道时,不交给原渠道发送。这样避免把“共享历史”误当作“任何渠道都能接收”。
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
|
|
2
|
+
Apache License
|
|
3
|
+
Version 2.0, January 2004
|
|
4
|
+
http://www.apache.org/licenses/
|
|
5
|
+
|
|
6
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
7
|
+
|
|
8
|
+
1. Definitions.
|
|
9
|
+
|
|
10
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
11
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
12
|
+
|
|
13
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
14
|
+
the copyright owner that is granting the License.
|
|
15
|
+
|
|
16
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
17
|
+
other entities that control, are controlled by, or are under common
|
|
18
|
+
control with that entity. For the purposes of this definition,
|
|
19
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
20
|
+
direction or management of such entity, whether by contract or
|
|
21
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
22
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
23
|
+
|
|
24
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
25
|
+
exercising permissions granted by this License.
|
|
26
|
+
|
|
27
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
28
|
+
including but not limited to software source code, documentation
|
|
29
|
+
source, and configuration files.
|
|
30
|
+
|
|
31
|
+
"Object" form shall mean any form resulting from mechanical
|
|
32
|
+
transformation or translation of a Source form, including but
|
|
33
|
+
not limited to compiled object code, generated documentation,
|
|
34
|
+
and conversions to other media types.
|
|
35
|
+
|
|
36
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
37
|
+
Object form, made available under the License, as indicated by a
|
|
38
|
+
copyright notice that is included in or attached to the work
|
|
39
|
+
(an example is provided in the Appendix below).
|
|
40
|
+
|
|
41
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
42
|
+
form, that is based on (or derived from) the Work and for which the
|
|
43
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
44
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
45
|
+
of this License, Derivative Works shall not include works that remain
|
|
46
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
47
|
+
the Work and Derivative Works thereof.
|
|
48
|
+
|
|
49
|
+
"Contribution" shall mean any work of authorship, including
|
|
50
|
+
the original version of the Work and any modifications or additions
|
|
51
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
52
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
53
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
54
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
55
|
+
means any form of electronic, verbal, or written communication sent
|
|
56
|
+
to the Licensor or its representatives, including but not limited to
|
|
57
|
+
communication on electronic mailing lists, source code control systems,
|
|
58
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
59
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
60
|
+
excluding communication that is conspicuously marked or otherwise
|
|
61
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
62
|
+
|
|
63
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
64
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
65
|
+
subsequently incorporated within the Work.
|
|
66
|
+
|
|
67
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
68
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
69
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
70
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
71
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
72
|
+
Work and such Derivative Works in Source or Object form.
|
|
73
|
+
|
|
74
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
75
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
76
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
77
|
+
(except as stated in this section) patent license to make, have made,
|
|
78
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
79
|
+
where such license applies only to those patent claims licensable
|
|
80
|
+
by such Contributor that are necessarily infringed by their
|
|
81
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
82
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
83
|
+
institute patent litigation against any entity (including a
|
|
84
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
85
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
86
|
+
or contributory patent infringement, then any patent licenses
|
|
87
|
+
granted to You under this License for that Work shall terminate
|
|
88
|
+
as of the date such litigation is filed.
|
|
89
|
+
|
|
90
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
91
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
92
|
+
modifications, and in Source or Object form, provided that You
|
|
93
|
+
meet the following conditions:
|
|
94
|
+
|
|
95
|
+
(a) You must give any other recipients of the Work or
|
|
96
|
+
Derivative Works a copy of this License; and
|
|
97
|
+
|
|
98
|
+
(b) You must cause any modified files to carry prominent notices
|
|
99
|
+
stating that You changed the files; and
|
|
100
|
+
|
|
101
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
102
|
+
that You distribute, all copyright, patent, trademark, and
|
|
103
|
+
attribution notices from the Source form of the Work,
|
|
104
|
+
excluding those notices that do not pertain to any part of
|
|
105
|
+
the Derivative Works; and
|
|
106
|
+
|
|
107
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
108
|
+
distribution, then any Derivative Works that You distribute must
|
|
109
|
+
include a readable copy of the attribution notices contained
|
|
110
|
+
within such NOTICE file, excluding those notices that do not
|
|
111
|
+
pertain to any part of the Derivative Works, in at least one
|
|
112
|
+
of the following places: within a NOTICE text file distributed
|
|
113
|
+
as part of the Derivative Works; within the Source form or
|
|
114
|
+
documentation, if provided along with the Derivative Works; or,
|
|
115
|
+
within a display generated by the Derivative Works, if and
|
|
116
|
+
wherever such third-party notices normally appear. The contents
|
|
117
|
+
of the NOTICE file are for informational purposes only and
|
|
118
|
+
do not modify the License. You may add Your own attribution
|
|
119
|
+
notices within Derivative Works that You distribute, alongside
|
|
120
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
121
|
+
that such additional attribution notices cannot be construed
|
|
122
|
+
as modifying the License.
|
|
123
|
+
|
|
124
|
+
You may add Your own copyright statement to Your modifications and
|
|
125
|
+
may provide additional or different license terms and conditions
|
|
126
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
127
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
128
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
129
|
+
the conditions stated in this License.
|
|
130
|
+
|
|
131
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
132
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
133
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
134
|
+
this License, without any additional terms or conditions.
|
|
135
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
136
|
+
the terms of any separate license agreement you may have executed
|
|
137
|
+
with Licensor regarding such Contributions.
|
|
138
|
+
|
|
139
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
140
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
141
|
+
except as required for reasonable and customary use in describing the
|
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
143
|
+
|
|
144
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
145
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
146
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
147
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
148
|
+
implied, including, without limitation, any warranties or conditions
|
|
149
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
150
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
151
|
+
appropriateness of using or redistributing the Work and assume any
|
|
152
|
+
risks associated with Your exercise of permissions under this License.
|
|
153
|
+
|
|
154
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
155
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
156
|
+
unless required by applicable law (such as deliberate and grossly
|
|
157
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
158
|
+
liable to You for damages, including any direct, indirect, special,
|
|
159
|
+
incidental, or consequential damages of any character arising as a
|
|
160
|
+
result of this License or out of the use or inability to use the
|
|
161
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
162
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
163
|
+
other commercial damages or losses), even if such Contributor
|
|
164
|
+
has been advised of the possibility of such damages.
|
|
165
|
+
|
|
166
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
167
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
168
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
169
|
+
or other liability obligations and/or rights consistent with this
|
|
170
|
+
License. However, in accepting such obligations, You may act only
|
|
171
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
172
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
173
|
+
defend, and hold each Contributor harmless for any liability
|
|
174
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
175
|
+
of your accepting any such warranty or additional liability.
|
|
176
|
+
|
|
177
|
+
END OF TERMS AND CONDITIONS
|
|
178
|
+
|
|
179
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
180
|
+
|
|
181
|
+
To apply the Apache License to your work, attach the following
|
|
182
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
183
|
+
replaced with your own identifying information. (Don't include
|
|
184
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
185
|
+
comment syntax for the file format. We also recommend that a
|
|
186
|
+
file or class name and description of purpose be included on the
|
|
187
|
+
same "printed page" as the copyright notice for easier
|
|
188
|
+
identification within third-party archives.
|
|
189
|
+
|
|
190
|
+
Copyright [yyyy] [name of copyright owner]
|
|
191
|
+
|
|
192
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
193
|
+
you may not use this file except in compliance with the License.
|
|
194
|
+
You may obtain a copy of the License at
|
|
195
|
+
|
|
196
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
197
|
+
|
|
198
|
+
Unless required by applicable law or agreed to in writing, software
|
|
199
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
200
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
201
|
+
See the License for the specific language governing permissions and
|
|
202
|
+
limitations under the License.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# qq-bridge 会话能力迁移设计
|
|
2
|
+
|
|
3
|
+
调研版本:Derpyu520/qq-bridge `a49877f4e58d04e47532d44b803360d0f001160d`(MIT)。目标是伙伴的渠道无关会话能力,暂不新增 QQ 渠道。
|
|
4
|
+
|
|
5
|
+
## 2.10.0:以 qq-bridge 的角色 / 聊天预设分层为主
|
|
6
|
+
|
|
7
|
+
角色改为一份自由文本 `roleText`:几条身份和反应习惯即可启用,不再要求动机、语言风格、两组示例等固定表单。旧结构只作为兼容输入,通过 `roleTextForCard` 合并展示和加载;用户开始编辑后新文档成为唯一角色文本来源,旧字段保留但不重复注入。旧世界条目、角色记忆不丢失。
|
|
8
|
+
|
|
9
|
+
聊天行为单独装配,包含接话选择、主体性、短句与停止时机、避免客服式收尾、相关记忆引用、私聊可见回复。可配置闲聊节奏、动作描写和额外聊天偏好。2.10.1 起每轮使用原生 runtime context 刷新短提醒,结合连续用户发言(2.10.0 的动态系统区注入已修复);不改写会话日志、不增加模型调用、不依赖记忆服务开关。
|
|
10
|
+
|
|
11
|
+
**按用户要求保留所有已授权工具。** 未引入 qq-bridge 的工具过滤器,未移除或隐藏搜索、文件、SSH、技能、协作、看板等能力;工作规则明确只适用于实际任务和续接。聊天与工作混合时仍完成真实工作。角色启停/编辑前后注册工具集有回归验证,能力撤回仍受原权限检查约束。
|
|
12
|
+
|
|
13
|
+
配置页分角色设定 / 聊天方式 / 试聊 / 相处记忆,背景资料按需展开;空白角色使用三步引导,示例通用。试聊仅验证语气、不执行工具,这是预览的隔离边界,不是生产会话工具限制。
|
|
14
|
+
|
|
15
|
+
此版依旧使用既有最终文本发送适配器,未引入 QQ 接入、发送工具、故意延时或群聊潜水。源码中的“已读乱回”和拒绝帮忙不适配用户的实际任务要求,因此没有照搬。模型自然度需实测评审,不能由结构重构或自动化测试推断。
|
|
16
|
+
|
|
17
|
+
## 2.9.2 首批实现(历史记录)
|
|
18
|
+
|
|
19
|
+
- 把自然聊天行为与具体角色内容分开维护。启用人格强化时,本地和渠道对话使用同一行为约束;工作执行、心跳的 JSON / 工具协议保留,关闭人格强化的旧身份保持原路径。
|
|
20
|
+
- 对话示例支持可选 `avoid` 反例,用于描述“不符合此角色的回复”。旧 `{user, assistant}` 示例无需迁移,通用向导示例不改为特定角色。
|
|
21
|
+
- 不增加模型润色调用、故意等待或静默标记。现有最终文本照常可见,发送链路保持原行为。
|
|
22
|
+
- 身份页分基本身份 / 人格强化;人格卡分核心、说话、世界、试聊、记忆;记忆设置分学习、终审、焕新。切换保留草稿和试聊历史,示例和设定按条展开。
|
|
23
|
+
|
|
24
|
+
这一步是行为规则及配置体验的迁移,不代表已实现 qq-bridge reserved2 的工具驱动发送,也不证明任何模型的自然度已经达到相同水平。
|
|
25
|
+
|
|
26
|
+
## 源实现与映射
|
|
27
|
+
|
|
28
|
+
| qq-bridge 实现 | 本插件映射 | 状态 |
|
|
29
|
+
| --- | --- | --- |
|
|
30
|
+
| `dsh/agent-presets/qq-chat-v2/agent.cordis.yml` 的会话准则 | `src/character/conversation-behavior.ts`,仅对话表面生效 | 已实现首批 |
|
|
31
|
+
| `roles/小鲸鱼.md` 的正反表达示例 | 人格卡 `examples[].avoid`,显式标记反例 | 已实现,未复制角色台词 |
|
|
32
|
+
| `src/bridge.js` 的 `sendMessagesV2`、`computeGapsV2` | 统一回复计划 + 各渠道适配器 | 后续设计 |
|
|
33
|
+
| `src/bridge.js` 的未读快照 / 等待 / 唤醒 | 有界连续输入合并,复用当前 dispatcher | 后续设计 |
|
|
34
|
+
| 角色状态、主动发言 | 复用现有角色记忆及 heartbeat,补充有来源的话题状态 | 后续设计 |
|
|
35
|
+
|
|
36
|
+
源项目 chat 模式会转发最终文本;reserved2 模式只转发发送工具的内容,普通最终回答不自动发送。其人格卡加载、发送间隔和等待机制按模式不同,不能统称为“所有回复都会自动分段”。发送后风格提示是软反馈,未在该链路发现额外模型润色步骤。五分钟等待属于结束前的等待机制,不应复制为私聊首答延迟。以上来自代码阅读,未接入真实 QQ 进行效果验证。
|
|
37
|
+
|
|
38
|
+
## 后续发送能力的落点与验收
|
|
39
|
+
|
|
40
|
+
### 统一回复计划
|
|
41
|
+
|
|
42
|
+
在 `PartnerReply` 增加可选、版本化的结构化文本段;普通最终文本仍作回退。先由已有回复转换生成最多三条完整语义段,保护代码块、链接及附件引用,禁止按字数强拆。工作结果允许长消息。原生网页仍呈现正常完整文本,不能让模型只输出网页不识别的发送工具或 JSON。
|
|
43
|
+
|
|
44
|
+
计划绑定本轮的 companion、channel、target、sender、source message IDs;共享会话不能通过“最近一个渠道”选收件人。normal reply 与 notification ledger 合并前,必须先统一 per-part 索引(当前通知假定第零段是唯一文本)。
|
|
45
|
+
|
|
46
|
+
持久化每段状态:pending、accepted、unknown、failed。渠道返回成功只说明 accepted,不等同于用户已读或已收到。部分成功后只处理未确认段;网络结果不明时显示未知,避免自动重发整组。重启恢复、并发轮次、跨渠道隔离和附件顺序必须有故障注入测试。
|
|
47
|
+
|
|
48
|
+
### 连续输入合并
|
|
49
|
+
|
|
50
|
+
在 direct dispatcher / inbound batch 的输入准备阶段实现,而非让运行中的模型睡眠。仅相同伙伴、渠道、联系人和目标的相邻消息可合并;设置短合并窗口、总等待上限及条数上限。先保留现有去重和背压。用户新补充继续走 steer,必须测试补充被接纳后有可见最终回答,不被“已插入”提示替代。
|
|
51
|
+
|
|
52
|
+
### 话题连续性
|
|
53
|
+
|
|
54
|
+
现有角色记忆已经保存场景、关系、事实和事件。若增加 activeTopic / pendingFollowup,只存可公开的话题、约定及来源时间,不存模型隐式推理;设置过期时间和联系人作用域。复用记忆整理调用,避免每轮额外请求。主动发言仍走现有 heartbeat、免打扰、每日限额和已授权路由,不另建循环。
|
|
55
|
+
|
|
56
|
+
### 上线顺序
|
|
57
|
+
|
|
58
|
+
先完成统一计划与恢复测试,再小范围启用外部渠道分段;验证网页可见、私聊必有回退和部分发送恢复之后,才考虑工具驱动发送模式。QQ 传输、登录凭据与 SDK 不在此次范围。
|
|
@@ -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)。
|