148 lines
4.3 KiB
Python
Executable File
148 lines
4.3 KiB
Python
Executable File
#!/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()
|