chore: 简化单人开发工作流 (#48)

This commit is contained in:
ila
2026-08-24 16:05:01 +08:00
parent 04953bd7df
commit 0920621e7d
12 changed files with 149 additions and 120 deletions
+15 -8
View File
@@ -1,10 +1,10 @@
"""DevHarness 单一命令行入口。
子命令:
check 检查必需文件、核心文档和任务归档结构
check 检查必需文件、核心文档和已有历史任务快照结构
sync 从 Gitea Wiki 单向导出或校验核心 docs 镜像
archive 在 Gitea Wiki 创建任务归档
export 人工按需把 Wiki 任务归档导出到 docs/task
archive 按用户明确要求在 Gitea Wiki 创建历史任务快照
export 按用户明确要求把 Wiki 历史任务快照导出到 docs/task
各子命令的实现逻辑取自原来的 check_harness.py、sync_wiki_docs.py、
new_task_archive.py 和 export_task_archives.py,行为未改变。
@@ -85,7 +85,7 @@ CORE_DOCUMENT_REQUIREMENTS = {
"## 面向初级维护者的修改边界",
"## 每个任务的文档影响",
"## 需求记录与流转",
"## 稳定文档与任务归档",
"## 稳定文档与历史任务快照",
"## 自然语言快捷指令",
"## 效率与范围控制",
"### 严格控制范围",
@@ -306,6 +306,12 @@ def check_task_template(errors: list[str], root: Path = ROOT) -> None:
"- [ ] 更新已有交付文档,受众与页面:",
"- [ ] 新增交付文档,受众与页面:",
"- [ ] 需要目标岗位或客户代表验证:是 / 否;验证方式:",
"## 完成证据",
"- 最终差异:",
"- 测试结果:",
"- 未验证部分:",
"- 提交哈希:",
"- 长期 Wiki 页面与 revision(无长期文档影响时填“无”):",
)
for section in missing_sections(content, required):
errors.append(f"单元任务模板缺少:{section}")
@@ -325,7 +331,7 @@ def check_agent_efficiency_rules(errors: list[str], root: Path = ROOT) -> None:
"单元任务是唯一正式实施单位",
"高风险修改必须停止",
"用户没有明确验收通过前不得关闭",
"长期核心文档必须先修改 Wiki",
"只有长期事实变化时才更新核心文档",
"### 新项目 Wiki 初始化门禁",
"`Home` 不存在时必须先创建 `Home`",
"不得把模板自带的本地 `docs/` 当作新项目 Wiki 已初始化的证据",
@@ -350,6 +356,7 @@ def check_agent_efficiency_rules(errors: list[str], root: Path = ROOT) -> None:
"不得臆造用户原话",
"不复制完整聊天",
"Gitea 工单全文不导出到仓库",
"新任务默认不创建 Wiki 任务归档",
)
for section in missing_sections(content, required):
errors.append(f"AGENTS.md 缺少:{section}")
@@ -675,7 +682,7 @@ def run_export(args: argparse.Namespace) -> int:
def main() -> int:
parser = argparse.ArgumentParser(description="DevHarness 检查、同步与归档工具")
parser = argparse.ArgumentParser(description="DevHarness 检查、同步与历史快照兼容工具")
sub = parser.add_subparsers(dest="command", required=True)
p_check = sub.add_parser("check", help="检查 DevHarness 项目结构")
@@ -698,7 +705,7 @@ def main() -> int:
)
p_sync.set_defaults(func=run_sync)
p_archive = sub.add_parser("archive", help="在 Gitea Wiki 创建任务归档")
p_archive = sub.add_parser("archive", help="按明确要求在 Gitea Wiki 创建历史任务快照")
p_archive.add_argument("issue_number", help="Gitea 工单号,例如 123")
p_archive.add_argument("title", help="简短任务标题")
p_archive.add_argument(
@@ -706,7 +713,7 @@ def main() -> int:
)
p_archive.set_defaults(func=run_archive)
p_export = sub.add_parser("export", help="人工按需导出 Gitea Wiki 任务归档")
p_export = sub.add_parser("export", help="按明确要求导出 Gitea Wiki 历史任务快照")
p_export.add_argument(
"--all",
action="store_true",