讲师中心 微信公众号

工具推荐

视频效率加速
Seko
Seko

AI短剧一键生成成片

立刻MV
立刻MV

低成本歌曲 MV、视频生成

剧云
剧云

中文短剧剧本制作平台

AniShort
AniShort

AI短剧协同制作平台

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 派活。

目录

热门AI工具

更多
Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

SoundView
SoundView Hot

SoundView是一款面向跨境电商的视频翻译、配音和本地化 AI 创作平台。

码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

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

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

0

2026.11.12

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

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

0

2026.11.12

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

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

0

2026.11.12

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

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

0

2026.11.06

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

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

0

2026.11.06

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

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

0

2026.11.06

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

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

0

2026.11.05

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

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

0

2026.11.05

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

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

0

2026.11.04

热门下载

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

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn