腾讯云harness最佳实践-skills

Polar Sponsor
爱发电 赞助
.NET 9.0

把一个已有 git 仓库装配成"TAPD 故事 → feature 分支 → PR → CNB AI 代码评审 → 合入 main → TAPD 故事自动回写 commit"的闭环工程挽具(harness)。适用于腾讯云 CNB(cnb.cool)+ TAPD 组合的团队。触发场景:(1) 用户要求把 git 仓库接入 CNB 和/或 TAPD;(2) 要求 commit/PR 自动关联 TAPD 故事;(3) 要求启用 CNB AI 代码评审(cnbcool/ai-review);(

Harness Skills

功能概述

Harness Skills是一项面向实际任务的技能,主要用于把 OpenAI "Harness Engineering" 七层模型里最关键的" 意图层 + 约束层 + 反馈层 "实装到一个真实 git 仓库,让团队用最短命令得到完整工作流:;受众 默认什么都没有 :没 TAPD API 账号、没 CNB PAT、没 CNB 组织;

核心要点

  • skill 的职责是引导和装配;
  • 快速决策树;
  • 用户说"把这个仓库接入 TAPD 和 C。

使用与执行

它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

Harness Skills

使命

把 OpenAI "Harness Engineering" 七层模型里最关键的"意图层 + 约束层 + 反馈层"实装到一个真实 git 仓库,让团队用最短命令得到完整工作流:

TAPD 故事 → start-feature 一键拉分支 → 写代码 → commit(强制关联 TAPD)
         → push feature 分支(阻止直推 main)→ CNB 建 PR
         → cnbcool/ai-review 自动在 PR 评论里评审
         → 人类批准 → 合入 main → TAPD 故事"代码"Tab 自动回写

受众默认什么都没有:没 TAPD API 账号、没 CNB PAT、没 CNB 组织。skill 的职责是引导和装配。

快速决策树

用户说"把这个仓库接入 TAPD 和 CNB" / "装一下 harness": → 走完整装配流程 § 完整装配

用户说"我只想把 commit 关联 TAPD 故事": → 最小装配(仅 commit-msg hook)§ 最小装配

用户说"从 TAPD 故事拉分支开始做": → scripts/start-feature.sh § 日常工作流

用户说"推送之后看不到 commit 在 TAPD 里": → 诊断章节 → 参考 references/troubleshooting.md

用户说"AI 代码评审能在 PR 里评论吗": → 确认 .cnb.yml 的 pull_request: 有 cnbcool/ai-review:latest stage

完整装配(最常用)

前置

必备工具:git, jq, curl, python3, bash。

需要用户获取的东西(skill 会引导但不能代做):

  1. TAPD workspace_id(项目 ID,10 位数字):在 TAPD 登录后任意项目页 URL 里找。
  2. TAPD API 账号:TAPD 公司管理 → API 账号管理,URL https://www.tapd.cn/<公司ID>/open_platform/config。创建时务必勾选目标 workspace 的授权,否则后续 403。
  3. CNB 个人访问令牌:https://cnb.cool → 个人设置 → 访问令牌 (Access Tokens)。scope 勾 repo。
  4. CNB 组织(group)path:用户在 CNB 至少要有一个 group(登录后左上角切换)。用户可能只有 cnb. 这种默认个人 group,最好建一个命名 group。

装配三步

🌟 推荐:交互式向导(零态用户首选)

SKILL=~/.workbuddy/skills/harness-skills        # 或通过 SkillHub 安装后的路径

# 一条命令进入向导,按提示一步步输入(会自动帮你打开 TAPD/CNB 获取凭据的页面)
bash $SKILL/scripts/install-harness.sh wizard /path/to/repo

向导会问你:

  1. TAPD 公司ID → workspace_id → API User/Password → alias
  2. CNB PAT → alias → 从你的 group 列表选一个 → CNB 仓库名
  3. 是否 mirror 本地仓库、是否装自动推 TAPD 钩子

任意一步卡住都会给出获取指引,不会让你"卡在不知道填什么"。

或者:手工三步(适合脚本化/CI 用)

# 1. 绑 TAPD 凭据(workspace_id 需要你从 TAPD 页面 URL 里找)
TAPD_API_USER=<你的 API 账号> 
TAPD_API_PASSWORD=<你的 API 密钥> 
  bash $SKILL/scripts/install-harness.sh connect-tapd  <你的 workspace_id>

# 2. 绑 CNB 凭据(PAT 从 cnb.cool 个人设置里生成)
CNB_TOKEN=<你的 CNB PAT> 
  bash $SKILL/scripts/install-harness.sh connect-cnb 

# 3. 装配到仓库
bash $SKILL/scripts/install-harness.sh setup /path/to/repo 
  --auto-init 
  --tapd-alias=<上面的 alias> --workspace-id=<你的 workspace_id> 
  --cnb-alias=<上面的 alias> --cnb-org=<你的 CNB 组织> --cnb-repo=<仓库名> 
  --mirror     # 可选:同时把本地全量 mirror push 到新 CNB 仓

装完后:

  • .codebuddy/connections.yml:记录 TAPD/CNB 绑定元数据(可 commit,无凭据)
  • .cnb.yml:包含 main: push: 构建流水线 + main: pull_request: AI review + 常规 CI
  • .tapd.yml:TAPD workspace 元数据,commit-msg hook 读它拼 URL
  • .gitmessage:commit 模板,提示写 --story= 格式
  • .github/PULL_REQUEST_TEMPLATE.md:TAPD 关联段(追加,不覆盖上游)
  • .git/hooks/commit-msg:校验 commit message 必须关联 TAPD 故事/缺陷/任务
  • .git/hooks/pre-push:protect-main 拒绝直推受保护分支;可选 auto-push 到 TAPD
  • .gitignore 追加 .codebuddy/secrets/ 和 .harness-bypass

日常工作流

A. 从 TAPD 故事开始做需求

bash $SKILL/scripts/start-feature.sh 

这个命令会:

  1. 调 TAPD API 查故事标题
  2. 标题 slug 化(小写/去特殊字符/限 40 字符)
  3. 新建分支 feature/<短ID>-
  4. (如果能联网到 TAPD)把 TAPD 官方"源码提交关键字"塞进剪贴板

B. commit 格式

推荐(TAPD 官方完整格式):

feat(scope): subject line ≤50 chars

说明改动原因。

--story=@tapd- --user= [标题] https://www.tapd.cn//s/

最简(也被 hook 接受):

--story=   或   --bug=   或   --task=

获取官方完整格式的方法:

  • TAPD 故事详情页右上角「复制源码提交关键字」
  • 或(若 AI agent 装了 mcp-server-tapd):调 get_commit_msg(workspace_id, options={object_id, type})
  • 或 bash $SKILL/scripts/tapd-commit-tag.sh

C. push + PR

git push cnb feature/-xxx     # protect-main hook 放行 feature/*
# CNB 返回: Create PR at https://cnb.cool///-/compare/main...feature/...

在 CNB 网页端创建 PR 后:

  • cnbcool/ai-review:latest 插件自动跑,在 PR 评论里发代码评审意见
  • 常规 CI(go test / bun lint 等)并行跑
  • 人类 reviewer 批准 → 合入 main
  • CNB → TAPD webhook(若 TAPD 项目 settings/devops 已启用云原生构建源码集成)自动在故事详情页「代码」Tab 添加 commit

D. commit 没出现在 TAPD?

两种原因,按顺序排查:

  1. CNB 和 TAPD 的集成没开:去 TAPD 项目 → 项目设置 → DevOps → 启用「云原生构建源码」→ 关联 CNB 仓库。这是最标准路径。
  2. 集成开了但不想依赖 Web webhook(例如私有化 / 离线审计):
    • 在 setup 时加 --with-auto-push,装本地 pre-push 钩子,push 时自动调 TAPD Open API POST /code_commit_infos 推送 commit
    • 或事后用 bash $SKILL/scripts/push-commit-to-tapd.sh 手动补推

最小装配

只装 commit-msg hook(不接 CNB,不改 .cnb.yml):

bash $SKILL/scripts/lib/install-commit-hook.sh install /path/to/repo

仅强制 commit 必须带 --story= / --bug= / --task=。适合已经有自己的 CI 系统、只想加约束层的团队。

常见问题的快速答案

问题 答案
API 账号 testauth 通过但 list workspace 403 API 账号创建时没勾选 workspace 授权。去 /<公司ID>/open_platform/config 编辑授权
POST /orgs//repos 返回 404 CNB 不是 GitHub 风格。正确是 POST //-/repos,字段 visibility_level: "Private"
GET /user/orgs 返回 [] CNB 叫 groups 不叫 orgs。用 GET /user/groups
pull_request 里 AI review 没自动跑 检查 .cnb.yml 有没有 cnbcool/ai-review:latest stage;确认推的不是 main 而是 feature 分支;PR 要开到 main
直推 main 被 hook 拦截了 这是预期行为。走 PR 流程,或临时 HARNESS_ALLOW_MAIN_PUSH=1 git push ...(慎用)

详见 references/troubleshooting.md。

深入主题

深度内容按需加载,避免 SKILL.md 膨胀:

  • 完整工作流 + 给客户演示的剧本:references/workflow.md
  • TAPD × CNB 集成的所有已知事实和踩坑:references/tapd-cnb-integration.md
  • 故障排查清单(所有实测过的错误码 + 修复):references/troubleshooting.md

卸载

bash $SKILL/scripts/uninstall-harness.sh /path/to/repo

默认保留:凭据文件、CNB 远端仓库、PR 模板里的 TAPD 段(需要手工删)。

脚本总览

脚本 用途 用户直接调
scripts/install-harness.sh wizard 交互式装配向导(零态首选) ✅
scripts/install-harness.sh connect-tapd / connect-cnb / setup / status 主入口的各子命令(手工/脚本化用) ✅
scripts/start-feature.sh 从 TAPD 故事拉 feature 分支 ✅
scripts/tapd-commit-tag.sh 取 TAPD 源码提交关键字 ✅
scripts/push-commit-to-tapd.sh 手动/CI 把 commit 推给 TAPD ✅
scripts/verify-harness.sh 仓库装配体检 ✅
scripts/uninstall-harness.sh 反向卸载 ✅
scripts/lib/* 内部工具(secrets-store / create-cnb-repo / mirror-to-cnb 等) 一般不直接调

资产总览

  • assets/cnb-templates/*.cnb.yml:5 种栈模板(go / node / python / terraform / mixed-go-node),main: pull_request: 段都带 cnbcool/ai-review:latest
  • assets/git-hooks/*.sh:commit-msg 校验、pre-push 调度器、protect-main、可选的 TAPD 推送钩子
  • assets/git/*:.gitmessage、.tapd.yml、PR 模板

相关专题

更多
国内免备案空间有哪些
国内免备案空间有哪些

国内免备案空间有阿里云、腾讯云、百度云、华为云、网易云、联想云、沃达云、景安云、西部数码和3A 网络。虽然这些空间提供商提供了免备案服务,但在使用过程中仍需遵守相关法律法规,确保网站内容的合规性。

2023.10.16

410

5

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

0

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

0

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

0

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
腾讯问卷设置问卷操作指南
腾讯问卷设置问卷操作指南

共0课时 | 0人学习

腾讯问卷 PC 端快速入门
腾讯问卷 PC 端快速入门

共0课时 | 0人学习

CodeBuddy官方文档
CodeBuddy官方文档

共0课时 | 0人学习