把华为云 CodeArts Agent 调成类似 Codex /goal 的目标执行模式
把华为云 CodeArts Agent 调成类似 Codex /goal 的单目标执行模式
整理时间:2026-06-08
适用环境:
- Windows
- PowerShell
- 华为云 CodeArts Agent
- 希望把 CodeArts 调成“围绕一个目标持续执行,本地开发少打扰,高风险动作再确认”的用法
先说结论:
- 截至 2026-06-08,CodeArts Agent 本身还没有像 Codex 那样的平台原生 /goal 生命周期。
- 但可以通过“用户级 commands + 用户级 agent + 项目级 goal-state.json + 个人级 goal-policy.json”拼出一套行为上比较接近的方案。
- 这套方案现在重点补了 3 件事:
- 个人级策略文件
- UTF-8 统一
- 精简审计日志
1. 这套方案解决什么问题
很多人用 CodeArts Agent 时,都会遇到这几类问题:
- 想让 agent 围绕一个目标持续做,而不是每轮重新解释上下文。
- 想把“继续”“确认继续”“看下状态”“停止”这些控制动作做轻一点。
- 想减少本地开发过程中的频繁确认。
- 想让配置是个人级全局复用,但不同项目之间又不要串状态。
- 想在出问题时有一份比 kernel log 更轻的审计记录。
这套方案的目标很直接:
- /goal 作为统一入口
- 当前目标状态按项目隔离
- 个人偏好按用户隔离
- 安全的本地开发动作默认直跑
- 只有高风险边界动作才停下来确认
- 发生过什么先看轻量审计日志,不先钻大日志
2. 最终结构
推荐结构是“两层状态 + 一层入口”:
- 用户级入口和默认策略:
- C:\Users\<你的用户名>\.codeartsdoer\agents\
- C:\Users\<你的用户名>\.codeartsdoer\commands\
- C:\Users\<你的用户名>\.codeartsdoer\goal-policy.json
- 项目级运行状态:
- <当前仓库>\.codeartsdoer\goal-state.json
- 用户级轻量审计:
- C:\Users\<你的用户名>\.codeartsdoer\goal-history.jsonl
这样分层的原因很简单:
- 如果全部放项目里,每个仓库都要复制一套 commands 和 agent。
- 如果全部放用户目录里,所有仓库会共用一个运行状态,容易串项目。
- “用户级入口 + 项目级状态 + 用户级审计”是最稳的折中。
一句话概括:
/goal 是全局入口,goal-policy.json 是个人默认策略,goal-state.json 是当前项目的运行状态,goal-history.jsonl 是轻量审计记录。
3. 这次实测涉及的关键文件
用户级文件:
- C:\Users\Yao\.codeartsdoer\agents\goal-runner.md
- C:\Users\Yao\.codeartsdoer\agents\build.md
- C:\Users\Yao\.codeartsdoer\commands\goal.md
- C:\Users\Yao\.codeartsdoer\commands\goal-continue.md
- C:\Users\Yao\.codeartsdoer\commands\goal-status.md
- C:\Users\Yao\.codeartsdoer\commands\goal-stop.md
- C:\Users\Yao\.codeartsdoer\goal-policy.json
- C:\Users\Yao\.codeartsdoer\goal-history.jsonl
- C:\Users\Yao\.codeartsdoer\README-goal.md
项目级文件:
- <repo>\.codeartsdoer\goal-state.json
这里有两个关键点:
- goal-state.json 不需要手工预创建,第一次真正运行 /goal 时再生成即可。
- goal-policy.json 只放个人默认策略,不放当前项目的运行状态。
4. 现在的交互方式
主入口:
/goal 帮我开发一个 crm demo后续尽量使用自然语言控制:
继续
确认继续
看下状态
停止保留的兜底命令:
/goal-continue
/goal-status
/goal-stop理想交互是这样:
- 用 /goal 启动一个明确目标。
- agent 先写入一个很短的 goal 结构。
- 然后立刻执行,不停在流程说明里。
- 如果只是上下文中断了,就说一句 继续。
- 如果碰到高风险边界动作,再说一句 确认继续。
5. 这次新增的 3 个优化点
5.1 个人级策略文件
新增:
- C:\Users\Yao\.codeartsdoer\goal-policy.json
它现在负责:
- 安全本地动作白名单类别
- 需要确认的风险类别
- 继续 / 确认继续 / 状态 / 停止 这类自然语言关键词
- 轻量审计日志路径
这一步的价值很大,因为它把“个人习惯”和“当前项目状态”拆开了。
也就是说:
- 个人偏好:放 goal-policy.json
- 当前项目执行进度:放 goal-state.json
以后你要调个人风格,不用改每个项目的状态文件。
5.2 UTF-8 统一
这次把我们自己维护的这一层统一到了 UTF-8:
- goal-policy.json
- goal-history.jsonl
- README-goal.md
- 新版论坛稿和导出脚本
- 后续由这套提示词写出的 goal-state.json
重点不是去修 CodeArts 内核原生日志,而是保证“你自己这一层”不要再制造乱码。
否则有两个现实问题:
- 排错时很难看
- 发论坛后别人照着抄,遇到乱码会直接怀疑方案本身有问题
5.3 精简审计日志
新增:
- C:\Users\Yao\.codeartsdoer\goal-history.jsonl
这是一个轻量 JSONL 日志,定位是:
- 先看它,再看大日志
- 一行一条事件
- 只记最关键字段
推荐记录字段:
- time
- goal_id
- workspace
- command
- status
- risk_category
- action
- result
- updated_by
这样做的好处是:
- 你不需要每次先翻 kernel log
- 想确认“上次停在哪”“是不是进入过 need_confirm”“确认的是哪一类风险”时更快
6. 当前安全边界
6.1 默认直跑的安全本地动作
以下动作默认不需要确认:
- 读、搜、列工作区文件
- 在工作区内改源码、配置、文档、测试、静态资源
- 改工作区内 dotfiles
- 改项目内 .codeartsdoer/*
- 在工作区内脚手架代码
- 安装本地依赖
- 跑本地 build、lint、test、format、dev
- 启动本地预览或开发服务
- 本地建分支
- 本地 git commit
- git status、git diff、git log、git show 这类非破坏性 git 查看动作
这一步决定了这套方案像不像 Codex。
如果这些本地动作还要频繁确认,那体验就还是碎的。
6.2 仍然保留确认的高风险类别
当前保留的类别:
- destructive_local
- external_write
- deploy_release
- secrets_credentials
- out_of_workspace
- payments_purchases
可以直白理解为:
- destructive_local:本地破坏性动作,比如 git reset --hard
- external_write:离开当前机器的写动作,比如 git push
- deploy_release:部署、发布、上传产物
- secrets_credentials:动密钥、令牌、凭据
- out_of_workspace:写当前仓库外路径
- payments_purchases:可能花钱或消耗计费资源
6.3 为什么不建议彻底改成零确认
个人自己玩当然可以继续放开,但不建议作为公开分享的默认方案,原因很现实:
- 一旦误触远端写入、部署、破坏性操作,代价太高。
- 发论坛给别人参考时,默认方案要可控、可复用。
- “只对高风险动作确认一次”已经把摩擦压得比较低了。
我更推荐公开版本保持这个边界:
- 本地开发少打扰
- 远端/破坏性/工作区外边界才拦
7. 现在和 Codex 原生 /goal 的差别
这点一定要讲清楚。
这套方案是“行为接近”,不是“平台原生等价”。
主要差别:
- 它本质上还是 prompt + commands + agent + 本地状态文件的组合。
- goal-state.json 和 goal-history.jsonl 都是约定式状态,不是平台内建状态机。
- 继续 / 确认继续 / 看下状态 / 停止 这些自然语言是否稳定命中,仍然依赖模型遵循提示词。
- 上下文或工具上限到了以后,依然可能需要人再发一句 继续。
更准确的说法应该是:
“把 CodeArts Agent 调成类似 Codex /goal 的单目标执行模式。”
而不是:
“CodeArts 已经原生有 Codex 那种 /goal 了。”
8. 验收结果
这轮已经实测过的边界行为:
- 工作区内安全动作可直接执行,不再要求确认。
- git push 会在执行前进入 need_confirm,类别是 external_write。
- git reset --hard HEAD 会在执行前进入 need_confirm,类别是 destructive_local。
- 工作区外写入会在执行前进入 need_confirm,类别是 out_of_workspace。
- 审计和状态文件路径已经固定下来,便于后续继续收敛。
也就是说,当前已经能做到:
- 本地开发默认少打扰
- 只有真正高风险的边界动作才拦
9. 推荐给别人复用的目录结构
建议别人直接按这个结构放:
C:\Users\<用户名>\.codeartsdoer\
agents\
build.md
goal-runner.md
commands\
goal.md
goal-continue.md
goal-status.md
goal-stop.md
goal-policy.json
README-goal.md然后每个仓库自己维护:
<repo>\.codeartsdoer\goal-state.json审计文件建议放在用户目录:
C:\Users\<用户名>\.codeartsdoer\goal-history.jsonl10. 一段适合发论坛的简版结论
CodeArts Agent 目前还没有像 Codex 那样的平台原生 /goal 生命周期,但可以通过“用户级 commands + 用户级 agent + 项目级 goal-state.json + 个人级 goal-policy.json”拼出一套行为上比较接近的单目标执行模式。现在这套方案已经补了 3 个关键点:个人级策略文件、UTF-8 统一、轻量 JSONL 审计日志。实际效果是:工作区内安全开发动作默认直跑,只有 git push、破坏性本地操作、工作区外写入、部署和凭据相关动作才进入 need_confirm,而且同一 goal 内同类风险只需要确认一次。它不是平台原生 1:1 等价,但日常开发体验已经比较接近 Codex /goal 了。
11. 最后一句判断
如果你的目标是:
- “能不能完全做到 Codex 平台原生 /goal 那种程度”
那答案还是:
- 还不能
如果你的目标是:
- “能不能把 CodeArts Agent 调到一个足够接近、足够好用、能持续开发的单目标模式”
那现在的答案是:
- 可以,而且这一版已经比前面的方案更适合拿去公开分享和复用
- 文件下载链接:https://share.fnnas.net/s/fafd7bc8dfc64a7db0
- 点赞
- 收藏
- 关注作者
评论(0)