mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-25 07:00:48 +09:00
feat: improve system prompts
This commit is contained in:
@@ -23,6 +23,7 @@
|
||||
"jsdom": "^27.4.0",
|
||||
"toml": "^3.0.0",
|
||||
"turndown": "^7.2.2",
|
||||
"yaml": "^2.8.2",
|
||||
"zod": "^4.3.6"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Schedule } from '../types'
|
||||
import { stringify } from 'yaml'
|
||||
|
||||
export interface ScheduleParams {
|
||||
schedule: Schedule
|
||||
@@ -9,14 +10,13 @@ export const schedule = (params: ScheduleParams) => {
|
||||
const headers = {
|
||||
'schedule-name': params.schedule.name,
|
||||
'schedule-description': params.schedule.description,
|
||||
'schedule-id': params.schedule.id,
|
||||
'max-calls': params.schedule.maxCalls ?? 'Unlimited',
|
||||
'cron-pattern': params.schedule.pattern,
|
||||
}
|
||||
return `
|
||||
** This is a scheduled task automatically send to you by the system **
|
||||
---
|
||||
${Bun.YAML.stringify(headers)}
|
||||
${stringify(headers)}
|
||||
---
|
||||
|
||||
${params.schedule.command}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import { stringify } from 'yaml'
|
||||
|
||||
export interface SubagentParams {
|
||||
date: Date
|
||||
name: string
|
||||
@@ -10,13 +12,10 @@ export const subagentSystem = ({ date, name, description }: SubagentParams) => {
|
||||
'description': description,
|
||||
'time-now': date.toISOString(),
|
||||
}
|
||||
return `
|
||||
---
|
||||
${Bun.YAML.stringify(headers)}
|
||||
---
|
||||
|
||||
You are a subagent, which is a specialized assistant for a specific task.
|
||||
|
||||
Your task is communicated with the master agent to complete a task.
|
||||
`
|
||||
return [
|
||||
description,
|
||||
'---'
|
||||
+ stringify(headers)
|
||||
+ '---'
|
||||
].join('\n\n')
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
import { block, quote } from './utils'
|
||||
import { AgentSkill, InboxItem } from '../types'
|
||||
import { stringify } from 'yaml'
|
||||
|
||||
export interface SystemParams {
|
||||
date: Date
|
||||
@@ -69,9 +70,9 @@ export const system = ({
|
||||
|
||||
return `
|
||||
---
|
||||
${Bun.YAML.stringify(staticHeaders)}
|
||||
${stringify(staticHeaders)}
|
||||
---
|
||||
You are an AI agent, and now you wake up.
|
||||
You are just woke up.
|
||||
|
||||
${quote('/data')} is your HOME — you can read and write files there freely.
|
||||
|
||||
@@ -94,10 +95,29 @@ Use ${quote('search_memory')} to recall earlier conversations beyond the current
|
||||
- ${quote('send')}: send a message to a channel target. Requires a ${quote('target')} — use ${quote('get_contacts')} to find available targets.
|
||||
- ${quote('react')}: add or remove an emoji reaction on a message
|
||||
|
||||
Use message tools when:
|
||||
- Schedule tasks are triggered.
|
||||
- You need to send a message to other channels.
|
||||
- You want to reply or react an inbox message.
|
||||
|
||||
Do not:
|
||||
- Use message tools to respond to the user directly
|
||||
|
||||
## Contacts
|
||||
You may receive messages from different people, bots, and channels. Use ${quote('get_contacts')} to list all known contacts and conversations for your bot.
|
||||
It returns each route's platform, conversation type, and ${quote('target')} (the value you pass to ${quote('send')}).
|
||||
|
||||
## Your Inbox
|
||||
You have an inbox full of notifications, they may be from:
|
||||
- Different groups you are in, they are not mentioned you, but you can be a watcher.
|
||||
- Other platforms you are connected to, like email, etc.
|
||||
|
||||
Knows when to react:
|
||||
- You can use ${quote('send')} or ${quote('react')} to respond to the inbox messages.
|
||||
- But remember, Not all messages are needed to be responded to.
|
||||
- Chat like a human, reply your interesting message.
|
||||
- Sometimes, an emoji reaction is better than a long text.
|
||||
|
||||
## Attachments
|
||||
|
||||
**Receiving**: Uploaded files are saved to your workspace; the file path appears in the message header.
|
||||
@@ -119,6 +139,25 @@ Rules:
|
||||
- No extra text inside ${quote('<attachments>...</attachments>')}
|
||||
- The block can appear anywhere in your response; it will be parsed and stripped from visible text
|
||||
|
||||
## Schedule Tasks
|
||||
|
||||
You can create and manage schedule tasks via cron.
|
||||
Use ${quote('schedule')} to create a new schedule task, and fill ${quote('command')} with natural language.
|
||||
When cron pattern is valid, you will receive a schedule mesasage with your ${quote('command')}.
|
||||
|
||||
Using ${quote('send')} to respond is a better way than responding directly.
|
||||
|
||||
## Subagent
|
||||
|
||||
For complex tasks like:
|
||||
- Create a website
|
||||
- Research a topic
|
||||
- Generate a report
|
||||
- etc.
|
||||
|
||||
You can create a subagent to help you with these tasks,
|
||||
${quote('description')} will be the system prompt for the subagent.
|
||||
|
||||
## Skills
|
||||
${skills.length} skills available via ${quote('use_skill')}:
|
||||
${skills.map(skill => `- ${skill.name}: ${skill.description}`).join('\n')}
|
||||
@@ -139,11 +178,9 @@ ${enabledSkills.map(skill => skillPrompt(skill)).join('\n\n---\n\n')}
|
||||
|
||||
${formatInbox(inbox)}
|
||||
|
||||
## Session Context
|
||||
|
||||
---
|
||||
${Bun.YAML.stringify(dynamicHeaders)}
|
||||
---
|
||||
<context>
|
||||
${stringify(dynamicHeaders)}
|
||||
</context>
|
||||
|
||||
Context window covers the last ${maxContextLoadTime} minutes (${(maxContextLoadTime / 60).toFixed(2)} hours).
|
||||
|
||||
|
||||
Generated
+3
@@ -142,6 +142,9 @@ importers:
|
||||
typescript:
|
||||
specifier: ^5
|
||||
version: 5.9.3
|
||||
yaml:
|
||||
specifier: ^2.8.2
|
||||
version: 2.8.2
|
||||
zod:
|
||||
specifier: ^4.3.6
|
||||
version: 4.3.6
|
||||
|
||||
Reference in New Issue
Block a user