AI 辅助编程
本文以 OpenCode 为例,说明如何通过 MCP Coding 接入 DataFlux Func,让 AI Agent 在授权范围内阅读代码、修改脚本、执行草稿验证,以及处理资源目录中的文件。
如果只需要了解最基础的接入步骤,可以先阅读 MCP 服务 / MCP 编程。本文在此基础上补充更完整的权限配置、提示词示例和本地缓存目录工作流。
请按任务拆分最小权限
MCP Coding 可以读取、修改、执行和发布 DataFlux Func 中的对象。为 AI Agent 创建 Access Token 时,建议按任务开放最小范围,例如只读代码时不要开放写入和发布权限,修改单个脚本时不要开放整个资源根目录。
1. 使用 OpenCode 接入 MCP Coding
1.1 创建 Access Token
在 DataFlux Func 中进入:
管理 / Access Token / 当前 Access Token 行的「配置」 / 配置 Access Token / MCP 编程 / 规则
开启「MCP 编程」后,为当前任务配置规则。规则从上到下依次匹配,首个命中的规则决定是否允许访问。
常见规则如下:
| 规则 | 说明 |
|---|---|
scriptSet:demo:r |
允许读取脚本集 demo 及其下属脚本 |
scriptSet:demo:rwxp |
允许读取、创建、修改、删除、执行和发布脚本集 demo 下的脚本 |
script:demo__tools:rwxp |
允许读取、修改、执行和发布脚本 demo__tools |
funcAPI:demo*:rw |
允许读取、创建、修改和删除匹配 demo* 的函数 API |
apiAuth:demo*:rw |
允许读取和修改匹配 demo* 的 API Auth |
fileManager:demo_cache:rw |
允许读写资源路径 demo_cache |
fileManager:demo_cache/*:rw |
允许读写资源路径 demo_cache 下的文件和目录 |
fileService:demo_cache:rw |
允许读取和修改文件服务 demo_cache |
connector:guance:rx |
允许读取并执行连接器 guance |
envVariable:demo_*:r |
允许读取匹配 demo_* 的环境变量 |
cronJob:demo*:rwx |
允许读取、修改并手工触发匹配 demo* 的定时任务 |
规则后可以添加 # 注释,系统保存规则时会忽略这些注释:
| 规则示例 | |
|---|---|
1 2 3 4 5 6 | |
空规则表示无权限
如果 MCP 编程规则为空,AI Agent 连接成功后也无法看到脚本、资源文件或其他对象。此时应让 AI Agent 输出最小权限建议,而不是继续猜测对象不存在。
1.2 配置 OpenCode
在 OpenCode 的 MCP 配置中添加 DataFlux Func MCP Coding 服务:
| 示例:OpenCode 配置 | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 | |
配置项如下:
| 配置项 | 值 |
|---|---|
| URL 地址 | {DataFlux Func 访问地址}/mcp/coding |
| 请求头 | X-Dff-Access-Token: atk-xxxxx:xxxxx |
先用 MCP Inspector 调试
DataFlux Func 的 MCP Coding 服务遵循 MCP 规范。接入 OpenCode 前,可以先使用 MCP Inspector 检查地址、请求头和工具列表是否正常。
1.3 检查连接和权限
接入后,建议先让 AI Agent 读取 MCP Coding 帮助信息并总结权限范围:
| 提示词示例:检查连接 | |
|---|---|
1 2 3 4 5 6 7 8 | |
AI Agent 能读取到 help 返回的权限规则和工具说明,通常表示连接正常。后续 list-* 工具的结果会按权限过滤,因此列表为空不一定代表对象不存在,也可能是 Access Token 没有覆盖目标 ID 或路径。
2. 使用 AI 阅读和理解代码
阅读类任务适合只开放 r 权限。AI Agent 可以帮助梳理脚本结构、入口函数、函数 API、连接器和环境变量使用情况,但不能修改草稿、执行函数或发布脚本。
2.1 示例背景
假设有一个脚本集 monitor_tools,其中包含告警处理逻辑:
| 对象 | 示例 |
|---|---|
| 脚本集 | monitor_tools |
| 脚本 | monitor_tools__alert、monitor_tools__utils |
| 入口函数 | monitor_tools__alert.alert_webhook |
| 函数 API | monitor_tools_alert_webhook |
| 连接器 | guance |
| 环境变量 | monitor_default_level |
希望 AI Agent 回答以下问题:
- 哪些函数会被外部调用
- 每个入口函数接收什么参数,返回什么数据
- 告警数据如何被校验、清洗、转换和写入
- 哪些默认值、异常分支和外部依赖需要人工确认
2.2 推荐权限
| Access Token MCP 编程规则示例 | |
|---|---|
1 2 3 4 5 | |
阅读代码不需要 rw、rwx 或 rwxp。如果需要让 AI Agent 执行连接器查询,再把对应连接器规则调整为 rx。
2.3 提示词示例
| 提示词示例:阅读代码 | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
2.4 AI Agent 的典型流程
阅读代码时,AI Agent 通常会使用以下 MCP Coding 工具:
| 步骤 | 工具 | 说明 |
|---|---|---|
| 读取帮助 | help |
确认权限范围、ID 规则和操作约束 |
| 查找脚本集 | list-script-sets |
查找目标脚本集 |
| 查找脚本 | list-scripts |
查找脚本集中的脚本 |
| 读取代码 | get-script-code 或 get-script-code-draft |
读取已发布代码或草稿代码 |
| 查看函数 API | list-func-apis |
了解函数如何对外暴露 |
| 查看连接器 | list-connectors |
确认连接器 ID 和类型 |
| 查看环境变量 | list-env-variables |
确认代码依赖的环境变量 |
阅读类任务不应调用 modify-script、execute-script-code-draft、publish-script、write-file 或 upload-file。
2.5 结果示例
可以要求 AI Agent 使用固定结构输出,便于人工检查:
| 输出结构示例 | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
3. 使用 AI 修改代码
修改类任务应明确要求 AI Agent 遵守「读取最新草稿 - 修改草稿 - 执行草稿验证 - 按需发布」流程。
DataFlux Func 中脚本修改后会先保存为草稿,发布后才会成为正式版本。写回草稿前,AI Agent 应使用最新 codeDraftMD5,避免覆盖其他人的更新。
3.1 示例目标
继续使用 monitor_tools 作为示例。现在希望修改 monitor_tools__alert.alert_webhook:
- 新增可选参数
source - 当
source为空时,默认使用dataflux-func - 返回结果中增加
source - 保持已有参数、返回结构和错误处理兼容
3.2 推荐权限
| Access Token MCP 编程规则示例 | |
|---|---|
1 2 3 4 5 | |
如果修改过程中需要读写资源文件,再按需增加 fileManager:<resourcePath>:rw 和 fileManager:<resourcePath>/*:rw 规则。
3.3 提示词示例
| 提示词示例:修改代码 | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
3.4 AI Agent 的典型流程
| 步骤 | 工具 | 说明 |
|---|---|---|
| 读取帮助 | help |
确认权限、ID 规则和任务约束 |
| 查找脚本 | list-scripts |
确认目标脚本在权限范围内 |
| 读取草稿 | get-script-code-draft |
获取最新草稿和 codeDraftMD5 |
| 修改草稿 | modify-script |
写回完整草稿,并传入最新 codeDraftMD5 |
| 执行验证 | execute-script-code-draft |
调用草稿函数验证行为 |
| 发布脚本 | publish-script |
测试通过后发布为正式版本 |
需要注意:
- 脚本 ID 格式为
<script_set_id>__<script_name>,例如monitor_tools__alert。 - 函数 ID 格式为
<script_id>.<function_name>,例如monitor_tools__alert.alert_webhook。 - 需要被调试执行、函数 API、定时任务或函数页面调用的顶层函数,应使用
@DFF.API(...)修饰。 - 同一脚本集内导入其他脚本时,推荐使用
import __utils as utils或from __utils import xxx。 - 被导入脚本使用的是已发布版本,不是草稿版本。不要依赖两个未发布草稿互相导入后的行为。
3.5 验证提示词示例
如果只想让 AI Agent 验证草稿,不发布脚本,可以单独输入:
| 提示词示例:只验证不发布 | |
|---|---|
1 2 3 4 5 6 7 8 | |
4. 本地缓存目录说明
对于较复杂的任务,AI Agent 可能会把 DataFlux Func 中的脚本草稿或资源文件临时同步到本地缓存目录,借助本地搜索、格式化、构建、差异比较等工具完成处理。这个过程由 MCP Coding 的工具提示和 AI Agent 自动完成,用户通常不需要关心,也不需要在提示词中要求「下载、修改、上传」。
用户只需要说明任务目标和必要约束:
- 要修改的脚本集、脚本、函数或资源路径
- 业务目标和验收标准
- 是否需要发布脚本
- 哪些对象不能修改或删除
- 涉及资源文件、外部连接器或生产数据时的安全边界
DataFlux Func 远端脚本草稿和资源目录始终是权威数据。本地缓存目录只是 AI Agent 的临时工作区,不能作为长期存储或最终结果来源。
4.1 提示词示例
| 提示词示例:本地缓存目录工作流 | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 | |
5. 常见注意事项
- 如果只是阅读代码,只开放
r权限。 - 如果需要修改但不需要发布,可以开放
rwx,不开放p。 - 如果需要发布脚本,才开放
rwxp。 - 如果需要操作资源文件,路径使用
fileManager:<resourcePath>:r或fileManager:<resourcePath>:rw。 - 如果需要公开资源目录,还要配置对应的
fileService:<id>:r或fileService:<id>:rw权限。 - 如果需要手工触发定时任务,
cronJob权限必须包含x。 - 如果函数需要返回大数据或文件,应使用
DFF.RESP_LARGE_DATA(...)或DFF.RESP_FILE(...)。 - 如果任务涉及外部系统写入,先确认连接器权限和测试环境,避免误写生产数据。
- 如果 AI Agent 发现权限为空或目标对象不可见,应先生成最小权限建议,而不是继续猜测对象不存在。