尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Codewhale Agent 多端统一身份架构解析:从 GitHub PR 评审到聊天频道的单一 Agent 表面
Codewhale Agent 多端统一身份架构解析从 GitHub PR 评审到聊天频道的单一 Agent 表面【免费下载链接】CodewhaleOpen-source coding agent for your terminal, built in Rust and on a journey of continuous community improvement. Issues and PRs welcome.项目地址: https://gitcode.com/GitHub_Trending/de/CodewhaleCodewhale Agent 是 Codewhale用 Rust 构建的开源终端编码 Agent推出的一个产品身份、多种传输表面one identity, many surfaces架构。它以单一引擎Engine::run_turn为 I/O 中枢通过 GitHub App 机器人、Git commit 共同署名与聊天频道当前为 Telegram三种表面对外服务并以统一会员身份、统一审批路由与全链路审计作为多端仍是一体的契约规则。阅读本文你将理解 Codewhale Agent 各表面的构成、身份归属与状态、端到端的 Telegram 配对链路以及驱动这些表面的 GitHub PR 评审工作流与源码级实现细节。一个身份多种表面Codewhale Agent 的定位根据 docs/CODEWHALE_AGENT.mdCodewhale Agent 不是多个分散的机器人而是一个产品身份承载在多种表面transport surface上。这份文档本身是该身份的地图identity map回答每个表面是什么、它在哪里、以及哪些规则让它们仍然是同一个产品而不是多个产品。三张表面的身份总览表面身份对象所在位置状态GitHub PR 评审GitHub App 机器人codewhale-agent[bot]GitHub 组织设置仓库变量CODEWHALE_APP_ID 密钥CODEWHALE_APP_PRIVATE_KEYcodewhale review --pr N --post随codewhale-review.yml工作流发布在 App 配置完成前对绿色 PR 无操作founder-gated配置完成后以 App 身份而非工作流 token 身份发帖。发布始终通过--post显式选择加入Commit 共同署名.github/AUTHOR_MAP仓库已存在被收割的共同署名信用落入贡献者图谱聊天频道当前 TelegramSlack / Feishu / Lark 紧随其后Discord / WeCom 在规划中绑定到 Codewhale 会员身份的逐用户 bot 注册CWC 控制面services/control-plane/src的 BotGateway integrations/chat/契约位于packages/contractsTelegram 配对端到端打通token → vaultcredentialRef→ 一次性代码 →/start绑定 chat↔membership。默认只读命令白名单可选择的写命令approve/deny 键盘路由为权限决策需要说明表格中services/control-plane、integrations/chat/、packages/contracts位于文档所指的 CWCcompanion仓库不属于本仓库。但本仓库根目录下的 integrations/ 目录实际收纳了多个桥接实现telegram-bridge、feishu-bridge、wecom-bridge、weixin-bridge与文档多聊天渠道扩展的方向相互印证其中weixin-bridge的入口配置与个人微信自动化不受支持的约束并存。聊天表面的演进路线文档明确了渠道推进顺序Telegram今天→ Slack / Feishu / Lark下一步→ Discord / WeCom未来。每种渠道都通过独立的格式适配器工作详见下文频道契约一节因此扩展新渠道并不改变 Agent 的身份与内核。让多端保持一体的六条规则核心文档 中Rules that make it one identity一节给出了六条不可逾越的架构约束它们是整个多端设计的灵魂单一引擎、单一回合循环每个表面都只是围绕唯一Engine::run_turn的 I/Ocrates/tui/src/core/engine/turn_loop.rs任何表面都不得拥有自己的引擎或回合循环。同一会员身份每个表面都向同一 Codewhale 会员身份认证即codewhale login建立的账户会话。会员资格是云 Agent 的准入门槛各 provider 品牌保持内部化且不可见。审批回流同一引擎来自任何表面的审批都作为权限决策permission decision路由回同一个引擎一条裸消息永远不会执行被门控的操作。全渠道全量审计每个命令和每次审批在每个渠道上都被审计记录。所有表面免费速率限制只用于反滥用没有按渠道收费、按消息计量、团队门禁或试用计时器对渠道功能挂上计费钩子被钱模型money model明令禁止。这些规则在源码层面有清晰的落点引擎的回合入口位于 crates/tui/src/core/engine.rspub struct Engine于第 782 行附近定义而实际的单回合执行函数run_turn定义在 crates/tui/src/core/engine/turn_loop.rs其签名接收TurnContext、ToolSurfacePolicy工具表面策略与前台子进程注册表等参数——这恰好印证了表面surface作为引擎输入策略、而非独立实现的设计不同端只是以不同方式调用同一回合循环并施加各自的工具面策略。引擎同时承载着回合级墙钟预算turn_wall_clock_budgetR1 预算见 engine.rs与审批等待暂停机制所有表面共享这些语义从实现上杜绝了某个端绕过审批/预算的可能。命名规范对外永远只说 Codewhale产品名CodewhaleAgent 表面名Codewhale Agent。在可选处bot 句柄统一为codewhale-agent。Agent 对外自称Codewhale cloud agent绝不以任何 provider 品牌自称如从不宣称自己是某模型厂商的机器人。这保证了无论用户在 GitHub PR 评论区、Telegram 私聊还是 commit 作者字段里遇到它认知都是同一个产品。频道契约命令白名单、审批键盘与配对安全codewhale-agent.md 的 Channel contract 章节 定义了所有聊天表面的统一行为契约按频道命令白名单默认只读——status、jobs、receipts、help可显式选择加入的写命令——new task、approve、deny。内联 approve/deny 键盘作为权限决策被路由与规则部分的第 3 条呼应——键盘点击最终会转化为引擎内的授权判定而不会绕过审批直接执行。assistant_changes回复模式仅在有变化发生时才发消息减少噪音。按频道消息格式适配器今天为 Telegram markdown规划中的有 Slack blocks、Feishu/Lark cards、WeCom markdown。静默时段与摘要quiet hours digest。自动化输出可路由到任意已配对频道。一个配对码绑定在已认证应用内解除绑定立即吊销unbind revokes instantly。Telegram 配对链路端到端文档给出 Telegram 表面已打通的关键链路token → vaultcredentialRef→ 一次性代码 →/start绑定 chat ↔ membership即用户登录获得 token凭证以credentialRef形式进入 vaultbot 颁发一次性配对码用户在 Telegram 对 bot 发送/start完成聊天会话与 Codewhale 会员身份的绑定。整个配对码被绑定在已认证应用之内即无法脱离账户会话单独使用而 unbind 是即时吊销不存在宽限期窗口。微信渠道的明确边界个人微信自动化不被支持——逆向工程协议会导致用户账号被封禁。官方公众号/服务号 API 是唯一可接受路径且仍处于评估阶段under assessment。这一点与仓库中 integrations/weixin-bridge/ 的存在并不冲突桥接方向是合规的官方 API 通道而非个人号逆向。纵深示例GitHub PR 评审表面如何落地仓库内最完整的表面实现证据就是 GitHub 评审工作流。该工作流由文档定位到本仓库内的 .github/workflows/codewhale-review.yml而完整的一步步配置说明在同目录的 docs/GITHUB_APP.md。工作流行为与身份切换机制触发器pull_request的opened / synchronize / reopened / ready_for_review分支限master、maindraft false才运行。每个非 draft PR 产生一次 COMMENT 评审一段摘要正文加锚定到 PR head SHA 的行内评论它从不 approve、从不 request changes——人类权威CODEOWNERS不被取代。身份切换当仓库变量CODEWHALE_APP_ID与密钥CODEWHALE_APP_PRIVATE_KEY同时存在时通过actions/create-github-app-tokenv3铸造 App 的短期安装 token并以GH_TOKEN注入 CLI否则回退到工作流自身的github.token。CLI 从不存储 token每次运行重新铸造。未配置评审密钥时任务以绿色 notice 跳过safe to merge before configured真实评审失败HTTP 401/402/403/408/429/5xx时同样不阻塞 PR但会在 PR 上留下幂等的codewhale-review-nonrun标记注释——沉默绝不等于评审通过。评审密钥体系CODEWHALE_API_KEY 优先Secret角色CODEWHALE_API_KEY权威——你的 Codewhale 评审密钥同时设置了任何 BYOK 密钥时胜出ZAI_API_KEYBYOK 后备z.ai Coding Plan / GLMDEEPSEEK_API_KEYBYOK 后备DeepSeek provider 变量非通用 bot 密钥OPENROUTER_API_KEYBYOK 后备ANTHROPIC_API_KEYBYOK 后备任意一个密钥即可启用。工作流用case $PROVIDER把权威密钥映射到目标 provider 的环境变量名上因此更换模型时密钥名不必变动若同时设置了权威密钥与 provider 自有密钥权威密钥胜出覆盖 BYOK 值。密钥存在性检测放在 job 级env:而非if:中是因为 GitHub Actions 的secrets上下文不可用于 job 级if:只能读进env.HAS_ANY_KEY布尔串再被各 step 的if:引用——真正的密钥值只注入到运行评审的唯一步骤。路由选择与输出预算仓库变量CODEWHALE_REVIEW_PROVIDER例zai直通为codewhale review --provider zaiCODEWHALE_REVIEW_MODEL例GLM-5.3直通为--model。两者均可选未设置时provider 由设置了哪把密钥推断权威密钥默认走 z.ai Coding Plan 路由模型用该 provider 默认值。不设置--provider的风险在于当一个模型 id 能被多个已配置路由触达时路由解析拒绝猜测并硬报错——如model glm-5.3 is available from configured provider route(s): openrouter, zai此时必须显式传--provider。输出预算GLM-5.3 是推理模型先输出reasoning_content再输出content两者都计入max_tokens因此过小的预算会得到空评审而非错误。CLI 自带 64K 自动上限已足够工作流默认不设上限若通过变量CODEWHALE_REVIEW_MAX_OUTPUT_TOKENS覆盖则导出为CODEWHALE_MAX_OUTPUT_TOKENS并拒绝低于 8192 的值同时对exit 0 但零长度输出判失败。GitHub App 一次性配置五步App 身份是可选项——本地codewhale review --pr N打印报告并不需要它。需要 App 身份时仓库管理员owner 权限只需完成 GITHUB_APP.md 的五个步骤创建 AppGitHub → Settings → Developer settings → GitHub Apps → New GitHub App命名如Codewhale Agent并取消勾选 Webhook → Active评审由 Actions 在 PR 事件上拉取无需 webhook。授予两个仓库权限Pull requests →Read write发布评审与行内评论Contents →Read-only读 diff够用即可可见范围选Only on this account。下载私钥Private keys → Generate a private key妥善保存.pem。安装 App并选择要覆盖的仓库。添加仓库设置Settings → Secrets and variables → Actions种类名称值VariableCODEWHALE_APP_IDApp 页面上显示的 App IDSecretCODEWHALE_APP_PRIVATE_KEY.pem文件全文SecretCODEWHALE_API_KEY你的 Codewhale 评审密钥或上表任一 BYOK provider 密钥评审密钥是唯一必需项CODEWHALE_REVIEW_PROVIDER、CODEWHALE_REVIEW_MODEL、CODEWHALE_REVIEW_MAX_OUTPUT_TOKENS三个变量可选。本地手动评审命令# 本地打印报告使用你已配置的 provider 密钥 codewhale review --pr 1234 # 当某模型可被多个 provider 触达时钉住路由 codewhale review --pr 1234 --provider zai --model GLM-5.3 # 发布到 GitHub身份取决于 GH_TOKEN 携带的是谁 codewhale review --pr 1234 --postGH_TOKEN可以是ghCLI token以你本人身份发布或 App 安装 token以 App 身份发布--post始终是显式选择加入。常见故障排查速查表评审以你本人身份而非 bot 发布变量或私钥密钥缺失/为空任务静默回退到github.token逐字符核对两个名字。日志显示 No Codewhale review key is set — skipping属预期直到CODEWHALE_API_KEY或任一 BYOK 密钥存在。报错 available from configured provider route(s): ...配置了两把 provider 密钥且模型可被两者触达设置CODEWHALE_REVIEW_PROVIDER即可。空评审但任务绿色推理模型把整个预算花在reasoning_content上提高CODEWHALE_REVIEW_MAX_OUTPUT_TOKENS或取消以用 CLI 自动上限。App token 步骤失败.pem可能在设密钥后被重新生成——把最新密钥重新粘贴到CODEWHALE_APP_PRIVATE_KEY并确认 App 确实安装到了该仓库。名字已被占用GitHub App 名称全局唯一换一个名字即可bot 的展示登录名是slug[bot]由名字派生。另一张现有表面commit 共同署名AUTHOR_MAPGitHub 评审之外文档把commit 共同署名也列为一张已存在的表面仓库根目录下的 .github/AUTHOR_MAP 是一份贡献者信用身份映射表格式为alias Display Name idloginusers.noreply.github.com其关键约束文件头部注释即说明右侧必须使用GitHub 的数字 noreply 地址如101357273Hmbownusers.noreply.github.com这样被收割harvested的共同署名信用才能正确落入 GitHub 贡献者图谱左侧可以是 GitHub 登录名、旧式 noreply 地址、贡献者提交里的原始邮箱或历史中被收割过的本地机器邮箱。仓库内该文件当前收录了 243 行映射覆盖从核心维护者到社区提交者的多条别名归一。这张表与文档多端同身份的主题直接相关无论贡献者历史上以哪种邮箱提交最终都会归一为同一个 GitHub 数字身份使跨表面的信用统计保持一致。身份一致性在本仓库中的实现证据小结若要深入源码验证一引擎、多表面的架构约束可在本仓库中按以下路径追踪引擎与回合循环核心文档指向的 crates/tui/src/core/engine/turn_loop.rsrun_turn定义于 L626 起引擎本体含回合墙钟预算、审批暂停等横切语义见 crates/tui/src/core/engine.rs。审批决策语义引擎审批实现位于 crates/tui/src/core/engine/approval.rs与approve/deny 键盘路由为权限决策、裸消息不执行门控动作的契约对应。GitHub 表面评审工作流 .github/workflows/codewhale-review.yml 与完整配置文档 docs/GITHUB_APP.md更广的自动工作流语境见 docs/AUTOMATIC_WORKFLOWS.md。贡献者署名表面.github/AUTHOR_MAP 与配套的 .github/scripts 收割流程。聊天桥接方向仓库根目录 integrations/ 下的telegram-bridge、feishu-bridge、wecom-bridge、weixin-bridge可作为理解多渠道扩展的辅助材料注意其中 Telegram 的正式后端控制面在文档所指 CWC 仓库中。综上Codewhale Agent 的核心设计可以浓缩为一句话无论用户从 GitHub 评论区、Telegram 会话还是 commit 图谱中遇见它背后都是同一个Engine::run_turn、同一个 Codewhale 会员身份以及同一套审批回流与审计纪律——这正是one identity, many surfaces的可执行定义。【免费下载链接】CodewhaleOpen-source coding agent for your terminal, built in Rust and on a journey of continuous community improvement. Issues and PRs welcome.项目地址: https://gitcode.com/GitHub_Trending/de/Codewhale创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

TanStack React Query 实战指南:在 React 中优雅地获取、缓存与更新异步数据

TanStack React Query 实战指南:在 React 中优雅地获取、缓存与更新异步数据

TanStack React Query 实战指南:在 React 中优雅地获取、缓存与更新异步数据 【免费下载链接】query 🤖 Powerful asynchronous state management, server-state utilities and data fetching for the web. TS/JS, React Query, Solid Query, Svelte Que…

📅 2026/9/10 14:30:48
HTTPS性能优化实战:TLS协议与加密套件调优

HTTPS性能优化实战:TLS协议与加密套件调优

1. HTTPS优化实战指南:从原理到性能提升作为一名经历过多次HTTPS性能调优的Web开发者,我深知一个配置不当的HTTPS连接可能让页面加载时间增加50%以上。本文将分享我在实际项目中验证过的HTTPS优化方案,涵盖协议配置、证书管理、会话复用等核心…

📅 2026/9/10 14:30:48
Cal.diy API v2 认证机制完全指南:API Key、OAuth 平台认证与错误处理实战

Cal.diy API v2 认证机制完全指南:API Key、OAuth 平台认证与错误处理实战

Cal.diy API v2 认证机制完全指南:API Key、OAuth 平台认证与错误处理实战 【免费下载链接】cal.diy Scheduling infrastructure for absolutely everyone. 项目地址: https://gitcode.com/GitHub_Trending/ca/cal.diy 本文面向需要在自研应用中对接 Cal.diy…

📅 2026/9/10 14:25:46
MORE NEWS

更多资讯

📰

OmniRoute 部署实战:使用 flyctl 将自托管 AI 网关发布到 Fly.io 的完整指南

OmniRoute 部署实战:使用 flyctl 将自托管 AI 网关发布到 Fly.io 的完整指南 【免费下载链接】OmniRoute Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150 free), 1200 models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Work…

📰

GIS投影那些事:格陵兰「放了气」→ 联合国三天前刚投票,美国不同意

为什么同一颗地球,换一种画法,国家会“变大”或“变小”? 你可能在手机地图上无数次见过世界地图,却很少意识到一个问题: 屏幕上的地球,其实并不是地球。 地球接近球体,而电脑屏幕是一张平面…

📰

在 CopilotKit 中接入 Microsoft Agent Framework (Python):从 AG-UI 后端到智能频道的完整实战指南

在 CopilotKit 中接入 Microsoft Agent Framework (Python):从 AG-UI 后端到智能频道的完整实战指南 【免费下载链接】CopilotKit The Frontend Stack for Agents & Generative UI. React, Angular, Mobile, Slack, and more. Makers of the AG-UI Protocol 项…

📰

基于C语言的铅笔姿态与笔迹检测装置设计与实现

简介:2024年陕西省大学生电子设计竞赛七校联赛C题完整源码,面向电子设计竞赛参赛者与嵌入式C语言进阶学习者。项目以铅笔姿态检测与笔迹识别为核心,包含完整工程文件、驱动代码与算法实现,并附有测评结果和过程记录。压缩包共297个…

📰

生成式 AI 初学者课程第 18 课:LLM 微调(Fine-Tuning)实战指南

生成式 AI 初学者课程第 18 课:LLM 微调(Fine-Tuning)实战指南 【免费下载链接】generative-ai-for-beginners 21 Lessons, Get Started Building with Generative AI 项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-fo…

📰

解决 tiny11builder 构建失败:“oscdimg.exe not found“ 完整排查与修复指南

解决 tiny11builder 构建失败:"oscdimg.exe not found" 完整排查与修复指南 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder 用 tiny11build…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬