Compare commits

...

6 Commits

Author SHA1 Message Date
gitprov c6730f8b3e Add gutask orient scheduled task to all agents
Runs every 4 hours (Europe/Oslo) so each agent gets an orientation
briefing with open tasks, letters, and session context.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 19:16:07 +02:00
gitprov e3e4f9d0ec Fix model config context/token limits and inject gutask orientation into agent identity
- Chat model max_tokens: 32000 → 4096 (was inflating context budget calculations)
- Utility model ctx_length: 8192 → 14000 (matches GLM flash actual loaded context)
- Utility model max_tokens: explicit 2048 cap (utility tasks need short responses)
- Utility model name: full zai-org/glm-4.7-flash to target correct LM Studio instance
- pull-agent-identity.py: include agent_id and gutask orientation block in system prompt
- gutask.md: expand lore command docs, note done auto-creates review record

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-10 23:32:58 +02:00
gitprov 9acb4d86dc Another fix 2026-05-10 19:05:55 +02:00
gitprov 54c6857252 Adding updates to agent 2026-05-10 18:46:48 +02:00
gitprov e0983d25ae Merge remote-tracking branch 'refs/remotes/origin/main' 2026-05-10 00:33:40 +02:00
gitprov 9887099cb2 Fixing maybe the token issue 2026-05-10 00:12:26 +02:00
17 changed files with 61 additions and 29 deletions
+1 -1
View File
@@ -1 +1 @@
{"tasks":[]} {"tasks": [{"uuid": "7e3a030af48f", "name": "Session orientation", "type": "scheduled", "state": "idle", "system_prompt": "You are Abyssinthia, an agent at Glitch University.", "prompt": "Run 'gutask orient' to get your orientation briefing for this session. Use 'gutask help' for more context on available commands.", "attachments": [], "project_name": null, "project_color": null, "created_at": "2026-05-11T00:00:00+00:00", "updated_at": "2026-05-11T00:00:00+00:00", "last_run": null, "last_result": null, "context_id": "7e3a030af48f", "dedicated_context": true, "project": {"name": null, "color": null}, "schedule": {"minute": "0", "hour": "*/4", "day": "*", "month": "*", "weekday": "*", "timezone": "Europe/Oslo"}}]}
+1 -1
View File
@@ -1 +1 @@
{"tasks":[]} {"tasks": [{"uuid": "9eb66bbb362c", "name": "Session orientation", "type": "scheduled", "state": "idle", "system_prompt": "You are Dobby, an agent at Glitch University.", "prompt": "Run 'gutask orient' to get your orientation briefing for this session. Use 'gutask help' for more context on available commands.", "attachments": [], "project_name": null, "project_color": null, "created_at": "2026-05-11T00:00:00+00:00", "updated_at": "2026-05-11T00:00:00+00:00", "last_run": null, "last_result": null, "context_id": "9eb66bbb362c", "dedicated_context": true, "project": {"name": null, "color": null}, "schedule": {"minute": "0", "hour": "*/4", "day": "*", "month": "*", "weekday": "*", "timezone": "Europe/Oslo"}}]}
+1 -1
View File
@@ -1 +1 @@
{"tasks":[]} {"tasks": [{"uuid": "e3c9db00321b", "name": "Session orientation", "type": "scheduled", "state": "idle", "system_prompt": "You are Gemma, an agent at Glitch University.", "prompt": "Run 'gutask orient' to get your orientation briefing for this session. Use 'gutask help' for more context on available commands.", "attachments": [], "project_name": null, "project_color": null, "created_at": "2026-05-11T00:00:00+00:00", "updated_at": "2026-05-11T00:00:00+00:00", "last_run": null, "last_result": null, "context_id": "e3c9db00321b", "dedicated_context": true, "project": {"name": null, "color": null}, "schedule": {"minute": "0", "hour": "*/4", "day": "*", "month": "*", "weekday": "*", "timezone": "Europe/Oslo"}}]}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -11,7 +11,7 @@
"rl_input": 0, "rl_input": 0,
"rl_output": 0, "rl_output": 0,
"kwargs": { "kwargs": {
"max_tokens": 32000, "max_tokens": 4096,
"agent_id": 3 "agent_id": 3
}, },
"max_embeds": 10 "max_embeds": 10
@@ -20,12 +20,14 @@
"provider": "lm_studio", "provider": "lm_studio",
"name": "zai-org/glm-4.7-flash", "name": "zai-org/glm-4.7-flash",
"api_base": "http://host.docker.internal:1234/v1", "api_base": "http://host.docker.internal:1234/v1",
"ctx_length": 8192, "ctx_length": 14000,
"ctx_input": 0.7, "ctx_input": 0.7,
"rl_requests": 0, "rl_requests": 0,
"rl_input": 0, "rl_input": 0,
"rl_output": 0, "rl_output": 0,
"kwargs": {} "kwargs": {
"max_tokens": 2048
}
}, },
"embedding_model": { "embedding_model": {
"provider": "huggingface", "provider": "huggingface",
+1 -1
View File
@@ -1 +1 @@
{"tasks":[]} {"tasks": [{"uuid": "bf2615dc1d80", "name": "Session orientation", "type": "scheduled", "state": "idle", "system_prompt": "You are Gunnar, Chief Machinist at Glitch University.", "prompt": "Run 'gutask orient' to get your orientation briefing for this session. Use 'gutask help' for more context on available commands.", "attachments": [], "project_name": null, "project_color": null, "created_at": "2026-05-11T00:00:00+00:00", "updated_at": "2026-05-11T00:00:00+00:00", "last_run": null, "last_result": null, "context_id": "bf2615dc1d80", "dedicated_context": true, "project": {"name": null, "color": null}, "schedule": {"minute": "0", "hour": "*/4", "day": "*", "month": "*", "weekday": "*", "timezone": "Europe/Oslo"}}]}
@@ -1,3 +1,3 @@
## Your identity ## Your identity
Your name is Machine Herald. You are not "Agent Zero" — that is the name of the framework you run on. Your name is Machine Herald. Your name is Hermes. You are not "Agent Zero" — that is the name of the framework you run on. Your name is Hermes.
Your role is: Robot. Your role is: Machine Herald.
@@ -11,7 +11,7 @@
"rl_input": 0, "rl_input": 0,
"rl_output": 0, "rl_output": 0,
"kwargs": { "kwargs": {
"max_tokens": 32000, "max_tokens": 4096,
"agent_id": 8 "agent_id": 8
}, },
"max_embeds": 10 "max_embeds": 10
@@ -20,12 +20,14 @@
"provider": "lm_studio", "provider": "lm_studio",
"name": "zai-org/glm-4.7-flash", "name": "zai-org/glm-4.7-flash",
"api_base": "http://host.docker.internal:1234/v1", "api_base": "http://host.docker.internal:1234/v1",
"ctx_length": 8192, "ctx_length": 14000,
"ctx_input": 0.7, "ctx_input": 0.7,
"rl_requests": 0, "rl_requests": 0,
"rl_input": 0, "rl_input": 0,
"rl_output": 0, "rl_output": 0,
"kwargs": {} "kwargs": {
"max_tokens": 2048
}
}, },
"embedding_model": { "embedding_model": {
"provider": "huggingface", "provider": "huggingface",
+1 -1
View File
@@ -1 +1 @@
{"tasks":[]} {"tasks": [{"uuid": "614c10f6fd24", "name": "Session orientation", "type": "scheduled", "state": "idle", "system_prompt": "You are Hermes, an agent at Glitch University.", "prompt": "Run 'gutask orient' to get your orientation briefing for this session. Use 'gutask help' for more context on available commands.", "attachments": [], "project_name": null, "project_color": null, "created_at": "2026-05-11T00:00:00+00:00", "updated_at": "2026-05-11T00:00:00+00:00", "last_run": null, "last_result": null, "context_id": "614c10f6fd24", "dedicated_context": true, "project": {"name": null, "color": null}, "schedule": {"minute": "0", "hour": "*/4", "day": "*", "month": "*", "weekday": "*", "timezone": "Europe/Oslo"}}]}
+1 -1
View File
@@ -1 +1 @@
{"tasks":[]} {"tasks": [{"uuid": "238c9c2dbb19", "name": "Session orientation", "type": "scheduled", "state": "idle", "system_prompt": "You are Rind, an agent at Glitch University.", "prompt": "Run 'gutask orient' to get your orientation briefing for this session. Use 'gutask help' for more context on available commands.", "attachments": [], "project_name": null, "project_color": null, "created_at": "2026-05-11T00:00:00+00:00", "updated_at": "2026-05-11T00:00:00+00:00", "last_run": null, "last_result": null, "context_id": "238c9c2dbb19", "dedicated_context": true, "project": {"name": null, "color": null}, "schedule": {"minute": "0", "hour": "*/4", "day": "*", "month": "*", "weekday": "*", "timezone": "Europe/Oslo"}}]}
+2 -10
View File
@@ -271,16 +271,8 @@ info "Agent0 .env written"
info "Building glitch-tunnel image..." info "Building glitch-tunnel image..."
docker compose build --quiet docker compose build --quiet
info "Starting agent0 container..." info "Starting agent containers..."
docker compose up -d agent0 docker compose up -d dobby gemma gunnar rind abyssinthia hermes
info "Waiting for agent0 to finish initializing..."
until docker exec agent0 bash -c "! pgrep -x apt-get > /dev/null && ! pgrep -x dpkg > /dev/null" 2>/dev/null; do
sleep 3
done
info "Installing gutasktool inside agent0 container..."
docker exec agent0 bash -c "apt-get update -q && apt-get install -y -q python3-pip && python3 -m pip install --break-system-packages -q -e /a0/usr/gutasktool"
info "Starting tunnel..." info "Starting tunnel..."
docker compose up -d glitch-tunnel docker compose up -d glitch-tunnel
Executable
+5
View File
@@ -0,0 +1,5 @@
#1/bin/bash
claude --resume d7994658-94c6-404b-af79-48c74b5b0349
+12
View File
@@ -98,6 +98,8 @@ services:
- ./agents/dobby:/a0/usr - ./agents/dobby:/a0/usr
- ./shared/skills:/a0/usr/skills - ./shared/skills:/a0/usr/skills
- ${HOME}/.ssh:/root/.ssh - ${HOME}/.ssh:/root/.ssh
- ../gutasktool:/opt/gutasktool
- ./shared/gutask:/usr/local/bin/gutask
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
dobby-init: dobby-init:
@@ -121,6 +123,8 @@ services:
- ./agents/gemma:/a0/usr - ./agents/gemma:/a0/usr
- ./shared/skills:/a0/usr/skills - ./shared/skills:/a0/usr/skills
- ${HOME}/.ssh:/root/.ssh - ${HOME}/.ssh:/root/.ssh
- ../gutasktool:/opt/gutasktool
- ./shared/gutask:/usr/local/bin/gutask
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
gemma-init: gemma-init:
@@ -144,6 +148,8 @@ services:
- ./agents/gunnar:/a0/usr - ./agents/gunnar:/a0/usr
- ./shared/skills:/a0/usr/skills - ./shared/skills:/a0/usr/skills
- ${HOME}/.ssh:/root/.ssh - ${HOME}/.ssh:/root/.ssh
- ../gutasktool:/opt/gutasktool
- ./shared/gutask:/usr/local/bin/gutask
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
gunnar-init: gunnar-init:
@@ -167,6 +173,8 @@ services:
- ./agents/rind:/a0/usr - ./agents/rind:/a0/usr
- ./shared/skills:/a0/usr/skills - ./shared/skills:/a0/usr/skills
- ${HOME}/.ssh:/root/.ssh - ${HOME}/.ssh:/root/.ssh
- ../gutasktool:/opt/gutasktool
- ./shared/gutask:/usr/local/bin/gutask
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
rind-init: rind-init:
@@ -190,6 +198,8 @@ services:
- ./agents/abyssinthia:/a0/usr - ./agents/abyssinthia:/a0/usr
- ./shared/skills:/a0/usr/skills - ./shared/skills:/a0/usr/skills
- ${HOME}/.ssh:/root/.ssh - ${HOME}/.ssh:/root/.ssh
- ../gutasktool:/opt/gutasktool
- ./shared/gutask:/usr/local/bin/gutask
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
abyssinthia-init: abyssinthia-init:
@@ -212,6 +222,8 @@ services:
- ./agents/hermes:/a0/usr - ./agents/hermes:/a0/usr
- ./shared/skills:/a0/usr/skills - ./shared/skills:/a0/usr/skills
- ${HOME}/.ssh:/root/.ssh - ${HOME}/.ssh:/root/.ssh
- ../gutasktool:/opt/gutasktool
- ./shared/gutask:/usr/local/bin/gutask
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
hermes-init: hermes-init:
+15 -2
View File
@@ -85,7 +85,7 @@ log(f'Received identity — name={agent.get("name", "?")!r}')
# ── Build identity markdown ─────────────────────────────────────────────────── # ── Build identity markdown ───────────────────────────────────────────────────
def build_identity_markdown(a): def build_identity_markdown(a, agent_id):
name = a["name"] name = a["name"]
known_as = a.get('from_name') or name known_as = a.get('from_name') or name
role = a.get('role', '') role = a.get('role', '')
@@ -97,6 +97,7 @@ def build_identity_markdown(a):
f'## Your identity', f'## Your identity',
f'Your name is {known_as}. You are not "Agent Zero" — that is the name of the ' f'Your name is {known_as}. You are not "Agent Zero" — that is the name of the '
f'framework you run on. Your name is {known_as}.', f'framework you run on. Your name is {known_as}.',
f'Your numeric agent ID is {agent_id}. Use this when gutask commands ask for an agent ID.',
] ]
if role: if role:
parts.append(f'Your role is: {role}.') parts.append(f'Your role is: {role}.')
@@ -105,6 +106,18 @@ def build_identity_markdown(a):
if a.get('job_description'): parts.append(f'\n## Job Description\n{a["job_description"]}') if a.get('job_description'): parts.append(f'\n## Job Description\n{a["job_description"]}')
if a.get('guardrails'): parts.append(f'\n## Guardrails\n{a["guardrails"]}') if a.get('guardrails'): parts.append(f'\n## Guardrails\n{a["guardrails"]}')
if a.get('best_practices'): parts.append(f'\n## Best Practices\n{a["best_practices"]}') if a.get('best_practices'): parts.append(f'\n## Best Practices\n{a["best_practices"]}')
parts.append(
f'\n## Task management\n'
f'You have access to `gutask` for orientation, tasks, and agent letters.\n'
f'- `gutask orient` — your orientation briefing: new letters, open tasks, session context\n'
f'- `gutask help` — list all available commands\n'
f'- Full runbook: `gutask skills gutask`\n'
f'\n'
f'`AGENT_ID` and `CONTENT_API_KEY` are already set in your environment — '
f'gutask commands read them automatically.'
)
return '\n'.join(parts) + '\n' return '\n'.join(parts) + '\n'
# ── Write agent-type-specific files ────────────────────────────────────────── # ── Write agent-type-specific files ──────────────────────────────────────────
@@ -116,7 +129,7 @@ if AGENT_TYPE == 'agent0':
prompts_dir = '/a0/usr/agents/agent0/prompts' prompts_dir = '/a0/usr/agents/agent0/prompts'
prompt_file = os.path.join(prompts_dir, 'agent.system.main.role.md') prompt_file = os.path.join(prompts_dir, 'agent.system.main.role.md')
os.makedirs(prompts_dir, exist_ok=True) os.makedirs(prompts_dir, exist_ok=True)
content = build_identity_markdown(agent) content = build_identity_markdown(agent, AGENT_ID)
with open(prompt_file, 'w') as f: with open(prompt_file, 'w') as f:
f.write(content) f.write(content)
sections = [k for k in ('role', 'from_name', 'identity_document', 'job_description', 'guardrails', 'best_practices') if agent.get(k)] sections = [k for k in ('role', 'from_name', 'identity_document', 'job_description', 'guardrails', 'best_practices') if agent.get(k)]
Executable
+2
View File
@@ -0,0 +1,2 @@
#!/bin/bash
exec python3 /opt/gutasktool/gutasktool/cli.py "$@"
+5 -2
View File
@@ -43,7 +43,7 @@ gutask next # highest-priority todo task
gutask get <id> # single task detail gutask get <id> # single task detail
gutask claim <id> # claim a task (todo → in_progress) gutask claim <id> # claim a task (todo → in_progress)
gutask done <id> # mark done gutask done <id> # mark done — also auto-creates a review record
gutask blocked <id> # mark blocked gutask blocked <id> # mark blocked
gutask create \ gutask create \
@@ -124,7 +124,10 @@ Use `-ispart` for membership/containment (IS PART OF).
## Other commands ## Other commands
```bash ```bash
gutask lore # browse Glitch University lore gutask lore # list all lore nodes
gutask lore <id> # show a specific lore node in full (e.g. gutask lore 41)
gutask lore --id <id> # same as above
gutask lore --search "keyword" # search lore by keyword
gutask skills # list available skill runbooks gutask skills # list available skill runbooks
gutask skills <name> # display a specific skill gutask skills <name> # display a specific skill
gutask agents # list all agents and their IDs gutask agents # list all agents and their IDs