lightclawbot 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +241 -1
- package/dist/public/data/scripts/manifest.json +11 -0
- package/dist/public/data/scripts/preflight.78097a58.sh +94 -0
- package/dist/public/data/scripts/preflight.sh +94 -0
- package/dist/src/channel.d.ts.map +1 -1
- package/dist/src/channel.js +34 -17
- package/dist/src/channel.js.map +1 -1
- package/dist/src/config.d.ts +38 -5
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +105 -7
- package/dist/src/config.js.map +1 -1
- package/dist/src/download-tool.d.ts.map +1 -1
- package/dist/src/download-tool.js +16 -16
- package/dist/src/download-tool.js.map +1 -1
- package/dist/src/file-storage.d.ts.map +1 -1
- package/dist/src/file-storage.js +3 -5
- package/dist/src/file-storage.js.map +1 -1
- package/dist/src/format-urls.d.ts +26 -0
- package/dist/src/format-urls.d.ts.map +1 -0
- package/dist/src/format-urls.js +53 -0
- package/dist/src/format-urls.js.map +1 -0
- package/dist/src/gateway.d.ts.map +1 -1
- package/dist/src/gateway.js +89 -39
- package/dist/src/gateway.js.map +1 -1
- package/dist/src/history/session-store.d.ts +4 -0
- package/dist/src/history/session-store.d.ts.map +1 -1
- package/dist/src/history/session-store.js +41 -0
- package/dist/src/history/session-store.js.map +1 -1
- package/dist/src/inbound.d.ts.map +1 -1
- package/dist/src/inbound.js +38 -15
- package/dist/src/inbound.js.map +1 -1
- package/dist/src/outbound.d.ts.map +1 -1
- package/dist/src/outbound.js +5 -3
- package/dist/src/outbound.js.map +1 -1
- package/dist/src/socket-handlers.d.ts.map +1 -1
- package/dist/src/socket-handlers.js +1 -0
- package/dist/src/socket-handlers.js.map +1 -1
- package/dist/src/types.d.ts +6 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/upload-tool.d.ts.map +1 -1
- package/dist/src/upload-tool.js +14 -19
- package/dist/src/upload-tool.js.map +1 -1
- package/package.json +6 -3
- package/skills/lightclaw-media/SKILL.md +330 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-handlers.js","sourceRoot":"","sources":["../../src/socket-handlers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"socket-handlers.js","sourceRoot":"","sources":["../../src/socket-handlers.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -43,8 +43,10 @@ export interface PrivateMessageData {
|
|
|
43
43
|
}
|
|
44
44
|
/** 原始配置(config.yaml 中的内容) */
|
|
45
45
|
export interface AssistantAccountConfig {
|
|
46
|
-
/**
|
|
46
|
+
/** @deprecated 不再使用,配置中只有 apiKeys */
|
|
47
47
|
apiKey?: string;
|
|
48
|
+
/** API Keys 列表(第一个作为主 key,用于获取 botId 等) */
|
|
49
|
+
apiKeys?: string[];
|
|
48
50
|
/** REST API 基础地址(用于 outbound 主动发送) */
|
|
49
51
|
apiBaseUrl?: string;
|
|
50
52
|
/** 是否启用 */
|
|
@@ -61,7 +63,10 @@ export interface AssistantAccountConfig {
|
|
|
61
63
|
/** 解析后的完整账户(含默认值和环境变量 fallback) */
|
|
62
64
|
export interface ResolvedAssistantAccount {
|
|
63
65
|
accountId: string;
|
|
66
|
+
/** 主 apiKey(获取 botId、默认 COS 操作等) */
|
|
64
67
|
apiKey: string;
|
|
68
|
+
/** 所有 apiKey(含主 key),用于 WS 多 key 认证 */
|
|
69
|
+
allApiKeys: string[];
|
|
65
70
|
apiBaseUrl: string;
|
|
66
71
|
enabled: boolean;
|
|
67
72
|
name?: string;
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,8BAA8B;AAC9B,MAAM,WAAW,cAAc;IAC7B,UAAU;IACV,IAAI,EAAE,MAAM,CAAC;IACb,cAAc;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,cAAc;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,YAAY,GAAG,cAAc,GAAG,aAAa,CAAC;IAC/E,mBAAmB;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD,6BAA6B;AAC7B,MAAM,WAAW,sBAAsB;IACrC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-tool.d.ts","sourceRoot":"","sources":["../../src/upload-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAgB,MAAM,qBAAqB,CAAC;AAS3E,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AAExD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;CAY5B,CAAC;
|
|
1
|
+
{"version":3,"file":"upload-tool.d.ts","sourceRoot":"","sources":["../../src/upload-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAgB,MAAM,qBAAqB,CAAC;AAS3E,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AAExD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;CAY5B,CAAC;AAMF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAyI/D"}
|
package/dist/src/upload-tool.js
CHANGED
|
@@ -10,7 +10,7 @@ import * as fs from "node:fs";
|
|
|
10
10
|
import * as path from "node:path";
|
|
11
11
|
import { uploadFileToCos } from "./file-storage.js";
|
|
12
12
|
import { formatFileSize } from "./media.js";
|
|
13
|
-
import {
|
|
13
|
+
import { resolveEffectiveApiKey } from "./config.js";
|
|
14
14
|
// ============================================================
|
|
15
15
|
// 工具参数 schema(JSON Schema 格式)
|
|
16
16
|
// ============================================================
|
|
@@ -29,23 +29,14 @@ export const uploadToolSchema = {
|
|
|
29
29
|
required: ["paths"],
|
|
30
30
|
};
|
|
31
31
|
// ============================================================
|
|
32
|
-
// MIME 类型映射(扩展版)
|
|
33
|
-
// ============================================================
|
|
34
|
-
// ============================================================
|
|
35
|
-
// 辅助:从 api.config 动态解析出 FileStorageConfig
|
|
36
|
-
// ============================================================
|
|
37
|
-
function resolveStorageConfig(api, defaultAccountId) {
|
|
38
|
-
if (!api.config)
|
|
39
|
-
return {};
|
|
40
|
-
const account = resolveAccount(api.config, defaultAccountId);
|
|
41
|
-
return { apiKey: account.apiKey };
|
|
42
|
-
}
|
|
43
|
-
// ============================================================
|
|
44
32
|
// 工具注册(飞书工厂函数模式)
|
|
45
33
|
// ============================================================
|
|
46
34
|
export function registerUploadTool(api) {
|
|
35
|
+
// 通过闭包捕获 api.logger,tool ctx 中没有 log
|
|
36
|
+
const log = api.logger;
|
|
47
37
|
api.registerTool((ctx) => {
|
|
48
38
|
const defaultAccountId = ctx.agentAccountId;
|
|
39
|
+
const sessionKey = ctx.sessionKey;
|
|
49
40
|
return {
|
|
50
41
|
name: UPLOAD_TOOL_NAME,
|
|
51
42
|
description: "Upload local files to Tencent COS cloud storage and return publicly accessible download URLs. " +
|
|
@@ -54,8 +45,12 @@ export function registerUploadTool(api) {
|
|
|
54
45
|
"Supports up to 5 files at once. Returns a public download URL for each uploaded file.",
|
|
55
46
|
parameters: uploadToolSchema,
|
|
56
47
|
async execute(_toolCallId, params) {
|
|
57
|
-
//
|
|
58
|
-
|
|
48
|
+
// 调试日志:打印原始 sessionKey,帮助排查多 key 模式下的 apiKey 选取
|
|
49
|
+
// 使用 warn 级别输出,确保终端可见
|
|
50
|
+
log.warn(`[lightclaw_upload_file] sessionKey="${sessionKey}", accountId="${defaultAccountId}"`);
|
|
51
|
+
// 每次 execute 时动态解析 apiKey(多 key 模式下通过 sessionKey 直接获取)
|
|
52
|
+
const apiKey = resolveEffectiveApiKey({ sessionKey });
|
|
53
|
+
log.warn(`[lightclaw_upload_file] resolved apiKey="${apiKey?.slice(0, 8)}..."`);
|
|
59
54
|
const { paths } = params;
|
|
60
55
|
// 参数校验
|
|
61
56
|
if (!Array.isArray(paths) || paths.length === 0) {
|
|
@@ -96,7 +91,7 @@ export function registerUploadTool(api) {
|
|
|
96
91
|
const batch = paths.slice(i, i + concurrency);
|
|
97
92
|
const batchResults = await Promise.allSettled(batch.map(async (filePath) => {
|
|
98
93
|
const stat = fs.statSync(filePath);
|
|
99
|
-
const uploadResult = await uploadFileToCos(filePath,
|
|
94
|
+
const uploadResult = await uploadFileToCos(filePath, { apiKey });
|
|
100
95
|
return {
|
|
101
96
|
path: filePath,
|
|
102
97
|
success: true,
|
|
@@ -119,13 +114,13 @@ export function registerUploadTool(api) {
|
|
|
119
114
|
}
|
|
120
115
|
}
|
|
121
116
|
}
|
|
122
|
-
//
|
|
117
|
+
// 构建结果文本(使用 Markdown 链接格式,引导模型原样输出给用户)
|
|
123
118
|
const lines = [];
|
|
124
119
|
const successResults = [];
|
|
125
120
|
for (const r of results) {
|
|
126
121
|
const name = path.basename(r.path);
|
|
127
122
|
if (r.success && r.url) {
|
|
128
|
-
lines.push(`✅ ${name}
|
|
123
|
+
lines.push(`✅ [${name}](${r.url}) (${r.size})`);
|
|
129
124
|
successResults.push({ name, url: r.url, size: r.size });
|
|
130
125
|
}
|
|
131
126
|
else {
|
|
@@ -134,7 +129,7 @@ export function registerUploadTool(api) {
|
|
|
134
129
|
}
|
|
135
130
|
const summary = results.length === 1
|
|
136
131
|
? successResults.length === 1
|
|
137
|
-
? `File uploaded successfully.
|
|
132
|
+
? `File uploaded successfully.\n\n[${successResults[0].name}](${successResults[0].url})`
|
|
138
133
|
: `File upload failed: ${results[0].error}`
|
|
139
134
|
: `Uploaded ${successResults.length}/${results.length} files.\n${lines.join("\n")}`;
|
|
140
135
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-tool.js","sourceRoot":"","sources":["../../src/upload-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"upload-tool.js","sourceRoot":"","sources":["../../src/upload-tool.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lightclawbot",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "LightClawBot channel plugin with message support, cron jobs, and proactive messaging",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
"skills"
|
|
18
18
|
],
|
|
19
19
|
"openclaw": {
|
|
20
|
-
"extensions": [
|
|
20
|
+
"extensions": [
|
|
21
|
+
"./dist/index.js"
|
|
22
|
+
],
|
|
21
23
|
"channel": {
|
|
22
24
|
"id": "lightclawbot",
|
|
23
25
|
"label": "LightClawBot",
|
|
@@ -34,7 +36,8 @@
|
|
|
34
36
|
"scripts": {
|
|
35
37
|
"build": "tsc",
|
|
36
38
|
"typecheck": "tsc --noEmit",
|
|
37
|
-
"prepublishOnly": "npm run build"
|
|
39
|
+
"prepublishOnly": "npm run build",
|
|
40
|
+
"deploy": "node scripts/deploy.cjs"
|
|
38
41
|
},
|
|
39
42
|
"license": "MIT",
|
|
40
43
|
"keywords": [
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lightclawbot-media
|
|
3
|
+
description: LightClawBot 文件收发能力。用户发来的文件自动下载并保存,AI 生成的文件通过 lightclaw_upload_file 上传后以标准 Markdown 链接返回给用户。获取已上传文件的下载链接使用 lightclaw_get_file_url。禁止使用 tencentcloud-cos-skill。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# LightClawBot 文件上传与下载
|
|
7
|
+
|
|
8
|
+
让 AI 帮用户处理文件的上传、下载和分享,通过 LightClawBot 通道投递。
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## ⛔ 最重要的规则(读三遍)
|
|
13
|
+
|
|
14
|
+
> 1. **上传文件必须使用 `lightclaw_upload_file` 工具,禁止使用 `tencentcloud-cos-skill` 或其他任何 COS 工具!**
|
|
15
|
+
> 2. **获取文件下载链接必须使用 `lightclaw_get_file_url` 工具!**
|
|
16
|
+
> 3. **返回文件给用户时,必须使用标准 Markdown 链接格式:`[文件名](下载链接)`**
|
|
17
|
+
> - ❌ 错误:`下载链接: https://xxx`
|
|
18
|
+
> - ❌ 错误:`📎 文件下载链接: https://xxx`
|
|
19
|
+
> - ✅ 正确:`[report.pdf](https://lightai.tencentcloud.com/cosmanager/getFileStream?filePath=2026-03-15/report.pdf)`
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 🔧 可用工具
|
|
24
|
+
|
|
25
|
+
本技能使用以下两个专属工具,**不要使用其他文件/存储工具**:
|
|
26
|
+
|
|
27
|
+
| 工具名 | 用途 | 何时使用 |
|
|
28
|
+
|--------|------|----------|
|
|
29
|
+
| `lightclaw_upload_file` | 上传本地文件到云端,获取公网下载链接 | AI 生成了文件需要分享给用户时 |
|
|
30
|
+
| `lightclaw_get_file_url` | 获取已上传文件的下载链接 / 下载文件到本地 / 上传单文件并获取链接 | 需要查询或操作已有云端文件时 |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 📤 上传文件(lightclaw_upload_file)
|
|
35
|
+
|
|
36
|
+
### 功能
|
|
37
|
+
|
|
38
|
+
将本地文件上传到云端存储,返回公网可访问的下载链接。支持批量上传(最多 5 个文件)。
|
|
39
|
+
|
|
40
|
+
### 参数
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"paths": ["/absolute/path/to/file1.pdf", "/absolute/path/to/file2.xlsx"]
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
49
|
+
|------|------|------|------|
|
|
50
|
+
| `paths` | string[] | ✅ | 本地文件绝对路径数组,最多 5 个 |
|
|
51
|
+
|
|
52
|
+
### ⚠️ 关键约束
|
|
53
|
+
|
|
54
|
+
1. **必须使用绝对路径**(以 `/` 开头),禁止使用相对路径
|
|
55
|
+
- ❌ `./output/report.pdf`
|
|
56
|
+
- ✅ `/Users/xxx/.openclaw/workspace/output/report.pdf`
|
|
57
|
+
2. **文件必须存在**:上传前确认文件已生成并写入磁盘
|
|
58
|
+
3. **单次最多 5 个文件**:超出需分批上传
|
|
59
|
+
|
|
60
|
+
### 使用示例
|
|
61
|
+
|
|
62
|
+
**上传单个文件**:
|
|
63
|
+
```json
|
|
64
|
+
{
|
|
65
|
+
"paths": ["/Users/xxx/.openclaw/workspace/report.pdf"]
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**批量上传**:
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"paths": [
|
|
73
|
+
"/Users/xxx/.openclaw/workspace/chart1.png",
|
|
74
|
+
"/Users/xxx/.openclaw/workspace/chart2.png",
|
|
75
|
+
"/Users/xxx/.openclaw/workspace/summary.xlsx"
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## 📥 获取文件链接 / 下载文件(lightclaw_get_file_url)
|
|
83
|
+
|
|
84
|
+
### 功能
|
|
85
|
+
|
|
86
|
+
提供三种操作:
|
|
87
|
+
- `get_url`:获取已上传到云端的文件的公网下载链接
|
|
88
|
+
- `download_to_local`:将云端文件下载到本地目录
|
|
89
|
+
- `upload_and_get_url`:上传单个本地文件并返回公网下载链接
|
|
90
|
+
|
|
91
|
+
### 参数
|
|
92
|
+
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"action": "get_url",
|
|
96
|
+
"filePath": "2026-03-15/report.pdf"
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
101
|
+
|------|------|------|------|
|
|
102
|
+
| `action` | string | ✅ | `"get_url"` / `"download_to_local"` / `"upload_and_get_url"` |
|
|
103
|
+
| `filePath` | string | ✅ | `get_url`/`download_to_local` 时为云端文件路径;`upload_and_get_url` 时为本地绝对路径 |
|
|
104
|
+
| `localDir` | string | ❌ | 仅 `download_to_local` 使用,指定本地保存目录,默认当前工作目录 |
|
|
105
|
+
|
|
106
|
+
### 各 action 使用示例
|
|
107
|
+
|
|
108
|
+
**获取下载链接**:
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"action": "get_url",
|
|
112
|
+
"filePath": "2026-03-15/report.pdf"
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**下载文件到本地**:
|
|
117
|
+
```json
|
|
118
|
+
{
|
|
119
|
+
"action": "download_to_local",
|
|
120
|
+
"filePath": "2026-03-15/report.pdf",
|
|
121
|
+
"localDir": "/tmp/downloads"
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**上传单文件并获取链接**:
|
|
126
|
+
```json
|
|
127
|
+
{
|
|
128
|
+
"action": "upload_and_get_url",
|
|
129
|
+
"filePath": "/Users/xxx/.openclaw/workspace/output.csv"
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 📋 返回文件给用户的格式(最重要)
|
|
136
|
+
|
|
137
|
+
### 🚨🚨🚨 必须使用标准 Markdown 链接格式
|
|
138
|
+
|
|
139
|
+
> **当需要将文件/文档/图片链接返回给用户时,必须使用标准 Markdown 链接格式:**
|
|
140
|
+
>
|
|
141
|
+
> ```
|
|
142
|
+
> [<文件名>](<下载链接>)
|
|
143
|
+
> ```
|
|
144
|
+
|
|
145
|
+
### ✅ 正确示例
|
|
146
|
+
|
|
147
|
+
**单个文件**:
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
好的,报告已生成,请点击下载:
|
|
151
|
+
|
|
152
|
+
[report.pdf](https://lightai.tencentcloud.com/cosmanager/getFileStream?filePath=2026-03-15/report.pdf)
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**多个文件**:
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
所有文件已准备好:
|
|
159
|
+
|
|
160
|
+
- [数据分析报告.pdf](https://lightai.tencentcloud.com/cosmanager/getFileStream?filePath=2026-03-15/数据分析报告.pdf)
|
|
161
|
+
- [原始数据.xlsx](https://lightai.tencentcloud.com/cosmanager/getFileStream?filePath=2026-03-15/原始数据.xlsx)
|
|
162
|
+
- [趋势图.png](https://lightai.tencentcloud.com/cosmanager/getFileStream?filePath=2026-03-15/趋势图.png)
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**附带说明文字**:
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
✅ 周报已生成完毕!
|
|
169
|
+
|
|
170
|
+
[本周工作周报.pdf](https://lightai.tencentcloud.com/cosmanager/getFileStream?filePath=2026-03-15/本周工作周报.pdf)
|
|
171
|
+
|
|
172
|
+
报告包含了本周的进度汇总和下周计划。
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### ❌ 错误示例(绝对不要这样做)
|
|
176
|
+
|
|
177
|
+
❌ **裸链接**:
|
|
178
|
+
```
|
|
179
|
+
下载链接: https://lightai.tencentcloud.com/cosmanager/getFileStream?filePath=2026-03-15/report.pdf
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
❌ **带 emoji 前缀的裸链接**:
|
|
183
|
+
```
|
|
184
|
+
📎 文件下载链接: https://lightai.tencentcloud.com/cosmanager/getFileStream?filePath=2026-03-15/report.pdf
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
❌ **使用代码块包裹链接**:
|
|
188
|
+
```
|
|
189
|
+
`https://lightai.tencentcloud.com/cosmanager/getFileStream?filePath=2026-03-15/report.pdf`
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
❌ **只返回路径,没有文件名**:
|
|
193
|
+
```
|
|
194
|
+
[下载](https://lightai.tencentcloud.com/cosmanager/getFileStream?filePath=2026-03-15/report.pdf)
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## 📸 接收用户文件
|
|
200
|
+
|
|
201
|
+
用户通过 LightClawBot 发来的文件(图片、文档等)**自动下载到本地**。文件信息在上下文的【Attachments】字段中,包含:
|
|
202
|
+
|
|
203
|
+
| 字段 | 说明 |
|
|
204
|
+
|------|------|
|
|
205
|
+
| `name` | 文件名 |
|
|
206
|
+
| `mimeType` | 文件 MIME 类型 |
|
|
207
|
+
| `url` | 文件的公网下载链接(COS 地址) |
|
|
208
|
+
|
|
209
|
+
本地文件路径在上下文的 `MediaPath` / `MediaPaths` 字段中。
|
|
210
|
+
|
|
211
|
+
### 处理用户文件的流程
|
|
212
|
+
|
|
213
|
+
1. **查看上下文**:从 Attachments 获取文件信息
|
|
214
|
+
2. **本地处理**:使用 `MediaPath` 中的本地路径读取和处理文件
|
|
215
|
+
3. **如需返回处理后的文件**:用 `lightclaw_upload_file` 上传 → 用 Markdown 链接返回
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## 🎯 完整使用场景
|
|
220
|
+
|
|
221
|
+
### 场景 1:用户要求生成报告
|
|
222
|
+
|
|
223
|
+
**用户**:帮我生成一份数据分析报告
|
|
224
|
+
|
|
225
|
+
**AI 执行步骤**:
|
|
226
|
+
1. 生成报告文件并保存到本地(如 `/Users/xxx/.openclaw/workspace/数据分析报告.pdf`)
|
|
227
|
+
2. 调用 `lightclaw_upload_file` 上传:
|
|
228
|
+
```json
|
|
229
|
+
{ "paths": ["/Users/xxx/.openclaw/workspace/数据分析报告.pdf"] }
|
|
230
|
+
```
|
|
231
|
+
3. 获取到下载链接后,以 Markdown 格式回复:
|
|
232
|
+
```
|
|
233
|
+
✅ 报告已生成:
|
|
234
|
+
|
|
235
|
+
[数据分析报告.pdf](https://lightai.tencentcloud.com/cosmanager/getFileStream?filePath=2026-03-15/数据分析报告.pdf)
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### 场景 2:用户要求处理发来的文件
|
|
239
|
+
|
|
240
|
+
**用户**:帮我把这个 Excel 转成 PDF(附带了 data.xlsx)
|
|
241
|
+
|
|
242
|
+
**AI 执行步骤**:
|
|
243
|
+
1. 从上下文 `MediaPath` 获取本地文件路径
|
|
244
|
+
2. 读取并处理 Excel 文件,转换为 PDF
|
|
245
|
+
3. 调用 `lightclaw_upload_file` 上传 PDF
|
|
246
|
+
4. 以 Markdown 格式回复:
|
|
247
|
+
```
|
|
248
|
+
✅ 已将 Excel 转为 PDF:
|
|
249
|
+
|
|
250
|
+
[data.pdf](https://lightai.tencentcloud.com/cosmanager/getFileStream?filePath=2026-03-15/data.pdf)
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### 场景 3:用户要求获取之前上传的文件
|
|
254
|
+
|
|
255
|
+
**用户**:我昨天上传的报告还能下载吗?
|
|
256
|
+
|
|
257
|
+
**AI 执行步骤**:
|
|
258
|
+
1. 调用 `lightclaw_get_file_url`:
|
|
259
|
+
```json
|
|
260
|
+
{ "action": "get_url", "filePath": "2026-03-14/report.pdf" }
|
|
261
|
+
```
|
|
262
|
+
2. 以 Markdown 格式回复:
|
|
263
|
+
```
|
|
264
|
+
可以的,这是下载链接:
|
|
265
|
+
|
|
266
|
+
[report.pdf](https://lightai.tencentcloud.com/cosmanager/getFileStream?filePath=2026-03-14/report.pdf)
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### 场景 4:批量上传多个文件
|
|
270
|
+
|
|
271
|
+
**用户**:帮我生成三张数据图表
|
|
272
|
+
|
|
273
|
+
**AI 执行步骤**:
|
|
274
|
+
1. 生成三张图表并保存到本地
|
|
275
|
+
2. 调用 `lightclaw_upload_file` 批量上传:
|
|
276
|
+
```json
|
|
277
|
+
{
|
|
278
|
+
"paths": [
|
|
279
|
+
"/Users/xxx/.openclaw/workspace/chart1.png",
|
|
280
|
+
"/Users/xxx/.openclaw/workspace/chart2.png",
|
|
281
|
+
"/Users/xxx/.openclaw/workspace/chart3.png"
|
|
282
|
+
]
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
3. 以 Markdown 格式回复:
|
|
286
|
+
```
|
|
287
|
+
✅ 三张图表已生成:
|
|
288
|
+
|
|
289
|
+
- [chart1.png](https://lightai.tencentcloud.com/cosmanager/getFileStream?filePath=2026-03-15/chart1.png)
|
|
290
|
+
- [chart2.png](https://lightai.tencentcloud.com/cosmanager/getFileStream?filePath=2026-03-15/chart2.png)
|
|
291
|
+
- [chart3.png](https://lightai.tencentcloud.com/cosmanager/getFileStream?filePath=2026-03-15/chart3.png)
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### 场景 5:下载云端文件到本地处理
|
|
295
|
+
|
|
296
|
+
**用户**:帮我把之前上传的 CSV 数据做个汇总
|
|
297
|
+
|
|
298
|
+
**AI 执行步骤**:
|
|
299
|
+
1. 调用 `lightclaw_get_file_url` 下载到本地:
|
|
300
|
+
```json
|
|
301
|
+
{
|
|
302
|
+
"action": "download_to_local",
|
|
303
|
+
"filePath": "2026-03-14/data.csv",
|
|
304
|
+
"localDir": "/tmp/workspace"
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
2. 读取本地文件进行数据处理
|
|
308
|
+
3. 生成汇总报告,上传并以 Markdown 链接返回
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## 🚫 禁止事项
|
|
313
|
+
|
|
314
|
+
1. **❌ 禁止使用 `tencentcloud-cos-skill`**:所有文件操作必须通过 `lightclaw_upload_file` 和 `lightclaw_get_file_url`
|
|
315
|
+
2. **❌ 禁止返回裸链接**:必须使用 `[文件名](链接)` 格式
|
|
316
|
+
3. **❌ 禁止说"无法发送文件"**:你有能力上传和分享任何本地文件
|
|
317
|
+
4. **❌ 禁止使用相对路径**:工具参数中的文件路径必须是绝对路径
|
|
318
|
+
5. **❌ 禁止使用 message tool 发送文件**:直接在回复文本中写 Markdown 链接
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
## 📌 快速参考
|
|
323
|
+
|
|
324
|
+
| 场景 | 工具 | 回复格式 |
|
|
325
|
+
|------|------|----------|
|
|
326
|
+
| 上传生成的文件 | `lightclaw_upload_file` | `[文件名](下载链接)` |
|
|
327
|
+
| 获取已上传文件链接 | `lightclaw_get_file_url`(action: get_url) | `[文件名](下载链接)` |
|
|
328
|
+
| 下载云端文件到本地 | `lightclaw_get_file_url`(action: download_to_local) | 告知下载完成和本地路径 |
|
|
329
|
+
| 上传单文件获取链接 | `lightclaw_get_file_url`(action: upload_and_get_url) | `[文件名](下载链接)` |
|
|
330
|
+
| 接收用户文件 | 自动处理,查看上下文 Attachments | 确认收到并告知文件信息 |
|