Danya 完全使用指南 — 游戏开发 AI 编程助手
什么是 Danya
Danya 是一个运行在终端中的 AI 编程助手,专门为游戏开发场景设计。它不是通用的代码补全工具,而是一个理解游戏项目架构、强制执行质量标准、能自动化整个开发工作流的 Agent。
开箱即用 — 进入游戏项目启动 Danya,它会自动检测引擎类型(Unity / Unreal / Godot / Go 服务端 / C++ 服务端 / Java 服务端 / Node.js 服务端),生成完整的 Harness 治理体系(规则、命令、Hook、记忆),不需要手动搭建任何环境。
核心定位:将经过验证的 Game Harness Engineering 内置到 AI Agent 中,让游戏开发者开箱即用。
GitHub: https://github.com/Zhudanya/danya npm:
npm install -g @danya-ai/cli
安装与更新
安装
1
2
3
4
5
6
7
8
# 方式一:npm 安装(推荐)
npm install -g @danya-ai/cli
# 方式二:从源码安装
git clone https://github.com/Zhudanya/danya.git
cd danya
bun install && bun run build
npm install -g .
1
2
# 验证安装
danya --version
更新
1
npm install -g @danya-ai/cli@latest
首次使用
1. 启动 Danya
1
2
cd <你的游戏项目>
danya
首次启动会引导你配置 AI 模型。同时会自动检测项目引擎类型并生成 .danya/ 目录。
2. 配置 AI 模型
在对话中输入 /model:
- 选 Manage Model List → 添加新模型
- 选择 Provider:
- Custom Messages API — Claude 系列(Anthropic 官方接口)
- Custom OpenAI-Compatible API — GPT / DeepSeek / 千问 / GLM 等
- Ollama — 本地模型
- 粘贴 API Key → 后续步骤一路回车(使用默认值)
- 回到
/model页面选择要用的模型
常用模型配置
| 模型 | Provider | Base URL | Model ID |
|---|---|---|---|
| Claude Opus 4.6 | Messages API | https://api.anthropic.com | claude-opus-4-6 |
| Claude Sonnet 4.6 | Messages API | https://api.anthropic.com | claude-sonnet-4-6 |
| DeepSeek V3 | Messages API | https://api.deepseek.com/anthropic | deepseek-chat |
| GPT-4o | OpenAI-Compatible | https://api.openai.com/v1 | gpt-4o |
| 千问 Max | OpenAI-Compatible | https://dashscope.aliyuncs.com/compatible-mode/v1 | qwen-max |
模型配置保存在 ~/.danya/config.json,无需手动编辑。
多模型协同(多 Agent 模型配置)
Danya 通过 4 种语义指针控制不同任务使用不同模型:
| 指针 | 用途 | 什么时候用 |
|---|---|---|
main | 主对话、编码、审查 | 用户直接对话、/auto-work 的编码阶段 |
task | 子 Agent(subagent、background task) | Agent 启动 subagent 搜索代码、分析文件 |
compact | 上下文压缩摘要 | 对话接近上下文窗口时自动压缩 |
quick | 快速分类判断 | /auto-work 的 Stage 0 分类 |
配置方式 1:对话内配置
在 Danya 中输入 /model,添加多个模型后,在模型列表中给每个模型设置指针角色。
配置方式 2:直接编辑配置文件
编辑 ~/.danya/config.json:
1
2
3
4
5
6
7
8
{
"modelPointers": {
"main": "DeepSeek V3",
"task": "Qwen Max",
"compact": "GLM-4",
"quick": "GLM-4"
}
}
省钱策略参考:
| 策略 | main | task | compact | quick |
|---|---|---|---|---|
| 全力输出 | Claude Opus | Claude Sonnet | Claude Haiku | Claude Haiku |
| 国内省钱 | DeepSeek V3 | Qwen Max | GLM-4 | GLM-4 |
| 单模型 | 同一个 | 同一个 | 同一个 | 同一个 |
如果只配了一个模型,所有指针自动指向它,不需要额外配置。
3. 初始化 Harness
Danya 首次进入项目时会自动初始化 .danya/ 目录。也可以手动执行:
1
/init
这会:
- 检测项目引擎类型
- 释放完整的 Harness 体系(规则、命令、Hook、记忆模板)
- 如果存在
.claude/或.codex/目录,自动整合到.danya/ - 根据 AI 模型类型生成
CLAUDE.md(Claude 模型)或AGENTS.md(其他模型)
4. 检查环境依赖
1
danya check-env
输出类似:
1
2
3
4
5
6
7
8
9
=== Danya Environment Check ===
[OK] danya
[OK] git
[OK] make
[OK] python3
[OK] go
[SKIP] dotnet (only needed for C# syntax checking)
All required dependencies found.
CLI 启动参数
基础参数
| 参数 | 说明 | 示例 |
|---|---|---|
[prompt] | 直接传入提示词 | danya "分析这个项目" |
--cwd <path> | 指定工作目录 | danya --cwd /path/to/project |
-p, --print | 非交互模式(输出结果后退出,适合脚本/管道) | danya -p "解释这个函数" |
--model <name> | 指定使用的模型 | danya --model opus |
--system-prompt <prompt> | 自定义系统提示词 | danya --system-prompt "你是 Go 专家" |
--append-system-prompt <prompt> | 在默认系统提示词后追加内容 | danya --append-system-prompt "只用中文回答" |
--verbose | 详细输出模式 | danya --verbose |
权限与安全
| 参数 | 说明 | 示例 |
|---|---|---|
--dangerously-skip-permissions | 跳过所有权限确认(Agent 全自动,不会弹确认框) | danya -p "重构代码" --dangerously-skip-permissions |
--permission-mode <mode> | 设置权限模式 | danya --permission-mode dontAsk |
--max-budget-usd <amount> | API 最大花费限制(美元),仅 --print 模式 | danya -p "写测试" --max-budget-usd 5 |
权限模式选项:
| 模式 | 说明 |
|---|---|
default | 默认模式,危险操作需确认 |
acceptEdits | 自动接受文件编辑,其他操作仍需确认 |
dontAsk | 不弹任何确认(等同于 --dangerously-skip-permissions) |
plan | 规划模式,只分析不执行 |
bypassPermissions | 绕过权限检查 |
工具控制
| 参数 | 说明 | 示例 |
|---|---|---|
--allowedTools <tools> | 允许使用的工具列表 | danya -p "搜索代码" --allowedTools "Read,Grep,Glob" |
--disallowedTools <tools> | 禁止使用的工具列表 | danya --disallowedTools "Bash,Write" |
--tools <tools> | 指定可用工具集(仅 --print 模式) | danya -p "读文件" --tools "Read,Grep" |
输出格式
| 参数 | 说明 | 示例 |
|---|---|---|
--output-format <format> | 输出格式:text / json / stream-json | danya -p "分析" --output-format json |
--input-format <format> | 输入格式:text / stream-json | danya -p --input-format stream-json |
--json-schema <schema> | 结构化输出的 JSON Schema | danya -p "提取信息" --json-schema '{"type":"object"}' |
--include-partial-messages | 流式输出中间消息 | danya -p --output-format stream-json --include-partial-messages |
MCP 配置
| 参数 | 说明 | 示例 |
|---|---|---|
--mcp-config <config> | 加载 MCP Server 配置 | danya --mcp-config mcp-servers.json |
调试
| 参数 | 说明 | 示例 |
|---|---|---|
-d, --debug [filter] | 调试模式(可按类别过滤) | danya --debug "api,hooks" |
--debug-verbose | 详细调试输出 | danya --debug-verbose |
常用组合示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 无人值守全自动开发(跳过权限,不弹确认)
danya -p "实现武器升级系统" --dangerously-skip-permissions
# 只允许读取和搜索(安全模式,不改文件)
danya -p "分析项目架构" --allowedTools "Read,Grep,Glob,Bash"
# 结构化 JSON 输出(适合脚本处理)
danya -p "列出所有 TODO" --output-format json
# 限制花费 5 美元
danya -p "写完整测试" --dangerously-skip-permissions --max-budget-usd 5
# 规划模式(只分析不执行)
danya --permission-mode plan
# 自定义系统提示词
danya --append-system-prompt "所有回答使用中文,代码注释也用中文"
.danya/ 目录结构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
.danya/
├── rules/ — 约束规则(每次会话自动加载)
│ ├── constitution.md — 禁区规则(不可编辑的自动生成代码)
│ ├── golden-principles.md — 编码黄金原则(UniTask, error wrapping 等)
│ ├── known-pitfalls.md — 已知踩坑(自演进积累)
│ ├── architecture-boundaries.md — 架构依赖方向
│ └── <engine>-style.md — 引擎特定风格指南
│
├── commands/ — 工作流命令(/auto-work, /review 等)
│ ├── auto-work.md
│ ├── auto-bugfix.md
│ ├── review.md
│ ├── fix-harness.md
│ ├── plan.md
│ ├── verify.md
│ └── parallel-execute.md
│
├── memory/ — 持久领域知识(不随上下文压缩丢失)
│ ├── MEMORY.md — 索引
│ └── <模块>.md — Agent 学到的项目知识
│
├── hooks/ — 机械执行脚本(Agent 无法绕过)
│ ├── constitution-guard.sh — Gate 0: 禁区防护
│ ├── pre-commit.sh — Gate 3: 提交前 lint+test
│ ├── post-commit.sh — Gate 4: 提交后提醒 review
│ ├── push-gate.sh — Gate 5: 推送前检查 push-approved
│ ├── harness-evolution.sh — 自演进检测
│ └── syntax-check.sh — 语法检查
│
├── agents/ — 角色 Agent 规格
│ ├── code-writer.md — 编码 Agent
│ ├── code-reviewer.md — 审查 Agent
│ ├── red-team.md — 红队 Agent(找 bug)
│ ├── blue-team.md — 蓝队 Agent(修 bug)
│ └── skill-extractor.md — 经验提炼 Agent
│
├── scripts/ — Shell 强制编排脚本
│ ├── auto-work-loop.sh — 全自动流水线(Shell 强制版)
│ ├── parallel-wave.sh — 多 Agent 波次并行
│ ├── red-blue-loop.sh — 红蓝对抗循环
│ ├── orchestrator.sh — 自动迭代刷分
│ ├── verify-server.sh — 服务端量化验证(0-100 分)
│ ├── verify-client.sh — 客户端量化验证
│ ├── check-env.sh — 环境检查
│ └── monthly-report.sh — 月度报告
│
├── monitor/ — 监控数据采集
│ ├── log-tool-use.py — 工具调用记录
│ ├── log-session-end.py — 会话结束记录
│ ├── log-verify.py — 验证耗时记录
│ ├── log-bugfix.py — Bug 修复记录
│ ├── log-review.py — 审查分数记录
│ ├── analyze.py — 数据分析(8 种指标)
│ └── dashboard.py — 实时监控仪表盘
│
├── templates/ — 任务定义模板
│ └── program-template.md
│
├── settings.json — Hook 注册
├── gate-chain.json — 门禁链配置
└── guard-rules.json — 禁区规则
用户可以自由增删改 .danya/ 下的任何文件。Danya 不会覆盖用户的自定义内容。
快捷键
| 快捷键 | 作用 |
|---|---|
Ctrl+G | 打开外部编辑器,关闭后内容自动回填 |
Shift+Enter | 输入框内换行但不发送 |
Enter | 提交 |
Ctrl+M | 快速切换模型 |
Shift+Tab | 切换输入模式(普通 / Bash / 记忆) |
对话内命令详解
/auto-work — 全自动流水线
1
/auto-work "添加背包排序功能"
Agent 自动走完 7 个阶段:
- Stage 0: 分类 — 判断是 bug / feature / refactor
- Stage 1: 规划 — 分析需求,列出文件清单
- Stage 2: 编码 — 写代码,每个文件改完立即编译检查(fail-fast)
- Stage 3: 审查 — 100 分制评分,<80 或有 CRITICAL 则失败
- Stage 4: 提交 — git commit(pre-commit hook 会跑 lint+test)
- Stage 5: 沉淀 — 自动写文档到 Docs/
- Stage 6: 自演进 — 检查开发过程中的错误,更新 rules
终止条件:
- 验证 3 轮失败 → 终止
- 审查 3 轮分数 < 80 → 终止
- 提交 2 次失败 → 终止
/auto-bugfix — Bug 自动修复
1
/auto-bugfix "角色状态切换时动画异常"
必须先复现才能修:
- 复现 — 分析 bug,找到复现步骤,验证 bug 存在
- 根因分析 — 不猜测,读代码、查日志
- 修复 — 最多 5 轮:改代码 → 验证 → 不通过则重试
- 审查 — 100 分制评分
- 提交 — git commit
- 沉淀 — 写入 Docs/Bugs/
/review — 评分制代码审查
1
/review
评分规则:
| 级别 | 扣分 | 示例 |
|---|---|---|
| CRITICAL | -30 | 编译失败、编辑禁区文件、数据损坏风险 |
| HIGH | -10 | 未处理错误、竞态条件、缺少校验 |
| MEDIUM | -3 | 命名违规、缺少日志、死代码 |
- 通过线:≥ 80 且无 CRITICAL
- 质量棘轮:分数只能升不能降
- 通过后生成
push-approved令牌(一次性使用)
审查覆盖 4 个维度:
- 架构合规(禁区、跨层引用、依赖方向)
- 编码标准(引擎规则、错误处理、命名)
- 逻辑审查(边界、并发、错误传播)
- Harness 完整性(错误是否已固化到规则)
/fix-harness — 自演进
1
/fix-harness "编译时忘记检查 nil 导致 panic"
Agent 会:
- 分析错误模式
- 路由到正确的规则文件:
- 禁区违规 →
constitution.md - 编码原则违反 →
golden-principles.md - 已知踩坑 →
known-pitfalls.md - 架构边界违反 →
architecture-boundaries.md
- 禁区违规 →
- 添加规则:错误写法 + 正确写法
- 保持每个规则文件 < 550 行
自动触发:PostToolUse Hook 检测到”出错→修复”模式时,系统自动提示运行 /fix-harness。
/plan — 需求分析与规划
1
/plan "实现武器升级系统"
输出:
- 需求分析(要改什么、为什么改)
- 文件清单(每个文件 + 一句话改动意图 + 风险等级)
- 执行顺序(依赖关系、哪些可以并行)
- 验证策略
/verify — 机械验证
1
2
3
/verify # 默认 quick
/verify build # 编译
/verify full # 编译 + 测试
| 级别 | 内容 |
|---|---|
| quick | lint + 语法检查 |
| build | quick + 完整编译 |
| full | build + 运行测试 |
/parallel-execute — 波次并行执行
1
/parallel-execute prepare "给老虎机加倍功能"
Agent 会:
- 分析需求,拆解为原子任务(task-01.md, task-02.md…)
- 声明依赖关系
- 计算波次(拓扑排序)
- 展示波次计划,等用户确认
- 启动
parallel-wave.sh:每个任务在独立 worktree 中执行
任务文件格式:
1
2
3
4
5
6
7
8
9
---
depends: []
---
## 任务描述
修改 handler.go,添加倍率参数支持。
## 验证方式
go build ./servers/logic_server/...
依赖声明:
depends: []— 无依赖,第一波depends: [01]— 依赖 task-01depends: [01, 02]— 依赖 01 和 02
/orchestrate — 自动迭代刷分
1
/orchestrate my-task.md
需要一个任务定义文件(基于 .danya/templates/program-template.md 模板):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
## Goal
增加测试覆盖率从 15% 到 60%
## Modifiable Scope
- servers/logic_server/internal/slot/
## Forbidden Files
- orm/
- common/config/cfg_*.go
## Quantitative Metrics
- make build: 40 分
- make lint: 20 分
- make test: 40 分
## Context
这个模块处理老虎机游戏逻辑
执行流程:AI 写代码 → 量化验证(0-100 分) → 分数 ≥ 基线就提交、< 基线就回滚 → 循环 N 轮。5 次连续失败自动熔断。
/red-blue — 红蓝对抗
1
/red-blue servers/logic_server/
- 红队(只读):找所有 bug(边界、错误路径、并发、安全)
- 蓝队(可写):按优先级修 bug(CRITICAL → HIGH → MEDIUM)
- 编译检查:修复后必须能编译
- 循环:直到红队找到 0 个 bug(最多 5 轮)
- 经验提炼:skill-extractor 分析日志,写入 rules/memory
/monitor — 查看 Harness 效果
1
2
3
4
5
/monitor summary 7 # 最近 7 天综合报告
/monitor tools # 工具使用分布
/monitor reviews 30 # 最近 30 天审查分数
/monitor bugfixes 30 # Bug 修复效率
/monitor sessions # 会话数量
终端命令详解
danya auto-work — Shell 强制流水线
1
2
danya auto-work "实现武器升级系统"
danya auto-work "修复登录 bug" --model opus
和对话内 /auto-work 的区别:Shell 强制每阶段用独立的 danya -p 执行,Agent 不可跳步,上下文隔离。适合大任务、无人值守场景。
| 参数 | 说明 | 默认值 |
|---|---|---|
--model <m> | 使用的模型 | sonnet |
--max-turns <n> | 每阶段最大轮次 | 30 |
danya parallel — 多 Agent 并行
1
danya parallel Docs/Version/v1.3/weapon/tasks
读取任务目录下的 task-NN.md 文件,按依赖分波次,每个任务在独立 worktree 中启动独立 danya 实例。编译通过自动合并,失败自动回滚。
danya red-blue — 红蓝对抗(无人值守)
1
2
danya red-blue .
danya red-blue servers/logic_server/ --rounds 3 --model opus
| 参数 | 说明 | 默认值 |
|---|---|---|
-n, --rounds <n> | 最大轮数 | 5 |
--model <m> | 模型 | sonnet |
danya orchestrate — 自动迭代
1
2
danya orchestrate my-task.md
danya orchestrate my-task.md -n 30 --model opus
| 参数 | 说明 | 默认值 |
|---|---|---|
-n, --iterations <n> | 最大迭代次数 | 20 |
--model <m> | 模型 | sonnet |
danya analyze — 数据分析
1
2
3
4
5
6
7
8
danya analyze --metric summary --days 7 # 综合报告
danya analyze --metric compare --days 7 # 本周 vs 上周对比
danya analyze --metric tool-usage --days 7 # 工具使用分布
danya analyze --metric top-tools --top 10 # Top 10 工具
danya analyze --metric session-count --days 30 # 会话数
danya analyze --metric verify-time --days 7 # 验证耗时
danya analyze --metric bugfix-rounds --days 30 # Bug 修复效率
danya analyze --metric review-scores --days 30 # 审查分数趋势
8 种指标:
| 指标 | 看什么 |
|---|---|
summary | 综合(验证、bug 修复、审查、工具、会话) |
compare | 本周期 vs 上周期对比(带趋势箭头) |
tool-usage | 每个工具被调用了多少次 |
top-tools | Top N 工具排行 |
session-count | 每日会话数分布 |
verify-time | 验证耗时(按类型,平均/最快/最慢/通过率) |
bugfix-rounds | Bug 修复轮数、成功率 |
review-scores | 审查均分、通过率、CRITICAL/HIGH/MEDIUM 数量趋势 |
danya dashboard — 实时监控
1
2
3
4
5
danya dashboard # 看一次快照
danya dashboard -w # 持续监控,每 5 秒刷新
danya dashboard -w 3 # 每 3 秒刷新
danya dashboard -v # 详细模式(显示 PID、内存、最近工具调用)
danya dashboard -w -v # 持续 + 详细
显示:运行中的 Agent 进程数、活跃对话、后台任务。
danya report — 月度报告
1
danya report
汇总 orchestrator 的所有迭代结果:总 session 数、迭代轮数、成功率、最高基线分。
门禁链
每次代码变更经过 6 道质量门禁:
1
2
3
Edit → Guard → Syntax → Verify → Commit → Review → Push
Hook Hook Tool Hook AI+Tool Hook
(硬拦截) (即时检查)(编译测试)(lint+test)(评分制)(令牌制)
- Gate 0 Guard:PreToolUse Hook,编辑禁区文件时直接拦截
- Gate 1 Syntax:PostToolUse Hook,编辑后即时语法检查
- Gate 2 Verify:工具调用,编译 + 测试
- Gate 3 Commit:PreToolUse Hook,commit 前跑 lint + test
- Gate 3.5 AssetGuard:Pre-commit Hook,拦截 >5MB 且未被 Git LFS 追踪的二进制文件(阈值可通过
ASSET_GUARD_THRESHOLD环境变量配置;缺少.gitattributes时发出警告) - Gate 4 Review:AI + ScoreReview 工具,100 分制评分
- Gate 5 Push:PreToolUse Hook,检查 push-approved 令牌
Push 令牌制:/review 通过后生成 .danya/push-approved 文件,push 时检查并消费(一次性使用)。
引擎检测与变体
Danya 启动时自动检测项目引擎类型:
| 引擎 | 检测方式 | 注入的领域知识 |
|---|---|---|
| Unity | ProjectSettings/ + Assets/ | MonoBehaviour 生命周期、UniTask、对象池、事件配对、架构层级 |
| Unreal | *.uproject | UPROPERTY、UE_LOG、FRunnable、命名规范(F/U/A/E) |
| Godot | project.godot | 类型提示、信号配对、_physics_process、资源加载 |
| Go Server | go.mod | 错误包装、safego.Go、RPC handler 规范、ECS 约束 |
| C++ Server | CMakeLists.txt | 内存管理、并发模型、构建系统知识 |
| Java Server | pom.xml / build.gradle + 游戏关键词 | GC 调优、Netty Pipeline、并发模型 |
| Node.js Server | package.json + 游戏框架检测 | 事件循环、WebSocket、状态同步 |
Workspace 三层隔离
当项目包含 client + server 子目录时,Danya 自动识别为 workspace 模式:
1
2
3
4
5
6
workspace/
├── .danya/ ← Layer 1: 跨项目规则(协议同步、版本管理)
├── client/
│ └── .danya/ ← Layer 2: 客户端专属(Unity 规则、C# Hook)
└── server/
└── .danya/ ← Layer 2: 服务端专属(Go 规则、RPC 约束)
Layer 3 是 Session 级别的 git worktree 隔离(parallel-execute 时使用)。
自演进机制
当 Agent 犯错并修复后,系统自动检测”出错→修复”模式:
1
2
3
4
5
6
7
Agent 编译出错 → 修复 → 编译成功
→ PostToolUse Hook 检测到 error-then-fix
→ 提示:"Error was fixed. Consider running /fix-harness"
→ Agent 运行 /fix-harness
→ 路由到 known-pitfalls.md
→ 添加:❌ 错误写法 + ✅ 正确写法
→ 下次不再犯同样的错
规则文件约束:每个文件保持 < 550 行。超过时合并精简。
上下文压缩
Danya 融合了两种压缩策略:
- 选择性压缩(来自 Codex):只压缩最老的消息,保留最近 4 条原文
- 8 段结构化摘要(来自 Kode):技术上下文、项目概览、代码变更、调试问题、当前状态、待办任务、用户偏好、关键决策
- 关键文件自动恢复:压缩后自动恢复最近访问的 5 个文件
- 模型智能切换:优先用 compact 模型压缩,装不下时自动切 main
触发条件:token 使用 ≥ 90% 上下文窗口。
手动触发:/compact
调整阈值:/compact-threshold 0.85(设为 85%)
5 个角色 Agent
这些 Agent 被 orchestrator 和 red-blue 脚本自动调用:
| 角色 | 工具权限 | 职责 |
|---|---|---|
| code-writer | Edit, Write, Read, Bash, Grep, Glob | 只在指定范围内改代码,改完编译,最小改动 |
| code-reviewer | Read, Grep, Glob, Bash (只读) | 只读审查,100 分制打分 |
| red-team | Read, Grep, Glob, Bash (只读) | 假设代码有 bug,找边界/错误路径/并发/安全问题 |
| blue-team | Edit, Write, Read, Bash, Grep, Glob | 按优先级修 bug,防御式编程,最小修复 |
| skill-extractor | Read, Write, Grep, Glob | 从日志提炼规律写入 rules/memory(需 2+ 次出现) |
数据监控
自动采集(用户无感)
Danya 通过 Hook 自动采集数据到 .danya/monitor/data/:
| 数据 | Hook 类型 | 采集内容 |
|---|---|---|
tool-usage.jsonl | PostToolUse | 工具名、时间、session_id |
sessions.jsonl | Stop | 会话结束时间、原因 |
verify-metrics.jsonl | 脚本调用 | 验证类型、结果、耗时 |
bugfix-metrics.jsonl | 脚本调用 | Bug 描述、轮数、结果 |
review-metrics.jsonl | 脚本调用 | 分数、问题数(CRITICAL/HIGH/MEDIUM) |
分析命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 综合报告
danya analyze --metric summary --days 7
# 本周 vs 上周对比(带趋势箭头)
danya analyze --metric compare --days 7
# 输出示例:
# ========================================
# Harness Compare | last 7d vs prev 7d
# ========================================
#
# Verify:
# Avg duration: 12.3s (DOWN 15% OK)
# Pass rate: 92% (UP 8% OK)
#
# Bugfix:
# Avg rounds: 1.5 (DOWN 25% OK)
# Success: 90% (UP 10% OK)
#
# Review:
# Avg score: 91.2 (UP 5% OK)
# CRITICAL: 0 (DOWN 100% OK)
# ========================================
从 Claude Code / Codex 迁移
如果你之前用 Claude Code 或 Codex,已有 .claude/ 或 .codex/ 配置:
| 场景 | Danya 行为 |
|---|---|
只有 .claude/ | 自动整合到 .danya/,不丢失自定义内容 |
只有 .codex/ | 同上 |
| 两个都有 | 都整合,.claude/ 优先于 .codex/ |
| 同名文件 | .danya/ 保留,legacy 跳过 |
| 运行时 | 只读 .danya/,不再读 .claude/ 或 .codex/ |
常用场景示例
场景 1:小功能开发
1
2
danya
> /auto-work "添加背包排序功能"
Agent 自动走 7 阶段,不需要手动干预。
场景 2:大功能无人值守
1
danya auto-work "实现武器升级系统" --model opus
Shell 强制编排,每阶段独立 danya -p,不可跳步。
场景 3:复杂功能并行开发
1
2
danya
> /parallel-execute prepare "给老虎机加倍功能"
Agent 拆任务 → 展示波次 → 用户确认 → 多 Agent 并行。
场景 4:代码质量提升
1
danya red-blue servers/logic_server/
红队找 bug → 蓝队修 → 循环到零 bug → 提炼经验。
场景 5:自动迭代刷覆盖率
1
danya orchestrate test-coverage.md -n 30
AI 写测试 → 量化打分 → 通过提交 → 基线从 15% 一路刷到 60%。
场景 6:查看 Harness 效果
1
danya analyze --metric compare --days 7
本周 vs 上周:验证耗时降了多少、审查均分升了多少、bug 修复轮数减了多少。
支持的引擎
| 引擎 | 检测方式 | 构建工具 | 审查规则数 |
|---|---|---|---|
| Unity | ProjectSettings/ + Assets/ | UnityBuild, CSharpSyntaxCheck | 9 条 |
| Unreal Engine | *.uproject | UnrealBuild | 6 条 |
| Godot | project.godot | GodotBuild | 5 条 |
| Go 游戏服务器 | go.mod | GameServerBuild | 9 条 |
| C++ 游戏服务器 | CMakeLists.txt | CppServerBuild | 6 条 |
| Java 游戏服务器 | pom.xml / build.gradle + 游戏关键词 | JavaServerBuild | 6 条 |
| Node.js 游戏服务器 | package.json + 游戏框架检测 | NodeServerBuild | 5 条 |
通用审查规则 4 条,所有项目自动应用。
18 个游戏专用工具
| 工具 | 用途 | 适用引擎 |
|---|---|---|
| CSharpSyntaxCheck | Roslyn 即时语法检查 | Unity, Godot |
| UnityBuild | Unity 编译管线 | Unity |
| UnrealBuild | UBT 编译 | UE |
| GodotBuild | GDScript/C# 检查 | Godot |
| GameServerBuild | 分级验证 (lint/build/test) | Go Server |
| CppServerBuild | C++ 服务端构建 (CMake/Ninja + cppcheck + ctest) | C++ Server |
| JavaServerBuild | Java 服务端构建 (Maven/Gradle + checkstyle + JUnit) | Java Server |
| NodeServerBuild | Node.js 服务端构建 (tsc + ESLint + Vitest) | Node.js Server |
| ProtoCompile | Protobuf 编译 + 桩代码生成 | 跨引擎 |
| ProtoCompat | Protobuf 破坏性变更检测 | 跨引擎 |
| PerfLint | 游戏热路径静态性能分析 | Unity, UE, Godot |
| ShaderCheck | Shader 静态验证(变体爆炸、采样器限制、语法) | Unity, UE, Godot |
| ConfigGenerate | 配置表生成 | 跨引擎 |
| OrmGenerate | ORM 代码生成 | Go Server |
| ScoreReview | 100 分制评分审查 | 跨引擎 |
| GateChain | 门禁链编排 | 跨引擎 |
| KnowledgeSediment | 知识自动沉淀 | 跨引擎 |
| ArchitectureGuard | 依赖方向检查 | 跨引擎 |
| AssetCheck | 资源引用完整性 + 命名规范 + 深层嵌套检测 | Unity, UE, Godot |
Phase 4: 性能与多语言优化 (v0.2.0)
v0.2.0 新增 5 个工具、增强 1 个工具、扩展 3 种服务端语言支持、新增 1 个 Git Hook。
新增工具
PerfLint — 游戏热路径静态性能分析
自动检测 Update/Tick/_process 等热路径中的性能反模式:
Unity(7 条规则):
1
2
3
4
5
6
7
8
9
10
// ❌ PerfLint 会报警:GetComponent in Update
void Update() {
var rb = GetComponent<Rigidbody>(); // 每帧 GetComponent
rb.AddForce(Vector3.up);
}
// ✅ 正确写法:缓存引用
private Rigidbody _rb;
void Awake() { _rb = GetComponent<Rigidbody>(); }
void Update() { _rb.AddForce(Vector3.up); }
检测项:GetComponent、Camera.main、Instantiate、Find、LINQ in Update、未缓存 WaitForSeconds。
Unreal(6 条规则):FindActor、Cast、NewObject、FString + in Tick、LineTrace 频率。
Godot(5 条规则):get_node、instantiate、get_children in _process、信号 connect/disconnect 配对。
ProtoCompat — Protobuf 破坏性变更检测
分析 .proto 文件的 git diff,检测可能破坏客户端兼容性的变更:
1
2
# 使用示例:检查当前分支的 proto 变更
danya -p "用 ProtoCompat 检查 proto/ 目录的兼容性"
| 严重级别 | 检测项 |
|---|---|
| CRITICAL | 字段编号变更、字段类型变更、枚举值重新编号 |
| HIGH | 删除字段未 reserve、删除 RPC 方法、删除 service |
ShaderCheck — Shader 静态验证
支持 Unity (ShaderLab/HLSL)、Unreal (HLSL/USF)、Godot (GDScript Shader):
1
2
3
4
# 检测报告示例
[CRITICAL] weapon_skin.shader: multi_compile 组合数 512 > 256 上限(变体爆炸)
[HIGH] water_surface.shader: sampler 数量 18 > 16 限制
[MEDIUM] particle_effect.shader: 片元着色器函数复杂度过高(嵌套循环 >3 层)
CppServerBuild — C++ 服务端构建
支持 quick/build/full 三级验证,自动检测 CMakeLists.txt:
| 级别 | 执行内容 |
|---|---|
| quick | cppcheck 静态分析 |
| build | CMake + Ninja 编译 |
| full | build + ctest 测试 |
JavaServerBuild — Java 服务端构建
自动检测 Maven (pom.xml) vs Gradle (build.gradle):
| 级别 | Maven | Gradle |
|---|---|---|
| quick | mvn checkstyle:check | gradle checkstyleMain |
| build | mvn compile | gradle build |
| full | build + mvn test | build + gradle test |
NodeServerBuild — Node.js 服务端构建
自动检测 bun vs npm,支持 colyseus / socket.io 等游戏框架:
| 级别 | 执行内容 |
|---|---|
| quick | ESLint |
| build | tsc 编译 |
| full | build + Vitest 测试 |
AssetCheck 增强
新增 Unreal Engine 支持:
- 命名规范检查:SM_(静态网格)、T_(纹理)、M_(材质)、BP_(蓝图)前缀
- 源资源体积警告:纹理 >50MB、网格 >100MB
- 软引用验证
深层嵌套检测(全引擎):
- Unity:Prefab Transform 父链 >10 层
- Godot:场景节点深度 >10 层
非活跃大对象检测:
- Unity 场景中 inactive 且 children >20 的 GameObject
AssetGuard Hook
Pre-commit 阶段自动拦截未被 Git LFS 追踪的大二进制文件(默认 >5MB):
1
2
3
4
5
6
# 自定义阈值(单位:字节)
export ASSET_GUARD_THRESHOLD=10485760 # 10MB
# 缺少 .gitattributes 时会发出警告:
# [WARN] No .gitattributes found — consider configuring Git LFS
# [BLOCK] Assets/Textures/hero.psd (12.3MB) not tracked by Git LFS
完整命令速查表
对话内(AI 判断模式)
| 命令 | 作用 |
|---|---|
/auto-work "需求" | 全自动流水线 |
/auto-bugfix "bug" | Bug 自动修复 |
/review | 评分制审查 |
/fix-harness | 自演进 |
/plan "需求" | 规划 |
/verify [level] | 验证 |
/parallel-execute prepare "功能" | 并行开发 |
/orchestrate <task.md> | 自动迭代 |
/red-blue [scope] | 红蓝对抗 |
/monitor [metric] [days] | 查看效果 |
/model | 模型管理 |
/compact | 手动压缩 |
/compact-threshold <ratio> | 调整压缩阈值 |
/init | 初始化 Harness |
终端(Shell 强制模式)
| 命令 | 作用 |
|---|---|
danya auto-work "需求" | Shell 强制流水线 |
danya parallel <tasks-dir> | 多 Agent 并行 |
danya red-blue [scope] | 红蓝对抗 |
danya orchestrate <task.md> | 自动迭代 |
danya analyze --metric <m> | 数据分析 |
danya dashboard [-w] [-v] | 实时监控 |
danya report | 月度报告 |
danya check-env | 环境检查 |