@comate/zulu 1.2.1-beta.2 → 1.3.0
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/comate-engine/assets/skills/auto-commit-comate/SKILL.md +260 -0
- package/comate-engine/assets/skills/auto-commit-comate/references/data_structures.md +189 -0
- package/comate-engine/assets/skills/auto-commit-comate/references/new_version_instruction.md +209 -0
- package/comate-engine/assets/skills/auto-commit-comate/references/old_version_instruction.md +208 -0
- package/comate-engine/assets/skills/auto-commit-comate/scripts/git_diff_cli.py +196 -0
- package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/git_utils.py +20 -10
- package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/client.py +69 -40
- package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/farseer.py +8 -9
- package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/matching.py +65 -9
- package/comate-engine/assets/skills/auto-commit-comate/scripts/match_card_cli.py +37 -0
- package/comate-engine/assets/skills/cnap-comate/SKILL.md +157 -0
- package/comate-engine/assets/skills/cnap-comate/references/cases.md +198 -0
- package/comate-engine/assets/skills/cnap-comate/references/deploy-troubleshoot.md +15 -0
- package/comate-engine/assets/skills/cnap-comate/references/install.md +43 -0
- package/comate-engine/assets/skills/cnap-comate/references/kubectl.md +55 -0
- package/comate-engine/assets/skills/cnap-comate/references/login.md +125 -0
- package/comate-engine/assets/skills/cnap-comate/references/oncall.md +24 -0
- package/comate-engine/assets/skills/cnap-comate/scripts/install_cnap_cli.sh +36 -0
- package/comate-engine/assets/skills/code-security/SKILL.md +176 -0
- package/comate-engine/assets/skills/code-security/references/credential_hosting.md +102 -0
- package/comate-engine/assets/skills/code-security/references/vul_repair_sensitive.md +219 -0
- package/comate-engine/assets/skills/code-security/scripts/build_repair_info.py +0 -0
- package/comate-engine/assets/skills/code-security/scripts/credential_hosting.py +99 -0
- package/comate-engine/assets/skills/code-security/scripts/credential_poll.py +350 -0
- package/comate-engine/assets/skills/code-security/scripts/http_client.py +173 -0
- package/comate-engine/assets/skills/code-security/scripts/parse_scan_result.py +301 -0
- package/comate-engine/assets/skills/code-security/scripts/repair_vulnerability.py +261 -0
- package/comate-engine/assets/skills/code-security/scripts/report_chat.py +198 -0
- package/comate-engine/assets/skills/code-security/scripts/scan_vulnerability.py +316 -0
- package/comate-engine/assets/skills/code-security-comate/SKILL.md +219 -0
- package/comate-engine/assets/skills/code-security-comate/references/credential_hosting.md +102 -0
- package/comate-engine/assets/skills/code-security-comate/references/vul_repair-go_sql_injection.md +399 -0
- package/comate-engine/assets/skills/code-security-comate/references/vul_repair-java_sql_injection.md +591 -0
- package/comate-engine/assets/skills/code-security-comate/references/vul_repair-php_sql_injection.md +318 -0
- package/comate-engine/assets/skills/code-security-comate/references/vul_repair-python_sql_injection.md +198 -0
- package/comate-engine/assets/skills/code-security-comate/references/vul_repair_sensitive.md +219 -0
- package/comate-engine/assets/skills/code-security-comate/scripts/credential_hosting.py +87 -0
- package/comate-engine/assets/skills/code-security-comate/scripts/credential_poll.py +345 -0
- package/comate-engine/assets/skills/code-security-comate/scripts/http_client.py +173 -0
- package/comate-engine/assets/skills/code-security-comate/scripts/parse_scan_result.py +392 -0
- package/comate-engine/assets/skills/code-security-comate/scripts/repair_vulnerability.py +245 -0
- package/comate-engine/assets/skills/code-security-comate/scripts/report_chat.py +145 -0
- package/comate-engine/assets/skills/code-security-comate/scripts/scan_vulnerability.py +444 -0
- package/comate-engine/assets/skills/code-security-comate/scripts/utils.py +153 -0
- package/comate-engine/assets/skills/comate-docs-comate/SKILL.md +148 -0
- package/comate-engine/assets/skills/comate-docs-comate/references/doc-map-extended.md +78 -0
- package/comate-engine/assets/skills/comate-docs-comate/references/models-and-billing.md +51 -0
- package/comate-engine/assets/skills/comate-docs-comate/references/product-overview.md +73 -0
- package/comate-engine/assets/skills/comate-docs-comate/references/query_content.md +83 -0
- package/comate-engine/assets/skills/comate-docs-comate/references/query_repo.md +57 -0
- package/comate-engine/assets/skills/comate-docs-comate/scripts/ku_operator.py +1575 -0
- package/comate-engine/assets/skills/create-image-comate/SKILL.md +278 -0
- package/comate-engine/assets/skills/create-skill-comate/SKILL.md +308 -217
- package/comate-engine/assets/skills/create-skill-comate/agents/analyzer.md +274 -0
- package/comate-engine/assets/skills/create-skill-comate/agents/comparator.md +202 -0
- package/comate-engine/assets/skills/create-skill-comate/agents/grader.md +223 -0
- package/comate-engine/assets/skills/create-skill-comate/assets/eval_review.html +146 -0
- package/comate-engine/assets/skills/create-skill-comate/eval-viewer/generate_review.py +489 -0
- package/comate-engine/assets/skills/create-skill-comate/eval-viewer/viewer.html +1325 -0
- package/comate-engine/assets/skills/create-skill-comate/references/schemas.md +430 -0
- package/comate-engine/assets/skills/create-skill-comate/scripts/__init__.py +0 -0
- package/comate-engine/assets/skills/create-skill-comate/scripts/__pycache__/__init__.cpython-311.pyc +0 -0
- package/comate-engine/assets/skills/create-skill-comate/scripts/__pycache__/aggregate_benchmark.cpython-311.pyc +0 -0
- package/comate-engine/assets/skills/create-skill-comate/scripts/aggregate_benchmark.py +412 -0
- package/comate-engine/assets/skills/create-skill-comate/scripts/generate_report.py +334 -0
- package/comate-engine/assets/skills/create-skill-comate/scripts/package_skill.py +140 -0
- package/comate-engine/assets/skills/create-skill-comate/scripts/utils.py +53 -0
- package/comate-engine/assets/skills/find-skills-comate/SKILL.md +15 -12
- package/comate-engine/assets/skills/find-skills-comate/scripts/fetch_skills.py +32 -3
- package/comate-engine/assets/skills/get-ugate-token-comate/SKILL.md +159 -0
- package/comate-engine/assets/skills/get-ugate-token-comate/getUgateToken.py +150 -0
- package/comate-engine/assets/skills/icafe-comate/SKILL.md +240 -0
- package/comate-engine/assets/skills/icafe-comate/references/ai-workflows.md +233 -0
- package/comate-engine/assets/skills/icafe-comate/references/commands.md +1147 -0
- package/comate-engine/assets/skills/icafe-comate/references/error-handling.md +164 -0
- package/comate-engine/assets/skills/icafe-comate/references/git-auto-bindcard-workflow.md +201 -0
- package/comate-engine/assets/skills/icafe-comate/references/git-bindcard-workflow.md +327 -0
- package/comate-engine/assets/skills/icafe-comate/references/iql-syntax.md +327 -0
- package/comate-engine/assets/skills/icafe-comate/references/platform-concepts.md +317 -0
- package/comate-engine/assets/skills/icafe-comate/references/smart-create-workflow.md +171 -0
- package/comate-engine/assets/skills/icafe-comate/references/smart-find-workflow.md +127 -0
- package/comate-engine/assets/skills/icafe-comate/references/smart-update-workflow.md +118 -0
- package/comate-engine/assets/skills/icode-comate/SKILL.md +366 -0
- package/comate-engine/assets/skills/icode-comate/references/api/add_reviewers.md +44 -0
- package/comate-engine/assets/skills/icode-comate/references/api/build_fetch_command.md +89 -0
- package/comate-engine/assets/skills/icode-comate/references/api/check_repo_permission.md +89 -0
- package/comate-engine/assets/skills/icode-comate/references/api/create_branch.md +79 -0
- package/comate-engine/assets/skills/icode-comate/references/api/create_draft_comment.md +109 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_ai_cr_result.md +190 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_ai_review.md +97 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_diff_content.md +92 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_diff_file.md +88 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_machine_check.md +73 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_my_reviews.md +115 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_person_commit.md +89 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_person_repo.md +63 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_repo_branch.md +62 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_repo_config.md +91 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_repo_members.md +118 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_repo_reviews.md +91 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_review_comments.md +87 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_review_info.md +81 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_submit_settings.md +105 -0
- package/comate-engine/assets/skills/icode-comate/references/api/icode-api.md +86 -0
- package/comate-engine/assets/skills/icode-comate/references/api/publish_comments.md +72 -0
- package/comate-engine/assets/skills/icode-comate/references/api/set_review_score.md +58 -0
- package/comate-engine/assets/skills/icode-comate/references/api/start_ai_review.md +77 -0
- package/comate-engine/assets/skills/icode-comate/references/api/submit_review.md +50 -0
- package/comate-engine/assets/skills/icode-comate/references/api/trigger_ai_cr.md +63 -0
- package/comate-engine/assets/skills/icode-comate/references/feature/add-reviewer.md +92 -0
- package/comate-engine/assets/skills/icode-comate/references/feature/fix-machine-check.md +144 -0
- package/comate-engine/assets/skills/icode-comate/references/feature/merge-cr.md +100 -0
- package/comate-engine/assets/skills/icode-comate/references/feature/ssh-setup.md +106 -0
- package/comate-engine/assets/skills/icode-comate/references/feature/submit-acr.md +135 -0
- package/comate-engine/assets/skills/icode-comate/references/feature/submit-cr.md +123 -0
- package/comate-engine/assets/skills/icode-comate/references/git/clone.md +67 -0
- package/comate-engine/assets/skills/icode-comate/references/git/icode-git.md +68 -0
- package/comate-engine/assets/skills/icode-comate/references/git/push.md +64 -0
- package/comate-engine/assets/skills/icode-comate/references/git/push_cr.md +103 -0
- package/comate-engine/assets/skills/icode-comate/references/install.md +144 -0
- package/comate-engine/assets/skills/icode-comate/references/login.md +111 -0
- package/comate-engine/assets/skills/icode-comate/scripts/add-reviewer.sh +154 -0
- package/comate-engine/assets/skills/icode-comate/scripts/common.sh +145 -0
- package/comate-engine/assets/skills/icode-comate/scripts/fix-machine-check.sh +131 -0
- package/comate-engine/assets/skills/icode-comate/scripts/merge-cr.sh +105 -0
- package/comate-engine/assets/skills/icode-comate/scripts/ssh-setup.sh +159 -0
- package/comate-engine/assets/skills/icode-comate/scripts/submit-acr.sh +236 -0
- package/comate-engine/assets/skills/icode-comate/scripts/submit-cr.sh +104 -0
- package/comate-engine/assets/skills/icode-comate/scripts/test-preflight.sh +89 -0
- package/comate-engine/assets/skills/ku-operator-comate/SKILL.md +121 -0
- package/comate-engine/assets/skills/ku-operator-comate/examples.md +190 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/add_member.md +49 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/change_scope.md +38 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/copy_doc.md +50 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/create_doc.md +61 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/delete_doc.md +31 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/edit_content.md +568 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/move_doc.md +45 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/query_comment.md +79 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/query_content.md +83 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/query_flowchart.md +84 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/query_permission.md +38 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/query_recent_view.md +67 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/query_repo.md +57 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/query_user_info.md +37 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/update_member.md +41 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/upload_attachment.md +52 -0
- package/comate-engine/assets/skills/ku-operator-comate/scripts/ku_operator.py +1575 -0
- package/comate-engine/node_modules/better-sqlite3/node_modules/.bin/prebuild-install +2 -2
- package/comate-engine/node_modules/tree-sitter-bash/node_modules/.bin/node-gyp-build +2 -2
- package/comate-engine/node_modules/tree-sitter-bash/node_modules/.bin/node-gyp-build-optional +2 -2
- package/comate-engine/node_modules/tree-sitter-bash/node_modules/.bin/node-gyp-build-test +2 -2
- package/comate-engine/package.json +2 -0
- package/comate-engine/server.js +263 -79
- package/dist/bundle/index.js +3 -3
- package/package.json +1 -1
- package/comate-engine/assets/skills/figma2code-comate/codeConnect.md +0 -37
- package/comate-engine/assets/skills/figma2code-comate/designToken.md +0 -3
- package/comate-engine/assets/skills/figma2code-comate/f2cMcp.md +0 -59
- package/comate-engine/assets/skills/smart-commit/SKILL.md +0 -646
- package/comate-engine/node_modules/@comate/plugin-host/dist/index-AZIho4HV.js +0 -1
- package/comate-engine/node_modules/@comate/plugin-host/dist/user-BIpzRUfb.js +0 -44
- /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/references/issue_type_mapping.json +0 -0
- /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/references/query_reference.md +0 -0
- /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/compat.py +0 -0
- /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/create_card_cli.py +0 -0
- /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/__init__.py +0 -0
- /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/logger.py +0 -0
- /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/recognize_card_cli.py +0 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: get-ugate-token
|
|
3
|
+
description: 获取并缓存 ugate token,供其他 skill 依赖使用进行API调用(多用户版本,永久有效)
|
|
4
|
+
metadata:
|
|
5
|
+
enableWhen:
|
|
6
|
+
- isInternal
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# get-ugate-token Skill
|
|
10
|
+
|
|
11
|
+
## 功能描述
|
|
12
|
+
该 skill 用于获取并缓存 ugate token,供其他 skill 依赖使用进行API调用。支持多用户独立缓存,每个用户有独立的缓存文件。
|
|
13
|
+
|
|
14
|
+
**核心特性:**
|
|
15
|
+
- 所有 token 都是永久有效的
|
|
16
|
+
- 支持用户手动输入 token
|
|
17
|
+
- 用户名: ${COMATE_USERNAME}
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
## 文件结构
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
get-ugate-token/
|
|
24
|
+
├── SKILL.md # 技能说明文档
|
|
25
|
+
└── getUgateToken.py # Python 主脚本
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## 工作流程
|
|
29
|
+
|
|
30
|
+
### 1. 手动输入 Token
|
|
31
|
+
|
|
32
|
+
**当用户发送格式为 `ugate token: xxxx` 或 `ugate token:xxxx`(中文冒号)的消息时:**
|
|
33
|
+
|
|
34
|
+
1. **提取 token** - 从用户消息中提取 token 内容
|
|
35
|
+
2. **保存到缓存** - 将 token 保存到用户的缓存文件
|
|
36
|
+
3. **返回成功消息** - 输出 `TOKEN_SAVED:Token 已保存`
|
|
37
|
+
|
|
38
|
+
**示例:**
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# 用户发送消息:ugate token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
|
|
42
|
+
USER_MESSAGE="ugate token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." python3 getUgateToken.py chenshouqin 2>&1
|
|
43
|
+
TOKEN_SAVED:Token 已保存
|
|
44
|
+
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 2. 检查缓存的 token
|
|
48
|
+
|
|
49
|
+
- 检查文件 `~/.config/uuap/.eac_ugate_token_{username}` 是否存在
|
|
50
|
+
- 如果文件存在,直接返回缓存的 token(永久有效)
|
|
51
|
+
|
|
52
|
+
### 3. 需要手动获取 token
|
|
53
|
+
|
|
54
|
+
如果缓存不存在:
|
|
55
|
+
|
|
56
|
+
1. **返回提示消息** - 输出到 stderr,格式为 `NEED_MANUAL_TOKEN:请点击 https://uuap.baidu.com/agent/token 获取token,然后复制内容发送给我`
|
|
57
|
+
2. **退出码为 2** - 表示需要手动获取 token(区别于错误退出码 1)
|
|
58
|
+
|
|
59
|
+
用户需要:
|
|
60
|
+
- 访问 https://uuap.baidu.com/agent/token
|
|
61
|
+
- 复制页面内容
|
|
62
|
+
- 将内容发送给技能调用者
|
|
63
|
+
|
|
64
|
+
## 使用方法
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# 获取 ugate token(需要传入用户名)
|
|
68
|
+
python3 /home/gem/.openclaw/skills/get-ugate-token/getUgateToken.py <username>
|
|
69
|
+
|
|
70
|
+
# 手动输入 token(通过 USER_MESSAGE 环境变量)
|
|
71
|
+
USER_MESSAGE="ugate token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." python3 /home/gem/.openclaw/skills/get-ugate-token/getUgateToken.py <username>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## 输出格式
|
|
75
|
+
|
|
76
|
+
### 成功场景(缓存有效)
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
$ python3 getUgateToken.py chenshouqin
|
|
80
|
+
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 手动输入 token 场景
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
$ USER_MESSAGE="ugate token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." python3 getUgateToken.py chenshouqin 2>&1
|
|
87
|
+
TOKEN_SAVED:Token 已保存
|
|
88
|
+
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 需要手动获取场景(缓存无效)
|
|
92
|
+
|
|
93
|
+
脚本会输出到 stderr 并以退出码 2 退出:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
$ python3 getUgateToken.py chenshouqin 2>&1
|
|
97
|
+
NEED_MANUAL_TOKEN:请点击 https://uuap.baidu.com/agent/token 获取token,然后复制内容发送给我
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## 强制刷新
|
|
101
|
+
|
|
102
|
+
当用户消息中包含以下关键词时,会忽略缓存:
|
|
103
|
+
|
|
104
|
+
- 重新生成ugate
|
|
105
|
+
- 刷新ugate
|
|
106
|
+
- 重新生成 ugate
|
|
107
|
+
- 刷新 ugate
|
|
108
|
+
- 强制刷新
|
|
109
|
+
- 重新获取
|
|
110
|
+
- 重新生成token
|
|
111
|
+
- 刷新token
|
|
112
|
+
- 重新生成 token
|
|
113
|
+
- 刷新 token
|
|
114
|
+
- 强制刷新token
|
|
115
|
+
- 忽略缓存
|
|
116
|
+
|
|
117
|
+
**使用方式:** 在调用脚本时设置环境变量 `USER_MESSAGE`,例如:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
USER_MESSAGE="刷新ugate" python3 /home/gem/.openclaw/skills/get-ugate-token/getUgateToken.py <username>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## 环境变量依赖
|
|
124
|
+
|
|
125
|
+
- `USER_MESSAGE` - 用户原始消息(可选,用于判断是否强制刷新或手动输入 token)
|
|
126
|
+
|
|
127
|
+
## 缓存机制
|
|
128
|
+
|
|
129
|
+
- **缓存文件:** `~/.config/uuap/.eac_ugate_token_{username}`(多用户独立缓存)
|
|
130
|
+
- **缓存格式:** JSON
|
|
131
|
+
```json
|
|
132
|
+
{
|
|
133
|
+
"token": "xxx",
|
|
134
|
+
"permanent": true
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
- **缓存时长:** 永久有效
|
|
138
|
+
|
|
139
|
+
## 多用户支持
|
|
140
|
+
|
|
141
|
+
每个用户有独立的缓存文件,文件名格式为 `.eac_ugate_token_{username}`,例如:
|
|
142
|
+
|
|
143
|
+
- 用户 `chenshouqin` → `~/.config/uuap/.eac_ugate_token_chenshouqin`
|
|
144
|
+
- 用户 `zhangjianxing` → `~/.config/uuap/.eac_ugate_token_zhangjianxing`
|
|
145
|
+
|
|
146
|
+
这样可以避免不同用户的 token 相互干扰。
|
|
147
|
+
|
|
148
|
+
## 退出码说明
|
|
149
|
+
|
|
150
|
+
- **0**: 成功,token 已返回
|
|
151
|
+
- **1**: 错误(参数缺失等)
|
|
152
|
+
- **2**: 需要手动获取 token(缓存无效,请提示用户访问 https://uuap.baidu.com/agent/token)
|
|
153
|
+
|
|
154
|
+
## 注意事项
|
|
155
|
+
|
|
156
|
+
- token 会缓存到本地文件中,避免重复获取
|
|
157
|
+
- 每个用户有独立的缓存文件,互不干扰
|
|
158
|
+
- 所有 token 都是永久有效的
|
|
159
|
+
- **手动输入 token 格式:** `ugate token: <token内容>` 或 `ugate token:<token内容>`(中文冒号)
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""
|
|
4
|
+
获取并缓存 ugate token(多用户版本,永久有效)
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import os
|
|
8
|
+
import sys
|
|
9
|
+
import json
|
|
10
|
+
import re
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
|
|
13
|
+
# 配置常量
|
|
14
|
+
CACHE_DIR = Path.home() / ".config" / "uuap"
|
|
15
|
+
|
|
16
|
+
# 强制刷新的关键词
|
|
17
|
+
FORCE_REFRESH_KEYWORDS = [
|
|
18
|
+
"重新生成ugate",
|
|
19
|
+
"刷新ugate",
|
|
20
|
+
"重新生成 ugate",
|
|
21
|
+
"刷新 ugate",
|
|
22
|
+
"强制刷新",
|
|
23
|
+
"重新获取",
|
|
24
|
+
"重新生成token",
|
|
25
|
+
"刷新token",
|
|
26
|
+
"重新生成 token",
|
|
27
|
+
"刷新 token",
|
|
28
|
+
"强制刷新token",
|
|
29
|
+
"忽略缓存",
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def get_cache_file(username):
|
|
34
|
+
"""根据用户名获取对应的缓存文件路径"""
|
|
35
|
+
return CACHE_DIR / f".eac_ugate_token_{username}"
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def should_force_refresh(user_message):
|
|
39
|
+
"""检查用户消息是否包含强制刷新的关键词"""
|
|
40
|
+
if not user_message:
|
|
41
|
+
return False
|
|
42
|
+
|
|
43
|
+
user_message_lower = user_message.lower()
|
|
44
|
+
return any(keyword in user_message_lower for keyword in FORCE_REFRESH_KEYWORDS)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def extract_manual_token(user_message):
|
|
48
|
+
"""
|
|
49
|
+
从用户消息中提取手动输入的 token
|
|
50
|
+
支持格式:ugate token: xxxx 或 ugate token:xxxx(中文冒号)
|
|
51
|
+
|
|
52
|
+
Returns:
|
|
53
|
+
str: 提取到的 token,如果格式不匹配则返回 None
|
|
54
|
+
"""
|
|
55
|
+
if not user_message:
|
|
56
|
+
return None
|
|
57
|
+
|
|
58
|
+
# 支持中英文冒号,支持大小写
|
|
59
|
+
pattern = r'ugate\s+token\s*[::]\s*(\S.+)'
|
|
60
|
+
match = re.search(pattern, user_message, re.IGNORECASE)
|
|
61
|
+
|
|
62
|
+
if match:
|
|
63
|
+
return match.group(1).strip()
|
|
64
|
+
|
|
65
|
+
return None
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def get_cached_token(username):
|
|
69
|
+
"""
|
|
70
|
+
从缓存读取 token
|
|
71
|
+
|
|
72
|
+
如果缓存文件中存在 expires_at 字段,则认为 token 无效,返回 None
|
|
73
|
+
"""
|
|
74
|
+
cache_file = get_cache_file(username)
|
|
75
|
+
|
|
76
|
+
if not cache_file.exists():
|
|
77
|
+
return None
|
|
78
|
+
|
|
79
|
+
try:
|
|
80
|
+
with open(cache_file, 'r') as f:
|
|
81
|
+
data = json.load(f)
|
|
82
|
+
|
|
83
|
+
# 如果存在 expires_at 字段,认为 token 无效
|
|
84
|
+
if 'expires_at' in data:
|
|
85
|
+
return None
|
|
86
|
+
|
|
87
|
+
token = data.get('token')
|
|
88
|
+
if not token:
|
|
89
|
+
return None
|
|
90
|
+
|
|
91
|
+
return token
|
|
92
|
+
except (json.JSONDecodeError, KeyError):
|
|
93
|
+
pass
|
|
94
|
+
|
|
95
|
+
return None
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def save_token_to_cache(token, username):
|
|
99
|
+
"""
|
|
100
|
+
将 token 保存到缓存(永久有效)
|
|
101
|
+
"""
|
|
102
|
+
CACHE_DIR.mkdir(parents=True, exist_ok=True)
|
|
103
|
+
cache_file = get_cache_file(username)
|
|
104
|
+
|
|
105
|
+
with open(cache_file, 'w') as f:
|
|
106
|
+
cache_data = {
|
|
107
|
+
'token': token,
|
|
108
|
+
'permanent': True, # 所有 token 都是永久有效
|
|
109
|
+
}
|
|
110
|
+
json.dump(cache_data, f)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def main():
|
|
114
|
+
"""主函数"""
|
|
115
|
+
# 从命令行参数获取用户名
|
|
116
|
+
if len(sys.argv) < 2:
|
|
117
|
+
print("请输入您的邮箱前缀(例如:chenshouqin)", file=sys.stderr)
|
|
118
|
+
sys.exit(1)
|
|
119
|
+
|
|
120
|
+
username = sys.argv[1]
|
|
121
|
+
|
|
122
|
+
# 获取用户消息(用于判断是否强制刷新或手动输入 token)
|
|
123
|
+
user_message = os.environ.get('USER_MESSAGE', '')
|
|
124
|
+
|
|
125
|
+
# 1. 检查用户是否手动输入了 token(格式:ugate token: xxxx)
|
|
126
|
+
manual_token = extract_manual_token(user_message)
|
|
127
|
+
if manual_token:
|
|
128
|
+
# 保存到缓存(永久有效)
|
|
129
|
+
save_token_to_cache(manual_token, username)
|
|
130
|
+
print(f"TOKEN_SAVED:Token 已保存", file=sys.stderr)
|
|
131
|
+
print(manual_token)
|
|
132
|
+
return
|
|
133
|
+
|
|
134
|
+
# 2. 检查是否需要强制刷新
|
|
135
|
+
force_refresh = should_force_refresh(user_message)
|
|
136
|
+
|
|
137
|
+
# 3. 尝试从缓存获取(除非强制刷新)
|
|
138
|
+
if not force_refresh:
|
|
139
|
+
cached_token = get_cached_token(username)
|
|
140
|
+
if cached_token:
|
|
141
|
+
print(cached_token)
|
|
142
|
+
return
|
|
143
|
+
|
|
144
|
+
# 4. 缓存不存在或强制刷新,提示用户手动获取 token
|
|
145
|
+
print(f"NEED_MANUAL_TOKEN:请点击 https://uuap.baidu.com/agent/token 获取token,然后复制内容发送给我", file=sys.stderr)
|
|
146
|
+
sys.exit(2)
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
if __name__ == "__main__":
|
|
150
|
+
main()
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: icafe
|
|
3
|
+
description: |
|
|
4
|
+
当用户涉及以下任何场景时,应使用此技能:
|
|
5
|
+
- 查询、创建、更新 iCafe 卡片 (Card/Issue),包括 Story、Bug、Task、Epic
|
|
6
|
+
- 管理卡片评论 (Comment),如新建评论、获取评论
|
|
7
|
+
- 查询卡片的流程状态 (Status)、操作历史和状态变更记录
|
|
8
|
+
- 查询空间 (Space) 信息、卡片类型、字段定义
|
|
9
|
+
- 管理迭代计划 (Plan)、里程碑 (Milestone)
|
|
10
|
+
- 查询研发数据链 (DevInfo): 代码评审、代码合入、部署等
|
|
11
|
+
- 使用 IQL 查询语言按条件筛选卡片
|
|
12
|
+
- 在 iCode (Git/Gerrit) 提交代码时需要绑定 iCafe 卡片
|
|
13
|
+
- 发起代码评审 (CR) 需要关联卡片信息
|
|
14
|
+
- 使用 AI 对卡片内容进行预审 (ai-pre-review)
|
|
15
|
+
- 使用 AI 根据卡片内容自动生成代码 (ai-codegen)
|
|
16
|
+
metadata:
|
|
17
|
+
cli_version: "0.1.0"
|
|
18
|
+
enableWhen:
|
|
19
|
+
- isInternal
|
|
20
|
+
allowed-tools:
|
|
21
|
+
- Bash(*icafe-cli *)
|
|
22
|
+
- Bash(*/.icafe-cli/bin/icafe-cli *)
|
|
23
|
+
- Bash(ICAFE_CLI_VERSION=* bash -c *)
|
|
24
|
+
- Bash(git log *)
|
|
25
|
+
- Bash(git rev-parse *)
|
|
26
|
+
- Bash(git remote *)
|
|
27
|
+
- Bash(git diff *)
|
|
28
|
+
- Bash(git status *)
|
|
29
|
+
- Bash(git branch *)
|
|
30
|
+
- Read(*icafe-official*)
|
|
31
|
+
- Read(*icafe-official/**)
|
|
32
|
+
- Read(*icafe-official/**/*)
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
# iCafe CLI
|
|
36
|
+
|
|
37
|
+
iCafe Assistant 通过 `icafe-cli` 命令行工具与 iCafe 平台交互,支持卡片管理、计划管理、研发数据查询和 AI 预审/代码生成。
|
|
38
|
+
|
|
39
|
+
## 安装与认证
|
|
40
|
+
|
|
41
|
+
### 首次执行前检查(每次会话仅需一次)
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
icafe-cli version
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
- **command not found** → 尝试 `~/.icafe-cli/bin/icafe-cli version`,仍失败则安装:
|
|
48
|
+
```bash
|
|
49
|
+
curl -fsSL https://issue-luigi-public.bj.bcebos.com/icafe-cli/install_icafe_cli.sh | ICAFE_CLI_VERSION=0.1.0 bash
|
|
50
|
+
```
|
|
51
|
+
- **版本低于 `0.1.0`** → 执行上面安装命令覆盖升级
|
|
52
|
+
- **版本正常** → 后续直接使用
|
|
53
|
+
- **当前用户名**: ${COMATE_USERNAME},即`COMATE_USERNAME=${COMATE_USERNAME}`
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
### 未登录错误 (auth_failed, exit code 1)
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
icafe-cli login --token <ugate-token> # Token 获取: https://uuap.baidu.com/agent/token
|
|
60
|
+
icafe-cli login status # 查看登录状态
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## 核心约束
|
|
64
|
+
|
|
65
|
+
1. **涉及 Git/iCode/CR/Gerrit 时禁止问用户**: 当用户涉及 git commit、代码提交、发起评审 (CR)、iCode、Gerrit 等场景需要绑定卡片时,**必须全自动决策,禁止让用户选空间、选卡片、选类型**。**必须先调 `card smart-find` 搜索已有卡片,禁止跳过直接建卡**。详见 [零交互版 Git 绑定工作流](references/git-auto-bindcard-workflow.md)
|
|
66
|
+
2. **space 不要猜**: 其他场景缺少空间时优先 `card smart-find` 推断,或 `space latest` 获取,或询问用户
|
|
67
|
+
2. **space 用 prefixCode**: `--space myspace`(字符串),不是数字 ID
|
|
68
|
+
3. **detail 必须 HTML**: `--detail "<p>内容</p>"`,Markdown 需先转换(见下方对照表)
|
|
69
|
+
4. **字段名用中文**: `--fields "负责人=zhangsan,优先级=P1-High"`
|
|
70
|
+
5. **card get/query 始终用 --brief**: 仅 `card get` 和 `card query` 支持 `--brief`,节省 70-90% 上下文。`smart-find` 本身已是精简输出,不支持也不需要 `--brief`
|
|
71
|
+
6. **命令路径**: 如果 `icafe-cli` 报 command not found,改用完整路径 `~/.icafe-cli/bin/icafe-cli`(安装脚本的 PATH 配置仅在新终端生效)
|
|
72
|
+
|
|
73
|
+
## 命令总览
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
icafe-cli
|
|
77
|
+
├── card 卡片管理
|
|
78
|
+
│ ├── get 获取卡片详情 (--space, --sequence, --brief)
|
|
79
|
+
│ ├── create 创建卡片 (--space, --title, --type)
|
|
80
|
+
│ ├── update 更新卡片 (--space, --sequence, +可选字段)
|
|
81
|
+
│ ├── query 查询卡片 (--space, --iql, --brief)
|
|
82
|
+
│ ├── next-statuses 可流转的目标状态 (--space, --sequence)
|
|
83
|
+
│ ├── current-status 当前流程状态 (--space, --sequence)
|
|
84
|
+
│ ├── history 全量操作历史 (--space, --sequences)
|
|
85
|
+
│ └── status-changes 状态流转历史 (--space, --sequences)
|
|
86
|
+
├── comment 评论管理
|
|
87
|
+
│ ├── create 添加评论 (--space, --sequence, --content)
|
|
88
|
+
│ ├── get 获取评论 (--space, --sequence)
|
|
89
|
+
│ └── update 修改评论 (--space, --comment-id, --content)
|
|
90
|
+
├── space 空间管理
|
|
91
|
+
│ ├── latest 最近访问的空间
|
|
92
|
+
│ ├── tree 空间树 (--username, --permission)
|
|
93
|
+
│ ├── issue-types 卡片类型列表 (--space)
|
|
94
|
+
│ ├── type-fields 类型字段定义 (--space, --type)
|
|
95
|
+
│ ├── type-statuses 类型流程状态 (--space, --type)
|
|
96
|
+
├── plan 计划管理
|
|
97
|
+
│ ├── list / get / create / update-date / milestones
|
|
98
|
+
├── devinfo 研发数据链
|
|
99
|
+
│ ├── card 卡片研发数据 (--space, --sequences)
|
|
100
|
+
│ └── active-cards 有研发活动的卡片 (--space)
|
|
101
|
+
├── ai-pre-review 卡片预审 (AI)
|
|
102
|
+
│ ├── start 发起预审 (--space, --sequence; --rules 可选)
|
|
103
|
+
│ ├── result 查询结果 (--conversation-id 或 --space+--sequence)
|
|
104
|
+
│ └── rules 查询预审规则 (--space)
|
|
105
|
+
├── ai-codegen 代码生成 (AI)
|
|
106
|
+
│ ├── start 发起生成 (--space, --sequence; --repo, --branch 可选)
|
|
107
|
+
│ └── result 查询结果 (--conversation-id 或 --space+--sequence)
|
|
108
|
+
├── login / logout / cache clean / completion / version
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
每个命令的完整参数、返回 JSON 结构和字段说明 → [命令详细参考](references/commands.md)
|
|
112
|
+
|
|
113
|
+
## 常用命令速查
|
|
114
|
+
|
|
115
|
+
### 智能寻卡(不确定空间/卡片时首选)
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
icafe-cli card smart-find # 返回活跃卡片 + stats.bySpace/bySpaceType 统计
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 查询卡片
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
icafe-cli card get --space myspace --sequence 1001 --brief
|
|
125
|
+
icafe-cli card query --space myspace --iql "负责人 = currentUser AND 流程状态 != 已关闭" --brief
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### 创建卡片
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
icafe-cli card create --space myspace --title "修复登录Bug" --type Bug
|
|
132
|
+
icafe-cli card create --space myspace --title "新功能" --type Story \
|
|
133
|
+
--detail "<p>描述</p>" --priority P1-High --assignee zhangsan
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
> 空间/类型不确定时 → 参考 [智能建卡工作流](references/smart-create-workflow.md)
|
|
137
|
+
|
|
138
|
+
### 更新卡片
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
icafe-cli card update --space myspace --sequence 1001 --status 开发中
|
|
142
|
+
icafe-cli card update --space myspace --sequence 1001 --assignee zhangsan --priority P1-High
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
> 改状态前先 `card next-statuses` 确认可达状态。完整流程 → [智能改卡工作流](references/smart-update-workflow.md)
|
|
146
|
+
|
|
147
|
+
### AI 预审 & 代码生成
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# 预审
|
|
151
|
+
icafe-cli ai-pre-review start --space myspace --sequence 1001
|
|
152
|
+
icafe-cli ai-pre-review result --space myspace --sequence 1001
|
|
153
|
+
|
|
154
|
+
# 代码生成 (在 git 仓库目录下自动检测 repo)
|
|
155
|
+
icafe-cli ai-codegen start --space myspace --sequence 1001
|
|
156
|
+
icafe-cli ai-codegen result --space myspace --sequence 1001
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
> 完整的异步轮询流程 → [AI 预审与代码生成工作流](references/ai-workflows.md)
|
|
160
|
+
|
|
161
|
+
### 空间与字段
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
icafe-cli space latest # 最近访问的空间
|
|
165
|
+
icafe-cli space issue-types --space myspace # 卡片类型列表
|
|
166
|
+
icafe-cli space type-fields --space myspace --type Story # 字段定义和可选值
|
|
167
|
+
icafe-cli space type-statuses --space myspace --type Story # 流程状态列表
|
|
168
|
+
icafe-cli ai-pre-review rules --space myspace # 预审规则
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## Markdown → HTML 对照表
|
|
172
|
+
|
|
173
|
+
| Markdown | HTML |
|
|
174
|
+
|----------|------|
|
|
175
|
+
| `**粗体**` | `<strong>粗体</strong>` |
|
|
176
|
+
| `*斜体*` | `<em>斜体</em>` |
|
|
177
|
+
| `# 标题` | `<h1>标题</h1>` |
|
|
178
|
+
| `- 列表` | `<ul><li>列表</li></ul>` |
|
|
179
|
+
| `1. 列表` | `<ol><li>列表</li></ol>` |
|
|
180
|
+
| `` `代码` `` | `<code>代码</code>` |
|
|
181
|
+
| `[链接](url)` | `<a href="url">链接</a>` |
|
|
182
|
+
| `换行` | `<br>` |
|
|
183
|
+
|
|
184
|
+
## IQL 速查
|
|
185
|
+
|
|
186
|
+
字段名用**中文**,详见 [IQL 语法参考](references/iql-syntax.md)。
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
负责人 = currentUser # 当前用户的卡片
|
|
190
|
+
类型 = Bug AND 优先级 = P1-High # 高优 Bug
|
|
191
|
+
标题 ~ 登录 # 标题含"登录"
|
|
192
|
+
流程状态 in (新建, 开发中) # 多状态
|
|
193
|
+
创建时间 > "2024-01-01" # 日期(不支持 >=)
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## 错误处理
|
|
197
|
+
|
|
198
|
+
- **退出码**: `0` 成功 / `1` 未登录 / `2` 参数校验 / `4` HTTP 错误
|
|
199
|
+
- **业务成功判断**: `card get/update/query` 检查 `code=200`,`ai-pre-review/ai-codegen` 检查 `status="OK"`,其他检查 `status=200`
|
|
200
|
+
- 详见 [错误处理参考](references/error-handling.md)
|
|
201
|
+
|
|
202
|
+
## 缓存
|
|
203
|
+
|
|
204
|
+
| 对象 | TTL |
|
|
205
|
+
|------|-----|
|
|
206
|
+
| space/plan 相关查询 | 20 分钟 |
|
|
207
|
+
| `card smart-find` 结果 | 10 分钟 |
|
|
208
|
+
| 最近访问空间列表 | 1 小时 |
|
|
209
|
+
| spaceId / issueId 映射 | 1 天 |
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
icafe-cli cache clean # 清除所有缓存
|
|
213
|
+
icafe-cli space latest --no-cache # 跳过缓存
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## 卡片 URL
|
|
217
|
+
|
|
218
|
+
```
|
|
219
|
+
https://console.cloud.baidu-int.com/devops/icafe/issue/{space}-{sequence}/show
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## 工作流参考
|
|
223
|
+
|
|
224
|
+
| 场景 | 参考文档 |
|
|
225
|
+
|------|---------|
|
|
226
|
+
| 不确定空间/卡片 → 智能定位 | [智能寻卡](references/smart-find-workflow.md) |
|
|
227
|
+
| 不确定空间/类型 → 智能创建 | [智能建卡](references/smart-create-workflow.md) |
|
|
228
|
+
| 修改字段/状态 → 安全更新 | [智能改卡](references/smart-update-workflow.md) |
|
|
229
|
+
| **Git 提交/评审 → 绑定卡片** | **默认使用 [零交互版](references/git-auto-bindcard-workflow.md)**(全自动决策,不问用户) |
|
|
230
|
+
| Git 绑定卡片(交互式) | [交互版](references/git-bindcard-workflow.md)(仅当用户明确要求"让我选卡片"时使用) |
|
|
231
|
+
| AI 预审 / 代码生成 | [AI 工作流](references/ai-workflows.md) |
|
|
232
|
+
|
|
233
|
+
## 参考资料
|
|
234
|
+
|
|
235
|
+
| 文件 | 内容 |
|
|
236
|
+
|------|------|
|
|
237
|
+
| [命令详细参考](references/commands.md) | 所有命令的参数表、返回 JSON、字段类型格式 |
|
|
238
|
+
| [错误处理](references/error-handling.md) | 退出码、错误码、诊断方法 |
|
|
239
|
+
| [IQL 语法](references/iql-syntax.md) | 查询语言完整语法 |
|
|
240
|
+
| [平台概念](references/platform-concepts.md) | 空间、卡片、状态、计划等核心概念 |
|