tars-cli 0.1.10__tar.gz → 1.0.0__tar.gz

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.
Files changed (36) hide show
  1. {tars_cli-0.1.10 → tars_cli-1.0.0}/PKG-INFO +53 -2
  2. {tars_cli-0.1.10 → tars_cli-1.0.0}/README.md +52 -1
  3. {tars_cli-0.1.10 → tars_cli-1.0.0}/pyproject.toml +4 -1
  4. tars_cli-1.0.0/tars_cli/__init__.py +1 -0
  5. tars_cli-1.0.0/tars_cli/skills/tars-cli/SKILL.md +100 -0
  6. tars_cli-1.0.0/tars_cli/skills/tars-cli/references/auth.md +45 -0
  7. tars_cli-1.0.0/tars_cli/skills/tars-cli/references/workflows.md +109 -0
  8. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli.egg-info/PKG-INFO +53 -2
  9. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli.egg-info/SOURCES.txt +3 -0
  10. tars_cli-0.1.10/tars_cli/__init__.py +0 -1
  11. {tars_cli-0.1.10 → tars_cli-1.0.0}/setup.cfg +0 -0
  12. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli/__main__.py +0 -0
  13. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli/app.py +0 -0
  14. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli/auth.py +0 -0
  15. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli/client.py +0 -0
  16. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli/commands/__init__.py +0 -0
  17. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli/commands/auth_cmd.py +0 -0
  18. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli/commands/dataset_cmd.py +0 -0
  19. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli/commands/eval_cmd.py +0 -0
  20. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli/commands/plugin_cmd.py +0 -0
  21. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli/commands/template_cmd.py +0 -0
  22. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli/config.py +0 -0
  23. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli/hints.py +0 -0
  24. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli/output.py +0 -0
  25. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli/utils/__init__.py +0 -0
  26. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli/utils/polling.py +0 -0
  27. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli/utils/progress.py +0 -0
  28. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli.egg-info/dependency_links.txt +0 -0
  29. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli.egg-info/entry_points.txt +0 -0
  30. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli.egg-info/requires.txt +0 -0
  31. {tars_cli-0.1.10 → tars_cli-1.0.0}/tars_cli.egg-info/top_level.txt +0 -0
  32. {tars_cli-0.1.10 → tars_cli-1.0.0}/tests/test_auth.py +0 -0
  33. {tars_cli-0.1.10 → tars_cli-1.0.0}/tests/test_client.py +0 -0
  34. {tars_cli-0.1.10 → tars_cli-1.0.0}/tests/test_config.py +0 -0
  35. {tars_cli-0.1.10 → tars_cli-1.0.0}/tests/test_hints.py +0 -0
  36. {tars_cli-0.1.10 → tars_cli-1.0.0}/tests/test_output.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tars-cli
3
- Version: 0.1.10
3
+ Version: 1.0.0
4
4
  Summary: tars 平台命令行工具
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -32,7 +32,7 @@ pip install tars-cli
32
32
 
33
33
  ```bash
34
34
  $ tars --version
35
- tars-cli 0.1.10
35
+ tars-cli 1.0.0
36
36
  ```
37
37
 
38
38
  ### 升级
@@ -297,3 +297,54 @@ tars -o json -q eval run <plugin_id> \
297
297
  |--------|------|
298
298
  | 0 | 成功 |
299
299
  | 2 | 执行错误(网络、参数、认证等) |
300
+
301
+ ## Claude Code 集成
302
+
303
+ tars-cli 提供了 Claude Code Skill,安装后可在 Claude Code 中使用自然语言调用 tars 命令(如"帮我评估 xxx 插件"),无需记忆 CLI 参数。
304
+
305
+ ### 安装
306
+
307
+ 安装 tars-cli 后,skill 文件已随包分发。运行以下命令将 skill 部署到当前项目:
308
+
309
+ ```bash
310
+ # 查找 tars_cli 包安装路径并复制到全局 skill 目录
311
+ SKILL_SRC="$(python -c 'import tars_cli, pathlib; print(pathlib.Path(tars_cli.__file__).parent / "skills" / "tars-cli")')"
312
+ SKILL_DST="$HOME/.claude/skills/tars-cli"
313
+ mkdir -p "$SKILL_DST/references"
314
+ cp "$SKILL_SRC/SKILL.md" "$SKILL_DST/"
315
+ cp "$SKILL_SRC/references/auth.md" "$SKILL_DST/references/"
316
+ cp "$SKILL_SRC/references/workflows.md" "$SKILL_DST/references/"
317
+ echo "✓ tars-cli skill 已安装到 $SKILL_DST"
318
+ ```
319
+
320
+ 部署后的目录结构:
321
+
322
+ ```
323
+ ~/.claude/
324
+ └── skills/
325
+ └── tars-cli/
326
+ ├── SKILL.md # Skill 主文件(命令映射 + 执行流程)
327
+ └── references/
328
+ ├── auth.md # 登录/登出流程
329
+ └── workflows.md # 完整评估工作流 + 错误处理
330
+ ```
331
+
332
+ 已有同名 skill 时直接覆盖即可更新。
333
+
334
+ ### 支持的自然语言指令
335
+
336
+ | 示例 | 实际执行的命令 |
337
+ |------|---------------|
338
+ | "登录 tars" | `tars auth login` |
339
+ | "导入插件 https://github.com/xxx/xxx.git" | `tars plugin import <git_url>` |
340
+ | "帮我评估 xxx 插件" | 完整评估流程(生成数据集 → 发布 → 运行评估 → 导出报告) |
341
+ | "生成数据集" | `tars dataset generate ...` |
342
+ | "查看评估状态" | `tars eval status ...` |
343
+ | "下载模板" | `tars template download ...` |
344
+ | "导出报告" | `tars plugin export-report ...` |
345
+
346
+ ### 前置条件
347
+
348
+ - 已安装 tars-cli:`pip install tars-cli`
349
+ - 已登录:`tars auth login -s <server_url>`
350
+ - Claude Code 版本 >= 1.0(支持 Skill 功能)
@@ -12,7 +12,7 @@ pip install tars-cli
12
12
 
13
13
  ```bash
14
14
  $ tars --version
15
- tars-cli 0.1.10
15
+ tars-cli 1.0.0
16
16
  ```
17
17
 
18
18
  ### 升级
@@ -277,3 +277,54 @@ tars -o json -q eval run <plugin_id> \
277
277
  |--------|------|
278
278
  | 0 | 成功 |
279
279
  | 2 | 执行错误(网络、参数、认证等) |
280
+
281
+ ## Claude Code 集成
282
+
283
+ tars-cli 提供了 Claude Code Skill,安装后可在 Claude Code 中使用自然语言调用 tars 命令(如"帮我评估 xxx 插件"),无需记忆 CLI 参数。
284
+
285
+ ### 安装
286
+
287
+ 安装 tars-cli 后,skill 文件已随包分发。运行以下命令将 skill 部署到当前项目:
288
+
289
+ ```bash
290
+ # 查找 tars_cli 包安装路径并复制到全局 skill 目录
291
+ SKILL_SRC="$(python -c 'import tars_cli, pathlib; print(pathlib.Path(tars_cli.__file__).parent / "skills" / "tars-cli")')"
292
+ SKILL_DST="$HOME/.claude/skills/tars-cli"
293
+ mkdir -p "$SKILL_DST/references"
294
+ cp "$SKILL_SRC/SKILL.md" "$SKILL_DST/"
295
+ cp "$SKILL_SRC/references/auth.md" "$SKILL_DST/references/"
296
+ cp "$SKILL_SRC/references/workflows.md" "$SKILL_DST/references/"
297
+ echo "✓ tars-cli skill 已安装到 $SKILL_DST"
298
+ ```
299
+
300
+ 部署后的目录结构:
301
+
302
+ ```
303
+ ~/.claude/
304
+ └── skills/
305
+ └── tars-cli/
306
+ ├── SKILL.md # Skill 主文件(命令映射 + 执行流程)
307
+ └── references/
308
+ ├── auth.md # 登录/登出流程
309
+ └── workflows.md # 完整评估工作流 + 错误处理
310
+ ```
311
+
312
+ 已有同名 skill 时直接覆盖即可更新。
313
+
314
+ ### 支持的自然语言指令
315
+
316
+ | 示例 | 实际执行的命令 |
317
+ |------|---------------|
318
+ | "登录 tars" | `tars auth login` |
319
+ | "导入插件 https://github.com/xxx/xxx.git" | `tars plugin import <git_url>` |
320
+ | "帮我评估 xxx 插件" | 完整评估流程(生成数据集 → 发布 → 运行评估 → 导出报告) |
321
+ | "生成数据集" | `tars dataset generate ...` |
322
+ | "查看评估状态" | `tars eval status ...` |
323
+ | "下载模板" | `tars template download ...` |
324
+ | "导出报告" | `tars plugin export-report ...` |
325
+
326
+ ### 前置条件
327
+
328
+ - 已安装 tars-cli:`pip install tars-cli`
329
+ - 已登录:`tars auth login -s <server_url>`
330
+ - Claude Code 版本 >= 1.0(支持 Skill 功能)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "tars-cli"
7
- version = "0.1.10"
7
+ version = "1.0.0"
8
8
  description = "tars 平台命令行工具"
9
9
  requires-python = ">=3.11"
10
10
  dependencies = [
@@ -28,6 +28,9 @@ dev = [
28
28
  "build>=1.0",
29
29
  ]
30
30
 
31
+ [tool.setuptools.package-data]
32
+ tars_cli = ["skills/**/*.md"]
33
+
31
34
  [project.scripts]
32
35
  tars = "tars_cli.app:app"
33
36
 
@@ -0,0 +1 @@
1
+ __version__ = "1.0.0"
@@ -0,0 +1,100 @@
1
+ ---
2
+ name: tars-cli
3
+ description: "This skill should be used when the user asks to \"登录 tars\", \"导入插件\", \"生成数据集\", \"发布数据集\", \"运行评估\", \"查看评估状态\", \"导出报告\", \"下载模板\", \"上传评估计划\", or mentions plugin evaluation, dataset generation, AI Agent testing, or tars CLI operations. Triggers even without the word 'tars' if the intent matches."
4
+ ---
5
+
6
+ # tars CLI 自然语言调用器
7
+
8
+ 将自然语言需求翻译为 `tars` CLI 命令并执行。
9
+
10
+ ## 前置条件
11
+
12
+ 1. 运行 `tars --version`,确认命令存在
13
+ 2. 若命令不存在,自动安装(使用清华镜像源加速,避免超时):
14
+ ```bash
15
+ pip install tars-cli -i https://pypi.tuna.tsinghua.edu.cn/simple
16
+ ```
17
+ 清华源失败时,依次尝试阿里云源 `https://mirrors.aliyun.com/pypi/simple/` 和官方源。安装后再次验证
18
+ 3. **检查登录状态**:读取凭证文件 `/Users/easyops/Library/Application Support/tars/credentials.json`
19
+ - 文件存在且包含 `server_url` 字段 → 输出当前登录环境:`当前环境: <server_url>`,然后继续执行
20
+ - 文件不存在或不包含 `server_url` → 提示用户需要先登录,询问登录环境信息(server_url、username、password),然后执行登录流程(详见 `references/auth.md`)
21
+
22
+ ## 命令映射
23
+
24
+ ### 认证 (auth)
25
+
26
+ | 用户意图 | 命令 |
27
+ |---------|------|
28
+ | 登出 | `tars auth logout` |
29
+ | 登录 | 见 `references/auth.md` |
30
+
31
+ ### 插件管理 (plugin)
32
+
33
+ | 用户意图 | 命令 |
34
+ |---------|------|
35
+ | 从 Git 导入插件 | `tars plugin import <git_url>` |
36
+ | 从 Git 导入插件(指定分支/路径/认证) | `tars plugin import <git_url> --branch <branch> --path <subpath> --auth-type <none\|token\|ssh-key> --auth-token <token>` |
37
+ | 从本地文件导入插件 | `tars plugin import /path/to/plugin.zip --overwrite` |
38
+ | 导出评估报告 | `tars plugin export-report <plugin_id>` |
39
+ | 查看插件详情 | `curl -s -H "Authorization: Bearer <token>" "<server_url>/api/v1/plugins/<plugin_id>"` |
40
+
41
+ Git 导入可选参数:`--branch`(默认 main)、`--path`、`--auth-type`(none/token/ssh-key)、`--auth-token`。本地文件导入支持 `--overwrite`。
42
+
43
+ ### 数据集管理 (dataset)
44
+
45
+ | 用户意图 | 命令 |
46
+ |---------|------|
47
+ | 生成数据集(按 Agent) | `tars dataset generate <plugin_id> --agent-name <name> --conversation-type single_turn` |
48
+ | 生成数据集(按 Skill) | `tars dataset generate <plugin_id> --skill-name <name> --conversation-type multi_turn` |
49
+ | 列出数据集版本(按 Agent) | `tars dataset list <plugin_id> --agent-name <name> --conversation-type single_turn` |
50
+ | 列出数据集版本(按 Skill) | `tars dataset list <plugin_id> --skill-name <name> --conversation-type multi_turn` |
51
+ | 发布数据集 | `tars dataset publish <version_id>` |
52
+ | 上传评估计划(按 Agent) | `tars dataset upload <plugin_id> --agent-name <name> --conversation-type single_turn --plan plan.yaml --cases cases.yaml` |
53
+ | 上传评估计划(按 Skill) | `tars dataset upload <plugin_id> --skill-name <name> --conversation-type multi_turn --plan plan.yaml --cases cases.yaml` |
54
+
55
+ 关键参数:
56
+ - `--agent-name` 和 `--skill-name` 二选一,必须指定其中一个
57
+ - `--conversation-type`(简写 `-t`)支持 `single_turn` 和 `multi_turn`,必须通过 `AskUserQuestion` 让用户选择
58
+ - `publish` 只需要 version_id
59
+
60
+ ### 评估 (eval)
61
+
62
+ | 用户意图 | 命令 |
63
+ |---------|------|
64
+ | 运行评估(按 Agent) | `tars eval run <plugin_id> --agent-name <name> --dataset-version <version_id>` |
65
+ | 运行评估(按 Skill) | `tars eval run <plugin_id> --skill-name <name> --dataset-version <version_id>` |
66
+ | 查看评估状态 | `tars eval status <task_id>` |
67
+
68
+ `--agent-name` 和 `--skill-name` 二选一,可不传。`eval status` 只需要 task_id。
69
+
70
+ ### 模板 (template)
71
+
72
+ | 用户意图 | 命令 |
73
+ |---------|------|
74
+ | 下载评估计划模板 | `tars template download plan -f yaml` |
75
+ | 下载单轮测试用例模板 | `tars template download testcase-single` |
76
+ | 下载多轮测试用例模板 | `tars template download testcase-multi` |
77
+
78
+ ### 全局选项
79
+
80
+ 可在任何命令前添加:`-o/--output FORMAT`(table/json/yaml)、`-q/--quiet`、`--verbose`、`--server URL`。全局选项必须放在子命令之前。
81
+
82
+ ## 执行流程
83
+
84
+ 1. **理解意图**:分析自然语言描述,判断要执行哪个命令组
85
+ 2. **判断目标类型**:
86
+ - 用户提到 "agent" 或 "智能体" → 使用 `--agent-name`
87
+ - 用户提到 "skill" 或 "技能" → 使用 `--skill-name`
88
+ - 未明确说明 → 通过 `AskUserQuestion` 询问,**必须等待回复后再继续**
89
+ 3. **确认对话类型**:通过 `AskUserQuestion` 让用户选择单轮或多人,**必须等待回复后再继续**,不要自行决定
90
+ 4. **收集参数**:若用户未提供必要参数(plugin_id、名称等),先询问
91
+ 5. **构建命令**:根据映射表构建完整的 tars CLI 命令
92
+ 6. **执行命令**:直接运行,不需要额外确认
93
+ 7. **展示结果**:将命令原始输出完整展示给用户。**禁止**追加提问、建议或多余评论
94
+
95
+ ## Additional Resources
96
+
97
+ ### Reference Files
98
+
99
+ - **`references/workflows.md`** - 完整评估工作流(5步流程)、评估完成后诊断结论与 Web 链接、CI/CD 集成、错误处理
100
+ - **`references/auth.md`** - 登录流程(非交互式 API 调用)、凭证存储、登出
@@ -0,0 +1,45 @@
1
+ # 认证流程
2
+
3
+ ## 登录(非交互式)
4
+
5
+ `tars auth login` 依赖 `typer.prompt()` 交互式输入,在当前环境中无法正常工作。改为直接调用 API 完成登录:
6
+
7
+ 1. 通过 `AskUserQuestion` 向用户询问以下信息(如用户未主动提供):
8
+ - `server_url`:服务端地址(默认 `http://localhost:8001`)
9
+ - `username`:用户名
10
+ - `password`:密码
11
+ 2. 使用 `curl` 调用登录 API:
12
+
13
+ ```bash
14
+ curl -s -X POST "<server_url>/api/v1/auth/login" \
15
+ -H "Content-Type: application/json" \
16
+ -d '{"username": "<username>", "password": "<password>"}'
17
+ ```
18
+
19
+ 3. 从响应中提取 `access_token`、`refresh_token`、`expires_at`
20
+ 4. 将凭证写入文件:
21
+
22
+ ```bash
23
+ mkdir -p "$HOME/Library/Application Support/tars"
24
+ cat > "$HOME/Library/Application Support/tars/credentials.json" << 'EOF'
25
+ {
26
+ "server_url": "<server_url>",
27
+ "access_token": "<access_token>",
28
+ "refresh_token": "<refresh_token>",
29
+ "expires_at": "<expires_at>"
30
+ }
31
+ EOF
32
+ chmod 600 "$HOME/Library/Application Support/tars/credentials.json"
33
+ ```
34
+
35
+ 5. 确认登录成功,告知用户
36
+
37
+ **注意**:登录失败时(HTTP 非 200),向用户展示错误信息并建议检查用户名密码。
38
+
39
+ ## 登出
40
+
41
+ 直接执行 CLI 命令:
42
+
43
+ ```bash
44
+ tars auth logout
45
+ ```
@@ -0,0 +1,109 @@
1
+ # 详细工作流
2
+
3
+ ## 完整评估流程
4
+
5
+ 当用户说"帮我跑一下插件 xxx 的评估"时,按以下步骤执行:
6
+
7
+ ### 第1步:列出可评估的 Agent 和 Skill
8
+
9
+ 调用 API 获取插件详情,列出所有可评估的 Agent 和 Skill:
10
+
11
+ ```bash
12
+ curl -s -H "Authorization: Bearer <token>" "<server_url>/api/v1/plugins/<plugin_id>"
13
+ ```
14
+
15
+ 从返回的 JSON 中提取 `agents` 和 `skills` 列表,展示给用户(名称 + 描述),使用 `AskUserQuestion` 让用户选择要评估的目标。
16
+
17
+ ### 第2步:列出所有已有数据集版本(单轮 + 多轮全部列出)
18
+
19
+ 对用户选中的目标,**必须同时查询单轮和多轮**的所有已有数据集版本,不要因为之前已确认过对话类型就只查一种。全部展示给用户:
20
+
21
+ ```bash
22
+ tars dataset list <plugin_id> --agent-name <name> --conversation-type single_turn
23
+ tars dataset list <plugin_id> --agent-name <name> --conversation-type multi_turn
24
+ ```
25
+
26
+ (如果选的是 Skill,将 `--agent-name` 替换为 `--skill-name`)
27
+
28
+ 将**所有**查询结果(单轮和多轮)一并展示给用户,使用 `AskUserQuestion` 让用户选择:
29
+
30
+ - **使用已有数据集**:仅从状态为 **已发布(published)** 的版本中选择一个(标注是单轮还是多轮),**草稿(draft)状态的版本不可用于评估,不得出现在选项中**,跳到第4步
31
+ - **生成新数据集**:跳到第3步
32
+
33
+ ### 第3步:生成并发布新数据集
34
+
35
+ 使用 `AskUserQuestion` 让用户确认对话类型(单轮/多轮),然后执行:
36
+
37
+ ```bash
38
+ tars dataset generate <plugin_id> --agent-name/--skill-name <name> --conversation-type <type>
39
+ tars dataset publish <version_id>
40
+ ```
41
+
42
+ **失败处理**:只有当命令明确返回错误(exit code 非零、error 信息)时才视为失败。**必须**通过 `AskUserQuestion` 向用户确认下一步操作,提供以下选项:
43
+
44
+ - **重新生成**:重试同类型数据集生成
45
+ - **切换对话类型**:改为生成另一种对话类型的数据集
46
+ - **选择已有数据集**:回到第2步,从已发布的数据集中选择一个
47
+ - **中止**:终止整个评估流程
48
+
49
+ **禁止**在生成失败后自行决定使用不匹配的已有数据集进行评估。
50
+
51
+ ### 第4步:运行评估
52
+
53
+ ```bash
54
+ tars eval run <plugin_id> --agent-name/--skill-name <name> --dataset-version <version_id>
55
+ ```
56
+
57
+ ### 第5步:导出报告
58
+
59
+ ```bash
60
+ tars plugin export-report <plugin_id>
61
+ ```
62
+
63
+ ## 评估完成后的诊断结论与 Web 链接
64
+
65
+ 当 `eval status` 返回 `status: completed`(或 `partial`)时,**必须**执行以下两步:
66
+
67
+ ### 获取诊断结论
68
+
69
+ 调用 API:
70
+
71
+ ```bash
72
+ curl -s -H "Authorization: Bearer <token>" "<server_url>/api/v1/evaluation-report/<task_id>/optimization-suggestions"
73
+ ```
74
+
75
+ 从返回 JSON 中提取 `diagnosis_report.failure_diagnosis.issues` 数组,按以下格式逐条展示:
76
+
77
+ ```
78
+ [{priority}][{layer}] {mode}
79
+ 缺陷表现: {manifestation}
80
+ 代表案例: {representative_cases}
81
+ 根因分析: {root_cause}
82
+ 优化建议: {suggested_fix}
83
+ ```
84
+
85
+ 如果返回的 issues 为空或接口请求失败,则跳过诊断部分。
86
+
87
+ ### 输出 Web 页面链接
88
+
89
+ 根据 `server_url` 拼接 web 报告页面链接。规则:将 `server_url` 的端口替换为 `8000`,拼接路径 `/plugins/<plugin_id>/evaluation/<task_id>`。格式为:
90
+
91
+ ```
92
+ Web 查看: <web_url>
93
+ ```
94
+
95
+ ## CI/CD 集成
96
+
97
+ 如果用户提到 CI/CD、自动化、pipeline 等关键词,提示设置环境变量:
98
+
99
+ ```bash
100
+ export TARS_ACCESS_TOKEN=<token>
101
+ export TARS_SERVER_URL=<server_url>
102
+ ```
103
+
104
+ ## 错误处理
105
+
106
+ - 命令返回退出码 2 → 读取错误信息并向用户解释原因
107
+ - 认证相关错误 → 提示重新登录
108
+ - 网络错误 → 提示检查 server_url 和网络连接
109
+ - 参数错误 → 提示正确的命令格式
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tars-cli
3
- Version: 0.1.10
3
+ Version: 1.0.0
4
4
  Summary: tars 平台命令行工具
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -32,7 +32,7 @@ pip install tars-cli
32
32
 
33
33
  ```bash
34
34
  $ tars --version
35
- tars-cli 0.1.10
35
+ tars-cli 1.0.0
36
36
  ```
37
37
 
38
38
  ### 升级
@@ -297,3 +297,54 @@ tars -o json -q eval run <plugin_id> \
297
297
  |--------|------|
298
298
  | 0 | 成功 |
299
299
  | 2 | 执行错误(网络、参数、认证等) |
300
+
301
+ ## Claude Code 集成
302
+
303
+ tars-cli 提供了 Claude Code Skill,安装后可在 Claude Code 中使用自然语言调用 tars 命令(如"帮我评估 xxx 插件"),无需记忆 CLI 参数。
304
+
305
+ ### 安装
306
+
307
+ 安装 tars-cli 后,skill 文件已随包分发。运行以下命令将 skill 部署到当前项目:
308
+
309
+ ```bash
310
+ # 查找 tars_cli 包安装路径并复制到全局 skill 目录
311
+ SKILL_SRC="$(python -c 'import tars_cli, pathlib; print(pathlib.Path(tars_cli.__file__).parent / "skills" / "tars-cli")')"
312
+ SKILL_DST="$HOME/.claude/skills/tars-cli"
313
+ mkdir -p "$SKILL_DST/references"
314
+ cp "$SKILL_SRC/SKILL.md" "$SKILL_DST/"
315
+ cp "$SKILL_SRC/references/auth.md" "$SKILL_DST/references/"
316
+ cp "$SKILL_SRC/references/workflows.md" "$SKILL_DST/references/"
317
+ echo "✓ tars-cli skill 已安装到 $SKILL_DST"
318
+ ```
319
+
320
+ 部署后的目录结构:
321
+
322
+ ```
323
+ ~/.claude/
324
+ └── skills/
325
+ └── tars-cli/
326
+ ├── SKILL.md # Skill 主文件(命令映射 + 执行流程)
327
+ └── references/
328
+ ├── auth.md # 登录/登出流程
329
+ └── workflows.md # 完整评估工作流 + 错误处理
330
+ ```
331
+
332
+ 已有同名 skill 时直接覆盖即可更新。
333
+
334
+ ### 支持的自然语言指令
335
+
336
+ | 示例 | 实际执行的命令 |
337
+ |------|---------------|
338
+ | "登录 tars" | `tars auth login` |
339
+ | "导入插件 https://github.com/xxx/xxx.git" | `tars plugin import <git_url>` |
340
+ | "帮我评估 xxx 插件" | 完整评估流程(生成数据集 → 发布 → 运行评估 → 导出报告) |
341
+ | "生成数据集" | `tars dataset generate ...` |
342
+ | "查看评估状态" | `tars eval status ...` |
343
+ | "下载模板" | `tars template download ...` |
344
+ | "导出报告" | `tars plugin export-report ...` |
345
+
346
+ ### 前置条件
347
+
348
+ - 已安装 tars-cli:`pip install tars-cli`
349
+ - 已登录:`tars auth login -s <server_url>`
350
+ - Claude Code 版本 >= 1.0(支持 Skill 功能)
@@ -20,6 +20,9 @@ tars_cli/commands/dataset_cmd.py
20
20
  tars_cli/commands/eval_cmd.py
21
21
  tars_cli/commands/plugin_cmd.py
22
22
  tars_cli/commands/template_cmd.py
23
+ tars_cli/skills/tars-cli/SKILL.md
24
+ tars_cli/skills/tars-cli/references/auth.md
25
+ tars_cli/skills/tars-cli/references/workflows.md
23
26
  tars_cli/utils/__init__.py
24
27
  tars_cli/utils/polling.py
25
28
  tars_cli/utils/progress.py
@@ -1 +0,0 @@
1
- __version__ = "0.1.10"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes