- 先反问一轮:哪张表?哪个事件?
- 只能后台直写,绕过你开着的编辑器
- 你未保存的编辑和 AI 的写入互相覆盖
- 改完才看得见,出错只能回滚工程
NEW / CONTEXT AWARE MCP
让 AI 看见你正在看的那一屏
以前的 MCP 只知道工程里有什么,不知道你此刻停在哪。现在它看得见你所在的设计器窗口、正在编辑的表与事件、编辑器里还没保存的代码和光标位置——改动也写回你眼前那个编辑器,由你审查、由你亲手保存。
05If e.DataCol.Name = "单价" Then
06 e.DataRow("金额") = e.NewValue * e.DataRow("数量")
07End If- Kind
code_editor - TableName
表A - EventName
DataColChanged - CursorLine
6 - StillOpen
true
01 / WHY
少一轮反问,多一份把握。
同样一句「这个事件加个判断」,AI 知不知道你在看什么,结果完全不同。
- 指代直接生效:「这个窗口」「我正看的这个事件」
- 改动出现在你眼前的编辑器里,逐字可见
- 在你的实时代码上续写,不丢未保存的改动
- 保存与否你说了算,Ctrl+Z 一步撤销
02 / PERCEIVE
它感知到的,不止「哪个窗口」。
一次 get_designer_active_window 调用,返回你此刻在设计器里的完整处境。它是所有指代与改码路径判断的起点。
ActiveWindow最近获得焦点的设计器窗口
Kind 分六类:code_editor / global_code / form_designer / table_properties / project_properties / main,并从窗口标题解析出 TableName、EventName、Scope、FormName。
EditorCode编辑器里的实时代码
读的是你此刻屏幕上的内容,包含还没保存的改动——AI 在这份代码上续写,而不是在工程里那份旧的上面。
EditorCursorLine光标停在第几行
配合 EditorSelectedText 的选区,「这一段」「这里」这类指代能落到具体行,而不是让 AI 猜。
RecentWindows窗口切换历史
最新在前的窗口轨迹,每条一行。刚从事件编辑器切到表属性再切走,这条路径 AI 也看得到。
ActivatedAt这个现场多久之前的
带上「9 秒前」这样的相对时间——是你刚切进去的现场,还是半小时前搁那儿的旧窗口,AI 分得清。
StillOpen窗口是否还开着
决定能不能走前台改码。窗口已关就退回后台写入,不会往一个不存在的编辑器里写。
03 / FOREGROUND WRITE
前台改码:代码写进你的编辑器,保存权还在你手里。
不再是「AI 悄悄改完,你回头才发现」。改动整段替换进你打开的编辑器窗口,不落盘、可撤销,由你审查后亲手保存。
- 01
先问「你在哪个窗口」
AI 调用 get_designer_active_window,拿到 ActiveWindow、EditorCode 与光标位置,确认你确实开着这段代码。
- 02
在你的代码上改
以返回的 EditorCode 为底稿修改——包括你还没保存的那几行,而不是工程里那份旧的。
- 03
写回你眼前的窗口
调用 set_designer_editor_code,带上 ExpectedTitle 校验窗口标题;标题不符直接拒绝,防止改错窗口。
- 04
你审查,你保存
改动只在编辑器里,不落盘。看着满意再按保存;不满意 Ctrl+Z 撤回,或者干脆不保存。
{
"ExpectedTitle": "表A - DataColChanged",
"Code": "If e.DataCol.Name = ..."
}
' 标题不符 → 拒绝写入,绝不改错窗口| 对比项 | 前台改码 set_designer_editor_code | 后台直写 set_*_code |
|---|---|---|
| 改动在哪里出现 | 你正开着的编辑器窗口里,逐字可见 | 直接写进工程存储,屏幕上看不到 |
| 谁按下保存 | 你审查之后亲手保存 | 工具写入即持久化 |
| 怎么反悔 | Ctrl+Z 一步撤销,不保存即作废 | 只能再写一次覆盖回去 |
| 和未保存的编辑冲突 | 在你的实时代码上续写,不丢改动 | 你一保存就会互相覆盖 |
| 写错窗口 | ExpectedTitle 与窗口标题不符则拒绝写入 | 按名字定位,无窗口校验 |
| 适用场景 | 你正开着对应的代码编辑器时的首选 | 没开编辑器,或改的不是这个窗口的代码 |
04 / IN PRACTICE
两句话,就能验收。
下面两条是能力清单里对应的验收示例,装好之后你可以立刻自己试一遍。
「我现在正看着什么?」
打开表A的 DataColChanged 事件编辑器,切到 AI 客户端提问。
答出窗口类型、表名、事件名,以及编辑器里的实时代码——包括你刚敲进去还没保存的那几行。
「帮我优化当前这个事件的代码」
保持事件编辑器开着,直接提要求,不用说是哪张表、哪个事件。
修改直接出现在编辑器里,由你 Ctrl+Z 撤销或点保存生效,而不是在后台把事件悄悄改掉。
GET IT RUNNING
两项能力都已在商业版验收通过。
上下文感知与前台改码随工具箱一起提供,不需要额外配置:装好对应版本、启动本地 MCP 服务即可使用。