


构建能从聊天和议题跟踪器接收请求的编程智能体服务
用于构建从代码托管平台、议题跟踪器和聊天接收任务的编程智能体服务。它会拆分主智能体、评审和分析三种角色,为每个线程保留一个沙箱,固定中间件的顺序,并为 CI 自动修复加上开关。
要使用这个AI规则
## 给每个运行时角色一项职责,并让评审只读
为每个运行时角色分配一项明确的职责:
- 主编程智能体图为每个线程创建一个全新的智能体,而持久状态保留在线程沙箱和元数据中;
- 评审图通过发现项模型和专用发布操作执行只读代码评审,不提供修改、提交、推送或发起评审的工具;
- 分析图在引导初始化和持续学习模式下构建仓库专用的评审指南,并通过一个专用工具保存;
- Web应用程序接收来自代码托管平台、议题跟踪器和聊天系统的Webhook,确定一个稳定线程,然后启动或流式运行对应的图;
- 仪表板负责登录、用户配置文件、团队默认设置、已启用的仓库、评审风格管理,以及界面所使用的线程API。
将分析程序作为有版本的只读虚拟技能提供,不要将它们复制到每个沙箱中。只有引导初始化完成后,才注册定期的持续改进任务。将所有图入口点和应用程序路由保存在同一份运行时清单中,同时允许使用完整的开发运行时或范围更窄的纯Web进程。
## 固定一套开发工具,先运行最小范围的测试
分别声明一个依赖项管理器、测试运行器、代码检查器、格式化程序、类型检查器、最低语言版本和部署运行时版本。仓库必须在受支持的最低版本以及部署元数据所固定的任何较新版本上都保持有效。
为以下操作提供文档化命令:
1. 安装开发依赖项;
2. 启动完整的图和Web运行时;
3. 仅启动Web应用程序;
4. 运行整个单元测试目录;
5. 运行一个测试文件或测试用例;
6. 在不修改文件的情况下检查代码和格式;
7. 应用格式化程序和安全的自动修复;
8. 对生产代码和测试代码进行类型检查。
默认使用单元测试。为集成测试保留专用目录;不存在集成测试套件时,应明确执行空操作,而不是产生含义不明的失败。开发期间,先运行单个测试或最小的相关测试套件,再执行广泛的仓库检查。
## 每个线程保留一个沙箱,出问题时重新创建
维护以线程标识符为键的进程内沙箱缓存,并将沙箱标识符持久化到线程元数据中。明确处理生命周期状态:
1. 如果沙箱已缓存,则探测其状态;探测失败时重新创建,状态正常时刷新其经过身份验证的网络代理。
2. 如果元数据包含创建中哨兵值,但缓存中没有沙箱,则在创建替代沙箱前清除过期的哨兵值。
3. 如果完全没有沙箱,则写入创建中哨兵值,创建沙箱,再用真实标识符替换哨兵值。
4. 如果元数据有标识符,但进程缓存为空,则重新连接;重新连接失败时,改为重新创建。
对于支持身份验证代理的提供商,每次创建或刷新时都获取一份新的短期安装凭据。让代理注入代码托管平台和API的身份验证信息,使沙箱命令可以使用无害的占位值,而不必存储真实凭据。不具备此功能的提供商必须明确跳过代理路径。
每次运行都重新应用自动化执行身份配置。复用或重新连接的环境可能丢失全局设置,而下游部署检查可能拒绝作者身份未被识别的提交。
## 按固定顺序运行包裹模型调用的中间件
围绕模型调用按有意设定的顺序运行中间件:
1. 清理并规范化工具输入;
2. 限制模型调用次数,并在达到上限时正常结束;
3. 将工具异常转换为工具消息;
4. 每次运行仅在文件读取结果中追加一次适用的上级指令;
5. 在下一次模型调用前,注入运行期间到达的议题或聊天消息;
6. 更新外部智能体状态指示器;
7. 用合成的继续执行或完成确认工具调用替换空模型响应;
8. 达到总步骤上限时通知来源渠道;
9. 沙箱反复失败后触发断路器;
10. 只有配置了不同的后备模型时,才添加模型后备机制;
11. 在调用提供商前,立即移除格式错误的提供商专用推理块。
将要求持续执行的系统指令与空响应防护结合起来,避免工作悄无声息地结束。如果评审器不需要限定范围的文件指令、消息队列注入、后备机制或沙箱恢复,就让其中间件保持更精简。某个未使用的中间件组件仅仅存在,并不表示它已经启用;应在正确位置显式注册新中间件。
## 只给每个角色它需要的工具
维护一个小型、扁平的自定义工具注册表。主智能体可以获得已获准的网络请求、搜索、议题跟踪操作、评审请求、定时唤醒和聊天回复。评审器只能获得面向读取的网络工具,以及创建、更新、列出发现项和发布评审的操作。分析器只能获得保存评审指南所需的操作。
通用的文件、命令行、搜索、任务和规划原语应由智能体框架提供。不要在自定义注册表中重复添加这些工具。
不要依赖智能体结束后的安全兜底来发布工作。智能体工作流程必须显式执行每项已获准的提交、推送、发起或更新评审,以及向来源渠道回复。只读评审器绝不能继承这些修改能力。
## 按固定顺序选择模型,并加密保存凭据
按以下顺序解析每次运行使用的模型和推理强度:
1. 由触发事件或界面提供的线程级配置;
2. 已解析用户的配置文件覆盖项;
3. 团队默认设置。
集中管理受支持的模型标识符、推理强度规则、提供商参数、模型构建和后备模型选择。将行为标志保存在用户配置文件中,例如自动发起评审的权限,不要把它们分散到Webhook代码中。
静态保存用户授权凭据时进行加密,并且仅在运行期间把它们缓存在进程中。用户凭据不可用时,改用短期的应用程序安装凭据。使用同一份应用程序凭据配置经过身份验证的沙箱代理,但绝不能将原始凭据持久化到沙箱中。
在路由事件前验证Webhook的真实性。将代码托管平台签名检查、聊天验证、议题跟踪验证和仪表板登录处理分别保留在各自负责的模块中。
## 把后续消息送回同一个线程和沙箱
从外部对话身份派生稳定的线程标识符,使同一议题、聊天线程、分支或评审上的每条后续消息都返回同一个智能体状态和沙箱。为评审运行设置单独的确定性命名空间,并在元数据中标记其线程类型。
运行期间收到消息时,将其放入线程队列,并在下一次模型调用前注入。这样无需放弃当前运行或创建相互竞争的智能体,也能保持连续性。让状态更新与模型调用边界对齐,使外部用户能够区分正在工作、已经完成和因步骤上限而终止。
## 只有在开关打开时才运行 CI 自动修复
自动修复流程可以响应检查失败、合并冲突,或针对智能体所发起评审的可执行反馈。通过持久的评审元数据找到原始线程,然后向主智能体图分派经过置信度门禁的修复运行。
要求分层启用:
- 用户级自动化标志;
- 仓库明确选择加入;
- 评审级开启或关闭覆盖项。
集中管理以下跳过规则:基础分支上已经存在的失败、人类提交的更改、对同一头部修订版本的重复处理、另一个修复运行处于活动状态时的批处理,以及严格的循环次数上限。定期监视器只能作为后备机制,用来扫描智能体发起但仍处于开放状态的评审,以寻找遗漏的事件。
## 在各自的注册表中添加新的提供商和工具,并保持代码异步
在沙箱提供商所属的集成模块中添加它,并将其注册到提供商工厂映射中。在工具包中添加自定义工具,只导出一次,并且只将它加入需要该工具的角色专用工具列表。在独立模块中添加并导出中间件,再把它有意放入有序堆栈中的正确位置。将仪表板端点添加到已挂载的路由器,将新图添加到运行时清单。
让仅支持异步的应用程序始终保持异步。不要构建与之并行的同步实现。接口允许时省略同步方法;抽象契约要求同步方法存在时,只提供一个会引发“不支持此操作”错误的最小方法。
默认使用单元测试,真正的集成应使用专用集成测试区域,并尽量减少注释。注释应解释不明显的原因或顺序约束,不要复述实现。
