开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
main
分支 (1)
main
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
main
分支 (1)
main
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
main
分支 (1)
main
MiniCode-Python
/
minicode
/
cron_runner.py
MiniCode-Python
/
minicode
/
cron_runner.py
cron_runner.py 2.90 KB
一键复制 编辑 原始数据 按行查看 历史
QUSETIONS 提交于 2026年04月28日 21:50 +08:00 . ci: add release hardening quality gates
"""Scheduled headless task runner for MiniCode.
Config format:
{
"tasks": [
{"name": "daily-check", "prompt": "Summarize the repository status"}
]
}
Without a config file, the runner exits cleanly with an explanatory message.
"""
from __future__ import annotations
import argparse
import json
import os
import time
from pathlib import Path
from typing import Any
def _default_config_path() -> Path:
return Path(os.environ.get("MINI_CODE_CRON_CONFIG", ".mini-code/cron.json"))
def load_cron_config(path: str | Path | None = None) -> dict[str, Any]:
config_path = Path(path) if path is not None else _default_config_path()
if not config_path.exists():
return {"tasks": []}
data = json.loads(config_path.read_text(encoding="utf-8"))
if not isinstance(data, dict):
raise ValueError("cron config must be a JSON object")
tasks = data.get("tasks", [])
if not isinstance(tasks, list):
raise ValueError("cron config field 'tasks' must be a list")
return {"tasks": tasks}
def run_configured_tasks(config: dict[str, Any], *, dry_run: bool = False) -> list[dict[str, Any]]:
from minicode.headless import run_headless
results: list[dict[str, Any]] = []
for index, task in enumerate(config.get("tasks", [])):
if not isinstance(task, dict):
results.append({"index": index, "ok": False, "error": "task must be an object"})
continue
prompt = str(task.get("prompt", "")).strip()
name = str(task.get("name") or f"task-{index + 1}")
if not prompt:
results.append({"name": name, "ok": False, "error": "prompt is required"})
continue
if dry_run:
results.append({"name": name, "ok": True, "dryRun": True})
continue
results.append({"name": name, "ok": True, "response": run_headless(prompt)})
return results
def main(argv: list[str] | None = None) -> None:
parser = argparse.ArgumentParser(description="Run MiniCode scheduled headless tasks.")
parser.add_argument("--config", default=None, help="Path to cron JSON config.")
parser.add_argument("--once", action="store_true", help="Run tasks once and exit.")
parser.add_argument("--dry-run", action="store_true", help="Validate tasks without executing prompts.")
parser.add_argument("--interval", type=float, default=60.0, help="Polling interval in seconds.")
args = parser.parse_args(argv)
while True:
config = load_cron_config(args.config)
if not config["tasks"]:
print(f"No cron tasks configured in {args.config or _default_config_path()}.", flush=True)
else:
for result in run_configured_tasks(config, dry_run=args.dry_run):
print(json.dumps(result, ensure_ascii=False), flush=True)
if args.once or not config["tasks"]:
return
time.sleep(max(args.interval, 1.0))
if __name__ == "__main__":
main()
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/yyyac/MiniCode-Python.git
git@gitee.com:yyyac/MiniCode-Python.git
yyyac
MiniCode-Python
MiniCode-Python
main
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /