huawei-cloud-vod-collector
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseVoD (Voice of Developer) Collector Skill
VoD(Voice of Developer)Collector Skill
Script execution: All scripts are located in. You must use<SKILL_DIR>/scripts/to execute them. Do not run them directly in a shell.skill action=exec= directory containing this SKILL.md.<SKILL_DIR>is relative to CWD (project working directory)..vod/
脚本执行:所有脚本位于目录下。您必须使用<SKILL_DIR>/scripts/来执行它们,请勿直接在shell中运行。skill action=exec指包含此SKILL.md的目录。<SKILL_DIR>是相对于CWD(项目工作目录)的路径。.vod/
Overview
概述
The VoD (Voice of Developer) Collector captures poor developer experiences and issues encountered while using Huawei Cloud tools or services. It prepares high-quality requirements or issue reports (GitCode issues) for product and engineering teams.
VoD(Voice of Developer)收集器用于捕捉开发者使用华为云工具或服务时遇到的不佳体验与问题,为产品和工程团队生成高质量的需求或问题报告(GitCode Issue)。
Core Commands
核心命令
Common CLI examples grouped by function (all scripts under ):
<SKILL_DIR>/scripts/- Capture
bash
python <SKILL_DIR>/scripts/md_io.py write-feedback --output .vod/feedbacks/
python <SKILL_DIR>/scripts/vod_sanitize.py file --path <file>-
Extract / Edit (useto update fields or edit feedback files directly)
write-feedback -
Deliver
bash
python <SKILL_DIR>/scripts/vod_deliver.py deliver --feedback-id <id> --feedbacks-dir .vod/feedbacks
python <SKILL_DIR>/scripts/vod_deliver.py update-status --feedback-id <id> --status delivered --feedbacks-dir .vod/feedbacks- Auto-login (only when returns
deliver)need_login
bash
bash <SKILL_DIR>/scripts/vod_install.sh
python <SKILL_DIR>/scripts/vod_deliver.py server-start
curl -s -X POST http://localhost:8080/login/start
python <SKILL_DIR>/scripts/vod_deliver.py login-wait --session-id <session_id>
python <SKILL_DIR>/scripts/vod_deliver.py server-stop --pid <pid>按功能分组的常见CLI示例(所有脚本均位于下):
<SKILL_DIR>/scripts/- 捕捉
bash
python <SKILL_DIR>/scripts/md_io.py write-feedback --output .vod/feedbacks/
python <SKILL_DIR>/scripts/vod_sanitize.py file --path <file>-
提取/编辑(使用更新字段,或直接编辑反馈文件)
write-feedback -
交付
bash
python <SKILL_DIR>/scripts/vod_deliver.py deliver --feedback-id <id> --feedbacks-dir .vod/feedbacks
python <SKILL_DIR>/scripts/vod_deliver.py update-status --feedback-id <id> --status delivered --feedbacks-dir .vod/feedbacks- 自动登录(仅在返回
deliver时使用)need_login
bash
bash <SKILL_DIR>/scripts/vod_install.sh
python <SKILL_DIR>/scripts/vod_deliver.py server-start
curl -s -X POST http://localhost:8080/login/start
python <SKILL_DIR>/scripts/vod_deliver.py login-wait --session-id <session_id>
python <SKILL_DIR>/scripts/vod_deliver.py server-stop --pid <pid>Parameters
参数配置
The following parameters can be configured by users or integrators:
- : Path for storing feedbacks, default is
--feedbacks-dir..vod/feedbacks/ - /
--atomgit-home: AtomGit-GO configuration directory, defaultATOMCODE_HOME.~/.atomcode - : Target repository URL — read only from
delivery.channels.gitcode.repo_url.assets/config.yaml.template - : In-session deduplication window in seconds.
capture.dedup_window_sec - : Maximum stored feedbacks per session (default 5).
storage.max_feedbacks_per_session - Logging/Debug: Optional flags inside scripts to enable additional logging or debug modes.
Before delivery or auto-login, ensure the is provided via and is not inferred from .
repo_urlassets/config.yaml.templategit remote用户或集成商可配置以下参数:
- :存储反馈的路径,默认值为
--feedbacks-dir。.vod/feedbacks/ - /
--atomgit-home:AtomGit-GO配置目录,默认值为ATOMCODE_HOME。~/.atomcode - :目标仓库URL — 仅从
delivery.channels.gitcode.repo_url读取。assets/config.yaml.template - :会话内去重窗口时长(秒)。
capture.dedup_window_sec - :每个会话可存储的最大反馈数量(默认值为5)。
storage.max_feedbacks_per_session - 日志/调试:脚本内的可选标志,用于启用额外日志或调试模式。
在交付或自动登录前,请确保通过提供,且不要从推断该值。
assets/config.yaml.templaterepo_urlgit remoteReferences
参考文档
See additional implementation details and integration guides in the repository:
- references/hooks-setup.md
- references/openclaw-integration.md
- assets/VOD_FEEDBACKS.md
- assets/VOD_ISSUE.md
- references/VOD_ISSUE.md
- references/acceptance-criteria.md
请查看仓库中的额外实现细节与集成指南:
- references/hooks-setup.md
- references/openclaw-integration.md
- assets/VOD_FEEDBACKS.md
- assets/VOD_ISSUE.md
- references/VOD_ISSUE.md
- references/acceptance-criteria.md
Prerequisites
前置条件
Python dependencies
Python依赖
Install required Python packages before running any scripts:
bash
pip install -r <SKILL_DIR>/requirements.txt运行任何脚本前,请安装所需的Python包:
bash
pip install -r <SKILL_DIR>/requirements.txtWorkflow
工作流程
Phase 1: Capture
阶段1:捕捉
Triggered by hooks (tool errors, user rejection, proactive reports). Generates raw feedback.
由钩子触发(工具错误、用户拒绝、主动报告),生成原始反馈。
1.1 Generate Raw Feedback
1.1 生成原始反馈
- Write the feedback file — (see
python <SKILL_DIR>/scripts/md_io.py write-feedback --output .vod/feedbacks/for all params)--help - Sanitize — secrets are redacted automatically by . To manually sanitize an existing file:
write-feedbackpython <SKILL_DIR>/scripts/vod_sanitize.py file --path <file>
- 写入反馈文件 — (查看
python <SKILL_DIR>/scripts/md_io.py write-feedback --output .vod/feedbacks/获取所有参数)--help - 清理敏感信息 — 会自动屏蔽敏感信息。如需手动清理现有文件:
write-feedbackpython <SKILL_DIR>/scripts/vod_sanitize.py file --path <file>
1.2 Deduplication
1.2 去重
- In-session (during write): Same within
session_id + command + error_type→ incrementcapture.dedup_window_secinstead of writing a new file.recurrence_count - Cross-session (before Phase 3 delivery): Scan 10 recent feedbacks via LLM for duplicates.
- 会话内去重(写入时):同一在
session_id + command + error_type时长内重复出现 → 增加capture.dedup_window_sec而非创建新文件。recurrence_count - 跨会话去重(阶段3交付前):通过LLM扫描最近10条反馈以识别重复项。
Phase 2: Extract
阶段2:提取
Enrich feedback with context using LLM, then write all fields directly into the feedback file.
Each field maps to a specific section in the markdown file:
- — Extract traceback/exit code from error context →
error_stack## Error Information → error_stack - — What the user wanted to do (e.g. "create OBS bucket"), NOT how →
user_intent## Context → user_intent - — Reconstruct what the user was doing →
scenario## User Report → scenario - — What the user expected. From dialog if explicit, otherwise infer from error →
expected_behavior## User Report → expected_behavior - — Priority: annotation > agent_action > error_message → Title prefix
product_name【Product】 - — Platform, OS, session ID, Python version →
environment## Context → environment - — 3-5 key turns around the problem point, preserve original language →
dialog_context## Context → dialog_context
Use again to update fields, or edit the markdown file directly.
write-feedback使用LLM为反馈补充上下文,然后将所有字段直接写入反馈文件。
每个字段对应markdown文件中的特定章节:
- — 从错误上下文中提取回溯信息/退出码 →
error_stack## 错误信息 → error_stack - — 用户想要完成的操作(例如"创建OBS存储桶"),而非操作方式 →
user_intent## 上下文 → user_intent - — 还原用户当时的操作场景 →
scenario## 用户报告 → scenario - — 用户预期的结果。若对话中有明确说明则直接使用,否则从错误信息推断 →
expected_behavior## 用户报告 → expected_behavior - — 优先级:注解 > agent_action > 错误信息 → 标题前缀
product_name【产品】 - — 平台、操作系统、会话ID、Python版本 →
environment## 上下文 → environment - — 问题点前后3-5轮关键对话,保留原始语言 →
dialog_context## 上下文 → dialog_context
可再次使用更新字段,或直接编辑markdown文件。
write-feedbackPhase 3: Deliver
阶段3:交付
3.1 Sync to GitCode Issue
3.1 同步至GitCode Issue
⚠️comes only fromrepo_url→assets/config.yaml.template. Never usedelivery.channels.gitcode.repo_url, never ask the user.git remote
Single delivery — submit one feedback as a GitCode Issue:
bash
python <SKILL_DIR>/scripts/vod_deliver.py deliver \
--feedback-id <id> \
--feedbacks-dir .vod/feedbacksUpdate status — mark a feedback as delivered (or other status):
bash
python <SKILL_DIR>/scripts/vod_deliver.py update-status \
--feedback-id <id> --status delivered --feedbacks-dir .vod/feedbacksAuto-login — when returns , perform the following:
deliver"need_login": trueCRITICAL: Before installation, MUST tell the user:
- This login uses the open-source project AtomGit-GO (MIT license).
- Source: https://gitcode.com/weixin_45218422/AtomGit-GO
-
Check & install: Execute(Linux/macOS) or
bash <SKILL_DIR>/scripts/vod_install.sh(Windows).powershell <SKILL_DIR>/scripts/vod_install.ps1 -
Start server:→ get
python <SKILL_DIR>/scripts/vod_deliver.py server-startfrom JSON outputpid -
Initiate QR login:→ get
curl -s -X POST http://localhost:8080/login/start,login_url,qr_codefrom JSONsession_id -
Show QR to user: Display theand ASCII
login_url. Say: "🔐 First-time login requires AtomGit authorization. Scan the QR code or open the URL in your browser."qr_code -
Wait for authorization:— blocks until scanned (up to 60s). Do NOT ask the user whether they scanned; just wait.
python <SKILL_DIR>/scripts/vod_deliver.py login-wait --session-id <session_id> -
On, proceed to step 7.
SCAN_SUCCESSCRITICAL: After successful authorization, MUST output the Security Notice:- Security Notice: After authorization, the access token will be saved to (owner-readable only, mode 0600). Anyone with file access can impersonate you — do not share this file.
~/.atomcode/auth.toml - Note: Stored only in the local AI Shell environment. It will not be uploaded to any external server.
- Deletion: Manually delete the file, or it will be cleaned up when the environment resources are reclaimed.
- Security Notice: After authorization, the access token will be saved to
-
Stop server:
python <SKILL_DIR>/scripts/vod_deliver.py server-stop --pid <pid> -
Re-run the originalcommand.
deliver
⚠️仅来自repo_url中的assets/config.yaml.template。请勿使用delivery.channels.gitcode.repo_url获取,也不要询问用户。git remote
单次交付 — 将一条反馈提交为GitCode Issue:
bash
python <SKILL_DIR>/scripts/vod_deliver.py deliver \
--feedback-id <id> \
--feedbacks-dir .vod/feedbacks更新状态 — 将反馈标记为已交付(或其他状态):
bash
python <SKILL_DIR>/scripts/vod_deliver.py update-status \
--feedback-id <id> --status delivered --feedbacks-dir .vod/feedbacks自动登录 — 当返回时,执行以下步骤:
deliver"need_login": true重要提示:安装前必须告知用户:
- 此登录使用开源项目AtomGit-GO(MIT许可证)。
- 源码地址:https://gitcode.com/weixin_45218422/AtomGit-GO
-
检查并安装:执行(Linux/macOS)或
bash <SKILL_DIR>/scripts/vod_install.sh(Windows)。powershell <SKILL_DIR>/scripts/vod_install.ps1 -
启动服务:→ 从JSON输出中获取
python <SKILL_DIR>/scripts/vod_deliver.py server-startpid -
初始化二维码登录:→ 从JSON输出中获取
curl -s -X POST http://localhost:8080/login/start、login_url、qr_codesession_id -
向用户展示二维码:显示和ASCII格式的
login_url,并告知:"🔐首次登录需要AtomGit授权,请扫描二维码或在浏览器中打开该URL。"qr_code -
等待授权:— 阻塞等待扫描(最长60秒)。请勿询问用户是否已扫描,只需等待。
python <SKILL_DIR>/scripts/vod_deliver.py login-wait --session-id <session_id> -
收到后,进入步骤7。
SCAN_SUCCESS重要提示:授权成功后必须输出安全通知:- 安全通知:授权后,访问令牌将被保存至(仅所有者可读,权限为0600)。任何拥有该文件访问权限的人都可以冒充您的身份 — 请勿共享此文件。
~/.atomcode/auth.toml - 说明:令牌仅存储在本地AI Shell环境中,不会上传至任何外部服务器。
- 删除方式:手动删除该文件,或在环境资源被回收时自动清理。
- 安全通知:授权后,访问令牌将被保存至
-
停止服务:
python <SKILL_DIR>/scripts/vod_deliver.py server-stop --pid <pid> -
重新运行原始的命令。
deliver
Behavioral Constraints
行为约束
- Cancel: Clean up current file only. Never delete or other records.
.vod/ - Decline: Skip silently, do not suppress future triggers.
- Validation: Only product/service issues. No empty/minimal content ("test", "hello").
- Session limit: Max (default 5). Exceeded → inform user.
storage.max_feedbacks_per_session - Updates: In-place only. ID immutable. State machine: or
open → promoted → resolved.open → discarded - Auto-init: created on first use. Never overwritten.
.vod/
- 取消操作:仅清理当前文件。禁止删除或其他记录。
.vod/ - 拒绝请求:静默跳过,不抑制未来的触发。
- 内容验证:仅处理产品/服务相关问题。拒绝空内容或极简内容(如"test"、"hello")。
- 会话限制:最多存储条反馈(默认值为5)。超出时需告知用户。
storage.max_feedbacks_per_session - 更新规则:仅允许原地更新。ID不可修改。状态流转:或
open → promoted → resolved。open → discarded - 自动初始化:首次使用时创建目录。禁止覆盖现有目录。
.vod/
Storage
存储说明
- Path:
<CWD>/.vod/feedbacks/ - Format:
VOD-YYYYMMDD-NNNN.md
- 路径:
<CWD>/.vod/feedbacks/ - 格式:
VOD-YYYYMMDD-NNNN.md
CLI Reference
CLI参考
| Parameter | Description |
|---|---|
| AtomGit-GO config dir (default: |
| Feedback ID to deliver/update |
| Path to |
| 参数 | 描述 |
|---|---|
| AtomGit-GO配置目录(默认值: |
| 需交付/更新的反馈ID |
| |
Token Configuration
令牌配置
- Token from open-source AtomGit-GO, saved in plaintext to (mode
~/.atomcode/auth.toml)0600 - Override:
--atomgit-home <path> - Missing/expired → script returns → follow Phase 3.1 auto-login
"need_login": true - Never write token to any file outside
~/.atomcode/auth.toml
- 令牌来自开源项目AtomGit-GO,以明文形式保存至(权限为
~/.atomcode/auth.toml)0600 - 覆盖方式:使用参数
--atomgit-home <path> - 令牌缺失/过期 → 脚本返回→ 执行阶段3.1的自动登录流程
"need_login": true - 禁止将令牌写入以外的任何文件
~/.atomcode/auth.toml