Self Dev Cnb Npc Create

Polar Sponsor
爱发电 赞助
.NET 9.0

CNB 自定义 NPC 创建全流程。基于现有 NPC 仓库 fork 改造,接入自有大模型 API(如 GLM-5.1),配置密钥仓库,部署到目标组织。适用于需要创建私有 NPC(代码审查、专属客服等)的场景。触发词:"创建NPC"、"造NPC"、"私有NPC"、"自定义NPC"、"fork NPC"。

CNB 自定义 NPC 创建工作流

功能概述

CNB 自定义 NPC 创建工作流是一项面向实际任务的技能,主要用于v1.0 · 2026-04-24 · 基于「灵鉴」PR审查NPC实战复盘;参考架构:CNB 官方 NPC 工程师方案二(issue #959);

核心要点

  • 一、工作流总览;
  • 二、前置条件;
  • CNB Token;

使用与执行

需有仓库创建、Issue 评论权限;自有大模型 API;API URL + API Key(如智谱 GLM-5.1);NPC 最终归属的组织(如 cnbmm)。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

结果检查与注意事项

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

CNB 自定义 NPC 创建工作流

v1.0 · 2026-04-24 · 基于「灵鉴」PR审查NPC实战复盘 参考架构:CNB 官方 NPC 工程师方案二(issue #959)

一、工作流总览

需求确认 → Fork参考NPC → 改造配置 → 创建密钥仓库 → 推送代码 → 转移到目标组织 → 关联密钥仓库 → 测试验证 → 上线

二、前置条件

条件 说明
CNB Token 需有仓库创建、Issue 评论权限
自有大模型 API API URL + API Key(如智谱 GLM-5.1)
目标组织 NPC 最终归属的组织(如 cnbmm)
参考 NPC 仓库 可 fork 的已有 NPC 仓库(如 tencent/cloud/cloudbase/community)

三、详细步骤

Step 1: 需求确认

确认清单:

  1. NPC 功能定位?(代码审查/技术客服/文档助手/通用)
  2. 接入什么大模型?(GLM-5.1 / GPT-4 / DeepSeek 等)
  3. NPC 名字和口号?
  4. 部署到哪个组织?
  5. 是否需要专属头像?

提示词模板:

确认 NPC 创建需求:
- 功能定位:[代码审查/技术客服/文档助手/通用]
- 大模型:[GLM-5.1/GPT-4/DeepSeek/其他]
- API 端点:[URL]
- NPC 名称:[名称]
- 部署组织:[组织名]
- 参考NPC:[fork来源仓库]

Step 2: Fork 参考 NPC 仓库

⚠️ API 不支持 fork 操作(errcode 9),必须用 git clone。

# 克隆参考 NPC 仓库
git clone https://{username}:{CNB_TOKEN}@cnb.cool/{参考NPC仓库路径}.git /tmp/{npc-name}
cd /tmp/{npc-name}
git checkout -b main  # 确保分支名是 main

创建新的 NPC 仓库(API):

curl -s -X POST 
  -H "Accept: application/vnd.cnb.api+json" 
  -H "Authorization: Bearer $CNB_TOKEN" 
  -H "Content-Type: application/json" 
  "${CNB_API_ENDPOINT}/{username}/-/repos" 
  -d '{
    "name": "{npc-name}",
    "description": "{NPC描述}",
    "visibility": "private"
  }'

推送到新仓库:

cd /tmp/{npc-name}
git remote remove origin
git remote add origin https://{username}:{CNB_TOKEN}@cnb.cool/{username}/{npc-name}.git
git push -u origin main

Step 3: 改造 NPC 配置

3.1 角色配置 .cnb/settings.yml

npc:
  roles:
    - name: {NPC名称}
      slogan: "{一句话口号}"
      prompt: |
        你是{角色定位},负责{具体职责}。
        你的任务:
        1. {任务1}
        2. {任务2}
        3. {任务3}
        回复要求:
        - 使用 Markdown 格式回复
        - 语气专业、友好
        - 控制在 {字数} 字以内
      avatar:
        src: ".cnb/avatar.svg"

Prompt 设计原则:

  • 明确角色身份和专业领域
  • 列出具体任务清单(编号)
  • 定义回复格式要求
  • 设置字数控制
  • 如需引用知识库,加上参考链接

3.2 自定义 Skill .codebuddy/skills/my-llm/SKILL.md

这是核心!NPC Agent 框架会按 Skill 指令调自定义大模型。

---
name: my-llm
description: 调用自有大模型 API 生成回复
allowed-tools: Bash
---

# 调用自有大模型

当需要回复用户时,执行以下步骤:

## 步骤 1:获取相关信息(如 PR diff)
```bash
curl -s -H "Accept: application/vnd.cnb.api+json" 
  -H "Authorization: Bearer $CNB_TOKEN" 
  "$CNB_API_ENDPOINT/$CNB_REPO_SLUG/-/pulls/$CNB_EVENT_ISSUE_NUMBER"
```

## 步骤 2:拼接 Prompt
将获取的信息整合为 system prompt + user prompt。

## 步骤 3:调用大模型 API
```bash
curl -s ${YOUR_LLM_API_URL}/chat/completions 
  -H "Authorization: Bearer ${YOUR_LLM_API_KEY}" 
  -H "Content-Type: application/json" 
  -d '{
    "model": "glm-5.1",
    "messages": [
      {"role": "system", "content": "你是{角色},{能力描述}"},
      {"role": "user", "content": "{用户问题/PR信息}"}
    ],
    "temperature": 0.3,
    "max_tokens": 4096
  }' | jq -r '.choices[0].message.content'
```

## 步骤 4:发表评论
```bash
cnb issues comment --body "回复内容"
```

Skill 设计要点:

  • allowed-tools: Bash — 必须声明,否则无法执行 curl
  • 用环境变量引用 API Key(${YOUR_LLM_API_KEY}),不硬编码
  • CNB 环境变量自动注入:$CNB_TOKEN、$CNB_REPO_SLUG、$CNB_EVENT_ISSUE_NUMBER
  • 根据 NPC 功能调整步骤(PR审查需获取diff,客服需知识库检索等)

3.3 流水线配置 .cnb.yml

# NPC 触发配置(使用 npc:go 模式)
.npc: &npc
  - env:
      YOUR_LLM_API_URL: ((your-llm-api-url))
      YOUR_LLM_API_KEY: ((your-llm-api-key))
      YOUR_MODEL_NAME: ((your-model-name))
    stages:
      - name: npc go
        type: npc:go

# 事件绑定
$:
  pull_request.comment@npc: *npc
  issue.comment@npc: *npc

关键:

  • 必须用 npc:go,让平台 NPC Agent 框架调度,它会读取 Skill 指令执行
  • 环境变量用 ((变量名)) 引用密钥仓库的文件
  • 事件类型按需选择:
    • pull_request.comment@npc — PR 评论触发
    • issue.comment@npc — Issue 评论触发
    • pull_request.open — PR 创建触发
    • issue.open — Issue 创建触发

3.4 专属头像 .cnb/avatar.svg

SVG 格式,建议 120×120,辨识度要高。 放到 .cnb/avatar.svg,settings.yml 中引用 src: ".cnb/avatar.svg"。

Step 4: 创建密钥仓库

密钥仓库是独立仓库,文件名=变量名,文件内容=值。

# 创建密钥仓库
curl -s -X POST 
  -H "Accept: application/vnd.cnb.api+json" 
  -H "Authorization: Bearer $CNB_TOKEN" 
  -H "Content-Type: application/json" 
  "${CNB_API_ENDPOINT}/{username}/-/repos" 
  -d '{
    "name": "{npc-name}-secrets",
    "description": "{NPC名称} 密钥仓库",
    "visibility": "private"
  }'

# 创建密钥文件
mkdir -p /tmp/{npc-name}-secrets && cd /tmp/{npc-name}-secrets
git init && git checkout -b main
echo -n "{API_URL}" > your-llm-api-url
echo -n "{API_KEY}" > your-llm-api-key
echo -n "{MODEL_NAME}" > your-model-name
git add -A && git commit -m "init: NPC 密钥配置"
git push -u origin main

Step 5: 提交推送所有变更

cd /tmp/{npc-name}
# 清理不需要的原仓库文件(如企微通知、stale bot 等)
rm -rf {不需要的目录}
git add -A
git commit -m "feat: {NPC名称} - 基于参考NPC改造,接入{模型名}"
git push

Step 6: 转移到目标组织

⚠️ API 不支持转移(errcode 9 管理规则限制),必须网页操作。

提供链接给用户:

  • NPC 仓库:https://cnb.cool/{username}/{npc-name}/-/settings → 转移到目标组织
  • 密钥仓库:https://cnb.cool/{username}/{npc-name}-secrets/-/settings → 转移到目标组织

转移后路径变为:{目标组织}/{npc-name} 和 {目标组织}/{npc-name}-secrets

Step 7: 关联密钥仓库

⚠️ 只能网页操作,API 无此接口。

在 NPC 仓库设置页面 → 找到密钥仓库配置 → 填入 {目标组织}/{npc-name}-secrets

Step 8: 测试验证

# 在 NPC 仓库创建测试 Issue
curl -s -X POST 
  -H "Accept: application/vnd.cnb.api+json" 
  -H "Authorization: Bearer $CNB_TOKEN" 
  -H "Content-Type: application/json" 
  "${CNB_API_ENDPOINT}/{org}/{npc-name}/-/issues" 
  -d '{
    "title": "测试 NPC 触发",
    "body": "@{org}/{npc-name}({NPC名称}) 测试一下"
  }'

# @ NPC 触发
curl -s -X POST 
  -H "Accept: application/vnd.cnb.api+json" 
  -H "Authorization: Bearer $CNB_TOKEN" 
  -H "Content-Type: application/json" 
  "${CNB_API_ENDPOINT}/{org}/{npc-name}/-/issues/{number}/comments" 
  -d '{
    "body": "@{org}/{npc-name}({NPC名称}) 请回复一下"
  }'

等待 15-20 秒后检查:

# 查评论
curl -s -H "Accept: application/vnd.cnb.api+json" 
  -H "Authorization: Bearer $CNB_TOKEN" 
  "${CNB_API_ENDPOINT}/{org}/{npc-name}/-/issues/{number}/comments"

# 查流水线
curl -s -H "Accept: application/vnd.cnb.api+json" 
  -H "Authorization: Bearer $CNB_TOKEN" 
  "${CNB_API_ENDPOINT}/{org}/{npc-name}/-/build/logs"

成功标志: NPC 评论出现(is_npc: true)

Step 9: 在目标仓库引入 NPC

在需要使用该 NPC 的仓库中,编辑 .cnb/settings.yml:

npc:
  imports:
    list:
      - repo: {org}/{npc-name}

推送后,该仓库的 PR/Issue 中就可以 @{org}/{npc-name}({NPC名称}) 触发了。

四、踩坑记录

# 坑 解法
1 API 不支持 fork 用 git clone + git push 到新仓库
2 API 不支持转移仓库(errcode 9) 必须网页操作
3 密钥仓库是独立仓库,不是页面表单 每个密钥=一个文件(文件名=变量名,内容=值)
4 密钥仓库关联只能网页操作 提供链接给用户手动操作
5 用自建 Docker + 脚本绕过 npc:go ❌ 错误思路。应该用 npc:go + Skill
6 API Key 直接写在 .cnb.yml ❌ 安全问题。用 ((变量名)) 引用密钥仓库
7 智谱 API URL 要用 coding 专用端点 https://open.bigmodel.cn/api/coding/paas/v4(非通用 /api/paas/v4)
8 流水线 success 但 NPC 不回复 检查密钥仓库是否正确关联
9 私有仓库 Token 无法访问 提示 errcode 7 "secret repo does not support token"

五、不同场景的 Skill 变体

PR 代码审查 NPC

Skill 步骤:获取 PR diff → 拼接审查 prompt → 调大模型 → 发审查评论

技术客服 NPC

Skill 步骤:知识库检索(如有)→ 拼接回答 prompt → 调大模型 → 发回复

文档助手 NPC

Skill 步骤:获取文档内容 → 分析质量 → 调大模型生成建议 → 发评论

六、实战提示词速查

创建 NPC 一句话

基于 {参考NPC仓库} fork 创建私有 NPC,名称「{名称}」,接入 {模型名},部署到 {组织}

测试 NPC

在 {org}/{npc-name} 创建 Issue 并 @NPC 测试触发,15秒后查评论和流水线状态

引入 NPC 到目标仓库

在 {目标仓库} 的 .cnb/settings.yml 中添加 npc.imports 引用 {org}/{npc-name}

七、与 cnb-npc-dispatch 的关系

工作流 用途
cnb-npc-create(本 Skill) 创建自定义 NPC(造 NPC)
cnb-npc-dispatch 给已有 NPC 派发任务(用 NPC)

两者互补:先用本 Skill 造 NPC,再用 dispatch Skill 派活。

相关专题

更多
Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

2026.11.12

0

15

Go-Zero安装与goctl环境配置教程
Go-Zero安装与goctl环境配置教程

本专题围绕Go-Zero的安装与工具链配置展开,讲清Go版本要求、goctl安装方式、代理镜像、protoc依赖与环境变量设置,说明多版本共存、升级回退与CI流水线安装的做法,并整理安装阶段的常见报错与验证步骤。

2026.11.12

0

15

Go-Zero零基础入门教程
Go-Zero零基础入门教程

本专题整理Go-Zero的入门知识,从框架定位、环境准备到跑通第一个API服务,讲清目录分层、配置加载、日志与中间件的基本用法,并对比Gin、Kratos的差异,帮助Go开发者建立整体认知,判断它是否适合当前项目。

2026.11.12

0

15

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

热门下载

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

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.3万人学习