文档中心

产品使用与集成的官方文档

场景示例

DFCode CLI 场景示例:用 Plan、Auto、Trust、Spec、Goal、Supervisor 和后台 Shell 处理常见研发任务

命令与配置见CLI 产品手册。桌面客户端的操作见 Studio 场景示例。

使用前先做三项检查

  1. 在正确的项目目录和分支启动 DFCode。
  2. 先看 git status,确认没有把无关改动交给工具。
  3. 把“允许改什么、不能改什么、如何验证、何时停止”写进任务描述。

场景一:用 /init 接入一个新项目

首次在仓库中使用 DFCode,或项目规则已经过时。

  1. 在项目根目录启动 dfcode。
  2. 输入 /init,生成或更新 AGENTS.md。
  3. 人工补充技术栈、测试命令、目录边界和禁止事项。
  4. 先提出一个只读问题,核对它识别出的项目结构。
请阅读当前项目,说明主要模块、启动命令、测试命令和开发注意事项。
只修改 AGENTS.md,不修改业务代码;不确定的内容标记为待确认。
DFCode v3.3.19
Welcome back!Type a message below to start a new session.
Agent:
build (tab 切换)
Model:
GPT 6 Astra · MaaS-1 · 消耗: medium
Auto mode:
off
Directory:
~/projects/new-service
TipPermission external_directory protects files outside project
请阅读当前项目,说明主要模块、启动命令、测试命令和开发注意事项。只修改 AGENTS.md,不修改业务代码。
Thinking · 1 line · 23 chars · click to hideclick to expand

先读取项目配置与说明,确认模块入口和验证命令。

Read(package.json) Read 24 lines
Read(README.md) Read 38 lines
Write(AGENTS.md) Wrote 16 lines
# Project guide
## Stack
- TypeScript with Node.js
## Modules
- `src/routes/`: HTTP routes
- `src/services/`: business logic
## Commands
- `npm run dev`: start development server
- `npm test`: run unit tests
## Changes
- Keep route handlers thin
- Run related tests before submitting
Bash(检查规则文件的空白格式) 0 lines
$ git diff --check

已生成 AGENTS.md,记录了项目模块、启动命令和测试命令。

  • npm run dev:启动开发服务器。
  • npm test:运行单元测试。
  • git diff --check:通过。

业务代码没有改动;团队特有的约束可以继续补充到规则文件中。

Build · gpt-6-astra · 12.4s

Build (shift+tab 切换模式)GPT 6 Astra MaaS-1 · 消耗:中 · medium
~/projects/new-service

AGENTS.md 中的模块、路径和命令与项目一致。

如果项目根目录、包管理器或测试命令识别错了,先修正规则文件,不要继续执行改动。

场景二:Plan → Build 完成一个中型需求

需求跨越多个文件,但还不需要建立长期规格。

  1. 进入 Plan,先只读分析影响范围。
  2. 要求计划包含文件清单、接口兼容风险、测试方式和回滚点。
  3. 审查计划,补充不可修改范围。
  4. 确认后切换到 Build 执行,再运行验证命令。
请为“新增用户导出功能”制定实施计划。
先只读分析,不要修改文件。计划列出会改哪些文件、接口兼容风险、测试方式和回滚方案。
确认计划后再执行;不要修改数据库迁移和部署配置。
DFCode v3.3.19
Welcome back!Type a message below to start a new session.
Agent:
plan (tab 切换)
Model:
GPT 6 Astra · MaaS-1 · 消耗: medium
Auto mode:
off
Directory:
~/projects/admin-console
TipPermission external_directory protects files outside project
请为“新增用户导出功能”制定实施计划。 先只读分析,不要修改文件。 计划列出会改哪些文件、接口兼容风险、测试方式和回滚方案。 确认计划后再执行;不要修改数据库迁移和部署配置。
Thinking · 1 line · 28 chars · click to hideclick to expand

只读检查导出服务、权限边界和测试,先列出需要确认的变更。

Read(src/export/service.ts) Read 86 lines
Read(src/auth/permissions.ts) Read 42 lines
Grep("export|download" in src) 18 matches

实施计划

  1. 修改 src/export/service.ts:复用现有权限检查,分批读取用户数据。
  2. 修改 src/routes/export.ts:沿用现有响应字段,增加流式下载。
  3. 补充 test/export.test.ts:覆盖无权限、空结果和下载取消场景。

兼容风险:前端需要继续识别原有错误结构,避免下载失败时显示空文件。

验证方式:运行 npm test -- export,并检查现有下载入口。

回滚方案:回退上述三个文件的变更,保留原有导出实现。

计划等待确认;当前没有修改文件,也不涉及数据库迁移和部署配置。

Plan · gpt-6-astra · 18.2s

Plan (shift+tab 切换模式)GPT 6 Astra MaaS-1 · 消耗:中
~/projects/admin-console

改动与确认后的文件清单一致,验证命令通过。

计划发现需要改数据库结构、权限模型或外部接口时,先扩大评审范围,不要直接切换 Build。

场景三:用 Auto 自动完成低风险测试修复

测试命令明确、修改范围可控时,可减少读取、搜索和普通测试的逐项确认。

  1. 先在 Manual 下确认项目和测试命令。
  2. 输入 /auto,明确允许修改的目录和禁止操作。
  3. 先运行相关测试,再修复失败项。
  4. 测试通过后回到 Manual,检查 diff。
/auto

运行当前表单模块的测试并修复失败用例。
只修改 src/forms 和对应测试,不改依赖、部署配置、密钥和数据库迁移。
每轮修复后运行 npm test -- form;如果需要扩大范围,先暂停并说明原因。
DFCode v3.3.19
Welcome back!Type a message below to start a new session.
Agent:
build (tab 切换)
Model:
GPT 6 Astra · MaaS-1 · 消耗: medium
Auto mode:
on
Directory:
~/projects/web-portal
TipPermission external_directory protects files outside project
运行当前表单模块的测试并修复失败用例。只修改 src/forms 和对应测试,不改依赖、部署配置、密钥和数据库迁移。
Thinking · 1 line · 25 chars · click to hideclick to expand

先复现表单校验失败,检查空白字符串与边界值的处理。

Bash(运行表单测试) 4 lines · exit 1 · RUN v4.1.9 /projects/web-portal
$ npm test -- form
RUN  v4.1.9 /projects/web-portal
❯ test/form.test.ts (16 tests | 2 failed)
Tests  2 failed | 14 passed (16)
Duration  482ms
Read(src/forms/validate.ts) Read 28 lines
Edit(src/forms/validate.ts) +2 -1
export function required(value: string) {
- return value.length > 0;
+ const normalized = value.trim();
+ return normalized.length > 0;
}
Bash(复验表单测试) 5 lines · RUN v4.1.9 /projects/web-portal
$ npm test -- form
RUN  v4.1.9 /projects/web-portal
✓ test/form.test.ts (16 tests)
Test Files  1 passed (1)
Tests  16 passed (16)
Duration  395ms

已修复必填校验:先调用 trim(),再判断是否为空。

npm test -- form:16 项测试通过。没有修改依赖、部署配置、密钥或数据库迁移。

Build · gpt-6-astra · 24.6s

Build (shift+tab 切换模式)GPT 6 Astra MaaS-1 · 消耗:中
~/projects/web-portal[AUTO]

相关测试通过,diff 只涉及约定的目录。

分类器提示高风险、测试表现出数据破坏可能,或需要修改依赖和部署文件时,退出 Auto 并人工判断。

场景四:在隔离工作区使用 Trust

临时 worktree 中需要连续运行大量可回滚操作,且已经确认目录不含生产凭据。

  1. 创建或切换到可丢弃的隔离 worktree。
  2. 检查路径、凭据和当前分支。
  3. 输入 /trust,阅读高风险授权说明后再确认。
  4. 任务完成后输入 /notrust,检查 diff 和测试结果。
/trust

在当前临时 worktree 中完成迁移脚本重构。
只修改 src/migrations,不提交、不推送、不访问生产凭据;遇到删除数据、改部署或访问项目外路径时立即停止。
DFCode v3.3.19
Welcome back!Type a message below to start a new session.
Agent:
build (tab 切换)
Model:
GPT 6 Astra · MaaS-1 · 消耗: medium
Auto mode:
off
Directory:
~/projects/scratch-migration
TipPermission external_directory protects files outside project
在当前临时 worktree 中完成迁移脚本重构。只修改 src/migrations,不提交、不推送、不访问生产凭据。
Thinking · 1 line · 22 chars · click to hideclick to expand

检查工作区状态,只重构迁移脚本中的状态映射。

Bash(检查当前 worktree) 1 line · ## experiment/v3
$ git status --short --branch
## experiment/v3
Read(src/migrations/2026-reconcile.ts) Read 46 lines
Edit(src/migrations/2026-reconcile.ts) +2 -4
function normalizeStatus(status: string) {
- if (status === "legacy_active") {
- return "active";
- }
- return status;
+ const aliases: Record<string, string> = { legacy_active: "active" };
+ return aliases[status] ?? status;
}
Bash(检查迁移脚本的空白格式) 0 lines
$ git diff --check

已将重复的状态分支整理为映射表,修改范围为 src/migrations/2026-reconcile.ts。

git diff --check 通过;尚未执行迁移,也没有提交或推送。可以使用 /notrust 关闭 Trust,再审查变更。

Build · gpt-6-astra · 16.8s

Build (shift+tab 切换模式)GPT 6 Astra MaaS-1 · 消耗:中
~/projects/scratch-migration[TRUST]

脚本修改和测试在隔离 worktree 中完成。

目录不可回滚、发现 .env 或客户数据、需要生产访问,立即关闭 Trust,回到 Manual。

场景五:用 Spec 推进大型变更

跨模块变更,需要评审需求、设计和实施任务。

  1. 输入 /spec。
  2. 先检查真实实现和现有测试。
  3. 形成 proposal.md,确认 Why、What、Grounding 和边界。
  4. 把需求写成 Given / When / Then,整理 tasks.md 和 capability delta。
  5. 评审通过后进入 apply,按任务逐项实现。
  6. 完成后运行验证并 archive;需要回到普通会话时输入 /unspec。
/spec

请为“登录失败后的设备绑定恢复”创建规格驱动变更。
先只读检查现有登录、设备绑定和错误提示实现,说明 Why、What 和 Grounding;
然后整理 specs/changes/device-binding-recovery/,至少包含 proposal.md、tasks.md,
以及 deltas/authentication/spec.md。需求覆盖登录失败、恢复绑定、重复提交和旧设备状态。
先校验规格文档,不要直接修改业务代码。
DFCode v3.3.19
Welcome back!Type a message below to start a new session.
Agent:
spec (tab 切换)
Model:
GPT 6 Astra · MaaS-1 · 消耗: medium
Auto mode:
off
Directory:
~/projects/identity-platform
TipPermission external_directory protects files outside project
请为“登录失败后的设备绑定恢复”创建规格驱动变更。先只读检查现有登录、设备绑定和错误提示实现,再编写提案;确认前不要修改业务代码。
Thinking · 1 line · 27 chars · click to hideclick to expand

先核对登录与设备绑定实现,再编写有代码依据的变更提案。

Read(src/auth/login.ts) Read 92 lines
Read(src/device/binding.ts) Read 64 lines
Write(specs/changes/device-binding-recovery/proposal.md) Wrote 12 lines
# Device binding recovery
## Why
A failed login can leave a stale device binding.
## What
- Offer a recovery action after a binding conflict.
- Preserve the existing login error response.
## Grounding
- `src/auth/login.ts` handles login failures.
- `src/device/binding.ts` owns binding state.
Write(specs/changes/device-binding-recovery/tasks.md) Wrote 5 lines
# Tasks
- [ ] Confirm the recovery interaction and permission boundary.
- [ ] Implement binding recovery after proposal approval.
- [ ] Test stale bindings and repeated recovery requests.
Bash(检查规格文档的空白格式) 0 lines
$ git diff --check

已生成 proposal.md 和 tasks.md,记录恢复入口、兼容要求和实现依据。

提案等待评审,任务清单仍未执行。业务代码没有改动,确认后再进入实现阶段。

Spec · gpt-6-astra · 22.1s

Spec (shift+tab 切换模式)GPT 6 Astra MaaS-1 · 消耗:中
~/projects/identity-platform

提案、需求 delta 和任务清单已保存;实现与批准的规格一致。

无法从代码和测试确认关键事实时,停在 explore 或 propose,不要用猜测填充规格。

场景六:用 Goal 持续修复直到验证通过

需要多轮修复,并使用固定的测试命令验证结果。

  1. 写出目标、验证命令、禁止事项和停止条件。
  2. 输入 /goal <目标>。
  3. 用 /goal status 查看进度,需要人工判断时 /goal pause。
  4. 通过后运行 /goal clear,检查最终 diff。

设置 Goal 会自动进入 Auto。执行前先确认当前工作区和授权边界。

/goal 持续修复当前分支的 TypeScript 和单元测试问题,直到 npm test 通过。
不要提交代码;不改数据库迁移;如果连续两轮没有进展就暂停并报告。

验证通过或触发停止条件时,任务结束并保留执行记录。

测试命令不稳定、连续轮次没有进展、需要扩大修改范围或出现危险操作时暂停。

DFCode v3.3.19
Welcome back!Type a message below to start a new session.
Agent:
build (tab 切换)
Model:
GPT 6 Astra · MaaS-1 · 消耗: medium
Auto mode:
on
Directory:
~/projects/checkout-service
TipPermission external_directory protects files outside project
Goal set — 持续修复当前分支的 TypeScript 和单元测试问题,直到 npm test 通过;不要提交代码。
Thinking · 1 line · 23 chars · click to hideclick to expand

剩余失败集中在锁的重复释放,先确认所有权检查。

Bash(复现剩余测试失败) 4 lines · exit 1 · RUN v4.1.9 /projects/checkout-service
$ npm test
RUN  v4.1.9 /projects/checkout-service
❯ test/payment-race.test.ts (12 tests | 1 failed)
Tests  1 failed | 183 passed (184)
Duration  1.82s
Read(src/payment/lock.ts) Read 32 lines
Patch(1 file) 1 file

← Patched src/payment/lock.ts

export function release(key: string, owner: string) {
+ if (locks.get(key) !== owner) return false;
return locks.delete(key);
}
Bash(验证测试与类型检查) 8 lines · RUN v4.1.9 /projects/checkout-service
$ npm test && npm run typecheck
RUN  v4.1.9 /projects/checkout-service
✓ test/payment-race.test.ts (12 tests)
Test Files  14 passed (14)
Tests  184 passed (184)
Duration  1.75s

> typecheck
> tsc --noEmit

已为锁释放补上所有权检查,避免其他请求错误释放当前锁。

  • 单元测试:184 项通过。
  • TypeScript:tsc --noEmit 通过。

Goal 已完成,没有提交代码;最终 diff 可以继续审查。

Build · gpt-6-astra · 31.5s

Build (shift+tab 切换模式)GPT 6 Astra MaaS-1 · 消耗:中
~/projects/checkout-service[AUTO][GOAL:DONE]

场景七:用 Supervisor 设置验证命令和轮数上限

在终端启动一个有明确完成条件的连续任务。

dfcode supervise "修复测试直到通过" --verify "npm test" --max-turns 8

运行前确认:工作区没有无关改动,验证命令可以独立执行,最大轮数符合任务规模。

DFCode v3.3.19
$ dfcode supervise "修复测试直到通过;不要提交代码" --verify "npm test" --max-turns 8
supervise: local server on http://127.0.0.1:43219
[supervise] supervisor.sse.connected 
[supervise] supervisor.turn.start {"turn":1,"sessionID":"ses_demo"}
[supervise] supervisor.turn.end {"turn":1,"reason":"idle","stalled":false,"errors":0}
[supervise] verify: FAIL
[supervise] supervisor.judged {"turn":1,"decision":"continue"}
[supervise] supervisor.turn.start {"turn":2,"sessionID":"ses_demo"}
[supervise] supervisor.turn.end {"turn":2,"reason":"idle","stalled":false,"errors":0}
[supervise] verify: FAIL
[supervise] supervisor.judged {"turn":2,"decision":"continue"}
[supervise] supervisor.turn.start {"turn":3,"sessionID":"ses_demo"}
[supervise] supervisor.turn.end {"turn":3,"reason":"idle","stalled":false,"errors":0}
[supervise] verify: PASS
[supervise] supervisor.judged {"turn":3,"decision":"done"}

[supervise] FINAL: {"status":"done","reason":"verify command passed","turns":3,"sessionID":"ses_demo"}

验证失败时继续尝试,验证通过或达到 8 轮后停止。

不要把发布、删除数据、修改生产配置和提交代码放进无监督循环;达到上限仍未通过时保留现场,人工接手。

场景八:后台启动开发服务器并观察日志

需要 dev server、watcher 或长时间测试,同时继续处理主任务。

请启动开发服务器并在后台观察日志。
出现 ERROR 或 FAIL 时先报告最近的日志和可能原因,不要自动修改生产配置。
任务结束后停止后台进程。
  1. 将服务放到后台运行。
  2. 用 /bashes 查看进程、输出和状态。
  3. 发现错误后回到主会话定位;不要反复启动相同服务。
  4. 完成后停止后台任务,确认端口已经释放。
DFCode v3.3.19
Background shells (2 running · 0 done)ctrl+x j jobs · esc back
npm run dev -- --port 3210
sh_demo_dev · 1m23skill
tail -n 0 -F /tmp/docs-site-dev.log
mon_demo_logs · 1m18skill

↑/↓ select · enter focus · k kill · esc back

确认服务可访问、日志可读取,停止后端口已释放。

日志持续增长、进程失控、端口冲突或服务访问真实数据时,立即停止并人工检查。

场景九:用 /btw 处理旁支问题

主任务进行中,需要临时询问错误码、函数或设计背景。

/btw 这个项目里的 RetryableError 和 FatalError 有什么区别?只解释,不修改文件。

回答出现在 BTW 侧栏,主任务继续执行。

如果旁支问题需要改代码、运行破坏性命令或改变主任务范围,回到主会话重新提出,并先更新计划。

DFCode v3.3.19
# 检查支付重试中的锁释放
请检查支付重试中的锁释放逻辑,确认只有锁的持有者可以释放它。先分析,不要修改文件。
Thinking · 1 line · 37 chars · click to hideclick to expand

正在检查重试请求的锁所有权,重点确认重复释放是否会影响仍在执行的支付请求。

Build (shift+tab 切换模式)GPT 6 Astra MaaS-1 · 消耗:中
~/projects/checkout-service

场景十:提交前做一次 Review

代码已修改,准备提交、合并或创建 PR。

  1. 先查看 git diff 和 git status。
  2. 输入 /review 当前改动。
  3. 按优先级处理审查结果。
  4. 重新运行测试、构建或相关检查。
  5. 人工决定是否 commit、push 或发布。
/review 当前改动

重点检查:功能回归、错误处理、权限边界、测试缺口、日志中的敏感信息和不相关文件。
只给出问题和证据,不要自动提交或推送。

审查问题已处理,相关测试通过。

审查发现改动范围失控、测试未通过或包含敏感信息时,不要提交,先回到 Plan 或 Manual 处理。

审查请求可以直接发给主会话;/review 则启动独立子任务。

DFCode v3.3.19
Welcome back!Type a message below to start a new session.
Agent:
build (tab 切换)
Model:
GPT 6 Astra · MaaS-1 · 消耗: medium
Auto mode:
off
Directory:
~/projects/admin-console
TipPermission external_directory protects files outside project
重点检查当前改动的功能回归、错误处理、权限边界、测试缺口、日志中的敏感信息和不相关文件;不要提交或推送。
Bash(查看当前改动范围) 2 lines · src/export/service.ts | 2 ++
$ git diff --stat
 src/export/service.ts | 2 ++
 1 file changed, 2 insertions(+)
Bash(检查用户导出改动) 10 lines · diff --git a/src/export/service.ts b/src/export/service.ts
$ git diff -- src/export/service.ts
diff --git a/src/export/service.ts b/src/export/service.ts
index 84b1a72..52f8c01 100644
--- a/src/export/service.ts
+++ b/src/export/service.ts
@@ -10,3 +10,5 @@
 export async function exportUsers(ctx: Context) {
+  await requirePermission(ctx, "users:export");
+  ctx.response.type = "text/csv";
   return streamUsers(ctx);
 }
Read(test/export.test.ts) Read 78 lines
Bash(运行导出模块测试) 5 lines · RUN v4.1.9 /projects/admin-console
$ npm test -- export
RUN  v4.1.9 /projects/admin-console
✓ test/export.test.ts (12 tests)
Test Files  1 passed (1)
Tests  12 passed (12)
Duration  514ms

审查发现

[P2] 补充下载取消的回归测试

test/export.test.ts 尚未覆盖客户端中途断开连接的情况。建议验证 streamUsers() 能及时结束读取并释放资源,避免长时间导出占用连接。

npm test -- export 的 12 项测试通过,但现有用例不能证明取消场景正确。此次没有修改文件,也没有提交或推送。

Build · gpt-6-astra · 19.7s

Build (shift+tab 切换模式)GPT 6 Astra MaaS-1 · 消耗:中
~/projects/admin-console

任务提示词模板

目标:
项目范围:
允许修改:
禁止修改:
验证命令:
完成标准:
停止条件:
是否允许提交:否