跳到主要内容

完成一个编码任务

下面用“修复一个已有测试覆盖的问题”走完一次编码工作流。你可以把相同顺序用于功能开发、重构或文档修改。

1. 先看项目状态​

进入项目并新建编码会话。打开 Git 面板,记录当前分支、未暂存和已暂存文件;已有修改属于当前项目,不应默认覆盖。再悬停查看会话顶部工作区文件夹的完整路径,确认它就是准备修改的目录。

2. 发送明确任务​

目标:复现当前失败并修复根因。
范围:只修改实现文件;保留现有未提交改动。
限制:不要修改测试,不要添加或升级依赖,不要提交或推送。
完成标准:先运行相关测试复现,修改后重新运行;说明原因、改动文件、结果和未检查项。

具体命令、复现步骤或预期输出已知时直接补上。界面问题可通过 添加 → 捕获应用上下文(Capture app context) 附上目标状态,发送前先核对附带内容。

3. 检查运行控制​

发送前确认:

  • 工作区路径属于目标项目;
  • 附件和应用上下文只包含本任务需要的内容;
  • 命令授权与风险匹配,新会话当前默认 完全访问;
  • 模型支持所需 Tool 调用;
  • 请求中明确了允许操作的文件和动作,以及是否禁止联网。

正式版 0.1.33 的编码 添加(Add) 菜单提供附件、捕获应用上下文(Capture app context) 和 在工作区中新建聊天(New chat in workspace),没有 Tools/Skills 勾选框或“关闭全部工具”开关。询问(Ask) 表示高风险 shell 命令执行前询问,并不关闭所有 Tool,也不保证文件不会被修改。文字限制是任务约束,不是技术权限边界。

4. 观察调查与修改​

Ghast 会在会话中显示已读取文件、已运行命令、已编辑文件和 Tool 状态。展开卡片检查目标、参数、输出和退出状态。

调试时,修改前的失败属于有用的复现结果。等待 Agent 完成定位;如果它开始读取无关目录、修改越界文件或执行未授权动作,选择 停止生成。停止后先检查文件和进程,再决定怎样继续。

5. 审查改动​

打开本轮的 已编辑文件(Edited file) 卡片查看行内 diff,或使用回复下方的 1 个文件已更改 → 审查(1 file changed → Review) 汇总入口,数量随实际改动变化。再使用工作区的文件和 Git 视图检查当前状态。

Ghast 编码界面的行内文件差异
先检查文件范围,再逐行查看移除和新增内容。

重点确认:

  1. 只改了允许的文件。
  2. 原有未提交修改仍然存在。
  3. 没有意外生成锁文件、构建产物或密钥。
  4. 实现解决的是原因,而不是只隐藏错误。

6. 检查运行结果​

展开修改后的命令卡,确认运行的是当前代码、命令已结束,并读取退出状态和关键输出。对于界面功能,在浏览器面板刷新同一路径并重复用户操作;对于外部系统,在目标系统中单独确认结果。

Ghast 编码界面的任务结果与运行摘要
结果应说明原因、修改范围、运行过的命令和仍未完成的检查。

复现正式版示例​

实测日期:2026-10-19。 使用 Ghast AI 正式版 0.1.33(构建 0.1.33.46)、Apple silicon Mac、macOS 27.0.1、MiniMax-M3 / High,命令授权为 询问(Ask)。机器已安装 Python 3,所选模型及账号可用。本例未验证 Windows、Intel Mac、其他模型或本机编程助手。本页保留原有示意截图,具体控件名称以正文中的正式版说明为准。

创建空目录 coding-example,放入下面两个文件。这只是小型算术示例,不是金额或计费实现。

total.py(故意保留错误):

def total(items):
return sum(price for price, quantity in items)

test_total.py:

import unittest
from total import total

class TotalTests(unittest.TestCase):
def test_quantities(self):
self.assertEqual(total([(12.5, 2), (5, 3)]), 40)

def test_empty(self):
self.assertEqual(total([]), 0)

if __name__ == "__main__":
unittest.main()

按添加项目并开始会话选择该目录,并在项目下新建编码会话。核对完整工作区路径、可用模型和 询问(Ask) 授权后,发送:

只在当前 coding-example 工作区操作:先运行 python3 -m unittest -v
复现失败,读取 total.py 和 test_total.py,只修改 total.py,让单价乘以数量,
再运行相同测试。不要修改测试或 README,不安装依赖、不联网、不提交或推送。
报告修改前后的测试输出、修改文件和原因。

正式版实测使用等价英文请求:test_quantities 首次报 17.5 != 40,命令退出码为 1;Agent 只把返回表达式改为 sum(price * quantity for price, quantity in items)。再次运行的命令卡显示两个测试通过、输出 OK,独立本地复跑也通过;测试文件和 README 的哈希未变。Python 运行测试时可能生成 __pycache__,应把运行缓存与源文件修改区分开。

验收时检查实际 diff 和命令输出,不只依赖 Verified 标记。Python 缺失、模型请求失败或等待批准时,先处理对应前提再重试。本例无需新增依赖、连接外部账号、提交代码或发布。

7. 决定是否交付​

满意后再在 Git 面板选择性暂存。提交、推送和创建 Pull Request 都是独立动作,不会因任务回答“完成”而自动发生。若暂不交付,保留会话并记录剩余工作。

重试不会自动去重

失败、停止或断线不表示前面的动作没有执行。重新发送前先查文件、进程、依赖、Git 和外部对象,避免重复修改或发送。