@zaofan/dsh-qqbot 1.10.13 → 1.10.15
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 +25 -0
- package/dist/api/group-admin.d.ts.map +1 -1
- package/dist/api/group-admin.js +3 -1
- package/dist/api/group-admin.js.map +1 -1
- package/dist/channel-tools.d.ts +6 -3
- package/dist/channel-tools.d.ts.map +1 -1
- package/dist/channel-tools.js +284 -18
- package/dist/channel-tools.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -1
- package/dist/config.js.map +1 -1
- package/dist/features/botplay-ext.d.ts +4 -0
- package/dist/features/botplay-ext.d.ts.map +1 -1
- package/dist/features/botplay-ext.js +4 -1
- package/dist/features/botplay-ext.js.map +1 -1
- package/dist/features/md-media-rewrite.d.ts +17 -0
- package/dist/features/md-media-rewrite.d.ts.map +1 -0
- package/dist/features/md-media-rewrite.js +151 -0
- package/dist/features/md-media-rewrite.js.map +1 -0
- package/dist/features/md-media.d.ts +47 -0
- package/dist/features/md-media.d.ts.map +1 -0
- package/dist/features/md-media.js +219 -0
- package/dist/features/md-media.js.map +1 -0
- package/dist/features/reasoning-bus.d.ts +36 -0
- package/dist/features/reasoning-bus.d.ts.map +1 -0
- package/dist/features/reasoning-bus.js +65 -0
- package/dist/features/reasoning-bus.js.map +1 -0
- package/dist/gateway/bootstrap.d.ts.map +1 -1
- package/dist/gateway/bootstrap.js +45 -1
- package/dist/gateway/bootstrap.js.map +1 -1
- package/dist/transport/events.d.ts +20 -0
- package/dist/transport/events.d.ts.map +1 -1
- package/dist/transport/events.js +30 -0
- package/dist/transport/events.js.map +1 -1
- package/dist/transport/outbound.d.ts +10 -2
- package/dist/transport/outbound.d.ts.map +1 -1
- package/dist/transport/outbound.js +80 -2
- package/dist/transport/outbound.js.map +1 -1
- package/examples/ext-outbound/report-relay.mjs +109 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -728,3 +728,28 @@ autoRecall:
|
|
|
728
728
|
## License
|
|
729
729
|
|
|
730
730
|
[MIT](./LICENSE)
|
|
731
|
+
|
|
732
|
+
---
|
|
733
|
+
|
|
734
|
+
## 正文图组:markdown 图片直接发
|
|
735
|
+
|
|
736
|
+
DSH 前端会把**回复正文里的 markdown 图片**渲染成图;本插件把同一段文本**原样转发到 QQ** ——
|
|
737
|
+
本地路径会自动上传成 `qqbot-media` 引用(读文件头补真实宽高,配额满 100 张自动删最早),不需要调用任何工具。
|
|
738
|
+
|
|
739
|
+
```markdown
|
|
740
|
+

|
|
741
|
+
|
|
742
|
+
第一幕:本鲸宣布今晚不睡了
|
|
743
|
+
|
|
744
|
+

|
|
745
|
+
```
|
|
746
|
+
|
|
747
|
+
**一行一张、连续几行就是图组**(小剧场 / 分镜 / 图文并排),QQ 侧按顺序渲染成一屏。
|
|
748
|
+
|
|
749
|
+
| DSH 前端 | QQ 群 |
|
|
750
|
+
| :---: | :---: |
|
|
751
|
+
|  |  |
|
|
752
|
+
|
|
753
|
+
配合表情包库最顺手:`list_stickers` 搜到图 → 把本地路径写进正文 → 图组直接出来,比连发 `send_media` 更像翻漫画。
|
|
754
|
+
|
|
755
|
+
失败策略:正文里图传不上去会**原样留在文字里**(不阻断本条);而 `send_md` 卡片是“图传失败就整条不发”,两者别混用。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group-admin.d.ts","sourceRoot":"","sources":["../../src/api/group-admin.ts"],"names":[],"mappings":"AAqBA,yDAAyD;AACzD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"group-admin.d.ts","sourceRoot":"","sources":["../../src/api/group-admin.ts"],"names":[],"mappings":"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"}
|
package/dist/api/group-admin.js
CHANGED
|
@@ -20,7 +20,9 @@ const API_BASE = 'https://api.bot.qq.com';
|
|
|
20
20
|
/** 已知官方未开放(内邀中)的能力门控元数据 —— UI 据此渲染红条/灰态; 开放后删除对应项即可点亮 */
|
|
21
21
|
export const FEATURE_GATES = {
|
|
22
22
|
listMembers: { open: false, human: '获取群成员列表: 官方尚未开放(内邀中), 等待公测后自动可用' },
|
|
23
|
-
|
|
23
|
+
// 2026-10-20 主人实测: QQ 开放平台后台「权限」页已可勾选「移除群成员」,群管理员里也能给机器人开这项。
|
|
24
|
+
// → 不再硬关;调用失败会带回平台错误码,按错误信息判断即可。
|
|
25
|
+
removeMembers: { open: true, human: '踢人: 需要平台勾选「移除群成员」+ 机器人是群管理员' },
|
|
24
26
|
listJoinRequests: { open: true, human: '入群申请列表: 机器人需为群管理员' },
|
|
25
27
|
approveJoinRequest: { open: true, human: '入群申请审批: 机器人需为群管理员' },
|
|
26
28
|
getMemberInfo: { open: false, human: '获取群成员信息(含昵称): 官方标注「内邀接入中」, 申请到白名单后自动可用' },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group-admin.js","sourceRoot":"","sources":["../../src/api/group-admin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,4CAA4C;AAC5C,MAAM,SAAS,GAAG,2CAA2C,CAAC;AAC9D,MAAM,QAAQ,GAAG,wBAAwB,CAAC;AAE1C,yDAAyD;AACzD,MAAM,CAAC,MAAM,aAAa,GAAqD;IAC7E,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,iCAAiC,EAAE;IACtE,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,gDAAgD,EAAE;IACvF,gBAAgB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,mBAAmB,EAAE;IAC5D,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,mBAAmB,EAAE;IAC9D,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,wCAAwC,EAAE;IAC/E,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,oBAAoB,EAAE;IACzD,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE;CAClD,CAAC;AAqBF,mDAAmD;AACnD,MAAM,mBAAmB,GAA2B;IAClD,eAAe,EAAE,cAAc;IAC/B,YAAY,EAAE,OAAO;IACrB,SAAS,EAAE,MAAM;IACjB,EAAE,EAAE,MAAM;CACX,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,EAAiH;IAC3I,MAAM,EAAE,GAAG,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,EAAE,EAAE,cAAc;QAAE,OAAO,EAAE,CAAC,cAAc,CAAC;IACjD,IAAI,EAAE,EAAE,MAAM;QAAE,OAAO,mBAAmB,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC;IAC7E,OAAO,EAAE,CAAC;AACZ,CAAC;AASD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAAqB,EAAE,SAAkB;IACnE,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,KAAK,GAA2B;QACpC,gBAAgB;QAChB,OAAO,EAAE,SAAS,IAAI,kCAAkC;QACxD,OAAO,EAAE,SAAS,IAAI,kDAAkD;QACxE,UAAU,EAAE,mCAAmC;QAC/C,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,cAAc;QACvB,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,gBAAgB;QACvB,OAAO,EAAE,0DAA0D;QACnE,uCAAuC;QACvC,QAAQ,EAAE,4DAA4D;QACtE,UAAU,EAAE,sDAAsD;QAClE,QAAQ,EAAE,mEAAmE;QAC7E,UAAU,EAAE,6BAA6B;QACzC,UAAU,EAAE,4BAA4B;QACxC,UAAU,EAAE,8BAA8B;QAC1C,UAAU,EAAE,yBAAyB;QACrC,UAAU,EAAE,iCAAiC;QAC7C,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,mCAAmC;QAC7C,QAAQ,EAAE,2CAA2C;QACrD,OAAO,EAAE,iCAAiC;QAC1C,UAAU,EAAE,8CAA8C;QAC1D,QAAQ,EAAE,mCAAmC;QAC7C,QAAQ,EAAE,mBAAmB;KAC9B,CAAC;IACF,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACpB,6DAA6D;IAC7D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,OAAO,yEAAyE,CAAC,EAAE,CAAC;QACtF,CAAC;QACD,IAAI,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,0BAA0B,CAAC,EAAE,CAAC;QACzE,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,uCAAuC,CAAC,EAAE,CAAC;QAC7E,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,2CAA2C,CAAC,EAAE,CAAC;IACrF,CAAC;IACD,OAAO,YAAY,CAAC,UAAU,CAAC;AACjC,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU;IACN,KAAK,GAAG,IAAI,GAAG,EAA+C,CAAC;IAC/D,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEtD,KAAK,CAAC,GAAG,CAAC,KAAa,EAAE,SAAiB;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,QAAQ,GAAG,MAAM;YAAE,OAAO,GAAG,CAAC,KAAK,CAAC;QAChE,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;gBACd,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;oBACjC,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;iBACzD,CAAC,CAAC;gBACH,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAoF,CAAC;gBAChH,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;oBACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;gBACtF,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;gBACvG,OAAO,CAAC,CAAC,YAAY,CAAC;YACxB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;CACF;AAED,wDAAwD;AACxD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;AAC/C,SAAS,IAAI,CAAC,IAAY;IACxB,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,CAAC;QAAC,cAAc,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;AAC/F,CAAC;AAUD,MAAM,OAAO,gBAAgB;IAIE;IAHZ,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IAC1B,KAAK,CAA0B;IAEhD,YAA6B,IAAuB;QAAvB,SAAI,GAAJ,IAAI,CAAmB;QAClD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAC7B,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CACzF,CAAC;IACJ,CAAC;IAEO,IAAI,CAAC,IAAY;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;QAC5C,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,iBAAiB,EAAE,EAAE,CAAC;IAChG,CAAC;IAEO,KAAK,CAAC,IAAI,CAAI,MAA2C,EAAE,IAAY,EAAE,IAAc;QAC7F,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,EAAE;YAC5C,MAAM;YACN,OAAO,EAAE;gBACP,aAAa,EAAE,SAAS,KAAK,EAAE;gBAC/B,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC5D,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAA2F,CAAC;QACzI,IAAI,CAAC,iBAAiB,MAAM,IAAI,IAAI,MAAM,GAAG,CAAC,MAAM,SAAS,CAAC,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;QACjH,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;YACrD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAM,EAAE,CAAC;QAChD,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IAChE,CAAC;IAED;;;;;;;OAOG;IACH;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,OAAO,CAAC,MAA2C,EAAE,IAAY,EAAE,IAAc;QACrF,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,0DAA0D,EAAE,EAAE,CAAC;QACrH,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAU,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAW,EAAE,YAAoB;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC1C,IAAI,OAAO;YAAE,OAAO,OAAO,CAAA;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,kBAAkB,CAAC,GAAG,CAAC,YAAY,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;IAC9G,CAAC;IAED,oCAAoC;IACpC,KAAK,CAAC,WAAW,CAAC,GAAW,EAAE,MAAM,GAAG,EAAE;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzC,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,yBAAyB;IACzB,KAAK,CAAC,aAAa,CACjB,GAAW,EACX,aAAuB,EACvB,cAAc,GAAG,KAAK;QAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC3C,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,kBAAkB,CAAC,GAAG,CAAC,uBAAuB,EAAE;YACrF,cAAc,EAAE,aAAa;YAC7B,uBAAuB,EAAE,cAAc;SACxC,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB;IACtB,KAAK,CAAC,gBAAgB,CAAC,GAAW,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE;QACzD,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;QAChC,IAAI,MAAM;YAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,KAAK,IAAI,KAAK,KAAK,EAAE;YAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,kBAAkB,CAAC,GAAG,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,6CAA6C;IAC7C,KAAK,CAAC,kBAAkB,CACtB,GAAW,EACX,YAAoB,EACpB,EAAyB,EACzB,IAAuF;QAEvF,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,kBAAkB,CAAC,GAAG,CAAC,0BAA0B,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAAE;YAC1H,EAAE;YACF,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,GAAG,CAAC,EAAE,KAAK,SAAS,IAAI,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzF,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB;IACvB,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,kBAAkB,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACzF,CAAC;IAED,uDAAuD;IACvD,KAAK,CAAC,YAAY,CAAC,GAAW;QAI5B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CACjB,GAAW,EACX,YAA+B,EAC/B,YAA2B;QAE3B,uEAAuE;QACvE,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;aACtE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,YAAY;YAC3C,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE;YAChE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,cAAc,kBAAkB,CAAC,GAAG,CAAC,wBAAwB,CAAC;QAC1E,mFAAmF;QACnF,qEAAqE;QACrE,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,uBAAuB;QACtF,IAAI,IAAI,GAAqC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,IAAI,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;QAC5B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,GAAW,EAAE,OAAe;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,kCAAkC;QAC1F,MAAM,MAAM,GAAG,0EAA0E,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxG,MAAM,IAAI,GAA4B,MAAM;YAC1C,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE;YACzD,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,CACjB,GAAW,EACX,QAAgB,EAChB,QAAkC;QAElC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC;QACvD,MAAM,IAAI,GAA4B,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACxG,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO;YAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACnF,CAAC;IAED,wDAAwD;IACxD,KAAK,CAAC,WAAW,CAAC,UAAkB,EAAE,OAAe;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC;QACvD,MAAM,MAAM,GAAG,0EAA0E,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxG,MAAM,IAAI,GAA4B,MAAM;YAC1C,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE;YACzD,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,kBAAkB,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACzF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CACf,UAAkB,EAClB,QAAgB,EAChB,QAAkC;QAElC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC;QACvD,MAAM,IAAI,GAA4B,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACxG,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO;YAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,kBAAkB,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACzF,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,KAAa,EAAE,QAAyB,OAAO;QACjF,MAAM,IAAI,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;QAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,IAAI,kBAAkB,CAAC,MAAM,CAAC,aAAa,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5G,CAAC;CAEF;AAED,yDAAyD;AACzD,MAAM,UAAU,gBAAgB,CAAC,IAAuB;IACtD,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,iBAAiB,CAAC,GAAuB;IACvD,OAAO,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC7D,CAAC"}
|
|
1
|
+
{"version":3,"file":"group-admin.js","sourceRoot":"","sources":["../../src/api/group-admin.ts"],"names":[],"mappings":"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"}
|
package/dist/channel-tools.d.ts
CHANGED
|
@@ -111,13 +111,16 @@ export declare function syncContextTools(agentCtx: unknown, shouldHave: boolean,
|
|
|
111
111
|
export declare function ensureExtToolsGlobal(globalCtx: unknown): void;
|
|
112
112
|
export declare function ensureContextToolsGlobal(globalCtx: unknown): void;
|
|
113
113
|
/**
|
|
114
|
-
* 按会话**实时剪枝**三个上下文工具的可见性(2026-10-09
|
|
114
|
+
* 按会话**实时剪枝**三个上下文工具的可见性(2026-10-09 起;2026-10-21 按 `dsh-computer-use` 的实测修)。
|
|
115
115
|
*
|
|
116
116
|
* 语义:**开了「无上下文模式 + 智能判断」**的会话 → 看得见那三个工具;
|
|
117
117
|
* 否则该会话**连工具名都看不到**(模型清单里没有 = 零 token),而**注册表纹丝不动**。
|
|
118
|
-
* 面板一改开关 → 下一次 pre-step
|
|
118
|
+
* 面板一改开关 → 下一次 pre-step(下一回合 / 下一 step)即生效。
|
|
119
119
|
*
|
|
120
|
-
*
|
|
120
|
+
* 2026-10-21 修两处(对齐 `dsh-plugins/dsh-computer-use/internal/schema-visibility.mjs`):
|
|
121
|
+
* ① `ctx.tools` 在未 inject 时会抛 ⇒ 必须退化到 `ctx.get('tools')`,否则"剪枝"整段被 catch 吞掉;
|
|
122
|
+
* ② `restrict()` 的返回值是**函数**,释放必须走 {@link liftRestriction}。
|
|
123
|
+
* 幂等:同一作用域状态没变化就直接 return,不重复设/撤 restriction(避免无谓变更通知与抖动)。
|
|
121
124
|
*/
|
|
122
125
|
export declare function restrictContextTools(agentCtx: unknown, shouldHave: boolean, env?: {
|
|
123
126
|
dataRoot?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel-tools.d.ts","sourceRoot":"","sources":["../src/channel-tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"channel-tools.d.ts","sourceRoot":"","sources":["../src/channel-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/channel-tools.js
CHANGED
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
* 复制进共享 node_modules,也不得在 dependencies 里自带 dsh-tools(避免双包)。
|
|
9
9
|
*/
|
|
10
10
|
import { defineTool } from '@deepseek-ai/dsh-tools';
|
|
11
|
+
import { uploadMarkdownImage, listMarkdownImages, deleteMarkdownImage } from './features/md-media.js';
|
|
12
|
+
import { setMaterialTargetFactory } from './features/md-media-rewrite.js';
|
|
11
13
|
import { appendFileSync, existsSync, mkdirSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync } from 'node:fs';
|
|
12
14
|
import { join, dirname } from 'node:path';
|
|
13
15
|
import { homedir } from 'node:os';
|
|
@@ -169,6 +171,19 @@ function findChannelByTag(tag) {
|
|
|
169
171
|
* @param tag 人设 id(如 whale)
|
|
170
172
|
* @param dataRoot 插件数据根(群台账在这里)
|
|
171
173
|
*/
|
|
174
|
+
// 2026-10-21: 出站自动传图需要 groupAdmin 句柄;取**任一**桥(不依赖当前会话)
|
|
175
|
+
setMaterialTargetFactory(() => {
|
|
176
|
+
try {
|
|
177
|
+
// 2026-10-21 修:channelBridges 实测是空的(同文件 204 行注释也写了),要用 managersOf()
|
|
178
|
+
for (const m of managersOf()) {
|
|
179
|
+
const cc = m.groupAdmin;
|
|
180
|
+
if (cc)
|
|
181
|
+
return { apiCall: cc.apiCall.bind(cc) };
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
catch { /* ignore */ }
|
|
185
|
+
return undefined;
|
|
186
|
+
});
|
|
172
187
|
function buildWorkspaceQqPack(tag, dataRoot) {
|
|
173
188
|
const hit = findChannelByTag(tag);
|
|
174
189
|
if (!hit)
|
|
@@ -290,9 +305,63 @@ function buildWorkspaceQqPack(tag, dataRoot) {
|
|
|
290
305
|
},
|
|
291
306
|
sendMarkdown: (scope, id, md) => (typeof sender?.sendMarkdown === 'function' && id ? Promise.resolve(sender.sendMarkdown(toTarget(scope, id), String(md))).then(() => true).catch(() => false) : Promise.resolve(false)),
|
|
292
307
|
sendImage: (scope, id, src) => (typeof sender?.sendMedia === 'function' && id ? Promise.resolve(sender.sendMedia(toTarget(scope, id), 'image', src)).then(() => true).catch(() => false) : Promise.resolve(false)),
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
308
|
+
// 2026-10-22(主人定):素材上传等本来**不需要群管理权限** —— 这里直接用机器人自己的
|
|
309
|
+
// access_token 通道(与 api/group-admin.ts 同源),不再借 groupAdmin,也不依赖本实例是否启用群管理。
|
|
310
|
+
apiCall: (() => {
|
|
311
|
+
const cred = globalThis.__qqbotAppCred;
|
|
312
|
+
const appId = String(mgr?.config?.appId || cred?.appId || '');
|
|
313
|
+
const appSecret = String(mgr?.config?.appSecret || cred?.appSecret || '');
|
|
314
|
+
if (!appId || !appSecret)
|
|
315
|
+
return undefined;
|
|
316
|
+
const g = globalThis;
|
|
317
|
+
if (!g.__qqbotBotToken)
|
|
318
|
+
g.__qqbotBotToken = new Map();
|
|
319
|
+
const cache = g.__qqbotBotToken;
|
|
320
|
+
const token = async () => {
|
|
321
|
+
const hit = cache.get(appId);
|
|
322
|
+
if (hit && Date.now() < hit.at)
|
|
323
|
+
return hit.t;
|
|
324
|
+
try {
|
|
325
|
+
const res = await fetch('https://bots.qq.com/app/getAppAccessToken', {
|
|
326
|
+
method: 'POST',
|
|
327
|
+
headers: { 'content-type': 'application/json' },
|
|
328
|
+
body: JSON.stringify({ appId, clientSecret: appSecret }),
|
|
329
|
+
});
|
|
330
|
+
const j = (await res.json());
|
|
331
|
+
if (!j.access_token)
|
|
332
|
+
return undefined;
|
|
333
|
+
cache.set(appId, { t: j.access_token, at: Date.now() + ((j.expires_in ?? 7200) - 60) * 1000 });
|
|
334
|
+
return j.access_token;
|
|
335
|
+
}
|
|
336
|
+
catch {
|
|
337
|
+
return undefined;
|
|
338
|
+
}
|
|
339
|
+
};
|
|
340
|
+
return async (method, path, body) => {
|
|
341
|
+
const tk = await token();
|
|
342
|
+
if (!tk)
|
|
343
|
+
return { ok: false, err: { code: 'no-token', human: '取不到 access_token(appId/appSecret 缺失或网络失败)' } };
|
|
344
|
+
try {
|
|
345
|
+
const res = await fetch('https://api.sgroup.qq.com' + path, {
|
|
346
|
+
method,
|
|
347
|
+
headers: { Authorization: 'QQBot ' + tk, 'content-type': 'application/json' },
|
|
348
|
+
body: body === undefined ? undefined : JSON.stringify(body),
|
|
349
|
+
});
|
|
350
|
+
const text = await res.text();
|
|
351
|
+
let data = {};
|
|
352
|
+
try {
|
|
353
|
+
data = text ? JSON.parse(text) : {};
|
|
354
|
+
}
|
|
355
|
+
catch {
|
|
356
|
+
data = { raw: text };
|
|
357
|
+
}
|
|
358
|
+
return { ok: res.ok, data, err: res.ok ? undefined : { code: res.status, human: text.slice(0, 200) } };
|
|
359
|
+
}
|
|
360
|
+
catch (e) {
|
|
361
|
+
return { ok: false, err: { code: 'net', human: e?.message ?? String(e) } };
|
|
362
|
+
}
|
|
363
|
+
};
|
|
364
|
+
})(),
|
|
296
365
|
};
|
|
297
366
|
}
|
|
298
367
|
/** 全局「智能判断」开关(由 session-manager 初始化时注入;照 setChannelBridge 同款做法) */
|
|
@@ -2279,6 +2348,148 @@ export async function apply(ctx) {
|
|
|
2279
2348
|
}
|
|
2280
2349
|
},
|
|
2281
2350
|
});
|
|
2351
|
+
/** 踢人(2026-10-20:平台已开放「移除群成员」,主人实测授权后加的写工具) */
|
|
2352
|
+
const kickMemberTool = defineTool({
|
|
2353
|
+
name: 'group_kick',
|
|
2354
|
+
description: '群管理(写,危险): 把成员移出群(踢人),可批量 ≤20。需机器人是群管理员、且平台后台勾选了「移除群成员」。**仅主人明确要求时调用**。不填 gid = 当前会话所在的群。',
|
|
2355
|
+
parameters: {
|
|
2356
|
+
gid: { type: 'string', description: '目标群 openid(可选; 不填=当前会话所在的群)' },
|
|
2357
|
+
member_openids: { type: 'array', items: { type: 'string' }, description: '要移出的成员 openid(≤20 个)' },
|
|
2358
|
+
add_to_blacklist: { type: 'boolean', description: '同时加入成员黑名单(默认 false)' },
|
|
2359
|
+
},
|
|
2360
|
+
output: {
|
|
2361
|
+
schema: {
|
|
2362
|
+
type: 'object',
|
|
2363
|
+
properties: { ok: { type: 'boolean' }, msg: { type: 'string' } },
|
|
2364
|
+
additionalProperties: false,
|
|
2365
|
+
},
|
|
2366
|
+
render: (_a, v) => [
|
|
2367
|
+
{ type: 'text', text: v.ok ? String(v.msg || '') : '失败: ' + String(v.msg || '') },
|
|
2368
|
+
],
|
|
2369
|
+
},
|
|
2370
|
+
execute: async (args, exec) => {
|
|
2371
|
+
try {
|
|
2372
|
+
const ga = groupAdminOf(exec);
|
|
2373
|
+
if (!ga)
|
|
2374
|
+
return { ok: false, msg: '群管理未开启或非群会话' };
|
|
2375
|
+
const gid = String(args.gid ?? '').trim() || ga.gid || latestGroupId();
|
|
2376
|
+
if (!gid)
|
|
2377
|
+
return { ok: false, msg: '当前不是群会话且未指定 gid' };
|
|
2378
|
+
const ids = (Array.isArray(args.member_openids) ? args.member_openids : [])
|
|
2379
|
+
.map((x) => String(x).trim())
|
|
2380
|
+
.filter(Boolean)
|
|
2381
|
+
.slice(0, 20);
|
|
2382
|
+
if (ids.length === 0)
|
|
2383
|
+
return { ok: false, msg: 'member_openids 为空' };
|
|
2384
|
+
// ApiResult 失败结构是 { ok:false, err:{ code, human } }
|
|
2385
|
+
const r = (await ga.client.removeMembers(gid, ids, args.add_to_blacklist === true));
|
|
2386
|
+
if (r?.ok !== true) {
|
|
2387
|
+
const code = String(r?.err?.code || '');
|
|
2388
|
+
const human = String(r?.err?.human || '');
|
|
2389
|
+
return {
|
|
2390
|
+
ok: false,
|
|
2391
|
+
msg: '踢人失败: ' + (human || code || '(平台无返回)') + (code ? ' [code=' + code + ']' : '') +
|
|
2392
|
+
'(常见原因: 平台未勾选该权限 / 机器人非管理员 / 对方是群主或管理员)',
|
|
2393
|
+
};
|
|
2394
|
+
}
|
|
2395
|
+
const failN = Array.isArray(r.data?.add_to_member_blacklist_fail_openids)
|
|
2396
|
+
? r.data.add_to_member_blacklist_fail_openids.length
|
|
2397
|
+
: 0;
|
|
2398
|
+
return {
|
|
2399
|
+
ok: true,
|
|
2400
|
+
msg: '✅ 已提交移出 ' + ids.length + ' 人' + (failN > 0 ? ';加黑名单失败 ' + failN + ' 人' : ''),
|
|
2401
|
+
};
|
|
2402
|
+
}
|
|
2403
|
+
catch (e) {
|
|
2404
|
+
return { ok: false, msg: '踢人异常: ' + (e instanceof Error ? e.message : String(e)) };
|
|
2405
|
+
}
|
|
2406
|
+
},
|
|
2407
|
+
});
|
|
2408
|
+
/** 素材管理(2026-10-21 新接口 /v2/media-images/*:本地图 → qqbot-media:// 引用串) */
|
|
2409
|
+
function anyAdminOf(exec) {
|
|
2410
|
+
try {
|
|
2411
|
+
const s = findSessionRec(channelOf(exec), exec);
|
|
2412
|
+
const client = s?.ch?.manager?.groupAdmin;
|
|
2413
|
+
const root = String(s?.ch?.manager?.config?.dataRoot ?? '');
|
|
2414
|
+
if (client)
|
|
2415
|
+
return { client, dataRoot: root };
|
|
2416
|
+
for (const b of channelBridges) {
|
|
2417
|
+
try {
|
|
2418
|
+
const c = b.manager.groupAdmin;
|
|
2419
|
+
if (c)
|
|
2420
|
+
return { client: c, dataRoot: String(b.manager.config?.dataRoot ?? '') };
|
|
2421
|
+
}
|
|
2422
|
+
catch { /* 跳过坏桥 */ }
|
|
2423
|
+
}
|
|
2424
|
+
return undefined;
|
|
2425
|
+
}
|
|
2426
|
+
catch {
|
|
2427
|
+
return undefined;
|
|
2428
|
+
}
|
|
2429
|
+
}
|
|
2430
|
+
const materialTool = defineTool({
|
|
2431
|
+
name: 'qq_material',
|
|
2432
|
+
description: 'QQ 素材管理(Markdown 图片): 把**本地图片**传到 QQ 平台换 qqbot-media:// 引用串,可直接写进 markdown 消息(不再需要公网图床)。限制: 单张 ≤10MB、png/jpeg/gif/webp、单机器人最多 100 张、图片滑动过期 90 天(每次被引用顺延)。action=upload 传图 / list 看已传列表 / delete 删除释放配额。',
|
|
2433
|
+
parameters: {
|
|
2434
|
+
action: { type: 'string', enum: ['upload', 'list', 'delete'], description: '默认 upload' },
|
|
2435
|
+
image: { type: 'string', description: 'upload: 本地图片绝对路径' },
|
|
2436
|
+
image_id: { type: 'string', description: 'delete: 图片 ID(list 里能看到)' },
|
|
2437
|
+
cursor: { type: 'string', description: 'list: 翻页游标(首页不传)' },
|
|
2438
|
+
},
|
|
2439
|
+
output: {
|
|
2440
|
+
schema: {
|
|
2441
|
+
type: 'object',
|
|
2442
|
+
properties: { ok: { type: 'boolean' }, msg: { type: 'string' }, url: { type: 'string' }, markdown: { type: 'string' } },
|
|
2443
|
+
additionalProperties: false,
|
|
2444
|
+
},
|
|
2445
|
+
render: (_a, v) => [{ type: 'text', text: String(v.msg || (v.ok ? 'ok' : '失败')) }],
|
|
2446
|
+
},
|
|
2447
|
+
execute: async (args, exec) => {
|
|
2448
|
+
const mat = anyAdminOf(exec);
|
|
2449
|
+
if (!mat)
|
|
2450
|
+
return { ok: false, msg: '拿不到机器人实例(没有已连接的本)' };
|
|
2451
|
+
const target = { apiCall: mat.client.apiCall.bind(mat.client) };
|
|
2452
|
+
const action = String(args.action ?? 'upload').trim() || 'upload';
|
|
2453
|
+
if (action === 'upload') {
|
|
2454
|
+
const r = await uploadMarkdownImage(target, String(args.image ?? '').trim());
|
|
2455
|
+
if (!r.ok)
|
|
2456
|
+
return { ok: false, msg: '上传失败: ' + String(r.msg || '') };
|
|
2457
|
+
const name = String(args.image ?? '').split(/[\\/]/).pop() || 'image';
|
|
2458
|
+
const dim = r.width && r.height ? ' #' + r.width + 'px #' + r.height + 'px' : '';
|
|
2459
|
+
const markdown = ' + ')';
|
|
2460
|
+
const head = (r.cached ? '✅ 命中本地缓存,未重复上传' : '✅ 已上传')
|
|
2461
|
+
+ '(' + Math.round((r.bytes ?? 0) / 1024) + 'KB'
|
|
2462
|
+
+ (r.width ? ',' + r.width + '×' + r.height : '') + ')';
|
|
2463
|
+
return { ok: true, url: String(r.url), markdown, msg: head + '\n' + markdown };
|
|
2464
|
+
}
|
|
2465
|
+
if (action === 'list') {
|
|
2466
|
+
const r = await listMarkdownImages(target, String(args.cursor ?? ''));
|
|
2467
|
+
if (!r.ok)
|
|
2468
|
+
return { ok: false, msg: '查询失败: ' + String(r.msg || '') };
|
|
2469
|
+
const d = (r.data ?? {});
|
|
2470
|
+
const list = Array.isArray(d.images) ? d.images : [];
|
|
2471
|
+
const lines = list.slice(0, 20).map((x, i) => {
|
|
2472
|
+
const exp = x.expires_at ? ' | 到期 ' + new Date(Number(x.expires_at) * 1000).toISOString().slice(0, 10) : '';
|
|
2473
|
+
return i + 1 + '. ' + String(x.file_name || '?') + ' | ' + String(x.image_id || '') + exp;
|
|
2474
|
+
});
|
|
2475
|
+
const more = d.next_cursor ? '(还有下一页,cursor=' + d.next_cursor + ')' : '';
|
|
2476
|
+
return {
|
|
2477
|
+
ok: true,
|
|
2478
|
+
msg: '共 ' + String(d.total ?? list.length) + ' 张' + more + (lines.length ? '\n' + lines.join('\n') : '\n(列表为空)'),
|
|
2479
|
+
};
|
|
2480
|
+
}
|
|
2481
|
+
if (action === 'delete') {
|
|
2482
|
+
const id = String(args.image_id ?? '').trim();
|
|
2483
|
+
if (!id)
|
|
2484
|
+
return { ok: false, msg: 'delete 需要 image_id' };
|
|
2485
|
+
const r = await deleteMarkdownImage(target, id);
|
|
2486
|
+
return r.ok
|
|
2487
|
+
? { ok: true, msg: '✅ 已删除 ' + id + '(配额已释放;已发出的消息不受影响)' }
|
|
2488
|
+
: { ok: false, msg: '删除失败: ' + String(r.msg || '') };
|
|
2489
|
+
}
|
|
2490
|
+
return { ok: false, msg: '未知 action: ' + action + '(可选 upload / list / delete)' };
|
|
2491
|
+
},
|
|
2492
|
+
});
|
|
2282
2493
|
const recallBatchTool = defineTool({
|
|
2283
2494
|
name: 'group_recall_batch',
|
|
2284
2495
|
description: '群管理(写,危险): 批量撤回消息 + 可选批量禁言发送者。'
|
|
@@ -2702,6 +2913,8 @@ export async function apply(ctx) {
|
|
|
2702
2913
|
{ name: 'group_msg_search', tool: msgSearchTool },
|
|
2703
2914
|
{ name: 'group_recall_batch', tool: recallBatchTool },
|
|
2704
2915
|
{ name: 'recall_keywords', tool: recallKeywordsTool },
|
|
2916
|
+
{ name: 'group_kick', tool: kickMemberTool },
|
|
2917
|
+
{ name: 'qq_material', tool: materialTool },
|
|
2705
2918
|
{ name: 'id_lookup', tool: idLookupTool },
|
|
2706
2919
|
{ name: 'session_list', tool: sessionListTool },
|
|
2707
2920
|
{ name: 'session_wake', tool: sessionWakeTool },
|
|
@@ -3659,6 +3872,11 @@ export function ensureExtToolsGlobal(globalCtx) {
|
|
|
3659
3872
|
})();
|
|
3660
3873
|
}
|
|
3661
3874
|
export function ensureContextToolsGlobal(globalCtx) {
|
|
3875
|
+
// 2026-10-21 修(trace 实证):restrict 报 "names unknown global tools" => 我们注册的层不是「全局层」。
|
|
3876
|
+
// cordis 的 ctx.root 才是根作用域;拿不到就退回传入值(行为不变)。
|
|
3877
|
+
const rootOfGlobal = (globalCtx.root ?? globalCtx);
|
|
3878
|
+
if (rootOfGlobal !== globalCtx)
|
|
3879
|
+
traceToolReg('[ctxtool-reg] 用 root ctx 注册(不同于传入的 ctx)');
|
|
3662
3880
|
try {
|
|
3663
3881
|
if (!globalCtx || typeof globalCtx !== 'object')
|
|
3664
3882
|
return;
|
|
@@ -3667,7 +3885,7 @@ export function ensureContextToolsGlobal(globalCtx) {
|
|
|
3667
3885
|
// 表现就是"全局注册压根没发生"(trace 里只有别的报错、没有"全局注册 N 件")。
|
|
3668
3886
|
// 正解:**用 cordis 的运行时取服务 `ctx.get('tools')`**(不需要 inject 声明)——
|
|
3669
3887
|
// 本插件别处也是这个姿势(见 ext-capabilities 给扩展工具的 kernel 文档:`ctx.get('tools')`)。
|
|
3670
|
-
const ctxObj =
|
|
3888
|
+
const ctxObj = rootOfGlobal;
|
|
3671
3889
|
let toolsObj;
|
|
3672
3890
|
try {
|
|
3673
3891
|
toolsObj = ctxObj.tools;
|
|
@@ -3705,14 +3923,55 @@ export function ensureContextToolsGlobal(globalCtx) {
|
|
|
3705
3923
|
}
|
|
3706
3924
|
/** 每个 agent 作用域当前的可见性状态(幂等用:状态没变就不动) */
|
|
3707
3925
|
const ctxRestrictState = new WeakMap();
|
|
3926
|
+
/** 释放 restriction 的唯一正确姿势(2026-10-21,抄 dsh-computer-use/internal/schema-visibility.mjs):
|
|
3927
|
+
* cordis 的 `ctx.effect(fn)` 返回的是**函数**(`Disposable<T> = () => T`),
|
|
3928
|
+
* 对函数调 `.dispose?.()` 会**静默变成空操作** —— 限制挂上去、再也没摘下来。
|
|
3929
|
+
* 所以函数优先,`.dispose()` 只作兼容。
|
|
3930
|
+
*/
|
|
3931
|
+
function liftRestriction(disposable) {
|
|
3932
|
+
if (typeof disposable === 'function') {
|
|
3933
|
+
try {
|
|
3934
|
+
disposable();
|
|
3935
|
+
}
|
|
3936
|
+
catch { /* ignore */ }
|
|
3937
|
+
return;
|
|
3938
|
+
}
|
|
3939
|
+
const d = disposable;
|
|
3940
|
+
if (d && typeof d.dispose === 'function') {
|
|
3941
|
+
try {
|
|
3942
|
+
d.dispose();
|
|
3943
|
+
}
|
|
3944
|
+
catch { /* ignore */ }
|
|
3945
|
+
}
|
|
3946
|
+
}
|
|
3947
|
+
/** 取某作用域的 tools 服务:`ctx.tools` 在未声明 inject 时会抛,退化到 cordis 运行时 `ctx.get('tools')`。 */
|
|
3948
|
+
function toolsOfScope(agentCtx) {
|
|
3949
|
+
const c = agentCtx;
|
|
3950
|
+
try {
|
|
3951
|
+
const t = c?.tools;
|
|
3952
|
+
if (t && typeof t === 'object')
|
|
3953
|
+
return t;
|
|
3954
|
+
}
|
|
3955
|
+
catch { /* 未 inject 时读 ctx.tools 会抛 */ }
|
|
3956
|
+
try {
|
|
3957
|
+
const t = c?.get?.('tools');
|
|
3958
|
+
if (t && typeof t === 'object')
|
|
3959
|
+
return t;
|
|
3960
|
+
}
|
|
3961
|
+
catch { /* ignore */ }
|
|
3962
|
+
return undefined;
|
|
3963
|
+
}
|
|
3708
3964
|
/**
|
|
3709
|
-
* 按会话**实时剪枝**三个上下文工具的可见性(2026-10-09
|
|
3965
|
+
* 按会话**实时剪枝**三个上下文工具的可见性(2026-10-09 起;2026-10-21 按 `dsh-computer-use` 的实测修)。
|
|
3710
3966
|
*
|
|
3711
3967
|
* 语义:**开了「无上下文模式 + 智能判断」**的会话 → 看得见那三个工具;
|
|
3712
3968
|
* 否则该会话**连工具名都看不到**(模型清单里没有 = 零 token),而**注册表纹丝不动**。
|
|
3713
|
-
* 面板一改开关 → 下一次 pre-step
|
|
3969
|
+
* 面板一改开关 → 下一次 pre-step(下一回合 / 下一 step)即生效。
|
|
3714
3970
|
*
|
|
3715
|
-
*
|
|
3971
|
+
* 2026-10-21 修两处(对齐 `dsh-plugins/dsh-computer-use/internal/schema-visibility.mjs`):
|
|
3972
|
+
* ① `ctx.tools` 在未 inject 时会抛 ⇒ 必须退化到 `ctx.get('tools')`,否则"剪枝"整段被 catch 吞掉;
|
|
3973
|
+
* ② `restrict()` 的返回值是**函数**,释放必须走 {@link liftRestriction}。
|
|
3974
|
+
* 幂等:同一作用域状态没变化就直接 return,不重复设/撤 restriction(避免无谓变更通知与抖动)。
|
|
3716
3975
|
*/
|
|
3717
3976
|
export function restrictContextTools(agentCtx, shouldHave, env) {
|
|
3718
3977
|
try {
|
|
@@ -3726,27 +3985,34 @@ export function restrictContextTools(agentCtx, shouldHave, env) {
|
|
|
3726
3985
|
const st = ctxRestrictState.get(key);
|
|
3727
3986
|
if (st && st.shouldHave === shouldHave)
|
|
3728
3987
|
return; // ← 状态一致:不动(这是"不抖"的关键)
|
|
3729
|
-
if (st?.dispose)
|
|
3730
|
-
|
|
3731
|
-
st.dispose();
|
|
3732
|
-
}
|
|
3733
|
-
catch { /* ignore */ }
|
|
3734
|
-
}
|
|
3735
|
-
const toolsObj = agentCtx.tools;
|
|
3736
|
-
const restrict = toolsObj?.restrict;
|
|
3988
|
+
if (st?.dispose)
|
|
3989
|
+
liftRestriction(st.dispose);
|
|
3737
3990
|
let dispose;
|
|
3738
|
-
if (!shouldHave
|
|
3991
|
+
if (!shouldHave) {
|
|
3992
|
+
const toolsObj = toolsOfScope(agentCtx);
|
|
3993
|
+
const restrict = toolsObj?.restrict;
|
|
3994
|
+
if (typeof restrict !== 'function') {
|
|
3995
|
+
traceToolReg('[ctxtool-reg] 剪枝失败: 拿不到 tools.restrict(ctx.tools 与 ctx.get("tools") 都取不到)');
|
|
3996
|
+
ctxRestrictState.set(key, { shouldHave });
|
|
3997
|
+
return;
|
|
3998
|
+
}
|
|
3739
3999
|
try {
|
|
3740
4000
|
const d = restrict.call(toolsObj, { deny: [...CTX_TOOL_NAMES] });
|
|
3741
4001
|
if (typeof d === 'function')
|
|
3742
4002
|
dispose = d;
|
|
4003
|
+
else if (d && typeof d.dispose === 'function') {
|
|
4004
|
+
const dd = d;
|
|
4005
|
+
dispose = () => { dd.dispose(); };
|
|
4006
|
+
}
|
|
4007
|
+
traceToolReg('[ctxtool-reg] 剪枝已挂 deny=' + CTX_TOOL_NAMES.join(',') + ' 返回形态=' + (typeof d));
|
|
3743
4008
|
}
|
|
3744
4009
|
catch (e) {
|
|
3745
|
-
traceToolReg('[ctxtool-reg] restrict
|
|
4010
|
+
traceToolReg('[ctxtool-reg] restrict 抛错: ' + String(e?.message ?? e).slice(0, 160));
|
|
3746
4011
|
}
|
|
3747
4012
|
}
|
|
3748
4013
|
ctxRestrictState.set(key, dispose ? { shouldHave, dispose } : { shouldHave });
|
|
3749
|
-
traceToolReg(`[ctxtool-reg] ${shouldHave ? '放开(本会话继承全局三个工具)' : '剪枝(本会话看不到三个工具)'}
|
|
4014
|
+
traceToolReg(`[ctxtool-reg] ${shouldHave ? '放开(本会话继承全局三个工具)' : '剪枝(本会话看不到三个工具)'}`
|
|
4015
|
+
+ ` dispose=${dispose ? '有' : '无'} dataRoot=${String(env?.dataRoot ?? '')} sk=${String(env?.sessionKey ?? '')}`);
|
|
3750
4016
|
}
|
|
3751
4017
|
catch (e) {
|
|
3752
4018
|
traceToolReg('[ctxtool-reg] 剪枝异常: ' + String(e?.message ?? e).slice(0, 160));
|