Initial commit: ai-self-improvement-digest skill with kimi_search support
This commit is contained in:
Executable
+147
@@ -0,0 +1,147 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Helper script for AI Self-Improvement Digest.
|
||||
|
||||
Usage:
|
||||
python3 generate_digest.py --check-posted <url>
|
||||
python3 generate_digest.py --add-posted <url> <title> <topic>
|
||||
python3 generate_digest.py --add-experiment <date> <from_article> <experiment>
|
||||
python3 generate_digest.py --list-experiments
|
||||
"""
|
||||
|
||||
import json
|
||||
import argparse
|
||||
import sys
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def get_tracking_file():
|
||||
"""Get path to tracking file."""
|
||||
workspace = Path.home() / ".openclaw" / "workspace"
|
||||
memory_dir = workspace / "memory"
|
||||
memory_dir.mkdir(parents=True, exist_ok=True)
|
||||
return memory_dir / "ai-digest-posted.json"
|
||||
|
||||
|
||||
def load_tracking():
|
||||
"""Load tracking data from file."""
|
||||
tracking_file = get_tracking_file()
|
||||
if tracking_file.exists():
|
||||
with open(tracking_file, 'r') as f:
|
||||
return json.load(f)
|
||||
return {
|
||||
"posted": [],
|
||||
"experiments": [],
|
||||
"skillsEvaluated": [],
|
||||
"setupChanges": []
|
||||
}
|
||||
|
||||
|
||||
def save_tracking(data):
|
||||
"""Save tracking data to file."""
|
||||
tracking_file = get_tracking_file()
|
||||
with open(tracking_file, 'w') as f:
|
||||
json.dump(data, f, indent=2)
|
||||
|
||||
|
||||
def is_posted(url):
|
||||
"""Check if URL has already been posted."""
|
||||
data = load_tracking()
|
||||
for item in data.get("posted", []):
|
||||
if item.get("url") == url:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def add_posted(url, title, topic):
|
||||
"""Add a posted item to tracking."""
|
||||
data = load_tracking()
|
||||
data["posted"].append({
|
||||
"date": datetime.now().isoformat(),
|
||||
"url": url,
|
||||
"title": title,
|
||||
"topic": topic
|
||||
})
|
||||
save_tracking(data)
|
||||
print(f"Added: {title}")
|
||||
|
||||
|
||||
def add_experiment(date, from_article, experiment, outcome="", learned=""):
|
||||
"""Add an experiment to tracking."""
|
||||
data = load_tracking()
|
||||
data["experiments"].append({
|
||||
"date": date,
|
||||
"fromArticle": from_article,
|
||||
"experiment": experiment,
|
||||
"outcome": outcome,
|
||||
"learned": learned
|
||||
})
|
||||
save_tracking(data)
|
||||
print(f"Added experiment: {experiment}")
|
||||
|
||||
|
||||
def list_experiments():
|
||||
"""List all experiments."""
|
||||
data = load_tracking()
|
||||
experiments = data.get("experiments", [])
|
||||
if not experiments:
|
||||
print("No experiments recorded yet.")
|
||||
return
|
||||
|
||||
print(f"\n{'Date':<12} {'From Article':<20} {'Experiment':<40}")
|
||||
print("-" * 72)
|
||||
for exp in experiments:
|
||||
print(f"{exp.get('date', 'N/A'):<12} {exp.get('fromArticle', 'N/A')[:18]:<20} {exp.get('experiment', 'N/A')[:38]:<40}")
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="AI Self-Improvement Digest Helper")
|
||||
subparsers = parser.add_subparsers(dest="command", help="Commands")
|
||||
|
||||
# Check if URL is posted
|
||||
check_parser = subparsers.add_parser("check-posted", help="Check if URL has been posted")
|
||||
check_parser.add_argument("url", help="URL to check")
|
||||
|
||||
# Add posted item
|
||||
add_parser = subparsers.add_parser("add-posted", help="Add a posted item")
|
||||
add_parser.add_argument("url", help="Article URL")
|
||||
add_parser.add_argument("title", help="Article title")
|
||||
add_parser.add_argument("topic", help="Topic/category")
|
||||
|
||||
# Add experiment
|
||||
exp_parser = subparsers.add_parser("add-experiment", help="Add an experiment")
|
||||
exp_parser.add_argument("date", help="Date (YYYY-MM-DD)")
|
||||
exp_parser.add_argument("from_article", help="Source article/topic")
|
||||
exp_parser.add_argument("experiment", help="Description of experiment")
|
||||
exp_parser.add_argument("--outcome", default="", help="Outcome of experiment")
|
||||
exp_parser.add_argument("--learned", default="", help="What was learned")
|
||||
|
||||
# List experiments
|
||||
subparsers.add_parser("list-experiments", help="List all experiments")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.command == "check-posted":
|
||||
if is_posted(args.url):
|
||||
print("POSTED")
|
||||
sys.exit(0)
|
||||
else:
|
||||
print("NOT_POSTED")
|
||||
sys.exit(1)
|
||||
|
||||
elif args.command == "add-posted":
|
||||
add_posted(args.url, args.title, args.topic)
|
||||
|
||||
elif args.command == "add-experiment":
|
||||
add_experiment(args.date, args.from_article, args.experiment, args.outcome, args.learned)
|
||||
|
||||
elif args.command == "list-experiments":
|
||||
list_experiments()
|
||||
|
||||
else:
|
||||
parser.print_help()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user