Chuyển đến nội dung chính

dsh-xcpc-autocode

Đã xác minh

dsh-xcpc-autocode · v3.1.0 · MIT

DeepSeek Harness plugin for verified competitive-programming problem-setting workflows.

Cài đặt

dsh plugin add dsh-xcpc-autocode

Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.

Mã nguồn

Thẻ

Tác giả

Readme

AutoCode for deepseek harness

本项目是针对https://github.com/SZTU-ACM/AutoCode的deepseek harness适配仓库,如果您使用codex和claude code请直接使用使用上游仓库的版本,本版本不保证原版的适用性。


License: MIT MCP

AutoCode 是面向竞赛编程出题人的 AI 出题工作台,支持 Claude Code、Codex 和 DeepSeek Harness (DSH)。

从一个想法开始,AutoCode 会协助你完成题面、解法、测试数据、验证和题包整理,把创作过程变成一条清晰、可靠、可复用的工作流。

为什么需要 AutoCode

AI 可以快速给出题目想法和代码,但竞赛题真正难的是让每个细节都经得起验证:

  • 题面描述含糊,输入输出协议不完整,样例和题意对不上。
  • 样例输出算错,或者题面样例没有经过标准解实际验证。
  • 标准解看起来合理,但边界条件有 bug。
  • 时间复杂度判断过于乐观,O(n^2) 被误当成能过大数据。
  • 暴力解需要与标准解形成独立的交叉验证。
  • 测试数据需要覆盖边界、构造、极限和性能场景。
  • 错解需要在最终数据上得到充分检验。
  • 题面、题解、样例和最终数据需要保持一致。

AutoCode 的目标是把这些风险前置暴露,而不是等到出题完成后人工返工。

AutoCode 如何保障质量

AutoCode 会把出题过程拆成相互衔接的质量环节:

环节 AutoCode 提供的帮助
题意设计 检查题目是否清晰、可判定,约束和样例是否完整。
解法验证 复核正确性、复杂度和边界条件,并安排独立解法交叉验证。
数据构造 生成覆盖随机、边界、极限和性能场景的测试数据。
自动检验 检查输入合法性、答案一致性,并用测试数据检验错解。
题包整理 将题面、代码、数据和说明整理成可继续编辑或提交的结构。

核心原则:AI 负责生成候选内容,AutoCode 负责让每一步必须被验证。

适合谁

AutoCode 适合:

  • 想用 AI 加速出题,但担心题面、样例、数据和复杂度不可靠的出题人。
  • 需要把题目从 idea 推到可打包 Polygon 结构的竞赛组织者。
  • 希望 AI 遵循完整验证流程的团队。
  • 想在 Claude Code、Codex 或 DeepSeek Harness (DSH) 中获得完整、可验证出题工作流的用户。

快速开始

前置要求

  • Python 3.10+
  • uv
  • 支持 C++20 的 g++,推荐 GCC 10+
  • Claude Code、Codex CLI 或 DeepSeek Harness (DSH)(至少安装一个;DeepSeek Harness 还需要 Node.js 20+)

常用的竞赛编程工具库已经随 AutoCode 一起提供。

安装 DeepSeek Harness 插件

AutoCode 同时以 npm 包(dsh-xcpc-autocode)形式发布为 DeepSeek Harness(dsh)插件,通过 profile 安装:

dsh plugin --profile web add dsh-xcpc-autocode
dsh --profile web --dump-config   # 确认 AutoCode 的配置层已生效
dsh --profile web

从本地源码安装(开发调试):

dsh plugin --profile web add /path/to/AutoCode

这一层做了什么

行 插件 作用
autocode-paths dsh-xcpc-autocode 发布 ctx.autocodePaths,用 import.meta.url 自定位包根
autocode-mcp @deepseek-ai/dsh-mcp-client 以 stdio 启动 uv run --project <包根> autocode-mcp,工具名 mcp__autocode__<tool>
autocode-hooks @deepseek-ai/dsh-hooks-claude-code 复用包内 hooks/hooks.json,在 dsh 里复现 Claude 侧的提前提示与预检
autocode-skills @deepseek-ai/dsh-skill-filesystem 把包内 skills/ 注册为技能根

几点说明:

  • 工作流契约会进入系统提示:dsh 会把 MCP server 的 instructions 并入模型可见的系统提示,AutoCode 的强制顺序与硬性门禁就写在那里。乱序调用仍会被 server 直接拒绝,并返回 gate_blocked / blocking_issues / next_actions。
  • 提前拦截只是「抢跑」:autocode-hooks 让 SessionStart 注入工作流顺序、PreToolUse 在跳步时提前拒绝,比等 server 返回更省 token;但它读的是同一份 src/autocode_mcp/workflow/ 状态,门禁真值始终在 MCP server。不想要它,就在自己的 patch 层里用同一个 id 覆盖该行。
  • 技能优先级:包内技能用 bundledSkillDir 注册(最低优先级),所以项目里的 .dsh/skills、你自己的 $DSH_HOME/skills 或 customSkillDirs 中同名技能会覆盖 AutoCode 的内置技能。
  • 工具超时:出题需要编译、对拍和终测验证,toolCallTimeoutMs 设为 30 分钟。
  • 启动失败策略:failOnStartupError: false,uv 缺失或代码不完整时 dsh 会记录明确错误,而不会让整个 profile 启动失败;想让它直接拒绝激活就改成 true。

版本与自检

  • 适配并验证于 dsh 0.2.0-rc(该版本汇总了 0.1.7-rc 的 MCP SDK v2、多 patch 文件等变更)。所用配置字段自 0.1.x 起未变,因此旧版本同样可用;用 dsh --version 确认实际版本。

  • 校验配置层是否被正确收集:

    dsh --profile web --dump-config-schema
    

    关注输出里的 x-cordis.complete 与每个条目的 status:complete 为 true、AutoCode 四行的 status 均为 schema,说明字段与 !!js 表达式都被接受。想看带 layer 标签的告警,改用 dsh --profile web --dump-config。

  • 装了/卸了插件需要重启 profile:运行中的 profile 保持启动时的 bundle 集合;而 cordis.patch.yml 的普通编辑仍走热重载。

  • 想停用某一行,在自己的 patch 层里用相同 id 加一句 disabled: true 即可,不必复制整段 config。

开始使用

安装完成后,可以直接描述你的出题目标:

用 AutoCode 创建一道竞赛编程题:给定数组,要求支持若干次区间查询。请先审计题意可行性,再按完整工作流生成题包。

AutoCode 会根据你的目标推进完整工作流,并在每个关键阶段进行质量检查。

提示词附加示例

  1. 涉及到的知识点有……
  2. 题目测试点的个数是14
  3. 设计一道思维题/构造题/交互题
  4. 利用某个概念的可以……性质,设计一道编程竞赛题

出题人有猜想的话请先做好必要的证明,可以使用ai来辅助证明。

工作流总览

AutoCode 会按以下顺序协助完成一题:

题意与约束审查
  -> 标准解与独立验证解
  -> 校验器、数据生成器和判题组件
  -> 随机对拍与边界测试
  -> 最终数据质量检查
  -> 题面、代码、数据整理成题包

普通题、特殊判题题和交互题都可以沿用这套流程。对于交互题,AutoCode 会额外关注交互协议、查询限制、错误行为和程序结束条件,帮助你把协议写得清楚、测得充分。

题目结构

每道题都会整理成清晰的目录,方便继续编辑、复核和提交:

<problem>/
├── solutions/
│   ├── sol.cpp
│   └── brute.cpp
├── files/
│   ├── gen.cpp
│   ├── val.cpp
│   └── checker.cpp
├── statements/
│   ├── README.md
│   └── tutorial.md
└── tests/
    ├── 01.in
    └── 01.ans / 01.out

特殊判题题会加入判题程序,交互题会加入交互程序,其余结构保持一致。

题面建议

一份完整的题面通常包含:

  1. 题目
  2. 时间/空间限制
  3. 题目背景(可选)
  4. 题目描述
  5. 输入格式(必须包含所有变量范围与总规模约束)
  6. 输出格式
  7. 样例(多组样例按编号递增)
  8. 说明(样例解释统一放在此处;只解释有代表性的样例即可)

质量保障

AutoCode 会在关键阶段自动复核:

  • 题面、输入输出格式和样例是否互相一致。
  • 标准解的正确性、复杂度和边界条件。
  • 校验器是否覆盖题目约束,生成的数据是否有效。
  • 标准解与独立验证解在多种场景下的结果是否一致。
  • 随机、构造、边界、极限和性能数据是否形成有效覆盖。
  • 代表性错解是否被最终测试识别。
  • 题面、代码、答案和目录结构是否可以直接整理成题包。

示例目录

仓库包含三个不同题型的样例:

  • examples/exact-sample:标准精确输出题。
  • examples/checker-sample:特殊判题题。
  • examples/interactive-sample:交互题。

这些样例可以作为不同题型的目录和文件组织参考。

贡献

查看 CONTRIBUTING.md 了解贡献指南。

故障排查

查看 TROUBLESHOOTING.md 了解常见问题和解决方案。

许可证

MIT License - 详见 LICENSE。

致谢

链接