这是一个“嘴强王者”型 NPC。 它只有嘴,没有手,负责读上下文、回评论,不直接执行仓库里的实际改动。
一个基于 requests 的最小 Python 脚本:
messagesauthor.is_npc 映射为 system / userimage_url 传给 AIstderrrequests安装依赖:
pip install -r requirements.txt
直接运行:
python main.py
程序依赖环境变量。CNB_* 变量由平台注入,不在这里展开。
NPC_BASE_URL
${CNB_API_ENDPOINT}/${CNB_REPO_SLUG}/-/ai/NPC_KEY
CNB_TOKEN_FOR_AI,没有则回退到 CNB_TOKENCNB_NPC_NAME
model 参数时会去掉开头的 :CNB_NPC_PROMPT
system 消息拼进 messages当前支持:
issue.comment@npcpull_request.comment@npc行为:
messages评论上下文按以下规则构造:
author.is_npc == true -> systemusersystem 是 NPC 身份描述user 是 issue / pull 的原始正文@****(***) 这类片段image_url 单独传给 AIuser 消息会带上用户名,例如 alice: 你好如果 CNB_NPC_PROMPT 存在,它会替换第一条 system。
AI 接口只按流式方式处理。
程序会拆解流式响应,并提取:
写回 issue 时,思考内容会被格式化成引用块:
> 思考内容 正文回复
如果没有思考内容,就只写正文回复。
程序会把 AI 流式返回的每条 SSE JSON 打印到 stderr。
这份脚本是按最小实现写的,没有额外框架和抽象,适合先跑通流程再迭代。