Graft:让 Agent 接力跑长链路,而不是每个会话都从零开始

工程师每天的工作分两端——云端跑重型 Agent 分析、本地 IDE 写代码。Graft 把两端打通:本地 IDE 直接拿云端 KB 当 RAG、嫁接已有 session 的产出物、把任务派回云端长寿命会话异步跑。

返回

一个会话不应该是孤岛。当工程师做完一份 ASPICE 追溯分析、生成了一份 178 条变更的影响清单,下一个会话「做回归测试派生」时应当直接复用前一个会话的产出,而不是重跑一遍。Graft 把"接力"做成了一类基础能力。

它解决什么问题

工程师每天的工作分两端:

  • 云端 combo agent:跑 ASPICE 追溯、需求审计、跨基线变更分析、新颖性检索等"重型"分析任务,并沉淀到云端 KB
  • 本地 IDE(Cursor / Claude Code / Codex / Trae):改代码、跑测试、提 PR、写文档

两端要打通的不止是"复制粘贴 session 摘要"。Graft 在一个 skill 包里把这件事抽成三类用途

用途解决什么典型场景
A · KB 检索让本地 agent 把云端 KB 当成 RAG 数据源——不依赖云端 session 也能直接查文档 / chunk写代码时翻阅团队规范、查历史项目设计文档
B · Session 嫁接把云端已有 session 的 digest / round / 产出物拉到本地上下文里继续工作拿到同事的 ASPICE 追溯结果在本地继续改代码
C · 任务派发把一段新指令丢回云端某个长寿命 session 异步跑(重型计算 / 工具栈不在本地)本地触发"重跑覆盖率审计"任务

A 类是纯 RAG(不开 session);B 类是只读 graft;C 类是唯一一种"写入"入口——它不能创建/删除 session 或文件,只能给 已存在 的 session 多触发一轮。

架构

Rendering diagram…
  • 服务端api/apps/graft_app.py 暴露 user-level 端点
  • 认证:复用 web UI 的 itsdangerous 签名 access_token,登录走平台已有的 /v1/user/login
  • 客户端:4 个 Python 脚本(login / whoami / logout / call)+ 单一公钥文件
  • 写动作拦截:在 client 与 server 双层拦截;只有 dispatch_task唯一允许 的写入路径

三类用法详解

A · KB 检索:本地 agent 当云端 KB 是 RAG

工程师在 Cursor 里改代码,遇到不熟的模块。问 AI:

"团队 ASPICE 追溯规范是什么?这个文件应该怎么标 req-Id 注释?"

本地 agent 调用 graft-comboagent skill:

# 列出可用 KB
python scripts/call.py list_kbs
 
# 在指定 KB 里语义检索
python scripts/call.py search --source document \
  --kb-id <kb_id> \
  --query "ASPICE 追溯规范 req-Id 注释"

返回多个相关 chunk,本地 agent 直接基于这些证据回答 —— 不用打开 web 端不用启动新的云端 session

适用场景:

场景价值
查团队编码规范本地 IDE 不离手
查历史项目设计文档写代码时随时查
查客户合同 / 客户惯例报价时秒级取
查 ASPICE / 26262 / 21434 标准条款写代码时合规对照

B · Session 嫁接:拿同事的会话继续工作

场景:同事在云端做完一次 ASPICE 追溯,生成了 178 条变更影响清单。你在本地 IDE 里要根据这份清单改代码。

# 列出我能看到的所有 session
python scripts/call.py list_sessions
 
# 拉一个 session 的 digest(摘要)
python scripts/call.py get_digest --session-id <session_id>
 
# 拉某一轮的完整内容
python scripts/call.py get_round --session-id <session_id> --round-id <round_id>
 
# 拉 session 里某个产出物(比如那份 178 条变更清单 xlsx)
python scripts/call.py download --session-id <session_id> --file-id <file_id> \
  --output ./change_impact.xlsx

本地 agent 拿到这些数据后,直接基于真实的变更清单改代码、跑测试、提 PR —— 而不是"复制粘贴一段摘要"。

适用场景:

场景价值
接手同事的 ASPICE 追溯结果不重跑分析
复用上一周的需求理解上下文延续
跨周期跟进一个长项目历史可查

C · 任务派发:把重活丢回云端

场景:本地 IDE 里改完代码,要重跑一次完整 ASPICE 覆盖率审计 —— 这事在本地跑不动(需要重索引 + 跨 ALM 拉数据 + 重模型)。

# 把任务丢到云端某个已存在的长寿命 session
python scripts/call.py dispatch_task \
  --session-id <coverage_audit_session> \
  --prompt "代码已更新到 commit abc1234,重跑一次完整覆盖率审计,按 ASIL 等级分组。"

云端 session 异步跑,跑完后本地通过 get_round 拉结果。

强约束

  • dispatch_task唯一允许 的写入入口
  • 不能创建新 session
  • 不能删除 session / 文件
  • 只能给 已存在 的 session 多触发一轮

这种设计保证:本地 agent 不会因为 prompt injection 在云端做破坏性操作。

强约束(安全设计)

维度设计
认证RSA 加密 password 登录,得到 signed token;token 文件权限 0600
租户隔离_verify_graft_access 校验同租户,不允许跨租户访问
可见性只能看到自己有权限的 session / KB / 文件
写动作双层拦截client 端拦 + server 端拦,双保险
审计日志每次 graft 调用都记录 timestamp + user + action

与"复制粘贴 session 摘要"的差异

维度复制粘贴摘要Graft
数据量受限于 LLM 上下文窗口按需检索任意大量数据
真实性摘要可能丢关键细节原始数据可下载
更新摘要发完就过时实时拉取最新
联动单向(本地 → 本地)双向(本地 ↔ 云端)
安全复制粘贴可能泄露强制走授权链路

安装与首次使用

# 1. 拷贝 skill 到 IDE 宿主
cp -r skills/graft-comboagent ~/.cursor/skills/   # 或 ~/.claude/skills/
 
# 2. 安装 Python 依赖
pip install requests pycryptodome
 
# 3. 登录
cd ~/.cursor/skills/graft-comboagent
python scripts/login.py
# 输入服务器 URL + email + password
 
# 4. 重启 IDE 让 skill 被 discovery

详细安装与配置见 graft-comboagent 技能页

典型工作流:ASPICE 案例的本地-云端联动

Rendering diagram…

常见问题

Q:本地 agent 安全吗?会把代码上传到云端吗? A:本地 agent 默认不上传代码。只有当工程师明确调用 graft action(如检索 KB、嫁接 session)才发起请求,且每次请求的内容工程师可见。

Q:能在生产 CI 里跑 graft 吗? A:能。但建议用专门的 service account 登录,避免用个人 token。

Q:dispatch_task 能不能跑任意命令? A:能跑任意 prompt,但只在已存在的 session 上下文里跑,并继承该 session 的权限。等于工程师在自己的 session 里多发了一句话。

Q:与 Cursor 自带的 docs 索引比有什么不同? A:Cursor docs 是单向静态文档。Graft 能力上覆盖:动态会话嫁接(B 类)、任务异步派发(C 类)、跨语种 KB 检索(A 类)。

Q:私有化部署支持吗? A:支持。把 server URL 改成客户内网地址即可。

完整 action 清单与 SKILL.md 见 graft-comboagent 技能页;底层机制看 核心概念 · Graft

作者

Nox-Lumen Tech-team

发布日期

2026年5月14日