feat: expand deai writing checks
GoodBuddy Agents / Validate Agent source (push) Canceled after 0s
GoodBuddy Agents / Build Linux arm64 Agent (push) Canceled after 0s
GoodBuddy Agents / Build Linux x64 Agent (push) Canceled after 0s
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s

The bundled deai-writing skill now detects additional template patterns,
unsupported attribution, role-slot prose, engineering metaphors, and absolute
claims. Its JSON report also summarizes findings by level and category while
preserving GoodBuddy's cross-platform Python guidance.

Release note: 中文“去 AI 味”审校新增分析套话、模糊归因、角色槽位、工程黑话和绝对化承诺等检查,并提供按分类汇总的扫描结果。
This commit is contained in:
mesalogo
2026-09-01 20:48:58 +08:00
parent 2f1881a414
commit 2fca39ddb2
4 changed files with 217 additions and 12 deletions
@@ -219,6 +219,19 @@ def collect_files(targets, exts):
return list(dict.fromkeys(out))
def summarize_findings(findings):
"""Count findings by level and category for CI and agent consumers."""
counts = {LEVEL_BLOCK: {}, LEVEL_REVIEW: {}}
for finding in findings:
level_counts = counts[finding["level"]]
category = finding["category"]
level_counts[category] = level_counts.get(category, 0) + 1
return {
level: dict(sorted(category_counts.items()))
for level, category_counts in counts.items()
}
def main():
ap = argparse.ArgumentParser(description="中文正式文档 AI 味扫描")
ap.add_argument("targets", nargs="+", help="待扫描的文件或目录")
@@ -271,6 +284,7 @@ def main():
n_block = sum(1 for f in all_findings if f["level"] == LEVEL_BLOCK)
n_review = len(all_findings) - n_block
by_category = summarize_findings(all_findings)
if args.json:
print(json.dumps({
@@ -278,6 +292,7 @@ def main():
"requested_files": len(files),
"block": n_block,
"review": n_review,
"by_category": by_category,
"errors": errors,
"findings": all_findings,
}, ensure_ascii=False, indent=2))