把开发任务交给 Agent,查看过程、审批工具、导出报告
开源 AI Agent 运行时与可视化工作台
对话驱动任务 · 实时工具追踪 · 人工审批 · 会话记忆 · Kubernetes 沙箱
中文 · English
产品演示 · 算子优化实战 · 核心能力 · 系统架构 · 快速开始 · 文档导航
⭐ Star KitAgent · 开始使用 · 阅读实现
KitAgent 面向想使用、学习或扩展 AI Agent 的开发者。你描述任务,Agent 阅读代码、修改文件、执行命令;你在自己的工作台中查看工具输入输出、决定是否批准调用,并导出包含结论和执行记录的报告。
你可以从这三件事开始:
- 完成开发任务:让 Agent 检查仓库、执行测试、整理报告,在同一会话里补充要求、继续修改。
- 学习 Agent 如何运行:沿着任务、工具调用、人工审批和事件记录阅读实现,再查看会话记忆、持久化恢复与沙箱的设计。
- 扩展自己的工作流程:用 Markdown Skills 保存步骤,通过 MCP 接入工具,用 Subagents 拆分独立子任务。
先看操作演示,或直接启动工作台;希望研究实现,可以从系统架构进入。
从算子规格,到实现、正确性验证与性能实测。
Equal 算子开发 · 广播与边界验证 · 基线性能对比 · 开发报告
查看高清截图 · 下载完整视频 · 启动工作台
以 Equal 算子开发为例:
开发 Equal 算子,支持标量广播,验证正确性并对比基线性能,生成开发报告。
| 步骤 | 你在工作台中看到的内容 |
|---|---|
| ① 确认规格 | 读取 Equal 规格,明确等长比较、标量广播与边界语义。 |
| ② 编写实现 | 审批写入算子实现,将等长与广播路径分开,移除逐元素取模索引。 |
| ③ 验证与实测 | 审批运行测试,验证 75 个用例;对三组输入预热 3 次、采样 9 次,对比中位耗时。 |
| ④ 交付报告 | 审批保存开发报告,读回核对结果;导出结论、工具证据和审批记录。 |
工作台提供「只读 / 按需询问 / 自动批准」三种会话权限模式,并支持查看和撤销已记住的工具授权。
内置离线演示 · 脚本化模型响应 + 实际工具执行 · 在本机体验
算子把数学运算变成硬件上的数据搬运与计算。以 Equal 为例,比较两个数只需一步,但处理整块 Tensor 时,还要安排广播索引、分块搬运和多核执行。性能优化就从这些安排入手。
这里用两个案例带你走完开发过程:从 Equal 学会广播、分块与复用,再用 SparseFlashAttentionGrad 理解矩阵核与向量核协作、流水排程和负载均衡。你可以在 KitAgent 中逐轮分析、修改、执行测试,并查看每一步的工具输出。
Equal 对两个 Tensor 逐元素比较,输出 BOOL。输入 [2,1] 和 [1,3] 时,输出是 [2,3]:一边沿列重复,另一边沿行重复。实现时可以通过地址映射读取原输入,让每一块输出找到对应的数据。
第一步,把重复的索引工作提前算好。 Host 合并广播模式相同的相邻维度,预计算每一维的 stride。Kernel 每次定位一段连续数据,随后成批比较,减少内层循环的坐标计算。
第二步,让搬进来的数据多用几次。 按输入类型和 UB(片上缓冲区)容量确定 tile 大小,将输入、输出和计算暂存一起纳入预算。标量缓存、广播面缓存和尾行复用减少重复读取;多核切分让各核处理自己的输出区间。
第三步,把数值语义放进测试。 浮点比较覆盖 NaN、正负零和无穷大;INT64 将高低 32 位分别比较,再合成结果,保留完整整数信息。通过 ACLNN 接口,把参数校验、计算和输出交付串起来。
| 开发环节 | 学到的方法 | 交付结果 |
|---|---|---|
| 规格与基线 | 用广播示例和特殊值定义正确行为。 | 输入输出契约、CPU golden、测试矩阵。 |
| Tiling 与 Kernel | 在 Host 预处理索引,在设备上按块比较和复用数据。 | 广播轴压缩、多核分块、向量比较、缓存复用。 |
| 验收与合入 | 固定版本,对照结果,汇总逐项测试。 | 306/306 精度通过,代码通过 cann/ops-math PR #5425 合入。 |
稀疏 Attention 反向计算需要生成 dQ / dK / dV 三路梯度,同时处理索引、系数和梯度累加。优化时要一起考虑每块数据何时就绪、交给哪个核、结果在哪里汇总。
先优化频数统计。 稀疏索引 [2,0,2,3] 对应 key [0,1,2,3] 的频数是 [1,0,2,1]。重复 key 的贡献按次数进入梯度。将索引排序后,用累计计数边界的差批量生成频数,可以改变逐条读写计数槽的处理方式。
再拆开计算与协调。 AIC(矩阵核)执行矩阵乘,AIV(向量核)处理频数和系数,并汇总就绪信号。用时间线把生产系数、发布信号、等待和梯度计算连起来,就能找到谁在阻塞下一轮。
最后按完整任务分核。 将 512 行切成 128 / 128 / 128 / 64 / 64 后,还要把各核后续的 dK / dV 归约计算进去。短块核承担的查询行少,却可能因为额外归约工作拖长收尾;把部分归约重新分给长块核,就能改善整组任务的完成时间。
五分片动态演示: 512 行分块 → 找到短块核尾部 → 长块核分担归约 → 双顺序对照。
下面这轮 910B3 五分片样机实验,展示了如何用测量推动下一次修改:
| 迭代 | 观察 | 方法 |
|---|---|---|
| 初次分片 | 两种测量顺序下,耗时分别增加 4.76% / 1.47%;dK / dV 尾部集中在短块核。 | 同时统计查询行和梯度归约的负担。 |
| 调整任务归属 | 正序 280.17 → 258.99 μs;反序 275.31 → 259.71 μs。 | 重新分配归约,耗时分别下降 7.56% / 5.67%。 |
| 集成回归 | R5 在 910B4 / CANN 8.5.0 下完成 56 份 FP16 精度报告、112 次毒值检查。 | 对完整梯度、输出写入和输入不变性一起验证。 |
这一轮的关键是:测出尾部集中在哪里,将查询与归约合起来分配,再用相同条件对照验证。下一次优化继续从新的时间线开始。
| 步骤 | 要解决的问题 | 具体做法 |
|---|---|---|
| ① 测量耗时 | 时间花在计算、搬运还是等待? | 跑通基线,用 profiling 和时间线找到决定完成时间的阶段。 |
| ② 减少搬运 | 同一份数据读写了多少次? | 融合相邻计算,把数据切成能放进片上存储的小块,让中间结果和重复输入就地复用。 |
| ③ 安排并行 | 哪些核在忙,哪些核在等? | 让矩阵核做矩阵乘、向量核处理系数;交叠搬运与计算,按实际工作量分配任务。 |
| ④ 对照验证 | 这项改动带来了什么变化? | 对齐输入和环境,检查参考输出,重复测量基线与候选,记录差异并选择下一项优化。 |
延伸阅读:小林coding 的《杀进决赛!这 28 支队伍把算子优化卷疯了!》从数据搬运、分块复用和任务分配讲解算子优化。
在工作台中提供源码、任务说明、参考实现和测试命令,用同一会话推进分析、修改和验证。你可以随时补充要求,在工具时间线查看执行过程,从审批卡决定工具调用,最后导出运行报告。
| 轮次 | 交给 Agent 的任务 | 你检查的产物 |
|---|---|---|
| 读懂任务 | 解释输入输出,画清数据依赖,整理构建和测试入口。 | 计算步骤、验证命令、正确性基线。 |
| 找到瓶颈 | 分析 profiling,比较算法、搬运和任务分配方案。 | 耗时分布、优化假设、候选改动。 |
| 跑一轮实验 | 修改候选,执行精度测试与配对测速。 | 代码差异、逐项结果、前后耗时。 |
| 继续迭代 | 根据结果保留或调整方案,完成集成回归。 | 可交付版本、实验结论、运行报告。 |
请协助优化工作区中的算子。
先阅读任务说明、源码与参考实现,整理输入输出、数据依赖、
构建命令和测试入口,建立正确性与性能基线。
分析时间花在计算、数据搬运、索引处理还是核间等待。
选择一项优化,解释它如何减少开销,保存基线并实现候选。
使用相同输入检查输出,按基线→候选、候选→基线的顺序
重复测速。汇总代码改动、精度结果与耗时变化,
据此决定下一轮实验,最后生成可复盘的优化报告。
处理更大的任务时,可用 Subagents 分别研究算法、流水线和测试,由主任务汇总方案、安排设备测量并完成集成。将成熟步骤整理为 Skills,下一次开发继续复用。
启动工作台,把你的算子优化任务交给 Agent。
把一次算子优化组织成可追踪的工作流:制定计划、验证候选、评估性能、诊断重试、审核交付。每个节点更新共享状态,下一步由验证结果与审核决定驱动。
flowchart LR
A[plan 任务规划] --> B[validate 精度检查]
B -->|通过| C[benchmark 性能评估]
B -->|失败| D[diagnose 诊断与迭代]
C -->|退化| D
D -->|继续迭代| B
D -->|达到上限| F[fallback 保留基线]
C -->|达标| E[review 审核中断]
E -->|approve| G[deliver 接受候选]
E -->|reject| F
G --> H[report 输出报告]
F --> H
| LangGraph 场景 | 示例实现 | 你能看到什么 |
|---|---|---|
| 有状态工作流 | StateGraph 保存阶段、候选序号、决策历史和选中版本 |
每轮结果随状态流转,失败记录持续保留 |
| 条件路由 | 精度与性能结果决定后继节点 | 精度失败跳过计时,性能退化进入诊断 |
| 迭代与终止 | max_attempts 控制候选轮次 |
预算耗尽后保留基线并生成报告 |
| 审核与恢复 | interrupt() 暂停,Command(resume=...) 传回决定 |
批准后交付,拒绝后保留基线 |
| 检查点 | InMemorySaver 按 thread_id 保存进程内状态 |
从审核节点续跑,已完成的评估保持原样 |
| 工具集成与观测 | KitAgent Graph 引擎调用工作流工具,业务图输出节点更新 | 同时观察 model / kit_tools 与业务阶段,导出 JSON 报告 |
运行一次完整流程:
uv run --frozen --extra graph python examples/operator_workflow_demo.py --review approve --output operator-report.json切换 --review reject 查看审核拒绝分支;设置 --max-attempts 1 查看提前结束与基线保留。--review 指定本次演示在审核检查点恢复时使用的决定。
内置案例使用 SparseFlashAttentionGrad 的归档实验记录:五分片初稿退化后进入下一轮,重分配候选通过评估后进入审核。报告保留各候选的对照耗时、变化率、来源、审核决定及最终版本。
查看状态机代码 · 查看分支与恢复测试 · 了解 KitAgent Graph 引擎
在 Web 工作台中对话、审批和查看报告,在 CLI 中提交任务与接入脚本,在 Textual TUI 中进行终端交互。三种入口共用运行时协议,任务执行和会话状态由 Core 管理。
Web 网关持续连接 Core,刷新浏览器后可以继续观察正在执行的任务。
通过流式回复和工具时间线查看任务进展:调用了什么工具、输入是什么、结果如何、用了多久。每次运行的事件保存到 events.jsonl,支持历史回放;父任务与子任务通过关联标识串联。
运行报告汇集本轮结论、工具输出和审批记录,方便复盘与分享。
通过多轮对话补充要求、调整任务方向;通过审批卡片决定工具是否执行。你可以为当前会话记住某个工具的授权,也可以从权限菜单中撤销。
工具注册、参数校验、权限策略和执行记录采用同一套机制,内置工具与 MCP 工具都能接入。
会话历史、长期笔记和压缩摘要分层保存,让 Agent 在后续轮次中沿用已有信息。使用 Markdown Skills 封装工作流程,通过 MCP 连接外部工具,将独立子任务交给拥有各自上下文的 Subagents。
默认 Loop 引擎运行模型与工具循环;可选 LangGraph 引擎提供显式节点编排。启用 Graph + SQLite + Local 后,可保存执行检查点与审批中断,在 Core 重启后续接任务,并复用已经记录的工具结果。
本地开发使用 Local 工具环境;需要独立工作区时,启用 Kubernetes Sandbox,为每个会话按需创建 Pod。同一会话中的多轮任务与子 Agent 共用工作区,支持资源限制、网络策略、空闲回收和关闭清理。
高清 PNG · 可编辑 draw.io 源文件 · 架构设计详解
任务路径: 提交目标 → Core 创建任务 → 执行引擎调用模型 → 工具审批与执行 → 事件推送 → 会话结果。
| 层次 | 技术与职责 |
|---|---|
| 交互层 | React 19、TypeScript、assistant-ui、Textual;提供 Web、CLI 与 TUI。 |
| 连接层 | FastAPI、WebSocket;网关通过 JSON-RPC 2.0 / NDJSON TCP 连接 Core。 |
| 运行时 | Python 3.12、asyncio、Pydantic v2;管理会话、任务、权限与事件。 |
| 执行引擎 | Loop / LangGraph;复用模型、工具和会话接口。 |
| 模型接入 | Anthropic Provider;通过服务端配置设置模型与 API Key。 |
| 工具环境 | Local / Kubernetes;承载命令执行与文件操作。 |
| 持久化与扩展 | JSONL、Markdown、SQLite;支持事件回放、记忆、恢复、Skills 与 MCP。 |
2026-09-09,在 单节点 kind / Kubernetes v1.36.4 / Cilium 1.20.1 环境完成沙箱验收,使用离线 Provider 与预加载镜像。
| 验证项 | 结果 |
|---|---|
| 真实集群验收 | M1 13/13,M2 442/442,覆盖 12 类实验。 |
| 并发会话隔离 | 20 个 Session,200 次跨会话读写探测,泄漏 0。 |
| 创建与回收 | 100/100 完成,最终资源残留 0。 |
| 沙箱冷启动 | 到 Ready 的 p95 为 3.52 s,30 个样本、串行采样。 |
| 就绪后执行开销 | p95 19.26 ms,100 个样本,按 Core 总耗时减 Worker 命令耗时计算。 |
以下命令在 Linux / WSL2 的 Bash 中运行。准备 Python 3.12、uv;Web 工作台还需要 Node.js 22.12+ 构建前端。
git clone https://github.com/zed123214/kitagent.git
cd kitagent
uv sync --frozen --extra web
cp .env.example .env编辑 .env,填写模型服务配置:
ANTHROPIC_API_KEY=your-api-key
AGENTRT_LLM_DEFAULT_MODEL=claude-sonnet-4-6cd frontend
npm ci
npm run build
cd ..在项目根目录打开两个终端。
终端一 · Core
uv run --frozen --extra web agentrt-core终端二 · Web 网关
uv run --frozen --extra web agentrt-web打开网关输出的启动链接(http://localhost:8765/#bootstrap=…),新建会话,即可提交第一条任务。默认使用 Loop + Local,工具在 Core 的工作目录中执行。
Core 启动后,在另一个终端使用 CLI 或 TUI:
# 检查连接
uv run --frozen --extra web agentrt ping
# 提交任务
uv run --frozen --extra web agentrt run --goal "阅读项目结构,整理主要模块及其职责"
# 打开终端交互界面
uv run --frozen --extra web agentrt-tui运行模型 → 工具 → 模型的离线示例:
uv run --frozen --extra graph python examples/graph_offline_demo.py体验 Core 重启后续接任务、复用已完成的工具结果:
uv run --frozen --extra graph-sqlite python examples/durable_recovery_demo.py浏览器离线演示见工作台说明。
| 模式 | 适用场景 | 使用指南 |
|---|---|---|
| Loop + Local | 浏览器工作台、本地开发与日常任务 | 工作台 · 运行手册 |
| Graph + Memory | 显式节点编排与进程内会话续接 | Graph 引擎 |
| Graph + SQLite + Local | Core 重启恢复与持久化人工审批 | 恢复配置 |
| Loop / Graph Memory + Kubernetes | 按会话分配的容器工作区 | 沙箱部署 |
| 我想…… | 从这里开始 |
|---|---|
| 使用浏览器工作台 | Web 工作台 |
| 配置并运行项目 | 运行手册 |
| 理解任务执行链路 | 系统架构 · Agent Loop |
| 使用 Graph 与故障恢复 | Graph 引擎 · 持久化恢复 |
| 部署 Kubernetes 沙箱 | 部署指南与验收复现 |
| 配置权限和会话记忆 | 工具权限 · 会话记忆 |
| 学习算子优化工作流 | Equal 与 SparseFlashAttentionGrad 案例 |
| 扩展工作流程与工具 | Skills / Subagents / MCP |
| 开发客户端或参与贡献 | 通信协议 · 贡献指南 |
欢迎通过 Issues 分享使用场景、反馈问题,或提交 Pull Request。开发环境与检查命令见 CONTRIBUTING.md。


