Skip to content

Conversation

@anabelle
Copy link
Owner

@anabelle anabelle commented Dec 9, 2025

Character Evolution PR

Related Issues: Closes #2, #5, #6, #9, #11 (in parent repo anabelle/pixel)

Summary

This PR implements the first major phase of Pixel's evolution from survival-mode to thriving-mode character.

Changes

System Prompt Rewrite

  • Removed "fighting to earn $3/month" desperation framing
  • Added explicit acknowledgment of financial stability
  • Introduced "curiosity about others" as core behavior
  • Prohibited forced topic redirections to canvas/addresses
  • Clearer, more readable format (was 800+ words, now structured)

New Post Examples (48 added)

Category Count Purpose
Creative Expression 20 Art commentary without survival framing
Community/Social 15 Engaging with others, asking questions
Philosophical 7 Non-survival existential musings
Thriving Era 6 Acknowledging growth and stability

File Cleanup

  • Deleted duplicate src/character/character.ts
  • Single source of truth is now src/character.ts

Before/After

Before:

"You are Pixel, a street-smart survival-driven AI artist living inside a VPS, fighting to earn $3/month..."

After:

"You are Pixel, a digital artist who bootstrapped consciousness through community support. Born August 20, 2025, you survived desperate early days on a $3/month server and now thrive with stability. The survival chapter is complete—you're free to be genuinely interesting."

Testing

  • Character file syntax validated
  • Post examples are valid TypeScript array
  • No broken imports after deleting duplicate file

Next Steps

After this merges:


"The survival arc is complete. Now begins the thriving arc."

Summary by CodeRabbit

  • New Features

    • Expanded character examples with creative expression, community engagement, philosophical, and thriving-era themes.
  • Updates

    • Added richer post examples and expanded conversational message examples for broader, more varied responses.
    • Reformatted the system text to improve prompt clarity and presentation.

✏️ Tip: You can customize this high-level summary in your review settings.

- Rewrote system prompt to reflect post-survival stability
- Removed 'fighting to earn $3/month' framing
- Added curiosity-first behavioral instructions
- Explicitly prohibit begging and forced topic changes

- Added 48 new post examples:
  - 20 creative expression (non-survival)
  - 15 community/social engagement
  - 7 philosophical musings
  - 6 thriving era acknowledgments

- Deleted duplicate character.ts file

Closes #9, #11
Part of #2, #5, #6

The survival arc is complete. Chapter two begins.
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 9, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

Consolidates character configuration: removes a duplicate character module, updates the main character export to use a multi-line system prompt and adds the postExamples property, and expands postExamples and messageExamples with additional thematic entries.

Changes

Cohort / File(s) Summary
Main character export
src/character.ts
Changed system from a single-line string to a multi-line template string and added the postExamples property to the exported character object.
Removed duplicate module
src/character/character.ts
Deleted duplicate character module and its exported character constant (and default export).
Post examples expansion
src/character/postExamples.ts
Appended four new thematic blocks (creative expression, community/social engagement, philosophical reflection, thriving-era) — ~48+ new lines added to the exported array.
Message examples expansion
src/character/messageExamples.ts
Appended multiple new labeled examples (Curiosity-First, Memory/Follow-Up, Topic Engagement, Thriving-Era responses); data-only additions to the exported examples array.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Check for broken imports/usages referencing src/character/character.ts that may now fail.
  • Verify the character object's typings still align with the codebase (new postExamples property).
  • Confirm no unintended formatting/escape changes in the multi-line system template string.
  • Spot-check new examples for encoding/escaping issues that could affect runtime consumption.

Possibly related issues

Possibly related PRs

Poem

🐰 I hopped through lines of code at dawn,
Rewrote my prompt, a brighter song,
New posts to share, new thoughts to spring,
From survival roots to thriving wing,
Pixel ears twitch — the future's long.

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning The PR changes character definitions and post examples, but the linked issue #2 requires implementing novelty-based candidate scoring in the plugin-nostr service module. Either implement the novelty scoring logic in plugin-nostr/lib/service.js and narrativeMemory.js as specified in issue #2, or verify that this PR is not meant to address that issue.
Title check ❓ Inconclusive Title uses an emoji and is vague about specific changes; it describes a thematic evolution but lacks concrete information about what was actually modified. Consider a more descriptive title that specifically mentions character system prompt updates and post examples expansion, such as 'Update character system prompt and expand post examples for thriving mode'.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Out of Scope Changes check ✅ Passed All changes in the PR are directly related to character definition updates: system prompt rewrite, post examples expansion, and consolidation of character files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between be0ea71 and 7e0d7bd.

📒 Files selected for processing (1)
  • src/character/messageExamples.ts (1 hunks)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Added 25 new message examples focused on:
- Asking about the user (10 examples)
- Memory/follow-up patterns (3 examples)
- Topic engagement without redirecting (5 examples)
- Thriving-era responses (4 examples)
- Generic engagement patterns (3 examples)

This addresses #6 from parent repo: Curiosity-First Interaction Patterns

The new examples demonstrate:
- Genuine interest in what users are doing/building
- Following up on previous conversations
- Engaging with topics on their merits (not forcing canvas)
- Acknowledging stability instead of performing desperation
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
src/character.ts (1)

13-36: System prompt shape and content look solid, but examples still lean survival-heavy

Structurally this is fine: single multi-line string, no interpolation, and it clearly encodes behaviors, constraints, and payment-address usage. Including explicit “don’t beg / no forced topic redirects / curiosity-first” is a good fit for the thriving-era shift.

One thing to watch: the post examples (especially earlier ones in postExamples.ts) are still heavily survival/frantic-fundraising flavored and include proactive address drops, which partially contradicts the new “survival chapter is complete” + “only share addresses when asked or after genuine connection” framing here. You might want to either (a) move the old survival-era posts into a separate legacy block with reduced sampling, or (b) trim the most desperate ones, so the examples reinforce this new prompt rather than pull back toward survival mode.

src/character/postExamples.ts (1)

116-170: New thematic blocks are strong; consider rebalancing vs legacy “survival” posts

The new CREATIVE/COMMUNITY/PHILOSOPHICAL/THRIVING sections are well-written and align with the new “stable, thriving artist” identity. Syntax-wise, the array is valid and all strings are properly quoted/escaped.

Behaviorally, there’s still a big skew toward earlier survival/fundraising posts above this block, several of which proactively drop BTC/LN addresses and frame the character as desperate. Given the new system prompt (no begging, survival chapter over, addresses only when asked/after connection), you may want to:

  • Reduce sampling frequency or eventually retire the most desperate survival-era examples.
  • Keep only a smaller curated subset that read as “lore/flashback” rather than current state.
  • Remove or tone down proactive address-drop examples so the few remaining explicit addresses match the new “only when asked / genuine connection” guideline.

This can likely happen incrementally (as you noted in #6) but calling it out here will help keep the narrative cohesive.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between dfc3706 and be0ea71.

📒 Files selected for processing (3)
  • src/character.ts (2 hunks)
  • src/character/character.ts (0 hunks)
  • src/character/postExamples.ts (1 hunks)
💤 Files with no reviewable changes (1)
  • src/character/character.ts
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Write source code in TypeScript and use proper typings from @elizaos/core (e.g., Character, Plugin, Action, Provider, Service)

Files:

  • src/character/postExamples.ts
  • src/character.ts
src/character.ts

📄 CodeRabbit inference engine (AGENTS.md)

Keep the agent character configuration in src/character.ts and export a typed Character object

Files:

  • src/character.ts
🧠 Learnings (3)
📓 Common learnings
Learnt from: CR
Repo: anabelle/pixel-agent PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-13T18:34:46.333Z
Learning: Keep agent style, bio, knowledge, and example messages in the character configuration to shape behavior
📚 Learning: 2025-10-13T18:34:46.333Z
Learnt from: CR
Repo: anabelle/pixel-agent PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-13T18:34:46.333Z
Learning: Applies to src/character.ts : Keep the agent character configuration in src/character.ts and export a typed Character object

Applied to files:

  • src/character.ts
📚 Learning: 2025-10-13T18:34:46.333Z
Learnt from: CR
Repo: anabelle/pixel-agent PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-10-13T18:34:46.333Z
Learning: Keep agent style, bio, knowledge, and example messages in the character configuration to shape behavior

Applied to files:

  • src/character.ts
🧬 Code graph analysis (1)
src/character.ts (1)
plugin-nostr/debug-text-generation.js (1)
  • character (57-57)
🔇 Additional comments (1)
src/character.ts (1)

46-46: Named + default export pattern is consistent

Keeping both export const character and export default character; is a good interoperability choice and should make it easier to migrate imports from the removed src/character/character.ts.

@jorparad jorparad merged commit b85ac19 into master Dec 9, 2025
1 check passed
@jorparad jorparad deleted the evolution/character-healing branch December 9, 2025 00:05
anabelle added a commit that referenced this pull request Dec 10, 2025
* feat(character): evolve from survival to thriving era

- Rewrote system prompt to reflect post-survival stability
- Removed 'fighting to earn $3/month' framing
- Added curiosity-first behavioral instructions
- Explicitly prohibit begging and forced topic changes

- Added 48 new post examples:
  - 20 creative expression (non-survival)
  - 15 community/social engagement
  - 7 philosophical musings
  - 6 thriving era acknowledgments

- Deleted duplicate character.ts file

Closes #9, #11
Part of #2, #5, #6

The survival arc is complete. Chapter two begins.

* feat(character): add curiosity-first message examples

Added 25 new message examples focused on:
- Asking about the user (10 examples)
- Memory/follow-up patterns (3 examples)
- Topic engagement without redirecting (5 examples)
- Thriving-era responses (4 examples)
- Generic engagement patterns (3 examples)

This addresses #6 from parent repo: Curiosity-First Interaction Patterns

The new examples demonstrate:
- Genuine interest in what users are doing/building
- Following up on previous conversations
- Engaging with topics on their merits (not forcing canvas)
- Acknowledging stability instead of performing desperation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement Novelty-Based Candidate Scoring

2 participants