logo
0
0
WeChat Login

诏令中枢 (Mandate Engine)

CNB Repository

AI 驱动的 CNB 平台智能助手引擎,自动处理 Issue 和 Pull Request 的交互逻辑。

🎯 项目简介

诏令中枢是一个专为 CNB 平台设计的 AI Agent 系统,能够:

  • 智能回复:自动分析和回复 Issue/PR 评论
  • 角色分发:根据配置将任务分发给不同的 AI 角色
  • 防循环机制:避免多 Agent 之间的无限循环触发
  • 上下文感知:预加载 Issue/PR 信息进行深度理解
  • 工具集成:支持创建 PR、调用 CodeBuddy 等多种操作

🏗️ 技术架构

核心模块

  • src/main.ts - 程序入口,负责初始化和流程控制
  • src/agent.ts - Agent 核心逻辑,处理用户意图和工具调用
  • src/cnb-api.ts - CNB API 封装,处理所有平台交互
  • src/context.ts - 上下文管理,加载环境和配置信息
  • src/llm.ts - LLM 接口封装,支持 OpenAI 兼容的大语言模型
  • src/prompts.ts - 系统提示词模板管理
  • src/tools/ - 各种工具实现(如读取配置、创建 PR 等)

技术栈

  • Runtime: Node.js (ES Module)
  • Language: TypeScript
  • LLM: OpenAI SDK (^4.78.0)
  • Config: YAML + JSON
  • Package Manager: npm
  • Dev Tool: tsx for direct TypeScript execution

🚀 快速开始

前置条件

  • Node.js >= 18
  • npm >= 8
  • CNB 平台访问令牌

安装依赖

npm install

配置环境变量

创建 .env 文件或通过环境变量配置:

# CNB 平台配置 CNB_API_ENDPOINT=https://api.cnb.cool CNB_TOKEN=your_cnb_token CNB_REPO_SLUG=npc/mandate-engine CNB_PULL_REQUEST_SHA=commit_sha CNB_PULL_REQUEST_TARGET_SHA=target_commit_sha # NPC 配置 CNB_NPC_NAME=your_npc_name CNB_NPC_SLUG=your_npc_slug # LLM 配置 OPENAI_API_KEY=your_openai_key OPENAI_BASE_URL=https://api.openai.com/v1 # 可选,默认官方地址 OPENAI_MODEL=gpt-4o-mini # 可选,默认 gpt-4o-mini # 角色配置 SETTINGS_FILE=settings.yaml # 可选,默认 settings.yaml

运行

npm start # 或直接运行 npx tsx src/main.ts

📋 配置说明

settings.yaml

角色配置文件,定义可用的 AI 角色及其能力:

roles: - name: "CodeReviewer" description: "代码审查专家" capabilities: - "review_code" - "suggest_improvements" - name: "ProjectManager" description: "项目管理助手" capabilities: - "track_issues" - "manage_milestones"

.cnb.yml

CNB 平台配置文件,定义触发规则和权限。

🔧 核心功能

1. 智能交互流程

  1. 触发检测:监听 Issue/PR 评论中的 @ 提及
  2. 身份校验:识别触发者(用户/CodeBuddy/其他 NPC)
  3. 防循环:避免自身或跨 Agent 的无限循环
  4. 上下文加载:预加载 Issue/PR 详细信息
  5. Agent 执行:根据角色配置选择合适的处理逻辑
  6. 工具调用:执行回复、创建 PR、分发任务等操作

2. 安全机制

  • 循环防护:检测并跳过自身和外部 NPC 的触发
  • CodeBuddy 隔离:被 CodeBuddy @ 时不产生响应
  • 错误处理:完善的错误捕获和用户友好的错误提示
  • 权限控制:基于 CNB 平台的权限体系

3. 扩展能力

  • 多角色支持:通过配置文件轻松添加新的 AI 角色
  • 工具插件化:模块化工具设计,易于扩展新功能
  • LLM 无关:支持任意 OpenAI 兼容的大语言模型
  • 平台适配:基于 CNB API,可适配类似平台

📁 项目结构

mandate-engine/ ├── src/ │ ├── agent.ts # Agent 核心逻辑 │ ├── cnb-api.ts # CNB API 封装 │ ├── context.ts # 上下文管理 │ ├── llm.ts # LLM 接口 │ ├── main.ts # 程序入口 │ ├── prompts.ts # 提示词模板 │ └── tools/ # 工具集 │ ├── read-settings.ts │ └── ... ├── assets/ # 静态资源 ├── .cnb/ # CNB 配置 ├── package.json ├── tsconfig.json ├── Dockerfile # 容器化部署 ├── start.sh # 启动脚本 └── README.md # 项目文档

🐳 部署

Docker 部署

# 构建镜像 docker build -t mandate-engine . # 运行容器 docker run -e CNB_TOKEN=your_token mandate-engine

脚本启动

chmod +x start.sh ./start.sh

🤝 贡献指南

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/amazing-feature)
  3. 提交改动 (git commit -m 'Add amazing feature')
  4. 推送分支 (git push origin feature/amazing-feature)
  5. 创建 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件。

🙏 致谢

  • CNB 平台 - 提供优秀的代码托管和协作平台
  • OpenAI - 提供强大的大语言模型能力
  • 所有贡献者和用户的支持

让 AI 成为团队协作的智慧中枢 🚀

About

天命引擎

Language
TypeScript97.8%
Dockerfile1.1%
Shell1.1%