From f9ac26b996a8c7ff50a639b87cff3a45d9baf226 Mon Sep 17 00:00:00 2001 From: xiaoc <648844981@qq.com> Date: Thu, 29 Jan 2026 17:52:03 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20Redis=20?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Redis \346\237\245\350\257\242.tool" | Bin 0 -> 6263 bytes tools/tool_redis/README.md | 161 ++++++++++++++++++ tools/tool_redis/data.yaml | 5 + tools/tool_redis/logo.png | Bin 0 -> 3478 bytes 4 files changed, 166 insertions(+) create mode 100644 "tools/tool_redis/1.0.0/Redis \346\237\245\350\257\242.tool" create mode 100644 tools/tool_redis/README.md create mode 100644 tools/tool_redis/data.yaml create mode 100644 tools/tool_redis/logo.png diff --git "a/tools/tool_redis/1.0.0/Redis \346\237\245\350\257\242.tool" "b/tools/tool_redis/1.0.0/Redis \346\237\245\350\257\242.tool" new file mode 100644 index 0000000000000000000000000000000000000000..56686214e7457a67589dad1866a7ca19e778b95a GIT binary patch literal 6263 zcmbtY>u(g-6~|!8D^;3Ss`{-rtE65h>(#C|*mxyJLO@&OlvH5UL*CpX%9NzJ&e>J?Gv#voq@#QAhU9+{ZcR zcOLiLd+w?38RIAG_~ZT9u`GjS8MSrA(0@y9mc<_5du0?}drjsjrb_*be(!02!cTkM zVsvxa)eT2CneTOLy6V6L99^$#zV}8hKcwacwf?@c`c9>9kPhbil)P5xs|;xaYA&~< zpq2|jXDT%ca`sbAXQc6$o2~h4(5tJK>3i#tFJ-FlslmOu<|p@wnAZH$88NeQacc4D zY^LGQH@wr0bGKVpz2L%`=ItptG5GZ9;*%Shz&qRc!(H-=J){3Qb@~AR{UtPZzV{xq zNA`SpfHc24mjz*}rBVNbt{<&ir_l;I=2H7a$wp-9s>PfPsarPwDvW((*;89!!6o7?LQ9B$)qw^UCQL3zLmY zSHySY(!=J=<>p@>zgRdIr_stq62WOcxE3tT09mdtzrACkR60Z`?EGTE3vPW(Qeawg zl%7bD#^mQD#qIl+&|4}eEmb6~XLF5DZnhqt1wiok{L+JT^Y&-G!07ptKeq1ODCD3S z2N<&}Ae}uG+_>F(<_BNQHJ@B;%*_J!h!)Kbjn=(?Ek1gjTYNP2{PKlh@*(FI`a!Ru z0SR|8ACMhKm}T;I#kOihQyhwri5v~v;C~nqj@PK+C@~VM>NUj(DRztIRz3kk3;q=d zj#7KYrLFQ286_AgdWGl=Ru*4)IF=#lq}<-vY^1QM<>P*Tf9LhRaIQ9v#Y!H9=#MIO%uGe&r>s0!7 z^t1)wRC-*cb!S!bDm}iIeHe8*FiG)-&N{S`1ChxhSHpT{v?LcyTCHg%m=og)vDmtO zy)kzok+XuYE;aAoT72}6FjP?~VC66}Ob#86jH$Y|O-(1+shg!^t_22#?w>0LqtSHU zT~e!x4MY1ZlZuc;<`6N259lV5D3j)c_zB0;J*l1yN%f?938X$^S`LY1CW(-9Gz2n7 zZMTgE2k}XuLKzWW9OaQKAP>iQa+NK&JR4#ByVZe({?S+e3O@N>ebAaL7_T z$dx-VtJLe%)Y3gY*&~*2rX@vhGJr!U%Q_ebDfo4%6gfSVfoAJ%`xsrg9KJPhMedM6 z&ZoDN8SK^L)OO^Cmlpe;*aKC|HRDSNgZ=5<#?&<#?D6CcX*!sm4<1hkla~VT^Tw5h zU|~8Q{(xTahSbP|H>th^mvCff)(f$H*K{N3vj0cMksMY}Iw8C?<`>vl+`2(K^Srb+ z)skx-Ljsquo*}wJYp^m1HQgGuVT+P3i6tGJjSrX*kp&qc zWt%ETqqqorBWzLpB|`&|Wk{|g)TQGh;)v}^-dmcMkuhdFo|lCclgp`7(WP32Ecp9S zF)~X#*P@mZ>!FUA4;2$GkoM=C+T<%~gD2+>*GMTRBTIA`I9zH+(U?Uzf+iN=IQA|f z#o&PX;}{t-7&*Y$9*9yVBEpsMmZ2nA9aG?H3AnNVeeY#;>CVkc=PF}%_p;PR}fsA3(jAOGIKEfG1T)hEK3y@ET8+A zTl4cpauQ55v4&6f%c$ax@9@Y{{$llui={{kU0Vjk+{+2ziJh#-I!Z)qB9-@H;tGt1 zE7&7KTG36#Fk;m-I2993(q-6_RSk<#NL{}71Kq5>{gFrR_5Pzi0 z+f<{BDPy4A>nQN~%(LL}tzh;J$rD_L{ka@jeDpU_()->fu+G>RwE<7raBbgJnD;|e zq7){$am8>c=mA!!rts&Dk#DMRj&xOjHtAM-ylz~-eziCJc>7#6jRzIKIf1Bc;CME?c%ZNfB$zKD|_3Zkf<9_z#;WM?-dC0 zqpYr|yzOn04gzr%%h05ZSTA1Em*kS%b@0IG`@f2o!ai@C3Kbl1#x(AG5TpGAeYt#J z|IlbYUn~q1^Ml#`LVuw!_;zkbF_(jN>(=oCayf#5;`TyudoDXLu%j>(61Zpm{SfSM R8ey;l`ri8Se%~!;{|9WDW|sf} literal 0 HcmV?d00001 diff --git a/tools/tool_redis/README.md b/tools/tool_redis/README.md new file mode 100644 index 0000000..b453083 --- /dev/null +++ b/tools/tool_redis/README.md @@ -0,0 +1,161 @@ +# Redis 数据库查询工具 + +一个强大的 Redis 数据库查询工具,支持执行各种 Redis 命令,为 MaxKB 智能体平台提供 Redis 查询能力。 + +## 功能特性 + +- ✅ 支持 Redis 2.6 及以上版本 +- ✅ 支持所有 Redis 命令(GET、SET、HGETALL、KEYS 等) +- ✅ 集成到 MaxKB 智能体平台 +- ✅ 简单易用的配置和部署 +- ✅ 自动处理字节、列表、集合、哈希等数据类型 +- ✅ 支持带引号的参数解析 +- ✅ 支持连接超时设置 +- ✅ 支持结果数量限制 +- ✅ 友好的中文错误提示 + +## 系统要求 + +- Redis 2.6 或更高版本 +- MaxKB 平台环境 + +## 安装依赖 + +在使用此工具之前,需要先安装所需的依赖包: + +```bash +pip install redis==5.0.1 +``` + +依赖包说明: +- `redis==5.0.1` - Redis Python 客户端 + +## 参数说明 + +| 参数 | 类型 | 必填 | 默认值 | 说明 | +|------|------|------|--------|------| +| host | string | 是 | - | Redis 服务器地址 | +| port | string | 是 | 6379 | 端口号 | +| password | string | 否 | - | 密码,无密码时留空 | +| db | string | 是 | 0 | 数据库索引(0-15) | +| command | string | 是 | - | Redis 命令 | +| timeout | number | 否 | 30 | 连接超时时间(秒) | +| max_results | number | 否 | 1000 | 最大返回结果数,设为0不限制 | + +## 使用示例 + +```python +# 获取单个键值 +result = query_redis( + host="127.0.0.1", + port="6379", + password="", + db="0", + command="GET mykey" +) + +# 查找所有键 +result = query_redis( + host="127.0.0.1", + port="6379", + password="your_password", + db="0", + command="KEYS *" +) + +# 获取哈希表所有字段 +result = query_redis( + host="127.0.0.1", + port="6379", + password="your_password", + db="0", + command="HGETALL user:1001" +) + +# 获取列表元素 +result = query_redis( + host="127.0.0.1", + port="6379", + password="", + db="0", + command="LRANGE mylist 0 -1" +) + +# 带引号参数 +result = query_redis( + host="127.0.0.1", + port="6379", + password="", + db="0", + command='SET mykey "hello world"' +) +``` + +## 常用命令参考 + +| 命令 | 说明 | 示例 | +|------|------|------| +| GET | 获取字符串值 | GET key | +| SET | 设置字符串值 | SET key value | +| KEYS | 查找键 | KEYS pattern | +| HGET | 获取哈希字段 | HGET hash field | +| HGETALL | 获取哈希所有字段 | HGETALL hash | +| LRANGE | 获取列表范围 | LRANGE list 0 -1 | +| SMEMBERS | 获取集合所有成员 | SMEMBERS set | +| ZRANGE | 获取有序集合范围 | ZRANGE zset 0 -1 | +| TTL | 获取键过期时间 | TTL key | +| TYPE | 获取键类型 | TYPE key | +| INFO | 获取服务器信息 | INFO | +| DBSIZE | 获取键数量 | DBSIZE | + +## 错误处理 + +工具会返回友好的中文错误提示: + +| 错误类型 | 提示信息 | +|----------|----------| +| 连接失败 | 无法连接到 Redis 服务器 {host}:{port},请检查地址和端口 | +| 认证失败 | 认证失败,请检查密码 | +| 命令错误 | 命令执行错误: {详细信息} | +| 连接超时 | 连接超时,请检查网络或增加 timeout 参数 | + +## 返回格式 + +查询结果以 JSON 格式返回: + +```json +{ + "command": "GET mykey", + "result": "myvalue", + "type": "bytes" +} +``` + +列表/集合结果: +```json +{ + "command": "KEYS *", + "result": ["key1", "key2", "key3"], + "type": "list" +} +``` + +哈希结果: +```json +{ + "command": "HGETALL user:1001", + "result": { + "name": "张三", + "age": "25" + }, + "type": "dict" +} +``` + +## 注意事项 + +1. 生产环境建议配置 Redis 密码认证 +2. 检查防火墙是否允许 6379 端口访问 +3. 建议使用只读账户进行查询操作 +4. 大数据量查询时建议设置 max_results 参数限制返回数量 +5. KEYS 命令在大数据量时可能影响性能,建议使用 SCAN 替代 diff --git a/tools/tool_redis/data.yaml b/tools/tool_redis/data.yaml new file mode 100644 index 0000000..f319f75 --- /dev/null +++ b/tools/tool_redis/data.yaml @@ -0,0 +1,5 @@ +name: Redis 数据库查询 +tags: + - 数据库查询 +title: 实现 Redis 的查询操作 +description: 实现 Redis 的查询操作,支持执行各种 Redis 命令,包括 GET、SET、HGETALL、KEYS 等. diff --git a/tools/tool_redis/logo.png b/tools/tool_redis/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ec869e4525136f45a0435bb15b9982688debd880 GIT binary patch literal 3478 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 Date: Thu, 29 Jan 2026 18:20:36 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20ClickHouse=20?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\345\272\223\346\237\245\350\257\242.tool" | Bin 0 -> 5833 bytes tools/tool_clickhouse/README.md | 126 ++++++++++++++++++ tools/tool_clickhouse/data.yaml | 5 + tools/tool_clickhouse/logo.png | Bin 0 -> 3265 bytes 4 files changed, 131 insertions(+) create mode 100644 "tools/tool_clickhouse/1.0.0/ClickHouse \346\225\260\346\215\256\345\272\223\346\237\245\350\257\242.tool" create mode 100644 tools/tool_clickhouse/README.md create mode 100644 tools/tool_clickhouse/data.yaml create mode 100644 tools/tool_clickhouse/logo.png diff --git "a/tools/tool_clickhouse/1.0.0/ClickHouse \346\225\260\346\215\256\345\272\223\346\237\245\350\257\242.tool" "b/tools/tool_clickhouse/1.0.0/ClickHouse \346\225\260\346\215\256\345\272\223\346\237\245\350\257\242.tool" new file mode 100644 index 0000000000000000000000000000000000000000..90ebd6c43dd5a8135a5da1c30b590c74639851ec GIT binary patch literal 5833 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.6.0 +``` + +依赖包说明: +- `clickhouse-connect>=0.6.0` - ClickHouse 官方推荐的 Python 驱动程序 + +## 参数说明 + +| 参数 | 类型 | 必填 | 默认值 | 说明 | +|------|------|------|--------|------| +| host | string | 是 | - | 数据库服务器地址 | +| port | string | 是 | 8123 | HTTP 端口号(HTTPS 默认 8443) | +| user | string | 是 | - | 用户名 | +| password | string | 是 | - | 密码 | +| database | string | 是 | - | 数据库名称 | +| query | string | 是 | - | SQL 查询语句 | +| timeout | number | 否 | 30 | 连接超时时间(秒) | +| max_rows | number | 否 | 1000 | 最大返回行数,设为0不限制 | +| use_https | boolean | 否 | False | 是否使用 HTTPS 连接 | + +## 使用示例 + +```python +# 基础查询 +result = query_clickhouse( + host="192.168.1.100", + port="8123", + user="default", + password="your_password", + database="test_db", + query="SELECT * FROM system.tables LIMIT 10" +) + +# 带超时和行数限制的查询 +result = query_clickhouse( + host="192.168.1.100", + port="8123", + user="default", + password="your_password", + database="test_db", + query="SELECT * FROM your_table", + timeout=60, + max_rows=500 +) + +# 使用 HTTPS 连接 +result = query_clickhouse( + host="192.168.1.100", + port="8443", + user="default", + password="your_password", + database="test_db", + query="SELECT version()", + use_https=True +) +``` + +## 错误处理 + +工具会返回友好的中文错误提示: + +| 错误类型 | 提示信息 | +|----------|----------| +| 连接失败 | 无法连接到数据库服务器 {host}:{port},请检查地址和端口 | +| 认证失败 | 认证失败,请检查用户名和密码 | +| 数据库不存在 | 数据库 '{database}' 不存在 | +| SQL语法错误 | SQL语法错误: {详细信息} | + +## 返回格式 + +查询结果以 JSON 格式返回: + +```json +[ + {"column1": "value1", "column2": "value2"}, + {"column1": "value3", "column2": "value4"} +] +``` + +## 支持的数据类型 + +| ClickHouse 类型 | 转换结果 | +|-----------------|----------| +| DateTime/Date | ISO 8601 格式字符串 | +| Decimal | 浮点数 | +| UUID | 字符串 | +| IPv4/IPv6 | 字符串 | +| Array | JSON 数组 | +| Tuple | JSON 数组 | +| Nested | JSON 对象 | +| FixedString/String | 字符串 | + +## 注意事项 + +1. 默认使用 HTTP 协议(端口 8123),如需 HTTPS 请设置 `use_https=True` 并使用端口 8443 +2. 检查防火墙是否允许 8123/8443 端口访问 +3. 建议使用只读账户进行查询操作 +4. 大数据量查询时建议设置 max_rows 参数限制返回行数 +5. 如果查询语句没有 LIMIT,工具会自动添加 max_rows 限制 diff --git a/tools/tool_clickhouse/data.yaml b/tools/tool_clickhouse/data.yaml new file mode 100644 index 0000000..376ebb9 --- /dev/null +++ b/tools/tool_clickhouse/data.yaml @@ -0,0 +1,5 @@ +name: ClickHouse 数据库查询 +tags: + - 数据库查询 +title: 实现 ClickHouse 列式数据库的查询操作 +description: 实现 ClickHouse 列式数据库的查询操作,支持对接 ClickHouse 20.x 及以上版本,推荐 21.8+. diff --git a/tools/tool_clickhouse/logo.png b/tools/tool_clickhouse/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2f4604218bf60b75fd833b9e1beb388f59bf79e3 GIT binary patch literal 3265 zcmeHK`%_a#6uv=GW5T0QNudx>M05ZVD3yt#m4^rsa6kcz1|o{K7?4LGLL|rlX&Mk; z!Rmk%rbsOTqIH1bVIWaZd_Z}`2Vfeo)Fe>I)BqYtx_blt7yN}elewF7cF%t2+db#p z%Q+AdV6@h1ErK9Mf&2Wz5Cr24ez-NOfF^FBMFSp~)UW^_r0%)396|6|fqr`qGANTH zzP`jQicu z1gA%s+?&jZvsLOets{l5PP;p^cf2X0F=IYhYJY1RDWs`SzMSfO;nvB1SUxtC?y+mD z7C#m|Y^z}i&spt`n0grftFVp3y6BceXL%yZv}i<0b;_YPZ_c3$*OB;LQ=vAJR}?)85RlO&pwj;ralF&3x z9>gne992Y*UFx;32=FP+J2$%030)m=@zVV>=u(BbV-yznvk>GKzRzC)T}PCAbp%08 z&bs5jxLTvej}NdBP-Doqvp*+8jf0LM0yCg-jy1HD<5r`_UCFsTsKGcr+85)68r2+g z{z??)p1mJM=b^DCv^3TM-F>ZlAHf(kE<;;pZTYT6u}3Ew#~SYxNlgeAt_Ye_zVS0H zs$#cJTQ-hMK+xP@@6k?@R`v`%n@ed*$j8kLsS;0*Wl=dbVM*KLTE3^sDi;!&HgU|& z&dI@wBruKfOw{eE8F}gSZwxQXcB(OStm{w$*8a=_IcToQJ_Oq{BibVSLX3x# z`lxb2-4L9p{L9H7D4Lsgx5~2{94OXpQsXIVSskuAF9cg=c7Gu9C+c;ocLt5ozwmb* z978#}y(2m36mWl{fL>$)_Lii+;8>PeO8S)|{1a4^P4#Dj-d*k8B2&(C0MsgRrfO)Q z{My-BW0O0P7VI#SGAwM!plIMG*+l8x)DGu`31#u)W@-UqN!%nI66v z!iB0{>OynCV(j#ZTj)N0R2y;y2+=!(H|HYzF0#~&^e*i|(qDXvkaz5mB!XNS~7f@!F_DYLl@Aw($+OjV(Oq5g>^vcYv zpGz<*-ZARU|GjNm2i>U#6)@(0t`B52=YKZNZOQ%WLKw|To3`;i%dh7 z_{@ViGG{iZqD5Ua5cMm{oJ&Qx2a)0kmLT8c(i#0#aC^$L3_*~_DZQG z+NUlbzD-_@HWa#OZ%*Z;crnTcz7P`2D=N0<~aWJZJ