refactor: 完善 todo 和 wiki skill 的自包含操作指南

- todo: 明确 mysql_query MCP 工具调用方式,补充触发词和字段说明
- todo/setup: 补充 QwenPaw 和 Claude Code 两种配置方式,修正环境变量名
- wiki: 用 glob_search 替换 <skill-path> 占位符,流程更清晰
This commit is contained in:
2026-09-01 20:58:53 +08:00
parent be7720e732
commit 14e93d2001
3 changed files with 157 additions and 139 deletions
+47 -53
View File
@@ -4,35 +4,57 @@
推荐使用 `@benborla29/mcp-server-mysql`(支持读写操作)。
### 配置方式
### QwenPaw 配置方式
在项目的 `.mcp.json` 文件中添加(或在 `~/.claude.json` 中配置):
在 `~/.qwenpaw/config.json` 的 `mcp.clients` 中添加:
```json
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["-y", "@benborla29/mcp-server-mysql"],
"env": {
"MYSQL_HOST": "<替换为你的主机地址>",
"MYSQL_PORT": "<替换为你的端口,默认 3306>",
"MYSQL_USER": "<替换为你的用户名>",
"MYSQL_PASSWORD": "<替换为你的密码>",
"MYSQL_DATABASE": "<替换为你的数据库名>"
}
}
"mysql": {
"name": "mysql",
"description": "MySQL MCP for todo skill",
"enabled": true,
"transport": "stdio",
"command": "npx",
"args": ["-y", "@benborla29/mcp-server-mysql"],
"env": {
"MYSQL_HOST": "<主机地址>",
"MYSQL_PORT": "<端口,默认 3306>",
"MYSQL_USER": "<用户名>",
"MYSQL_PASS": "<密码>",
"MYSQL_DB": "<数据库名>",
"ALLOW_INSERT_OPERATION": "true",
"ALLOW_UPDATE_OPERATION": "true",
"ALLOW_DELETE_OPERATION": "true",
"SCHEMA_DDL_PERMISSIONS": "<数据库名>:true"
}
}
```
> **注意**:环境变量名是 `MYSQL_PASS`(不是 `MYSQL_PASSWORD`)和 `MYSQL_DB`(不是 `MYSQL_DATABASE`)。
### Claude Code 配置方式
```bash
claude mcp add mysql \
-e MYSQL_HOST="<主机地址>" \
-e MYSQL_PORT="<端口>" \
-e MYSQL_USER="<用户名>" \
-e MYSQL_PASS="<密码>" \
-e MYSQL_DB="<数据库名>" \
-e ALLOW_INSERT_OPERATION="true" \
-e ALLOW_UPDATE_OPERATION="true" \
-e ALLOW_DELETE_OPERATION="true" \
-e SCHEMA_DDL_PERMISSIONS="<数据库名>:true" \
-- npx -y @benborla29/mcp-server-mysql
```
### 验证 MCP 可用
配置完成后重启 Claude Code,然后尝试:
配置完成后重启客户端,然后尝试:
- 列出数据库中的表
- 执行一条简单查询
如果 MCP 工具可用,会看到 `mysql` 相关的工具。
如果 MCP 工具可用,会看到 `mysql_query` 工具。
---
@@ -65,48 +87,20 @@ CREATE TABLE IF NOT EXISTS todos (
| id | BIGINT UNSIGNED | 自增主键 |
| title | VARCHAR(500) | 任务标题,必填 |
| description | TEXT | 任务描述,可选 |
| status | ENUM | 状态:pending / in_progress / done / archived |
| priority | ENUM | 优先级:low / medium / high / urgent |
| status | ENUM | pending / in_progress / done / archived |
| priority | ENUM | low / medium / high / urgent |
| created_at | DATETIME | 创建时间,自动填充 |
| updated_at | DATETIME | 更新时间,自动刷新 |
| last_accessed_at | DATETIME | 最后访问时间,每次查看/更新时刷新 |
| access_count | INT UNSIGNED | 访问计数,每次访问 +1 |
| last_accessed_at | DATETIME | 最后访问时间,LRU 依据 |
| access_count | INT UNSIGNED | 访问计数,每次 +1 |
---
## 3. LRU 淘汰策略
### 原理
基于 `last_accessed_at` 字段实现 LRU(Least Recently Used)淘汰:
- 每次查看、更新 todo 时,刷新 `last_accessed_at` 为当前时间,`access_count` +1
- 当待办事项总数超过阈值(默认 100 条非 archived 记录)时,自动触发归档
- 归档优先级:先归档最久未访问的 `done` 事项,再归档最久未访问的 `pending` 事项
### 归档 SQL
```sql
-- 查询非 archived 的事项总数
SELECT COUNT(*) FROM todos WHERE status != 'archived';
-- 归档最久未访问的已完成事项(取最旧的 10 条)
UPDATE todos
SET status = 'archived'
WHERE status = 'done'
ORDER BY last_accessed_at ASC
LIMIT 10;
-- 如果仍然超标,归档最久未访问的待办事项
UPDATE todos
SET status = 'archived'
WHERE status = 'pending'
ORDER BY last_accessed_at ASC
LIMIT 10;
```
### 触发时机
- 每次 INSERT 新事项后,检查总数是否超标
- 用户主动要求"清理"或"归档旧任务"时
- 不会自动归档 `in_progress` 状态的事项(保护正在做的任务)
- 每次查看、更新 todo 时刷新 `last_accessed_at` 和 `access_count`
- 待办总数超过 100 条时自动归档
- 先归档最久未访问的 `done` 事项,再归档 `pending` 事项
- 不归档 `in_progress` 状态的事项