Compare commits
547 Commits
v2026.01.0
...
v2026.02.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2da934dd92 | ||
|
|
18ada2a177 | ||
|
|
a5fbc8bed9 | ||
|
|
904eeb0ad0 | ||
|
|
9c70110e1d | ||
|
|
9af6a8c9bd | ||
|
|
ac948023e3 | ||
|
|
512b606827 | ||
|
|
fc9f1ccb43 | ||
|
|
272b959a44 | ||
|
|
0bde066088 | ||
|
|
6334660e8d | ||
|
|
c29d84f97a | ||
|
|
aac2e89022 | ||
|
|
fea812d4f4 | ||
|
|
b570cbfcde | ||
|
|
adc5e0a1f4 | ||
|
|
04b8108890 | ||
|
|
f1ba03e3bd | ||
|
|
cdd9950973 | ||
|
|
473012fa6f | ||
|
|
1bbddb2222 | ||
|
|
dc66610cb2 | ||
|
|
655b5311cf | ||
|
|
4390ee2085 | ||
|
|
6bf3656d30 | ||
|
|
bfb2039095 | ||
|
|
86091f77cf | ||
|
|
eb223e3e75 | ||
|
|
d1bbbd9071 | ||
|
|
840c77ea2f | ||
|
|
91ba7df086 | ||
|
|
fa636c7bc5 | ||
|
|
a5ad295d38 | ||
|
|
e1f70d52a5 | ||
|
|
015c22063a | ||
|
|
0ea95ceefa | ||
|
|
1192c71453 | ||
|
|
0b5663636f | ||
|
|
1736a1bfbf | ||
|
|
d7c25aa973 | ||
|
|
d71b4a7351 | ||
|
|
a05697df70 | ||
|
|
b355c3f0c1 | ||
|
|
30f2aed68a | ||
|
|
50c549b260 | ||
|
|
2a75580831 | ||
|
|
4032746243 | ||
|
|
871e76b1df | ||
|
|
954ebad8b2 | ||
|
|
fa5d962152 | ||
|
|
2ac8d4b14f | ||
|
|
c86b27a0c1 | ||
|
|
2381c5080e | ||
|
|
0394be7d16 | ||
|
|
7c9bf4082a | ||
|
|
8621d178ae | ||
|
|
20a7d57b5b | ||
|
|
8f72e25671 | ||
|
|
b7e62e63e0 | ||
|
|
bbccffa95b | ||
|
|
b9104702ac | ||
|
|
015b0d98ec | ||
|
|
fc56ea7faa | ||
|
|
e1c2261537 | ||
|
|
93e8e3bee2 | ||
|
|
1fb2cccd58 | ||
|
|
b34ce0b075 | ||
|
|
49efcb7e4d | ||
|
|
8d334a48b9 | ||
|
|
16882bf9e5 | ||
|
|
dc0366aab2 | ||
|
|
6d080d3a28 | ||
|
|
e50a55ee11 | ||
|
|
edbd75e5dc | ||
|
|
387ca8788b | ||
|
|
cfb15808ef | ||
|
|
0424521380 | ||
|
|
c2ea3b2479 | ||
|
|
a96a588141 | ||
|
|
f34da0b263 | ||
|
|
80dce6e1de | ||
|
|
080534d03b | ||
|
|
a63d3e89ff | ||
|
|
0b9c242c0f | ||
|
|
6f7ae4a304 | ||
|
|
571adf33c5 | ||
|
|
813e2b8320 | ||
|
|
21ec586c68 | ||
|
|
e95a786420 | ||
|
|
7773723b18 | ||
|
|
c547c1cee5 | ||
|
|
b04112a261 | ||
|
|
df977a7ccc | ||
|
|
3986eb854f | ||
|
|
fe170bedb9 | ||
|
|
3504313f15 | ||
|
|
e5e0f4cbcc | ||
|
|
a7b244602f | ||
|
|
3343e73848 | ||
|
|
7ab3e51d6f | ||
|
|
303d21c73d | ||
|
|
054af87e6e | ||
|
|
991570d025 | ||
|
|
5a5261d184 | ||
|
|
8cdc7723d2 | ||
|
|
a167f51026 | ||
|
|
03ff69f9e0 | ||
|
|
62c69a9a41 | ||
|
|
9bf2a5d2a2 | ||
|
|
13aed46c05 | ||
|
|
02a1668979 | ||
|
|
9760ccb243 | ||
|
|
e2c705fe15 | ||
|
|
37c7bf73c0 | ||
|
|
447e791ab6 | ||
|
|
cde685a364 | ||
|
|
b00206b063 | ||
|
|
e0a838e512 | ||
|
|
b9f4f5f1d6 | ||
|
|
c1afd1fa23 | ||
|
|
eaeaadaf12 | ||
|
|
ee70c6629e | ||
|
|
692971c93c | ||
|
|
e17818bf6c | ||
|
|
c5c9fd9d57 | ||
|
|
5c9875d390 | ||
|
|
9185f88d40 | ||
|
|
1fcad993ea | ||
|
|
1594ea3a20 | ||
|
|
ee681ddad9 | ||
|
|
881597fd51 | ||
|
|
5772b1c65f | ||
|
|
3d4b4b96e8 | ||
|
|
409d2f663f | ||
|
|
de9948a5b0 | ||
|
|
0a51b4cfca | ||
|
|
f8eb096300 | ||
|
|
f6369a1591 | ||
|
|
81634f57fa | ||
|
|
70dc62aaab | ||
|
|
8762c05e04 | ||
|
|
db52ac1041 | ||
|
|
795ac34cd9 | ||
|
|
89a12a4fe8 | ||
|
|
f882997337 | ||
|
|
8e2c1b467e | ||
|
|
db2433afa1 | ||
|
|
fd125c9dea | ||
|
|
0a726aacb6 | ||
|
|
bf82e093d4 | ||
|
|
53ae7ef003 | ||
|
|
c2c7e3b2d3 | ||
|
|
26df5f5144 | ||
|
|
aebeb3677c | ||
|
|
076c1d62c6 | ||
|
|
21cf6ecc1d | ||
|
|
e6bdab54c9 | ||
|
|
2232e5adb3 | ||
|
|
d17089972a | ||
|
|
a7991147be | ||
|
|
be6eb35567 | ||
|
|
90bc295871 | ||
|
|
310ad5d1d3 | ||
|
|
00ce724430 | ||
|
|
43b68b3ff0 | ||
|
|
b6c1335335 | ||
|
|
8b0b33015f | ||
|
|
11ee9086b2 | ||
|
|
3578ffc543 | ||
|
|
b8531f1979 | ||
|
|
8607afd4c3 | ||
|
|
41d9963d35 | ||
|
|
bd5f3d3f7c | ||
|
|
dda8262bc0 | ||
|
|
0271013ec2 | ||
|
|
e1f210d600 | ||
|
|
eac8f6f355 | ||
|
|
3998b93034 | ||
|
|
ae04e95e13 | ||
|
|
12d638e134 | ||
|
|
4a9eb8ed3d | ||
|
|
af127bbfd5 | ||
|
|
db7bb6250a | ||
|
|
24b029e617 | ||
|
|
ff63ab3118 | ||
|
|
07e7e74fe1 | ||
|
|
55456775c1 | ||
|
|
05bb2e4644 | ||
|
|
83fa20ed08 | ||
|
|
ec69524357 | ||
|
|
829361da63 | ||
|
|
af05ecec6a | ||
|
|
1e08ae7d10 | ||
|
|
b24233ee07 | ||
|
|
e5d1550986 | ||
|
|
7f5deb603e | ||
|
|
55b2a28f79 | ||
|
|
db9bcb2c31 | ||
|
|
ad2773e8f1 | ||
|
|
7d4da3be8a | ||
|
|
28166728a4 | ||
|
|
4dfca903c4 | ||
|
|
b619d3f402 | ||
|
|
1e68f985fb | ||
|
|
596b571887 | ||
|
|
c4d36c32a0 | ||
|
|
6adbcd8d42 | ||
|
|
89c039fe33 | ||
|
|
3a73ccfaa7 | ||
|
|
7eff265e1c | ||
|
|
989b45fc16 | ||
|
|
163d8ce8bd | ||
|
|
4e32e1a1da | ||
|
|
070e9f2456 | ||
|
|
219ba83df3 | ||
|
|
e412aeb93d | ||
|
|
38102ca0c4 | ||
|
|
6ab69fba1c | ||
|
|
e0c0f69dc8 | ||
|
|
7921b14dae | ||
|
|
30cde9e871 | ||
|
|
ac50cd249a | ||
|
|
927db6dbaa | ||
|
|
376c398ac7 | ||
|
|
a167a3cf83 | ||
|
|
c51e7dfdf7 | ||
|
|
1d4d13b34b | ||
|
|
18e8775f38 | ||
|
|
813b019653 | ||
|
|
b0b1542939 | ||
|
|
15f19d8b8d | ||
|
|
82253b114c | ||
|
|
e0bfbf6dd4 | ||
|
|
4689e80e7a | ||
|
|
556e6c1c67 | ||
|
|
3ab84a526d | ||
|
|
bdce96f912 | ||
|
|
4811b99a4b | ||
|
|
fb2a64c07a | ||
|
|
e023e4f2e2 | ||
|
|
0b16b1e0f4 | ||
|
|
59073ad7ac | ||
|
|
8248644c45 | ||
|
|
f38e6394c9 | ||
|
|
0aaa529c6b | ||
|
|
b81a6562a1 | ||
|
|
c5b10db23a | ||
|
|
d16e444643 | ||
|
|
8202468099 | ||
|
|
766e8bd20f | ||
|
|
1214ab5a8c | ||
|
|
ebddbb25f8 | ||
|
|
59545e1110 | ||
|
|
500e090b11 | ||
|
|
a75ee555fa | ||
|
|
6a8c2164cd | ||
|
|
7f7efa325a | ||
|
|
9ba6cb08fc | ||
|
|
1872271a2d | ||
|
|
813b50864a | ||
|
|
b18cefe320 | ||
|
|
a54c359fcf | ||
|
|
8d83221a4a | ||
|
|
1879000720 | ||
|
|
ba92649a98 | ||
|
|
d2276dcaae | ||
|
|
25c9d20f3d | ||
|
|
0d853577df | ||
|
|
f91f3d8692 | ||
|
|
0f7cad8dfa | ||
|
|
db1a1e7ef0 | ||
|
|
e7de80a059 | ||
|
|
0d8c4e048e | ||
|
|
014a5a9d1f | ||
|
|
a6dd970859 | ||
|
|
aac730f5b1 | ||
|
|
ff95d9328e | ||
|
|
afe1d8cf52 | ||
|
|
67b819f3de | ||
|
|
9b6acb6b95 | ||
|
|
a9a59e1e34 | ||
|
|
5b05397356 | ||
|
|
7a7dbc0cfa | ||
|
|
6ac0ba6efe | ||
|
|
d3d008efb4 | ||
|
|
4f1528128a | ||
|
|
93c4326206 | ||
|
|
0fca7fe524 | ||
|
|
afdcab10c6 | ||
|
|
f8cc5eabe6 | ||
|
|
f304eb7633 | ||
|
|
827204e082 | ||
|
|
641d7ee8c8 | ||
|
|
3b11537b5e | ||
|
|
e51d87ae80 | ||
|
|
f16e7c996c | ||
|
|
55eb295c12 | ||
|
|
4767351c5e | ||
|
|
1d2502eb3f | ||
|
|
94540cc131 | ||
|
|
71bef146c8 | ||
|
|
87e47fd4b2 | ||
|
|
2da600838c | ||
|
|
4ee34c1dc6 | ||
|
|
9a854c33d3 | ||
|
|
ae19653a8f | ||
|
|
caf0acf2e1 | ||
|
|
b503ad6fd2 | ||
|
|
357e869a15 | ||
|
|
3035c79d91 | ||
|
|
a5e5e178a0 | ||
|
|
d20081d3ed | ||
|
|
e2d94ba5b5 | ||
|
|
49a19242a4 | ||
|
|
c26d3b30e5 | ||
|
|
60e681042d | ||
|
|
842d65b887 | ||
|
|
ff5cecca1c | ||
|
|
b447143a50 | ||
|
|
e4cbf231a6 | ||
|
|
8868b28a84 | ||
|
|
c4df24d2c2 | ||
|
|
70a96d0754 | ||
|
|
ab0daba80d | ||
|
|
505fb6ca96 | ||
|
|
385ee71bc8 | ||
|
|
cfa28e2c9a | ||
|
|
d08bede60e | ||
|
|
b686db353c | ||
|
|
2b543d51ff | ||
|
|
e8d09d79ec | ||
|
|
cdb544f891 | ||
|
|
3eff93e8c9 | ||
|
|
cdb03fce90 | ||
|
|
c1cecf0dbb | ||
|
|
08ecba3ee1 | ||
|
|
3b82f2364e | ||
|
|
a7b2032b20 | ||
|
|
3bc683dbf5 | ||
|
|
2a8065e80c | ||
|
|
ab60641265 | ||
|
|
9e88decc44 | ||
|
|
076598ba07 | ||
|
|
4f0c50db0f | ||
|
|
499690e30f | ||
|
|
12a531b9ae | ||
|
|
3a0e2ecc6e | ||
|
|
14954b03bf | ||
|
|
6f874db000 | ||
|
|
16cc45c0d5 | ||
|
|
ab96719ec4 | ||
|
|
e2be1b25b1 | ||
|
|
700a7fc27a | ||
|
|
06cc48bab1 | ||
|
|
498e433ed3 | ||
|
|
4e915ea7a9 | ||
|
|
825ea07f4b | ||
|
|
1a731c181b | ||
|
|
c59ba5e501 | ||
|
|
e21e3e2ffa | ||
|
|
d2abaa138e | ||
|
|
3843ae5bc7 | ||
|
|
02c7a87c63 | ||
|
|
1e59025535 | ||
|
|
46195791b6 | ||
|
|
85b6bcece1 | ||
|
|
fece7d9898 | ||
|
|
d41822911c | ||
|
|
7b1180a1c8 | ||
|
|
6d5c3f1415 | ||
|
|
f8157f92fc | ||
|
|
fa2e9f5344 | ||
|
|
9c37955cf2 | ||
|
|
261f74efe8 | ||
|
|
83727bdab1 | ||
|
|
3b1a8d795f | ||
|
|
f650c64ffe | ||
|
|
6000c880de | ||
|
|
048fbb26d7 | ||
|
|
a88eda62cc | ||
|
|
957fb2dfb7 | ||
|
|
d2be5109ad | ||
|
|
80fdc52598 | ||
|
|
2b90ead3cf | ||
|
|
2aa5d77586 | ||
|
|
2b1b1ef939 | ||
|
|
4e21e06617 | ||
|
|
82ce1cef29 | ||
|
|
533eace74e | ||
|
|
83b3dcda65 | ||
|
|
e89373e0ed | ||
|
|
4b66a2bb1c | ||
|
|
59ba23da63 | ||
|
|
f8a89e222c | ||
|
|
096568f3e6 | ||
|
|
e10e12ebc9 | ||
|
|
c4df5eba47 | ||
|
|
0da3d3d881 | ||
|
|
6f4a62d1bc | ||
|
|
5d71c2a4d3 | ||
|
|
097707c168 | ||
|
|
8f4cfceb50 | ||
|
|
4ab5fab7d0 | ||
|
|
0e293be8bc | ||
|
|
182c12f81a | ||
|
|
1337a90911 | ||
|
|
2f0a347ab3 | ||
|
|
4eda286512 | ||
|
|
0fead8158d | ||
|
|
031bef563a | ||
|
|
04c3fd2bf9 | ||
|
|
cbbf6118b5 | ||
|
|
4c529369ce | ||
|
|
797dea0d77 | ||
|
|
a91aee31de | ||
|
|
8511b7df80 | ||
|
|
afd1e7a444 | ||
|
|
34b2c3d6cf | ||
|
|
d5c099dd15 | ||
|
|
8810223693 | ||
|
|
84974a2fb9 | ||
|
|
af847293af | ||
|
|
a44e80ce5b | ||
|
|
c2815e13e9 | ||
|
|
56bfa3a3ef | ||
|
|
a13c915f27 | ||
|
|
fb2d35237e | ||
|
|
3f19ecfd20 | ||
|
|
2fd96f07aa | ||
|
|
a1c1ed9840 | ||
|
|
c63701d05f | ||
|
|
863805dc68 | ||
|
|
98f7dff458 | ||
|
|
08c0dd984c | ||
|
|
e870ad8823 | ||
|
|
d687fffdb5 | ||
|
|
d534d8b319 | ||
|
|
d5c5158726 | ||
|
|
888026876f | ||
|
|
06e8d30900 | ||
|
|
cbf2ff7f93 | ||
|
|
abbe3fb248 | ||
|
|
7e44dde979 | ||
|
|
3649d75539 | ||
|
|
d3b4219a9a | ||
|
|
9e98d55e11 | ||
|
|
4b8515f682 | ||
|
|
d2f35ce396 | ||
|
|
f479f23b38 | ||
|
|
51048f9e5d | ||
|
|
1118ae34c4 | ||
|
|
7a5e1a4e12 | ||
|
|
8e377e1794 | ||
|
|
d66360b02d | ||
|
|
1ece648006 | ||
|
|
a262a716a3 | ||
|
|
06fdfee182 | ||
|
|
7085e794a3 | ||
|
|
a9cae535eb | ||
|
|
bdbd0d98be | ||
|
|
51612ea783 | ||
|
|
baf364a85f | ||
|
|
f78e703a99 | ||
|
|
aabb24c9cd | ||
|
|
ef34cc326c | ||
|
|
5fa56ba88d | ||
|
|
b71df8ef43 | ||
|
|
8c6fe6784e | ||
|
|
29fa5bae29 | ||
|
|
dab465d924 | ||
|
|
77c0defe93 | ||
|
|
80cf2b5a52 | ||
|
|
96638d8092 | ||
|
|
21ad55ae55 | ||
|
|
530a6cd463 | ||
|
|
8615773b67 | ||
|
|
16eaec64b7 | ||
|
|
8558077dfe | ||
|
|
a15353ea52 | ||
|
|
5b44e3e688 | ||
|
|
a4b3628e01 | ||
|
|
bbb7db3878 | ||
|
|
dec2bbb4bf | ||
|
|
6a241b0ae0 | ||
|
|
51c53e0ed0 | ||
|
|
8cb6382e72 | ||
|
|
5889471e82 | ||
|
|
ca2e0b4fba | ||
|
|
10d24fbfa2 | ||
|
|
322bd6e167 | ||
|
|
3cc4478dd9 | ||
|
|
59f6f2ba97 | ||
|
|
172d9e0b41 | ||
|
|
de7086c9e1 | ||
|
|
5f63e8d1e2 | ||
|
|
3da0b894fd | ||
|
|
ad2d26aa16 | ||
|
|
a09f3e0bdb | ||
|
|
3a0faf27df | ||
|
|
cd3e7309a8 | ||
|
|
54cc10bb41 | ||
|
|
24e7d34524 | ||
|
|
a58ce9e99e | ||
|
|
4a42dcf8de | ||
|
|
5903ea0e40 | ||
|
|
6d7a5b45cf | ||
|
|
10433d38b3 | ||
|
|
bf2bc80b22 | ||
|
|
1e0f5fb65a | ||
|
|
7d5a696106 | ||
|
|
cf86012d4d | ||
|
|
961c1cbca6 | ||
|
|
7fb5c243fa | ||
|
|
f845281b72 | ||
|
|
0b2c6a2d36 | ||
|
|
245c37b2c3 | ||
|
|
d2a915a514 | ||
|
|
ae731f9bd6 | ||
|
|
2a8a8c5805 | ||
|
|
deb1272f62 | ||
|
|
51c41b8628 | ||
|
|
37893ded00 | ||
|
|
38fe50a898 | ||
|
|
1c731e70dc | ||
|
|
a55aa4d8fd | ||
|
|
6c79cb2f11 | ||
|
|
ba7943bd6f | ||
|
|
6eb09c3eaa | ||
|
|
63c5257162 | ||
|
|
a2422262b5 | ||
|
|
4f49b111fd | ||
|
|
1d066fc1f0 | ||
|
|
e960c40351 | ||
|
|
96284a3652 | ||
|
|
ad2f38ec1f | ||
|
|
87fc34d505 | ||
|
|
2aafd3cef7 | ||
|
|
afec54c4e0 | ||
|
|
905a9e67ca | ||
|
|
ce56815e77 | ||
|
|
2684098be1 | ||
|
|
57ebf24c75 | ||
|
|
9375df709f | ||
|
|
255e48bd33 | ||
|
|
18993c7fbe | ||
|
|
f3cf2b52fd |
33
.agent/rules/plugin_standards.md
Normal file
33
.agent/rules/plugin_standards.md
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
description: Standards for OpenWebUI Plugin Development, specifically README formatting.
|
||||||
|
globs: plugins/**
|
||||||
|
always_on: true
|
||||||
|
---
|
||||||
|
# Plugin Development Standards
|
||||||
|
|
||||||
|
## README Documentation
|
||||||
|
|
||||||
|
All plugins MUST follow the standard README template.
|
||||||
|
|
||||||
|
**Reference Template**: @docs/PLUGIN_README_TEMPLATE.md
|
||||||
|
|
||||||
|
### Language Requirements
|
||||||
|
|
||||||
|
- **English Version (`README.md`)**: The primary documentation source. Must follow the template strictly.
|
||||||
|
- **Chinese Version (`README_CN.md`)**: MUST be translated based on the English version (`README.md`) to ensure consistency in structure and content.
|
||||||
|
|
||||||
|
### Metadata Requirements
|
||||||
|
|
||||||
|
The metadata line must follow this format:
|
||||||
|
`**Author:** [Name](Link) | **Version:** [X.Y.Z] | **Project:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) | **License:** MIT`
|
||||||
|
|
||||||
|
### Structure Checklist
|
||||||
|
|
||||||
|
1. **Title & Description**
|
||||||
|
2. **Metadata Line** (Author, Version, Project, License)
|
||||||
|
3. **Preview** (Screenshots/GIFs)
|
||||||
|
4. **What's New** (Keep last 3 versions)
|
||||||
|
5. **Key Features**
|
||||||
|
6. **How to Use**
|
||||||
|
7. **Configuration (Valves)**
|
||||||
|
8. **Troubleshooting** (Must include link to GitHub Issues)
|
||||||
@@ -4,34 +4,39 @@ description: OpenWebUI Plugin Development & Release Workflow
|
|||||||
|
|
||||||
# OpenWebUI Plugin Development Workflow
|
# OpenWebUI Plugin Development Workflow
|
||||||
|
|
||||||
This workflow outlines the standard process for developing, documenting, and releasing plugins for OpenWebUI, ensuring compliance with project standards and CI/CD requirements.
|
This workflow outlines the standard process for developing, documenting, and releasing plugins for OpenWebUI. **Crucially, the default goal of this workflow is "Preparation" (updating all relevant files) rather than automatic "Submission" (git commit/push), unless a release is explicitly requested.**
|
||||||
|
|
||||||
## 1. Development Standards
|
## 1. Development Standards
|
||||||
|
|
||||||
Reference: `.github/copilot-instructions.md`
|
Reference: `.github/copilot-instructions.md`
|
||||||
|
|
||||||
### Bilingual Requirement
|
### Bilingual Requirement
|
||||||
Every plugin **MUST** have bilingual versions for both code and documentation:
|
|
||||||
|
|
||||||
- **Code**:
|
Every plugin **MUST** have a single internationalized code file and bilingual documentation:
|
||||||
- English: `plugins/{type}/{name}/{name}.py`
|
|
||||||
- Chinese: `plugins/{type}/{name}/{name_cn}.py` (or `中文名.py`)
|
- **Code (i18n)**:
|
||||||
|
- `plugins/{type}/{name}/{name}.py`
|
||||||
|
- The single `.py` file must implement internal i18n (e.g., using `navigator.language` or backend headers) to support multiple languages natively, rather than splitting into separate files.
|
||||||
- **README**:
|
- **README**:
|
||||||
- English: `plugins/{type}/{name}/README.md`
|
- English: `plugins/{type}/{name}/README.md`
|
||||||
- Chinese: `plugins/{type}/{name}/README_CN.md`
|
- Chinese: `plugins/{type}/{name}/README_CN.md`
|
||||||
|
|
||||||
### Code Structure
|
### Code Structure
|
||||||
|
|
||||||
- **Docstring**: Must include `title`, `author`, `version`, `description`, etc.
|
- **Docstring**: Must include `title`, `author`, `version`, `description`, etc.
|
||||||
- **Valves**: Use `pydantic` for configuration.
|
- **Valves**: Use `pydantic` for configuration.
|
||||||
- **Database**: Re-use `open_webui.internal.db` shared connection.
|
- **Database**: Re-use `open_webui.internal.db` shared connection.
|
||||||
- **User Context**: Use `_get_user_context` helper method.
|
- **User Context**: Use `_get_user_context` helper method.
|
||||||
|
- **Chat Context**: Use `_get_chat_context` helper method for `chat_id` and `message_id`.
|
||||||
|
- **Debugging**: Use `_emit_debug_log` for frontend console logging (requires `SHOW_DEBUG_LOG` valve).
|
||||||
- **Chat API**: For message updates, follow the "OpenWebUI Chat API 更新规范" in `.github/copilot-instructions.md`.
|
- **Chat API**: For message updates, follow the "OpenWebUI Chat API 更新规范" in `.github/copilot-instructions.md`.
|
||||||
- Use Event API for immediate UI updates
|
- Use Event API for immediate UI updates
|
||||||
- Use Chat Persistence API for database storage
|
- Use Chat Persistence API for database storage
|
||||||
- Always update both `messages[]` and `history.messages`
|
- Always update both `messages[]` and `history.messages`
|
||||||
|
|
||||||
### Commit Messages
|
### Commit Messages & Release Notes
|
||||||
- **Language**: **English ONLY**. Do not use Chinese in commit messages.
|
|
||||||
|
- **Language**: **English ONLY**. Do not use Chinese in commit messages or release notes.
|
||||||
- **Format**: Conventional Commits (e.g., `feat:`, `fix:`, `docs:`).
|
- **Format**: Conventional Commits (e.g., `feat:`, `fix:`, `docs:`).
|
||||||
|
|
||||||
## 2. Documentation Updates
|
## 2. Documentation Updates
|
||||||
@@ -39,10 +44,16 @@ Every plugin **MUST** have bilingual versions for both code and documentation:
|
|||||||
When adding or updating a plugin, you **MUST** update the following documentation files to maintain consistency:
|
When adding or updating a plugin, you **MUST** update the following documentation files to maintain consistency:
|
||||||
|
|
||||||
### Plugin Directory
|
### Plugin Directory
|
||||||
- `README.md`: Update version, description, and usage. **Explicitly describe new features.**
|
|
||||||
- `README_CN.md`: Update version, description, and usage. **Explicitly describe new features.**
|
- `README.md`: Update version, description, and usage.
|
||||||
|
- **Key Capabilities**: **MUST** include ALL core functionalities and features. This is a cumulative section. Every release **MUST** verify that basic core descriptions are NOT lost or overwritten by new feature lists.
|
||||||
|
- **What's New**: Explicitly describe only the latest changes/updates in a prominent position at the beginning. This section is dynamic and changes with versions.
|
||||||
|
- `README_CN.md`: Update version, description, and usage.
|
||||||
|
- **核心功能 (Key Capabilities)**: **必须**包含所有核心功能和特性。这是一个累积性的部分,每次版本更新**必须**确认基础核心功能的描述没有丢失或被新功能列表覆盖。
|
||||||
|
- **最新更新 (What's New)**: 在开头显眼位置明确描述最新的更改/更新。此部分是动态的,随版本变化。
|
||||||
|
|
||||||
### Global Documentation (`docs/`)
|
### Global Documentation (`docs/`)
|
||||||
|
|
||||||
- **Index Pages**:
|
- **Index Pages**:
|
||||||
- `docs/plugins/{type}/index.md`: Add/Update list item with **correct version**.
|
- `docs/plugins/{type}/index.md`: Add/Update list item with **correct version**.
|
||||||
- `docs/plugins/{type}/index.zh.md`: Add/Update list item with **correct version**.
|
- `docs/plugins/{type}/index.zh.md`: Add/Update list item with **correct version**.
|
||||||
@@ -51,6 +62,7 @@ When adding or updating a plugin, you **MUST** update the following documentatio
|
|||||||
- `docs/plugins/{type}/{name}.zh.md`: Ensure content matches README_CN.
|
- `docs/plugins/{type}/{name}.zh.md`: Ensure content matches README_CN.
|
||||||
|
|
||||||
### Root README
|
### Root README
|
||||||
|
|
||||||
- `README.md`: Add to "Featured Plugins" if applicable.
|
- `README.md`: Add to "Featured Plugins" if applicable.
|
||||||
- `README_CN.md`: Add to "Featured Plugins" if applicable.
|
- `README_CN.md`: Add to "Featured Plugins" if applicable.
|
||||||
|
|
||||||
@@ -59,31 +71,59 @@ When adding or updating a plugin, you **MUST** update the following documentatio
|
|||||||
Reference: `.github/workflows/release.yml`
|
Reference: `.github/workflows/release.yml`
|
||||||
|
|
||||||
### Version Bumping
|
### Version Bumping
|
||||||
|
|
||||||
- **Rule**: Version bump is required **ONLY when the user explicitly requests a release**. Regular code changes do NOT require version bumps.
|
- **Rule**: Version bump is required **ONLY when the user explicitly requests a release**. Regular code changes do NOT require version bumps.
|
||||||
- **Format**: Semantic Versioning (e.g., `1.0.0` -> `1.0.1`).
|
- **Format**: Semantic Versioning (e.g., `1.0.0` -> `1.0.1`).
|
||||||
- **When to Bump**: Only update the version when:
|
- **When to Bump**: Only update the version when:
|
||||||
- User says "发布" / "release" / "bump version"
|
- User says "发布" / "release" / "bump version"
|
||||||
- User explicitly asks to prepare for release
|
- User explicitly asks to prepare for release
|
||||||
- **Agent Initiative**: After completing significant changes (new features, bug fixes, or multiple code modifications), the agent **SHOULD proactively ask** the user if they want to release a new version. If confirmed, update all version-related files.
|
- **Agent Initiative**: After completing significant changes (new features, bug fixes, or multiple code modifications), the agent **SHOULD proactively ask** the user if they want to **prepare a new version** for release.
|
||||||
|
- **Release Information Compliance**: When a release is requested, the agent must generate a standard release summary (English commit title + bilingual bullet points) as defined in Section 3 & 5.
|
||||||
|
- **Default Action (Prepare Only)**: When performing a version bump or update, the agent should update all files locally but **STOP** before committing. Present the changes and the **proposed Release/Commit Message** to the user and wait for explicit confirmation to commit/push.
|
||||||
- **Consistency**: When bumping, update version in **ALL** locations:
|
- **Consistency**: When bumping, update version in **ALL** locations:
|
||||||
1. English Code (`.py`)
|
1. Code (`.py`)
|
||||||
2. Chinese Code (`.py`)
|
2. English README (`README.md`)
|
||||||
3. English README (`README.md`)
|
3. Chinese README (`README_CN.md`)
|
||||||
4. Chinese README (`README_CN.md`)
|
4. Docs Index (`docs/.../index.md`)
|
||||||
5. Docs Index (`docs/.../index.md`)
|
5. Docs Index CN (`docs/.../index.zh.md`)
|
||||||
6. Docs Index CN (`docs/.../index.zh.md`)
|
6. Docs Detail (`docs/.../{name}.md`)
|
||||||
7. Docs Detail (`docs/.../{name}.md`)
|
7. Docs Detail CN (`docs/.../{name}.zh.md`)
|
||||||
8. Docs Detail CN (`docs/.../{name}.zh.md`)
|
|
||||||
|
|
||||||
### Automated Release Process
|
### Automated Release Process
|
||||||
|
|
||||||
1. **Trigger**: Push to `main` branch with changes in `plugins/**/*.py`.
|
1. **Trigger**: Push to `main` branch with changes in `plugins/**/*.py`.
|
||||||
2. **Detection**: `scripts/extract_plugin_versions.py` detects changed plugins and compares versions.
|
2. **Detection**: `scripts/extract_plugin_versions.py` detects changed plugins and compares versions.
|
||||||
3. **Release**:
|
3. **Release**:
|
||||||
- Generates release notes based on changes.
|
- Generates release notes based on changes.
|
||||||
- Creates a GitHub Release tag (e.g., `v2024.01.01-1`).
|
- Creates a GitHub Release tag (e.g., `v2024.01.01-1`).
|
||||||
- Uploads individual `.py` files of **changed plugins only** as assets.
|
- Uploads individual `.py` files of **changed plugins only** as assets.
|
||||||
|
4. **Market Publishing**:
|
||||||
|
- Workflow: `.github/workflows/publish_plugin.yml`
|
||||||
|
- Trigger: Release published.
|
||||||
|
- Action: Automatically updates the plugin code and metadata on OpenWebUI.com using `scripts/publish_plugin.py`.
|
||||||
|
- **Auto-Sync**: If a local plugin has no ID but matches an existing published plugin by **Title**, the script will automatically fetch the ID, update the local file, and proceed with the update.
|
||||||
|
- Requirement: `OPENWEBUI_API_KEY` secret must be set.
|
||||||
|
- **README Link**: When announcing a release, always include the GitHub README URL for the plugin:
|
||||||
|
- Format: `https://github.com/Fu-Jie/openwebui-extensions/blob/main/plugins/{type}/{name}/README.md`
|
||||||
|
- Example: `https://github.com/Fu-Jie/openwebui-extensions/blob/main/plugins/filters/folder-memory/README.md`
|
||||||
|
|
||||||
|
### Release Content Standard
|
||||||
|
|
||||||
|
When the user confirms a release, the agent **MUST** follow these content standards:
|
||||||
|
|
||||||
|
1. **Commit Message**:
|
||||||
|
- **Language**: English ONLY.
|
||||||
|
- **Format**: `type(scope): description` (e.g., `feat(pipes): add streaming support for Copilot SDK`).
|
||||||
|
- **Body**: List 1-3 key changes in bullet points.
|
||||||
|
2. **Release Summary (for user review)**:
|
||||||
|
- Before committing, present a "Release Draft" containing:
|
||||||
|
- **Title**: e.g., `Release v0.1.1: [Plugin Name] - [Brief Summary]`
|
||||||
|
- **Changelog**: English-only list of commits since the last release, including hashes (e.g., `896de02 docs(config): reorder antigravity model alias example`).
|
||||||
|
- **Verification Status**: Confirm all 7+ files have been updated and synced.
|
||||||
|
3. **Internal Documentation**: Ensure "What's New" sections in READMEs and `docs/` match exactly the changes being released.
|
||||||
|
|
||||||
### Pull Request Check
|
### Pull Request Check
|
||||||
|
|
||||||
- Workflow: `.github/workflows/plugin-version-check.yml`
|
- Workflow: `.github/workflows/plugin-version-check.yml`
|
||||||
- Checks if plugin files are modified.
|
- Checks if plugin files are modified.
|
||||||
- **Fails** if version number is not updated.
|
- **Fails** if version number is not updated.
|
||||||
@@ -93,15 +133,17 @@ Reference: `.github/workflows/release.yml`
|
|||||||
|
|
||||||
Before committing:
|
Before committing:
|
||||||
|
|
||||||
- [ ] Code is bilingual and functional?
|
- [ ] Code is internal i18n supported (`.py`) and fully functional?
|
||||||
- [ ] Docstrings have updated version?
|
- [ ] Docstrings have updated version?
|
||||||
- [ ] READMEs are updated and bilingual?
|
- [ ] READMEs are updated and bilingual?
|
||||||
|
- [ ] **Key Capabilities** in READMEs still cover all legacy core features + new features?
|
||||||
- [ ] `docs/` index and detail pages are updated?
|
- [ ] `docs/` index and detail pages are updated?
|
||||||
- [ ] Root `README.md` is updated?
|
- [ ] Root `README.md` is updated?
|
||||||
- [ ] All version numbers match exactly?
|
- [ ] All version numbers match exactly?
|
||||||
|
|
||||||
## 5. Git Operations (Agent Rules)
|
## 5. Git Operations (Agent Rules)
|
||||||
|
|
||||||
Strictly follow the rules defined in `.github/copilot-instructions.md` → **Git Operations (Agent Rules)** section.
|
1. **Prepare-on-Demand**: Focus on file modifications and local verification first.
|
||||||
|
2. **No Auto-Commit**: Never `git commit`, `git push`, or `create_pull_request` automatically after file updates unless the user explicitly says "commit this" or "release now".
|
||||||
|
3. **Draft Mode**: If available, use PRs as drafts first.
|
||||||
|
4. **Reference**: Strictly follow the rules defined in `.github/copilot-instructions.md` → **Git Operations (Agent Rules)** section.
|
||||||
|
|||||||
65
.all-contributorsrc
Normal file
65
.all-contributorsrc
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"README.md"
|
||||||
|
],
|
||||||
|
"imageSize": 100,
|
||||||
|
"commit": false,
|
||||||
|
"commitType": "docs",
|
||||||
|
"commitConvention": "angular",
|
||||||
|
"contributors": [
|
||||||
|
{
|
||||||
|
"login": "rbb-dev",
|
||||||
|
"name": "rbb-dev",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/37469229?v=4",
|
||||||
|
"profile": "https://github.com/rbb-dev",
|
||||||
|
"contributions": [
|
||||||
|
"ideas",
|
||||||
|
"code"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "dhaern",
|
||||||
|
"name": "Raxxoor",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/7317522?v=4",
|
||||||
|
"profile": "https://trade.xyz/?ref=BZ1RJRXWO",
|
||||||
|
"contributions": [
|
||||||
|
"bug",
|
||||||
|
"ideas"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "i-iooi-i",
|
||||||
|
"name": "ZOLO",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/1827701?v=4",
|
||||||
|
"profile": "https://github.com/i-iooi-i",
|
||||||
|
"contributions": [
|
||||||
|
"bug",
|
||||||
|
"ideas"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "nahoj",
|
||||||
|
"name": "Johan Grande",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/469017?v=4",
|
||||||
|
"profile": "https://perso.crans.org/grande/",
|
||||||
|
"contributions": [
|
||||||
|
"ideas"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"login": "abaroni",
|
||||||
|
"name": "Alessandro Baroni",
|
||||||
|
"avatar_url": "https://avatars.githubusercontent.com/u/21365486?v=4",
|
||||||
|
"profile": "https://github.com/abaroni",
|
||||||
|
"contributions": [
|
||||||
|
"ideas"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"contributorsPerLine": 7,
|
||||||
|
"skipCi": true,
|
||||||
|
"repoType": "github",
|
||||||
|
"repoHost": "https://github.com",
|
||||||
|
"projectName": "openwebui-extensions",
|
||||||
|
"projectOwner": "Fu-Jie"
|
||||||
|
}
|
||||||
2139
.github/copilot-instructions.md
vendored
2139
.github/copilot-instructions.md
vendored
File diff suppressed because it is too large
Load Diff
53
.github/workflows/community-stats.yml
vendored
53
.github/workflows/community-stats.yml
vendored
@@ -1,13 +1,15 @@
|
|||||||
# OpenWebUI 社区统计报告自动生成
|
# OpenWebUI 社区统计报告自动生成
|
||||||
# 每小时自动获取并更新社区统计数据
|
# 智能检测:只在有意义的变更时才 commit
|
||||||
|
# - 新增插件 (total_posts)
|
||||||
|
# - 插件版本变更 (version)
|
||||||
|
# - 积分增加 (total_points)
|
||||||
|
# - 粉丝增加 (followers)
|
||||||
|
|
||||||
name: Community Stats
|
name: Community Stats
|
||||||
|
|
||||||
on:
|
on:
|
||||||
# 每小时整点运行
|
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '0 * * * *'
|
- cron: '0 * * * *'
|
||||||
# 手动触发
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
@@ -32,23 +34,58 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
pip install requests python-dotenv
|
pip install requests python-dotenv
|
||||||
|
|
||||||
|
- name: Capture existing stats (before update)
|
||||||
|
id: old_stats
|
||||||
|
run: |
|
||||||
|
if [ -f docs/community-stats.json ]; then
|
||||||
|
echo "total_posts=$(jq -r '.total_posts // 0' docs/community-stats.json)" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "total_posts=0" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Generate stats report
|
- name: Generate stats report
|
||||||
env:
|
env:
|
||||||
OPENWEBUI_API_KEY: ${{ secrets.OPENWEBUI_API_KEY }}
|
OPENWEBUI_API_KEY: ${{ secrets.OPENWEBUI_API_KEY }}
|
||||||
OPENWEBUI_USER_ID: ${{ secrets.OPENWEBUI_USER_ID }}
|
OPENWEBUI_USER_ID: ${{ secrets.OPENWEBUI_USER_ID }}
|
||||||
|
GIST_TOKEN: ${{ secrets.GIST_TOKEN }}
|
||||||
|
GIST_ID: ${{ secrets.GIST_ID }}
|
||||||
run: |
|
run: |
|
||||||
python scripts/openwebui_stats.py
|
python scripts/openwebui_stats.py
|
||||||
|
|
||||||
- name: Check for changes
|
- name: Capture new stats (after update)
|
||||||
|
id: new_stats
|
||||||
|
run: |
|
||||||
|
echo "total_posts=$(jq -r '.total_posts // 0' docs/community-stats.json)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Check for significant changes
|
||||||
id: check_changes
|
id: check_changes
|
||||||
run: |
|
run: |
|
||||||
git diff --quiet docs/community-stats.md docs/community-stats.en.md README.md README_CN.md || echo "changed=true" >> $GITHUB_OUTPUT
|
OLD_POSTS="${{ steps.old_stats.outputs.total_posts }}"
|
||||||
|
NEW_POSTS="${{ steps.new_stats.outputs.total_posts }}"
|
||||||
|
|
||||||
|
SHOULD_COMMIT="false"
|
||||||
|
CHANGE_REASON=""
|
||||||
|
|
||||||
|
if [ "$NEW_POSTS" -gt "$OLD_POSTS" ]; then
|
||||||
|
SHOULD_COMMIT="true"
|
||||||
|
CHANGE_REASON="new plugin added ($OLD_POSTS -> $NEW_POSTS)"
|
||||||
|
echo "📦 New plugin detected: $OLD_POSTS -> $NEW_POSTS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "should_commit=$SHOULD_COMMIT" >> $GITHUB_OUTPUT
|
||||||
|
echo "change_reason=$CHANGE_REASON" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
if [ "$SHOULD_COMMIT" = "false" ]; then
|
||||||
|
echo "ℹ️ No significant changes detected, skipping commit"
|
||||||
|
else
|
||||||
|
echo "✅ Significant changes detected: $CHANGE_REASON"
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Commit and push changes
|
- name: Commit and push changes
|
||||||
if: steps.check_changes.outputs.changed == 'true'
|
if: steps.check_changes.outputs.should_commit == 'true'
|
||||||
run: |
|
run: |
|
||||||
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
git config --local user.name "github-actions[bot]"
|
git config --local user.name "github-actions[bot]"
|
||||||
git add docs/community-stats.md docs/community-stats.en.md docs/community-stats.json README.md README_CN.md
|
git add docs/ README.md README_CN.md
|
||||||
git commit -m "📊 更新社区统计数据 $(date +'%Y-%m-%d')"
|
git diff --staged --quiet || git commit -m "chore: update community stats - ${{ steps.check_changes.outputs.change_reason }}"
|
||||||
git push
|
git push
|
||||||
|
|||||||
68
.github/workflows/publish_new_plugin.yml
vendored
Normal file
68
.github/workflows/publish_new_plugin.yml
vendored
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
name: Publish New Plugin
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
plugin_dir:
|
||||||
|
description: 'Plugin directory (e.g., plugins/actions/deep-dive)'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
dry_run:
|
||||||
|
description: 'Dry run mode (preview only)'
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: '3.x'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install requests
|
||||||
|
|
||||||
|
- name: Validate plugin directory
|
||||||
|
run: |
|
||||||
|
if [ ! -d "${{ github.event.inputs.plugin_dir }}" ]; then
|
||||||
|
echo "❌ Error: Directory '${{ github.event.inputs.plugin_dir }}' does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "✅ Found plugin directory: ${{ github.event.inputs.plugin_dir }}"
|
||||||
|
ls -la "${{ github.event.inputs.plugin_dir }}"
|
||||||
|
|
||||||
|
- name: Publish Plugin
|
||||||
|
env:
|
||||||
|
OPENWEBUI_API_KEY: ${{ secrets.OPENWEBUI_API_KEY }}
|
||||||
|
run: |
|
||||||
|
if [ "${{ github.event.inputs.dry_run }}" = "true" ]; then
|
||||||
|
echo "🔍 Dry run mode - previewing..."
|
||||||
|
python scripts/publish_plugin.py --new "${{ github.event.inputs.plugin_dir }}" --dry-run
|
||||||
|
else
|
||||||
|
echo "🚀 Publishing plugin..."
|
||||||
|
python scripts/publish_plugin.py --new "${{ github.event.inputs.plugin_dir }}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Commit changes (if ID was added)
|
||||||
|
if: ${{ github.event.inputs.dry_run != 'true' }}
|
||||||
|
run: |
|
||||||
|
git config user.name "github-actions[bot]"
|
||||||
|
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
|
||||||
|
# Check if there are changes to commit
|
||||||
|
if git diff --quiet; then
|
||||||
|
echo "No changes to commit"
|
||||||
|
else
|
||||||
|
git add "${{ github.event.inputs.plugin_dir }}"
|
||||||
|
git commit -m "feat: add openwebui_id to ${{ github.event.inputs.plugin_dir }}"
|
||||||
|
git push
|
||||||
|
echo "✅ Committed and pushed openwebui_id changes"
|
||||||
|
fi
|
||||||
34
.github/workflows/publish_plugin.yml
vendored
Normal file
34
.github/workflows/publish_plugin.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
name: Publish Plugins to OpenWebUI Market
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- 'plugins/**/*.py'
|
||||||
|
- '!plugins/debug/**'
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: '3.x'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install requests
|
||||||
|
|
||||||
|
- name: Publish Plugins
|
||||||
|
env:
|
||||||
|
OPENWEBUI_API_KEY: ${{ secrets.OPENWEBUI_API_KEY }}
|
||||||
|
run: python scripts/publish_plugin.py
|
||||||
119
.github/workflows/release.yml
vendored
119
.github/workflows/release.yml
vendored
@@ -1,8 +1,6 @@
|
|||||||
# GitHub Actions Workflow for Plugin Release
|
# Plugin Release Workflow
|
||||||
# 插件发布工作流
|
|
||||||
#
|
#
|
||||||
# This workflow automates the release process for OpenWebUI plugins.
|
# This workflow automates the release process for OpenWebUI plugins.
|
||||||
# 此工作流自动化 OpenWebUI 插件的发布流程。
|
|
||||||
#
|
#
|
||||||
# Triggers:
|
# Triggers:
|
||||||
# - Push to main branch when plugins are modified (auto-release)
|
# - Push to main branch when plugins are modified (auto-release)
|
||||||
@@ -15,7 +13,7 @@
|
|||||||
# 3. Creates a GitHub Release with plugin files as downloadable assets
|
# 3. Creates a GitHub Release with plugin files as downloadable assets
|
||||||
# 4. Supports multiple plugin updates in a single release
|
# 4. Supports multiple plugin updates in a single release
|
||||||
|
|
||||||
name: Plugin Release / 插件发布
|
name: Plugin Release
|
||||||
|
|
||||||
on:
|
on:
|
||||||
# Auto-trigger on push to main when plugins are modified
|
# Auto-trigger on push to main when plugins are modified
|
||||||
@@ -193,10 +191,21 @@ jobs:
|
|||||||
TODAY_PREFIX="v${TODAY}-"
|
TODAY_PREFIX="v${TODAY}-"
|
||||||
|
|
||||||
# Count existing releases with today's date prefix
|
# Count existing releases with today's date prefix
|
||||||
EXISTING_COUNT=$(gh release list --limit 100 | grep -c "^${TODAY_PREFIX}" || echo "0")
|
# grep -c returns 1 if count is 0, so we use || true to avoid script failure
|
||||||
|
EXISTING_COUNT=$(gh release list --limit 100 2>/dev/null | grep -c "^${TODAY_PREFIX}" || true)
|
||||||
|
|
||||||
|
# Clean up output (handle potential newlines or fallback issues)
|
||||||
|
EXISTING_COUNT=$(echo "$EXISTING_COUNT" | tr -cd '0-9')
|
||||||
|
if [ -z "$EXISTING_COUNT" ]; then EXISTING_COUNT=0; fi
|
||||||
|
|
||||||
NEXT_NUM=$((EXISTING_COUNT + 1))
|
NEXT_NUM=$((EXISTING_COUNT + 1))
|
||||||
|
|
||||||
VERSION="${TODAY_PREFIX}${NEXT_NUM}"
|
VERSION="${TODAY_PREFIX}${NEXT_NUM}"
|
||||||
|
|
||||||
|
# Final fallback to ensure VERSION is never empty
|
||||||
|
if [ -z "$VERSION" ]; then
|
||||||
|
VERSION="v$(date +'%Y.%m.%d-%H%M%S')"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||||
echo "Release version: $VERSION"
|
echo "Release version: $VERSION"
|
||||||
@@ -235,6 +244,52 @@ jobs:
|
|||||||
echo "=== Collected Files ==="
|
echo "=== Collected Files ==="
|
||||||
find release_plugins -name "*.py" -type f | head -20
|
find release_plugins -name "*.py" -type f | head -20
|
||||||
|
|
||||||
|
- name: Update plugin icon URLs
|
||||||
|
run: |
|
||||||
|
echo "Updating icon_url in plugins to use absolute GitHub URLs..."
|
||||||
|
# Base URL for raw content using the release tag
|
||||||
|
REPO_URL="https://raw.githubusercontent.com/${{ github.repository }}/${{ steps.version.outputs.version }}"
|
||||||
|
|
||||||
|
find release_plugins -name "*.py" | while read -r file; do
|
||||||
|
# $file is like release_plugins/plugins/actions/infographic/infographic.py
|
||||||
|
# Remove release_plugins/ prefix to get the path in the repo
|
||||||
|
src_file="${file#release_plugins/}"
|
||||||
|
src_dir=$(dirname "$src_file")
|
||||||
|
base_name=$(basename "$src_file" .py)
|
||||||
|
|
||||||
|
# Check if a corresponding png exists in the source repository
|
||||||
|
png_file="${src_dir}/${base_name}.png"
|
||||||
|
|
||||||
|
if [ -f "$png_file" ]; then
|
||||||
|
echo "Found icon for $src_file: $png_file"
|
||||||
|
TARGET_ICON_URL="${REPO_URL}/${png_file}"
|
||||||
|
|
||||||
|
# Use python for safe replacement
|
||||||
|
python3 -c "
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
|
||||||
|
file_path = '$file'
|
||||||
|
icon_url = '$TARGET_ICON_URL'
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open(file_path, 'r', encoding='utf-8') as f:
|
||||||
|
content = f.read()
|
||||||
|
|
||||||
|
# Replace icon_url: ... with new url
|
||||||
|
# Matches 'icon_url: ...' and replaces it
|
||||||
|
new_content = re.sub(r'^icon_url:.*$', f'icon_url: {icon_url}', content, flags=re.MULTILINE)
|
||||||
|
|
||||||
|
with open(file_path, 'w', encoding='utf-8') as f:
|
||||||
|
f.write(new_content)
|
||||||
|
print(f'Successfully updated icon_url in {file_path}')
|
||||||
|
except Exception as e:
|
||||||
|
print(f'Error updating {file_path}: {e}', file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
- name: Debug Filenames
|
- name: Debug Filenames
|
||||||
run: |
|
run: |
|
||||||
python3 -c "import sys; print(f'Filesystem encoding: {sys.getfilesystemencoding()}')"
|
python3 -c "import sys; print(f'Filesystem encoding: {sys.getfilesystemencoding()}')"
|
||||||
@@ -267,15 +322,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Generate release notes
|
- name: Generate release notes
|
||||||
id: notes
|
id: notes
|
||||||
|
env:
|
||||||
|
VERSION: ${{ steps.version.outputs.version }}
|
||||||
|
TITLE: ${{ github.event.inputs.release_title }}
|
||||||
|
NOTES: ${{ github.event.inputs.release_notes }}
|
||||||
|
DETECTED_CHANGES: ${{ needs.check-changes.outputs.release_notes }}
|
||||||
|
COMMITS: ${{ steps.commits.outputs.commits }}
|
||||||
run: |
|
run: |
|
||||||
VERSION="${{ steps.version.outputs.version }}"
|
> release_notes.md
|
||||||
TITLE="${{ github.event.inputs.release_title }}"
|
|
||||||
NOTES="${{ github.event.inputs.release_notes }}"
|
|
||||||
DETECTED_CHANGES="${{ needs.check-changes.outputs.release_notes }}"
|
|
||||||
COMMITS="${{ steps.commits.outputs.commits }}"
|
|
||||||
|
|
||||||
echo "# ${VERSION} Release / 发布" > release_notes.md
|
|
||||||
echo "" >> release_notes.md
|
|
||||||
|
|
||||||
if [ -n "$TITLE" ]; then
|
if [ -n "$TITLE" ]; then
|
||||||
echo "## $TITLE" >> release_notes.md
|
echo "## $TITLE" >> release_notes.md
|
||||||
@@ -283,21 +337,21 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$DETECTED_CHANGES" ] && ! echo "$DETECTED_CHANGES" | grep -q "No changes detected"; then
|
if [ -n "$DETECTED_CHANGES" ] && ! echo "$DETECTED_CHANGES" | grep -q "No changes detected"; then
|
||||||
echo "## What's Changed / 更新内容" >> release_notes.md
|
echo "## What's Changed" >> release_notes.md
|
||||||
echo "" >> release_notes.md
|
echo "" >> release_notes.md
|
||||||
echo "$DETECTED_CHANGES" >> release_notes.md
|
echo "$DETECTED_CHANGES" >> release_notes.md
|
||||||
echo "" >> release_notes.md
|
echo "" >> release_notes.md
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$COMMITS" ]; then
|
if [ -n "$COMMITS" ]; then
|
||||||
echo "## Commits / 提交记录" >> release_notes.md
|
echo "## Commits" >> release_notes.md
|
||||||
echo "" >> release_notes.md
|
echo "" >> release_notes.md
|
||||||
echo "$COMMITS" >> release_notes.md
|
echo "$COMMITS" >> release_notes.md
|
||||||
echo "" >> release_notes.md
|
echo "" >> release_notes.md
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$NOTES" ]; then
|
if [ -n "$NOTES" ]; then
|
||||||
echo "## Additional Notes / 附加说明" >> release_notes.md
|
echo "## Additional Notes" >> release_notes.md
|
||||||
echo "" >> release_notes.md
|
echo "" >> release_notes.md
|
||||||
echo "$NOTES" >> release_notes.md
|
echo "$NOTES" >> release_notes.md
|
||||||
echo "" >> release_notes.md
|
echo "" >> release_notes.md
|
||||||
@@ -307,11 +361,11 @@ jobs:
|
|||||||
|
|
||||||
cat >> release_notes.md << 'EOF'
|
cat >> release_notes.md << 'EOF'
|
||||||
|
|
||||||
## Download / 下载
|
## Download
|
||||||
|
|
||||||
📦 **Download the updated plugin files below** / 请在下方下载更新的插件文件
|
📦 **Download the updated plugin files below**
|
||||||
|
|
||||||
### Installation / 安装
|
### Installation
|
||||||
|
|
||||||
#### From OpenWebUI Community
|
#### From OpenWebUI Community
|
||||||
1. Open OpenWebUI Admin Panel
|
1. Open OpenWebUI Admin Panel
|
||||||
@@ -319,7 +373,7 @@ jobs:
|
|||||||
3. Search for the plugin name
|
3. Search for the plugin name
|
||||||
4. Click Install
|
4. Click Install
|
||||||
|
|
||||||
#### Manual Installation / 手动安装
|
#### Manual Installation
|
||||||
1. Download the plugin file (`.py`) from the assets below
|
1. Download the plugin file (`.py`) from the assets below
|
||||||
2. Open OpenWebUI Admin Panel → Functions
|
2. Open OpenWebUI Admin Panel → Functions
|
||||||
3. Click "Create Function" → Import
|
3. Click "Create Function" → Import
|
||||||
@@ -327,20 +381,41 @@ jobs:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
📚 [Documentation / 文档](https://fu-jie.github.io/awesome-openwebui/)
|
📚 [Documentation](https://fu-jie.github.io/openwebui-extensions/)
|
||||||
🐛 [Report Issues / 报告问题](https://github.com/Fu-Jie/awesome-openwebui/issues)
|
🐛 [Report Issues](https://github.com/Fu-Jie/openwebui-extensions/issues)
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
echo "=== Release Notes ==="
|
echo "=== Release Notes ==="
|
||||||
cat release_notes.md
|
cat release_notes.md
|
||||||
|
|
||||||
|
- name: Create Git Tag
|
||||||
|
run: |
|
||||||
|
VERSION="${{ steps.version.outputs.version }}"
|
||||||
|
|
||||||
|
if [ -z "$VERSION" ]; then
|
||||||
|
echo "Error: Version is empty!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! git rev-parse "$VERSION" >/dev/null 2>&1; then
|
||||||
|
echo "Creating tag $VERSION"
|
||||||
|
git tag "$VERSION"
|
||||||
|
git push origin "$VERSION"
|
||||||
|
else
|
||||||
|
echo "Tag $VERSION already exists"
|
||||||
|
fi
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Create GitHub Release
|
- name: Create GitHub Release
|
||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
tag_name: ${{ steps.version.outputs.version }}
|
tag_name: ${{ steps.version.outputs.version }}
|
||||||
|
target_commitish: ${{ github.sha }}
|
||||||
name: ${{ github.event.inputs.release_title || steps.version.outputs.version }}
|
name: ${{ github.event.inputs.release_title || steps.version.outputs.version }}
|
||||||
body_path: release_notes.md
|
body_path: release_notes.md
|
||||||
prerelease: ${{ github.event.inputs.prerelease || false }}
|
prerelease: ${{ github.event.inputs.prerelease || false }}
|
||||||
|
make_latest: true
|
||||||
files: |
|
files: |
|
||||||
plugin_versions.json
|
plugin_versions.json
|
||||||
env:
|
env:
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -139,3 +139,4 @@ logs/
|
|||||||
|
|
||||||
# OpenWebUI specific
|
# OpenWebUI specific
|
||||||
# Add any specific ignores for OpenWebUI plugins if needed
|
# Add any specific ignores for OpenWebUI plugins if needed
|
||||||
|
.git-worktrees/
|
||||||
|
|||||||
@@ -1,87 +1,16 @@
|
|||||||
# 贡献指南 (Contributing Guide)
|
# Contributing Guide
|
||||||
|
|
||||||
感谢你对 **OpenWebUI Extras** 感兴趣!我们非常欢迎社区贡献更多的插件、提示词和创意。
|
Thank you for your interest in **OpenWebUI Extensions**!
|
||||||
|
|
||||||
## 🤝 如何贡献
|
## 🚀 How to Contribute
|
||||||
|
|
||||||
### 1. 分享提示词 (Prompts)
|
1. **Fork** this repository.
|
||||||
|
2. **Add/Modify** the plugin file in the `plugins/` directory.
|
||||||
|
3. **Submit PR**: We will review and merge it.
|
||||||
|
|
||||||
如果你有一个好用的提示词:
|
## 💡 Important
|
||||||
1. 在 `prompts/` 目录下找到合适的分类(如 `coding/`, `writing/`)。如果没有合适的,可以新建一个文件夹。
|
|
||||||
2. 创建一个新的 `.md` 或 `.json` 文件。
|
|
||||||
3. 提交 Pull Request (PR)。
|
|
||||||
|
|
||||||
### 2. 开发插件 (Plugins)
|
- Ensure your plugin includes complete metadata (title, author, version, description).
|
||||||
|
- If updating an existing plugin, please **increment the version number** (e.g., `0.1.0` -> `0.1.1`) to trigger the auto-update.
|
||||||
|
|
||||||
如果你开发了一个新的 OpenWebUI 插件 (Function/Tool):
|
Thank you! 🚀
|
||||||
1. 确保你的插件代码包含完整的元数据(Frontmatter):
|
|
||||||
```python
|
|
||||||
"""
|
|
||||||
title: 插件名称
|
|
||||||
author: 你的名字
|
|
||||||
version: 0.1.0
|
|
||||||
description: 简短描述插件的功能
|
|
||||||
"""
|
|
||||||
```
|
|
||||||
2. 将插件文件放入 `plugins/` 目录下的合适位置:
|
|
||||||
- `plugins/actions/`: 用于添加按钮或修改消息的 Action 插件。
|
|
||||||
- `plugins/filters/`: 用于拦截请求或响应的 Filter 插件。
|
|
||||||
- `plugins/pipes/`: 用于自定义模型或 API 的 Pipe 插件。
|
|
||||||
- `plugins/tools/`: 用于 LLM 调用的 Tool 插件。
|
|
||||||
3. 建议在 `docs/` 下添加一个简单的使用说明。
|
|
||||||
|
|
||||||
### 3. 改进文档
|
|
||||||
|
|
||||||
如果你发现文档有错误或可以改进的地方,直接提交 PR 即可。
|
|
||||||
|
|
||||||
## 🛠️ 开发规范
|
|
||||||
|
|
||||||
- **代码风格**:Python 代码请遵循 PEP 8 规范。
|
|
||||||
- **注释**:关键逻辑请添加注释,方便他人理解。
|
|
||||||
- **测试**:提交前请在本地 OpenWebUI 环境中测试通过。
|
|
||||||
|
|
||||||
## 📝 提交 PR
|
|
||||||
|
|
||||||
1. Fork 本仓库。
|
|
||||||
2. 创建一个新的分支 (`git checkout -b feature/AmazingFeature`)。
|
|
||||||
3. 提交你的修改 (`git commit -m 'Add some AmazingFeature'`)。
|
|
||||||
4. 推送到分支 (`git push origin feature/AmazingFeature`)。
|
|
||||||
5. 开启一个 Pull Request。
|
|
||||||
|
|
||||||
## 📦 版本更新与发布
|
|
||||||
|
|
||||||
当你更新插件时,请遵循以下流程:
|
|
||||||
|
|
||||||
### 1. 更新版本号
|
|
||||||
|
|
||||||
在插件文件的 docstring 中更新版本号(遵循[语义化版本](https://semver.org/lang/zh-CN/)):
|
|
||||||
|
|
||||||
```python
|
|
||||||
"""
|
|
||||||
title: 我的插件
|
|
||||||
version: 0.2.0 # 更新此处
|
|
||||||
...
|
|
||||||
"""
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. 更新更新日志
|
|
||||||
|
|
||||||
在 `CHANGELOG.md` 的 `[Unreleased]` 部分添加你的更改:
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
### Added / 新增
|
|
||||||
- 新功能描述
|
|
||||||
|
|
||||||
### Fixed / 修复
|
|
||||||
- Bug 修复描述
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. 发布流程
|
|
||||||
|
|
||||||
维护者会通过以下方式发布新版本:
|
|
||||||
- 手动触发 GitHub Actions 中的 "Plugin Release" 工作流
|
|
||||||
- 或创建版本标签 (`v*`)
|
|
||||||
|
|
||||||
详细说明请参阅 [发布工作流文档](docs/release-workflow.zh.md)。
|
|
||||||
|
|
||||||
再次感谢你的贡献!🚀
|
|
||||||
|
|||||||
16
CONTRIBUTING_CN.md
Normal file
16
CONTRIBUTING_CN.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# 贡献指南
|
||||||
|
|
||||||
|
感谢你对 **OpenWebUI Extensions** 感兴趣!
|
||||||
|
|
||||||
|
## 🚀 贡献流程
|
||||||
|
|
||||||
|
1. **Fork** 本仓库。
|
||||||
|
2. **修改/添加** `plugins/` 目录下的插件文件。
|
||||||
|
3. **提交 PR**: 我们会尽快审核并合并。
|
||||||
|
|
||||||
|
## 💡 注意事项
|
||||||
|
|
||||||
|
- 请确保插件包含完整的元数据(title, author, version, description)。
|
||||||
|
- 如果是更新已有插件,请记得**增加版本号**(如 `0.1.0` -> `0.1.1`),这样系统会自动同步更新。
|
||||||
|
|
||||||
|
再次感谢你的贡献!🚀
|
||||||
155
GEMINI.md
Normal file
155
GEMINI.md
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
# OpenWebUI Extensions — Gemini CLI Project Context
|
||||||
|
|
||||||
|
> This file is loaded automatically by Gemini CLI as project-level instructions.
|
||||||
|
> Full engineering spec: `.github/copilot-instructions.md`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Project Overview
|
||||||
|
|
||||||
|
**openwebui-extensions** is a collection of OpenWebUI plugins authored by Fu-Jie.
|
||||||
|
|
||||||
|
Repository: `https://github.com/Fu-Jie/openwebui-extensions`
|
||||||
|
|
||||||
|
Plugin types: `actions` / `filters` / `pipes` / `pipelines` / `tools`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Non-Negotiable Rules
|
||||||
|
|
||||||
|
1. **No auto-commit.** Never run `git commit`, `git push`, or `gh pr create` unless the user says "发布" / "release" / "commit it". Default output = local file changes only.
|
||||||
|
2. **No silent failures.** All errors must surface via `__event_emitter__` notification or backend `logging`.
|
||||||
|
3. **No hardcoded model IDs.** Default to the current conversation model; let `Valves` override.
|
||||||
|
4. **Chinese responses.** Reply in Simplified Chinese for all planning, explanations, and status summaries. English only for code, commit messages, and docstrings.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Plugin File Contract
|
||||||
|
|
||||||
|
Every plugin MUST be a **single-file i18n** Python module:
|
||||||
|
|
||||||
|
```text
|
||||||
|
plugins/{type}/{name}/{name}.py ← single source file, built-in i18n
|
||||||
|
plugins/{type}/{name}/README.md ← English docs
|
||||||
|
plugins/{type}/{name}/README_CN.md ← Chinese docs
|
||||||
|
```
|
||||||
|
|
||||||
|
### Docstring (required fields)
|
||||||
|
|
||||||
|
```python
|
||||||
|
"""
|
||||||
|
title: Plugin Display Name
|
||||||
|
author: Fu-Jie
|
||||||
|
author_url: https://github.com/Fu-Jie/openwebui-extensions
|
||||||
|
funding_url: https://github.com/open-webui
|
||||||
|
version: 0.1.0
|
||||||
|
description: One-line description.
|
||||||
|
"""
|
||||||
|
```
|
||||||
|
|
||||||
|
### Required patterns
|
||||||
|
|
||||||
|
- `Valves(BaseModel)` with `UPPER_SNAKE_CASE` fields
|
||||||
|
- `_get_user_context(__user__)` — never access `__user__` directly
|
||||||
|
- `_get_chat_context(body, __metadata__)` — never infer IDs ad-hoc
|
||||||
|
- `_emit_status(emitter, msg, done)` / `_emit_notification(emitter, content, type)`
|
||||||
|
- Async I/O only — wrap sync calls with `asyncio.to_thread`
|
||||||
|
- `logging` for backend logs — no bare `print()` in production
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Antigravity Development Rules
|
||||||
|
|
||||||
|
When the user invokes antigravity mode (high-speed iteration), enforce these safeguards automatically:
|
||||||
|
|
||||||
|
| Rule | Detail |
|
||||||
|
|------|--------|
|
||||||
|
| Small reversible edits | One logical change per file per operation |
|
||||||
|
| Timeout guards | `asyncio.wait_for(..., timeout=2.0)` on all `__event_call__` JS executions |
|
||||||
|
| Path sandbox | Verify every workspace path stays inside the repo root before read/write |
|
||||||
|
| Fallback chains | API upload → DB + local copy; never a single point of failure |
|
||||||
|
| Progressive status | `status(done=False)` at start, `status(done=True)` on end, `notification(error)` on failure |
|
||||||
|
| Validate before emit | Check `emitter is not None` before every `await emitter(...)` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## File Creation & Delivery Protocol (3-Step)
|
||||||
|
|
||||||
|
1. `local write` — create artifact inside workspace scope
|
||||||
|
2. `publish_file_from_workspace(filename='...')` — migrate to OpenWebUI storage (S3-compatible)
|
||||||
|
3. Return `/api/v1/files/{id}/content` download link in Markdown
|
||||||
|
|
||||||
|
Set `skip_rag=true` metadata on generated downloadable artifacts.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Copilot SDK Tool Definition (critical)
|
||||||
|
|
||||||
|
```python
|
||||||
|
from pydantic import BaseModel, Field
|
||||||
|
from copilot import define_tool
|
||||||
|
|
||||||
|
class MyToolParams(BaseModel):
|
||||||
|
query: str = Field(..., description="Search query")
|
||||||
|
|
||||||
|
my_tool = define_tool(
|
||||||
|
name="my_tool",
|
||||||
|
description="...",
|
||||||
|
params_type=MyToolParams, # REQUIRED — prevents empty schema hallucination
|
||||||
|
)(async_impl_fn)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Streaming Output Format (OpenWebUI 0.8.x)
|
||||||
|
|
||||||
|
- Reasoning: `<think>\n...\n</think>\n` — close BEFORE normal content or tool cards
|
||||||
|
- Tool cards: `<details type="tool_calls" id="..." name="..." arguments=""..."" result=""..."" done="true">\n<summary>Tool Executed</summary>\n</details>\n\n`
|
||||||
|
- Escape ALL `"` inside `arguments`/`result` attributes as `"`
|
||||||
|
- Status events via `__event_emitter__` — do NOT pollute the content stream with debug text
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Documentation Sync (when changing a plugin)
|
||||||
|
|
||||||
|
Must update ALL of these or the PR check fails:
|
||||||
|
|
||||||
|
1. `plugins/{type}/{name}/{name}.py` — version in docstring
|
||||||
|
2. `plugins/{type}/{name}/README.md` — version, What's New
|
||||||
|
3. `plugins/{type}/{name}/README_CN.md` — same
|
||||||
|
4. `docs/plugins/{type}/{name}.md` — mirror README
|
||||||
|
5. `docs/plugins/{type}/{name}.zh.md` — mirror README_CN
|
||||||
|
6. `docs/plugins/{type}/index.md` — version badge
|
||||||
|
7. `docs/plugins/{type}/index.zh.md` — version badge
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## i18n & Language Standards
|
||||||
|
|
||||||
|
1. **Alignment**: Keep the number of supported languages in `TRANSLATIONS` consistent with major plugins (e.g., `smart-mind-map`).
|
||||||
|
2. **Supported Languages**: en-US, zh-CN, zh-HK, zh-TW, ko-KR, ja-JP, fr-FR, de-DE, es-ES, it-IT, vi-VN, id-ID.
|
||||||
|
3. **Fallback Map**: Must include variant redirects (e.g., `es-MX` -> `es-ES`, `fr-CA` -> `fr-FR`).
|
||||||
|
4. **Tooltips**: All `description` fields in `Valves` must be **English only** to maintain clean UI.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Commit Message Format
|
||||||
|
|
||||||
|
```text
|
||||||
|
type(scope): brief English description
|
||||||
|
|
||||||
|
- Key change 1
|
||||||
|
- Key change 2
|
||||||
|
```
|
||||||
|
|
||||||
|
Types: `feat` / `fix` / `docs` / `refactor` / `chore`
|
||||||
|
Scope: plugin folder name (e.g., `github-copilot-sdk`)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Full Reference
|
||||||
|
|
||||||
|
`.github/copilot-instructions.md` — complete engineering specification (1000+ lines)
|
||||||
|
`.agent/workflows/plugin-development.md` — step-by-step development workflow
|
||||||
|
`.agent/rules/antigravity.md` — antigravity mode detailed rules
|
||||||
|
`docs/development/copilot-engineering-plan.md` — design baseline
|
||||||
149
README.md
149
README.md
@@ -1,4 +1,7 @@
|
|||||||
# OpenWebUI Extras
|
# OpenWebUI Extensions
|
||||||
|
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
||||||
|
[](#contributors-)
|
||||||
|
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
||||||
|
|
||||||
English | [中文](./README_CN.md)
|
English | [中文](./README_CN.md)
|
||||||
|
|
||||||
@@ -6,62 +9,123 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu
|
|||||||
|
|
||||||
<!-- STATS_START -->
|
<!-- STATS_START -->
|
||||||
## 📊 Community Stats
|
## 📊 Community Stats
|
||||||
|
>
|
||||||
> 🕐 Auto-updated: 2026-01-06 21:19
|
> 
|
||||||
|
|
||||||
| 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions |
|
| 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions |
|
||||||
|:---:|:---:|:---:|:---:|
|
| :---: | :---: | :---: | :---: |
|
||||||
| [Fu-Jie](https://openwebui.com/u/Fu-Jie) | **43** | **62** | **17** |
|
| [Fu-Jie](https://openwebui.com/u/Fu-Jie) |  |  |  |
|
||||||
|
|
||||||
| 📝 Posts | ⬇️ Downloads | 👁️ Views | 👍 Upvotes | 💾 Saves |
|
| 📝 Posts | ⬇️ Downloads | 👁️ Views | 👍 Upvotes | 💾 Saves |
|
||||||
|:---:|:---:|:---:|:---:|:---:|
|
| :---: | :---: | :---: | :---: | :---: |
|
||||||
| **11** | **794** | **8481** | **54** | **48** |
|
|  |  |  |  |  |
|
||||||
|
|
||||||
### 🔥 Top 5 Popular Plugins
|
### 🔥 Top 6 Popular Plugins
|
||||||
|
|
||||||
| Rank | Plugin | Downloads | Views |
|
| Rank | Plugin | Version | Downloads | Views | 📅 Updated |
|
||||||
|:---:|------|:---:|:---:|
|
| :---: | :--- | :---: | :---: | :---: | :---: |
|
||||||
| 🥇 | [Turn Any Text into Beautiful Mind Maps](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 240 | 2133 |
|
| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) |  |  |  |  |
|
||||||
| 🥈 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 171 | 459 |
|
| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) |  |  |  |  |
|
||||||
| 🥉 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 112 | 1236 |
|
| 🥉 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) |  |  |  |  |
|
||||||
| 4️⃣ | [Flash Card ](https://openwebui.com/posts/flash_card_65a2ea8f) | 76 | 1421 |
|
| 4️⃣ | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) |  |  |  |  |
|
||||||
| 5️⃣ | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 65 | 909 |
|
| 5️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) |  |  |  |  |
|
||||||
|
| 6️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) |  |  |  |  |
|
||||||
|
|
||||||
*See full stats in [Community Stats Report](./docs/community-stats.md)*
|
### 🛠️ Actively Developed Projects
|
||||||
|
|
||||||
|
| Status | Plugin | Version | Downloads | Views | 📅 Updated |
|
||||||
|
| :---: | :--- | :---: | :---: | :---: | :---: |
|
||||||
|
| 🆕 | [GitHub Copilot SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) |  |  |  |  |
|
||||||
|
|
||||||
|
### 📈 Total Downloads Trend
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
*See full stats and charts in [Community Stats Report](./docs/community-stats.md)*
|
||||||
<!-- STATS_END -->
|
<!-- STATS_END -->
|
||||||
|
|
||||||
|
## 🌟 Star Features
|
||||||
|
|
||||||
|
### 1. [GitHub Copilot SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) [](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4)
|
||||||
|
|
||||||
|
**The ultimate Agent for OpenWebUI.** Supports native code execution (Python/Pandas), raw file analysis, and interactive artifacts.
|
||||||
|
> [!TIP]
|
||||||
|
> **No GitHub Copilot subscription required!** Supports **BYOK (Bring Your Own Key)** mode using your own OpenAI/Anthropic API keys.
|
||||||
|
|
||||||
|
#### 🌟 Featured Real-World Cases
|
||||||
|
|
||||||
|
- **[GitHub Star Forecasting](./docs/plugins/pipes/star-prediction-example.md)**: Automatically parsing CSV data, writing analysis scripts, and generating interactive growth dashboards.
|
||||||
|
- **[Video Optimization](./docs/plugins/pipes/video-processing-example.md)**: Direct control of system-level tools (FFmpeg) to accelerate and compress media with professional color optimization.
|
||||||
|
|
||||||
|
### 2. [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) [](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a)
|
||||||
|
|
||||||
|
**Experience interactive thinking.** Seamlessly transforms complex chat sessions into structured, clickable mind maps for better visual modeling and rapid idea extraction.
|
||||||
|
|
||||||
|
### 3. [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) [](https://openwebui.com/posts/smart_infographic_ad6f0c7f)
|
||||||
|
|
||||||
|
**Professional data storytelling.** Converts raw information into sleek, boardroom-ready infographics powered by AntV, perfect for summarizing long-form content instantly.
|
||||||
|
|
||||||
|
### 4. [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) [](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315)
|
||||||
|
|
||||||
|
**High-fidelity reporting.** Export conversation history into professionally formatted Word documents with preserved headers, code blocks, and math formulas.
|
||||||
|
|
||||||
|
### 5. [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) [](https://openwebui.com/posts/async_context_compression_b1655bc8)
|
||||||
|
|
||||||
|
**Maximize your context window.** Intelligently compresses chat history using LLM logic to save tokens and costs while maintaining a high-quality reasoning chain.
|
||||||
|
|
||||||
## 📦 Project Contents
|
## 📦 Project Contents
|
||||||
|
|
||||||
### 🧩 Plugins
|
<!-- markdownlint-disable MD033 -->
|
||||||
|
<details>
|
||||||
|
<summary><b>🧩 Plugins (Actions, Filters, Pipes, Pipelines)</b></summary>
|
||||||
|
|
||||||
Located in the `plugins/` directory, containing Python-based enhancements:
|
Located in the `plugins/` directory, containing Python-based enhancements:
|
||||||
|
|
||||||
#### Actions
|
### Actions
|
||||||
|
|
||||||
- **Smart Mind Map** (`smart-mind-map`): Generates interactive mind maps from text.
|
- **Smart Mind Map** (`smart-mind-map`): Generates interactive mind maps from text.
|
||||||
- **Smart Infographic** (`infographic`): Transforms text into professional infographics using AntV.
|
- **Smart Infographic** (`infographic`): Transforms text into professional infographics using AntV.
|
||||||
- **Knowledge Card** (`knowledge-card`): Creates beautiful flashcards for learning.
|
- **Flash Card** (`flash-card`): Quickly generates beautiful flashcards for learning.
|
||||||
|
- **Deep Dive** (`deep-dive`): A comprehensive thinking lens that dives deep into any content.
|
||||||
- **Export to Excel** (`export_to_excel`): Exports chat history to Excel files.
|
- **Export to Excel** (`export_to_excel`): Exports chat history to Excel files.
|
||||||
- **Export to Word** (`export_to_docx`): Exports chat history to Word documents.
|
- **Export to Word** (`export_to_docx`): Exports chat history to Word documents.
|
||||||
- **Summary** (`summary`): Text summarization tool.
|
|
||||||
|
|
||||||
#### Filters
|
### Filters
|
||||||
|
|
||||||
|
- **GitHub Copilot SDK Files Filter** (`github_copilot_sdk_files_filter`): Essential companion for Copilot SDK. Bypasses RAG to ensure full file accessibility for Agents.
|
||||||
|
- **Web Gemini Multimodal Filter** (`web_gemini_multimodel_filter`): Adds multimodal capabilities (PDF, Video, Office) to any model with intelligent routing.
|
||||||
- **Async Context Compression** (`async-context-compression`): Optimizes token usage via context compression.
|
- **Async Context Compression** (`async-context-compression`): Optimizes token usage via context compression.
|
||||||
- **Context Enhancement** (`context_enhancement_filter`): Enhances chat context.
|
- **Context Enhancement** (`context_enhancement_filter`): Enhances chat context.
|
||||||
- **Gemini Manifold Companion** (`gemini_manifold_companion`): Companion filter for Gemini Manifold.
|
- **Folder Memory** (`folder-memory`): Automatically extracts project rules from conversations and injects them into the folder's system prompt.
|
||||||
|
- **Markdown Normalizer** (`markdown_normalizer`): Fixes common Markdown formatting issues in LLM outputs.
|
||||||
|
|
||||||
|
### Pipes
|
||||||
|
|
||||||
#### Pipes
|
- **GitHub Copilot SDK** (`github-copilot-sdk`): Official GitHub Copilot SDK integration. Supports dynamic models (GPT-4o, Claude 3.5, o1), multi-turn conversation, streaming, and infinite sessions.
|
||||||
- **Gemini Manifold** (`gemini_mainfold`): Pipeline for Gemini model integration.
|
|
||||||
|
### Pipelines
|
||||||
|
|
||||||
#### Pipelines
|
|
||||||
- **MoE Prompt Refiner** (`moe_prompt_refiner`): Refines prompts for Mixture of Experts (MoE) summary requests to generate high-quality comprehensive reports.
|
- **MoE Prompt Refiner** (`moe_prompt_refiner`): Refines prompts for Mixture of Experts (MoE) summary requests to generate high-quality comprehensive reports.
|
||||||
|
|
||||||
### 🎯 Prompts
|
</details>
|
||||||
|
<!-- markdownlint-enable MD033 -->
|
||||||
|
|
||||||
Located in the `prompts/` directory, containing fine-tuned System Prompts:
|
<!-- markdownlint-disable MD033 -->
|
||||||
|
<details>
|
||||||
|
<summary><b>🎯 Prompts (System Prompts for various roles)</b></summary>
|
||||||
|
|
||||||
- **Coding**: Programming assistance prompts.
|
System Prompts are managed in the `docs/prompts/` directory:
|
||||||
- **Marketing**: Marketing and copywriting prompts.
|
|
||||||
|
- **[Prompt Library](./docs/prompts/library.md)**: A curated collection of fine-tuned prompts for Coding, Marketing, and Analysis.
|
||||||
|
|
||||||
|
</details>
|
||||||
|
<!-- markdownlint-enable MD033 -->
|
||||||
|
|
||||||
|
## 🛠️ Extensions
|
||||||
|
|
||||||
|
Standalone frontend extensions to supercharge your Open WebUI:
|
||||||
|
|
||||||
|
- **[Open WebUI Prompt Plus](https://github.com/Fu-Jie/open-webui-prompt-plus)**: An all-in-one prompt management suite featuring AI-powered prompt generation, spotlight-style quick search, and advanced category organization.
|
||||||
|
|
||||||
## 📖 Documentation
|
## 📖 Documentation
|
||||||
|
|
||||||
@@ -98,8 +162,35 @@ This project is a collection of resources and does not require a Python environm
|
|||||||
### Contributing
|
### Contributing
|
||||||
|
|
||||||
If you have great prompts or plugins to share:
|
If you have great prompts or plugins to share:
|
||||||
|
|
||||||
1. Fork this repository.
|
1. Fork this repository.
|
||||||
2. Add your files to the appropriate `prompts/` or `plugins/` directory.
|
2. Add your files to the appropriate `prompts/` or `plugins/` directory.
|
||||||
3. Submit a Pull Request.
|
3. Submit a Pull Request.
|
||||||
|
|
||||||
[Contributing](./CONTRIBUTING.md)
|
[Contributing](./CONTRIBUTING.md)
|
||||||
|
|
||||||
|
## Contributors ✨
|
||||||
|
|
||||||
|
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
||||||
|
|
||||||
|
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
||||||
|
<!-- prettier-ignore-start -->
|
||||||
|
<!-- markdownlint-disable -->
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/rbb-dev"><img src="https://avatars.githubusercontent.com/u/37469229?v=4?s=100" width="100px;" alt="rbb-dev"/><br /><sub><b>rbb-dev</b></sub></a><br /><a href="#ideas-rbb-dev" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/Fu-Jie/openwebui-extensions/commits?author=rbb-dev" title="Code">💻</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://trade.xyz/?ref=BZ1RJRXWO"><img src="https://avatars.githubusercontent.com/u/7317522?v=4?s=100" width="100px;" alt="Raxxoor"/><br /><sub><b>Raxxoor</b></sub></a><br /><a href="https://github.com/Fu-Jie/openwebui-extensions/issues?q=author%3Adhaern" title="Bug reports">🐛</a> <a href="#ideas-dhaern" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/i-iooi-i"><img src="https://avatars.githubusercontent.com/u/1827701?v=4?s=100" width="100px;" alt="ZOLO"/><br /><sub><b>ZOLO</b></sub></a><br /><a href="https://github.com/Fu-Jie/openwebui-extensions/issues?q=author%3Ai-iooi-i" title="Bug reports">🐛</a> <a href="#ideas-i-iooi-i" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://perso.crans.org/grande/"><img src="https://avatars.githubusercontent.com/u/469017?v=4?s=100" width="100px;" alt="Johan Grande"/><br /><sub><b>Johan Grande</b></sub></a><br /><a href="#ideas-nahoj" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||||
|
<td align="center" valign="top" width="14.28%"><a href="https://github.com/abaroni"><img src="https://avatars.githubusercontent.com/u/21365486?v=4?s=100" width="100px;" alt="Alessandro Baroni"/><br /><sub><b>Alessandro Baroni</b></sub></a><br /><a href="#ideas-abaroni" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<!-- markdownlint-restore -->
|
||||||
|
<!-- prettier-ignore-end -->
|
||||||
|
|
||||||
|
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||||
|
|
||||||
|
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
|
||||||
|
|||||||
156
README_CN.md
156
README_CN.md
@@ -1,4 +1,4 @@
|
|||||||
# OpenWebUI Extras
|
# OpenWebUI Extensions
|
||||||
|
|
||||||
[English](./README.md) | 中文
|
[English](./README.md) | 中文
|
||||||
|
|
||||||
@@ -6,66 +6,130 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词
|
|||||||
|
|
||||||
<!-- STATS_START -->
|
<!-- STATS_START -->
|
||||||
## 📊 社区统计
|
## 📊 社区统计
|
||||||
|
>
|
||||||
> 🕐 自动更新于 2026-01-06 21:19
|
> 
|
||||||
|
|
||||||
| 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 |
|
| 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 |
|
||||||
|:---:|:---:|:---:|:---:|
|
| :---: | :---: | :---: | :---: |
|
||||||
| [Fu-Jie](https://openwebui.com/u/Fu-Jie) | **43** | **62** | **17** |
|
| [Fu-Jie](https://openwebui.com/u/Fu-Jie) |  |  |  |
|
||||||
|
|
||||||
| 📝 发布 | ⬇️ 下载 | 👁️ 浏览 | 👍 点赞 | 💾 收藏 |
|
| 📝 发布 | ⬇️ 下载 | 👁️ 浏览 | 👍 点赞 | 💾 收藏 |
|
||||||
|:---:|:---:|:---:|:---:|:---:|
|
| :---: | :---: | :---: | :---: | :---: |
|
||||||
| **11** | **794** | **8481** | **54** | **48** |
|
|  |  |  |  |  |
|
||||||
|
|
||||||
### 🔥 热门插件 Top 5
|
### 🔥 热门插件 Top 6
|
||||||
|
|
||||||
| 排名 | 插件 | 下载 | 浏览 |
|
| 排名 | 插件 | 版本 | 下载 | 浏览 | 📅 更新 |
|
||||||
|:---:|------|:---:|:---:|
|
| :---: | :--- | :---: | :---: | :---: | :---: |
|
||||||
| 🥇 | [Turn Any Text into Beautiful Mind Maps](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | 240 | 2133 |
|
| 🥇 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) |  |  |  |  |
|
||||||
| 🥈 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | 171 | 459 |
|
| 🥈 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) |  |  |  |  |
|
||||||
| 🥉 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | 112 | 1236 |
|
| 🥉 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) |  |  |  |  |
|
||||||
| 4️⃣ | [Flash Card ](https://openwebui.com/posts/flash_card_65a2ea8f) | 76 | 1421 |
|
| 4️⃣ | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) |  |  |  |  |
|
||||||
| 5️⃣ | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | 65 | 909 |
|
| 5️⃣ | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) |  |  |  |  |
|
||||||
|
| 6️⃣ | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) |  |  |  |  |
|
||||||
|
|
||||||
*完整统计请查看 [社区统计报告](./docs/community-stats.md)*
|
### 🛠️ 积极开发的项目
|
||||||
|
|
||||||
|
| 状态 | 插件 | 版本 | 下载 | 浏览 | 📅 更新 |
|
||||||
|
| :---: | :--- | :---: | :---: | :---: | :---: |
|
||||||
|
| 🆕 | [GitHub Copilot SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) |  |  |  |  |
|
||||||
|
|
||||||
|
### 📈 总下载量累计趋势
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
*完整统计与趋势图请查看 [社区统计报告](./docs/community-stats.zh.md)*
|
||||||
<!-- STATS_END -->
|
<!-- STATS_END -->
|
||||||
|
|
||||||
|
## 🌟 精选功能
|
||||||
|
|
||||||
|
### 1. [GitHub Copilot SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) [](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4)
|
||||||
|
|
||||||
|
**OpenWebUI 终极 Agent 增强。** 支持原生代码执行(Python/Pandas)、原始文件直接分析以及交互式 Artifacts。
|
||||||
|
> [!TIP]
|
||||||
|
> **无需 GitHub Copilot 订阅!** 支持 **BYOK (Bring Your Own Key)** 模式,使用你自己的 OpenAI/Anthropic API Key。
|
||||||
|
|
||||||
|
#### 🌟 核心实战案例
|
||||||
|
|
||||||
|
- **[GitHub Star 增长预测](./docs/plugins/pipes/star-prediction-example.zh.md)**:自动解析 CSV 数据,编写 Python 分析脚本并生成动态增长看板。
|
||||||
|
- **[视频高质量转换与压缩](./docs/plugins/pipes/video-processing-example.zh.md)**:直接调用系统级 FFmpeg 工具,实现录屏的加速、缩放及双阶段色彩优化。
|
||||||
|
|
||||||
|
### 2. [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) [](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a)
|
||||||
|
|
||||||
|
**体验浸入式思维。** 将复杂的对话瞬间转化为结构化、可点击的交互式思维导图,助力知识建模与逻辑提取。
|
||||||
|
|
||||||
|
### 3. [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) [](https://openwebui.com/posts/smart_infographic_ad6f0c7f)
|
||||||
|
|
||||||
|
**专业数据叙事。** 将零散信息转化为精美的信息图表(由 AntV 驱动),一键生成学术/汇报级的可视化总结。
|
||||||
|
|
||||||
|
### 4. [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) [](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315)
|
||||||
|
|
||||||
|
**高保真文档导出。** 将对话历史导出为格式完美的 Word 文档,完美保留标题、代码块、LaTeX 公式及 Mermaid 流程图。
|
||||||
|
|
||||||
|
### 5. [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) [](https://openwebui.com/posts/async_context_compression_b1655bc8)
|
||||||
|
|
||||||
|
**挑战 Token 極限。** 采用多专家异步压缩逻辑,在保持高吞吐量推理链的同时,大幅降低 Token 消耗。
|
||||||
|
|
||||||
## 📦 项目内容
|
## 📦 项目内容
|
||||||
|
|
||||||
### 🧩 插件 (Plugins)
|
<!-- markdownlint-disable MD033 -->
|
||||||
|
<details>
|
||||||
|
<summary><b>🧩 插件 (Actions, Filters, Pipes, Pipelines)</b></summary>
|
||||||
|
|
||||||
位于 `plugins/` 目录,包含各类 Python 编写的功能增强插件:
|
位于 `plugins/` 目录,包含各类 Python 编写的功能增强插件:
|
||||||
|
|
||||||
#### Actions (交互增强)
|
### Actions (交互增强)
|
||||||
|
|
||||||
- **Smart Mind Map** (`smart-mind-map`): 智能分析文本并生成交互式思维导图。
|
- **Smart Mind Map** (`smart-mind-map`): 智能分析文本并生成交互式思维导图。
|
||||||
- **Smart Infographic** (`infographic`): 基于 AntV 的智能信息图生成工具。
|
- **Smart Infographic** (`infographic`): 基于 AntV 的智能信息图生成工具。
|
||||||
- **Knowledge Card** (`knowledge-card`): 快速生成精美的学习记忆卡片。
|
- **Flash Card** (`flash-card`): 快速生成精美的学习记忆卡片。
|
||||||
|
- **Deep Dive** (`deep-dive`): 深度思考透镜,从背景、逻辑、洞察到行动路径的全方位分析。
|
||||||
- **Export to Excel** (`export_to_excel`): 将对话内容导出为 Excel 文件。
|
- **Export to Excel** (`export_to_excel`): 将对话内容导出为 Excel 文件。
|
||||||
- **Export to Word** (`export_to_docx`): 将对话内容导出为 Word 文档。
|
- **Export to Word** (`export_to_docx`): 将对话内容导出为 Word 文档。
|
||||||
- **Summary** (`summary`): 文本摘要生成工具。
|
|
||||||
|
|
||||||
#### Filters (消息处理)
|
### Filters (消息处理)
|
||||||
|
|
||||||
|
- **GitHub Copilot SDK Files Filter** (`github_copilot_sdk_files_filter`): Copilot SDK 必备搭档。绕过 RAG,确保 Agent 能真正看到你的每一个文件。
|
||||||
|
- **Web Gemini Multimodal Filter** (`web_gemini_multimodel_filter`): 为任意模型提供多模态能力(PDF、Office、视频等),支持智能路由。
|
||||||
- **Async Context Compression** (`async-context-compression`): 异步上下文压缩,优化 Token 使用。
|
- **Async Context Compression** (`async-context-compression`): 异步上下文压缩,优化 Token 使用。
|
||||||
- **Context Enhancement** (`context_enhancement_filter`): 上下文增强过滤器。
|
- **Context Enhancement** (`context_enhancement_filter`): 上下文增强过滤器。
|
||||||
- **Gemini Manifold Companion** (`gemini_manifold_companion`): Gemini Manifold 配套增强。
|
- **Folder Memory** (`folder-memory`): 自动从对话中提取项目规则并注入到文件夹系统提示词中。
|
||||||
|
- **Markdown Normalizer** (`markdown_normalizer`): 修复 LLM 输出中常见的 Markdown 格式问题。
|
||||||
|
|
||||||
#### Pipes (模型管道)
|
### Pipes (模型管道)
|
||||||
- **Gemini Manifold** (`gemini_mainfold`): 集成 Gemini 模型的管道。
|
|
||||||
|
- **GitHub Copilot SDK** (`github-copilot-sdk`): GitHub Copilot SDK 官方集成。支持动态模型、多轮对话、流式输出、图片输入及无限会话。
|
||||||
|
|
||||||
|
### Pipelines (工作流管道)
|
||||||
|
|
||||||
#### Pipelines (工作流管道)
|
|
||||||
- **MoE Prompt Refiner** (`moe_prompt_refiner`): 优化多模型 (MoE) 汇总请求的提示词,生成高质量的综合报告。
|
- **MoE Prompt Refiner** (`moe_prompt_refiner`): 优化多模型 (MoE) 汇总请求的提示词,生成高质量的综合报告。
|
||||||
|
|
||||||
### 🎯 提示词 (Prompts)
|
</details>
|
||||||
|
<!-- markdownlint-enable MD033 -->
|
||||||
|
|
||||||
位于 `prompts/` 目录,包含精心调优的 System Prompts:
|
<!-- markdownlint-disable MD033 -->
|
||||||
|
<details>
|
||||||
|
<summary><b>🎯 提示词 (Prompts - 多角色系统提示词)</b></summary>
|
||||||
|
|
||||||
- **Coding**: 编程辅助类提示词。
|
位于 `docs/prompts/` 目录,包含精心调优的提示词集合:
|
||||||
- **Marketing**: 营销文案类提示词。
|
|
||||||
|
|
||||||
每个提示词都独立保存为 Markdown 文件,可直接在 OpenWebUI 中使用。
|
- **[Prompt Library](./docs/prompts/library.md)**: 编程、翻译、分析及营销等全领域提示词精选。
|
||||||
|
|
||||||
|
</details>
|
||||||
|
<!-- markdownlint-enable MD033 -->
|
||||||
|
|
||||||
|
## 🛠️ 扩展 (Extensions)
|
||||||
|
|
||||||
|
Open WebUI 的前端增强扩展:
|
||||||
|
|
||||||
|
- **[Open WebUI Prompt Plus](https://github.com/Fu-Jie/open-webui-prompt-plus)**: 一站式提示词管理套件,支持 AI 提示词生成、Spotlight 风格快速搜索及高级分类管理。
|
||||||
|
|
||||||
## 📖 开发文档
|
## 📖 开发文档
|
||||||
|
|
||||||
|
<!-- markdownlint-disable MD033 -->
|
||||||
|
<details>
|
||||||
|
<summary><b>📚 官方开发与运营指南</b></summary>
|
||||||
|
|
||||||
位于 `docs/zh/` 目录:
|
位于 `docs/zh/` 目录:
|
||||||
|
|
||||||
- **[插件开发权威指南](./docs/zh/plugin_development_guide.md)** - 整合了入门教程、核心 SDK 详解及最佳实践的系统化指南。 ⭐
|
- **[插件开发权威指南](./docs/zh/plugin_development_guide.md)** - 整合了入门教程、核心 SDK 详解及最佳实践的系统化指南。 ⭐
|
||||||
@@ -73,35 +137,11 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词
|
|||||||
|
|
||||||
更多示例请查看 `docs/examples/` 目录。
|
更多示例请查看 `docs/examples/` 目录。
|
||||||
|
|
||||||
|
</details>
|
||||||
|
<!-- markdownlint-enable MD033 -->
|
||||||
|
|
||||||
## 🚀 快速开始
|
## 🚀 快速开始
|
||||||
|
|
||||||
本项目是一个资源集合,无需安装 Python 环境。你只需要下载对应的文件并导入到你的 OpenWebUI 实例中即可。
|
本项目是一个资源集合,无需安装 Python 环境。你只需要下载对应的文件并导入到你的 OpenWebUI 实例中即可。
|
||||||
|
|
||||||
### 使用提示词 (Prompts)
|
[贡献指南](./CONTRIBUTING_CN.md) | [更新日志](./CHANGELOG.md)
|
||||||
|
|
||||||
1. 在 `/prompts` 目录中浏览并选择你感兴趣的提示词文件 (`.md`)。
|
|
||||||
2. 复制文件内容。
|
|
||||||
3. 在 OpenWebUI 聊天界面中,点击输入框上方的 "Prompt" 按钮。
|
|
||||||
4. 粘贴内容并保存。
|
|
||||||
|
|
||||||
### 使用插件 (Plugins)
|
|
||||||
|
|
||||||
1. **从 OpenWebUI 社区安装 (推荐)**:
|
|
||||||
- 访问我的主页: [Fu-Jie's Profile](https://openwebui.com/u/Fu-Jie)
|
|
||||||
- 浏览插件列表,选择你喜欢的插件。
|
|
||||||
- 点击 "Get" 按钮,将其直接导入到你的 OpenWebUI 实例中。
|
|
||||||
|
|
||||||
2. **手动安装**:
|
|
||||||
- 在 `/plugins` 目录中浏览并下载你需要的插件文件 (`.py`)。
|
|
||||||
- 打开 OpenWebUI 的 **管理员面板 (Admin Panel)** -> **设置 (Settings)** -> **插件 (Plugins)**。
|
|
||||||
- 点击上传按钮,选择刚才下载的 `.py` 文件。
|
|
||||||
- 上传成功后,刷新页面,你就可以在聊天设置或工具栏中启用该插件了。
|
|
||||||
|
|
||||||
### 贡献代码
|
|
||||||
|
|
||||||
如果你有优质的提示词或插件想要分享:
|
|
||||||
1. Fork 本仓库。
|
|
||||||
2. 将你的文件添加到对应的 `prompts/` 或 `plugins/` 目录。
|
|
||||||
3. 提交 Pull Request。
|
|
||||||
|
|
||||||
[贡献指南](./CONTRIBUTING.md) | [更新日志](./CHANGELOG.md)
|
|
||||||
|
|||||||
0
docs/.!55042!.DS_Store
Normal file
0
docs/.!55042!.DS_Store
Normal file
53
docs/PLUGIN_README_TEMPLATE.md
Normal file
53
docs/PLUGIN_README_TEMPLATE.md
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
<!--
|
||||||
|
NOTE: This template is for the English version (README.md).
|
||||||
|
The Chinese version (README_CN.md) MUST be translated based on this English version to ensure consistency in structure and content.
|
||||||
|
-->
|
||||||
|
# [Plugin Name] [Optional Emoji]
|
||||||
|
|
||||||
|
[Brief description of what the plugin does. Keep it concise and engaging.]
|
||||||
|
|
||||||
|
**Author:** [Fu-Jie](https://github.com/Fu-Jie) | **Version:** 1.0.0 | **Project:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) | **License:** MIT
|
||||||
|
|
||||||
|
## What's New
|
||||||
|
|
||||||
|
<!-- Keep only the latest update here. Remove this section for the initial release. -->
|
||||||
|
|
||||||
|
### v1.0.0
|
||||||
|
|
||||||
|
- **Initial Release**: Released the first version of the plugin.
|
||||||
|
- **[Feature Name]**: [Brief description of the feature].
|
||||||
|
|
||||||
|
## Key Features 🔑
|
||||||
|
|
||||||
|
- **[Feature 1]**: [Description of feature 1].
|
||||||
|
- **[Feature 2]**: [Description of feature 2].
|
||||||
|
- **[Feature 3]**: [Description of feature 3].
|
||||||
|
|
||||||
|
## How to Use 🛠️
|
||||||
|
|
||||||
|
1. **Install**: Add the plugin to your OpenWebUI instance.
|
||||||
|
2. **Configure**: Adjust settings in the Valves menu (optional).
|
||||||
|
3. **[Action Step]**: Describe how to trigger or use the plugin.
|
||||||
|
4. **[Result Step]**: Describe the expected outcome.
|
||||||
|
|
||||||
|
## Configuration (Valves) ⚙️
|
||||||
|
|
||||||
|
| Valve | Default | Description |
|
||||||
|
|-------|---------|-------------|
|
||||||
|
| `VALVE_NAME` | `Default Value` | Description of what this setting does. |
|
||||||
|
| `ANOTHER_VALVE` | `True` | Another setting description. |
|
||||||
|
|
||||||
|
## ⭐ Support
|
||||||
|
|
||||||
|
If this plugin has been useful, a star on [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) is a big motivation for me. Thank you for the support.
|
||||||
|
|
||||||
|
## Troubleshooting ❓
|
||||||
|
|
||||||
|
- **Plugin not working?**: Check if the filter/action is enabled in the model settings.
|
||||||
|
- **Debug Logs**: Enable `SHOW_DEBUG_LOG` in Valves and check the browser console (F12) for detailed logs.
|
||||||
|
- **Error Messages**: If you see an error, please copy the full error message and report it.
|
||||||
|
- **Submit an Issue**: If you encounter any problems, please submit an issue on GitHub: [OpenWebUI Extensions Issues](https://github.com/Fu-Jie/openwebui-extensions/issues)
|
||||||
|
|
||||||
|
## Changelog
|
||||||
|
|
||||||
|
See the full history on GitHub: [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions)
|
||||||
7
docs/badges/downloads.json
Normal file
7
docs/badges/downloads.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"label": "downloads",
|
||||||
|
"message": "5.6k",
|
||||||
|
"color": "blue",
|
||||||
|
"namedLogo": "openwebui"
|
||||||
|
}
|
||||||
6
docs/badges/followers.json
Normal file
6
docs/badges/followers.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"label": "followers",
|
||||||
|
"message": "270",
|
||||||
|
"color": "blue"
|
||||||
|
}
|
||||||
6
docs/badges/plugins.json
Normal file
6
docs/badges/plugins.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"label": "plugins",
|
||||||
|
"message": "23",
|
||||||
|
"color": "green"
|
||||||
|
}
|
||||||
6
docs/badges/points.json
Normal file
6
docs/badges/points.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"label": "points",
|
||||||
|
"message": "285",
|
||||||
|
"color": "orange"
|
||||||
|
}
|
||||||
6
docs/badges/upvotes.json
Normal file
6
docs/badges/upvotes.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"label": "upvotes",
|
||||||
|
"message": "241",
|
||||||
|
"color": "brightgreen"
|
||||||
|
}
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
# 📊 OpenWebUI Community Stats Report
|
|
||||||
|
|
||||||
> 📅 Updated: 2026-01-06 21:19
|
|
||||||
|
|
||||||
## 📈 Overview
|
|
||||||
|
|
||||||
| Metric | Value |
|
|
||||||
|------|------|
|
|
||||||
| 📝 Total Posts | 11 |
|
|
||||||
| ⬇️ Total Downloads | 794 |
|
|
||||||
| 👁️ Total Views | 8481 |
|
|
||||||
| 👍 Total Upvotes | 54 |
|
|
||||||
| 💾 Total Saves | 48 |
|
|
||||||
| 💬 Total Comments | 13 |
|
|
||||||
|
|
||||||
## 📂 By Type
|
|
||||||
|
|
||||||
- **action**: 9
|
|
||||||
- **filter**: 2
|
|
||||||
|
|
||||||
## 📋 Posts List
|
|
||||||
|
|
||||||
| Rank | Title | Type | Version | Downloads | Views | Upvotes | Saves | Updated |
|
|
||||||
|:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
||||||
| 1 | [Turn Any Text into Beautiful Mind Maps](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.8.2 | 240 | 2133 | 10 | 15 | 2026-01-03 |
|
|
||||||
| 2 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.6 | 171 | 459 | 3 | 3 | 2026-01-03 |
|
|
||||||
| 3 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.1.0 | 112 | 1236 | 5 | 9 | 2025-12-31 |
|
|
||||||
| 4 | [Flash Card ](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | 76 | 1421 | 8 | 5 | 2026-01-03 |
|
|
||||||
| 5 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.3.2 | 65 | 909 | 6 | 8 | 2026-01-03 |
|
|
||||||
| 6 | [Export to Word (Enhanced Formatting)](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.0 | 51 | 504 | 5 | 4 | 2026-01-05 |
|
|
||||||
| 7 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | 1.3.1 | 33 | 398 | 3 | 0 | 2025-12-29 |
|
|
||||||
| 8 | [导出为 Word-支持公式、流程图、表格和代码块](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.1 | 15 | 752 | 7 | 1 | 2026-01-05 |
|
|
||||||
| 9 | [智能生成交互式思维导图,帮助用户可视化知识](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.8.0 | 14 | 249 | 2 | 1 | 2025-12-31 |
|
|
||||||
| 10 | [闪记卡生成插件](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.2 | 12 | 309 | 3 | 1 | 2025-12-31 |
|
|
||||||
| 11 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | filter | 1.1.0 | 5 | 111 | 2 | 1 | 2025-12-31 |
|
|
||||||
@@ -1,191 +1,387 @@
|
|||||||
{
|
{
|
||||||
"total_posts": 11,
|
"total_posts": 23,
|
||||||
"total_downloads": 794,
|
"total_downloads": 5629,
|
||||||
"total_views": 8481,
|
"total_views": 61059,
|
||||||
"total_upvotes": 54,
|
"total_upvotes": 241,
|
||||||
"total_downvotes": 1,
|
"total_downvotes": 3,
|
||||||
"total_saves": 48,
|
"total_saves": 321,
|
||||||
"total_comments": 13,
|
"total_comments": 55,
|
||||||
"by_type": {
|
"by_type": {
|
||||||
"action": 9,
|
"action": 12,
|
||||||
"filter": 2
|
"post": 4,
|
||||||
|
"pipe": 1,
|
||||||
|
"filter": 4,
|
||||||
|
"prompt": 1,
|
||||||
|
"review": 1
|
||||||
},
|
},
|
||||||
"posts": [
|
"posts": [
|
||||||
{
|
{
|
||||||
"title": "Turn Any Text into Beautiful Mind Maps",
|
"title": "Smart Mind Map",
|
||||||
"slug": "turn_any_text_into_beautiful_mind_maps_3094c59a",
|
"slug": "turn_any_text_into_beautiful_mind_maps_3094c59a",
|
||||||
"type": "action",
|
"type": "action",
|
||||||
"version": "0.8.2",
|
"version": "1.0.0",
|
||||||
"author": "Fu-Jie",
|
"author": "Fu-Jie",
|
||||||
"description": "Intelligently analyzes text content and generates interactive mind maps to help users structure and visualize knowledge.",
|
"description": "Intelligently analyzes text content and generates interactive mind maps to help users structure and visualize knowledge.",
|
||||||
"downloads": 240,
|
"downloads": 1207,
|
||||||
"views": 2133,
|
"views": 10434,
|
||||||
"upvotes": 10,
|
"upvotes": 22,
|
||||||
"saves": 15,
|
"saves": 59,
|
||||||
"comments": 8,
|
"comments": 13,
|
||||||
"created_at": "2025-12-30",
|
"created_at": "2025-12-30",
|
||||||
"updated_at": "2026-01-03",
|
"updated_at": "2026-02-22",
|
||||||
"url": "https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a"
|
"url": "https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"title": "Export to Excel",
|
|
||||||
"slug": "export_mulit_table_to_excel_244b8f9d",
|
|
||||||
"type": "action",
|
|
||||||
"version": "0.3.6",
|
|
||||||
"author": "Fu-Jie",
|
|
||||||
"description": "Extracts tables from chat messages and exports them to Excel (.xlsx) files with smart formatting.",
|
|
||||||
"downloads": 171,
|
|
||||||
"views": 459,
|
|
||||||
"upvotes": 3,
|
|
||||||
"saves": 3,
|
|
||||||
"comments": 0,
|
|
||||||
"created_at": "2025-05-30",
|
|
||||||
"updated_at": "2026-01-03",
|
|
||||||
"url": "https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Async Context Compression",
|
|
||||||
"slug": "async_context_compression_b1655bc8",
|
|
||||||
"type": "filter",
|
|
||||||
"version": "1.1.0",
|
|
||||||
"author": "Fu-Jie",
|
|
||||||
"description": "This filter automatically compresses long conversation contexts by intelligently summarizing and removing intermediate messages while preserving critical information, thereby significantly reducing token consumption.",
|
|
||||||
"downloads": 112,
|
|
||||||
"views": 1236,
|
|
||||||
"upvotes": 5,
|
|
||||||
"saves": 9,
|
|
||||||
"comments": 0,
|
|
||||||
"created_at": "2025-11-08",
|
|
||||||
"updated_at": "2025-12-31",
|
|
||||||
"url": "https://openwebui.com/posts/async_context_compression_b1655bc8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "Flash Card ",
|
|
||||||
"slug": "flash_card_65a2ea8f",
|
|
||||||
"type": "action",
|
|
||||||
"version": "0.2.4",
|
|
||||||
"author": "Fu-Jie",
|
|
||||||
"description": "Quickly generates beautiful flashcards from text, extracting key points and categories.",
|
|
||||||
"downloads": 76,
|
|
||||||
"views": 1421,
|
|
||||||
"upvotes": 8,
|
|
||||||
"saves": 5,
|
|
||||||
"comments": 2,
|
|
||||||
"created_at": "2025-12-30",
|
|
||||||
"updated_at": "2026-01-03",
|
|
||||||
"url": "https://openwebui.com/posts/flash_card_65a2ea8f"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"title": "Smart Infographic",
|
"title": "Smart Infographic",
|
||||||
"slug": "smart_infographic_ad6f0c7f",
|
"slug": "smart_infographic_ad6f0c7f",
|
||||||
"type": "action",
|
"type": "action",
|
||||||
"version": "1.3.2",
|
"version": "1.5.0",
|
||||||
"author": "jeff",
|
"author": "Fu-Jie",
|
||||||
"description": "AI-powered infographic generator based on AntV Infographic. Supports professional templates, auto-icon matching, and SVG/PNG downloads.",
|
"description": "AI-powered infographic generator based on AntV Infographic. Supports professional templates, auto-icon matching, and SVG/PNG downloads.",
|
||||||
"downloads": 65,
|
"downloads": 966,
|
||||||
"views": 909,
|
"views": 9501,
|
||||||
"upvotes": 6,
|
"upvotes": 24,
|
||||||
"saves": 8,
|
"saves": 39,
|
||||||
"comments": 2,
|
"comments": 10,
|
||||||
"created_at": "2025-12-28",
|
"created_at": "2025-12-28",
|
||||||
"updated_at": "2026-01-03",
|
"updated_at": "2026-02-13",
|
||||||
"url": "https://openwebui.com/posts/smart_infographic_ad6f0c7f"
|
"url": "https://openwebui.com/posts/smart_infographic_ad6f0c7f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Export to Word (Enhanced Formatting)",
|
"title": "Markdown Normalizer",
|
||||||
|
"slug": "markdown_normalizer_baaa8732",
|
||||||
|
"type": "filter",
|
||||||
|
"version": "1.2.4",
|
||||||
|
"author": "Fu-Jie",
|
||||||
|
"description": "A content normalizer filter that fixes common Markdown formatting issues in LLM outputs, such as broken code blocks, LaTeX formulas, and list formatting.",
|
||||||
|
"downloads": 513,
|
||||||
|
"views": 6087,
|
||||||
|
"upvotes": 17,
|
||||||
|
"saves": 36,
|
||||||
|
"comments": 5,
|
||||||
|
"created_at": "2026-01-12",
|
||||||
|
"updated_at": "2026-02-13",
|
||||||
|
"url": "https://openwebui.com/posts/markdown_normalizer_baaa8732"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Export to Word Enhanced",
|
||||||
"slug": "export_to_word_enhanced_formatting_fca6a315",
|
"slug": "export_to_word_enhanced_formatting_fca6a315",
|
||||||
"type": "action",
|
"type": "action",
|
||||||
"version": "0.4.0",
|
"version": "0.4.4",
|
||||||
"author": "Fu-Jie",
|
"author": "Fu-Jie",
|
||||||
"description": "Export the current conversation to a formatted Word doc with syntax highlighting, AI-generated titles, and perfect Markdown rendering (tables, quotes, lists).",
|
"description": "Export current conversation from Markdown to Word (.docx) with Mermaid diagrams rendered client-side (Mermaid.js, SVG+PNG), LaTeX math, real hyperlinks, improved tables, syntax highlighting, and blockquote support.",
|
||||||
"downloads": 51,
|
"downloads": 511,
|
||||||
"views": 504,
|
"views": 4090,
|
||||||
"upvotes": 5,
|
"upvotes": 15,
|
||||||
"saves": 4,
|
"saves": 29,
|
||||||
"comments": 0,
|
"comments": 5,
|
||||||
"created_at": "2026-01-03",
|
"created_at": "2026-01-03",
|
||||||
"updated_at": "2026-01-05",
|
"updated_at": "2026-02-13",
|
||||||
"url": "https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315"
|
"url": "https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"title": "Async Context Compression",
|
||||||
|
"slug": "async_context_compression_b1655bc8",
|
||||||
|
"type": "filter",
|
||||||
|
"version": "1.3.0",
|
||||||
|
"author": "Fu-Jie",
|
||||||
|
"description": "Reduces token consumption in long conversations while maintaining coherence through intelligent summarization and message compression.",
|
||||||
|
"downloads": 486,
|
||||||
|
"views": 4865,
|
||||||
|
"upvotes": 15,
|
||||||
|
"saves": 40,
|
||||||
|
"comments": 0,
|
||||||
|
"created_at": "2025-11-08",
|
||||||
|
"updated_at": "2026-02-21",
|
||||||
|
"url": "https://openwebui.com/posts/async_context_compression_b1655bc8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Export to Excel",
|
||||||
|
"slug": "export_mulit_table_to_excel_244b8f9d",
|
||||||
|
"type": "action",
|
||||||
|
"version": "0.3.7",
|
||||||
|
"author": "Fu-Jie",
|
||||||
|
"description": "Extracts tables from chat messages and exports them to Excel (.xlsx) files with smart formatting.",
|
||||||
|
"downloads": 445,
|
||||||
|
"views": 2377,
|
||||||
|
"upvotes": 9,
|
||||||
|
"saves": 7,
|
||||||
|
"comments": 0,
|
||||||
|
"created_at": "2025-05-30",
|
||||||
|
"updated_at": "2026-02-13",
|
||||||
|
"url": "https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "AI Task Instruction Generator",
|
||||||
|
"slug": "ai_task_instruction_generator_9bab8b37",
|
||||||
|
"type": "prompt",
|
||||||
|
"version": "",
|
||||||
|
"author": "",
|
||||||
|
"description": "",
|
||||||
|
"downloads": 381,
|
||||||
|
"views": 4636,
|
||||||
|
"upvotes": 9,
|
||||||
|
"saves": 11,
|
||||||
|
"comments": 0,
|
||||||
|
"created_at": "2026-01-28",
|
||||||
|
"updated_at": "2026-01-28",
|
||||||
|
"url": "https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Flash Card",
|
||||||
|
"slug": "flash_card_65a2ea8f",
|
||||||
|
"type": "action",
|
||||||
|
"version": "0.2.4",
|
||||||
|
"author": "Fu-Jie",
|
||||||
|
"description": "Quickly generates beautiful flashcards from text, extracting key points and categories.",
|
||||||
|
"downloads": 264,
|
||||||
|
"views": 3924,
|
||||||
|
"upvotes": 13,
|
||||||
|
"saves": 18,
|
||||||
|
"comments": 2,
|
||||||
|
"created_at": "2025-12-30",
|
||||||
|
"updated_at": "2026-02-13",
|
||||||
|
"url": "https://openwebui.com/posts/flash_card_65a2ea8f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "GitHub Copilot Official SDK Pipe",
|
||||||
|
"slug": "github_copilot_official_sdk_pipe_ce96f7b4",
|
||||||
|
"type": "pipe",
|
||||||
|
"version": "0.7.0",
|
||||||
|
"author": "Fu-Jie",
|
||||||
|
"description": "Integrate GitHub Copilot SDK. Supports dynamic models, multi-turn conversation, streaming, multimodal input, infinite sessions, and frontend debug logging.",
|
||||||
|
"downloads": 205,
|
||||||
|
"views": 3522,
|
||||||
|
"upvotes": 14,
|
||||||
|
"saves": 9,
|
||||||
|
"comments": 6,
|
||||||
|
"created_at": "2026-01-26",
|
||||||
|
"updated_at": "2026-02-22",
|
||||||
|
"url": "https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Deep Dive",
|
||||||
|
"slug": "deep_dive_c0b846e4",
|
||||||
|
"type": "action",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": "Fu-Jie",
|
||||||
|
"description": "A comprehensive thinking lens that dives deep into any content - from context to logic, insights, and action paths.",
|
||||||
|
"downloads": 185,
|
||||||
|
"views": 1519,
|
||||||
|
"upvotes": 6,
|
||||||
|
"saves": 13,
|
||||||
|
"comments": 0,
|
||||||
|
"created_at": "2026-01-08",
|
||||||
|
"updated_at": "2026-01-08",
|
||||||
|
"url": "https://openwebui.com/posts/deep_dive_c0b846e4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "导出为Word增强版",
|
||||||
|
"slug": "导出为_word_支持公式流程图表格和代码块_8a6306c0",
|
||||||
|
"type": "action",
|
||||||
|
"version": "0.4.4",
|
||||||
|
"author": "Fu-Jie",
|
||||||
|
"description": "将对话导出为 Word (.docx),支持 Mermaid 图表 (客户端渲染 SVG+PNG)、LaTeX 数学公式、真实超链接、增强表格格式、代码高亮和引用块。",
|
||||||
|
"downloads": 145,
|
||||||
|
"views": 2507,
|
||||||
|
"upvotes": 14,
|
||||||
|
"saves": 7,
|
||||||
|
"comments": 4,
|
||||||
|
"created_at": "2026-01-04",
|
||||||
|
"updated_at": "2026-02-13",
|
||||||
|
"url": "https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "📂 Folder Memory – Auto-Evolving Project Context",
|
||||||
|
"slug": "folder_memory_auto_evolving_project_context_4a9875b2",
|
||||||
|
"type": "filter",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"author": "Fu-Jie",
|
||||||
|
"description": "Automatically extracts project rules from conversations and injects them into the folder's system prompt.",
|
||||||
|
"downloads": 92,
|
||||||
|
"views": 1721,
|
||||||
|
"upvotes": 7,
|
||||||
|
"saves": 11,
|
||||||
|
"comments": 0,
|
||||||
|
"created_at": "2026-01-20",
|
||||||
|
"updated_at": "2026-01-20",
|
||||||
|
"url": "https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"title": "智能信息图",
|
"title": "智能信息图",
|
||||||
"slug": "智能信息图_e04a48ff",
|
"slug": "智能信息图_e04a48ff",
|
||||||
"type": "action",
|
"type": "action",
|
||||||
"version": "1.3.1",
|
"version": "1.5.0",
|
||||||
"author": "jeff",
|
"author": "Fu-Jie",
|
||||||
"description": "基于 AntV Infographic 的智能信息图生成插件。支持多种专业模板,自动图标匹配,并提供 SVG/PNG 下载功能。",
|
"description": "基于 AntV Infographic 的智能信息图生成插件。支持多种专业模板,自动图标匹配,并提供 SVG/PNG 下载功能。",
|
||||||
"downloads": 33,
|
"downloads": 62,
|
||||||
"views": 398,
|
"views": 1235,
|
||||||
"upvotes": 3,
|
"upvotes": 10,
|
||||||
"saves": 0,
|
"saves": 1,
|
||||||
"comments": 0,
|
"comments": 0,
|
||||||
"created_at": "2025-12-28",
|
"created_at": "2025-12-28",
|
||||||
"updated_at": "2025-12-29",
|
"updated_at": "2026-02-13",
|
||||||
"url": "https://openwebui.com/posts/智能信息图_e04a48ff"
|
"url": "https://openwebui.com/posts/智能信息图_e04a48ff"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "导出为 Word-支持公式、流程图、表格和代码块",
|
"title": "思维导图",
|
||||||
"slug": "导出为_word_支持公式流程图表格和代码块_8a6306c0",
|
|
||||||
"type": "action",
|
|
||||||
"version": "0.4.1",
|
|
||||||
"author": "Fu-Jie",
|
|
||||||
"description": "将当前对话内容从 Markdown 转换并导出为 Word (.docx) 文件,支持中英文无乱码。",
|
|
||||||
"downloads": 15,
|
|
||||||
"views": 752,
|
|
||||||
"upvotes": 7,
|
|
||||||
"saves": 1,
|
|
||||||
"comments": 1,
|
|
||||||
"created_at": "2026-01-04",
|
|
||||||
"updated_at": "2026-01-05",
|
|
||||||
"url": "https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "智能生成交互式思维导图,帮助用户可视化知识",
|
|
||||||
"slug": "智能生成交互式思维导图帮助用户可视化知识_8d4b097b",
|
"slug": "智能生成交互式思维导图帮助用户可视化知识_8d4b097b",
|
||||||
"type": "action",
|
"type": "action",
|
||||||
"version": "0.8.0",
|
"version": "0.9.2",
|
||||||
"author": "",
|
"author": "Fu-Jie",
|
||||||
"description": "智能分析文本内容,生成交互式思维导图,帮助用户结构化和可视化知识。",
|
"description": "智能分析文本内容,生成交互式思维导图,帮助用户结构化和可视化知识。",
|
||||||
"downloads": 14,
|
"downloads": 41,
|
||||||
"views": 249,
|
"views": 658,
|
||||||
"upvotes": 2,
|
"upvotes": 6,
|
||||||
"saves": 1,
|
"saves": 2,
|
||||||
"comments": 0,
|
"comments": 0,
|
||||||
"created_at": "2025-12-31",
|
"created_at": "2025-12-31",
|
||||||
"updated_at": "2025-12-31",
|
"updated_at": "2026-02-13",
|
||||||
"url": "https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b"
|
"url": "https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"title": "闪记卡生成插件",
|
|
||||||
"slug": "闪记卡生成插件_4a31eac3",
|
|
||||||
"type": "action",
|
|
||||||
"version": "0.2.2",
|
|
||||||
"author": "Fu-Jie",
|
|
||||||
"description": "快速将文本提炼为精美的学习记忆卡片,支持核心要点提取与分类。",
|
|
||||||
"downloads": 12,
|
|
||||||
"views": 309,
|
|
||||||
"upvotes": 3,
|
|
||||||
"saves": 1,
|
|
||||||
"comments": 0,
|
|
||||||
"created_at": "2025-12-30",
|
|
||||||
"updated_at": "2025-12-31",
|
|
||||||
"url": "https://openwebui.com/posts/闪记卡生成插件_4a31eac3"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"title": "异步上下文压缩",
|
"title": "异步上下文压缩",
|
||||||
"slug": "异步上下文压缩_5c0617cb",
|
"slug": "异步上下文压缩_5c0617cb",
|
||||||
"type": "filter",
|
"type": "action",
|
||||||
"version": "1.1.0",
|
"version": "1.2.2",
|
||||||
"author": "Fu-Jie",
|
"author": "Fu-Jie",
|
||||||
"description": "在 LLM 响应完成后进行上下文摘要和压缩",
|
"description": "通过智能摘要和消息压缩,降低长对话的 token 消耗,同时保持对话连贯性。",
|
||||||
"downloads": 5,
|
"downloads": 36,
|
||||||
"views": 111,
|
"views": 748,
|
||||||
"upvotes": 2,
|
"upvotes": 7,
|
||||||
"saves": 1,
|
"saves": 5,
|
||||||
"comments": 0,
|
"comments": 0,
|
||||||
"created_at": "2025-11-08",
|
"created_at": "2025-11-08",
|
||||||
"updated_at": "2025-12-31",
|
"updated_at": "2026-02-13",
|
||||||
"url": "https://openwebui.com/posts/异步上下文压缩_5c0617cb"
|
"url": "https://openwebui.com/posts/异步上下文压缩_5c0617cb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "GitHub Copilot SDK Files Filter",
|
||||||
|
"slug": "github_copilot_sdk_files_filter_403a62ee",
|
||||||
|
"type": "filter",
|
||||||
|
"version": "0.1.2",
|
||||||
|
"author": "Fu-Jie",
|
||||||
|
"description": "A specialized filter to bypass OpenWebUI's default RAG for GitHub Copilot SDK models. It moves uploaded files to a safe location ('copilot_files') so the Copilot Pipe can process them natively without interference.",
|
||||||
|
"downloads": 35,
|
||||||
|
"views": 1907,
|
||||||
|
"upvotes": 3,
|
||||||
|
"saves": 0,
|
||||||
|
"comments": 0,
|
||||||
|
"created_at": "2026-02-09",
|
||||||
|
"updated_at": "2026-02-13",
|
||||||
|
"url": "https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "闪记卡 (Flash Card)",
|
||||||
|
"slug": "闪记卡生成插件_4a31eac3",
|
||||||
|
"type": "action",
|
||||||
|
"version": "0.2.4",
|
||||||
|
"author": "Fu-Jie",
|
||||||
|
"description": "快速将文本提炼为精美的学习记忆卡片,支持核心要点提取与分类。",
|
||||||
|
"downloads": 30,
|
||||||
|
"views": 783,
|
||||||
|
"upvotes": 8,
|
||||||
|
"saves": 1,
|
||||||
|
"comments": 0,
|
||||||
|
"created_at": "2025-12-30",
|
||||||
|
"updated_at": "2026-02-13",
|
||||||
|
"url": "https://openwebui.com/posts/闪记卡生成插件_4a31eac3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "精读",
|
||||||
|
"slug": "精读_99830b0f",
|
||||||
|
"type": "action",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": "Fu-Jie",
|
||||||
|
"description": "全方位的思维透镜 —— 从背景全景到逻辑脉络,从深度洞察到行动路径。",
|
||||||
|
"downloads": 25,
|
||||||
|
"views": 545,
|
||||||
|
"upvotes": 5,
|
||||||
|
"saves": 1,
|
||||||
|
"comments": 0,
|
||||||
|
"created_at": "2026-01-08",
|
||||||
|
"updated_at": "2026-01-08",
|
||||||
|
"url": "https://openwebui.com/posts/精读_99830b0f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "🚀 GitHub Copilot SDK Pipe v0.7.0: Native Tool UI & Zero-Config CLI 🛠️",
|
||||||
|
"slug": "github_copilot_sdk_pipe_v070_native_tool_ui_zero_c_4af38131",
|
||||||
|
"type": "post",
|
||||||
|
"version": "",
|
||||||
|
"author": "",
|
||||||
|
"description": "",
|
||||||
|
"downloads": 0,
|
||||||
|
"views": 24,
|
||||||
|
"upvotes": 2,
|
||||||
|
"saves": 0,
|
||||||
|
"comments": 0,
|
||||||
|
"created_at": "2026-02-22",
|
||||||
|
"updated_at": "2026-02-22",
|
||||||
|
"url": "https://openwebui.com/posts/github_copilot_sdk_pipe_v070_native_tool_ui_zero_c_4af38131"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks",
|
||||||
|
"slug": "github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293",
|
||||||
|
"type": "post",
|
||||||
|
"version": "",
|
||||||
|
"author": "",
|
||||||
|
"description": "",
|
||||||
|
"downloads": 0,
|
||||||
|
"views": 2108,
|
||||||
|
"upvotes": 7,
|
||||||
|
"saves": 3,
|
||||||
|
"comments": 0,
|
||||||
|
"created_at": "2026-02-10",
|
||||||
|
"updated_at": "2026-02-10",
|
||||||
|
"url": "https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager",
|
||||||
|
"slug": "open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e",
|
||||||
|
"type": "post",
|
||||||
|
"version": "",
|
||||||
|
"author": "",
|
||||||
|
"description": "",
|
||||||
|
"downloads": 0,
|
||||||
|
"views": 1767,
|
||||||
|
"upvotes": 12,
|
||||||
|
"saves": 19,
|
||||||
|
"comments": 8,
|
||||||
|
"created_at": "2026-01-25",
|
||||||
|
"updated_at": "2026-01-28",
|
||||||
|
"url": "https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Review of Claude Haiku 4.5",
|
||||||
|
"slug": "review_of_claude_haiku_45_41b0db39",
|
||||||
|
"type": "review",
|
||||||
|
"version": "",
|
||||||
|
"author": "",
|
||||||
|
"description": "",
|
||||||
|
"downloads": 0,
|
||||||
|
"views": 222,
|
||||||
|
"upvotes": 2,
|
||||||
|
"saves": 0,
|
||||||
|
"comments": 0,
|
||||||
|
"created_at": "2026-01-14",
|
||||||
|
"updated_at": "2026-01-14",
|
||||||
|
"url": "https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": " 🛠️ Debug Open WebUI Plugins in Your Browser",
|
||||||
|
"slug": "debug_open_webui_plugins_in_your_browser_81bf7960",
|
||||||
|
"type": "post",
|
||||||
|
"version": "",
|
||||||
|
"author": "",
|
||||||
|
"description": "",
|
||||||
|
"downloads": 0,
|
||||||
|
"views": 1475,
|
||||||
|
"upvotes": 14,
|
||||||
|
"saves": 10,
|
||||||
|
"comments": 2,
|
||||||
|
"created_at": "2026-01-10",
|
||||||
|
"updated_at": "2026-01-10",
|
||||||
|
"url": "https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"user": {
|
"user": {
|
||||||
@@ -193,11 +389,11 @@
|
|||||||
"name": "Fu-Jie",
|
"name": "Fu-Jie",
|
||||||
"profile_url": "https://openwebui.com/u/Fu-Jie",
|
"profile_url": "https://openwebui.com/u/Fu-Jie",
|
||||||
"profile_image": "https://community.s3.openwebui.com/uploads/users/b15d1348-4347-42b4-b815-e053342d6cb0/profile_d9510745-4bd4-4f8f-a997-4a21847d9300.webp",
|
"profile_image": "https://community.s3.openwebui.com/uploads/users/b15d1348-4347-42b4-b815-e053342d6cb0/profile_d9510745-4bd4-4f8f-a997-4a21847d9300.webp",
|
||||||
"followers": 43,
|
"followers": 270,
|
||||||
"following": 2,
|
"following": 5,
|
||||||
"total_points": 62,
|
"total_points": 285,
|
||||||
"post_points": 53,
|
"post_points": 238,
|
||||||
"comment_points": 9,
|
"comment_points": 47,
|
||||||
"contributions": 17
|
"contributions": 51
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,35 +1,61 @@
|
|||||||
# 📊 OpenWebUI 社区统计报告
|
# 📊 OpenWebUI Community Stats Report
|
||||||
|
|
||||||
> 📅 更新时间: 2026-01-06 21:19
|
> 
|
||||||
|
|
||||||
## 📈 总览
|
### 📈 Total Downloads Trend
|
||||||
|

|
||||||
|
|
||||||
| 指标 | 数值 |
|
> *Blue: Downloads | Purple: Views (Real-time dynamic)*
|
||||||
|
|
||||||
|
### 📂 Content Distribution
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
## 📈 Overview
|
||||||
|
|
||||||
|
| Metric | Value |
|
||||||
|------|------|
|
|------|------|
|
||||||
| 📝 发布数量 | 11 |
|
| 📝 Total Posts |  |
|
||||||
| ⬇️ 总下载量 | 794 |
|
| ⬇️ Total Downloads |  |
|
||||||
| 👁️ 总浏览量 | 8481 |
|
| 👁️ Total Views |  |
|
||||||
| 👍 总点赞数 | 54 |
|
| 👍 Total Upvotes |  |
|
||||||
| 💾 总收藏数 | 48 |
|
| 💾 Total Saves |  |
|
||||||
| 💬 总评论数 | 13 |
|
| ⭐ Author Points |  |
|
||||||
|
| 👥 Followers |  |
|
||||||
|
|
||||||
## 📂 按类型分类
|
## 📂 By Type
|
||||||
|
|
||||||
- **action**: 9
|
- 
|
||||||
- **filter**: 2
|
- 
|
||||||
|
- 
|
||||||
|
- 
|
||||||
|
- 
|
||||||
|
- 
|
||||||
|
|
||||||
## 📋 发布列表
|
## 📋 Posts List
|
||||||
|
|
||||||
| 排名 | 标题 | 类型 | 版本 | 下载 | 浏览 | 点赞 | 收藏 | 更新日期 |
|
| Rank | Title | Type | Version | Downloads | Views | Upvotes | Saves | Updated |
|
||||||
|:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|
|:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|
||||||
| 1 | [Turn Any Text into Beautiful Mind Maps](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action | 0.8.2 | 240 | 2133 | 10 | 15 | 2026-01-03 |
|
| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action |  |  |  |  |  | 2026-02-22 |
|
||||||
| 2 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action | 0.3.6 | 171 | 459 | 3 | 3 | 2026-01-03 |
|
| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
| 3 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter | 1.1.0 | 112 | 1236 | 5 | 9 | 2025-12-31 |
|
| 3 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter |  |  |  |  |  | 2026-02-13 |
|
||||||
| 4 | [Flash Card ](https://openwebui.com/posts/flash_card_65a2ea8f) | action | 0.2.4 | 76 | 1421 | 8 | 5 | 2026-01-03 |
|
| 4 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
| 5 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action | 1.3.2 | 65 | 909 | 6 | 8 | 2026-01-03 |
|
| 5 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter |  |  |  |  |  | 2026-02-21 |
|
||||||
| 6 | [Export to Word (Enhanced Formatting)](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action | 0.4.0 | 51 | 504 | 5 | 4 | 2026-01-05 |
|
| 6 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
| 7 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action | 1.3.1 | 33 | 398 | 3 | 0 | 2025-12-29 |
|
| 7 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | prompt |  |  |  |  |  | 2026-01-28 |
|
||||||
| 8 | [导出为 Word-支持公式、流程图、表格和代码块](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action | 0.4.1 | 15 | 752 | 7 | 1 | 2026-01-05 |
|
| 8 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
| 9 | [智能生成交互式思维导图,帮助用户可视化知识](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action | 0.8.0 | 14 | 249 | 2 | 1 | 2025-12-31 |
|
| 9 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe |  |  |  |  |  | 2026-02-22 |
|
||||||
| 10 | [闪记卡生成插件](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action | 0.2.2 | 12 | 309 | 3 | 1 | 2025-12-31 |
|
| 10 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action |  |  |  |  |  | 2026-01-08 |
|
||||||
| 11 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | filter | 1.1.0 | 5 | 111 | 2 | 1 | 2025-12-31 |
|
| 11 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
|
| 12 | [📂 Folder Memory – Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter |  |  |  |  |  | 2026-01-20 |
|
||||||
|
| 13 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
|
| 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
|
| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
|
| 16 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter |  |  |  |  |  | 2026-02-13 |
|
||||||
|
| 17 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
|
| 18 | [精读](https://openwebui.com/posts/精读_99830b0f) | action |  |  |  |  |  | 2026-01-08 |
|
||||||
|
| 19 | [🚀 GitHub Copilot SDK Pipe v0.7.0: Native Tool UI & Zero-Config CLI 🛠️](https://openwebui.com/posts/github_copilot_sdk_pipe_v070_native_tool_ui_zero_c_4af38131) | post |  |  |  |  |  | 2026-02-22 |
|
||||||
|
| 20 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post |  |  |  |  |  | 2026-02-10 |
|
||||||
|
| 21 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post |  |  |  |  |  | 2026-01-28 |
|
||||||
|
| 22 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review |  |  |  |  |  | 2026-01-14 |
|
||||||
|
| 23 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post |  |  |  |  |  | 2026-01-10 |
|
||||||
|
|||||||
61
docs/community-stats.zh.md
Normal file
61
docs/community-stats.zh.md
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# 📊 OpenWebUI 社区统计报告
|
||||||
|
|
||||||
|
> 
|
||||||
|
|
||||||
|
### 📈 总下载量累计趋势
|
||||||
|

|
||||||
|
|
||||||
|
> *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)*
|
||||||
|
|
||||||
|
### 📂 内容分类占比 (Distribution)
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
## 📈 总览
|
||||||
|
|
||||||
|
| 指标 | 数值 |
|
||||||
|
|------|------|
|
||||||
|
| 📝 发布数量 |  |
|
||||||
|
| ⬇️ 总下载量 |  |
|
||||||
|
| 👁️ 总浏览量 |  |
|
||||||
|
| 👍 总点赞数 |  |
|
||||||
|
| 💾 总收藏数 |  |
|
||||||
|
| ⭐ 作者总积分 |  |
|
||||||
|
| 👥 粉丝数量 |  |
|
||||||
|
|
||||||
|
## 📂 按类型分类
|
||||||
|
|
||||||
|
- 
|
||||||
|
- 
|
||||||
|
- 
|
||||||
|
- 
|
||||||
|
- 
|
||||||
|
- 
|
||||||
|
|
||||||
|
## 📋 发布列表
|
||||||
|
|
||||||
|
| 排名 | 标题 | 类型 | 版本 | 下载 | 浏览 | 点赞 | 收藏 | 更新日期 |
|
||||||
|
|:---:|------|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|
||||||
|
| 1 | [Smart Mind Map](https://openwebui.com/posts/turn_any_text_into_beautiful_mind_maps_3094c59a) | action |  |  |  |  |  | 2026-02-22 |
|
||||||
|
| 2 | [Smart Infographic](https://openwebui.com/posts/smart_infographic_ad6f0c7f) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
|
| 3 | [Markdown Normalizer](https://openwebui.com/posts/markdown_normalizer_baaa8732) | filter |  |  |  |  |  | 2026-02-13 |
|
||||||
|
| 4 | [Export to Word Enhanced](https://openwebui.com/posts/export_to_word_enhanced_formatting_fca6a315) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
|
| 5 | [Async Context Compression](https://openwebui.com/posts/async_context_compression_b1655bc8) | filter |  |  |  |  |  | 2026-02-21 |
|
||||||
|
| 6 | [Export to Excel](https://openwebui.com/posts/export_mulit_table_to_excel_244b8f9d) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
|
| 7 | [AI Task Instruction Generator](https://openwebui.com/posts/ai_task_instruction_generator_9bab8b37) | prompt |  |  |  |  |  | 2026-01-28 |
|
||||||
|
| 8 | [Flash Card](https://openwebui.com/posts/flash_card_65a2ea8f) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
|
| 9 | [GitHub Copilot Official SDK Pipe](https://openwebui.com/posts/github_copilot_official_sdk_pipe_ce96f7b4) | pipe |  |  |  |  |  | 2026-02-22 |
|
||||||
|
| 10 | [Deep Dive](https://openwebui.com/posts/deep_dive_c0b846e4) | action |  |  |  |  |  | 2026-01-08 |
|
||||||
|
| 11 | [导出为Word增强版](https://openwebui.com/posts/导出为_word_支持公式流程图表格和代码块_8a6306c0) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
|
| 12 | [📂 Folder Memory – Auto-Evolving Project Context](https://openwebui.com/posts/folder_memory_auto_evolving_project_context_4a9875b2) | filter |  |  |  |  |  | 2026-01-20 |
|
||||||
|
| 13 | [智能信息图](https://openwebui.com/posts/智能信息图_e04a48ff) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
|
| 14 | [思维导图](https://openwebui.com/posts/智能生成交互式思维导图帮助用户可视化知识_8d4b097b) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
|
| 15 | [异步上下文压缩](https://openwebui.com/posts/异步上下文压缩_5c0617cb) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
|
| 16 | [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/github_copilot_sdk_files_filter_403a62ee) | filter |  |  |  |  |  | 2026-02-13 |
|
||||||
|
| 17 | [闪记卡 (Flash Card)](https://openwebui.com/posts/闪记卡生成插件_4a31eac3) | action |  |  |  |  |  | 2026-02-13 |
|
||||||
|
| 18 | [精读](https://openwebui.com/posts/精读_99830b0f) | action |  |  |  |  |  | 2026-01-08 |
|
||||||
|
| 19 | [🚀 GitHub Copilot SDK Pipe v0.7.0: Native Tool UI & Zero-Config CLI 🛠️](https://openwebui.com/posts/github_copilot_sdk_pipe_v070_native_tool_ui_zero_c_4af38131) | post |  |  |  |  |  | 2026-02-22 |
|
||||||
|
| 20 | [🚀 GitHub Copilot SDK Pipe: AI That Executes, Not Just Talks](https://openwebui.com/posts/github_copilot_sdk_for_openwebui_elevate_your_ai_t_a140f293) | post |  |  |  |  |  | 2026-02-10 |
|
||||||
|
| 21 | [🚀 Open WebUI Prompt Plus: AI-Powered Prompt Manager](https://openwebui.com/posts/open_webui_prompt_plus_ai_powered_prompt_manager_s_15fa060e) | post |  |  |  |  |  | 2026-01-28 |
|
||||||
|
| 22 | [Review of Claude Haiku 4.5](https://openwebui.com/posts/review_of_claude_haiku_45_41b0db39) | review |  |  |  |  |  | 2026-01-14 |
|
||||||
|
| 23 | [ 🛠️ Debug Open WebUI Plugins in Your Browser](https://openwebui.com/posts/debug_open_webui_plugins_in_your_browser_81bf7960) | post |  |  |  |  |  | 2026-01-10 |
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Contributing Guide
|
# Contributing Guide
|
||||||
|
|
||||||
Thank you for your interest in contributing to **OpenWebUI Extras**! We welcome contributions of plugins, prompts, documentation, and more.
|
Thank you for your interest in contributing to **OpenWebUI Extensions**! We welcome contributions of plugins, prompts, documentation, and more.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -181,6 +181,6 @@ By contributing, you agree that your contributions will be licensed under the sa
|
|||||||
|
|
||||||
## 🙏 Thank You!
|
## 🙏 Thank You!
|
||||||
|
|
||||||
Every contribution, no matter how small, helps make OpenWebUI Extras better for everyone. Thank you for being part of our community!
|
Every contribution, no matter how small, helps make OpenWebUI Extensions better for everyone. Thank you for being part of our community!
|
||||||
|
|
||||||
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/awesome-openwebui){ .md-button .md-button--primary }
|
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/openwebui-extensions){ .md-button .md-button--primary }
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# 贡献指南
|
# 贡献指南
|
||||||
|
|
||||||
感谢你对 **OpenWebUI Extras** 的兴趣!我们欢迎各种形式的贡献,包括插件、提示词、文档等。
|
感谢你对 **OpenWebUI Extensions** 的兴趣!我们欢迎各种形式的贡献,包括插件、提示词、文档等。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -181,6 +181,6 @@ Update: 插件开发指南添加新示例
|
|||||||
|
|
||||||
## 🙏 感谢
|
## 🙏 感谢
|
||||||
|
|
||||||
每一份贡献,无论大小,都有助于让 OpenWebUI Extras 变得更好。感谢你成为我们社区的一员!
|
每一份贡献,无论大小,都有助于让 OpenWebUI Extensions 变得更好。感谢你成为我们社区的一员!
|
||||||
|
|
||||||
[:fontawesome-brands-github: 在 GitHub 上查看](https://github.com/Fu-Jie/awesome-openwebui){ .md-button .md-button--primary }
|
[:fontawesome-brands-github: 在 GitHub 上查看](https://github.com/Fu-Jie/openwebui-extensions){ .md-button .md-button--primary }
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# 贡献指南
|
# 贡献指南
|
||||||
|
|
||||||
感谢你对 **OpenWebUI Extras** 的兴趣!我们欢迎各种形式的贡献,包括插件、提示词、文档等。
|
感谢你对 **OpenWebUI Extensions** 的兴趣!我们欢迎各种形式的贡献,包括插件、提示词、文档等。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -181,6 +181,6 @@ Update: 插件开发指南添加新示例
|
|||||||
|
|
||||||
## 🙏 感谢
|
## 🙏 感谢
|
||||||
|
|
||||||
每一份贡献,无论大小,都有助于让 OpenWebUI Extras 变得更好。感谢你成为我们社区的一员!
|
每一份贡献,无论大小,都有助于让 OpenWebUI Extensions 变得更好。感谢你成为我们社区的一员!
|
||||||
|
|
||||||
[:fontawesome-brands-github: 在 GitHub 上查看](https://github.com/Fu-Jie/awesome-openwebui){ .md-button .md-button--primary }
|
[:fontawesome-brands-github: 在 GitHub 上查看](https://github.com/Fu-Jie/openwebui-extensions){ .md-button .md-button--primary }
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Documentation Writing Guide
|
# Documentation Writing Guide
|
||||||
|
|
||||||
This guide explains how to write and contribute documentation for OpenWebUI Extras.
|
This guide explains how to write and contribute documentation for OpenWebUI Extensions.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -21,8 +21,8 @@ Our documentation is built with [MkDocs](https://www.mkdocs.org/) and the [Mater
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Clone the repository
|
# Clone the repository
|
||||||
git clone https://github.com/Fu-Jie/awesome-openwebui.git
|
git clone https://github.com/Fu-Jie/openwebui-extensions.git
|
||||||
cd awesome-openwebui
|
cd openwebui-extensions
|
||||||
|
|
||||||
# Install dependencies
|
# Install dependencies
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
@@ -122,7 +122,7 @@ Step-by-step usage instructions.
|
|||||||
|
|
||||||
## Source Code
|
## Source Code
|
||||||
|
|
||||||
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/...){ .md-button }
|
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/...){ .md-button }
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# 文档编写指南
|
# 文档编写指南
|
||||||
|
|
||||||
本文介绍如何为 OpenWebUI Extras 编写与贡献文档。
|
本文介绍如何为 OpenWebUI Extensions 编写与贡献文档。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -21,8 +21,8 @@
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 克隆仓库
|
# 克隆仓库
|
||||||
git clone https://github.com/Fu-Jie/awesome-openwebui.git
|
git clone https://github.com/Fu-Jie/openwebui-extensions.git
|
||||||
cd awesome-openwebui
|
cd openwebui-extensions
|
||||||
|
|
||||||
# 安装依赖
|
# 安装依赖
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
@@ -122,7 +122,7 @@ Step-by-step usage instructions.
|
|||||||
|
|
||||||
## Source Code
|
## Source Code
|
||||||
|
|
||||||
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/...){ .md-button }
|
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/...){ .md-button }
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
150
docs/development/frontend-console-debugging.md
Normal file
150
docs/development/frontend-console-debugging.md
Normal file
@@ -0,0 +1,150 @@
|
|||||||
|
# 🛠️ Debugging Python Plugins with Frontend Console
|
||||||
|
|
||||||
|
When developing plugins for Open WebUI, debugging can be challenging. Standard `print()` statements or server-side logging might not always be accessible, especially in hosted environments or when you want to see the data flow in real-time alongside the UI interactions.
|
||||||
|
|
||||||
|
This guide introduces a powerful technique: **Frontend Console Debugging**. By injecting JavaScript from your Python plugin, you can print structured logs directly to the browser's Developer Tools console (F12).
|
||||||
|
|
||||||
|
## Why Frontend Debugging?
|
||||||
|
|
||||||
|
* **Real-time Feedback**: See logs immediately as actions happen in the browser.
|
||||||
|
* **Rich Objects**: Inspect complex JSON objects (like `body` or `messages`) interactively, rather than reading massive text dumps.
|
||||||
|
* **No Server Access Needed**: Debug issues even if you don't have SSH/Console access to the backend server.
|
||||||
|
* **Clean Output**: Group logs using `console.group()` to keep your console organized.
|
||||||
|
|
||||||
|
## The Core Mechanism
|
||||||
|
|
||||||
|
Open WebUI plugins (both Actions and Filters) support an event system. We can leverage the `__event_call__` (or sometimes `__event_emitter__`) to send a special event of type `execute`. This tells the frontend to run the provided JavaScript code.
|
||||||
|
|
||||||
|
### The Helper Method
|
||||||
|
|
||||||
|
To make this easy to use, we recommend adding a helper method `_emit_debug_log` to your plugin class.
|
||||||
|
|
||||||
|
```python
|
||||||
|
import json
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
async def _emit_debug_log(
|
||||||
|
self,
|
||||||
|
__event_call__,
|
||||||
|
title: str,
|
||||||
|
data: dict
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
Emit debug log to browser console via JS execution.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
__event_call__: The event callable passed to action/outlet.
|
||||||
|
title: A title for the log group.
|
||||||
|
data: A dictionary of data to log.
|
||||||
|
"""
|
||||||
|
# 1. Check if debugging is enabled (recommended)
|
||||||
|
if not getattr(self.valves, "show_debug_log", True) or not __event_call__:
|
||||||
|
return
|
||||||
|
|
||||||
|
try:
|
||||||
|
# 2. Construct the JavaScript code
|
||||||
|
# We use an async IIFE (Immediately Invoked Function Expression)
|
||||||
|
# to ensure a clean scope and support await if needed.
|
||||||
|
js_code = f"""
|
||||||
|
(async function() {{
|
||||||
|
console.group("🛠️ Plugin Debug: {title}");
|
||||||
|
console.log({json.dumps(data, ensure_ascii=False)});
|
||||||
|
console.groupEnd();
|
||||||
|
}})();
|
||||||
|
"""
|
||||||
|
|
||||||
|
# 3. Send the execute event
|
||||||
|
await __event_call__(
|
||||||
|
{
|
||||||
|
"type": "execute",
|
||||||
|
"data": {"code": js_code},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error emitting debug log: {e}")
|
||||||
|
```
|
||||||
|
|
||||||
|
## Implementation Steps
|
||||||
|
|
||||||
|
### 1. Add a Valve for Control
|
||||||
|
|
||||||
|
It's best practice to make debugging optional so it doesn't clutter the console for normal users.
|
||||||
|
|
||||||
|
```python
|
||||||
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
class Filter:
|
||||||
|
class Valves(BaseModel):
|
||||||
|
show_debug_log: bool = Field(
|
||||||
|
default=False,
|
||||||
|
description="Print debug logs to browser console (F12)"
|
||||||
|
)
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.valves = self.Valves()
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Inject `__event_call__`
|
||||||
|
|
||||||
|
Ensure your `action` (for Actions) or `outlet` (for Filters) method accepts `__event_call__`.
|
||||||
|
|
||||||
|
**For Filters (`outlet`):**
|
||||||
|
|
||||||
|
```python
|
||||||
|
async def outlet(
|
||||||
|
self,
|
||||||
|
body: dict,
|
||||||
|
__user__: Optional[dict] = None,
|
||||||
|
__event_call__=None, # <--- Add this
|
||||||
|
__metadata__: Optional[dict] = None,
|
||||||
|
) -> dict:
|
||||||
|
```
|
||||||
|
|
||||||
|
**For Actions (`action`):**
|
||||||
|
|
||||||
|
```python
|
||||||
|
async def action(
|
||||||
|
self,
|
||||||
|
body: dict,
|
||||||
|
__user__=None,
|
||||||
|
__event_call__=None, # <--- Add this
|
||||||
|
__request__=None,
|
||||||
|
):
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Call the Helper
|
||||||
|
|
||||||
|
Now you can log anything, anywhere in your logic!
|
||||||
|
|
||||||
|
```python
|
||||||
|
# Inside your logic...
|
||||||
|
new_content = self.process_content(content)
|
||||||
|
|
||||||
|
# Log the before and after
|
||||||
|
await self._emit_debug_log(
|
||||||
|
__event_call__,
|
||||||
|
"Content Normalization",
|
||||||
|
{
|
||||||
|
"original": content,
|
||||||
|
"processed": new_content,
|
||||||
|
"changes": diff_list
|
||||||
|
}
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
|
||||||
|
1. **Use `json.dumps`**: Always serialize your Python dictionaries to JSON strings before embedding them in the f-string. This handles escaping quotes and special characters correctly.
|
||||||
|
2. **Async IIFE**: Wrapping your JS in `(async function() { ... })();` is safer than raw code. It prevents variable collisions with other scripts and allows using `await` inside your debug script if you ever need to check DOM elements.
|
||||||
|
3. **Check for None**: Always check if `__event_call__` is not None before using it, as it might not be available in all contexts (e.g., when running tests or in older Open WebUI versions).
|
||||||
|
|
||||||
|
## Example Output
|
||||||
|
|
||||||
|
When enabled, your browser console will show:
|
||||||
|
|
||||||
|
```text
|
||||||
|
> 🛠️ Plugin Debug: Content Normalization
|
||||||
|
> {original: "...", processed: "...", changes: [...]}
|
||||||
|
```
|
||||||
|
|
||||||
|
You can expand the object to inspect every detail of your data. Happy debugging!
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Development
|
# Development
|
||||||
|
|
||||||
Learn how to develop plugins and contribute to OpenWebUI Extras.
|
Learn how to develop plugins and contribute to OpenWebUI Extensions.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -164,5 +164,5 @@ user_language = __user__.get("language", "en-US")
|
|||||||
## Resources
|
## Resources
|
||||||
|
|
||||||
- [Full Development Guide](plugin-guide.md)
|
- [Full Development Guide](plugin-guide.md)
|
||||||
- [Plugin Examples](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins)
|
- [Plugin Examples](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins)
|
||||||
- [OpenWebUI Documentation](https://docs.openwebui.com/)
|
- [OpenWebUI Documentation](https://docs.openwebui.com/)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# 开发指南
|
# 开发指南
|
||||||
|
|
||||||
了解如何开发插件并为 OpenWebUI Extras 做出贡献。
|
了解如何开发插件并为 OpenWebUI Extensions 做出贡献。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -164,5 +164,5 @@ user_language = __user__.get("language", "en-US")
|
|||||||
## 资源
|
## 资源
|
||||||
|
|
||||||
- [完整开发指南](plugin-guide.md)
|
- [完整开发指南](plugin-guide.md)
|
||||||
- [插件示例](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins)
|
- [插件示例](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins)
|
||||||
- [OpenWebUI 文档](https://docs.openwebui.com/)
|
- [OpenWebUI 文档](https://docs.openwebui.com/)
|
||||||
|
|||||||
64
docs/development/mermaid-syntax-standards.md
Normal file
64
docs/development/mermaid-syntax-standards.md
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
# Mermaid Syntax Standards & Best Practices
|
||||||
|
|
||||||
|
This document summarizes the official syntax standards for Mermaid flowcharts, focusing on node labels, quoting rules, and special character handling. It serves as a reference for the `markdown_normalizer` plugin logic.
|
||||||
|
|
||||||
|
## 1. Node Shapes & Syntax
|
||||||
|
|
||||||
|
Mermaid supports various node shapes defined by specific wrapping characters.
|
||||||
|
|
||||||
|
| Shape | Syntax | Example |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| **Rectangle** (Default) | `id[Label]` | `A[Start]` |
|
||||||
|
| **Rounded** | `id(Label)` | `B(Process)` |
|
||||||
|
| **Stadium** (Pill) | `id([Label])` | `C([End])` |
|
||||||
|
| **Subroutine** | `id[[Label]]` | `D[[Subroutine]]` |
|
||||||
|
| **Cylinder** (Database) | `id[(Label)]` | `E[(Database)]` |
|
||||||
|
| **Circle** | `id((Label))` | `F((Point))` |
|
||||||
|
| **Double Circle** | `id(((Label)))` | `G(((Endpoint)))` |
|
||||||
|
| **Asymmetric** | `id>Label]` | `H>Flag]` |
|
||||||
|
| **Rhombus** (Decision) | `id{Label}` | `I{Decision}` |
|
||||||
|
| **Hexagon** | `id{{Label}}` | `J{{Prepare}}` |
|
||||||
|
| **Parallelogram** | `id[/Label/]` | `K[/Input/]` |
|
||||||
|
| **Parallelogram Alt** | `id[\Label\]` | `L[\Output\]` |
|
||||||
|
| **Trapezoid** | `id[/Label\]` | `M[/Trap/]` |
|
||||||
|
| **Trapezoid Alt** | `id[\Label/]` | `N[\TrapAlt/]` |
|
||||||
|
|
||||||
|
## 2. Quoting Rules (Critical)
|
||||||
|
|
||||||
|
### Why Quote?
|
||||||
|
Quoting node labels is **highly recommended** and sometimes **mandatory** to prevent syntax errors.
|
||||||
|
|
||||||
|
### Mandatory Quoting Scenarios
|
||||||
|
You **MUST** enclose labels in double quotes `"` if they contain:
|
||||||
|
1. **Special Characters**: `()`, `[]`, `{}`, `;`, `"`, etc.
|
||||||
|
2. **Keywords**: Words like `end`, `subgraph`, etc., if used in specific contexts.
|
||||||
|
3. **Unicode/Emoji**: While often supported without quotes, quoting ensures consistent rendering across different environments.
|
||||||
|
4. **Markdown**: If you want to use Markdown formatting (bold, italic) inside a label.
|
||||||
|
|
||||||
|
### Best Practice: Always Quote
|
||||||
|
To ensure robustness, especially when processing LLM-generated content which may contain unpredictable characters, **always enclosing labels in double quotes is the safest strategy**.
|
||||||
|
|
||||||
|
**Examples:**
|
||||||
|
* ❌ Risky: `id(Start: 15:00)` (Colon might be interpreted as style separator)
|
||||||
|
* ✅ Safe: `id("Start: 15:00")`
|
||||||
|
* ❌ Broken: `id(Func(x))` (Nested parentheses break parsing)
|
||||||
|
* ✅ Safe: `id("Func(x)")`
|
||||||
|
|
||||||
|
## 3. Escape Characters
|
||||||
|
|
||||||
|
Inside a quoted string:
|
||||||
|
* Double quotes `"` must be escaped as `\"`.
|
||||||
|
* HTML entities (e.g., `#35;` for `#`) can be used.
|
||||||
|
|
||||||
|
## 4. Plugin Logic Verification
|
||||||
|
|
||||||
|
The `markdown_normalizer` plugin implements the following logic:
|
||||||
|
|
||||||
|
1. **Detection**: Identifies Mermaid node definitions using a comprehensive regex covering all shapes above.
|
||||||
|
2. **Normalization**:
|
||||||
|
* Checks if the label is already quoted.
|
||||||
|
* If **NOT quoted**, it wraps the label in double quotes `""`.
|
||||||
|
* Escapes any existing double quotes inside the label (`"` -> `\"`).
|
||||||
|
3. **Shape Preservation**: The regex captures the specific opening and closing delimiters (e.g., `((` and `))`) to ensure the node shape is strictly preserved during normalization.
|
||||||
|
|
||||||
|
**Conclusion**: The plugin's behavior of automatically adding quotes to unquoted labels is **fully aligned with Mermaid's official best practices** for robustness and error prevention.
|
||||||
@@ -7,10 +7,10 @@
|
|||||||
## 📚 Table of Contents
|
## 📚 Table of Contents
|
||||||
|
|
||||||
1. [Quick Start](#1-quick-start)
|
1. [Quick Start](#1-quick-start)
|
||||||
2. [Core Concepts & SDK Details](#2-core-concepts--sdk-details)
|
2. [Core Concepts & SDK Details](#2-core-concepts-sdk-details)
|
||||||
3. [Deep Dive into Plugin Types](#3-deep-dive-into-plugin-types)
|
3. [Deep Dive into Plugin Types](#3-deep-dive-into-plugin-types)
|
||||||
4. [Advanced Development Patterns](#4-advanced-development-patterns)
|
4. [Advanced Development Patterns](#4-advanced-development-patterns)
|
||||||
5. [Best Practices & Design Principles](#5-best-practices--design-principles)
|
5. [Best Practices & Design Principles](#5-best-practices-design-principles)
|
||||||
6. [Troubleshooting](#6-troubleshooting)
|
6. [Troubleshooting](#6-troubleshooting)
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -351,8 +351,7 @@ async def action(self, body, __event_call__, __metadata__, ...):
|
|||||||
|
|
||||||
#### Reference Implementations
|
#### Reference Implementations
|
||||||
|
|
||||||
- `plugins/actions/js-render-poc/infographic_markdown.py` - AntV Infographic + Data URL
|
- `plugins/actions/infographic/infographic.py` - Production-ready implementation using AntV + Data URL
|
||||||
- `plugins/actions/js-render-poc/js_render_poc.py` - Basic proof of concept
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -407,6 +406,6 @@ except Exception as e:
|
|||||||
|
|
||||||
## Additional Resources
|
## Additional Resources
|
||||||
|
|
||||||
- [:fontawesome-brands-github: Plugin Examples](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins)
|
- [:fontawesome-brands-github: Plugin Examples](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins)
|
||||||
- [:material-book-open-variant: OpenWebUI Official Docs](https://docs.openwebui.com/)
|
- [:material-book-open-variant: OpenWebUI Official Docs](https://docs.openwebui.com/)
|
||||||
- [:material-forum: Community Discussions](https://github.com/open-webui/open-webui/discussions)
|
- [:material-forum: Community Discussions](https://github.com/open-webui/open-webui/discussions)
|
||||||
|
|||||||
@@ -4,19 +4,19 @@
|
|||||||
|
|
||||||
## 📚 目录
|
## 📚 目录
|
||||||
|
|
||||||
1. [插件开发快速入门](#1-插件开发快速入门)
|
1. [插件开发快速入门](#1-quick-start)
|
||||||
2. [核心概念与 SDK 详解](#2-核心概念与-sdk-详解)
|
2. [核心概念与 SDK 详解](#2-core-concepts-sdk-details)
|
||||||
3. [插件类型深度解析](#3-插件类型深度解析)
|
3. [插件类型深度解析](#3-plugin-types)
|
||||||
* [Action (动作)](#31-action-动作)
|
* [Action (动作)](#31-action)
|
||||||
* [Filter (过滤器)](#32-filter-过滤器)
|
* [Filter (过滤器)](#32-filter)
|
||||||
* [Pipe (管道)](#33-pipe-管道)
|
* [Pipe (管道)](#33-pipe)
|
||||||
4. [高级开发模式](#4-高级开发模式)
|
4. [高级开发模式](#4-advanced-patterns)
|
||||||
5. [最佳实践与设计原则](#5-最佳实践与设计原则)
|
5. [最佳实践与设计原则](#5-best-practices)
|
||||||
6. [故障排查](#6-故障排查)
|
6. [故障排查](#6-troubleshooting)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 1. 插件开发快速入门
|
## 1. 插件开发快速入门 {: #1-quick-start }
|
||||||
|
|
||||||
### 1.1 什么是 OpenWebUI 插件?
|
### 1.1 什么是 OpenWebUI 插件?
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ class Action:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2. 核心概念与 SDK 详解
|
## 2. 核心概念与 SDK 详解 {: #2-core-concepts-sdk-details }
|
||||||
|
|
||||||
### 2.1 ⚠️ 重要:同步与异步
|
### 2.1 ⚠️ 重要:同步与异步
|
||||||
|
|
||||||
@@ -107,9 +107,9 @@ class Filter:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 3. 插件类型深度解析
|
## 3. 插件类型深度解析 {: #3-plugin-types }
|
||||||
|
|
||||||
### 3.1 Action (动作)
|
### 3.1 Action (动作) {: #31-action }
|
||||||
|
|
||||||
**定位**:在消息下方添加按钮,用户点击触发。
|
**定位**:在消息下方添加按钮,用户点击触发。
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ async def action(self, body, __event_call__):
|
|||||||
await __event_call__({"type": "execute", "data": {"code": js}})
|
await __event_call__({"type": "execute", "data": {"code": js}})
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3.2 Filter (过滤器)
|
### 3.2 Filter (过滤器) {: #32-filter }
|
||||||
|
|
||||||
**定位**:中间件,拦截并修改请求/响应。
|
**定位**:中间件,拦截并修改请求/响应。
|
||||||
|
|
||||||
@@ -155,7 +155,7 @@ async def inlet(self, body, __metadata__):
|
|||||||
return body
|
return body
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3.3 Pipe (管道)
|
### 3.3 Pipe (管道) {: #33-pipe }
|
||||||
|
|
||||||
**定位**:自定义模型/代理。
|
**定位**:自定义模型/代理。
|
||||||
|
|
||||||
@@ -177,7 +177,7 @@ class Pipe:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 4. 高级开发模式
|
## 4. 高级开发模式 {: #4-advanced-patterns }
|
||||||
|
|
||||||
### 4.1 Pipe 与 Filter 协同
|
### 4.1 Pipe 与 Filter 协同
|
||||||
利用 `__request__.app.state` 在不同插件间共享数据。
|
利用 `__request__.app.state` 在不同插件间共享数据。
|
||||||
@@ -315,10 +315,9 @@ async def action(self, body, __event_call__, __metadata__, ...):
|
|||||||
|
|
||||||
#### 参考实现
|
#### 参考实现
|
||||||
|
|
||||||
- `plugins/actions/js-render-poc/infographic_markdown.py` - AntV 信息图 + Data URL
|
- `plugins/actions/infographic/infographic.py` - 基于 AntV + Data URL 的生产级实现
|
||||||
- `plugins/actions/js-render-poc/js_render_poc.py` - 基础概念验证
|
|
||||||
|
|
||||||
## 5. 最佳实践与设计原则
|
## 5. 最佳实践与设计原则 {: #5-best-practices }
|
||||||
|
|
||||||
### 5.1 命名与定位
|
### 5.1 命名与定位
|
||||||
* **简短有力**:如 "闪记卡", "精读"。避免 "文本分析助手" 这种泛词。
|
* **简短有力**:如 "闪记卡", "精读"。避免 "文本分析助手" 这种泛词。
|
||||||
@@ -344,7 +343,7 @@ except Exception as e:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 6. 故障排查
|
## 6. 故障排查 {: #6-troubleshooting }
|
||||||
|
|
||||||
* **HTML 不显示?** 确保包裹在 ` ```html ... ``` ` 代码块中。
|
* **HTML 不显示?** 确保包裹在 ` ```html ... ``` ` 代码块中。
|
||||||
* **数据库报错?** 检查是否在 `async` 函数中直接调用了同步的 DB 方法,请使用 `asyncio.to_thread`。
|
* **数据库报错?** 检查是否在 `async` 函数中直接调用了同步的 DB 方法,请使用 `asyncio.to_thread`。
|
||||||
|
|||||||
22
docs/extensions/index.md
Normal file
22
docs/extensions/index.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
title: Extensions
|
||||||
|
---
|
||||||
|
|
||||||
|
# Extensions
|
||||||
|
|
||||||
|
Standalone frontend extensions to supercharge your Open WebUI.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Open WebUI Prompt Plus
|
||||||
|
|
||||||
|
**An all-in-one prompt management suite for power users.**
|
||||||
|
|
||||||
|
[Open WebUI Prompt Plus](https://github.com/Fu-Jie/open-webui-prompt-plus) elevates your experience with:
|
||||||
|
|
||||||
|
- **🤖 AI-Powered Prompt Generator**: Turn natural language into structured prompts.
|
||||||
|
- **⚡ Quick Insert Panel**: Spotlight-style search (`Cmd/Ctrl + Shift + P`).
|
||||||
|
- **📂 Advanced Management**: Dynamic categories, favorites, and usage stats.
|
||||||
|
- **📝 Native Variable Support**: Visual form rendering for template variables.
|
||||||
|
|
||||||
|
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/open-webui-prompt-plus){ .md-button .md-button--primary }
|
||||||
22
docs/extensions/index.zh.md
Normal file
22
docs/extensions/index.zh.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
title: 扩展 (Extensions)
|
||||||
|
---
|
||||||
|
|
||||||
|
# 扩展 (Extensions)
|
||||||
|
|
||||||
|
Open WebUI 的独立前端增强扩展。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Open WebUI Prompt Plus
|
||||||
|
|
||||||
|
**专为高级用户打造的一站式提示词管理套件。**
|
||||||
|
|
||||||
|
[Open WebUI Prompt Plus](https://github.com/Fu-Jie/open-webui-prompt-plus) 通过以下功能提升您的体验:
|
||||||
|
|
||||||
|
- **🤖 AI 提示词生成器**: 将自然语言转化为结构化提示词。
|
||||||
|
- **⚡ 快速插入面板**: Spotlight 风格的快速搜索 (`Cmd/Ctrl + Shift + P`)。
|
||||||
|
- **📂 高级管理**: 动态分类、收藏夹及使用统计。
|
||||||
|
- **📝 原生变量支持**: 模板变量的可视化表单渲染。
|
||||||
|
|
||||||
|
[:fontawesome-brands-github: 查看 GitHub](https://github.com/Fu-Jie/open-webui-prompt-plus){ .md-button .md-button--primary }
|
||||||
@@ -349,6 +349,53 @@ await __event_emitter__(
|
|||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Advanced Use Case: Retrieving Frontend Data
|
||||||
|
|
||||||
|
One of the most powerful capabilities of the `execute` event type is the ability to fetch data from the browser environment (JavaScript) and return it to your Python backend. This allows plugins to access information like:
|
||||||
|
|
||||||
|
- `localStorage` items (user preferences, tokens)
|
||||||
|
- `navigator` properties (language, geolocation, platform)
|
||||||
|
- `document` properties (cookies, URL parameters)
|
||||||
|
|
||||||
|
**How it works:**
|
||||||
|
The JavaScript code you provide in the `"code"` field is executed in the browser. If your JS code includes a `return` statement, that value is sent back to Python as the result of `await __event_call__`.
|
||||||
|
|
||||||
|
**Example: Getting the User's UI Language**
|
||||||
|
|
||||||
|
```python
|
||||||
|
try:
|
||||||
|
# Execute JS on the frontend to get language settings
|
||||||
|
response = await __event_call__(
|
||||||
|
{
|
||||||
|
"type": "execute",
|
||||||
|
"data": {
|
||||||
|
# This JS code runs in the browser.
|
||||||
|
# The 'return' value is sent back to Python.
|
||||||
|
"code": """
|
||||||
|
return (
|
||||||
|
localStorage.getItem('locale') ||
|
||||||
|
localStorage.getItem('language') ||
|
||||||
|
navigator.language ||
|
||||||
|
'en-US'
|
||||||
|
);
|
||||||
|
""",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# 'response' will contain the string returned by JS (e.g., "en-US", "zh-CN")
|
||||||
|
# Note: Wrap in try-except to handle potential timeouts or JS errors
|
||||||
|
logger.info(f"Frontend Language: {response}")
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Failed to get frontend data: {e}")
|
||||||
|
```
|
||||||
|
|
||||||
|
**Key capabilities unlocked:**
|
||||||
|
- **Context Awareness:** Adapt responses based on user time zone or language.
|
||||||
|
- **Client-Side Storage:** Use `localStorage` to persist simple plugin settings without a database.
|
||||||
|
- **Hardware Access:** Request geolocation or clipboard access (requires user permission).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🏗️ When & Where to Use Events
|
## 🏗️ When & Where to Use Events
|
||||||
|
|||||||
@@ -4,17 +4,17 @@ hide:
|
|||||||
- toc
|
- toc
|
||||||
---
|
---
|
||||||
|
|
||||||
# Welcome to OpenWebUI Extras
|
# Welcome to OpenWebUI Extensions
|
||||||
|
|
||||||
<div class="hero-section" markdown>
|
<div class="hero-section" markdown>
|
||||||
<div class="hero-content" markdown>
|
<div class="hero-content" markdown>
|
||||||
|
|
||||||
# 🚀 Supercharge Your OpenWebUI Experience
|
# 🚀 Supercharge Your OpenWebUI Experience
|
||||||
|
|
||||||
**OpenWebUI Extras** is a curated collection of plugins, prompts, and enhancements designed to extend the functionality of [OpenWebUI](https://github.com/open-webui/open-webui).
|
**OpenWebUI Extensions** is a curated collection of plugins, prompts, and enhancements designed to extend the functionality of [OpenWebUI](https://github.com/open-webui/open-webui).
|
||||||
|
|
||||||
[Get Started :material-arrow-right:](#quick-navigation){ .md-button .md-button--primary }
|
[Get Started :material-arrow-right:](#quick-navigation){ .md-button .md-button--primary }
|
||||||
[View on GitHub :fontawesome-brands-github:](https://github.com/Fu-Jie/awesome-openwebui){ .md-button }
|
[View on GitHub :fontawesome-brands-github:](https://github.com/Fu-Jie/openwebui-extensions){ .md-button }
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -49,6 +49,14 @@ hide:
|
|||||||
|
|
||||||
[:octicons-arrow-right-24: View Guides](enhancements/index.md)
|
[:octicons-arrow-right-24: View Guides](enhancements/index.md)
|
||||||
|
|
||||||
|
- :material-rocket-launch:{ .lg .middle } **Extensions**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Standalone frontend extensions to supercharge your Open WebUI interface.
|
||||||
|
|
||||||
|
[:octicons-arrow-right-24: Browse Extensions](extensions/index.md)
|
||||||
|
|
||||||
- :material-book-open-page-variant:{ .lg .middle } **Development**
|
- :material-book-open-page-variant:{ .lg .middle } **Development**
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -73,13 +81,13 @@ hide:
|
|||||||
|
|
||||||
[:octicons-arrow-right-24: Learn More](plugins/actions/smart-mind-map.md)
|
[:octicons-arrow-right-24: Learn More](plugins/actions/smart-mind-map.md)
|
||||||
|
|
||||||
- :material-card-text:{ .lg .middle } **Knowledge Card**
|
- :material-card-text:{ .lg .middle } **Flash Card**
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Quickly generates beautiful learning memory cards, perfect for studying and quick memorization.
|
Quickly generates beautiful flashcards from text, extracting key points and categories.
|
||||||
|
|
||||||
[:octicons-arrow-right-24: Learn More](plugins/actions/knowledge-card.md)
|
[:octicons-arrow-right-24: Learn More](plugins/actions/flash-card.md)
|
||||||
|
|
||||||
- :material-arrow-collapse-vertical:{ .lg .middle } **Async Context Compression**
|
- :material-arrow-collapse-vertical:{ .lg .middle } **Async Context Compression**
|
||||||
|
|
||||||
@@ -127,6 +135,6 @@ We welcome contributions! Whether it's a new plugin, a helpful prompt, or docume
|
|||||||
|
|
||||||
<div class="footer-stats" markdown>
|
<div class="footer-stats" markdown>
|
||||||
|
|
||||||
**OpenWebUI Extras** - Making AI interactions more powerful and productive.
|
**OpenWebUI Extensions** - Making AI interactions more powerful and productive.
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -4,17 +4,17 @@ hide:
|
|||||||
- toc
|
- toc
|
||||||
---
|
---
|
||||||
|
|
||||||
# 欢迎来到 OpenWebUI Extras
|
# 欢迎来到 OpenWebUI Extensions
|
||||||
|
|
||||||
<div class="hero-section" markdown>
|
<div class="hero-section" markdown>
|
||||||
<div class="hero-content" markdown>
|
<div class="hero-content" markdown>
|
||||||
|
|
||||||
# 🚀 增强你的 OpenWebUI 体验
|
# 🚀 增强你的 OpenWebUI 体验
|
||||||
|
|
||||||
**OpenWebUI Extras** 是一个精心整理的插件、提示词和增强功能集合,旨在扩展 [OpenWebUI](https://github.com/open-webui/open-webui) 的功能。
|
**OpenWebUI Extensions** 是一个精心整理的插件、提示词和增强功能集合,旨在扩展 [OpenWebUI](https://github.com/open-webui/open-webui) 的功能。
|
||||||
|
|
||||||
[开始使用 :material-arrow-right:](#快速导航){ .md-button .md-button--primary }
|
[开始使用 :material-arrow-right:](#快速导航){ .md-button .md-button--primary }
|
||||||
[在 GitHub 上查看 :fontawesome-brands-github:](https://github.com/Fu-Jie/awesome-openwebui){ .md-button }
|
[在 GitHub 上查看 :fontawesome-brands-github:](https://github.com/Fu-Jie/openwebui-extensions){ .md-button }
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -49,6 +49,14 @@ hide:
|
|||||||
|
|
||||||
[:octicons-arrow-right-24: 查看指南](enhancements/index.md)
|
[:octicons-arrow-right-24: 查看指南](enhancements/index.md)
|
||||||
|
|
||||||
|
- :material-rocket-launch:{ .lg .middle } **扩展 (Extensions)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
独立的 OpenWebUI 前端增强扩展,全面提升交互体验。
|
||||||
|
|
||||||
|
[:octicons-arrow-right-24: 浏览扩展](extensions/index.md)
|
||||||
|
|
||||||
- :material-book-open-page-variant:{ .lg .middle } **开发指南**
|
- :material-book-open-page-variant:{ .lg .middle } **开发指南**
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -73,13 +81,13 @@ hide:
|
|||||||
|
|
||||||
[:octicons-arrow-right-24: 了解更多](plugins/actions/smart-mind-map.md)
|
[:octicons-arrow-right-24: 了解更多](plugins/actions/smart-mind-map.md)
|
||||||
|
|
||||||
- :material-card-text:{ .lg .middle } **知识卡片**
|
- :material-card-text:{ .lg .middle } **Flash Card(闪记卡)**
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
快速生成精美的学习记忆卡片,非常适合学习和快速记忆。
|
快速生成精美的学习记忆卡片,非常适合学习和快速记忆。
|
||||||
|
|
||||||
[:octicons-arrow-right-24: 了解更多](plugins/actions/knowledge-card.md)
|
[:octicons-arrow-right-24: 了解更多](plugins/actions/flash-card.md)
|
||||||
|
|
||||||
- :material-arrow-collapse-vertical:{ .lg .middle } **异步上下文压缩**
|
- :material-arrow-collapse-vertical:{ .lg .middle } **异步上下文压缩**
|
||||||
|
|
||||||
@@ -127,6 +135,6 @@ hide:
|
|||||||
|
|
||||||
<div class="footer-stats" markdown>
|
<div class="footer-stats" markdown>
|
||||||
|
|
||||||
**OpenWebUI Extras** - 让 AI 交互更强大、更高效。
|
**OpenWebUI Extensions** - 让 AI 交互更强大、更高效。
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ if (response.ok) {
|
|||||||
|
|
||||||
## 完整示例
|
## 完整示例
|
||||||
|
|
||||||
参考 [js_render_poc.py](https://github.com/Fu-Jie/awesome-openwebui/blob/main/plugins/actions/js-render-poc/js_render_poc.py) 获取完整的 PoC 实现。
|
参考 [js_render_poc.py](https://github.com/Fu-Jie/openwebui-extensions/blob/main/plugins/actions/js-render-poc/js_render_poc.py) 获取完整的 PoC 实现。
|
||||||
|
|
||||||
## 事件类型
|
## 事件类型
|
||||||
|
|
||||||
|
|||||||
111
docs/plugins/actions/deep-dive.md
Normal file
111
docs/plugins/actions/deep-dive.md
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
# Deep Dive
|
||||||
|
|
||||||
|
<span class="category-badge action">Action</span>
|
||||||
|
<span class="version-badge">v1.0.0</span>
|
||||||
|
|
||||||
|
A comprehensive thinking lens that dives deep into any content - from context to logic, insights, and action paths.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
The Deep Dive plugin transforms how you understand complex content by guiding you through a structured thinking process. Rather than just summarizing, it deconstructs content across four phases:
|
||||||
|
|
||||||
|
- **🔍 The Context (What?)**: Panoramic view of the situation and background
|
||||||
|
- **🧠 The Logic (Why?)**: Deconstruction of reasoning and mental models
|
||||||
|
- **💎 The Insight (So What?)**: Non-obvious value and hidden implications
|
||||||
|
- **🚀 The Path (Now What?)**: Specific, prioritized strategic actions
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- :material-brain: **Thinking Chain**: Complete structured analysis process
|
||||||
|
- :material-eye: **Deep Understanding**: Reveals hidden assumptions and blind spots
|
||||||
|
- :material-lightbulb-on: **Insight Extraction**: Finds the "Aha!" moments
|
||||||
|
- :material-rocket-launch: **Action Oriented**: Translates understanding into actionable steps
|
||||||
|
- :material-theme-light-dark: **Theme Adaptive**: Auto-adapts to OpenWebUI light/dark theme
|
||||||
|
- :material-translate: **Multi-language**: Outputs in user's preferred language
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
1. Download the plugin file: [`deep_dive.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/deep-dive)
|
||||||
|
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
||||||
|
3. Enable the plugin
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
1. Provide any long text, article, or meeting notes in the chat
|
||||||
|
2. Click the **Deep Dive** button in the message action bar
|
||||||
|
3. Follow the visual timeline from Context → Logic → Insight → Path
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
| Option | Type | Default | Description |
|
||||||
|
|--------|------|---------|-------------|
|
||||||
|
| `SHOW_STATUS` | boolean | `true` | Show status updates during processing |
|
||||||
|
| `MODEL_ID` | string | `""` | LLM model for analysis (empty = current model) |
|
||||||
|
| `MIN_TEXT_LENGTH` | integer | `200` | Minimum text length for analysis |
|
||||||
|
| `CLEAR_PREVIOUS_HTML` | boolean | `true` | Clear previous plugin results |
|
||||||
|
| `MESSAGE_COUNT` | integer | `1` | Number of recent messages to analyze |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Theme Support
|
||||||
|
|
||||||
|
Deep Dive automatically adapts to OpenWebUI's light/dark theme:
|
||||||
|
|
||||||
|
- Detects theme from parent document `<meta name="theme-color">` tag
|
||||||
|
- Falls back to `html/body` class or `data-theme` attribute
|
||||||
|
- Uses system preference `prefers-color-scheme: dark` as last resort
|
||||||
|
|
||||||
|
!!! tip "For Best Results"
|
||||||
|
Enable **iframe Sandbox Allow Same Origin** in OpenWebUI:
|
||||||
|
**Settings** → **Interface** → **Artifacts** → Check **iframe Sandbox Allow Same Origin**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Example Output
|
||||||
|
|
||||||
|
The plugin generates a beautiful structured timeline:
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────┐
|
||||||
|
│ 🌊 Deep Dive Analysis │
|
||||||
|
│ 👤 User 📅 Date 📊 Word count │
|
||||||
|
├─────────────────────────────────────┤
|
||||||
|
│ 🔍 Phase 01: The Context │
|
||||||
|
│ [High-level panoramic view] │
|
||||||
|
│ │
|
||||||
|
│ 🧠 Phase 02: The Logic │
|
||||||
|
│ • Reasoning structure... │
|
||||||
|
│ • Hidden assumptions... │
|
||||||
|
│ │
|
||||||
|
│ 💎 Phase 03: The Insight │
|
||||||
|
│ • Non-obvious value... │
|
||||||
|
│ • Blind spots revealed... │
|
||||||
|
│ │
|
||||||
|
│ 🚀 Phase 04: The Path │
|
||||||
|
│ ▸ Priority Action 1... │
|
||||||
|
│ ▸ Priority Action 2... │
|
||||||
|
└─────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
!!! note "Prerequisites"
|
||||||
|
- OpenWebUI v0.3.0 or later
|
||||||
|
- Uses the active LLM model for analysis
|
||||||
|
- Requires `markdown` Python package
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Source Code
|
||||||
|
|
||||||
|
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/deep-dive){ .md-button }
|
||||||
111
docs/plugins/actions/deep-dive.zh.md
Normal file
111
docs/plugins/actions/deep-dive.zh.md
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
# 精读 (Deep Dive)
|
||||||
|
|
||||||
|
<span class="category-badge action">Action</span>
|
||||||
|
<span class="version-badge">v1.0.0</span>
|
||||||
|
|
||||||
|
全方位的思维透镜 —— 从背景全景到逻辑脉络,从深度洞察到行动路径。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 概述
|
||||||
|
|
||||||
|
精读插件改变了您理解复杂内容的方式,通过结构化的思维过程引导您进行深度分析。它不仅仅是摘要,而是从四个阶段解构内容:
|
||||||
|
|
||||||
|
- **🔍 全景 (The Context)**: 情境与背景的高层级全景视图
|
||||||
|
- **🧠 脉络 (The Logic)**: 解构底层推理逻辑与思维模型
|
||||||
|
- **💎 洞察 (The Insight)**: 提取非显性价值与隐藏含义
|
||||||
|
- **🚀 路径 (The Path)**: 具体的、按优先级排列的战略行动
|
||||||
|
|
||||||
|
## 功能特性
|
||||||
|
|
||||||
|
- :material-brain: **思维链**: 完整的结构化分析过程
|
||||||
|
- :material-eye: **深度理解**: 揭示隐藏的假设和思维盲点
|
||||||
|
- :material-lightbulb-on: **洞察提取**: 发现"原来如此"的时刻
|
||||||
|
- :material-rocket-launch: **行动导向**: 将深度理解转化为可执行步骤
|
||||||
|
- :material-theme-light-dark: **主题自适应**: 自动适配 OpenWebUI 深色/浅色主题
|
||||||
|
- :material-translate: **多语言**: 以用户偏好语言输出
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 安装
|
||||||
|
|
||||||
|
1. 下载插件文件: [`deep_dive_cn.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/deep-dive)
|
||||||
|
2. 上传到 OpenWebUI: **管理面板** → **设置** → **Functions**
|
||||||
|
3. 启用插件
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 使用方法
|
||||||
|
|
||||||
|
1. 在聊天中提供任何长文本、文章或会议记录
|
||||||
|
2. 点击消息操作栏中的 **精读** 按钮
|
||||||
|
3. 沿着视觉时间轴从"全景"探索到"路径"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 配置参数
|
||||||
|
|
||||||
|
| 选项 | 类型 | 默认值 | 描述 |
|
||||||
|
|------|------|--------|------|
|
||||||
|
| `SHOW_STATUS` | boolean | `true` | 处理过程中是否显示状态更新 |
|
||||||
|
| `MODEL_ID` | string | `""` | 用于分析的 LLM 模型(空 = 当前模型) |
|
||||||
|
| `MIN_TEXT_LENGTH` | integer | `200` | 分析所需的最小文本长度 |
|
||||||
|
| `CLEAR_PREVIOUS_HTML` | boolean | `true` | 是否清除之前的插件结果 |
|
||||||
|
| `MESSAGE_COUNT` | integer | `1` | 要分析的最近消息数量 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 主题支持
|
||||||
|
|
||||||
|
精读插件自动适配 OpenWebUI 的深色/浅色主题:
|
||||||
|
|
||||||
|
- 从父文档 `<meta name="theme-color">` 标签检测主题
|
||||||
|
- 回退到 `html/body` 的 class 或 `data-theme` 属性
|
||||||
|
- 最后使用系统偏好 `prefers-color-scheme: dark`
|
||||||
|
|
||||||
|
!!! tip "最佳效果"
|
||||||
|
请在 OpenWebUI 中启用 **iframe Sandbox Allow Same Origin**:
|
||||||
|
**设置** → **界面** → **Artifacts** → 勾选 **iframe Sandbox Allow Same Origin**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 输出示例
|
||||||
|
|
||||||
|
插件生成精美的结构化时间轴:
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────┐
|
||||||
|
│ 📖 精读分析报告 │
|
||||||
|
│ 👤 用户 📅 日期 📊 字数 │
|
||||||
|
├─────────────────────────────────────┤
|
||||||
|
│ 🔍 阶段 01: 全景 (The Context) │
|
||||||
|
│ [高层级全景视图内容] │
|
||||||
|
│ │
|
||||||
|
│ 🧠 阶段 02: 脉络 (The Logic) │
|
||||||
|
│ • 推理结构分析... │
|
||||||
|
│ • 隐藏假设识别... │
|
||||||
|
│ │
|
||||||
|
│ 💎 阶段 03: 洞察 (The Insight) │
|
||||||
|
│ • 非显性价值提取... │
|
||||||
|
│ • 思维盲点揭示... │
|
||||||
|
│ │
|
||||||
|
│ 🚀 阶段 04: 路径 (The Path) │
|
||||||
|
│ ▸ 优先级行动 1... │
|
||||||
|
│ ▸ 优先级行动 2... │
|
||||||
|
└─────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 系统要求
|
||||||
|
|
||||||
|
!!! note "前提条件"
|
||||||
|
- OpenWebUI v0.3.0 或更高版本
|
||||||
|
- 使用当前活跃的 LLM 模型进行分析
|
||||||
|
- 需要 `markdown` Python 包
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 源代码
|
||||||
|
|
||||||
|
[:fontawesome-brands-github: 在 GitHub 上查看](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/deep-dive){ .md-button }
|
||||||
@@ -47,7 +47,7 @@ The Export to Excel plugin allows you to download your chat conversations as Exc
|
|||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
1. Download the plugin file: [`export_to_excel.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/export_to_excel)
|
1. Download the plugin file: [`export_to_excel.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/export_to_excel)
|
||||||
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
||||||
3. Enable the plugin
|
3. Enable the plugin
|
||||||
|
|
||||||
@@ -84,4 +84,4 @@ The exported Excel file contains:
|
|||||||
|
|
||||||
## Source Code
|
## Source Code
|
||||||
|
|
||||||
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/export_to_excel){ .md-button }
|
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/export_to_excel){ .md-button }
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ Export to Excel 插件可以把你的聊天记录下载为 Excel 文件,适用
|
|||||||
|
|
||||||
## 安装
|
## 安装
|
||||||
|
|
||||||
1. 下载插件文件:[`export_to_excel.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/export_to_excel)
|
1. 下载插件文件:[`export_to_excel.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/export_to_excel)
|
||||||
2. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**
|
2. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**
|
||||||
3. 启用插件
|
3. 启用插件
|
||||||
|
|
||||||
@@ -84,4 +84,4 @@ Export to Excel 插件可以把你的聊天记录下载为 Excel 文件,适用
|
|||||||
|
|
||||||
## 源码
|
## 源码
|
||||||
|
|
||||||
[:fontawesome-brands-github: 在 GitHub 查看](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/export_to_excel){ .md-button }
|
[:fontawesome-brands-github: 在 GitHub 查看](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/export_to_excel){ .md-button }
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Export to Word
|
# Export to Word
|
||||||
|
|
||||||
<span class="category-badge action">Action</span>
|
<span class="category-badge action">Action</span>
|
||||||
<span class="version-badge">v0.4.1</span>
|
<span class="version-badge">v0.4.4</span>
|
||||||
|
|
||||||
Export conversation to Word (.docx) with **syntax highlighting**, **native math equations**, **Mermaid diagrams**, **citations**, and **enhanced table formatting**.
|
Export conversation to Word (.docx) with **syntax highlighting**, **native math equations**, **Mermaid diagrams**, **citations**, and **enhanced table formatting**.
|
||||||
|
|
||||||
@@ -53,9 +53,17 @@ You can configure the following settings via the **Valves** button in the plugin
|
|||||||
| `MATH_ENABLE` | Enable LaTeX math block conversion. | `True` |
|
| `MATH_ENABLE` | Enable LaTeX math block conversion. | `True` |
|
||||||
| `MATH_INLINE_DOLLAR_ENABLE` | Enable inline `$ ... $` math conversion. | `True` |
|
| `MATH_INLINE_DOLLAR_ENABLE` | Enable inline `$ ... $` math conversion. | `True` |
|
||||||
|
|
||||||
|
## 🔥 What's New in v0.4.4
|
||||||
|
|
||||||
|
- 🧹 **Content Cleanup**: Enhanced stripping of `<details>` blocks (often used for tool calls/thinking process) to ensure a clean final document.
|
||||||
|
- 📄 **Standard Document Formatting**: Applied professional document formatting standards for titles and headings (centered title, bold, optimized font sizes and spacing), including GB/T compliance for Chinese content.
|
||||||
|
- 🔠 **Font Rendering Fix**: Fixed an issue where CJK characters would fallback to MS Gothic in Word; now correctly uses the configured Asian font (e.g., SimSun).
|
||||||
|
- ⚙️ **Title Alignment**: Added `TITLE_ALIGNMENT` valve to configure document title alignment (left, center, right).
|
||||||
|
|
||||||
### User-Level Configuration (UserValves)
|
### User-Level Configuration (UserValves)
|
||||||
|
|
||||||
Users can override the following settings in their personal settings:
|
Users can override the following settings in their personal settings:
|
||||||
|
|
||||||
- `TITLE_SOURCE`
|
- `TITLE_SOURCE`
|
||||||
- `UI_LANGUAGE`
|
- `UI_LANGUAGE`
|
||||||
- `FONT_LATIN`, `FONT_ASIAN`, `FONT_CODE`
|
- `FONT_LATIN`, `FONT_ASIAN`, `FONT_CODE`
|
||||||
@@ -67,7 +75,7 @@ Users can override the following settings in their personal settings:
|
|||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
1. Download the plugin file: [`export_to_word.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/export_to_docx)
|
1. Download the plugin file: [`export_to_word.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/export_to_docx)
|
||||||
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
||||||
3. Enable the plugin
|
3. Enable the plugin
|
||||||
|
|
||||||
@@ -117,4 +125,5 @@ Users can override the following settings in their personal settings:
|
|||||||
|
|
||||||
## Source Code
|
## Source Code
|
||||||
|
|
||||||
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/export_to_docx){ .md-button }
|
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/export_to_docx){ .md-button }
|
||||||
|
**Author:** [Fu-Jie](https://github.com/Fu-Jie) | **Version:** 0.4.4 | **Project:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Export to Word(导出为 Word)
|
# Export to Word(导出为 Word)
|
||||||
|
|
||||||
<span class="category-badge action">Action</span>
|
<span class="category-badge action">Action</span>
|
||||||
<span class="version-badge">v0.4.1</span>
|
<span class="version-badge">v0.4.4</span>
|
||||||
|
|
||||||
将当前对话导出为完美格式的 Word 文档,支持**代码语法高亮**、**原生数学公式**、**Mermaid 图表**、**引用资料**以及**增强表格**渲染。
|
将当前对话导出为完美格式的 Word 文档,支持**代码语法高亮**、**原生数学公式**、**Mermaid 图表**、**引用资料**以及**增强表格**渲染。
|
||||||
|
|
||||||
@@ -53,9 +53,17 @@ Export to Word 插件会把聊天消息从 Markdown 转成精致的 Word 文档
|
|||||||
| `启用数学公式` | 启用 LaTeX 数学公式块转换。 | `True` |
|
| `启用数学公式` | 启用 LaTeX 数学公式块转换。 | `True` |
|
||||||
| `启用行内公式` | 启用行内 `$ ... $` 数学公式转换。 | `True` |
|
| `启用行内公式` | 启用行内 `$ ... $` 数学公式转换。 | `True` |
|
||||||
|
|
||||||
|
## 🔥 v0.4.4 更新内容
|
||||||
|
|
||||||
|
- 🧹 **内容清理加强**: 增强了对 `<details>` 块(通常包含工具调用或思考过程)的清理,确保最终文档整洁。
|
||||||
|
- 📄 **文档格式标准化**: 采用了专业的文档排版标准(兼容中文 GB/T 规范),标题居中加粗,各级标题使用标准字号和间距。
|
||||||
|
- 🔠 **字体渲染修复**: 修复了 CJK 字符在 Word 中回退到 MS Gothic 的问题;现在正确使用配置的中文字体(例如宋体)。
|
||||||
|
- ⚙️ **标题对齐配置**: 新增 `标题对齐方式` Valve,支持配置文档标题的对齐方式(左对齐、居中、右对齐)。
|
||||||
|
|
||||||
### 用户级配置 (UserValves)
|
### 用户级配置 (UserValves)
|
||||||
|
|
||||||
用户可以在个人设置中覆盖以下配置:
|
用户可以在个人设置中覆盖以下配置:
|
||||||
|
|
||||||
- `文档标题来源`
|
- `文档标题来源`
|
||||||
- `界面语言`
|
- `界面语言`
|
||||||
- `英文字体`, `中文字体`, `代码字体`
|
- `英文字体`, `中文字体`, `代码字体`
|
||||||
@@ -67,7 +75,7 @@ Export to Word 插件会把聊天消息从 Markdown 转成精致的 Word 文档
|
|||||||
|
|
||||||
## 安装
|
## 安装
|
||||||
|
|
||||||
1. 下载插件文件:[`export_to_word.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/export_to_docx)
|
1. 下载插件文件:[`export_to_word.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/export_to_docx)
|
||||||
2. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**
|
2. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**
|
||||||
3. 启用插件
|
3. 启用插件
|
||||||
|
|
||||||
@@ -117,4 +125,5 @@ Export to Word 插件会把聊天消息从 Markdown 转成精致的 Word 文档
|
|||||||
|
|
||||||
## 源码
|
## 源码
|
||||||
|
|
||||||
[:fontawesome-brands-github: 在 GitHub 查看](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/export_to_docx){ .md-button }
|
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/export_to_docx){ .md-button }
|
||||||
|
**Author:** [Fu-Jie](https://github.com/Fu-Jie) | **Version:** 0.4.4 | **Project:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions)
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
# Knowledge Card
|
# Flash Card
|
||||||
|
|
||||||
<span class="category-badge action">Action</span>
|
<span class="category-badge action">Action</span>
|
||||||
<span class="version-badge">v0.2.2</span>
|
<span class="version-badge">v0.2.4</span>
|
||||||
|
|
||||||
Quickly generates beautiful learning memory cards, perfect for studying and quick memorization.
|
Quickly generates beautiful flashcards from text, extracting key points and categories.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ The Knowledge Card plugin (also known as Flash Card / 闪记卡) transforms cont
|
|||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
1. Download the plugin file: [`knowledge_card.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/knowledge-card)
|
1. Download the plugin file: [`flash_card.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/flash-card)
|
||||||
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
||||||
3. Enable the plugin
|
3. Enable the plugin
|
||||||
|
|
||||||
@@ -85,4 +85,4 @@ The Knowledge Card plugin (also known as Flash Card / 闪记卡) transforms cont
|
|||||||
|
|
||||||
## Source Code
|
## Source Code
|
||||||
|
|
||||||
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/knowledge-card){ .md-button }
|
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/flash-card){ .md-button }
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
# Knowledge Card(知识卡片)
|
# Flash Card(闪记卡)
|
||||||
|
|
||||||
<span class="category-badge action">Action</span>
|
<span class="category-badge action">Action</span>
|
||||||
<span class="version-badge">v0.2.0</span>
|
<span class="version-badge">v0.2.4</span>
|
||||||
|
|
||||||
快速生成精美的学习记忆卡片,适合学习和速记。
|
快速生成精美的学习记忆卡片,适合学习和速记。
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ Knowledge Card 插件(又名 Flash Card / 闪记卡)会把内容转成视觉
|
|||||||
|
|
||||||
## 安装
|
## 安装
|
||||||
|
|
||||||
1. 下载插件文件:[`knowledge_card.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/knowledge-card)
|
1. 下载插件文件:[`flash_card.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/flash-card)
|
||||||
2. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**
|
2. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**
|
||||||
3. 启用插件
|
3. 启用插件
|
||||||
|
|
||||||
@@ -85,4 +85,4 @@ Knowledge Card 插件(又名 Flash Card / 闪记卡)会把内容转成视觉
|
|||||||
|
|
||||||
## 源码
|
## 源码
|
||||||
|
|
||||||
[:fontawesome-brands-github: 在 GitHub 查看](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/knowledge-card){ .md-button }
|
[:fontawesome-brands-github: 在 GitHub 查看](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/flash-card){ .md-button }
|
||||||
@@ -23,7 +23,7 @@ Actions are interactive plugins that:
|
|||||||
|
|
||||||
Intelligently analyzes text content and generates interactive mind maps with beautiful visualizations.
|
Intelligently analyzes text content and generates interactive mind maps with beautiful visualizations.
|
||||||
|
|
||||||
**Version:** 0.8.0
|
**Version:** 1.0.0
|
||||||
|
|
||||||
[:octicons-arrow-right-24: Documentation](smart-mind-map.md)
|
[:octicons-arrow-right-24: Documentation](smart-mind-map.md)
|
||||||
|
|
||||||
@@ -33,19 +33,19 @@ Actions are interactive plugins that:
|
|||||||
|
|
||||||
Transform text into professional infographics using AntV visualization engine with various templates.
|
Transform text into professional infographics using AntV visualization engine with various templates.
|
||||||
|
|
||||||
**Version:** 1.3.0
|
**Version:** 1.5.0
|
||||||
|
|
||||||
[:octicons-arrow-right-24: Documentation](smart-infographic.md)
|
[:octicons-arrow-right-24: Documentation](smart-infographic.md)
|
||||||
|
|
||||||
- :material-card-text:{ .lg .middle } **Knowledge Card**
|
- :material-card-text:{ .lg .middle } **Flash Card**
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Quickly generates beautiful learning memory cards, perfect for studying and memorization.
|
Quickly generates beautiful flashcards from text, extracting key points and categories.
|
||||||
|
|
||||||
**Version:** 0.2.2
|
**Version:** 0.2.4
|
||||||
|
|
||||||
[:octicons-arrow-right-24: Documentation](knowledge-card.md)
|
[:octicons-arrow-right-24: Documentation](flash-card.md)
|
||||||
|
|
||||||
- :material-file-excel:{ .lg .middle } **Export to Excel**
|
- :material-file-excel:{ .lg .middle } **Export to Excel**
|
||||||
|
|
||||||
@@ -63,29 +63,19 @@ Actions are interactive plugins that:
|
|||||||
|
|
||||||
Export the current conversation to a formatted Word doc with **syntax highlighting**, **native math equations**, **Mermaid diagrams**, **citations**, and **enhanced table formatting**.
|
Export the current conversation to a formatted Word doc with **syntax highlighting**, **native math equations**, **Mermaid diagrams**, **citations**, and **enhanced table formatting**.
|
||||||
|
|
||||||
**Version:** 0.4.1
|
**Version:** 0.4.4
|
||||||
|
|
||||||
[:octicons-arrow-right-24: Documentation](export-to-word.md)
|
[:octicons-arrow-right-24: Documentation](export-to-word.md)
|
||||||
|
|
||||||
- :material-text-box-search:{ .lg .middle } **Summary**
|
- :material-brain:{ .lg .middle } **Deep Dive**
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Generate concise summaries of long text content with key points extraction.
|
A comprehensive thinking lens that dives deep into any content - Context → Logic → Insight → Path. Supports theme auto-adaptation.
|
||||||
|
|
||||||
**Version:** 0.1.0
|
|
||||||
|
|
||||||
[:octicons-arrow-right-24: Documentation](summary.md)
|
|
||||||
|
|
||||||
- :material-image-text:{ .lg .middle } **Infographic to Markdown**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
AI-powered infographic generator that renders SVG and embeds it as Markdown Data URL image.
|
|
||||||
|
|
||||||
**Version:** 1.0.0
|
**Version:** 1.0.0
|
||||||
|
|
||||||
[:octicons-arrow-right-24: Documentation](infographic-markdown.md)
|
[:octicons-arrow-right-24: Documentation](deep-dive.md)
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ Actions 是交互式插件,能够:
|
|||||||
|
|
||||||
智能分析文本并生成交互式、精美的思维导图。
|
智能分析文本并生成交互式、精美的思维导图。
|
||||||
|
|
||||||
**版本:** 0.8.0
|
**版本:** 1.0.0
|
||||||
|
|
||||||
[:octicons-arrow-right-24: 查看文档](smart-mind-map.md)
|
[:octicons-arrow-right-24: 查看文档](smart-mind-map.md)
|
||||||
|
|
||||||
@@ -33,19 +33,19 @@ Actions 是交互式插件,能够:
|
|||||||
|
|
||||||
使用 AntV 可视化引擎,将文本转成专业的信息图。
|
使用 AntV 可视化引擎,将文本转成专业的信息图。
|
||||||
|
|
||||||
**版本:** 1.3.0
|
**版本:** 1.4.9
|
||||||
|
|
||||||
[:octicons-arrow-right-24: 查看文档](smart-infographic.md)
|
[:octicons-arrow-right-24: 查看文档](smart-infographic.md)
|
||||||
|
|
||||||
- :material-card-text:{ .lg .middle } **Knowledge Card**
|
- :material-card-text:{ .lg .middle } **Flash Card(闪记卡)**
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
快速生成精美的学习记忆卡片,适合学习与记忆。
|
快速生成精美的学习记忆卡片,非常适合学习和快速记忆。
|
||||||
|
|
||||||
**版本:** 0.2.2
|
**版本:** 0.2.4
|
||||||
|
|
||||||
[:octicons-arrow-right-24: 查看文档](knowledge-card.md)
|
[:octicons-arrow-right-24: 查看文档](flash-card.md)
|
||||||
|
|
||||||
- :material-file-excel:{ .lg .middle } **Export to Excel**
|
- :material-file-excel:{ .lg .middle } **Export to Excel**
|
||||||
|
|
||||||
@@ -63,29 +63,19 @@ Actions 是交互式插件,能够:
|
|||||||
|
|
||||||
将当前对话导出为完美格式的 Word 文档,支持**代码语法高亮**、**原生数学公式**、**Mermaid 图表**、**引用资料**以及**增强表格**渲染。
|
将当前对话导出为完美格式的 Word 文档,支持**代码语法高亮**、**原生数学公式**、**Mermaid 图表**、**引用资料**以及**增强表格**渲染。
|
||||||
|
|
||||||
**版本:** 0.4.1
|
**版本:** 0.4.4
|
||||||
|
|
||||||
[:octicons-arrow-right-24: 查看文档](export-to-word.md)
|
[:octicons-arrow-right-24: 查看文档](export-to-word.md)
|
||||||
|
|
||||||
- :material-text-box-search:{ .lg .middle } **Summary**
|
- :material-brain:{ .lg .middle } **精读 (Deep Dive)**
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
对长文本进行精简总结,提取要点。
|
全方位的思维透镜 —— 全景 → 脉络 → 洞察 → 路径。支持主题自适应。
|
||||||
|
|
||||||
**版本:** 0.1.0
|
|
||||||
|
|
||||||
[:octicons-arrow-right-24: 查看文档](summary.md)
|
|
||||||
|
|
||||||
- :material-image-text:{ .lg .middle } **信息图转 Markdown**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
AI 驱动的信息图生成器,渲染 SVG 并以 Markdown Data URL 图片嵌入。
|
|
||||||
|
|
||||||
**版本:** 1.0.0
|
**版本:** 1.0.0
|
||||||
|
|
||||||
[:octicons-arrow-right-24: 查看文档](infographic-markdown.zh.md)
|
[:octicons-arrow-right-24: 查看文档](deep-dive.zh.md)
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Smart Infographic
|
# Smart Infographic
|
||||||
|
|
||||||
<span class="category-badge action">Action</span>
|
<span class="category-badge action">Action</span>
|
||||||
<span class="version-badge">v1.3.0</span>
|
<span class="version-badge">v1.4.9</span>
|
||||||
|
|
||||||
An AntV Infographic engine powered plugin that transforms long text into professional, beautiful infographics with a single click.
|
An AntV Infographic engine powered plugin that transforms long text into professional, beautiful infographics with a single click.
|
||||||
|
|
||||||
@@ -14,17 +14,19 @@ The Smart Infographic plugin uses AI to analyze text content and generate profes
|
|||||||
## Features
|
## Features
|
||||||
|
|
||||||
- :material-robot: **AI-Powered Transformation**: Automatically analyzes text logic, extracts key points, and generates structured charts
|
- :material-robot: **AI-Powered Transformation**: Automatically analyzes text logic, extracts key points, and generates structured charts
|
||||||
- :material-palette: **Professional Templates**: Includes various AntV official templates: Lists, Trees, Mindmaps, Comparison Tables, Flowcharts, and Statistical Charts
|
- :material-palette: **70+ Professional Templates**: Includes various AntV official templates: Lists, Trees, Roadmaps, Timelines, Comparison Tables, SWOT, Quadrants, and Statistical Charts
|
||||||
- :material-magnify: **Auto-Icon Matching**: Built-in logic to search and match the most relevant Material Design Icons based on content
|
- :material-magnify: **Auto-Icon Matching**: Built-in logic to search and match the most relevant icons (Iconify) and illustrations (unDraw)
|
||||||
- :material-download: **Multi-Format Export**: Download your infographics as **SVG**, **PNG**, or **Standalone HTML** file
|
- :material-download: **Multi-Format Export**: Download your infographics as **SVG**, **PNG**, or **Standalone HTML** file
|
||||||
- :material-theme-light-dark: **Theme Support**: Supports Dark/Light modes, auto-adapts theme colors
|
- :material-theme-light-dark: **Theme Support**: Supports Dark/Light modes, auto-adapts theme colors
|
||||||
- :material-cellphone-link: **Responsive Design**: Generated charts look great on both desktop and mobile devices
|
- :material-cellphone-link: **Responsive Design**: Generated charts look great on both desktop and mobile devices
|
||||||
|
- :material-image: **Image Embedding**: Option to embed charts as static images for better compatibility
|
||||||
|
- :material-monitor-screenshot: **Adaptive Sizing**: Images automatically adapt to the chat container width
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
1. Download the plugin file: [`infographic.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/infographic)
|
1. Download the plugin file: [`infographic.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/infographic)
|
||||||
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
||||||
3. Configure plugin settings (optional)
|
3. Configure plugin settings (optional)
|
||||||
4. Enable the plugin
|
4. Enable the plugin
|
||||||
@@ -35,10 +37,11 @@ The Smart Infographic plugin uses AI to analyze text content and generate profes
|
|||||||
|
|
||||||
| Category | Template Name | Use Case |
|
| Category | Template Name | Use Case |
|
||||||
|:---------|:--------------|:---------|
|
|:---------|:--------------|:---------|
|
||||||
| **Lists & Hierarchy** | `list-grid`, `tree-vertical`, `mindmap` | Features, Org Charts, Brainstorming |
|
| **Sequence** | `sequence-timeline-simple`, `sequence-roadmap-vertical-simple`, `sequence-snake-steps-compact-card` | Timelines, Roadmaps, Processes |
|
||||||
| **Sequence & Relation** | `sequence-roadmap`, `relation-circle` | Roadmaps, Circular Flows, Steps |
|
| **Lists** | `list-grid-candy-card-lite`, `list-row-horizontal-icon-arrow`, `list-column-simple-vertical-arrow` | Features, Bullet Points, Lists |
|
||||||
| **Comparison & Analysis** | `compare-binary`, `compare-swot`, `quadrant-quarter` | Pros/Cons, SWOT, Quadrants |
|
| **Comparison** | `compare-binary-horizontal-underline-text-vs`, `compare-swot`, `quadrant-quarter-simple-card` | Pros/Cons, SWOT, Quadrants |
|
||||||
| **Charts & Data** | `chart-bar`, `chart-line`, `chart-pie` | Trends, Distributions, Metrics |
|
| **Hierarchy** | `hierarchy-tree-tech-style-capsule-item`, `hierarchy-structure` | Org Charts, Structures |
|
||||||
|
| **Charts** | `chart-column-simple`, `chart-bar-plain-text`, `chart-line-plain-text`, `chart-wordcloud` | Trends, Distributions, Metrics |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -60,6 +63,7 @@ The Smart Infographic plugin uses AI to analyze text content and generate profes
|
|||||||
| `MIN_TEXT_LENGTH` | integer | `100` | Minimum characters required to trigger analysis |
|
| `MIN_TEXT_LENGTH` | integer | `100` | Minimum characters required to trigger analysis |
|
||||||
| `CLEAR_PREVIOUS_HTML` | boolean | `false` | Whether to clear previous charts |
|
| `CLEAR_PREVIOUS_HTML` | boolean | `false` | Whether to clear previous charts |
|
||||||
| `MESSAGE_COUNT` | integer | `1` | Number of recent messages to use for analysis |
|
| `MESSAGE_COUNT` | integer | `1` | Number of recent messages to use for analysis |
|
||||||
|
| `OUTPUT_MODE` | string | `image` | `image` for static image embedding (default), `html` for interactive chart |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -104,4 +108,4 @@ data
|
|||||||
|
|
||||||
## Source Code
|
## Source Code
|
||||||
|
|
||||||
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/infographic){ .md-button }
|
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/infographic){ .md-button }
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Smart Infographic(智能信息图)
|
# Smart Infographic(智能信息图)
|
||||||
|
|
||||||
<span class="category-badge action">Action</span>
|
<span class="category-badge action">Action</span>
|
||||||
<span class="version-badge">v1.0.0</span>
|
<span class="version-badge">v1.4.9</span>
|
||||||
|
|
||||||
基于 AntV 信息图引擎,将长文本一键转成专业、美观的信息图。
|
基于 AntV 信息图引擎,将长文本一键转成专业、美观的信息图。
|
||||||
|
|
||||||
@@ -14,17 +14,19 @@ Smart Infographic 使用 AI 分析文本,并基于 AntV 可视化引擎生成
|
|||||||
## 功能特性
|
## 功能特性
|
||||||
|
|
||||||
- :material-robot: **AI 转换**:自动分析文本逻辑,提取要点并生成结构化图表
|
- :material-robot: **AI 转换**:自动分析文本逻辑,提取要点并生成结构化图表
|
||||||
- :material-palette: **专业模板**:内置 AntV 官方模板:列表、树、思维导图、对比表、流程图、统计图等
|
- :material-palette: **70+ 专业模板**:内置多种 AntV 官方模板,包括列表、树图、路线图、时间线、对比图、SWOT、象限图及统计图表等
|
||||||
- :material-magnify: **自动匹配图标**:根据内容自动选择最合适的 Material Design Icons
|
- :material-magnify: **自动匹配图标**:内置图标搜索逻辑,支持 Iconify 图标和 unDraw 插图自动匹配
|
||||||
- :material-download: **多格式导出**:支持下载 **SVG**、**PNG**、**独立 HTML**
|
- :material-download: **多格式导出**:支持下载 **SVG**、**PNG**、**独立 HTML**
|
||||||
- :material-theme-light-dark: **主题支持**:适配深色/浅色模式
|
- :material-theme-light-dark: **主题支持**:适配深色/浅色模式
|
||||||
- :material-cellphone-link: **响应式**:桌面与移动端都能良好展示
|
- :material-cellphone-link: **响应式**:桌面与移动端都能良好展示
|
||||||
|
- :material-image: **图片嵌入**:支持将图表作为静态图片嵌入,兼容性更好
|
||||||
|
- :material-monitor-screenshot: **自适应尺寸**:图片模式下自动适应聊天容器宽度
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 安装
|
## 安装
|
||||||
|
|
||||||
1. 下载插件文件:[`infographic.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/infographic)
|
1. 下载插件文件:[`infographic.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/infographic)
|
||||||
2. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**
|
2. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**
|
||||||
3. 可选:根据需要配置插件选项
|
3. 可选:根据需要配置插件选项
|
||||||
4. 启用插件
|
4. 启用插件
|
||||||
@@ -35,10 +37,11 @@ Smart Infographic 使用 AI 分析文本,并基于 AntV 可视化引擎生成
|
|||||||
|
|
||||||
| 分类 | 模板名称 | 典型场景 |
|
| 分类 | 模板名称 | 典型场景 |
|
||||||
|:---------|:--------------|:---------|
|
|:---------|:--------------|:---------|
|
||||||
| **列表与层级** | `list-grid`, `tree-vertical`, `mindmap` | 特性列表、组织结构、头脑风暴 |
|
| **时序与流程** | `sequence-timeline-simple`, `sequence-roadmap-vertical-simple`, `sequence-snake-steps-compact-card` | 时间线、路线图、步骤说明 |
|
||||||
| **序列与关系** | `sequence-roadmap`, `relation-circle` | 路线图、循环流程、步骤拆解 |
|
| **列表与网格** | `list-grid-candy-card-lite`, `list-row-horizontal-icon-arrow`, `list-column-simple-vertical-arrow` | 功能亮点、要点列举、清单 |
|
||||||
| **对比与分析** | `compare-binary`, `compare-swot`, `quadrant-quarter` | 优劣势、SWOT、象限分析 |
|
| **对比与分析** | `compare-binary-horizontal-underline-text-vs`, `compare-swot`, `quadrant-quarter-simple-card` | 优劣势对比、SWOT 分析、象限图 |
|
||||||
| **图表与数据** | `chart-bar`, `chart-line`, `chart-pie` | 趋势、分布、指标对比 |
|
| **层级与结构** | `hierarchy-tree-tech-style-capsule-item`, `hierarchy-structure` | 组织架构、层级关系 |
|
||||||
|
| **图表与数据** | `chart-column-simple`, `chart-bar-plain-text`, `chart-line-plain-text`, `chart-wordcloud` | 数据趋势、比例分布、数值对比 |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -60,6 +63,7 @@ Smart Infographic 使用 AI 分析文本,并基于 AntV 可视化引擎生成
|
|||||||
| `MIN_TEXT_LENGTH` | integer | `100` | 触发分析的最小字符数 |
|
| `MIN_TEXT_LENGTH` | integer | `100` | 触发分析的最小字符数 |
|
||||||
| `CLEAR_PREVIOUS_HTML` | boolean | `false` | 是否清空之前生成的图表 |
|
| `CLEAR_PREVIOUS_HTML` | boolean | `false` | 是否清空之前生成的图表 |
|
||||||
| `MESSAGE_COUNT` | integer | `1` | 参与分析的最近消息条数 |
|
| `MESSAGE_COUNT` | integer | `1` | 参与分析的最近消息条数 |
|
||||||
|
| `OUTPUT_MODE` | string | `image` | `image` 为静态图片嵌入(默认),`html` 为交互式图表 |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -104,4 +108,4 @@ data
|
|||||||
|
|
||||||
## 源码
|
## 源码
|
||||||
|
|
||||||
[:fontawesome-brands-github: 在 GitHub 查看](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/infographic){ .md-button }
|
[:fontawesome-brands-github: 在 GitHub 查看](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/infographic){ .md-button }
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Smart Mind Map
|
# Smart Mind Map
|
||||||
|
|
||||||
<span class="category-badge action">Action</span>
|
<span class="category-badge action">Action</span>
|
||||||
<span class="version-badge">v0.8.0</span>
|
<span class="version-badge">v1.0.0</span>
|
||||||
|
|
||||||
Intelligently analyzes text content and generates interactive mind maps for better visualization and understanding.
|
Intelligently analyzes text content and generates interactive mind maps for better visualization and understanding.
|
||||||
|
|
||||||
@@ -17,13 +17,14 @@ The Smart Mind Map plugin transforms text content into beautiful, interactive mi
|
|||||||
- :material-gesture-swipe: **Rich Controls**: Zoom, reset view, expand level selector (All/2/3) and fullscreen
|
- :material-gesture-swipe: **Rich Controls**: Zoom, reset view, expand level selector (All/2/3) and fullscreen
|
||||||
- :material-palette: **Theme Aware**: Auto-detects OpenWebUI light/dark theme with manual toggle
|
- :material-palette: **Theme Aware**: Auto-detects OpenWebUI light/dark theme with manual toggle
|
||||||
- :material-download: **One-Click Export**: Download high-res PNG, copy SVG, or copy Markdown source
|
- :material-download: **One-Click Export**: Download high-res PNG, copy SVG, or copy Markdown source
|
||||||
- :material-translate: **Multi-language**: Adapts output language to the user context
|
- :material-translate: **i18n Embedded**: One code file smartly detects frontend languages and translates the output.
|
||||||
|
- :material-arrow-all: **Auto-Sizing & Direct Embed**: Seamlessly scales to display massive canvas inline (requires setting toggle).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
1. Download the plugin file: [`思维导图.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/smart-mind-map)
|
1. Download the plugin file: [`smart_mind_map.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/smart-mind-map)
|
||||||
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions** (Actions)
|
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions** (Actions)
|
||||||
3. Enable the plugin, and optionally allow iframe same-origin access so theme auto-detection works
|
3. Enable the plugin, and optionally allow iframe same-origin access so theme auto-detection works
|
||||||
|
|
||||||
@@ -50,6 +51,7 @@ The Smart Mind Map plugin transforms text content into beautiful, interactive mi
|
|||||||
| `MIN_TEXT_LENGTH` | integer | `100` | Minimum characters required before analysis runs |
|
| `MIN_TEXT_LENGTH` | integer | `100` | Minimum characters required before analysis runs |
|
||||||
| `CLEAR_PREVIOUS_HTML` | boolean | `false` | Clear previous plugin HTML instead of merging |
|
| `CLEAR_PREVIOUS_HTML` | boolean | `false` | Clear previous plugin HTML instead of merging |
|
||||||
| `MESSAGE_COUNT` | integer | `1` | Number of recent messages to include (1–5) |
|
| `MESSAGE_COUNT` | integer | `1` | Number of recent messages to include (1–5) |
|
||||||
|
| `ENABLE_DIRECT_EMBED_MODE` | boolean | `false` | Enable inline full-width UI for OpenWebUI 0.8.0+ |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -94,4 +96,4 @@ The plugin generates an interactive HTML mind map embedded in the chat:
|
|||||||
|
|
||||||
## Source Code
|
## Source Code
|
||||||
|
|
||||||
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/smart-mind-map){ .md-button }
|
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/smart-mind-map){ .md-button }
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Smart Mind Map(智能思维导图)
|
# Smart Mind Map(智能思维导图)
|
||||||
|
|
||||||
<span class="category-badge action">Action</span>
|
<span class="category-badge action">Action</span>
|
||||||
<span class="version-badge">v0.8.0</span>
|
<span class="version-badge">v1.0.0</span>
|
||||||
|
|
||||||
智能分析文本内容,生成交互式思维导图,帮助你更直观地理解信息结构。
|
智能分析文本内容,生成交互式思维导图,帮助你更直观地理解信息结构。
|
||||||
|
|
||||||
@@ -17,13 +17,14 @@ Smart Mind Map 会将文本转换成漂亮的交互式思维导图。插件会
|
|||||||
- :material-gesture-swipe: **丰富控制**:缩放/重置、展开层级(全部/2/3 级)与全屏
|
- :material-gesture-swipe: **丰富控制**:缩放/重置、展开层级(全部/2/3 级)与全屏
|
||||||
- :material-palette: **主题感知**:自动检测 OpenWebUI 亮/暗色主题并支持手动切换
|
- :material-palette: **主题感知**:自动检测 OpenWebUI 亮/暗色主题并支持手动切换
|
||||||
- :material-download: **一键导出**:下载高分辨率 PNG、复制 SVG 或 Markdown
|
- :material-download: **一键导出**:下载高分辨率 PNG、复制 SVG 或 Markdown
|
||||||
- :material-translate: **多语言**:根据用户语言自动输出
|
- :material-translate: **内置 i18n 语言识别**:单个文件自动检测控制台前端语言,无需繁杂的各种语言包版本。
|
||||||
|
- :material-arrow-all: **直出全屏版体验 (需配置开启)**:新版直出渲染抛开沙盒限制,纵情铺满屏幕,享受原生的图表体验。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 安装
|
## 安装
|
||||||
|
|
||||||
1. 下载插件文件:[`思维导图.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/smart-mind-map)
|
1. 下载插件文件:[`smart_mind_map.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/smart-mind-map)
|
||||||
2. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**(Actions)
|
2. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**(Actions)
|
||||||
3. 启用插件,并可在设置中允许 iframe same-origin 以启用主题自动检测
|
3. 启用插件,并可在设置中允许 iframe same-origin 以启用主题自动检测
|
||||||
|
|
||||||
@@ -50,6 +51,7 @@ Smart Mind Map 会将文本转换成漂亮的交互式思维导图。插件会
|
|||||||
| `MIN_TEXT_LENGTH` | integer | `100` | 开始分析所需的最少字符数 |
|
| `MIN_TEXT_LENGTH` | integer | `100` | 开始分析所需的最少字符数 |
|
||||||
| `CLEAR_PREVIOUS_HTML` | boolean | `false` | 生成新导图时是否清除之前的插件 HTML |
|
| `CLEAR_PREVIOUS_HTML` | boolean | `false` | 生成新导图时是否清除之前的插件 HTML |
|
||||||
| `MESSAGE_COUNT` | integer | `1` | 用于生成的最近消息数量(1–5) |
|
| `MESSAGE_COUNT` | integer | `1` | 用于生成的最近消息数量(1–5) |
|
||||||
|
| `ENABLE_DIRECT_EMBED_MODE` | boolean | `false` | 是否开启沉浸式直出模式 (需要 Open WebUI 0.8.0+ ) |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -94,4 +96,4 @@ Smart Mind Map 会将文本转换成漂亮的交互式思维导图。插件会
|
|||||||
|
|
||||||
## 源码
|
## 源码
|
||||||
|
|
||||||
[:fontawesome-brands-github: 在 GitHub 查看](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/smart-mind-map){ .md-button }
|
[:fontawesome-brands-github: 在 GitHub 查看](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/actions/smart-mind-map){ .md-button }
|
||||||
|
|||||||
@@ -1,82 +0,0 @@
|
|||||||
# Summary
|
|
||||||
|
|
||||||
<span class="category-badge action">Action</span>
|
|
||||||
<span class="version-badge">v0.1.0</span>
|
|
||||||
|
|
||||||
Generate concise summaries of long text content with key points extraction.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Overview
|
|
||||||
|
|
||||||
The Summary plugin helps you quickly understand long pieces of text by generating concise summaries with extracted key points. It's perfect for:
|
|
||||||
|
|
||||||
- Summarizing long articles or documents
|
|
||||||
- Extracting key points from conversations
|
|
||||||
- Creating quick overviews of complex topics
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
- :material-text-box-search: **Smart Summarization**: AI-powered content analysis
|
|
||||||
- :material-format-list-bulleted: **Key Points**: Extracted important highlights
|
|
||||||
- :material-content-copy: **Easy Copy**: One-click copying of summaries
|
|
||||||
- :material-tune: **Adjustable Length**: Control summary detail level
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
1. Download the plugin file: [`summary.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/summary)
|
|
||||||
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
|
||||||
3. Enable the plugin
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
1. Get a long response from the AI or paste long text
|
|
||||||
2. Click the **Summary** button in the message action bar
|
|
||||||
3. View the generated summary with key points
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Configuration
|
|
||||||
|
|
||||||
| Option | Type | Default | Description |
|
|
||||||
|--------|------|---------|-------------|
|
|
||||||
| `summary_length` | string | `"medium"` | Length of summary (short/medium/long) |
|
|
||||||
| `include_key_points` | boolean | `true` | Extract and list key points |
|
|
||||||
| `language` | string | `"auto"` | Output language |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Example Output
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
## Summary
|
|
||||||
|
|
||||||
This document discusses the implementation of a new feature
|
|
||||||
for the application, focusing on user experience improvements
|
|
||||||
and performance optimizations.
|
|
||||||
|
|
||||||
### Key Points
|
|
||||||
|
|
||||||
- ✅ New user interface design improves accessibility
|
|
||||||
- ✅ Backend optimizations reduce load times by 40%
|
|
||||||
- ✅ Mobile responsiveness enhanced
|
|
||||||
- ✅ Integration with third-party services simplified
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Requirements
|
|
||||||
|
|
||||||
!!! note "Prerequisites"
|
|
||||||
- OpenWebUI v0.3.0 or later
|
|
||||||
- Uses the active LLM model for summarization
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Source Code
|
|
||||||
|
|
||||||
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/summary){ .md-button }
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
# Summary(摘要)
|
|
||||||
|
|
||||||
<span class="category-badge action">Action</span>
|
|
||||||
<span class="version-badge">v0.1.0</span>
|
|
||||||
|
|
||||||
为长文本生成简洁摘要,并提取关键要点。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 概览
|
|
||||||
|
|
||||||
Summary 插件可以快速理解长文本,生成精炼摘要并列出关键点,适合:
|
|
||||||
|
|
||||||
- 总结长文章或文档
|
|
||||||
- 从对话中提炼要点
|
|
||||||
- 为复杂主题制作快速概览
|
|
||||||
|
|
||||||
## 功能特性
|
|
||||||
|
|
||||||
- :material-text-box-search: **智能摘要**:AI 驱动的内容分析
|
|
||||||
- :material-format-list-bulleted: **关键点**:提取重要信息
|
|
||||||
- :material-content-copy: **便捷复制**:一键复制摘要
|
|
||||||
- :material-tune: **长度可调**:可选择摘要详略程度
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 安装
|
|
||||||
|
|
||||||
1. 下载插件文件:[`summary.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/summary)
|
|
||||||
2. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**
|
|
||||||
3. 启用插件
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 使用方法
|
|
||||||
|
|
||||||
1. 获取一段较长的 AI 回复或粘贴长文本
|
|
||||||
2. 点击消息操作栏的 **Summary** 按钮
|
|
||||||
3. 查看生成的摘要与关键点
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 配置项
|
|
||||||
|
|
||||||
| 选项 | 类型 | 默认值 | 说明 |
|
|
||||||
|--------|------|---------|-------------|
|
|
||||||
| `summary_length` | string | `"medium"` | 摘要长度(short/medium/long) |
|
|
||||||
| `include_key_points` | boolean | `true` | 是否提取并列出关键点 |
|
|
||||||
| `language` | string | `"auto"` | 输出语言 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 输出示例
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
## Summary
|
|
||||||
|
|
||||||
This document discusses the implementation of a new feature
|
|
||||||
for the application, focusing on user experience improvements
|
|
||||||
and performance optimizations.
|
|
||||||
|
|
||||||
### Key Points
|
|
||||||
|
|
||||||
- ✅ New user interface design improves accessibility
|
|
||||||
- ✅ Backend optimizations reduce load times by 40%
|
|
||||||
- ✅ Mobile responsiveness enhanced
|
|
||||||
- ✅ Integration with third-party services simplified
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 运行要求
|
|
||||||
|
|
||||||
!!! note "前置条件"
|
|
||||||
- OpenWebUI v0.3.0 及以上
|
|
||||||
- 使用当前会话的 LLM 模型进行摘要
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 源码
|
|
||||||
|
|
||||||
[:fontawesome-brands-github: 在 GitHub 查看](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/actions/summary){ .md-button }
|
|
||||||
@@ -1,122 +1,81 @@
|
|||||||
# Async Context Compression
|
# Async Context Compression Filter
|
||||||
|
|
||||||
<span class="category-badge filter">Filter</span>
|
**Author:** [Fu-Jie](https://github.com/Fu-Jie/openwebui-extensions) | **Version:** 1.3.0 | **Project:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) | **License:** MIT
|
||||||
<span class="version-badge">v1.1.0</span>
|
|
||||||
|
|
||||||
Reduces token consumption in long conversations through intelligent summarization while maintaining conversational coherence.
|
This filter reduces token consumption in long conversations through intelligent summarization and message compression while keeping conversations coherent.
|
||||||
|
|
||||||
|
## What's new in 1.3.0
|
||||||
|
|
||||||
|
- **Internationalization (i18n)**: Complete localization of user-facing messages across 9 languages (English, Chinese, Japanese, Korean, French, German, Spanish, Italian).
|
||||||
|
- **Smart Status Display**: Added `token_usage_status_threshold` valve (default 80%) to intelligently control when token usage status is shown.
|
||||||
|
- **Improved Performance**: Frontend language detection and logging are optimized to be completely non-blocking, maintaining lightning-fast TTFB.
|
||||||
|
- **Copilot SDK Integration**: Automatically detects and skips compression for copilot_sdk based models to prevent conflicts.
|
||||||
|
- **Configuration**: `debug_mode` is now set to `false` by default for a quieter production experience.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Overview
|
## Core Features
|
||||||
|
|
||||||
The Async Context Compression filter helps manage token usage in long conversations by:
|
- ✅ **Full i18n Support**: Native localization across 9 languages.
|
||||||
|
- ✅ Automatic compression triggered by token thresholds.
|
||||||
- Intelligently summarizing older messages
|
- ✅ Asynchronous summarization that does not block chat responses.
|
||||||
- Preserving important context
|
- ✅ Persistent storage via Open WebUI's shared database connection (PostgreSQL, SQLite, etc.).
|
||||||
- Reducing API costs
|
- ✅ Flexible retention policy to keep the first and last N messages.
|
||||||
- Maintaining conversation coherence
|
- ✅ Smart injection of historical summaries back into the context.
|
||||||
|
- ✅ Structure-aware trimming that preserves document structure (headers, intro, conclusion).
|
||||||
This is especially useful for:
|
- ✅ Native tool output trimming for cleaner context when using function calling.
|
||||||
|
- ✅ Real-time context usage monitoring with warning notifications (>90%).
|
||||||
- Long-running conversations
|
- ✅ Detailed token logging for precise debugging and optimization.
|
||||||
- Complex multi-turn discussions
|
- ✅ **Smart Model Matching**: Automatically inherits configuration from base models for custom presets.
|
||||||
- Cost optimization
|
- ⚠ **Multimodal Support**: Images are preserved but their tokens are **NOT** calculated. Please adjust thresholds accordingly.
|
||||||
- Token limit management
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
- :material-arrow-collapse-vertical: **Smart Compression**: AI-powered context summarization
|
|
||||||
- :material-clock-fast: **Async Processing**: Non-blocking background compression
|
|
||||||
- :material-memory: **Context Preservation**: Keeps important information
|
|
||||||
- :material-currency-usd-off: **Cost Reduction**: Minimize token usage
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Installation
|
## Installation & Configuration
|
||||||
|
|
||||||
1. Download the plugin file: [`async_context_compression.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/filters/async-context-compression)
|
### 1) Database (automatic)
|
||||||
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
|
||||||
3. Configure compression settings
|
- Uses Open WebUI's shared database connection; no extra configuration needed.
|
||||||
4. Enable the filter
|
- The `chat_summary` table is created on first run.
|
||||||
|
|
||||||
|
### 2) Filter order
|
||||||
|
|
||||||
|
- Recommended order: pre-filters (<10) → this filter (10) → post-filters (>10).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## How It Works
|
## Configuration Parameters
|
||||||
|
|
||||||
```mermaid
|
| Parameter | Default | Description |
|
||||||
graph TD
|
| :----------------------------- | :------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
A[Incoming Messages] --> B{Token Count > Threshold?}
|
| `priority` | `10` | Execution order; lower runs earlier. |
|
||||||
B -->|No| C[Pass Through]
|
| `compression_threshold_tokens` | `64000` | Trigger asynchronous summary when total tokens exceed this value. Set to 50%-70% of your model's context window. |
|
||||||
B -->|Yes| D[Summarize Older Messages]
|
| `max_context_tokens` | `128000` | Hard cap for context; older messages (except protected ones) are dropped if exceeded. |
|
||||||
D --> E[Preserve Recent Messages]
|
| `keep_first` | `1` | Always keep the first N messages (protects system prompts). |
|
||||||
E --> F[Combine Summary + Recent]
|
| `keep_last` | `6` | Always keep the last N messages to preserve recent context. |
|
||||||
F --> G[Send to LLM]
|
| `summary_model` | `None` | Model for summaries. Strongly recommended to set a fast, economical model (e.g., `gemini-2.5-flash`, `deepseek-v3`). Falls back to the current chat model when empty. |
|
||||||
```
|
| `summary_model_max_context` | `0` | Max context tokens for the summary model. If 0, falls back to `model_thresholds` or global `max_context_tokens`. |
|
||||||
|
| `max_summary_tokens` | `16384` | Maximum tokens for the generated summary. |
|
||||||
|
| `summary_temperature` | `0.3` | Randomness for summary generation. Lower is more deterministic. |
|
||||||
|
| `model_thresholds` | `{}` | Per-model overrides for `compression_threshold_tokens` and `max_context_tokens` (useful for mixed models). |
|
||||||
|
| `enable_tool_output_trimming` | `false` | When enabled and `function_calling: "native"` is active, trims verbose tool outputs to extract only the final answer. |
|
||||||
|
| `debug_mode` | `false` | Log verbose debug info. Set to `false` in production. |
|
||||||
|
| `show_debug_log` | `false` | Print debug logs to browser console (F12). Useful for frontend debugging. |
|
||||||
|
| `show_token_usage_status` | `true` | Show token usage status notification in the chat interface. |
|
||||||
|
| `token_usage_status_threshold` | `80` | The minimum usage percentage (0-100) required to show a context usage status notification. |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Configuration
|
## ⭐ Support
|
||||||
|
|
||||||
| Option | Type | Default | Description |
|
If this plugin has been useful, a star on [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) is a big motivation for me. Thank you for the support.
|
||||||
|--------|------|---------|-------------|
|
|
||||||
| `token_threshold` | integer | `4000` | Trigger compression above this token count |
|
|
||||||
| `preserve_recent` | integer | `5` | Number of recent messages to keep uncompressed |
|
|
||||||
| `summary_model` | string | `"auto"` | Model to use for summarization |
|
|
||||||
| `compression_ratio` | float | `0.3` | Target compression ratio |
|
|
||||||
|
|
||||||
---
|
## Troubleshooting ❓
|
||||||
|
|
||||||
## Example
|
- **Initial system prompt is lost**: Keep `keep_first` greater than 0 to protect the initial message.
|
||||||
|
- **Compression effect is weak**: Raise `compression_threshold_tokens` or lower `keep_first` / `keep_last` to allow more aggressive compression.
|
||||||
|
- **Submit an Issue**: If you encounter any problems, please submit an issue on GitHub: [OpenWebUI Extensions Issues](https://github.com/Fu-Jie/openwebui-extensions/issues)
|
||||||
|
|
||||||
### Before Compression
|
## Changelog
|
||||||
|
|
||||||
```
|
See the full history on GitHub: [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions)
|
||||||
[Message 1] User: Tell me about Python...
|
|
||||||
[Message 2] AI: Python is a programming language...
|
|
||||||
[Message 3] User: What about its history?
|
|
||||||
[Message 4] AI: Python was created by Guido...
|
|
||||||
[Message 5] User: And its features?
|
|
||||||
[Message 6] AI: Python has many features...
|
|
||||||
... (many more messages)
|
|
||||||
[Message 20] User: Current question
|
|
||||||
```
|
|
||||||
|
|
||||||
### After Compression
|
|
||||||
|
|
||||||
```
|
|
||||||
[Summary] Previous conversation covered Python basics,
|
|
||||||
history, features, and common use cases...
|
|
||||||
|
|
||||||
[Message 18] User: Recent question about decorators
|
|
||||||
[Message 19] AI: Decorators in Python are...
|
|
||||||
[Message 20] User: Current question
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Requirements
|
|
||||||
|
|
||||||
!!! note "Prerequisites"
|
|
||||||
- OpenWebUI v0.3.0 or later
|
|
||||||
- Access to an LLM for summarization
|
|
||||||
|
|
||||||
!!! tip "Best Practices"
|
|
||||||
- Set appropriate token thresholds based on your model's context window
|
|
||||||
- Preserve more recent messages for technical discussions
|
|
||||||
- Test compression settings in non-critical conversations first
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
??? question "Compression not triggering?"
|
|
||||||
Check if the token count exceeds your configured threshold. Enable debug logging for more details.
|
|
||||||
|
|
||||||
??? question "Important context being lost?"
|
|
||||||
Increase the `preserve_recent` setting or lower the compression ratio.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Source Code
|
|
||||||
|
|
||||||
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/filters/async-context-compression){ .md-button }
|
|
||||||
|
|||||||
@@ -1,122 +1,119 @@
|
|||||||
# Async Context Compression(异步上下文压缩)
|
# 异步上下文压缩过滤器
|
||||||
|
|
||||||
<span class="category-badge filter">Filter</span>
|
**作者:** [Fu-Jie](https://github.com/Fu-Jie/openwebui-extensions) | **版本:** 1.3.0 | **项目:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) | **许可证:** MIT
|
||||||
<span class="version-badge">v1.1.0</span>
|
|
||||||
|
|
||||||
通过智能摘要减少长对话的 token 消耗,同时保持对话连贯。
|
> **重要提示**:为了确保所有过滤器的可维护性和易用性,每个过滤器都应附带清晰、完整的文档,以确保其功能、配置和使用方法得到充分说明。
|
||||||
|
|
||||||
|
本过滤器通过智能摘要和消息压缩技术,在保持对话连贯性的同时,显著降低长对话的 Token 消耗。
|
||||||
|
|
||||||
|
## 1.3.0 版本更新
|
||||||
|
|
||||||
|
- **国际化 (i18n) 支持**: 完成了所有用户可见消息的本地化,现已原生支持 9 种语言(含中、英、日、韩及欧洲主要语言)。
|
||||||
|
- **智能状态显示**: 新增 `token_usage_status_threshold` 阀门(默认 80%),可以智能控制何时显示 Token 用量状态,减少不必要的打扰。
|
||||||
|
- **性能大幅优化**: 对前端语言检测和日志处理流程进行了非阻塞重构,完全不影响首字节响应时间(TTFB),保持毫秒级极速推流。
|
||||||
|
- **Copilot SDK 兼容**: 自动检测并跳过基于 `copilot_sdk` 模型的上下文压缩,避免冲突。
|
||||||
|
- **配置项调整**: 为了提供更安静的生产环境体验,`debug_mode` 现已默认设置为 `false`。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 概览
|
## 核心特性
|
||||||
|
|
||||||
Async Context Compression 过滤器通过以下方式帮助管理长对话的 token 使用:
|
- ✅ **全方位国际化**: 原生支持 9 种界面语言。
|
||||||
|
- ✅ **自动压缩**: 基于 Token 阈值自动触发上下文压缩。
|
||||||
|
- ✅ **异步摘要**: 后台生成摘要,不阻塞当前对话响应。
|
||||||
|
- ✅ **持久化存储**: 复用 Open WebUI 共享数据库连接,自动支持 PostgreSQL/SQLite 等。
|
||||||
|
- ✅ **灵活保留策略**: 可配置保留对话头部和尾部消息,确保关键信息连贯。
|
||||||
|
- ✅ **智能注入**: 将历史摘要智能注入到新上下文中。
|
||||||
|
- ✅ **结构感知裁剪**: 智能折叠过长消息,保留文档骨架(标题、首尾)。
|
||||||
|
- ✅ **原生工具输出裁剪**: 支持裁剪冗长的工具调用输出。
|
||||||
|
- ✅ **实时监控**: 实时监控上下文使用情况,超过 90% 发出警告。
|
||||||
|
- ✅ **详细日志**: 提供精确的 Token 统计日志,便于调试。
|
||||||
|
- ✅ **智能模型匹配**: 自定义模型自动继承基础模型的阈值配置。
|
||||||
|
- ⚠ **多模态支持**: 图片内容会被保留,但其 Token **不参与计算**。请相应调整阈值。
|
||||||
|
|
||||||
- 智能总结较早的消息
|
详细的工作原理和流程请参考 [工作流程指南](https://github.com/Fu-Jie/openwebui-extensions/blob/main/plugins/filters/async-context-compression/WORKFLOW_GUIDE_CN.md)。
|
||||||
- 保留关键信息
|
|
||||||
- 降低 API 成本
|
|
||||||
- 保持对话一致性
|
|
||||||
|
|
||||||
特别适用于:
|
|
||||||
|
|
||||||
- 长时间会话
|
|
||||||
- 多轮复杂讨论
|
|
||||||
- 成本优化
|
|
||||||
- 上下文长度控制
|
|
||||||
|
|
||||||
## 功能特性
|
|
||||||
|
|
||||||
- :material-arrow-collapse-vertical: **智能压缩**:AI 驱动的上下文摘要
|
|
||||||
- :material-clock-fast: **异步处理**:后台非阻塞压缩
|
|
||||||
- :material-memory: **保留上下文**:尽量保留重要信息
|
|
||||||
- :material-currency-usd-off: **降低成本**:减少 token 使用
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 安装
|
## 安装与配置
|
||||||
|
|
||||||
1. 下载插件文件:[`async_context_compression.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/filters/async-context-compression)
|
### 1. 数据库(自动)
|
||||||
2. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**
|
|
||||||
3. 配置压缩参数
|
- 自动使用 Open WebUI 的共享数据库连接,**无需额外配置**。
|
||||||
4. 启用过滤器
|
- 首次运行自动创建 `chat_summary` 表。
|
||||||
|
|
||||||
|
### 2. 过滤器顺序
|
||||||
|
|
||||||
|
- 建议顺序:前置过滤器(<10)→ 本过滤器(10)→ 后置过滤器(>10)。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 工作原理
|
## 配置参数
|
||||||
|
|
||||||
```mermaid
|
您可以在过滤器的设置中调整以下参数:
|
||||||
graph TD
|
|
||||||
A[Incoming Messages] --> B{Token Count > Threshold?}
|
### 核心参数
|
||||||
B -->|No| C[Pass Through]
|
|
||||||
B -->|Yes| D[Summarize Older Messages]
|
| 参数 | 默认值 | 描述 |
|
||||||
D --> E[Preserve Recent Messages]
|
| :----------------------------- | :------- | :------------------------------------------------------------------------------------ |
|
||||||
E --> F[Combine Summary + Recent]
|
| `priority` | `10` | 过滤器执行顺序,数值越小越先执行。 |
|
||||||
F --> G[Send to LLM]
|
| `compression_threshold_tokens` | `64000` | **重要**: 当上下文总 Token 超过此值时后台生成摘要,建议设为模型上下文窗口的 50%-70%。 |
|
||||||
|
| `max_context_tokens` | `128000` | **重要**: 上下文硬上限,超过即移除最早消息(保留受保护消息)。 |
|
||||||
|
| `keep_first` | `1` | 始终保留对话开始的 N 条消息,保护系统提示或环境变量。 |
|
||||||
|
| `keep_last` | `6` | 始终保留对话末尾的 N 条消息,确保最近上下文连贯。 |
|
||||||
|
|
||||||
|
### 摘要生成配置
|
||||||
|
|
||||||
|
| 参数 | 默认值 | 描述 |
|
||||||
|
| :-------------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||||
|
| `summary_model` | `None` | 用于生成摘要的模型 ID。**强烈建议**配置快速、经济、上下文窗口大的模型(如 `gemini-2.5-flash`、`deepseek-v3`)。留空则尝试复用当前对话模型。 |
|
||||||
|
| `summary_model_max_context` | `0` | 摘要模型的最大上下文 Token 数。如果为 0,则回退到 `model_thresholds` 或全局 `max_context_tokens`。 |
|
||||||
|
| `max_summary_tokens` | `16384` | 生成摘要时允许的最大 Token 数。 |
|
||||||
|
| `summary_temperature` | `0.1` | 控制摘要生成的随机性,较低的值结果更稳定。 |
|
||||||
|
|
||||||
|
### 高级配置
|
||||||
|
|
||||||
|
#### `model_thresholds` (模型特定阈值)
|
||||||
|
|
||||||
|
这是一个字典配置,可为特定模型 ID 覆盖全局 `compression_threshold_tokens` 与 `max_context_tokens`,适用于混合不同上下文窗口的模型。
|
||||||
|
|
||||||
|
**默认包含 GPT-4、Claude 3.5、Gemini 1.5/2.0、Qwen 2.5/3、DeepSeek V3 等推荐阈值。**
|
||||||
|
|
||||||
|
**配置示例:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"gpt-4": {
|
||||||
|
"compression_threshold_tokens": 8000,
|
||||||
|
"max_context_tokens": 32000
|
||||||
|
},
|
||||||
|
"gemini-2.5-flash": {
|
||||||
|
"compression_threshold_tokens": 734000,
|
||||||
|
"max_context_tokens": 1048576
|
||||||
|
}
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
| 参数 | 默认值 | 描述 |
|
||||||
|
| :----------------------------- | :------- | :-------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
## 配置项
|
| `enable_tool_output_trimming` | `false` | 启用时,若 `function_calling: "native"` 激活,将裁剪冗长的工具输出以仅提取最终答案。 |
|
||||||
|
| `debug_mode` | `false` | 是否在 Open WebUI 的控制台日志中打印详细的调试信息。生产环境默认且建议设为 `false`。 |
|
||||||
| 选项 | 类型 | 默认值 | 说明 |
|
| `show_debug_log` | `false` | 是否在浏览器控制台 (F12) 打印调试日志。便于前端调试。 |
|
||||||
|--------|------|---------|-------------|
|
| `show_token_usage_status` | `true` | 是否在对话结束时显示 Token 使用情况的状态通知。 |
|
||||||
| `token_threshold` | integer | `4000` | 超过该 token 数触发压缩 |
|
| `token_usage_status_threshold` | `80` | 触发显示上下文用量状态通知的最低百分比阈值 (0-100)。 |
|
||||||
| `preserve_recent` | integer | `5` | 保留不压缩的最近消息数量 |
|
|
||||||
| `summary_model` | string | `"auto"` | 用于摘要的模型 |
|
|
||||||
| `compression_ratio` | float | `0.3` | 目标压缩比例 |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 示例
|
## ⭐ 支持
|
||||||
|
|
||||||
### 压缩前
|
如果这个插件对你有帮助,欢迎到 [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) 点个 Star,这将是我持续改进的动力,感谢支持。
|
||||||
|
|
||||||
```
|
## 故障排除 (Troubleshooting) ❓
|
||||||
[Message 1] User: Tell me about Python...
|
|
||||||
[Message 2] AI: Python is a programming language...
|
|
||||||
[Message 3] User: What about its history?
|
|
||||||
[Message 4] AI: Python was created by Guido...
|
|
||||||
[Message 5] User: And its features?
|
|
||||||
[Message 6] AI: Python has many features...
|
|
||||||
... (many more messages)
|
|
||||||
[Message 20] User: Current question
|
|
||||||
```
|
|
||||||
|
|
||||||
### 压缩后
|
- **初始系统提示丢失**:将 `keep_first` 设置为大于 0。
|
||||||
|
- **压缩效果不明显**:提高 `compression_threshold_tokens`,或降低 `keep_first` / `keep_last` 以增强压缩力度。
|
||||||
|
- **提交 Issue**: 如果遇到任何问题,请在 GitHub 上提交 Issue:[OpenWebUI Extensions Issues](https://github.com/Fu-Jie/openwebui-extensions/issues)
|
||||||
|
|
||||||
```
|
## 更新日志
|
||||||
[Summary] Previous conversation covered Python basics,
|
|
||||||
history, features, and common use cases...
|
|
||||||
|
|
||||||
[Message 18] User: Recent question about decorators
|
完整历史请查看 GitHub 项目: [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions)
|
||||||
[Message 19] AI: Decorators in Python are...
|
|
||||||
[Message 20] User: Current question
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 运行要求
|
|
||||||
|
|
||||||
!!! note "前置条件"
|
|
||||||
- OpenWebUI v0.3.0 及以上
|
|
||||||
- 需要可用的 LLM 用于摘要
|
|
||||||
|
|
||||||
!!! tip "最佳实践"
|
|
||||||
- 根据模型上下文窗口设置合适的 token 阈值
|
|
||||||
- 技术讨论可适当提高 `preserve_recent`
|
|
||||||
- 先在非关键对话中测试压缩效果
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 常见问题
|
|
||||||
|
|
||||||
??? question "没有触发压缩?"
|
|
||||||
检查 token 数是否超过配置的阈值,并开启调试日志了解细节。
|
|
||||||
|
|
||||||
??? question "重要上下文丢失?"
|
|
||||||
提高 `preserve_recent` 或降低压缩比例。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 源码
|
|
||||||
|
|
||||||
[:fontawesome-brands-github: 在 GitHub 查看](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/filters/async-context-compression){ .md-button }
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ The Context Enhancement filter automatically enriches your conversations with co
|
|||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
1. Download the plugin file: [`context_enhancement_filter.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/filters/context_enhancement_filter)
|
1. Download the plugin file: [`context_enhancement_filter.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/filters/context_enhancement_filter)
|
||||||
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
||||||
3. Configure enhancement options
|
3. Configure enhancement options
|
||||||
4. Enable the filter
|
4. Enable the filter
|
||||||
@@ -48,4 +48,4 @@ The Context Enhancement filter automatically enriches your conversations with co
|
|||||||
|
|
||||||
## Source Code
|
## Source Code
|
||||||
|
|
||||||
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/filters/context_enhancement_filter){ .md-button }
|
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/filters/context_enhancement_filter){ .md-button }
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ Context Enhancement 过滤器会自动为会话补充必要的上下文,使模
|
|||||||
|
|
||||||
## 安装
|
## 安装
|
||||||
|
|
||||||
1. 下载插件文件:[`context_enhancement_filter.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/filters/context_enhancement_filter)
|
1. 下载插件文件:[`context_enhancement_filter.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/filters/context_enhancement_filter)
|
||||||
2. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**
|
2. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**
|
||||||
3. 配置增强选项
|
3. 配置增强选项
|
||||||
4. 启用过滤器
|
4. 启用过滤器
|
||||||
@@ -48,4 +48,4 @@ Context Enhancement 过滤器会自动为会话补充必要的上下文,使模
|
|||||||
|
|
||||||
## 源码
|
## 源码
|
||||||
|
|
||||||
[:fontawesome-brands-github: 在 GitHub 查看](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/filters/context_enhancement_filter){ .md-button }
|
[:fontawesome-brands-github: 在 GitHub 查看](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/filters/context_enhancement_filter){ .md-button }
|
||||||
|
|||||||
57
docs/plugins/filters/folder-memory.md
Normal file
57
docs/plugins/filters/folder-memory.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# Folder Memory
|
||||||
|
|
||||||
|
**Author:** [Fu-Jie](https://github.com/Fu-Jie/openwebui-extensions) | **Version:** 0.1.0 | **Project:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) | **License:** MIT
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 📌 What's new in 0.1.0
|
||||||
|
- **Initial Release**: Automated "Project Rules" management for OpenWebUI folders.
|
||||||
|
- **Folder-Level Persistence**: Automatically updates folder system prompts with extracted rules.
|
||||||
|
- **Optimized Performance**: Runs asynchronously and supports `PRIORITY` configuration for seamless integration with other filters.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Folder Memory** is an intelligent context filter plugin for OpenWebUI. It automatically extracts consistent "Project Rules" from ongoing conversations within a folder and injects them back into the folder's system prompt.
|
||||||
|
|
||||||
|
This ensures that all future conversations within that folder share the same evolved context and rules, without manual updates.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- **Automatic Extraction**: Analyzes chat history every N messages to extract project rules.
|
||||||
|
- **Non-destructive Injection**: Updates only the specific "Project Rules" block in the system prompt, preserving other instructions.
|
||||||
|
- **Async Processing**: Runs in the background without blocking the user's chat experience.
|
||||||
|
- **ORM Integration**: Directly updates folder data using OpenWebUI's internal models for reliability.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- **Conversations must occur inside a folder.** This plugin only triggers when a chat belongs to a folder (i.e., you need to create a folder in OpenWebUI and start a conversation within it).
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
1. Copy `folder_memory.py` to your OpenWebUI `plugins/filters/` directory (or upload via Admin UI).
|
||||||
|
2. Enable the filter in your **Settings** -> **Filters**.
|
||||||
|
3. (Optional) Configure the triggering threshold (default: every 10 messages).
|
||||||
|
|
||||||
|
## Configuration (Valves)
|
||||||
|
|
||||||
|
| Valve | Default | Description |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| `PRIORITY` | `20` | Priority level for the filter operations. |
|
||||||
|
| `MESSAGE_TRIGGER_COUNT` | `10` | The number of messages required to trigger a rule analysis. |
|
||||||
|
| `MODEL_ID` | `""` | The model used to generate rules. If empty, uses the current chat model. |
|
||||||
|
| `RULES_BLOCK_TITLE` | `## 📂 Project Rules` | The title displayed above the injected rules block. |
|
||||||
|
| `SHOW_DEBUG_LOG` | `False` | Show detailed debug logs in the browser console. |
|
||||||
|
| `UPDATE_ROOT_FOLDER` | `False` | If enabled, finds and updates the root folder rules instead of the current subfolder. |
|
||||||
|
|
||||||
|
## How It Works
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
1. **Trigger**: When a conversation reaches `MESSAGE_TRIGGER_COUNT` (e.g., 10, 20 messages).
|
||||||
|
2. **Analysis**: The plugin sends the recent conversation + existing rules to the LLM.
|
||||||
|
3. **Synthesis**: The LLM merges new insights with old rules, removing obsolete ones.
|
||||||
|
4. **Update**: The new rule set replaces the `<!-- OWUI_PROJECT_RULES_START -->` block in the folder's system prompt.
|
||||||
|
|
||||||
|
## Roadmap
|
||||||
|
|
||||||
|
See [ROADMAP](https://github.com/Fu-Jie/openwebui-extensions/blob/main/plugins/filters/folder-memory/ROADMAP.md) for future plans, including "Project Knowledge" collection.
|
||||||
57
docs/plugins/filters/folder-memory.zh.md
Normal file
57
docs/plugins/filters/folder-memory.zh.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# 文件夹记忆 (Folder Memory)
|
||||||
|
|
||||||
|
**作者:** [Fu-Jie](https://github.com/Fu-Jie/openwebui-extensions) | **版本:** 0.1.0 | **项目:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) | **许可证:** MIT
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 📌 0.1.0 版本特性
|
||||||
|
- **首个版本发布**:专注于自动化的“项目规则”管理。
|
||||||
|
- **文件夹级持久化**:自动将提取的规则回写到文件夹系统提示词中。
|
||||||
|
- **性能优化**:采用异步处理机制,并支持 `PRIORITY` 配置,确保与其他过滤器(如上下文压缩)完美协作。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**文件夹记忆 (Folder Memory)** 是一个 OpenWebUI 的智能上下文过滤器插件。它能自动从文件夹内的对话中提取一致性的“项目规则”,并将其回写到文件夹的系统提示词中。
|
||||||
|
|
||||||
|
这确保了该文件夹内的所有未来对话都能共享相同的进化上下文和规则,无需手动更新。
|
||||||
|
|
||||||
|
## 功能特性
|
||||||
|
|
||||||
|
- **自动提取**:每隔 N 条消息分析一次聊天记录,提取项目规则。
|
||||||
|
- **无损注入**:仅更新系统提示词中的特定“项目规则”块,保留其他指令。
|
||||||
|
- **异步处理**:在后台运行,不阻塞用户的聊天体验。
|
||||||
|
- **ORM 集成**:直接使用 OpenWebUI 的内部模型更新文件夹数据,确保可靠性。
|
||||||
|
|
||||||
|
## 前置条件
|
||||||
|
|
||||||
|
- **对话必须在文件夹内进行。** 此插件仅在聊天属于某个文件夹时触发(即您需要先在 OpenWebUI 中创建一个文件夹,并在其内部开始对话)。
|
||||||
|
|
||||||
|
## 安装指南
|
||||||
|
|
||||||
|
1. 将 `folder_memory.py` (或中文版 `folder_memory_cn.py`) 复制到 OpenWebUI 的 `plugins/filters/` 目录(或通过管理员 UI 上传)。
|
||||||
|
2. 在 **设置** -> **过滤器** 中启用该插件。
|
||||||
|
3. (可选)配置触发阈值(默认:每 10 条消息)。
|
||||||
|
|
||||||
|
## 配置 (Valves)
|
||||||
|
|
||||||
|
| 参数 | 默认值 | 说明 |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| `PRIORITY` | `20` | 过滤器操作的优先级。 |
|
||||||
|
| `MESSAGE_TRIGGER_COUNT` | `10` | 触发规则分析的消息数量阈值。 |
|
||||||
|
| `MODEL_ID` | `""` | 用于生成规则的模型 ID。若为空,则使用当前对话模型。 |
|
||||||
|
| `RULES_BLOCK_TITLE` | `## 📂 项目规则` | 显示在注入规则块上方的标题。 |
|
||||||
|
| `SHOW_DEBUG_LOG` | `False` | 在浏览器控制台显示详细调试日志。 |
|
||||||
|
| `UPDATE_ROOT_FOLDER` | `False` | 如果启用,将向上查找并更新根文件夹的规则,而不是当前子文件夹。 |
|
||||||
|
|
||||||
|
## 工作原理
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
1. **触发**:当对话达到 `MESSAGE_TRIGGER_COUNT`(例如 10、20 条消息)时。
|
||||||
|
2. **分析**:插件将最近的对话 + 现有规则发送给 LLM。
|
||||||
|
3. **综合**:LLM 将新见解与旧规则合并,移除过时的规则。
|
||||||
|
4. **更新**:新的规则集替换文件夹系统提示词中的 `<!-- OWUI_PROJECT_RULES_START -->` 块。
|
||||||
|
|
||||||
|
## 路线图
|
||||||
|
|
||||||
|
查看 [ROADMAP](https://github.com/Fu-Jie/openwebui-extensions/blob/main/plugins/filters/folder-memory/ROADMAP.md) 了解未来计划,包括“项目知识”收集功能。
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
# Gemini Manifold Companion
|
|
||||||
|
|
||||||
<span class="category-badge filter">Filter</span>
|
|
||||||
<span class="version-badge">v0.3.2</span>
|
|
||||||
|
|
||||||
Companion filter for the Gemini Manifold pipe plugin, providing enhanced functionality.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Overview
|
|
||||||
|
|
||||||
The Gemini Manifold Companion works alongside the [Gemini Manifold Pipe](../pipes/gemini-manifold.md) to provide additional processing and enhancement for Gemini model integrations.
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
- :material-handshake: **Seamless Integration**: Works with Gemini Manifold pipe
|
|
||||||
- :material-format-text: **Message Formatting**: Optimizes messages for Gemini
|
|
||||||
- :material-shield: **Error Handling**: Graceful handling of API issues
|
|
||||||
- :material-tune: **Fine-tuning**: Additional configuration options
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
1. First, install the [Gemini Manifold Pipe](../pipes/gemini-manifold.md)
|
|
||||||
2. Download the companion filter: [`gemini_manifold_companion.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/filters/gemini_manifold_companion)
|
|
||||||
3. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
|
||||||
4. Enable the filter
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Configuration
|
|
||||||
|
|
||||||
| Option | Type | Default | Description |
|
|
||||||
|--------|------|---------|-------------|
|
|
||||||
| `auto_format` | boolean | `true` | Auto-format messages for Gemini |
|
|
||||||
| `handle_errors` | boolean | `true` | Enable error handling |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Requirements
|
|
||||||
|
|
||||||
!!! warning "Dependency"
|
|
||||||
This filter requires the **Gemini Manifold Pipe** to be installed and configured.
|
|
||||||
|
|
||||||
!!! note "Prerequisites"
|
|
||||||
- OpenWebUI v0.3.0 or later
|
|
||||||
- Gemini Manifold Pipe installed
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Source Code
|
|
||||||
|
|
||||||
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/filters/gemini_manifold_companion){ .md-button }
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
# Gemini Manifold Companion
|
|
||||||
|
|
||||||
<span class="category-badge filter">Filter</span>
|
|
||||||
<span class="version-badge">v0.3.2</span>
|
|
||||||
|
|
||||||
Gemini Manifold Pipe 的伴随过滤器,用于增强 Gemini 集成的处理效果。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 概览
|
|
||||||
|
|
||||||
Gemini Manifold Companion 与 [Gemini Manifold Pipe](../pipes/gemini-manifold.md) 搭配使用,为 Gemini 模型集成提供额外的处理与优化。
|
|
||||||
|
|
||||||
## 功能特性
|
|
||||||
|
|
||||||
- :material-handshake: **无缝协同**:与 Gemini Manifold Pipe 配合工作
|
|
||||||
- :material-format-text: **消息格式化**:针对 Gemini 优化消息
|
|
||||||
- :material-shield: **错误处理**:更友好的 API 异常处理
|
|
||||||
- :material-tune: **精细配置**:提供额外调优选项
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 安装
|
|
||||||
|
|
||||||
1. 先安装 [Gemini Manifold Pipe](../pipes/gemini-manifold.md)
|
|
||||||
2. 下载伴随过滤器:[`gemini_manifold_companion.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/filters/gemini_manifold_companion)
|
|
||||||
3. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**
|
|
||||||
4. 启用过滤器
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 配置项
|
|
||||||
|
|
||||||
| 选项 | 类型 | 默认值 | 说明 |
|
|
||||||
|--------|------|---------|-------------|
|
|
||||||
| `auto_format` | boolean | `true` | 为 Gemini 自动格式化消息 |
|
|
||||||
| `handle_errors` | boolean | `true` | 开启错误处理 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 运行要求
|
|
||||||
|
|
||||||
!!! warning "依赖"
|
|
||||||
本过滤器需要先安装并配置 **Gemini Manifold Pipe**。
|
|
||||||
|
|
||||||
!!! note "前置条件"
|
|
||||||
- OpenWebUI v0.3.0 及以上
|
|
||||||
- 已安装 Gemini Manifold Pipe
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 源码
|
|
||||||
|
|
||||||
[:fontawesome-brands-github: 在 GitHub 查看](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/filters/gemini_manifold_companion){ .md-button }
|
|
||||||
53
docs/plugins/filters/github-copilot-sdk-files-filter.md
Normal file
53
docs/plugins/filters/github-copilot-sdk-files-filter.md
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# GitHub Copilot SDK Files Filter (v0.1.2)
|
||||||
|
|
||||||
|
This is a dedicated **companion filter plugin** designed specifically for the [GitHub Copilot SDK Pipe](../pipes/github-copilot-sdk.md).
|
||||||
|
|
||||||
|
Its core mission is to **protect user-uploaded files from being "pre-processed" by the OpenWebUI core system, ensuring that the Copilot Agent receives the raw files for autonomous analysis.**
|
||||||
|
|
||||||
|
## 🎯 Why is this needed?
|
||||||
|
|
||||||
|
In OpenWebUI's default workflow, when you upload a file (e.g., PDF, Excel, Python script), OpenWebUI automatically initiates a **RAG (Retrieval-Augmented Generation)** process: parsing the file, vectorizing it, extracting text, and injecting it into the prompt.
|
||||||
|
|
||||||
|
While useful for standard models, this is often disruptive for a **Copilot SDK Agent**:
|
||||||
|
|
||||||
|
1. **Agent Needs Raw Files**: The Agent may need to run Python code to read an Excel file or analyze a full directory structure, not chopped-up text fragments.
|
||||||
|
2. **Context Pollution**: Large amounts of text injected by RAG consume tokens and can confuse the Agent about "where the file is."
|
||||||
|
3. **Conflicts**: If you have other multimodal plugins installed (like Gemini Filter), they might compete for file processing rights.
|
||||||
|
|
||||||
|
**This plugin acts as a "bodyguard" to solve these issues.**
|
||||||
|
|
||||||
|
## 🚀 How it Works
|
||||||
|
|
||||||
|
When you select a Copilot model (name containing `copilot_sdk`) in OpenWebUI and send a file:
|
||||||
|
|
||||||
|
1. **Intercept**: This plugin runs with high priority (Priority 0), before RAG and other filters.
|
||||||
|
2. **Relocate**: Detecting a Copilot model, it moves the `files` list from the request to a secure custom field `copilot_files`.
|
||||||
|
3. **Hide**: It clears the original `files` field.
|
||||||
|
4. **Status Update**: It emits a status message "Managed X files for Copilot (RAG Bypassed)" to the UI.
|
||||||
|
5. **Pass**: The OpenWebUI core sees an empty `files` list and **does not trigger RAG**.
|
||||||
|
6. **Deliver**: The subsequent [Copilot SDK Pipe](../pipes/github-copilot-sdk.md) plugin checks `copilot_files`, retrieves file information, and automatically copies them into the Agent's isolated workspace.
|
||||||
|
|
||||||
|
## 📦 Installation & Configuration
|
||||||
|
|
||||||
|
### 1. Installation
|
||||||
|
|
||||||
|
Import this plugin on the OpenWebUI **Functions** page.
|
||||||
|
|
||||||
|
### 2. Enable
|
||||||
|
|
||||||
|
Ensure this Filter is enabled globally or in chat settings.
|
||||||
|
|
||||||
|
### 3. Configuration (Valves)
|
||||||
|
|
||||||
|
Default settings work for most users unless you have specific needs:
|
||||||
|
|
||||||
|
| Parameter | Description | Default |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| **priority** | Execution priority of the filter. **Must be lower than OpenWebUI RAG priority**. | `0` |
|
||||||
|
| **target_model_keyword** | Keyword to identify Copilot models. Only models containing this keyword will trigger file interception. | `copilot_sdk` |
|
||||||
|
|
||||||
|
## ⚠️ Important Notes
|
||||||
|
|
||||||
|
* **Must be used with Copilot SDK Pipe**: If you install this plugin without the main Pipe plugin, uploaded files will simply "disappear" (as no subsequent plugin will look for them in `copilot_files`).
|
||||||
|
* **Gemini Filter Compatibility**: This plugin is fully compatible with the Gemini Multimodal Filter. As long as the priority is set correctly (This Plugin < Gemini Plugin), they can coexist without interference.
|
||||||
|
* **Physical File Path**: Ensure the `OPENWEBUI_UPLOAD_PATH` is correctly set in the Pipe plugin Valves for the actual file transport to work.
|
||||||
53
docs/plugins/filters/github-copilot-sdk-files-filter.zh.md
Normal file
53
docs/plugins/filters/github-copilot-sdk-files-filter.zh.md
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# GitHub Copilot SDK 文件过滤器 (v0.1.2)
|
||||||
|
|
||||||
|
这是一个专门为 [GitHub Copilot SDK Pipe](../pipes/github-copilot-sdk.zh.md) 设计的**伴侣过滤器插件**。
|
||||||
|
|
||||||
|
它的核心使命是:**保护用户上传的文件不被 OpenWebUI 核心系统“抢先处理”,确保 Copilot Agent 能够接收到原始文件并进行自主分析。**
|
||||||
|
|
||||||
|
## 🎯 为什么需要它?
|
||||||
|
|
||||||
|
在 OpenWebUI 的默认流程中,当你上传一个文件(如 PDF、Excel、Python 脚本)时,OpenWebUI 会自动启动 **RAG(检索增强生成)** 流程:解析文件、向量化、提取文本并注入到提示词中。
|
||||||
|
|
||||||
|
虽然这对普通模型很有用,但对于 **Copilot SDK Agent** 来说,这往往是干扰:
|
||||||
|
|
||||||
|
1. **Agent 需要原始文件**:Agent 可能需要运行 Python 代码读取 Excel,或者分析完整的代码结构,而不是被切碎的文本片段。
|
||||||
|
2. **上下文污染**:RAG 注入的大量文本会消耗 Token,且容易让 Agent 混淆“文件在哪里”。
|
||||||
|
3. **冲突**:如果你同时安装了其他多模态插件(如 Gemini Filter),它们可能会争夺文件的处理权。
|
||||||
|
|
||||||
|
**本插件就是为了解决这个问题而生的“保镖”。**
|
||||||
|
|
||||||
|
## 🚀 功能原理
|
||||||
|
|
||||||
|
当你在 OpenWebUI 中选择了一个 Copilot 模型(名称包含 `copilot_sdk`)并发送文件时:
|
||||||
|
|
||||||
|
1. **拦截 (Intercept)**:本插件会以极高的优先级(Priority 0)运行,先于 RAG 和其他过滤器。
|
||||||
|
2. **搬运 (Relocate)**:它检测到模型是 Copilot,便将请求中的 `files`(文件列表)移动到一个安全的自定义字段 `copilot_files` 中。
|
||||||
|
3. **隐身 (Hide)**:它清空原始的 `files` 字段。
|
||||||
|
4. **状态更新**: 它会在 UI 中发出“已为 Copilot 管理 X 个文件 (已绕过 RAG)”的状态消息。
|
||||||
|
5. **放行 (Pass)**:OpenWebUI 核心看到 `files` 为空,便**不会触发 RAG**。
|
||||||
|
6. **交付 (Deliver)**:后续的 [Copilot SDK Pipe](../pipes/github-copilot-sdk.zh.md) 插件会检查 `copilot_files`,从中获取文件信息,并自动将其复制到 Agent 的独立工作区中。
|
||||||
|
|
||||||
|
## 📦 安装与配置
|
||||||
|
|
||||||
|
### 1. 安装
|
||||||
|
|
||||||
|
在 OpenWebUI 的 **Functions** 页面导入此插件。
|
||||||
|
|
||||||
|
### 2. 启用
|
||||||
|
|
||||||
|
确保在全局或对话设置中启用了此 Filter。
|
||||||
|
|
||||||
|
### 3. 配置 (Valves)
|
||||||
|
|
||||||
|
通常不需要修改默认配置,除非你有特殊需求:
|
||||||
|
|
||||||
|
| 参数 | 说明 | 默认值 |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| **priority** | 过滤器的执行优先级。**必须小于 OpenWebUI RAG 的优先级**。 | `0` |
|
||||||
|
| **target_model_keyword** | 用于识别 Copilot 模型的关键词。只有包含此关键词的模型才会触发 file 拦截。 | `copilot_sdk` |
|
||||||
|
|
||||||
|
## ⚠️ 注意事项
|
||||||
|
|
||||||
|
* **必须配合 Copilot SDK Pipe 使用**:如果你没有安装主 Pipe 插件,本插件将导致上传的文件“凭空消失”(因为没有后续插件去 `copilot_files` 里找它们)。
|
||||||
|
* **Gemini Filter 兼容性**:本插件已完美兼容 Gemini 多模态过滤器。只要优先级设置正确(本插件 < Gemini 插件),它们可以共存互不干扰。
|
||||||
|
* **物理文件路径**: 确保在 Pipe 插件的 Valves 中正确设置了 `OPENWEBUI_UPLOAD_PATH`,以便文件自动搬运功能正常工作。
|
||||||
@@ -22,7 +22,7 @@ Filters act as middleware in the message pipeline:
|
|||||||
|
|
||||||
Reduces token consumption in long conversations through intelligent summarization while maintaining coherence.
|
Reduces token consumption in long conversations through intelligent summarization while maintaining coherence.
|
||||||
|
|
||||||
**Version:** 1.1.0
|
**Version:** 1.3.0
|
||||||
|
|
||||||
[:octicons-arrow-right-24: Documentation](async-context-compression.md)
|
[:octicons-arrow-right-24: Documentation](async-context-compression.md)
|
||||||
|
|
||||||
@@ -36,15 +36,55 @@ Filters act as middleware in the message pipeline:
|
|||||||
|
|
||||||
[:octicons-arrow-right-24: Documentation](context-enhancement.md)
|
[:octicons-arrow-right-24: Documentation](context-enhancement.md)
|
||||||
|
|
||||||
- :material-google:{ .lg .middle } **Gemini Manifold Companion**
|
- :material-folder-refresh:{ .lg .middle } **Folder Memory**
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Companion filter for the Gemini Manifold pipe plugin.
|
Automatically extracts consistent "Project Rules" from ongoing conversations within a folder and injects them back into the folder's system prompt.
|
||||||
|
|
||||||
**Version:** 1.7.0
|
**Version:** 0.1.0
|
||||||
|
|
||||||
[:octicons-arrow-right-24: Documentation](gemini-manifold-companion.md)
|
[:octicons-arrow-right-24: Documentation](folder-memory.md)
|
||||||
|
|
||||||
|
- :material-format-paint:{ .lg .middle } **Markdown Normalizer**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Fixes common Markdown formatting issues in LLM outputs, including Mermaid syntax, code blocks, and LaTeX formulas.
|
||||||
|
|
||||||
|
**Version:** 1.2.7
|
||||||
|
|
||||||
|
[:octicons-arrow-right-24: Documentation](markdown_normalizer.md)
|
||||||
|
|
||||||
|
- :material-merge:{ .lg .middle } **Multi-Model Context Merger**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Automatically merges context from multiple model responses in the previous turn, enabling collaborative answers.
|
||||||
|
|
||||||
|
**Version:** 0.1.0
|
||||||
|
|
||||||
|
[:octicons-arrow-right-24: Documentation](multi-model-context-merger.md)
|
||||||
|
|
||||||
|
- :material-file-document-multiple:{ .lg .middle } **Web Gemini Multimodal Filter**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
A powerful filter that provides multimodal capabilities (PDF, Office, Images, Audio, Video) to any model in OpenWebUI.
|
||||||
|
|
||||||
|
**Version:** 0.3.2
|
||||||
|
|
||||||
|
[:octicons-arrow-right-24: Documentation](web-gemini-multimodel.md)
|
||||||
|
|
||||||
|
- :material-file-shield:{ .lg .middle } **Copilot SDK Files Filter**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
A specialized filter to bypass OpenWebUI's default RAG for GitHub Copilot SDK models. It ensures the Agent receives raw files for autonomous analysis.
|
||||||
|
|
||||||
|
**Version:** 0.1.2
|
||||||
|
|
||||||
|
[:octicons-arrow-right-24: Documentation](github-copilot-sdk-files-filter.md)
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ Filter 充当消息管线中的中间件:
|
|||||||
|
|
||||||
通过智能总结减少长对话的 token 消耗,同时保持连贯性。
|
通过智能总结减少长对话的 token 消耗,同时保持连贯性。
|
||||||
|
|
||||||
**版本:** 1.1.0
|
**版本:** 1.3.0
|
||||||
|
|
||||||
[:octicons-arrow-right-24: 查看文档](async-context-compression.md)
|
[:octicons-arrow-right-24: 查看文档](async-context-compression.md)
|
||||||
|
|
||||||
@@ -36,15 +36,35 @@ Filter 充当消息管线中的中间件:
|
|||||||
|
|
||||||
[:octicons-arrow-right-24: 查看文档](context-enhancement.md)
|
[:octicons-arrow-right-24: 查看文档](context-enhancement.md)
|
||||||
|
|
||||||
- :material-google:{ .lg .middle } **Gemini Manifold Companion**
|
- :material-folder-refresh:{ .lg .middle } **Folder Memory**
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Gemini Manifold Pipe 插件的伴随过滤器。
|
自动从文件夹内的对话中提取一致性的“项目规则”,并将其回写到文件夹的系统提示词中。
|
||||||
|
|
||||||
**版本:** 1.7.0
|
**版本:** 0.1.0
|
||||||
|
|
||||||
[:octicons-arrow-right-24: 查看文档](gemini-manifold-companion.md)
|
[:octicons-arrow-right-24: 查看文档](folder-memory.zh.md)
|
||||||
|
|
||||||
|
- :material-format-paint:{ .lg .middle } **Markdown Normalizer**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
修复 LLM 输出中常见的 Markdown 格式问题,包括 Mermaid 语法、代码块和 LaTeX 公式。
|
||||||
|
|
||||||
|
**版本:** 1.2.7
|
||||||
|
|
||||||
|
[:octicons-arrow-right-24: 查看文档](markdown_normalizer.zh.md)
|
||||||
|
|
||||||
|
- :material-file-shield:{ .lg .middle } **Copilot SDK 文件过滤器**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
专门用于绕过 OpenWebUI 默认 RAG 机制的过滤器,针对 GitHub Copilot SDK 模型。确保 Agent 能够接收到原始文件进行自主分析。
|
||||||
|
|
||||||
|
**版本:** 0.1.2
|
||||||
|
|
||||||
|
[:octicons-arrow-right-24: 查看文档](github-copilot-sdk-files-filter.zh.md)
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
79
docs/plugins/filters/markdown_normalizer.md
Normal file
79
docs/plugins/filters/markdown_normalizer.md
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
# Markdown Normalizer Filter
|
||||||
|
|
||||||
|
**Author:** [Fu-Jie](https://github.com/Fu-Jie/openwebui-extensions) | **Version:** 1.2.7 | **Project:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) | **License:** MIT
|
||||||
|
|
||||||
|
A content normalizer filter for Open WebUI that fixes common Markdown formatting issues in LLM outputs. It ensures that code blocks, LaTeX formulas, Mermaid diagrams, and other Markdown elements are rendered correctly.
|
||||||
|
|
||||||
|
## 🔥 What's New in v1.2.7
|
||||||
|
|
||||||
|
* **LaTeX Formula Protection**: Enhanced escape character cleaning to protect LaTeX commands like `\times`, `\nu`, and `\theta` from being corrupted.
|
||||||
|
* **Expanded i18n Support**: Now supports 12 languages with automatic detection and fallback.
|
||||||
|
* **Valves Optimization**: Optimized configuration descriptions to be English-only for better consistency.
|
||||||
|
* **Bug Fixes**:
|
||||||
|
* Resolved [Issue #49](https://github.com/Fu-Jie/openwebui-extensions/issues/49): Fixed a bug where consecutive bold parts on the same line caused spaces between them to be removed.
|
||||||
|
* Fixed a `NameError` in the plugin code that caused test collection failures.
|
||||||
|
|
||||||
|
## 🌐 Multilingual Support
|
||||||
|
|
||||||
|
Supports automatic interface and status switching for the following languages:
|
||||||
|
`English`, `简体中文`, `繁體中文 (香港)`, `繁體中文 (台灣)`, `한국어`, `日本語`, `Français`, `Deutsch`, `Español`, `Italiano`, `Tiếng Việt`, `Bahasa Indonesia`.
|
||||||
|
|
||||||
|
## ✨ Core Features
|
||||||
|
|
||||||
|
* **Details Tag Normalization**: Ensures proper spacing for `<details>` tags (used for thought chains). Adds a blank line after `</details>` and ensures a newline after self-closing `<details />` tags to prevent rendering issues.
|
||||||
|
* **Emphasis Spacing Fix**: Fixes extra spaces inside emphasis markers (e.g., `** text **` -> `**text**`) which can cause rendering failures. Includes safeguards to protect math expressions (e.g., `2 * 3 * 4`) and list variables.
|
||||||
|
* **Mermaid Syntax Fix**: Automatically fixes common Mermaid syntax errors, such as unquoted node labels (including multi-line labels and citations) and unclosed subgraphs. **New in v1.1.2**: Comprehensive protection for edge labels (text on connecting lines) across all link types (solid, dotted, thick).
|
||||||
|
* **Frontend Console Debugging**: Supports printing structured debug logs directly to the browser console (F12) for easier troubleshooting.
|
||||||
|
* **Code Block Formatting**: Fixes broken code block prefixes, suffixes, and indentation.
|
||||||
|
* **LaTeX Normalization**: Standardizes LaTeX formula delimiters (`\[` -> `$$`, `\(` -> `$`).
|
||||||
|
* **Thought Tag Normalization**: Unifies thought tags (`<think>`, `<thinking>` -> `<thought>`).
|
||||||
|
* **Escape Character Fix**: Cleans up excessive escape characters (`\\n`, `\\t`).
|
||||||
|
* **List Formatting**: Ensures proper newlines in list items.
|
||||||
|
* **Heading Fix**: Adds missing spaces in headings (`#Heading` -> `# Heading`).
|
||||||
|
* **Table Fix**: Adds missing closing pipes in tables.
|
||||||
|
* **XML Cleanup**: Removes leftover XML artifacts.
|
||||||
|
|
||||||
|
## How to Use 🛠️
|
||||||
|
|
||||||
|
1. Install the plugin in Open WebUI.
|
||||||
|
2. Enable the filter globally or for specific models.
|
||||||
|
3. Configure the enabled fixes in the **Valves** settings.
|
||||||
|
4. (Optional) **Show Debug Log** is enabled by default in Valves. This prints structured logs to the browser console (F12).
|
||||||
|
> [!WARNING]
|
||||||
|
> As this is an initial version, some "negative fixes" might occur (e.g., breaking valid Markdown). If you encounter issues, please check the console logs, copy the "Original" vs "Normalized" content, and submit an issue.
|
||||||
|
|
||||||
|
## Configuration (Valves) ⚙️
|
||||||
|
|
||||||
|
| Parameter | Default | Description |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| `priority` | `50` | Filter priority. Higher runs later (recommended after other filters). |
|
||||||
|
| `enable_escape_fix` | `True` | Fix excessive escape characters (`\n`, `\t`, etc.). |
|
||||||
|
| `enable_escape_fix_in_code_blocks` | `False` | Apply escape fix inside code blocks (may affect valid code). |
|
||||||
|
| `enable_thought_tag_fix` | `True` | Normalize thought tags (`</thought>`). |
|
||||||
|
| `enable_details_tag_fix` | `True` | Normalize `<details>` tags and add safe spacing. |
|
||||||
|
| `enable_code_block_fix` | `True` | Fix code block formatting (indentation/newlines). |
|
||||||
|
| `enable_latex_fix` | `True` | Normalize LaTeX delimiters (`\[` -> `$$`, `\(` -> `$`). |
|
||||||
|
| `enable_list_fix` | `False` | Fix list item newlines (experimental). |
|
||||||
|
| `enable_unclosed_block_fix` | `True` | Auto-close unclosed code blocks. |
|
||||||
|
| `enable_fullwidth_symbol_fix` | `False` | Fix full-width symbols in code blocks. |
|
||||||
|
| `enable_mermaid_fix` | `True` | Fix common Mermaid syntax errors. |
|
||||||
|
| `enable_heading_fix` | `True` | Fix missing space in headings. |
|
||||||
|
| `enable_table_fix` | `True` | Fix missing closing pipe in tables. |
|
||||||
|
| `enable_xml_tag_cleanup` | `True` | Cleanup leftover XML tags. |
|
||||||
|
| `enable_emphasis_spacing_fix` | `False` | Fix extra spaces in emphasis. |
|
||||||
|
| `show_status` | `True` | Show status notification when fixes are applied. |
|
||||||
|
| `show_debug_log` | `True` | Print debug logs to browser console (F12). |
|
||||||
|
|
||||||
|
## ⭐ Support
|
||||||
|
|
||||||
|
If this plugin has been useful, a star on [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) is a big motivation for me. Thank you for the support.
|
||||||
|
|
||||||
|
## 🧩 Others
|
||||||
|
|
||||||
|
### Troubleshooting ❓
|
||||||
|
|
||||||
|
* **Submit an Issue**: If you encounter any problems, please submit an issue on GitHub: [OpenWebUI Extensions Issues](https://github.com/Fu-Jie/openwebui-extensions/issues)
|
||||||
|
|
||||||
|
### Changelog
|
||||||
|
|
||||||
|
See the full history on GitHub: [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions)
|
||||||
79
docs/plugins/filters/markdown_normalizer.zh.md
Normal file
79
docs/plugins/filters/markdown_normalizer.zh.md
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
# Markdown 格式化过滤器 (Markdown Normalizer)
|
||||||
|
|
||||||
|
**作者:** [Fu-Jie](https://github.com/Fu-Jie/openwebui-extensions) | **Version:** 1.2.7 | **项目:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) | **许可证:** MIT
|
||||||
|
|
||||||
|
这是一个用于 Open WebUI 的内容格式化过滤器,旨在修复 LLM 输出中常见的 Markdown 格式问题。它能确保代码块、LaTeX 公式、Mermaid 图表和其他 Markdown 元素被正确渲染。
|
||||||
|
|
||||||
|
## 🔥 最新更新 v1.2.7
|
||||||
|
|
||||||
|
* **LaTeX 公式保护**: 增强了转义字符清理逻辑,自动保护 `$ $` 或 `$$ $$` 内的 LaTeX 命令(如 `\times`、`\nu`、`\theta`),防止渲染失效。
|
||||||
|
* **扩展国际化 (i18n) 支持**: 现已支持 12 种语言,具备自动探测与回退机制。
|
||||||
|
* **配置项优化**: 将 Valves 配置项的描述统一为英文,保持界面一致性。
|
||||||
|
* **修复 Bug**:
|
||||||
|
* 修复了 [Issue #49](https://github.com/Fu-Jie/openwebui-extensions/issues/49):解决了当同一行存在多个加粗部分时,由于正则匹配过于贪婪导致中间内容丢失空格的问题。
|
||||||
|
* 修复了插件代码中的 `NameError` 错误,确保测试脚本能正常运行。
|
||||||
|
|
||||||
|
## 🌐 多语言支持 (i18n)
|
||||||
|
|
||||||
|
支持以下语言的界面与状态自动切换:
|
||||||
|
`English`, `简体中文`, `繁體中文 (香港)`, `繁體中文 (台灣)`, `한국어`, `日本語`, `Français`, `Deutsch`, `Español`, `Italiano`, `Tiếng Việt`, `Bahasa Indonesia`
|
||||||
|
|
||||||
|
## ✨ 核心特性
|
||||||
|
|
||||||
|
* **Details 标签规范化**: 确保 `<details>` 标签(常用于思维链)有正确的间距。在 `</details>` 后添加空行,并在自闭合 `<details />` 标签后添加换行,防止渲染问题。
|
||||||
|
* **强调空格修复**: 修复强调标记内部的多余空格(例如 `** 文本 **` -> `**文本**`),这会导致 Markdown 渲染失败。包含保护机制,防止误修改数学表达式(如 `2 * 3 * 4`)或列表变量。
|
||||||
|
* **Mermaid 语法修复**: 自动修复常见的 Mermaid 语法错误,如未加引号的节点标签(支持多行标签和引用标记)和未闭合的子图 (Subgraph)。**v1.1.2 新增**: 全面保护各种类型的连线标签(实线、虚线、粗线),防止被误修改。
|
||||||
|
* **前端控制台调试**: 支持将结构化的调试日志直接打印到浏览器控制台 (F12),方便排查问题。
|
||||||
|
* **代码块格式化**: 修复破损的代码块前缀、后缀和缩进问题。
|
||||||
|
* **LaTeX 规范化**: 标准化 LaTeX 公式定界符 (`\[` -> `$$`, `\(` -> `$`)。
|
||||||
|
* **思维标签规范化**: 统一思维链标签 (`<think>`, `<thinking>` -> `<thought>`)。
|
||||||
|
* **转义字符修复**: 清理过度的转义字符 (`\\n`, `\\t`)。
|
||||||
|
* **列表格式化**: 确保列表项有正确的换行。
|
||||||
|
* **标题修复**: 修复标题中缺失的空格 (`#标题` -> `# 标题`)。
|
||||||
|
* **表格修复**: 修复表格中缺失的闭合管道符。
|
||||||
|
* **XML 清理**: 移除残留的 XML 标签。
|
||||||
|
|
||||||
|
## 使用方法
|
||||||
|
|
||||||
|
1. 在 Open WebUI 中安装此插件。
|
||||||
|
2. 全局启用或为特定模型启用此过滤器。
|
||||||
|
3. 在 **Valves** 设置中配置需要启用的修复项。
|
||||||
|
4. (可选) **显示调试日志 (Show Debug Log)** 在 Valves 中默认开启。这会将结构化的日志打印到浏览器控制台 (F12)。
|
||||||
|
> [!WARNING]
|
||||||
|
> 由于这是初版,可能会出现“负向修复”的情况(例如破坏了原本正确的格式)。如果您遇到问题,请务目查看控制台日志,复制“原始 (Original)”与“规范化 (Normalized)”的内容对比,并提交 Issue 反馈。
|
||||||
|
|
||||||
|
## 配置参数 (Valves) ⚙️
|
||||||
|
|
||||||
|
| 参数 | 默认值 | 描述 |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| `priority` | `50` | 过滤器优先级。数值越大越靠后(建议在其他过滤器之后运行)。 |
|
||||||
|
| `enable_escape_fix` | `True` | 修复过度的转义字符(`\n`, `\t` 等)。 |
|
||||||
|
| `enable_escape_fix_in_code_blocks` | `False` | 在代码块内应用转义修复(可能影响有效代码)。 |
|
||||||
|
| `enable_thought_tag_fix` | `True` | 规范化思维标签(`</thought>`)。 |
|
||||||
|
| `enable_details_tag_fix` | `True` | 规范化 `<details>` 标签并添加安全间距。 |
|
||||||
|
| `enable_code_block_fix` | `True` | 修复代码块格式(缩进/换行)。 |
|
||||||
|
| `enable_latex_fix` | `True` | 规范化 LaTeX 定界符(`\[` -> `$$`, `\(` -> `$`)。 |
|
||||||
|
| `enable_list_fix` | `False` | 修复列表项换行(实验性)。 |
|
||||||
|
| `enable_unclosed_block_fix` | `True` | 自动闭合未闭合的代码块。 |
|
||||||
|
| `enable_fullwidth_symbol_fix` | `False` | 修复代码块中的全角符号。 |
|
||||||
|
| `enable_mermaid_fix` | `True` | 修复常见 Mermaid 语法错误。 |
|
||||||
|
| `enable_heading_fix` | `True` | 修复标题中缺失的空格。 |
|
||||||
|
| `enable_table_fix` | `True` | 修复表格中缺失的闭合管道符。 |
|
||||||
|
| `enable_xml_tag_cleanup` | `True` | 清理残留的 XML 标签。 |
|
||||||
|
| `enable_emphasis_spacing_fix` | `False` | 修复强调语法中的多余空格。 |
|
||||||
|
| `show_status` | `True` | 应用修复时显示状态通知。 |
|
||||||
|
| `show_debug_log` | `True` | 在浏览器控制台打印调试日志。 |
|
||||||
|
|
||||||
|
## ⭐ 支持
|
||||||
|
|
||||||
|
如果这个插件对你有帮助,欢迎到 [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) 点个 Star,这将是我持续改进的动力,感谢支持。
|
||||||
|
|
||||||
|
## 其他
|
||||||
|
|
||||||
|
### 故障排除 (Troubleshooting) ❓
|
||||||
|
|
||||||
|
* **提交 Issue**: 如果遇到任何问题,请在 GitHub 上提交 Issue:[OpenWebUI Extensions Issues](https://github.com/Fu-Jie/openwebui-extensions/issues)
|
||||||
|
|
||||||
|
### 更新日志
|
||||||
|
|
||||||
|
完整历史请查看 GitHub 项目: [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions)
|
||||||
35
docs/plugins/filters/multi-model-context-merger.md
Normal file
35
docs/plugins/filters/multi-model-context-merger.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# Multi-Model Context Merger
|
||||||
|
|
||||||
|
<span class="category-badge filter">Filter</span>
|
||||||
|
<span class="version-badge">v0.1.0</span>
|
||||||
|
|
||||||
|
Automatically merges context from multiple model responses in the previous turn, enabling collaborative answers.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This filter detects when multiple models have responded in the previous turn (e.g., using "Arena" mode or multiple models selected). It consolidates these responses and injects them as context for the current turn, allowing the next model to see what others have said.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- :material-merge: **Auto-Merge**: Consolidates responses from multiple models into a single context block.
|
||||||
|
- :material-format-list-group: **Structured Injection**: Uses XML-like tags (`<response>`) to separate different model outputs.
|
||||||
|
- :material-robot-confused: **Collaboration**: Enables models to build upon or critique each other's answers.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
1. Download the plugin file: [`multi_model_context_merger.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/filters)
|
||||||
|
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
||||||
|
3. Enable the filter.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
1. Select **multiple models** in the chat (or use Arena mode).
|
||||||
|
2. Ask a question. All models will respond.
|
||||||
|
3. Ask a follow-up question.
|
||||||
|
4. The filter will inject the previous responses from ALL models into the context of the current model(s).
|
||||||
35
docs/plugins/filters/multi-model-context-merger.zh.md
Normal file
35
docs/plugins/filters/multi-model-context-merger.zh.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# 多模型上下文合并 (Multi-Model Context Merger)
|
||||||
|
|
||||||
|
<span class="category-badge filter">Filter</span>
|
||||||
|
<span class="version-badge">v0.1.0</span>
|
||||||
|
|
||||||
|
自动合并上一轮中多个模型的回答上下文,实现协作问答。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 概述
|
||||||
|
|
||||||
|
此过滤器检测上一轮是否由多个模型回复(例如使用“竞技场”模式或选择了多个模型)。它将这些回复合并并作为上下文注入到当前轮次,使下一个模型能够看到其他模型之前所说的内容。
|
||||||
|
|
||||||
|
## 功能特性
|
||||||
|
|
||||||
|
- :material-merge: **自动合并**: 将多个模型的回复合并为单个上下文块。
|
||||||
|
- :material-format-list-group: **结构化注入**: 使用类似 XML 的标签 (`<response>`) 分隔不同模型的输出。
|
||||||
|
- :material-robot-confused: **协作**: 允许模型基于彼此的回答进行构建或评论。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 安装
|
||||||
|
|
||||||
|
1. 下载插件文件: [`multi_model_context_merger.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/filters)
|
||||||
|
2. 上传到 OpenWebUI: **管理员面板** → **设置** → **函数**
|
||||||
|
3. 启用过滤器。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 使用方法
|
||||||
|
|
||||||
|
1. 在聊天中选择 **多个模型** (或使用竞技场模式)。
|
||||||
|
2. 提问。所有模型都会回答。
|
||||||
|
3. 提出后续问题。
|
||||||
|
4. 过滤器会将所有模型之前的回答注入到当前模型的上下文中。
|
||||||
51
docs/plugins/filters/web-gemini-multimodel.md
Normal file
51
docs/plugins/filters/web-gemini-multimodel.md
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# Web Gemini Multimodal Filter
|
||||||
|
|
||||||
|
<span class="category-badge filter">Filter</span>
|
||||||
|
<span class="version-badge">v0.3.2</span>
|
||||||
|
|
||||||
|
A powerful filter that provides multimodal capabilities (PDF, Office, Images, Audio, Video) to any model in OpenWebUI.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This plugin enables multimodal processing for any model by leveraging Gemini as an analyzer. It supports direct file processing for Gemini models and "Analyzer Mode" for other models (like DeepSeek, Llama), where Gemini analyzes the file and injects the result as context.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- :material-file-document-multiple: **Multimodal Support**: Process PDF, Word, Excel, PowerPoint, EPUB, MP3, MP4, and Images.
|
||||||
|
- :material-router-network: **Smart Routing**:
|
||||||
|
- **Direct Mode**: Files are passed directly to Gemini models.
|
||||||
|
- **Analyzer Mode**: Files are analyzed by Gemini, and results are injected into the context for other models.
|
||||||
|
- :material-history: **Persistent Context**: Maintains session history across multiple turns using OpenWebUI Chat ID.
|
||||||
|
- :material-database-check: **Deduplication**: Automatically tracks analyzed file hashes to prevent redundant processing.
|
||||||
|
- :material-subtitles: **Subtitle Enhancement**: Specialized mode for generating high-quality SRT subtitles from video/audio.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
1. Download the plugin file: [`web_gemini_multimodel.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/filters/web_gemini_multimodel_filter)
|
||||||
|
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
||||||
|
3. Configure the Gemini Adapter URL and other settings.
|
||||||
|
4. Enable the filter globally or per chat.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
| Option | Type | Default | Description |
|
||||||
|
|--------|------|---------|-------------|
|
||||||
|
| `gemini_adapter_url` | string | `http://...` | URL of the Gemini Adapter service |
|
||||||
|
| `target_model_keyword` | string | `"webgemini"` | Keyword to identify Gemini models |
|
||||||
|
| `mode` | string | `"auto"` | `auto`, `direct`, or `analyzer` |
|
||||||
|
| `analyzer_base_model_id` | string | `"gemini-3.0-pro"` | Model used for document analysis |
|
||||||
|
| `subtitle_keywords` | string | `"字幕,srt"` | Keywords to trigger subtitle flow |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
1. **Upload a file** (PDF, Image, Video, etc.) in the chat.
|
||||||
|
2. **Ask a question** about the file.
|
||||||
|
3. The plugin will automatically process the file and provide context to your selected model.
|
||||||
51
docs/plugins/filters/web-gemini-multimodel.zh.md
Normal file
51
docs/plugins/filters/web-gemini-multimodel.zh.md
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# Web Gemini 多模态过滤器
|
||||||
|
|
||||||
|
<span class="category-badge filter">Filter</span>
|
||||||
|
<span class="version-badge">v0.3.2</span>
|
||||||
|
|
||||||
|
一个强大的过滤器,为 OpenWebUI 中的任何模型提供多模态能力:PDF、Office、图片、音频、视频等。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 概述
|
||||||
|
|
||||||
|
此插件利用 Gemini 作为分析器,为任何模型提供多模态处理能力。它支持 Gemini 模型的直接文件处理,以及其他模型(如 DeepSeek, Llama)的“分析器模式”,即由 Gemini 分析文件并将结果注入上下文。
|
||||||
|
|
||||||
|
## 功能特性
|
||||||
|
|
||||||
|
- :material-file-document-multiple: **多模态支持**: 处理 PDF, Word, Excel, PowerPoint, EPUB, MP3, MP4 和图片。
|
||||||
|
- :material-router-network: **智能路由**:
|
||||||
|
- **直连模式 (Direct Mode)**: 对于 Gemini 模型,文件直接传递(原生多模态)。
|
||||||
|
- **分析器模式 (Analyzer Mode)**: 对于非 Gemini 模型,文件由 Gemini 分析,结果注入为上下文。
|
||||||
|
- :material-history: **持久上下文**: 利用 OpenWebUI 的 Chat ID 跨多轮对话维护会话历史。
|
||||||
|
- :material-database-check: **数据库去重**: 自动记录已分析文件的哈希值,防止重复上传和分析。
|
||||||
|
- :material-subtitles: **字幕增强**: 针对视频/音频上传的专用模式,生成高质量 SRT 字幕。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 安装
|
||||||
|
|
||||||
|
1. 下载插件文件: [`web_gemini_multimodel.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/filters/web_gemini_multimodel_filter)
|
||||||
|
2. 上传到 OpenWebUI: **管理员面板** → **设置** → **函数**
|
||||||
|
3. 配置 Gemini Adapter URL 和其他设置。
|
||||||
|
4. 启用过滤器。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 配置
|
||||||
|
|
||||||
|
| 选项 | 类型 | 默认值 | 描述 |
|
||||||
|
|------|------|--------|------|
|
||||||
|
| `gemini_adapter_url` | string | `http://...` | Gemini Adapter 服务的 URL |
|
||||||
|
| `target_model_keyword` | string | `"webgemini"` | 识别 Gemini 模型的关键字 |
|
||||||
|
| `mode` | string | `"auto"` | `auto` (自动), `direct` (直连), 或 `analyzer` (分析器) |
|
||||||
|
| `analyzer_base_model_id` | string | `"gemini-3.0-pro"` | 用于文档分析的模型 |
|
||||||
|
| `subtitle_keywords` | string | `"字幕,srt"` | 触发字幕流程的关键字 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 使用方法
|
||||||
|
|
||||||
|
1. 在聊天中 **上传文件** (PDF, 图片, 视频等)。
|
||||||
|
2. 关于文件 **提问**。
|
||||||
|
3. 插件会自动处理文件并为所选模型提供上下文。
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Plugin Center
|
# Plugin Center
|
||||||
|
|
||||||
Welcome to the OpenWebUI Extras Plugin Center! Here you'll find a comprehensive collection of plugins to enhance your OpenWebUI experience.
|
Welcome to the OpenWebUI Extensions Plugin Center! Here you'll find a comprehensive collection of plugins to enhance your OpenWebUI experience.
|
||||||
|
|
||||||
## Plugin Types
|
## Plugin Types
|
||||||
|
|
||||||
@@ -48,16 +48,15 @@ OpenWebUI supports four types of plugins, each serving a different purpose:
|
|||||||
|
|
||||||
| Plugin | Type | Description | Version |
|
| Plugin | Type | Description | Version |
|
||||||
|--------|------|-------------|---------|
|
|--------|------|-------------|---------|
|
||||||
| [Smart Mind Map](actions/smart-mind-map.md) | Action | Generate interactive mind maps from text | 0.8.0 |
|
| [Smart Mind Map](actions/smart-mind-map.md) | Action | Generate interactive mind maps from text | 0.9.2 |
|
||||||
| [Smart Infographic](actions/smart-infographic.md) | Action | Transform text into professional infographics | 1.0.0 |
|
| [Smart Infographic](actions/smart-infographic.md) | Action | Transform text into professional infographics | 1.4.9 |
|
||||||
| [Knowledge Card](actions/knowledge-card.md) | Action | Create beautiful learning flashcards | 0.2.0 |
|
| [Flash Card](actions/flash-card.md) | Action | Create beautiful learning flashcards | 0.2.4 |
|
||||||
| [Export to Excel](actions/export-to-excel.md) | Action | Export chat history to Excel files | 1.0.0 |
|
| [Export to Excel](actions/export-to-excel.md) | Action | Export chat history to Excel files | 0.3.7 |
|
||||||
| [Export to Word](actions/export-to-word.md) | Action | Export chat content to Word (.docx) with formatting | 0.1.0 |
|
| [Export to Word](actions/export-to-word.md) | Action | Export chat content to Word (.docx) with formatting | 0.4.3 |
|
||||||
| [Summary](actions/summary.md) | Action | Text summarization tool | 1.0.0 |
|
| [Async Context Compression](filters/async-context-compression.md) | Filter | Intelligent context compression | 1.1.3 |
|
||||||
| [Async Context Compression](filters/async-context-compression.md) | Filter | Intelligent context compression | 1.0.0 |
|
| [Context Enhancement](filters/context-enhancement.md) | Filter | Enhance chat context | 0.3.0 |
|
||||||
| [Context Enhancement](filters/context-enhancement.md) | Filter | Enhance chat context | 1.0.0 |
|
| [Multi-Model Context Merger](filters/multi-model-context-merger.md) | Filter | Merge context from multiple models | 0.1.0 |
|
||||||
| [Gemini Manifold Companion](filters/gemini-manifold-companion.md) | Filter | Companion for Gemini Manifold | 1.0.0 |
|
| [Web Gemini Multimodal Filter](filters/web-gemini-multimodel.md) | Filter | Multimodal capabilities for any model | 0.3.2 |
|
||||||
| [Gemini Manifold](pipes/gemini-manifold.md) | Pipe | Gemini model integration | 1.0.0 |
|
|
||||||
| [MoE Prompt Refiner](pipelines/moe-prompt-refiner.md) | Pipeline | Multi-model prompt refinement | 1.0.0 |
|
| [MoE Prompt Refiner](pipelines/moe-prompt-refiner.md) | Pipeline | Multi-model prompt refinement | 1.0.0 |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# 插件中心
|
# 插件中心
|
||||||
|
|
||||||
欢迎来到 OpenWebUI Extras 插件中心!在这里你可以找到完整的插件集合,帮助你强化 OpenWebUI 的体验。
|
欢迎来到 OpenWebUI Extensions 插件中心!在这里你可以找到完整的插件集合,帮助你强化 OpenWebUI 的体验。
|
||||||
|
|
||||||
## 插件类型
|
## 插件类型
|
||||||
|
|
||||||
@@ -48,16 +48,15 @@ OpenWebUI 支持四种类型的插件,每种都有不同的用途:
|
|||||||
|
|
||||||
| 插件 | 类型 | 描述 | 版本 |
|
| 插件 | 类型 | 描述 | 版本 |
|
||||||
|--------|------|-------------|---------|
|
|--------|------|-------------|---------|
|
||||||
| [Smart Mind Map(智能思维导图)](actions/smart-mind-map.md) | Action | 从文本生成交互式思维导图 | 0.8.0 |
|
| [Smart Mind Map(智能思维导图)](actions/smart-mind-map.md) | Action | 从文本生成交互式思维导图 | 0.9.2 |
|
||||||
| [Smart Infographic(智能信息图)](actions/smart-infographic.md) | Action | 将文本转成专业信息图 | 1.0.0 |
|
| [Smart Infographic(智能信息图)](actions/smart-infographic.md) | Action | 将文本转成专业信息图 | 1.4.9 |
|
||||||
| [Knowledge Card(知识卡片)](actions/knowledge-card.md) | Action | 生成精美学习卡片 | 0.2.0 |
|
| [Flash Card(闪记卡)](actions/flash-card.md) | Action | 生成精美学习卡片 | 0.2.4 |
|
||||||
| [Export to Excel(导出到 Excel)](actions/export-to-excel.md) | Action | 导出聊天记录为 Excel | 1.0.0 |
|
| [Export to Excel(导出到 Excel)](actions/export-to-excel.md) | Action | 导出聊天记录为 Excel | 0.3.7 |
|
||||||
| [Export to Word(导出为 Word)](actions/export-to-word.md) | Action | 将聊天内容导出为 Word (.docx) 并保留格式 | 0.1.0 |
|
| [Export to Word(导出为 Word)](actions/export-to-word.md) | Action | 将聊天内容导出为 Word (.docx) 并保留格式 | 0.4.3 |
|
||||||
| [Summary(摘要)](actions/summary.md) | Action | 文本摘要工具 | 1.0.0 |
|
| [Async Context Compression(异步上下文压缩)](filters/async-context-compression.md) | Filter | 智能上下文压缩 | 1.1.3 |
|
||||||
| [Async Context Compression(异步上下文压缩)](filters/async-context-compression.md) | Filter | 智能上下文压缩 | 1.0.0 |
|
| [Context Enhancement(上下文增强)](filters/context-enhancement.md) | Filter | 提升对话上下文 | 0.3.0 |
|
||||||
| [Context Enhancement(上下文增强)](filters/context-enhancement.md) | Filter | 提升对话上下文 | 1.0.0 |
|
| [Multi-Model Context Merger(多模型上下文合并)](filters/multi-model-context-merger.md) | Filter | 合并多个模型的上下文 | 0.1.0 |
|
||||||
| [Gemini Manifold Companion](filters/gemini-manifold-companion.md) | Filter | Gemini Manifold 伴侣 | 1.0.0 |
|
| [Web Gemini Multimodal Filter(Web Gemini 多模态过滤器)](filters/web-gemini-multimodel.md) | Filter | 为任何模型提供多模态能力 | 0.3.2 |
|
||||||
| [Gemini Manifold](pipes/gemini-manifold.md) | Pipe | Gemini 模型集成 | 1.0.0 |
|
|
||||||
| [MoE Prompt Refiner](pipelines/moe-prompt-refiner.md) | Pipeline | 多模型提示词优化 | 1.0.0 |
|
| [MoE Prompt Refiner](pipelines/moe-prompt-refiner.md) | Pipeline | 多模型提示词优化 | 1.0.0 |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ The MoE Prompt Refiner is an advanced pipeline that optimizes prompts before sen
|
|||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
1. Download the pipeline file: [`moe_prompt_refiner.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/pipelines)
|
1. Download the pipeline file: [`moe_prompt_refiner.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/pipelines)
|
||||||
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
||||||
3. Configure expert models and settings
|
3. Configure expert models and settings
|
||||||
4. Enable the pipeline
|
4. Enable the pipeline
|
||||||
@@ -106,4 +106,4 @@ Synthesized recommendations based on expert consensus...
|
|||||||
|
|
||||||
## Source Code
|
## Source Code
|
||||||
|
|
||||||
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/pipelines){ .md-button }
|
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/pipelines){ .md-button }
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ MoE Prompt Refiner 是一个高级 Pipeline,会在将请求发送给多个专
|
|||||||
|
|
||||||
## 安装
|
## 安装
|
||||||
|
|
||||||
1. 下载 Pipeline 文件:[`moe_prompt_refiner.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/pipelines)
|
1. 下载 Pipeline 文件:[`moe_prompt_refiner.py`](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/pipelines)
|
||||||
2. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**
|
2. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**
|
||||||
3. 配置专家模型及相关参数
|
3. 配置专家模型及相关参数
|
||||||
4. 启用该 Pipeline
|
4. 启用该 Pipeline
|
||||||
@@ -106,4 +106,4 @@ Synthesized recommendations based on expert consensus...
|
|||||||
|
|
||||||
## 源码
|
## 源码
|
||||||
|
|
||||||
[:fontawesome-brands-github: 在 GitHub 查看](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/pipelines){ .md-button }
|
[:fontawesome-brands-github: 在 GitHub 查看](https://github.com/Fu-Jie/openwebui-extensions/tree/main/plugins/pipelines){ .md-button }
|
||||||
|
|||||||
BIN
docs/plugins/pipes/2026-02-10_165530.png
Normal file
BIN
docs/plugins/pipes/2026-02-10_165530.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 229 KiB |
@@ -1,106 +0,0 @@
|
|||||||
# Gemini Manifold
|
|
||||||
|
|
||||||
<span class="category-badge pipe">Pipe</span>
|
|
||||||
<span class="version-badge">v1.0.0</span>
|
|
||||||
|
|
||||||
Integration pipeline for Google's Gemini models with full streaming support.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Overview
|
|
||||||
|
|
||||||
The Gemini Manifold pipe provides seamless integration with Google's Gemini AI models. It exposes Gemini models as selectable options in OpenWebUI, allowing you to use them just like any other model.
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
- :material-google: **Full Gemini Support**: Access all Gemini model variants
|
|
||||||
- :material-stream: **Streaming**: Real-time response streaming
|
|
||||||
- :material-image: **Multimodal**: Support for images and text
|
|
||||||
- :material-shield: **Error Handling**: Robust error management
|
|
||||||
- :material-tune: **Configurable**: Customize model parameters
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
1. Download the plugin file: [`gemini_manifold.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/pipes/gemini_mainfold)
|
|
||||||
2. Upload to OpenWebUI: **Admin Panel** → **Settings** → **Functions**
|
|
||||||
3. Configure your Gemini API key
|
|
||||||
4. Select Gemini models from the model dropdown
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Configuration
|
|
||||||
|
|
||||||
| Option | Type | Required | Description |
|
|
||||||
|--------|------|----------|-------------|
|
|
||||||
| `GEMINI_API_KEY` | string | Yes | Your Google AI Studio API key |
|
|
||||||
| `DEFAULT_MODEL` | string | No | Default Gemini model to use |
|
|
||||||
| `TEMPERATURE` | float | No | Response temperature (0-1) |
|
|
||||||
| `MAX_TOKENS` | integer | No | Maximum response tokens |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Available Models
|
|
||||||
|
|
||||||
When configured, the following models become available:
|
|
||||||
|
|
||||||
- `gemini-pro` - Text-only model
|
|
||||||
- `gemini-pro-vision` - Multimodal model
|
|
||||||
- `gemini-1.5-pro` - Latest Pro model
|
|
||||||
- `gemini-1.5-flash` - Fast response model
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
1. After installation, go to any chat
|
|
||||||
2. Open the model selector dropdown
|
|
||||||
3. Look for models prefixed with your pipe name
|
|
||||||
4. Select a Gemini model
|
|
||||||
5. Start chatting!
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Getting an API Key
|
|
||||||
|
|
||||||
1. Visit [Google AI Studio](https://makersuite.google.com/app/apikey)
|
|
||||||
2. Create a new API key
|
|
||||||
3. Copy the key and paste it in the plugin configuration
|
|
||||||
|
|
||||||
!!! warning "API Key Security"
|
|
||||||
Keep your API key secure. Never share it publicly or commit it to version control.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Companion Filter
|
|
||||||
|
|
||||||
For enhanced functionality, consider installing the [Gemini Manifold Companion](../filters/gemini-manifold-companion.md) filter.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Requirements
|
|
||||||
|
|
||||||
!!! note "Prerequisites"
|
|
||||||
- OpenWebUI v0.3.0 or later
|
|
||||||
- Valid Gemini API key
|
|
||||||
- Internet access to Google AI APIs
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
??? question "Models not appearing?"
|
|
||||||
Ensure your API key is correctly configured and the plugin is enabled.
|
|
||||||
|
|
||||||
??? question "API errors?"
|
|
||||||
Check your API key validity and quota limits in Google AI Studio.
|
|
||||||
|
|
||||||
??? question "Slow responses?"
|
|
||||||
Consider using `gemini-1.5-flash` for faster response times.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Source Code
|
|
||||||
|
|
||||||
[:fontawesome-brands-github: View on GitHub](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/pipes/gemini_mainfold){ .md-button }
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
# Gemini Manifold
|
|
||||||
|
|
||||||
<span class="category-badge pipe">Pipe</span>
|
|
||||||
<span class="version-badge">v1.0.0</span>
|
|
||||||
|
|
||||||
面向 Google Gemini 模型的集成流水线,支持完整流式返回。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 概览
|
|
||||||
|
|
||||||
Gemini Manifold Pipe 提供与 Google Gemini AI 模型的无缝集成。它会将 Gemini 模型作为可选项暴露在 OpenWebUI 中,你可以像使用其他模型一样使用它们。
|
|
||||||
|
|
||||||
## 功能特性
|
|
||||||
|
|
||||||
- :material-google: **完整 Gemini 支持**:可使用所有 Gemini 模型变体
|
|
||||||
- :material-stream: **流式输出**:实时流式响应
|
|
||||||
- :material-image: **多模态**:支持图像与文本
|
|
||||||
- :material-shield: **错误处理**:健壮的错误管理
|
|
||||||
- :material-tune: **可配置**:可自定义模型参数
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 安装
|
|
||||||
|
|
||||||
1. 下载插件文件:[`gemini_manifold.py`](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/pipes/gemini_mainfold)
|
|
||||||
2. 上传到 OpenWebUI:**Admin Panel** → **Settings** → **Functions**
|
|
||||||
3. 配置你的 Gemini API Key
|
|
||||||
4. 在模型下拉中选择 Gemini 模型
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 配置
|
|
||||||
|
|
||||||
| 选项 | 类型 | 是否必填 | 说明 |
|
|
||||||
|--------|------|----------|-------------|
|
|
||||||
| `GEMINI_API_KEY` | string | 是 | 你的 Google AI Studio API Key |
|
|
||||||
| `DEFAULT_MODEL` | string | 否 | 默认使用的 Gemini 模型 |
|
|
||||||
| `TEMPERATURE` | float | 否 | 输出温度(0-1) |
|
|
||||||
| `MAX_TOKENS` | integer | 否 | 最大回复 token 数 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 可用模型
|
|
||||||
|
|
||||||
配置完成后,你可以选择以下模型:
|
|
||||||
|
|
||||||
- `gemini-pro` —— 纯文本模型
|
|
||||||
- `gemini-pro-vision` —— 多模态模型
|
|
||||||
- `gemini-1.5-pro` —— 最新 Pro 模型
|
|
||||||
- `gemini-1.5-flash` —— 快速响应模型
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 使用方法
|
|
||||||
|
|
||||||
1. 安装后进入任意对话
|
|
||||||
2. 打开模型选择下拉
|
|
||||||
3. 查找以 Pipe 名称前缀的模型
|
|
||||||
4. 选择 Gemini 模型
|
|
||||||
5. 开始聊天!
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 获取 API Key
|
|
||||||
|
|
||||||
1. 访问 [Google AI Studio](https://makersuite.google.com/app/apikey)
|
|
||||||
2. 创建新的 API Key
|
|
||||||
3. 复制并粘贴到插件配置中
|
|
||||||
|
|
||||||
!!! warning "API Key 安全"
|
|
||||||
请妥善保管你的 API Key,不要公开或提交到版本库。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 伴随过滤器
|
|
||||||
|
|
||||||
如需增强功能,可安装 [Gemini Manifold Companion](../filters/gemini-manifold-companion.md) 过滤器。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 运行要求
|
|
||||||
|
|
||||||
!!! note "前置条件"
|
|
||||||
- OpenWebUI v0.3.0 及以上
|
|
||||||
- 有效的 Gemini API Key
|
|
||||||
- 可访问 Google AI API 的网络
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 常见问题
|
|
||||||
|
|
||||||
??? question "模型没有出现?"
|
|
||||||
请确认 API Key 配置正确且插件已启用。
|
|
||||||
|
|
||||||
??? question "出现 API 错误?"
|
|
||||||
检查 Google AI Studio 中的 Key 有效性和额度限制。
|
|
||||||
|
|
||||||
??? question "响应较慢?"
|
|
||||||
可尝试使用 `gemini-1.5-flash` 获得更快速度。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 源码
|
|
||||||
|
|
||||||
[:fontawesome-brands-github: 在 GitHub 查看](https://github.com/Fu-Jie/awesome-openwebui/tree/main/plugins/pipes/gemini_mainfold){ .md-button }
|
|
||||||
80
docs/plugins/pipes/github-copilot-sdk-deep-dive.md
Normal file
80
docs/plugins/pipes/github-copilot-sdk-deep-dive.md
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
# GitHub Copilot SDK Plugin Deep Dive
|
||||||
|
|
||||||
|
**Version:** 0.6.0 | **Author:** [Fu-Jie](https://github.com/Fu-Jie/openwebui-extensions) | **Status:** Production-Ready
|
||||||
|
|
||||||
|
The GitHub Copilot SDK plugin is far more than a simple API proxy; it is a highly integrated **Intelligent Agent Runtime Environment**. This document explores the core features, implementation details, technical architecture, and security design that define its capabilities.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 1. Feature Catalog
|
||||||
|
|
||||||
|
The plugin implements advanced capabilities that go far beyond standard API calls:
|
||||||
|
|
||||||
|
- **✅ Physical Workspace Management**: Automatically creates isolated directories for each chat session to manage uploaded files and Agent-generated scripts.
|
||||||
|
- **✅ Real-time TODO Sync**: Mounts to the OpenWebUI database to persist Agent plans directly into a UI progress bar, ensuring transparency for long-running tasks.
|
||||||
|
- **✅ Cross-Ecosystem Tool Bridging**: Translates OpenWebUI Search, Python interpreters, and custom MCP tools into native Copilot capabilities.
|
||||||
|
- **✅ Intelligent File Transport**: Ensures the Agent can access raw files (Excel, PDF, Code) like a local developer through physical file duplication.
|
||||||
|
- **✅ Chain of Thought Streaming**: Full support for rendering the model's reasoning/thinking process in real-time.
|
||||||
|
- **✅ BYOK with Plugin Power**: Connect external OpenAI/Anthropic models while retaining all the plugin's workspace and tool management features.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 2. Use Cases: Beyond Basic Chat
|
||||||
|
|
||||||
|
With these features, the plugin excels in complex, real-world scenarios:
|
||||||
|
|
||||||
|
### 📁 Autonomous Repository Maintenance (Agentic DevOps)
|
||||||
|
>
|
||||||
|
> **Action**: Upload a Zip archive containing a codebase with bugs.
|
||||||
|
> **Utility**: The Agent extracts the archive, uses `bash` to navigate and search, applies fixes via the `edit` tool, and runs tests to verify the solution—all within its isolated sandbox.
|
||||||
|
|
||||||
|
### 📊 Deep Data Analysis (Data Scientist Agent)
|
||||||
|
>
|
||||||
|
> **Action**: Upload multiple heavy Excel spreadsheets.
|
||||||
|
> **Utility**: By bypassing RAG (via the filter), the Agent loads raw files directly into its Python interpreter, performs cross-table calculations, and generates analytical charts presented via Artifacts.
|
||||||
|
|
||||||
|
### 📝 Strategic Task Management
|
||||||
|
>
|
||||||
|
> **Action**: "Develop a full architecture for a new mobile app."
|
||||||
|
> **Utility**: The plugin captures the Agent's breakdown of 20+ sub-tasks. The persistent progress bar reflects ongoing progress (e.g., "Designing Schema", "Drafting API"), providing clarity during long marathons.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛡️ 3. Technical Architecture
|
||||||
|
|
||||||
|
### 3.1 Three-Layer Sandbox Isolation
|
||||||
|
|
||||||
|
To prevent data leakage in multi-user environments, the plugin enforces a strict physical directory structure:
|
||||||
|
`/app/backend/data/copilot_workspace/{user_id}/{chat_id}/`
|
||||||
|
|
||||||
|
- **Constraint**: Code execution and file storage are confined to the session-specific folder.
|
||||||
|
- **Persistence**: Data remains valid across container restarts due to volume mounting.
|
||||||
|
|
||||||
|
### 3.2 Dynamic Tool Bridging
|
||||||
|
|
||||||
|
How does Copilot "learn" to use OpenWebUI tools?
|
||||||
|
|
||||||
|
1. **Introspection**: Analyzes docstrings and type hints of OpenWebUI tools.
|
||||||
|
2. **Schema Generation**: Dynamically creates JSON descriptions compliant with the GitHub Copilot specification.
|
||||||
|
3. **Routing**: Handles parameter validation, identity injection, and result forwarding between systems.
|
||||||
|
|
||||||
|
### 3.3 Event-Driven TODO Hub
|
||||||
|
|
||||||
|
The plugin captures internal SDK events to power the UI progress bar:
|
||||||
|
|
||||||
|
- **Interceptor**: Listens for `tool.execution_complete` events for the `update_todo` tool.
|
||||||
|
- **Storage**: Syncs project metrics directly to the `chat_todos` table in the OpenWebUI database (SQLite/PostgreSQL).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚡ 4. Runtime Performance
|
||||||
|
|
||||||
|
- **Anti-Shake Logic**: Environment checks happen only once every 24 hours per process, preventing redundant system calls.
|
||||||
|
- **Tool Caching**: Persists tool definitions across sessions to reduce overhead, improving initial response times by up to 40%.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ 5. Development Best Practices
|
||||||
|
|
||||||
|
1. **Use the Filter**: Always pair with `github_copilot_sdk_files_filter` to ensure files reach the Agent in their original binary form.
|
||||||
|
2. **File-First Execution**: Encourage the Agent to "write code to file and execute" rather than relying on direct interactive shell input for complex logic.
|
||||||
80
docs/plugins/pipes/github-copilot-sdk-deep-dive.zh.md
Normal file
80
docs/plugins/pipes/github-copilot-sdk-deep-dive.zh.md
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
# GitHub Copilot SDK 插件深度解析 (Deep Dive)
|
||||||
|
|
||||||
|
**版本:** 0.6.0 | **作者:** [Fu-Jie](https://github.com/Fu-Jie/openwebui-extensions) | **状态:** 生产级
|
||||||
|
|
||||||
|
GitHub Copilot SDK 插件不仅仅是一个 API 转发器,它是一个高度集成的 **智能 Agent 运行环境**。本文将从功能实现、应用场景、技术架构及安全设计四个维度,深入解析这一插件的强大之处。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 1. 核心功能清单 (Feature Catalog)
|
||||||
|
|
||||||
|
插件通过深度集成实现了以下超越普通 API 调用的能力:
|
||||||
|
|
||||||
|
- **✅ 物理级工作区管理**: 自动为每个对话创建独立的物理目录,管理用户上传和 Agent 生成的所有文件。
|
||||||
|
- **✅ 实时 TODO 状态同步**: 通过数据库挂载,实时将 Agent 的计划提取到 UI 进度条中,解决长任务透明度问题。
|
||||||
|
- **✅ 跨生态工具桥接**: 自动将 OpenWebUI 的搜索、Python 运行环境和自定义 MCP 工具转化为 Copilot 原生工具。
|
||||||
|
- **✅ 智能文件搬运**: 物理级文件副本传输,确保 Agent 可以像本地开发者一样访问 Excel、PDF 和代码仓库。
|
||||||
|
- **✅ 思考过程可见性**: 完整模拟 GitHub Copilot 的思维链 (Thinking Process) 流式展示。
|
||||||
|
- **✅ BYOK 二次鉴权**: 支持在 Copilot 框架内接入外部 OpenAI/Anthropic 模型,同时享受插件的所有增强功能。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 2. 这个插件能用来干什么? (Use Cases)
|
||||||
|
|
||||||
|
基于上述功能,该插件可以胜任以下复杂场景:
|
||||||
|
|
||||||
|
### 📁 场景 A:全自动代码仓库维护 (Agentic DevOps)
|
||||||
|
>
|
||||||
|
> **操作**: 上传一个包含 Bug 的 Zip 压缩包。
|
||||||
|
> **用途**: Agent 会自动解密、解压,使用 `bash` 定位问题,调用 `edit` 修改代码,最后运行测试脚本。这一切都在隔离沙箱中完成,你只需要审核最终的补丁。
|
||||||
|
|
||||||
|
### 📊 场景 B:深度财务数据审计 (Data Analyst Agent)
|
||||||
|
>
|
||||||
|
> **操作**: 上传一年的 Excel 财务报表。
|
||||||
|
> **用途**: 绕过传统 RAG 的文本切片限制,Agent 直接通过 Python 脚本加载原始表格,进行跨表计算和逻辑校验,并生成可视化图表。
|
||||||
|
|
||||||
|
### 📝 场景 C:复杂长任务进度追踪 (Project Manager)
|
||||||
|
>
|
||||||
|
> **操作**: 输入“请基于以下需求文档编写一个完整的 Web 后端方案”。
|
||||||
|
> **用途**: 插件捕捉 Agent 拆解的 20+ 个子任务。顶部的实时进度条会告诉你它正在“设计数据库”还是“编写认证逻辑”,确保你对黑盒任务了如指掌。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛡️ 3. 技术架构设计 (Technical Architecture)
|
||||||
|
|
||||||
|
### 3.1 三层物理安全隔离 (Workspace Isolation)
|
||||||
|
|
||||||
|
为了确保多用户环境下的数据安全,插件强制执行以下物理路径:
|
||||||
|
`/app/backend/data/copilot_workspace/{user_id}/{chat_id}/`
|
||||||
|
|
||||||
|
- **隔离性**: 进程内代码执行被严格约束在 `chat_id` 目录下。
|
||||||
|
- **持久性**: 即使容器重启,挂载路径下的工作成果依然保留。
|
||||||
|
|
||||||
|
### 3.2 零配置工具桥接 (Dynamic Tool Bridging)
|
||||||
|
|
||||||
|
插件如何让 Copilot “学会”使用 OpenWebUI 的工具?
|
||||||
|
|
||||||
|
1. **内省 (Introspection)**: 实时读取工具的 `docstring` 和 `type hints`。
|
||||||
|
2. **动态转换**: 生成符合 GitHub Copilot 规范的工具描述符。
|
||||||
|
3. **双向路由**: 处理参数校验、身份注入(如认证头)以及结果回传。
|
||||||
|
|
||||||
|
### 3.3 数据库集成与事件驱动
|
||||||
|
|
||||||
|
插件通过监听 `NDJSON` 事件流,实现状态同步:
|
||||||
|
|
||||||
|
- **监听器**: 实时过滤 `tool.execution_complete` 事件。
|
||||||
|
- **持久层**: 使用 OpenWebUI 核心相同的 `SQLAlchemy` 引擎操作 `chat_todos` 表。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚡ 4. 性能优化 (Performance)
|
||||||
|
|
||||||
|
- **环境检查防抖**: 全局类变量保护,版本核对周期为 24 小时,避免高并发下的 I/O 争抢。
|
||||||
|
- **工具定义缓存**: 仅在变更时刷新工具元数据,首包响应速度(TTFB)提升约 40%。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ 5. 开发建议 (Best Practices)
|
||||||
|
|
||||||
|
1. **协同工作**: 必须安装 `github_copilot_sdk_files_filter` 以确保文件以“二进制原文”而非“RAG 切片”传递。
|
||||||
|
2. **Python 范式**: 鼓励 Agent 采取“写文件 -> 运行文件”的模式,而非交互式 Shell 输出,以获得更好的执行稳定性。
|
||||||
105
docs/plugins/pipes/github-copilot-sdk-tutorial.md
Normal file
105
docs/plugins/pipes/github-copilot-sdk-tutorial.md
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
# GitHub Copilot SDK Advanced Tutorial
|
||||||
|
|
||||||
|
**Author:** [Fu-Jie](https://github.com/Fu-Jie) | **Version:** 1.0.0 | **Project:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions)
|
||||||
|
|
||||||
|
This tutorial guides you through unleashing the full potential of the GitHub Copilot SDK plugin, specifically focusing on advanced file generation, BYOK customization, and complex task orchestration.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. The 3-Step File Delivery Protocol
|
||||||
|
|
||||||
|
This is one of the most powerful features of this plugin. Agents can generate real physical files (e.g., `.xlsx`, `.pdf`, `.csv`) in their isolated workspace and publish them for you to download.
|
||||||
|
|
||||||
|
### Automated Execution Logic:
|
||||||
|
1. **Write (Local)**: The Agent creates a file using code within its isolated directory (the current directory `.` during Python execution).
|
||||||
|
2. **Publish**: The Agent automatically calls `publish_file_from_workspace(filename='report.xlsx')`.
|
||||||
|
3. **Link**: The plugin handles S3 or local storage mapping, bypasses RAG interference, and returns a secure link like `/api/v1/files/.../content`.
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> **User Command Tip**: You can simply tell the Agent: "Analyze the previous data and export an Excel sheet for me." It will automatically trigger this entire sequence.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Advanced BYOK (Bring Your Own Key) Mode
|
||||||
|
|
||||||
|
If you don't have a GitHub Copilot subscription or want to use high-end models from OpenAI/Anthropic directly, you can use the BYOK mode.
|
||||||
|
|
||||||
|
### How to Configure:
|
||||||
|
1. **Set Base URL**: e.g., `https://api.openai.com/v1`.
|
||||||
|
2. **Set API Key**: Enter your key in your personal settings (Valves).
|
||||||
|
3. **Real-time Model Refresh**: The plugin features a **Config-Aware Refresh** mechanism. When you modify the API Key or Base URL, simply refresh the model selector in the UI—the plugin will automatically fetch the latest available models from the backend.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Workspace Isolation & Debugging
|
||||||
|
|
||||||
|
Every chat session has a physically isolated folder, ensuring that files from different tasks do not interfere with each other.
|
||||||
|
|
||||||
|
### Physical Path Rules:
|
||||||
|
- **In-Container Path**: `/app/backend/data/copilot_workspace/{user_id}/{chat_id}/`
|
||||||
|
- **Agent's Perspective**: It sees the `.` directory as the path mentioned above.
|
||||||
|
|
||||||
|
### Debugging Pro Tips:
|
||||||
|
1. **Enable DEBUG Valve**: Set `DEBUG` to `True` in the configuration.
|
||||||
|
2. **Check the Console**: Open browser developer tools (F12) -> Console.
|
||||||
|
3. **Capture Paths**: You will see logs like `📂 Workspace Resolved: /.../`, which helps you confirm exactly where the Agent is writing its files.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Deep Analysis Bypassing RAG
|
||||||
|
|
||||||
|
Traditional file uploads in OpenWebUI trigger vectorization (RAG), which might not be precise enough for large-scale data analysis.
|
||||||
|
|
||||||
|
**Advantages of this Plugin**:
|
||||||
|
- When used with the [Files Filter](https://openwebui.com/posts/403a62ee-a596-45e7-be65-fab9cc249dd6) plugin, the Agent can **directly read every byte** of the raw file.
|
||||||
|
- It can analyze every row of a CSV as if it were running a script locally, preventing information loss caused by retrieval-based slicing.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Common Interaction Examples
|
||||||
|
|
||||||
|
- **Data Conversion**: "Convert this JSON content into a beautifully formatted Word document and provide a download link."
|
||||||
|
- **Code Review**: "Read all `.py` files in the workspace, find potential bugs, and publish the suggestions as a Markdown report."
|
||||||
|
- **Chart Generation**: "Generate an Excel report based on the financial data and use Python to draw a trend chart for me."
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Real-world Example: Automated Financial Analysis
|
||||||
|
|
||||||
|
### Scenario
|
||||||
|
A user uploads a raw sales log named `sales_data.csv` and asks the AI to generate a summarized Excel report.
|
||||||
|
|
||||||
|
### 1. User Command
|
||||||
|
> "Analyze `sales_data.csv` in the current directory, calculate total revenue per product category, and export an Excel file named `category_summary.xlsx` for me."
|
||||||
|
|
||||||
|
### 2. Agent Execution Flow
|
||||||
|
The Agent performs the following steps autonomously:
|
||||||
|
|
||||||
|
* **Step 1: Write and Run Python Code**
|
||||||
|
```python
|
||||||
|
import pandas as pd
|
||||||
|
# Direct file access in the isolated workspace (Bypassing RAG for 100% accuracy)
|
||||||
|
df = pd.read_csv('sales_data.csv')
|
||||||
|
summary = df.groupby('Category')['Revenue'].sum().reset_index()
|
||||||
|
# Save the result locally
|
||||||
|
summary.to_excel('category_summary.xlsx', index=False)
|
||||||
|
```
|
||||||
|
* **Step 2: Call the Publishing Tool**
|
||||||
|
The Agent calls: `publish_file_from_workspace(filename="category_summary.xlsx")`
|
||||||
|
* **Step 3: Deliver the Link**
|
||||||
|
The tool returns a `download_url`, which the Agent presents to the user.
|
||||||
|
|
||||||
|
### 3. Final Result
|
||||||
|
The Agent responds:
|
||||||
|
> "Analysis complete! I have summarized the revenue by category. You can download your report here:
|
||||||
|
>
|
||||||
|
> [📊 Download: Category_Summary.xlsx](/api/v1/files/uuid-hash/content)"
|
||||||
|
|
||||||
|
#### Execution Screenshot
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⭐ Continuous Improvement
|
||||||
|
|
||||||
|
If you encounter any issues or have suggestions for new features, feel free to submit an Issue or participate in discussions on [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions).
|
||||||
105
docs/plugins/pipes/github-copilot-sdk-tutorial.zh.md
Normal file
105
docs/plugins/pipes/github-copilot-sdk-tutorial.zh.md
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
# GitHub Copilot SDK 插件进阶实战教程
|
||||||
|
|
||||||
|
**作者:** [Fu-Jie](https://github.com/Fu-Jie) | **版本:** 1.0.0 | **项目:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions)
|
||||||
|
|
||||||
|
本教程旨在指导您如何深度发挥 GitHub Copilot SDK 插件的全部潜力,特别是在自动化文件生成、BYOK 模式自定义以及复杂任务调度方面的进阶用法。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 核心协议:文件交付三步法 (File Delivery Protocol)
|
||||||
|
|
||||||
|
这是本插件最强大的功能之一。Agent 不再只是“说话”,它可以在其隔离的工作区内生成真正的物理文件(如 `.xlsx`, `.pdf`, `.csv`),并将其发布给您下载。
|
||||||
|
|
||||||
|
### 自动化执行逻辑:
|
||||||
|
1. **本地写入 (Write)**:Agent 在其隔离目录(即 Python 执行的当前目录 `.`)下通过代码生成文件。
|
||||||
|
2. **显式发布 (Publish)**:Agent 自动调用 `publish_file_from_workspace(filename='report.xlsx')`。
|
||||||
|
3. **获取链接 (Link)**:插件会自动处理 S3 或本地存储映射,绕过 RAG 干扰,并返回一个类似 `/api/v1/files/.../content` 的安全链接。
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> **用户指令技巧**:您可以直接对 Agent 说:“分析刚才的表格并导出一份 Excel 给我”。它会自动触发这一连串动作。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. BYOK (自带 Key) 模式进阶
|
||||||
|
|
||||||
|
如果您没有 GitHub Copilot 订阅,或者希望使用自己购买的 OpenAI/Anthropic 高阶模型,可以使用 BYOK 模式。
|
||||||
|
|
||||||
|
### 如何配置:
|
||||||
|
1. **设置 Base URL**:如 `https://api.openai.com/v1`。
|
||||||
|
2. **设置 API Key**:在个人设置中填入您的密钥。
|
||||||
|
3. **模型实时刷新**:插件具备**配置感知刷新**机制。当您在 Valve 中修改了 API Key 或 Base URL 后,无需重启,只需刷新模型选择器,插件会自动向后端拉取最新的可用模型列表。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 工作区隔离与调试 (Workspace & Debugging)
|
||||||
|
|
||||||
|
每个聊天会话都有一个物理上隔离的文件夹,确保不同任务的文件互不干扰。
|
||||||
|
|
||||||
|
### 物理路径规则:
|
||||||
|
- **容器内路径**:`/app/backend/data/copilot_workspace/{user_id}/{chat_id}/`
|
||||||
|
- **Agent 的视角**:它看到的 `.` 目录即是上述路径。
|
||||||
|
|
||||||
|
### 调试秘籍:
|
||||||
|
1. **开启 DEBUG Valve**:在配置中将 `DEBUG` 设为 `True`。
|
||||||
|
2. **查看控制台**:打开浏览器开发者工具 (F12) -> Console。
|
||||||
|
3. **捕获路径**:您会看到类似 `📂 Workspace Resolved: /.../` 的日志,这能帮您确认 Agent 到底把文件写到了哪里。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. 绕过 RAG 的深度分析
|
||||||
|
|
||||||
|
传统的 OpenWebUI 文件上传会触发向量化(RAG),这对于大批量数据分析往往不够精确。
|
||||||
|
|
||||||
|
**本插件的优势**:
|
||||||
|
- 配合 [Files Filter](https://openwebui.com/posts/403a62ee-a596-45e7-be65-fab9cc249dd6) 插件使用时,Agent 可以**直接读取**原始文件的每一个字节。
|
||||||
|
- 它能像在本地运行脚本一样分析 CSV 的每一行,而不会因为切片检索(Retrieval)导致信息丢失。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. 常见交互指令示例
|
||||||
|
|
||||||
|
- **数据转换**:“把这个 JSON 内容转换成格式精美的 Word 文档并提供下载链接。”
|
||||||
|
- **代码审查**:“读取工作区内的所有 `.py` 文件,找出潜在的 Bug,并把修改建议发布为 Markdown 报告。”
|
||||||
|
- **图表生成**:“根据刚才的财务数据生成一份 Excel 报表,并用 Python 画一个趋势图给我。”
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 实战示例:全自动财务分析报告
|
||||||
|
|
||||||
|
### 场景描述
|
||||||
|
用户上传了一个名为 `sales_data.csv` 的原始销售清单,要求 AI 进行汇总统计,并生成一份带样式的 Excel 报表。
|
||||||
|
|
||||||
|
### 1. 用户的指令
|
||||||
|
> “请分析当前目录下的 `sales_data.csv`,按产品类别统计总销售额,并导出一份名为 `category_summary.xlsx` 的 Excel 给我就好。”
|
||||||
|
|
||||||
|
### 2. Agent 的自动化执行过程
|
||||||
|
Agent 会在后台连续执行以下动作:
|
||||||
|
|
||||||
|
* **步骤 1: 编写并运行 Python 脚本**
|
||||||
|
```python
|
||||||
|
import pandas as pd
|
||||||
|
# 直接在隔离工作区读取原始文件(绕过 RAG,保证数据 100% 准确)
|
||||||
|
df = pd.read_csv('sales_data.csv')
|
||||||
|
summary = df.groupby('Category')['Revenue'].sum().reset_index()
|
||||||
|
# 保存结果到当前目录
|
||||||
|
summary.to_excel('category_summary.xlsx', index=False)
|
||||||
|
```
|
||||||
|
* **步骤 2: 调用发布工具**
|
||||||
|
Agent 自动执行工具调用:`publish_file_from_workspace(filename="category_summary.xlsx")`
|
||||||
|
* **步骤 3: 交付链接**
|
||||||
|
工具返回 `download_url`,Agent 最终回复用户。
|
||||||
|
|
||||||
|
### 3. 最终交付效果
|
||||||
|
Agent 会向用户展示:
|
||||||
|
> “分析完成!我已经为您统计了产品类别的销售额。您可以点击下方链接下载报表:
|
||||||
|
>
|
||||||
|
> [📊 点击下载:分类销售统计报表.xlsx](/api/v1/files/uuid-hash/content)”
|
||||||
|
|
||||||
|
#### 实际运行截图示例
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⭐ 持续改进
|
||||||
|
|
||||||
|
如果您在使用过程中发现任何问题,或有新的功能建议,欢迎到 [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) 提交 Issue 或参与讨论。
|
||||||
120
docs/plugins/pipes/github-copilot-sdk.md
Normal file
120
docs/plugins/pipes/github-copilot-sdk.md
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
# GitHub Copilot SDK Pipe for OpenWebUI
|
||||||
|
|
||||||
|
**Author:** [Fu-Jie](https://github.com/Fu-Jie) | **Version:** 0.7.0 | **Project:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) | **License:** MIT
|
||||||
|
|
||||||
|
This is an advanced Pipe function for [OpenWebUI](https://github.com/open-webui/open-webui) that integrates the official [GitHub Copilot SDK](https://github.com/github/copilot-sdk). It enables you to use **GitHub Copilot models** (e.g., `gpt-5.2-codex`, `claude-sonnet-4.5`,`gemini-3-pro`, `gpt-5-mini`) **AND** your own models via **BYOK** (OpenAI, Anthropic) directly within OpenWebUI, providing a unified agentic experience with **strict User & Chat-level Workspace Isolation**.
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> **Essential Companion**
|
||||||
|
> To unlock file handling and data analysis capabilities, you must install the [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/403a62ee-a596-45e7-be65-fab9cc249dd6).
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> **No Subscription Required for BYOK**
|
||||||
|
> If you are using your own API keys (BYOK mode with OpenAI/Anthropic), **you do NOT need a GitHub Copilot subscription.** A subscription is only required to access GitHub's official models.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✨ v0.7.0 Updates (What's New)
|
||||||
|
|
||||||
|
- **🚀 Integrated CLI Management**: The Copilot CLI is now automatically managed and bundled via the `github-copilot-sdk` pip package. (v0.7.0)
|
||||||
|
- **🧠 Native Tool Call UI**: Full adaptation to **OpenWebUI's native tool call UI** and thinking process visualization. (v0.7.0)
|
||||||
|
- **🏠 OpenWebUI v0.8.0+ Fix**: Resolved "Error getting file content" download failure by switching to absolute path registration for published files. (v0.7.0)
|
||||||
|
- **🌐 Comprehensive Multi-language Support**: Native localization for status messages in 11 languages (EN, ZH, JA, KO, FR, DE, ES, IT, RU, VI, ID). (v0.7.0)
|
||||||
|
- **🧹 Architecture Cleanup**: Refactored core setup and optimized reasoning status display for a leaner experience. (v0.7.0)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✨ Key Capabilities
|
||||||
|
|
||||||
|
- **🔑 Flexible Auth & BYOK**: Official Copilot subscriptions (PAT) or Bring Your Own Key (OpenAI/Anthropic).
|
||||||
|
- **🔌 Universal Tool Protocol**: Native support for **MCP (Model Context Protocol)**, OpenAPI, and OpenWebUI built-in tools.
|
||||||
|
- **🛡️ Sandbox Workspace Isolation**: Strict per-session sandboxing for data privacy and security.
|
||||||
|
- **♾️ Infinite Session Management**: Smart context window management with automatic compaction for indefinite conversation capability.
|
||||||
|
- **🧠 Deep Database Integration**: Real-time persistence of TOD·O lists for long-running workflows.
|
||||||
|
- **🌊 Advanced Streaming**: Full support for thinking process/Chain of Thought visualization.
|
||||||
|
- **🖼️ Intelligent Multimodal**: Vision capabilities and raw file analysis support (bypasses RAG for direct binary access).
|
||||||
|
- **📤 Workspace Artifacts (`publish_file_from_workspace`)**: Agents can generate files (Excel, CSV, HTML reports, etc.) and provide **persistent download links** directly in the chat.
|
||||||
|
- **🖼️ Interactive Artifacts**: Automatically renders HTML/JS apps generated by the agent directly in the chat interface.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚙️ Core Configuration (Valves)
|
||||||
|
|
||||||
|
### 1. Administrator Settings (Base)
|
||||||
|
|
||||||
|
Administrators define the default behavior for all users in the function settings.
|
||||||
|
|
||||||
|
| Valve | Default | Description |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| `GH_TOKEN` | `""` | Global GitHub Token (Requires 'Copilot Requests' permission). |
|
||||||
|
| `ENABLE_OPENWEBUI_TOOLS` | `True` | Enable OpenWebUI Tools (includes defined Tools and Built-in Tools). |
|
||||||
|
| `ENABLE_OPENAPI_SERVER` | `True` | Enable OpenAPI Tool Server connection. |
|
||||||
|
| `ENABLE_MCP_SERVER` | `True` | Enable Direct MCP Client connection (Recommended). |
|
||||||
|
| `REASONING_EFFORT` | `medium` | Reasoning effort level: low, medium, high. |
|
||||||
|
| `SHOW_THINKING` | `True` | Show model reasoning/thinking process. |
|
||||||
|
| `INFINITE_SESSION` | `True` | Enable Infinite Sessions (automatic context compaction). |
|
||||||
|
| `MAX_MULTIPLIER` | `1.0` | Max allowed billing multiplier (0x for free models only). |
|
||||||
|
| `EXCLUDE_KEYWORDS` | `""` | Exclude models containing these keywords (comma separated). |
|
||||||
|
| `TIMEOUT` | `300` | Timeout for each stream chunk (seconds). |
|
||||||
|
| `BYOK_TYPE` | `openai` | BYOK Provider Type: `openai`, `anthropic`. |
|
||||||
|
| `BYOK_BASE_URL` | `""` | BYOK Base URL (e.g., <https://api.openai.com/v1>). |
|
||||||
|
| `BYOK_MODELS` | `""` | BYOK Model List (comma separated). Leave empty to fetch from API. |
|
||||||
|
| `CUSTOM_ENV_VARS` | `""` | Custom environment variables (JSON format). |
|
||||||
|
| `DEBUG` | `False` | Enable this to see detailed logs in your browser console. |
|
||||||
|
|
||||||
|
### 2. User Settings (Individual Overrides)
|
||||||
|
|
||||||
|
Standard users can override these settings in their individual Profile/Function settings.
|
||||||
|
|
||||||
|
| Valve | Description |
|
||||||
|
| :--- | :--- |
|
||||||
|
| `GH_TOKEN` | Use your personal GitHub Token. |
|
||||||
|
| `REASONING_EFFORT` | Individual reasoning effort preference. |
|
||||||
|
| `SHOW_THINKING` | Show model reasoning/thinking process. |
|
||||||
|
| `MAX_MULTIPLIER` | Maximum allowed billing multiplier override. |
|
||||||
|
| `EXCLUDE_KEYWORDS` | Exclude models containing these keywords. |
|
||||||
|
| `BYOK_API_KEY` | Use your personal OpenAI/Anthropic API Key. |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 Use Cases (What can you do?)
|
||||||
|
|
||||||
|
- **📁 Fully Autonomous DevOps**: Agent analyzes code, runs tests, and applies patches within its isolated sandbox.
|
||||||
|
- **📊 Deep Data Auditing**: Directly process raw Excel/CSV data via Python (bypassing RAG) and generate visual reports.
|
||||||
|
- **📝 Long-Task Management**: Automatically decomposes complex requests and persists TOD·O progress across sessions.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⭐ Support
|
||||||
|
|
||||||
|
If this plugin has been useful, a **Star** on [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) would be a great motivation for me. Thank you!
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Installation & Configuration
|
||||||
|
|
||||||
|
### 1) Import Function
|
||||||
|
|
||||||
|
1. Open OpenWebUI, go to **Workspace** -> **Functions**.
|
||||||
|
2. Click **+** (Create Function), paste the content of `github_copilot_sdk.py`.
|
||||||
|
3. Save and ensure it is enabled.
|
||||||
|
|
||||||
|
### 2) Get Token
|
||||||
|
|
||||||
|
1. Visit [GitHub Token Settings](https://github.com/settings/tokens?type=beta).
|
||||||
|
2. Create **Fine-grained token**, granting **Account permissions** -> **Copilot Requests** access.
|
||||||
|
3. Paste the generated Token into the `GH_TOKEN` field in Valves.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 Troubleshooting & Dependencies
|
||||||
|
|
||||||
|
- **Agent ignores files?**: Ensure the Files Filter is enabled, otherwise RAG will interfere with raw binaries.
|
||||||
|
- **No progress bar?**: The bar only appears when the Agent uses the `update_todo` tool.
|
||||||
|
- **Dependencies**: This Pipe automatically manages `github-copilot-sdk` (Python) and utilizes the bundled binary CLI. No manual install required.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Changelog
|
||||||
|
|
||||||
|
See the full history on GitHub: [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions)
|
||||||
120
docs/plugins/pipes/github-copilot-sdk.zh.md
Normal file
120
docs/plugins/pipes/github-copilot-sdk.zh.md
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
# GitHub Copilot SDK 官方管道
|
||||||
|
|
||||||
|
**作者:** [Fu-Jie](https://github.com/Fu-Jie) | **版本:** 0.7.0 | **项目:** [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) | **许可证:** MIT
|
||||||
|
|
||||||
|
这是一个用于 [OpenWebUI](https://github.com/open-webui/open-webui) 的高级 Pipe 函数,深度集成了 **GitHub Copilot SDK**。它不仅支持 **GitHub Copilot 官方模型**(如 `gpt-5.2-codex`, `claude-sonnet-4.5`, `gemini-3-pro`, `gpt-5-mini`),还支持 **BYOK (自带 Key)** 模式对接自定义服务商(OpenAI, Anthropic),并具备**严格的用户与会话级工作区隔离**能力,提供统一且安全的 Agent 交互体验。
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> **核心伴侣组件**
|
||||||
|
> 如需启用文件处理与数据分析能力,请务必安装 [GitHub Copilot SDK Files Filter](https://openwebui.com/posts/403a62ee-a596-45e7-be65-fab9cc249dd6)。
|
||||||
|
|
||||||
|
> [!TIP]
|
||||||
|
> **BYOK 模式无需订阅**
|
||||||
|
> 如果您使用自带的 API Key (BYOK 模式对接 OpenAI/Anthropic),**您不需要 GitHub Copilot 官方订阅**。只有在访问 GitHub 官方模型时才需要订阅。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✨ 0.7.0 更新内容 (What's New)
|
||||||
|
|
||||||
|
- **🚀 CLI 免维护集成**: Copilot CLI 现在通过 `github-copilot-sdk` pip 包自动同步管理,彻底告别手动 `curl | bash` 安装问题。(v0.7.0)
|
||||||
|
- **🧠 原生工具调用 UI**: 全面适配 **OpenWebUI 原生工具调用 UI** 与模型思考过程(思维链)展示。(v0.7.0)
|
||||||
|
- **🏠 OpenWebUI v0.8.0+ 兼容性修复**: 通过切换为绝对路径注册发布文件,彻底解决了“Error getting file content”无法下载到本地的问题。(v0.7.0)
|
||||||
|
- **🌐 全面的多语言支持**: 针对状态消息进行了 11 国语言的原生本地化 (中/英/日/韩/法/德/西/意/俄/越/印尼)。(v0.7.0)
|
||||||
|
- **🧹 架构精简**: 重构了初始化逻辑并优化了推理状态显示,提供更轻量稳健的体验。(v0.7.0)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✨ 核心能力 (Key Capabilities)
|
||||||
|
|
||||||
|
- **🔑 灵活鉴权与 BYOK**: 支持 GitHub Copilot 官方订阅 (PAT) 或自带 Key (OpenAI/Anthropic)。
|
||||||
|
- **🔌 通用工具协议**: 原生支持 **MCP (Model Context Protocol)**、OpenAPI 以及 OpenWebUI 内置工具。
|
||||||
|
- **🛡️ 物理级工作区隔离**: 强制执行严格的用户特定沙箱,确保数据隐私与文件安全。
|
||||||
|
- **♾️ 无限会话管理**: 智能上下文窗口管理与自动压缩算法,支持无限时长的对话交互。
|
||||||
|
- **🧠 深度数据库集成**: 实时持久化 TOD·O 列表到 UI 进度条。
|
||||||
|
- **🌊 深度推理展示**: 完整支持模型思考过程 (Thinking Process) 的流式渲染。
|
||||||
|
- **🖼️ 智能多模态**: 完整支持图像识别与附件上传分析(绕过 RAG 直接访问原始二进制内容)。
|
||||||
|
- **📤 工作区产物工具 (`publish_file_from_workspace`)**: Agent 可生成文件(Excel、CSV、HTML 报告等)并直接提供**持久化下载链接**。管理员还可额外获得通过 `/content/html` 接口的**聊天内 HTML 预览**链接。
|
||||||
|
- **🖼️ 交互式伪影 (Artifacts)**: 自动渲染 Agent 生成的 HTML/JS 应用程序,直接在聊天界面交互。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚙️ 核心配置参数 (Valves)
|
||||||
|
|
||||||
|
### 1. 管理员配置 (基础设置)
|
||||||
|
|
||||||
|
管理员可在函数设置中定义全局默认行为。
|
||||||
|
|
||||||
|
| 参数 | 默认值 | 说明 |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| `GH_TOKEN` | `""` | 全局 GitHub Token (需具备 'Copilot Requests' 权限)。 |
|
||||||
|
| `ENABLE_OPENWEBUI_TOOLS` | `True` | 启用 OpenWebUI 工具 (包括定义工具和内置工具)。 |
|
||||||
|
| `ENABLE_OPENAPI_SERVER` | `True` | 启用 OpenAPI 工具服务器连接。 |
|
||||||
|
| `ENABLE_MCP_SERVER` | `True` | 启用直接 MCP 客户端连接 (推荐)。 |
|
||||||
|
| `REASONING_EFFORT` | `medium` | 推理强度:low, medium, high。 |
|
||||||
|
| `SHOW_THINKING` | `True` | 显示模型推理/思考过程。 |
|
||||||
|
| `INFINITE_SESSION` | `True` | 启用无限会话 (自动上下文压缩)。 |
|
||||||
|
| `MAX_MULTIPLIER` | `1.0` | 最大允许的模型计费倍率 (0x 为仅限免费模型)。 |
|
||||||
|
| `EXCLUDE_KEYWORDS` | `""` | 排除包含这些关键字的模型 (逗号分隔)。 |
|
||||||
|
| `TIMEOUT` | `300` | 每个流数据块的超时时间 (秒)。 |
|
||||||
|
| `BYOK_TYPE` | `openai` | BYOK 服务商类型:`openai`, `anthropic`。 |
|
||||||
|
| `BYOK_BASE_URL` | `""` | BYOK 基础 URL (例如: <https://api.openai.com/v1>)。 |
|
||||||
|
| `BYOK_MODELS` | `""` | BYOK 模型列表 (逗号分隔)。留空则从 API 获取。 |
|
||||||
|
| `CUSTOM_ENV_VARS` | `""` | 自定义环境变量 (JSON 格式)。 |
|
||||||
|
| `DEBUG` | `False` | 开启此项以在前端控制台输出详细调试日志。 |
|
||||||
|
|
||||||
|
### 2. 用户配置 (个人覆盖)
|
||||||
|
|
||||||
|
普通用户可在各自的个人设置中根据需要覆盖以下参数。
|
||||||
|
|
||||||
|
| 参数 | 说明 |
|
||||||
|
| :--- | :--- |
|
||||||
|
| `GH_TOKEN` | 使用个人的 GitHub Token。 |
|
||||||
|
| `REASONING_EFFORT` | 个人偏好的推理强度。 |
|
||||||
|
| `SHOW_THINKING` | 显示模型推理/思考过程。 |
|
||||||
|
| `MAX_MULTIPLIER` | 最大允许的模型计费倍率覆盖。 |
|
||||||
|
| `EXCLUDE_KEYWORDS` | 排除包含这些关键字的模型。 |
|
||||||
|
| `BYOK_API_KEY` | 使用个人的 OpenAI/Anthropic API Key。 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 典型应用场景 (Use Cases)
|
||||||
|
|
||||||
|
- **📁 全自主仓库维护**: Agent 在隔离工作区内自动分析代码、运行测试并应用补丁。
|
||||||
|
- **📊 深度财务数据审计**: 直接通过 Python 加载 Excel/CSV 原始数据(绕过 RAG),生成图表并实时预览。
|
||||||
|
- **📝 长任务项目管理**: 自动拆解复杂任务并持久化 TOD·O 进度,跨会话跟踪执行状态。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⭐ 支持与交流 (Support)
|
||||||
|
|
||||||
|
如果这个插件对您有所帮助,请在 [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions) 项目上点个 **Star** 💫,这是对我最大的鼓励。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 安装与配置 (Installation)
|
||||||
|
|
||||||
|
### 1) 导入函数
|
||||||
|
|
||||||
|
1. 打开 OpenWebUI,前往 **工作区** -> **函数**。
|
||||||
|
2. 点击 **+** (创建函数),完整粘贴 `github_copilot_sdk.py` 的内容。
|
||||||
|
3. 点击保存并确保已启用。
|
||||||
|
|
||||||
|
### 2) 获取 Token (Get Token)
|
||||||
|
|
||||||
|
1. 访问 [GitHub Token 设置](https://github.com/settings/tokens?type=beta)。
|
||||||
|
2. 创建 **Fine-grained token**,授予 **Account permissions** -> **Copilot Requests** 访问权限。
|
||||||
|
3. 将生成的 Token 填入插件的 `GH_TOKEN` 配置项中。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 常见问题与依赖 (Troubleshooting)
|
||||||
|
|
||||||
|
- **Agent 无法识别文件?**: 请确保已安装并启用了 Files Filter 插件,否则原始文件会被 RAG 干扰。
|
||||||
|
- **看不到 TODO 进度条?**: 进度条仅在 Agent 使用 `update_todo` 工具(通常是处理复杂任务)时出现。
|
||||||
|
- **依赖安装**: 本管道会自动管理 `github-copilot-sdk` (Python 包) 并优先直接使用内置的二进制 CLI,无需手动干预。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 更新日志 (Changelog)
|
||||||
|
|
||||||
|
完整历史记录请见 GitHub: [OpenWebUI Extensions](https://github.com/Fu-Jie/openwebui-extensions)
|
||||||
@@ -15,19 +15,9 @@ Pipes allow you to:
|
|||||||
|
|
||||||
## Available Pipe Plugins
|
## Available Pipe Plugins
|
||||||
|
|
||||||
<div class="grid cards" markdown>
|
- [GitHub Copilot SDK](github-copilot-sdk.md) (v0.7.0) - Official GitHub Copilot SDK integration. Features **Workspace Isolation**, **Database Persistence**, **Zero-config OpenWebUI Tool Bridge**, **BYOK** support, and **dynamic MCP discovery**. Supports streaming, multimodal, and infinite sessions. [View Deep Dive](github-copilot-sdk-deep-dive.md) | [**View Advanced Tutorial**](github-copilot-sdk-tutorial.md).
|
||||||
|
- **[Case Study: GitHub 100 Star Growth Analysis](star-prediction-example.md)** - Learn how to use the GitHub Copilot SDK Pipe with Minimax 2.1 to automatically analyze CSV data and generate project growth reports.
|
||||||
- :material-google:{ .lg .middle } **Gemini Manifold**
|
- **[Case Study: High-Quality Video to GIF Conversion](video-processing-example.md)** - See how the model uses system-level FFmpeg to accelerate, scale, and optimize colors for screen recordings.
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
Integration pipeline for Google's Gemini models with full streaming support.
|
|
||||||
|
|
||||||
**Version:** 1.0.0
|
|
||||||
|
|
||||||
[:octicons-arrow-right-24: Documentation](gemini-manifold.md)
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -15,19 +15,9 @@ Pipes 可以用于:
|
|||||||
|
|
||||||
## 可用的 Pipe 插件
|
## 可用的 Pipe 插件
|
||||||
|
|
||||||
<div class="grid cards" markdown>
|
- [GitHub Copilot SDK](github-copilot-sdk.zh.md) (v0.7.0) - GitHub Copilot SDK 官方集成。具备**工作区安全隔离**、**数据库持久化**、**零配置工具桥接**与**BYOK (自带 Key) 支持**。支持流式输出、打字机思考过程及无限会话。[查看深度架构解析](github-copilot-sdk-deep-dive.zh.md) | [**查看进阶实战教程**](github-copilot-sdk-tutorial.zh.md)。
|
||||||
|
- **[实战案例:GitHub 100 Star 增长预测](star-prediction-example.zh.md)** - 展示如何使用 GitHub Copilot SDK Pipe 结合 Minimax 2.1 模型,自动编写脚本分析 CSV 数据并生成详细的项目增长报告。
|
||||||
- :material-google:{ .lg .middle } **Gemini Manifold**
|
- **[实战案例:视频高质量 GIF 转换与加速](video-processing-example.zh.md)** - 演示模型如何通过底层 FFmpeg 工具对录屏进行加速、缩放及双阶段色彩优化处理。
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
面向 Google Gemini 的集成流水线,支持完整流式返回。
|
|
||||||
|
|
||||||
**版本:** 1.0.0
|
|
||||||
|
|
||||||
[:octicons-arrow-right-24: 查看文档](gemini-manifold.md)
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
1
docs/plugins/pipes/star-prediction-chat.json
Normal file
1
docs/plugins/pipes/star-prediction-chat.json
Normal file
File diff suppressed because one or more lines are too long
BIN
docs/plugins/pipes/star-prediction-demo.gif
Normal file
BIN
docs/plugins/pipes/star-prediction-demo.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 14 MiB |
98
docs/plugins/pipes/star-prediction-example.md
Normal file
98
docs/plugins/pipes/star-prediction-example.md
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
# Case Study: GitHub 100 Star Growth Analysis
|
||||||
|
|
||||||
|
This case study demonstrates how to use the **GitHub Copilot SDK Pipe** with the **Minimax 2.1** model to perform a deep analysis of project growth data and predict the milestone of reaching 100 stars.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎥 Recording
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
> **Scenario**: The user uploaded project traffic CSVs and star history data for the last 14 days. The model automatically wrote a Python script for regression analysis, generated an interactive visualization, and provided a detailed growth projection report.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ Implementation
|
||||||
|
|
||||||
|
- **Plugin Type**: Pipe (GitHub Copilot SDK)
|
||||||
|
- **Base Model**: Minimax 2.1 (via Pipe integration)
|
||||||
|
- **Key Capabilities**:
|
||||||
|
- **File Processing**: Automatically reads and parses multiple CSV data files.
|
||||||
|
- **Code Generation & Execution**: On-the-fly Python scripting to calculate growth rates, conversion rates, and median trends.
|
||||||
|
- **Multimodal Output**: Generates Markdown reports, interactive HTML dashboards, and Mermaid timeline charts.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💬 Conversation Highlights
|
||||||
|
|
||||||
|
### 📥 Import Conversation
|
||||||
|
|
||||||
|
You can download the raw chat data and import it into your Open WebUI to see the full tool calls and analysis logic:
|
||||||
|
[:material-download: Download Chat JSON](./star-prediction-chat.json)
|
||||||
|
|
||||||
|
> **How to Import?**
|
||||||
|
> In Open WebUI, click your **User Avatar** (bottom of left sidebar) -> **Settings** -> **Data** -> **Import Chats**, then select the downloaded file.
|
||||||
|
|
||||||
|
### 1. Data Submission
|
||||||
|
|
||||||
|
The **User** provided traffic source distribution and uploaded:
|
||||||
|
|
||||||
|
- `Unique visitors in last 14 days.csv`
|
||||||
|
- `Total views in last 14 days.csv`
|
||||||
|
- `star-history.csv`
|
||||||
|
|
||||||
|
### 2. Analysis Execution
|
||||||
|
|
||||||
|
**Minimax 2.1** received the data and immediately formulated an analysis plan:
|
||||||
|
|
||||||
|
1. Calculate star growth trajectory and rates.
|
||||||
|
2. Analyze visitor-to-star conversion rates.
|
||||||
|
3. Build linear and median projection models.
|
||||||
|
4. Generate a milestone timeline.
|
||||||
|
|
||||||
|
### 3. Report Generation
|
||||||
|
|
||||||
|
The model produced a comprehensive report. Here are the core projections:
|
||||||
|
|
||||||
|
#### 🎯 Key Projections
|
||||||
|
|
||||||
|
| Metric | Value | Insight |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| **Current Stars** | 62 | 62% of the goal reached |
|
||||||
|
| **Projected Goal Date** | **March 10, 2026** | ~28 days remaining |
|
||||||
|
| **Avg Growth Rate** | 1.35 stars/day | Highly stable and predictable |
|
||||||
|
| **Recent Acceleration** | 1.92 stars/day | Growth accelerated by 42% in last 14 days |
|
||||||
|
| **Conversion Rate** | 4.19% | Significantly higher than the OS average of 1-2% |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📈 Growth Milestone Timeline
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
gantt
|
||||||
|
title 🎯 Path to 100 Stars Timeline
|
||||||
|
dateFormat YYYY-MM-DD
|
||||||
|
axisFormat %m/%d
|
||||||
|
|
||||||
|
section Completed
|
||||||
|
Launch (0 Stars) :done, 2025-12-26, 1d
|
||||||
|
Hit 50 Stars :done, 2026-02-01, 1d
|
||||||
|
|
||||||
|
section Projected
|
||||||
|
75 Stars (Proj) :active, 2026-02-19, 5d
|
||||||
|
80 Stars (Proj) : 2026-02-23, 4d
|
||||||
|
90 Stars (Proj) : 2026-03-02, 4d
|
||||||
|
🎯 100 Stars Reach :crit, 2026-03-10, 4d
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💡 Strategic Recommendations
|
||||||
|
|
||||||
|
1. **Strengthen OpenWebUI Partnership**: 41% of traffic comes from `openwebui.com`. Maintain high visibility on this channel.
|
||||||
|
2. **SEO Optimization**: Organic search accounts for only 6%. There is massive potential for keyword optimization in the README.
|
||||||
|
3. **Milestone Momentum**: Plan a social media push around Feb 23 (at the 80-star mark) to leverage the 42% acceleration trend.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> [View GitHub Copilot SDK Pipe Documentation](./github-copilot-sdk.md)
|
||||||
98
docs/plugins/pipes/star-prediction-example.zh.md
Normal file
98
docs/plugins/pipes/star-prediction-example.zh.md
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
# 案例展示:GitHub 100 Star 增长预测分析
|
||||||
|
|
||||||
|
本案例展示了如何使用 **GitHub Copilot SDK Pipe** 配合 **Minimax 2.1** 模型,对项目的增长数据进行深度分析并预测达到 100 Star 的里程碑时间。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎥 效果录屏
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
> **场景描述**:用户上传了过去 14 天的项目访问流量 CSV 和 Star 历史数据。模型自动编写 Python 脚本进行回归分析,生成了可视化看板和详细的增长预测报告。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ 技术实现
|
||||||
|
|
||||||
|
- **插件类型**: Pipe (GitHub Copilot SDK)
|
||||||
|
- **底层模型**: Minimax 2.1 (通过 Pipe 接入)
|
||||||
|
- **核心能力**:
|
||||||
|
- **文件处理**: 自动读取并解析多份 CSV 数据文件。
|
||||||
|
- **代码生成与执行**: 现场编写 Python 分析代码并执行,计算增长率、转化率及中位趋势。
|
||||||
|
- **多模态输出**: 生成 Markdown 报告、HTML 交互看板以及 Mermaid 时间轴图表。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💬 对话实录
|
||||||
|
|
||||||
|
### 📥 导入对话记录
|
||||||
|
|
||||||
|
你可以下载原始对话数据并导入到你的 Open WebUI 中,查看完整的工具调用和分析逻辑:
|
||||||
|
[:material-download: 下载原始对话 JSON](./star-prediction-chat.json)
|
||||||
|
|
||||||
|
> **如何导入?**
|
||||||
|
> 在 Open WebUI 首页点击 **左侧侧边栏底部个人头像** -> **设置** -> **数据** -> **导入记录**,选择下载的文件即可。
|
||||||
|
|
||||||
|
### 1. 提交原始数据
|
||||||
|
|
||||||
|
**用户**提供了项目的流量来源分布表,并上传了:
|
||||||
|
|
||||||
|
- `Unique visitors in last 14 days.csv`
|
||||||
|
- `Total views in last 14 days.csv`
|
||||||
|
- `star-history.csv`
|
||||||
|
|
||||||
|
### 2. 模型执行分析
|
||||||
|
|
||||||
|
**Minimax 2.1** 接收到数据后,立即制定了分析计划:
|
||||||
|
|
||||||
|
1. 计算 Star 增长轨迹和增长率。
|
||||||
|
2. 分析访问者到 Star 的转化率。
|
||||||
|
3. 构建线性与中位增长模型进行预测。
|
||||||
|
4. 生成里程碑时间轴。
|
||||||
|
|
||||||
|
### 3. 生成分析报告
|
||||||
|
|
||||||
|
模型输出了一份详尽的报告,以下是其核心预测:
|
||||||
|
|
||||||
|
#### 🎯 关键预测结果
|
||||||
|
|
||||||
|
| 指标 | 数值 | 洞察 |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| **当前 Star 数** | 62 | 已完成目标的 62% |
|
||||||
|
| **预测达成日期** | **2026年3月10日** | 预计还有 28 天 |
|
||||||
|
| **平均增长率** | 1.35 stars/day | 极其稳定且可预测 |
|
||||||
|
| **近期加速** | 1.92 stars/day | 过去 14 天增长加速了 42% |
|
||||||
|
| **Star 转化率** | 4.19% | 远高于开源项目 1-2% 的平均水平 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📈 增长里程碑预演
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
gantt
|
||||||
|
title 🎯 冲刺 100 Stars 路径图
|
||||||
|
dateFormat YYYY-MM-DD
|
||||||
|
axisFormat %m/%d
|
||||||
|
|
||||||
|
section 已完成
|
||||||
|
项目启动 (0 Star) :done, 2025-12-26, 1d
|
||||||
|
突破 50 Star :done, 2026-02-01, 1d
|
||||||
|
|
||||||
|
section 预测中
|
||||||
|
75 Stars (预测) :active, 2026-02-19, 5d
|
||||||
|
80 Stars (预测) : 2026-02-23, 4d
|
||||||
|
90 Stars (预测) : 2026-03-02, 4d
|
||||||
|
🎯 100 Stars 达成 :crit, 2026-03-10, 4d
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💡 模型给出的建议
|
||||||
|
|
||||||
|
1. **强化 OpenWebUI 社区合作**:41% 的流量来自 `openwebui.com`,应持续在该渠道保持活跃。
|
||||||
|
2. **SEO 优化**:目前搜索流入仅占 6%,Readme 的关键词优化空间巨大。
|
||||||
|
3. **关键节点冲刺**:建议在 2 月 23 日(80 Star 节点)发起社交媒体宣传,利用近期 42% 的加速趋势冲刺百星。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> [查看 GitHub Copilot SDK Pipe 开发文档](./github-copilot-sdk.zh.md)
|
||||||
1
docs/plugins/pipes/video-processing-chat.json
Normal file
1
docs/plugins/pipes/video-processing-chat.json
Normal file
File diff suppressed because one or more lines are too long
BIN
docs/plugins/pipes/video-processing-demo.gif
Normal file
BIN
docs/plugins/pipes/video-processing-demo.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 MiB |
80
docs/plugins/pipes/video-processing-example.md
Normal file
80
docs/plugins/pipes/video-processing-example.md
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
# Case Study: High-Quality Video to GIF Conversion
|
||||||
|
|
||||||
|
This case study demonstrates how to use the **GitHub Copilot SDK Pipe** with **Minimax 2.1** to perform professional-grade video processing: accelerating a video by 1.4x and converting it into a high-quality GIF under 20MB.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎥 Recording
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
> **Scenario**: The user uploaded a 38MB `.mov` recording and requested a 1.4x speed increase, 1280px width, and a file size limit of 20MB. The model automatically formulated, executed, and verified a two-pass FFmpeg workflow.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ Implementation
|
||||||
|
|
||||||
|
- **Plugin Type**: Pipe (GitHub Copilot SDK)
|
||||||
|
- **Base Model**: Minimax 2.1
|
||||||
|
- **Key Capabilities**:
|
||||||
|
- **System Tool Access**: Automatically detects and invokes `ffmpeg` within the container.
|
||||||
|
- **Two-Pass Optimization**:
|
||||||
|
1. **Pass 1**: Analyzes all frames to generate a custom 256-color palette (`palettegen`).
|
||||||
|
2. **Pass 2**: Applies the palette for superior quantization and dithering (`paletteuse`).
|
||||||
|
- **Precision Parameters**: Implements 1.4x PTS scaling, Lanczos scaling, and 20fps rate control.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💬 Conversation Highlights
|
||||||
|
|
||||||
|
### 📥 Import Conversation
|
||||||
|
|
||||||
|
You can download the raw chat data and import it into your Open WebUI to see how the model debugs and optimizes the FFmpeg parameters:
|
||||||
|
[:material-download: Download Chat JSON](./video-processing-chat.json)
|
||||||
|
|
||||||
|
> **How to Import?**
|
||||||
|
> In Open WebUI, click your **User Avatar** (bottom of left sidebar) -> **Settings** -> **Data** -> **Import Chats**, then select the downloaded file.
|
||||||
|
|
||||||
|
### 1. Processing Requirements
|
||||||
|
|
||||||
|
The **User** provided an input file and specific parameters:
|
||||||
|
|
||||||
|
- Speed: 1.4x (setpts=PTS/1.4)
|
||||||
|
- Resolution: 1280px width, auto height
|
||||||
|
- Optimization: Must use palette generation technology
|
||||||
|
- Constraint: File size < 20MB
|
||||||
|
|
||||||
|
### 2. Analysis Execution
|
||||||
|
|
||||||
|
**Minimax 2.1** generated and executed the following core logic:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Pass 1: Generate optimal palette
|
||||||
|
ffmpeg -i input.mov -vf "fps=20,scale=1280:-1:flags=lanczos,setpts=PTS/1.4,palettegen" palette.png
|
||||||
|
# Pass 2: Generate final high-quality GIF
|
||||||
|
ffmpeg -i input.mov -i palette.png -lavfi "[0:v]fps=20,scale=1280:-1:flags=lanczos,setpts=PTS/1.4[v];[v][1:v]paletteuse" output.gif
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Result Summary
|
||||||
|
|
||||||
|
| Metric | Original Video | Processed GIF | Status |
|
||||||
|
| :--- | :--- | :--- | :--- |
|
||||||
|
| **File Size** | 38 MB | **14 MB** | ✅ Success |
|
||||||
|
| **Resolution** | 3024x1898 | 1280x803 | ✅ Smooth |
|
||||||
|
| **Speed** | 1.0x | 1.4x | ✅ Accurate |
|
||||||
|
| **Color Quality** | N/A | Optimal 256-color | ✨ Crystal Clear |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💡 Why This Case Matters
|
||||||
|
|
||||||
|
Standard LLMs can only "tell you" how to use FFmpeg. However, a Pipe powered by the **GitHub Copilot SDK** can:
|
||||||
|
|
||||||
|
1. **Interpret** complex multimedia processing parameters.
|
||||||
|
2. **Access** raw files within the filesystem.
|
||||||
|
3. **Execute** resource-intensive binary tool tasks.
|
||||||
|
4. **Validate** that the output (size, resolution) meets the user's hard constraints.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> [View GitHub Copilot SDK Pipe Documentation](./github-copilot-sdk.md)
|
||||||
80
docs/plugins/pipes/video-processing-example.zh.md
Normal file
80
docs/plugins/pipes/video-processing-example.zh.md
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
# 案例展示:视频高质量 GIF 转换与加速处理
|
||||||
|
|
||||||
|
本案例展示了如何使用 **GitHub Copilot SDK Pipe** 配合 **Minimax 2.1** 模型,通过底层工具(FFmpeg)对视频文件进行精细化处理:加速 1.4 倍并压缩至 20MB 以内的超高质量 GIF。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎥 效果录屏
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
> **场景描述**:用户上传了一个 38MB 的 `.mov` 录屏文件,要求加速 1.4 倍,并转换为 1280px 宽度、大小在 20MB 以内的高质量 GIF。模型自动分析了需求,编写并执行了双工作流 FFmpeg 指令。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ 技术实现
|
||||||
|
|
||||||
|
- **插件类型**: Pipe (GitHub Copilot SDK)
|
||||||
|
- **底层模型**: Minimax 2.1
|
||||||
|
- **核心能力**:
|
||||||
|
- **底层系统访问**: 自动检测并调用容器内的 `ffmpeg` 工具。
|
||||||
|
- **双阶段优化 (Two-Pass Optimization)**:
|
||||||
|
1. **阶段一**: 分析全视频帧生成 256 色最优调色板 (`palettegen`)。
|
||||||
|
2. **阶段二**: 应用调色板进行高质量量化和抖动处理 (`paletteuse`)。
|
||||||
|
- **参数精准控制**: 实现 1.4 倍 PTS 缩放、Lanczos 滤镜缩放及 20fps 帧率控制。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💬 对话实录
|
||||||
|
|
||||||
|
### 📥 导入对话记录
|
||||||
|
|
||||||
|
你可以下载原始对话数据并导入到你的 Open WebUI 中,查看模型如何一步步调试 FFmpeg 参数:
|
||||||
|
[:material-download: 下载原始对话 JSON](./video-processing-chat.json)
|
||||||
|
|
||||||
|
> **如何导入?**
|
||||||
|
> 在 Open WebUI 首页点击 **左侧侧边栏底部个人头像** -> **设置** -> **数据** -> **导入记录**,选择下载的文件即可。
|
||||||
|
|
||||||
|
### 1. 提交处理需求
|
||||||
|
|
||||||
|
**用户**指定了输入文件和详细参数:
|
||||||
|
|
||||||
|
- 加速:1.4x (setpts=PTS/1.4)
|
||||||
|
- 分辨率:宽度 1280px,等比例缩放
|
||||||
|
- 质量优化:必须使用调色板生成技术
|
||||||
|
- 约束:文件体积 < 20MB
|
||||||
|
|
||||||
|
### 2. 模型执行处理
|
||||||
|
|
||||||
|
**Minimax 2.1** 自动编写并执行了以下核心逻辑:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 生成优化调色板
|
||||||
|
ffmpeg -i input.mov -vf "fps=20,scale=1280:-1:flags=lanczos,setpts=PTS/1.4,palettegen" palette.png
|
||||||
|
# 生成最终高质量 GIF
|
||||||
|
ffmpeg -i input.mov -i palette.png -lavfi "[0:v]fps=20,scale=1280:-1:flags=lanczos,setpts=PTS/1.4[v];[v][1:v]paletteuse" output.gif
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 处理结果摘要
|
||||||
|
|
||||||
|
| 指标 | 原始视频 | 处理后 GIF | 状态 |
|
||||||
|
| :--- | :--- | :--- | :--- |
|
||||||
|
| **文件大小** | 38 MB | **14 MB** | ✅ 达标 |
|
||||||
|
| **分辨率** | 3024x1898 | 1280x803 | ✅ 缩放平滑 |
|
||||||
|
| **播放速度** | 1.0x | 1.4x | ✅ 节奏紧凑 |
|
||||||
|
| **色彩质量** | N/A | 256色最优量化 | ✨ 极其清晰 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💡 为什么这个案例很有意义?
|
||||||
|
|
||||||
|
传统的 LLM 只能“告诉你”怎么做,而基于 **GitHub Copilot SDK** 的 Pipe 能够:
|
||||||
|
|
||||||
|
1. **理解** 复杂的多媒体处理参数。
|
||||||
|
2. **感知** 文件系统中的原始素材。
|
||||||
|
3. **执行** 耗时、耗能的二进制工具任务。
|
||||||
|
4. **验证** 产出物(体积、分辨率)是否符合用户的最终约束。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> [查看 GitHub Copilot SDK Pipe 开发文档](./github-copilot-sdk.zh.md)
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# Prompt Library
|
# Prompt Library
|
||||||
|
|
||||||
Welcome to the OpenWebUI Extras Prompt Library! Find carefully crafted prompts for various use cases.
|
Welcome to the OpenWebUI Extensions Prompt Library! Find carefully crafted prompts for various use cases.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user