如何用 ECC 的 Plan Canvas 在浏览器中审阅并批准计划?

发布时间:2026/9/10 11:42:29

如何用 ECC 的 Plan Canvas 在浏览器中审阅并批准计划? 如何用 ECC 的 Plan Canvas 在浏览器中审阅并批准计划【免费下载链接】ECCThe agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.项目地址: https://gitcode.com/GitHub_Trending/ev/ECC在 ECC 中跑/plan后agent 会写出.claude/plans/{name}.plan.md然后停在一个硬性确认门槛上你必须打字回复 yes/proceed 它才会动手写代码。问题在于审阅时你面对的是一整墙终端 Markdown想改哪一段只能重新敲一遍。Plan Canvas 把这道确认门槛搬到浏览器里agent 把计划产物打开在一个仅回环地址127.0.0.1:4517的画布页面上你在页面上直接点击元素或选中文字加标注、在侧边栏和 agent 聊天最后点Approve plan或Request changes——这次点击就等同于对/plan的正式确认。前提条件你能运行 shell 命令并读取 stdout 的任意 agent 环境Claude Code、Codex、Cursor、Gemini、OpenCode、Copilot 都按同一套 CLIJSON 循环驱动本地存在一个待审阅的计划产物文件本地.md/.html不支持 diff 审阅、运行中的 web 应用和远程 URL。Plan Canvas 自 ECC 2.1.0 起提供。准备安装 CLI 并确认计划产物ecc-plan-canvas是可执行文件名有两条获取路径# 全局 npm 安装bin 会进入 PATH npm install -g ecc-universal插件安装场景下bin 不一定在 PATH 上文档给出的等价调用方式是node $CLAUDE_PLUGIN_ROOT/scripts/plan-canvas.js安装后不带参数运行一次ecc-plan-canvas会显示当前服务器状态与打开的会话列表可用来确认 CLI 可用。被审阅的产物是/plan写出的计划文件例如.claude/plans/notifications.plan.md。Markdown 计划会按 ECC 的计划模板渲染含表格、任务列表、代码块和 Mermaid 图.html产物则原样渲染并注入标注层。图片、CSS 等附属资源必须与产物文件放在同一目录并用相对路径引用。如果你在 Claude Code 中也可以直接输入/plan-canvas [path/to/artifact.plan.md]Codex 中是$plan-canvas触发同样的流程不传路径时它会解析为你最近修改的.claude/plans/*.plan.md再找不到就询问你要审阅什么。在浏览器中打开计划在项目根目录执行ecc-plan-canvas open .claude/plans/feature.plan.md该命令立即返回它在后台启动或复用一个 detached 的回环服务器127.0.0.1:4517该服务器被所有会话共享、按产物路径作为 key不需要你追踪 session id。浏览器窗口随即打开显示渲染后的计划。两个可选参数--no-open不弹出浏览器窗口仅登记会话--reopen只有当用户要求恢复一个已由其本人从浏览器关闭的会话时才使用。普通的open对已结束的会话会被拒绝服务器返回409 user-ended。注意编辑产物文件本身就是刷新手段——画布在文件保存时自动热加载不要靠重跑open来刷新页面。等待反馈await 与 JSON 结果ecc-plan-canvas await .claude/plans/feature.plan.mdawait会阻塞直到人类在画布上动作发消息、加标注、点裁决按钮、或结束会话然后把反馈以 JSON 打印到 stdout进度提示走 stderr保持 stdout 可解析。如果调用被中断了不要紧排队的反馈会持久化在磁盘上重跑await即可不会丢。文档示例——一次包含标注和裁决的反馈输出{ status: feedback, items: [ { kind: annotation, text: Split this into two phases, anchor: { selector: h2:nth-of-type(3), tag: h2, snippet: Phase 2: Migration } }, { kind: verdict, verdict: request-changes } ] }items里会出现三种kindchat自由消息。要在画布里回答而不是只在终端里回答annotation指向具体元素的反馈。anchor.selector是 CSS 选择器anchor.snippet是被指向的文本片段如果用户高亮了一段文字还会有anchor.textRange.textverdictapprove表示计划已确认——停止轮询、结束会话、开始实现request-changes表示需要修改产物画布会自动热加载你的修改然后继续等待下一轮反馈。await的返回状态还可能是ended会话结束、waiting--timeout-ms到期仅限测试/调试或missing文件不存在。保持监听是关键。反馈只有在你有一个真正挂起的await时才能送达。如果你的回合结束时没有任何东西在监听用户发来的消息会滞留在队列里从用户的视角看就是发了消息毫无反应。文档建议如果你的 harness 支持后台任务Claude Code 中即 Bash 调用加run_in_background: true把await作为后台任务运行它收到反馈就退出并交回 JSON循环因此跨回合存活。前台await也能用但只撑到 harness 限时为止。两个兜底机制# 列出排队了但没有监听者的反馈不确定是否漏听时检查 ecc-plan-canvas pending另外可选的stop:plan-canvas-pendinghook 会在画布反馈未送达时阻止你的回合结束并把消息交给你——如果你是在这个 hook 里读到反馈的说明你提前停止了监听。处理 Request changes改文件、在画布里回复、继续等待收到request-changes或标注后循环是修改产物文件 → 在画布聊天里回复 → 继续await。# 修改完 .plan.md 后先回复再等待一条命令同时做两件事 ecc-plan-canvas await .claude/plans/feature.plan.md --reply Split Phase 2 as requested. Take a look.--reply会在等待前把你的回复放进画布聊天面板。文档强调每条人类消息都应在画布中得到回复哪怕只有一句 On it, rewriting the risk table now.——聊天面板里沉默和画布坏了在观感上无法区分。修改耗时较长时用活动指示器保持聊天状态诚实# 显示agent is thinking...动画气泡修订超过一分钟时刷新一次 ecc-plan-canvas typing .claude/plans/feature.plan.md --state thinking # 回复落地前切换到agent is typing... ecc-plan-canvas typing .claude/plans/feature.plan.md --state typingawait把一批反馈交给你时会自动置为thinking--reply会清除它。两种状态都会自行过期agent 崩溃时指示器会退回到诚实的 queued而不是让用户永远盯着转圈。计划中如果是流程图、架构图、时序图、状态机或依赖图写成围栏的mermaid代码块而不是 ASCII 图画布会把它渲染成可被点击标注的主题化图表。Mermaid 从固定 CDN 加载离线时该块退化为显示源码审阅不会被阻塞气隔环境可通过ECC_PLAN_CANVAS_MERMAID_URL指向本地镜像。结束审阅批准或关闭verdict为approve时计划即视为确认停止轮询、结束会话、开始实现。结束由 agent 侧调用ecc-plan-canvas end .claude/plans/feature.plan.md完整的批准主路径长这样命令与输出取自 skill 文档的示例ecc-plan-canvas open .claude/plans/notifications.plan.md ecc-plan-canvas await .claude/plans/notifications.plan.md # → {status:feedback,items:[{kind:verdict,verdict:approve}]} ecc-plan-canvas end .claude/plans/notifications.plan.md # 计划已确认——开始实现如果await返回{status: ended, endedBy: user}或反馈批次带sessionEnded: true说明用户从浏览器关闭了审阅停止轮询、把剩余更新通过聊天交代清楚不要重新打开。服务器本身空闲 30 分钟后自动退出可用ECC_PLAN_CANVAS_IDLE_MS调整ecc-plan-canvas stop可显式关闭它。排查与限制用户说发了消息没反应几乎总是因为没有await挂起。先跑ecc-plan-canvas pending看有没有排队反馈。不要轮询用--timeout-ms写循环轮询是测试用途的反模式保持普通await运行即可。不要只读反馈、只在终端回答用户盯着的是画布回复必须进画布聊天。服务器仅绑定回环地址每次请求做 Host/Origin 白名单检查服务器只把产物内容投递给浏览器不执行产物内容。会话状态文件在~/.claude/plan-canvas/ECC_PLAN_CANVAS_STATE_DIR可覆盖端口可用ECC_PLAN_CANVAS_PORT覆盖。不要解析状态文件来获取聊天内容——你需要的一切都会经由await的 JSON 到达。相关文档plan-canvas skill 全文、/plan-canvas 命令、设计文档、CLI 入口、实现目录。【免费下载链接】ECCThe agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.项目地址: https://gitcode.com/GitHub_Trending/ev/ECC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/10 11:37:29

C++数据库连接池设计与性能优化实践

1. 为什么需要数据库连接池? 在C后端开发中,数据库操作是系统性能的关键瓶颈之一。每次建立数据库连接都需要完成TCP三次握手、认证、权限检查等系列操作,实测MySQL创建单个连接的平均耗时在50-200ms之间。在高并发场景下,频繁创建…

2026/9/10 12:42:40

CANN/GE算子编译注册函数

aclopRegisterCompileFunc 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、…

2026/9/10 12:42:40

工业电参模块设计与应用实战解析

1. 工业电参模块的核心价值与应用场景在工业自动化领域,电能质量监测就像给生产线装上了"心电图仪"。我们团队在去年为某汽车焊接产线改造时,发现传统钳形表抽查方式导致15%的异常工况被遗漏。换上电参模块后,不仅实时捕捉到电压暂…

2026/9/10 12:42:40

51单片机+MAX517实现三路可调波形发生器

简介:本资源是一套基于51单片机的简易波形发生器完整开发包,面向电子类专业学生、嵌入式初学者及单片机课程实践者,解决基础信号源设计与软硬件协同调试的学习需求。资源包含19个文件,总计55KB,涵盖核心C语言源程序&am…

2026/9/10 12:42:40

Linux常用命令速查手册:文件操作、文本处理与系统监控实战指南

Linux 命令这东西,属于典型的“用时方恨少,查完就忘掉”。我日常跟服务器、跟嵌入式设备、跟一堆跑在虚拟环境里的实例打交道,很多命令说实话不是“记不住”,而是“没必要全记在脑子里”。真正高效的用法是脑子里建立一张索引图&a…

2026/9/10 12:42:40

PRI变换、CDIF与SDIF:雷达信号分选算法详解与MATLAB实现

简介:这是一份面向雷达信号处理学习与研究者的MATLAB代码包,聚焦脉冲重复间隔(PRI)变换、CDIF与SDIF三种信号分选方法,帮助解决雷达回波中目标识别与干扰抑制问题。压缩包共8个文件,包含3个.m源码脚本与5个…

2026/9/9 13:11:35

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/10 11:16:38

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 0:00:55

目录对比去重实战:用哈希算法精准清理重复文件

我电脑里现在还有一块换了三次机的“数据墓地”硬盘,里面存着2016年以前所有旧笔记本的完整备份。平时不觉得有什么,直到前阵子想把它整理归档,发现同一个安装包、同一批照片、同一份论文草稿,在几个不同的备份目录里反复出现。更…

2026/9/10 0:00:55

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:55

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码